<?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>164199</bug_id>
          
          <creation_ts>2016-10-29 23:00:04 -0700</creation_ts>
          <short_desc>[WTF] Import std::optional reference implementation as WTF::Optional</short_desc>
          <delta_ts>2016-11-26 22:08:46 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246158</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-29 23:00:04 -0700</bug_when>
    <thetext>WTF::Optional&lt;&gt; uses placement new. It makes this thing non-literal-type, and prevent us from using Optional in constexpr.
This means that we cannot use `static const XXX value` global variable where XXX includes Optional&lt;&gt; thingy since we WebKit do not allow global constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246160</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-29 23:01:06 -0700</bug_when>
    <thetext>Actually, DOMJIT::Effect includes Optional&lt;&gt; thing.
If this Optional&lt;&gt; becomes literal type, we can use DOMJIT::Effect in static const variables.
And it allows us to generate DOMJIT signatures from IDL easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246161</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-29 23:01:33 -0700</bug_when>
    <thetext>Note that C++17 std::optional requires that std::optional&lt;literal type&gt; is literal type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246281</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 15:34:01 -0700</bug_when>
    <thetext>I have a patch for that, changing the current WTF::Optional to support these features.
But given the large change, I wonder if we just include LLVM libc++&apos;s std::experimental::optional. It has complete interface aligned to the C++17 draft.
I remember that we import the implementation for std::variant from somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246282</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 15:35:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I have a patch for that, changing the current WTF::Optional to support these
&gt; features.
&gt; But given the large change, I wonder if we just include LLVM libc++&apos;s
&gt; std::experimental::optional. It has complete interface aligned to the C++17
&gt; draft.
&gt; I remember that we import the implementation for std::variant from somewhere.

I mean that importing the libc++ optional header, rewriting some part of it to adopt it in WTF, and renaming it as WTF::Optional. This is the same way to the WTF::Variant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246284</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 15:37:53 -0700</bug_when>
    <thetext>Note that the implementation technique is described in the original std::optional proposal paper.
In the case of std::is_trivially_destructible&lt;T&gt;::value = true, we use the union of dummy type and T for the storage.

struct Dummy { };
union {
    Dummy dummy;
    T value;
};

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3527.html#implementability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246287</commentid>
    <comment_count>6</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-30 15:52:45 -0700</bug_when>
    <thetext>You mean importing this:
https://github.com/llvm-mirror/libcxx/blob/master/include/experimental/optional
?

Assuming importing MIT-licensed code is OK, that sounds like a fine approach since it&apos;ll be in C++17. Makes it easy to transition in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246288</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 15:59:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; You mean importing this:
&gt; https://github.com/llvm-mirror/libcxx/blob/master/include/experimental/
&gt; optional
&gt; ?
&gt; 
&gt; Assuming importing MIT-licensed code is OK, that sounds like a fine approach
&gt; since it&apos;ll be in C++17. Makes it easy to transition in the future.

Right, with some modification to adopt it in WTF.
I remember we already import some of the University of Illinois Open Source Licenses things.

https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/b3/B3ComputeDivisionMagic.h#L29-L71</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246299</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 17:37:45 -0700</bug_when>
    <thetext>Interesting. This change figures out that there are some classes deleting move assignment operator but having move constructors. And they use WTF::Optional. It seems that this becomes compile error with C++17 std::optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246300</commentid>
    <comment_count>9</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-30 17:45:24 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Interesting. This change figures out that there are some classes deleting
&gt; move assignment operator but having move constructors. And they use
&gt; WTF::Optional. It seems that this becomes compile error with C++17
&gt; std::optional.

I&apos;m not sure I understand why the code would do this. Is it just misguided?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246304</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-30 17:51:13 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; This change figures out that there are some classes deleting
&gt; move assignment operator but having move constructors.

Which classes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246307</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 18:02:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; This change figures out that there are some classes deleting
&gt; &gt; move assignment operator but having move constructors.
&gt; 
&gt; Which classes?

Oops, no. I misunderstood. Some classes define move constructor, but they do not define move assignment operator. And these classes are noncopyable. They deletes copy assignment operator.
At that time,

Optional&lt;XXX&gt; value;

value = XXX(...);

causes compile error.
The example is DFG::FPRTemporary, DFG::JSValueOperand, DFG::SpeculateCellOperand.
And it seems that DOMPromise is also the thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246308</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 18:03:45 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; This change figures out that there are some classes deleting
&gt; &gt; &gt; move assignment operator but having move constructors.
&gt; &gt; 
&gt; &gt; Which classes?
&gt; 
&gt; Oops, no. I misunderstood. Some classes define move constructor, but they do
&gt; not define move assignment operator. And these classes are noncopyable. They
&gt; deletes copy assignment operator.
&gt; At that time,
&gt; 
&gt; Optional&lt;XXX&gt; value;
&gt; 
&gt; value = XXX(...);
&gt; 
&gt; causes compile error.
&gt; The example is DFG::FPRTemporary, DFG::JSValueOperand,
&gt; DFG::SpeculateCellOperand.
&gt; And it seems that DOMPromise is also the thing.

Ah, it is incorrect for DOMPromise. In DOMPromise, it has move constructor. But it does not have move assignment operator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246309</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 18:10:25 -0700</bug_when>
    <thetext>OK, I&apos;ve found the thing.

DOMPromise also has the same issue.
DOMPromise has move constructor. But it does not have move assignment operator.
It seems that it has copy assignment operator (operator=(DOMPromise const&amp;) = default). But actually it does not.
It is ill-formed since the member Ref does not have copy assignment operator.

Previously WTF::Optional&lt;&gt;::operator=(WTF::Optional&lt;T&gt;&amp;&amp;) does not use move assignment operator. It always destroy the current content if |this| is engaged. So, the only move constructor is used.
But new optional uses move assignment operator in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246333</commentid>
    <comment_count>14</comment_count>
      <attachid>293387</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 21:21:47 -0700</bug_when>
    <thetext>Created attachment 293387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246334</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-30 21:24:09 -0700</bug_when>
    <thetext>Attachment 293387 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/WTF/wtf/Optional.h:6:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:7:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:50:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:214:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:217:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:226:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:228:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:228:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:228:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:230:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:230:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WTF/wtf/Optional.h:235:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:243:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:243:  _NotVoid is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:245:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:250:  __test_swap is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:261:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Extra space between &amp;&amp; and noexcept  [whitespace/declaration] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:271:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:276:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:279:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:284:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:291:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:296:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:297:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:299:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:322:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:323:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:332:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:332:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:335:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:335:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:336:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:337:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:337:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:342:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:344:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:344:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:349:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:351:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:355:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:357:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:360:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:361:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:374:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:382:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:383:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:383:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:386:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:386:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:387:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:388:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:388:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:393:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:401:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:402:  __base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:404:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:407:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:411:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:421:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:423:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:425:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:428:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:432:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:436:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:439:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:443:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:447:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:453:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:465:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:469:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:470:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:483:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:487:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:491:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:492:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:505:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:506:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:506:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:510:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:518:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:526:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:528:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird numbe
r of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:542:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:544:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:545:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:546:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:560:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Use &apos;using namespace std;&apos; instead of &apos;using std::swap;&apos;.  [build/using_std] [4]
ERROR: Source/WTF/wtf/Optional.h:565:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:569:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:570:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:572:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:577:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:578:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:626:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:627:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:628:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:628:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:629:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:630:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:653:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:655:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:657:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:662:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:662:  value_or is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:662:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:663:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:665:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:667:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:669:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:788:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:806:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:815:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:824:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:833:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:842:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:889:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:889:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:898:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:898:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:977:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:989:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:990:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:991:  result_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:995:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 174 in 90 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>1246335</commentid>
    <comment_count>16</comment_count>
      <attachid>293388</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 21:35:15 -0700</bug_when>
    <thetext>Created attachment 293388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246336</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-30 21:37:34 -0700</bug_when>
    <thetext>Attachment 293388 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/WTF/wtf/Optional.h:6:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:7:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:50:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:214:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:217:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:226:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:228:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:228:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:228:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:230:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:230:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WTF/wtf/Optional.h:235:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:243:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:243:  _NotVoid is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:245:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:250:  __test_swap is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:261:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Extra space between &amp;&amp; and noexcept  [whitespace/declaration] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:271:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:276:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:279:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:284:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:291:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:296:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:297:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:299:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:322:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:323:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:332:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:332:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:335:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:335:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:336:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:337:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:337:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:342:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:344:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:344:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:349:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:351:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:355:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:357:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:360:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:361:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:374:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:382:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:383:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:383:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:386:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:386:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:387:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:388:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:388:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:393:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:401:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:402:  __base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:404:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:407:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:411:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:421:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:423:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:425:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:428:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:432:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:436:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:439:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:443:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:447:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:453:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:465:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:469:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:470:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:483:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:487:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:491:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:492:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:505:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:506:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:506:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:510:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:518:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:526:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:528:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird numbe
r of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:542:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:544:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:545:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:546:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:560:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Use &apos;using namespace std;&apos; instead of &apos;using std::swap;&apos;.  [build/using_std] [4]
ERROR: Source/WTF/wtf/Optional.h:565:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:569:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:570:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:572:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:577:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:578:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:626:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:627:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:628:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:628:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:629:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:630:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:653:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:655:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:657:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:662:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:662:  value_or is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:662:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:663:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:665:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:667:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:669:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:788:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:806:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:815:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:824:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:833:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:842:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:889:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:889:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:898:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:898:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:977:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:989:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:990:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:991:  result_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:995:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 174 in 90 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>1246337</commentid>
    <comment_count>18</comment_count>
      <attachid>293389</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 21:42:55 -0700</bug_when>
    <thetext>Created attachment 293389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246338</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-30 21:44:47 -0700</bug_when>
    <thetext>Attachment 293389 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/WTF/wtf/Optional.h:6:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:7:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:50:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:214:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:217:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:226:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:228:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:228:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:228:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:230:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:230:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WTF/wtf/Optional.h:235:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:243:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:243:  _NotVoid is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:245:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:250:  __test_swap is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:261:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Extra space between &amp;&amp; and noexcept  [whitespace/declaration] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:271:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:276:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:279:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:284:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:291:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:296:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:297:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:299:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:322:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:323:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:332:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:332:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:335:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:335:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:336:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:337:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:337:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:342:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:344:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:344:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:349:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:351:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:355:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:357:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:360:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:361:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:374:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:382:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:383:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:383:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:386:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:386:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:387:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:388:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:388:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:393:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:401:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:402:  __base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:404:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:407:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:411:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:421:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:423:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:425:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:428:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:432:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:436:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:439:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:443:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:447:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:453:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:465:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:469:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:470:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:483:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:487:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:491:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:492:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:505:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:506:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:506:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:510:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:518:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:526:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:528:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird numbe
r of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:542:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:544:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:545:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:546:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:560:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Use &apos;using namespace std;&apos; instead of &apos;using std::swap;&apos;.  [build/using_std] [4]
ERROR: Source/WTF/wtf/Optional.h:565:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:569:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:570:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:572:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:577:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:578:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:646:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:648:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:650:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:655:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:655:  value_or is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:655:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:656:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:658:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:660:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:662:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:745:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:754:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:763:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:772:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:781:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:790:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:799:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:808:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:817:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:826:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:835:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:882:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:882:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:891:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:891:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:982:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:983:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:984:  result_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:988:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 172 in 90 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>1246340</commentid>
    <comment_count>20</comment_count>
      <attachid>293390</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 21:51:10 -0700</bug_when>
    <thetext>Created attachment 293390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246341</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-30 21:54:13 -0700</bug_when>
    <thetext>Attachment 293390 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/WTF/wtf/Optional.h:6:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:7:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:50:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:214:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:217:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:226:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:228:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:228:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:228:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:230:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:230:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WTF/wtf/Optional.h:235:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:243:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:243:  _NotVoid is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:245:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:250:  __test_swap is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:261:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Extra space between &amp;&amp; and noexcept  [whitespace/declaration] [3]
ERROR: Source/WTF/wtf/Optional.h:267:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:271:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:276:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:279:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:280:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:284:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:291:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:296:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:297:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:299:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:322:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:323:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:332:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:332:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:335:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:335:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:336:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:337:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:337:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:342:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:344:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:344:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:349:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:351:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  __null_state_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:355:  __val_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:357:  __engaged_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:360:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:361:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:374:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:381:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:382:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:383:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:383:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:386:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:386:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:387:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:388:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:388:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:393:  __optional_storage is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:401:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:402:  __base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:404:  value_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:407:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:411:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:421:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:423:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:425:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:428:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:432:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:436:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:439:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:443:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:447:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:453:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:465:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:469:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:470:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:483:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:487:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:491:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:492:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:505:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:506:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:506:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:510:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:518:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:526:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:528:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird numbe
r of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:542:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:544:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:545:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:546:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:560:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Use &apos;using namespace std;&apos; instead of &apos;using std::swap;&apos;.  [build/using_std] [4]
ERROR: Source/WTF/wtf/Optional.h:565:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:569:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:570:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:572:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:577:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:578:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:646:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:648:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:650:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:655:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:655:  value_or is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:655:  __v is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:656:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:658:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:660:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:662:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:732:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:741:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:750:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:759:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:768:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:777:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:786:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:795:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:804:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:813:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:822:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:831:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:878:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:878:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:887:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:887:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:978:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:979:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:980:  result_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:984:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 172 in 90 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>1246376</commentid>
    <comment_count>22</comment_count>
      <attachid>293404</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-31 01:21:06 -0700</bug_when>
    <thetext>Created attachment 293404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246378</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 01:22:25 -0700</bug_when>
    <thetext>Attachment 293404 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:154:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:154:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:155:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:174:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:175:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:181:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:182:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:183:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:186:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:195:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:196:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:197:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:199:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:201:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:202:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:203:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:224:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:225:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:229:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:235:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:243:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:248:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:253:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:270:  static_addressof is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:292:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:302:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:303:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:310:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:311:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:313:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:315:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:316:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:324:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:325:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:328:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:328:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:331:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:331:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:339:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:340:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:341:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:343:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:345:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:347:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:350:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:353:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:356:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:362:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:363:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:364:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:366:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:366:  constexpr_optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:368:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:370:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:377:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:377:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:384:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:393:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:398:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:399:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:400:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:403:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:405:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:405:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:406:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:412:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:416:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:419:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:421:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:422:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:423:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:435:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:438:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:444:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:445:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:445:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:446:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:451:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:453:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:454:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:454:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:455:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:457:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:460:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:462:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:464:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:464:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:466:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:467:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:470:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:471:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:474:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:475:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:478:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:479:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:482:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:485:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:486:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:486:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:487:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:487:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:488:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:488:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:490:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:492:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:493:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:494:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:495:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:495:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:496:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:497:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:499:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:501:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:502:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:503:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:512:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:515:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:516:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:517:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:520:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:523:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:524:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:531:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:532:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:533:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:534:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:535:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:539:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:541:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:541:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:547:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:551:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:553:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:555:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:557:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:567:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:573:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:584:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:589:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:590:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:594:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:596:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:598:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:598:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:601:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:603:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:609:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:613:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:619:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:621:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:621:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:623:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:627:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:628:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:628:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:629:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:631:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:635:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:636:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:636:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:637:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:637:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:639:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:645:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:646:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:647:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:649:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:659:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:660:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:661:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:665:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:666:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:666:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:668:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:668:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:670:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:670:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:672:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:674:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:676:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:676:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:678:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:680:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:682:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:683:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:686:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:688:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:691:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:693:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:696:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:698:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:699:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:700:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:701:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:704:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:705:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:705:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:708:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:710:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:711:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:712:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:713:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:716:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:717:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:719:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:721:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:723:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:726:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:727:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:727:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:729:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:731:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:732:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:732:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:734:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:738:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:740:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:740:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:744:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:746:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:748:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:750:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:751:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:752:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:754:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:760:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:761:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:761:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:768:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:768:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:773:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:778:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:783:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:788:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:793:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:799:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:800:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:804:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:805:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:809:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:810:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:814:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:815:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:819:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:820:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:824:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:825:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:829:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:830:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:834:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:835:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:839:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Sour
ce/WTF/wtf/Optional.h:840:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:844:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:845:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:849:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:854:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:855:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:863:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:868:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:873:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:878:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:883:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:893:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:898:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:903:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:908:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:913:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:918:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:925:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:930:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:935:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:940:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:945:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:950:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:955:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:960:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:965:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:970:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:975:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:980:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:986:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:991:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:996:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1001:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1006:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1011:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1016:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1021:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1026:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1031:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1036:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1041:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1049:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1056:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1062:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1069:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1078:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1079:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1080:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1081:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1081:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1083:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1085:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1086:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1086:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1086:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1088:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1091:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1092:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1092:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1094:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1096:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1097:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1097:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1097:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1099:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 457 in 90 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>1246386</commentid>
    <comment_count>24</comment_count>
      <attachid>293406</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-31 01:53:20 -0700</bug_when>
    <thetext>Created attachment 293406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246387</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 01:57:00 -0700</bug_when>
    <thetext>Attachment 293406 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/Optional.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:156:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:156:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:157:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:176:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:177:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:183:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:197:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:199:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:201:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:203:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:205:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:208:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:226:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:231:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:237:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:245:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:250:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:255:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:272:  static_addressof is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:285:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:285:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:289:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:289:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:295:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:295:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:296:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:298:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:304:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:304:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:304:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:305:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:305:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:305:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:311:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:312:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:312:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:315:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:315:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:315:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:315:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:315:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:318:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:318:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:318:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:320:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:320:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:320:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:326:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:327:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:330:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:330:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:333:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:333:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:333:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:333:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:341:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:342:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:345:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:345:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:347:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:349:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:352:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:355:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:356:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:358:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:364:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:365:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:366:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:368:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:368:  constexpr_optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:370:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:372:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:375:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:375:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:379:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:379:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:386:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:395:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:396:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:396:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:396:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:397:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:397:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:397:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:400:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:401:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:402:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:405:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:407:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:407:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:410:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:410:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:411:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:411:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:411:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:415:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:415:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:418:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:419:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:421:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:423:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:424:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:425:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:432:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:433:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:437:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:443:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:443:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:444:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:444:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:446:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:447:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:447:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:448:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:453:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:455:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:456:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:456:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:457:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:459:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:464:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:464:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:466:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:466:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:469:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:470:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:470:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:470:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:472:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:473:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:474:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:474:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:474:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:476:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:480:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:481:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:486:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:487:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:488:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:488:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:489:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:489:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:490:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:490:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:492:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:494:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:495:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:496:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:497:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:498:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:498:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:498:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:499:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:499:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:499:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:501:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:503:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:505:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:506:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:510:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:510:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:511:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:514:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:517:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:518:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:519:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:524:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:525:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:526:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:531:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:532:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:533:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:534:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:535:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:535:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:535:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:536:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:536:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:539:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:541:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:545:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:549:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:553:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:555:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:557:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:559:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:565:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:571:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:586:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:591:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:592:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:596:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:596:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:598:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:600:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:600:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:601:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:605:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:605:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:611:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:611:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:621:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:622:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:623:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:623:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:630:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:630:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:631:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:631:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:633:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:637:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:638:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:638:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:639:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:639:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:641:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:647:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:648:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:649:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:651:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:661:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:661:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:661:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:662:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:662:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:662:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:663:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:667:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:668:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:668:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:670:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:670:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:672:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:672:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:676:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:676:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:678:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:678:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:680:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:682:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:684:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:685:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:688:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:690:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:693:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:695:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:698:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:700:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:701:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:702:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:703:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:706:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:707:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:707:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:710:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:712:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:713:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:714:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:715:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:718:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:719:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:721:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:723:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:725:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:728:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:729:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:729:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:731:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:733:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:734:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:734:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:738:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:738:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:740:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:742:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:742:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:746:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:748:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:750:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:752:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:753:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:754:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:756:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:762:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:763:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:763:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:763:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:763:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:770:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:775:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:780:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:785:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:790:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:795:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:801:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:802:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:806:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:807:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:811:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:812:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:816:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:817:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:821:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:822:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:826:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:827:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:831:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:832:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:836:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:837:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:841:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Sour
ce/WTF/wtf/Optional.h:842:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:846:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:847:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:851:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:852:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:856:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:857:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:865:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:870:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:875:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:880:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:885:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:895:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:900:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:905:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:910:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:915:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:920:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:927:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:932:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:937:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:942:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:947:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:952:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:957:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:962:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:967:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:972:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:977:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:982:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:988:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:993:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:998:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1003:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1008:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1013:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1018:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1023:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1028:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1033:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1038:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1043:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1051:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1058:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1064:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1071:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1080:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1081:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1082:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1083:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1083:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1085:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1087:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1088:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1088:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1088:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1092:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1093:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1094:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1094:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1096:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1098:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1099:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1099:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1099:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 457 in 90 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>1246400</commentid>
    <comment_count>26</comment_count>
      <attachid>293406</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-10-31 03:19:50 -0700</bug_when>
    <thetext>Comment on attachment 293406
Patch

Attachment 293406 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/2410193

New failing tests:
fast/mediastream/apply-constraints-audio.html
fast/mediastream/apply-constraints-advanced.html
fast/mediastream/apply-constraints-video.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246401</commentid>
    <comment_count>27</comment_count>
      <attachid>293414</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-10-31 03:19:53 -0700</bug_when>
    <thetext>Created attachment 293414
Archive of layout-test-results from ews107 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246420</commentid>
    <comment_count>28</comment_count>
      <attachid>293406</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-31 08:06:59 -0700</bug_when>
    <thetext>Comment on attachment 293406
Patch

I wanted to overload Optional&lt;bool&gt; to use a 3-state enum instead of two bools to make it so there is only one read operation when using it.  Will optimizations like that be possible once we switch to this or c++17?  I haven&apos;t actually read the generated optimized assembly or measured anything yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246421</commentid>
    <comment_count>29</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-31 08:11:46 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 293406 [details]
&gt; Patch
&gt; 
&gt; I wanted to overload Optional&lt;bool&gt; to use a 3-state enum instead of two
&gt; bools to make it so there is only one read operation when using it.  Will
&gt; optimizations like that be possible once we switch to this or c++17?  I
&gt; haven&apos;t actually read the generated optimized assembly or measured anything
&gt; yet

What you&apos;re proposing may be faster (check the assembly, but I assume so). libc++ is unlikely to change its implementation in this manner past C++17 because it would affect ABI. We don&apos;t have to care about ABI IIUC, so we can change it as we want.

On the other hand, we&apos;d likely want to remove our version once we move to C++17. If the version you have in mind is faster I can help review and commit the change in libc++ (I still have commit access).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246491</commentid>
    <comment_count>30</comment_count>
      <attachid>293435</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-31 10:55:40 -0700</bug_when>
    <thetext>Created attachment 293435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246494</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 10:58:30 -0700</bug_when>
    <thetext>Attachment 293435 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:206:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:156:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:156:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:157:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:176:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:177:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:183:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:197:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:199:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:201:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:203:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:205:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:208:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:226:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:231:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:237:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:245:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:250:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:255:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:272:  static_addressof is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:285:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:285:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:289:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:289:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:295:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:295:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:296:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:298:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:304:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:304:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:304:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:305:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:305:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:305:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:311:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:312:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:312:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:315:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:315:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:315:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:315:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:315:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:318:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:318:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:318:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:320:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:320:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:320:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:326:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:327:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:330:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:330:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:333:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:333:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:333:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:333:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:341:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:342:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:345:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:345:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:347:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:349:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:352:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:355:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:356:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:358:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:364:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:365:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:366:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:368:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:368:  constexpr_optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:370:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:372:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:375:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:375:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:379:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:379:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:386:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:395:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:396:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:396:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:396:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:397:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:397:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:397:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:400:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:401:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:402:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:405:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:407:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:407:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:410:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:410:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:411:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:411:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:411:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:415:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:415:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:418:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:419:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:421:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:423:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:424:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:425:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:432:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:433:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:437:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:443:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:443:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:444:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:444:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:446:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:447:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:447:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:448:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:453:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:455:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:456:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:456:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:457:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:459:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:464:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:464:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:466:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:466:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:469:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:470:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:470:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:470:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:472:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:473:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:474:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:474:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:474:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:476:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:480:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:481:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:486:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:487:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:488:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:488:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:489:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:489:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:490:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:490:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:492:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:494:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:495:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:496:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:497:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:498:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:498:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:498:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:499:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:499:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:499:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:501:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:503:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:505:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:506:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:510:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:510:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:511:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:514:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:517:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:518:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:519:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:524:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:525:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:526:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:531:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:532:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:533:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:534:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:535:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:535:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:535:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:536:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:536:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:539:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:541:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:545:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:549:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:553:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:555:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:557:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:559:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:565:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:571:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:586:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:591:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:592:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:596:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:596:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:598:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:600:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:600:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:601:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:605:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:605:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:611:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:611:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:621:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:622:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:623:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:623:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:630:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:630:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:631:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:631:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:633:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:637:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:638:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:638:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:639:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:639:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:641:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:647:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:648:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:649:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:651:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:661:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:661:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:661:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:662:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:662:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:662:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:663:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:667:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:668:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:668:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:670:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:670:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:672:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:672:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:676:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:676:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:678:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:678:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:680:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:682:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:684:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:685:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:688:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:690:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:693:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:695:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:698:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:700:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:701:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:702:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:703:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:706:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:707:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:707:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:710:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:712:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:713:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:714:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:715:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:718:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:719:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:721:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:723:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:725:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:728:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:729:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:729:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:731:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:733:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:734:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:734:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:738:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:738:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:740:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:742:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:742:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:746:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:748:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:750:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:752:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:753:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:754:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:756:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:762:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:763:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:763:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:763:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:763:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:770:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:775:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:780:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:785:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:790:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:795:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:801:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:802:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:806:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:807:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:811:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:812:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:816:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:817:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:821:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:822:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:826:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:827:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:831:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:832:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:836:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:837:  Weird number of spaces at line-start.  Are you using a 4-
space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:841:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:842:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:846:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:847:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:851:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:852:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:856:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:857:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:865:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:870:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:875:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:880:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:885:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:895:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:900:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:905:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:910:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:915:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:920:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:927:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:932:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:937:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:942:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:947:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:952:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:957:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:962:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:967:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:972:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:977:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:982:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:988:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:993:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:998:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1003:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1008:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1013:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1018:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1023:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1028:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1033:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1038:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1043:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1051:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1058:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1064:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1071:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1080:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1081:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1082:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1083:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1083:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1085:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1087:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1088:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1088:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1088:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1092:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1093:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1094:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1094:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1096:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1098:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1099:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1099:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1099:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 458 in 90 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>1246499</commentid>
    <comment_count>32</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-31 11:01:31 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; Comment on attachment 293406 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I wanted to overload Optional&lt;bool&gt; to use a 3-state enum instead of two
&gt; &gt; bools to make it so there is only one read operation when using it.  Will
&gt; &gt; optimizations like that be possible once we switch to this or c++17?  I
&gt; &gt; haven&apos;t actually read the generated optimized assembly or measured anything
&gt; &gt; yet
&gt; 
&gt; What you&apos;re proposing may be faster (check the assembly, but I assume so).
&gt; libc++ is unlikely to change its implementation in this manner past C++17
&gt; because it would affect ABI. We don&apos;t have to care about ABI IIUC, so we can
&gt; change it as we want.
&gt; 
&gt; On the other hand, we&apos;d likely want to remove our version once we move to
&gt; C++17. If the version you have in mind is faster I can help review and
&gt; commit the change in libc++ (I still have commit access).

Can we specialize the C++17 std::optional?
I mean, is it allowed in the spec?
I remember that these attempts are typically undefined, maybe, small part of C++ things are allowed. (like, std::hash, std::swap). Is it correct?

And another potentially useful specialization is, Optional&lt;T&amp;&gt;. Having T* internally and use nullptr for Nullopt case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246510</commentid>
    <comment_count>33</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-10-31 11:15:00 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #29)
&gt; &gt; (In reply to comment #28)
&gt; &gt; &gt; Comment on attachment 293406 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; I wanted to overload Optional&lt;bool&gt; to use a 3-state enum instead of two
&gt; &gt; &gt; bools to make it so there is only one read operation when using it.  Will
&gt; &gt; &gt; optimizations like that be possible once we switch to this or c++17?  I
&gt; &gt; &gt; haven&apos;t actually read the generated optimized assembly or measured anything
&gt; &gt; &gt; yet
&gt; &gt; 
&gt; &gt; What you&apos;re proposing may be faster (check the assembly, but I assume so).
&gt; &gt; libc++ is unlikely to change its implementation in this manner past C++17
&gt; &gt; because it would affect ABI. We don&apos;t have to care about ABI IIUC, so we can
&gt; &gt; change it as we want.
&gt; &gt; 
&gt; &gt; On the other hand, we&apos;d likely want to remove our version once we move to
&gt; &gt; C++17. If the version you have in mind is faster I can help review and
&gt; &gt; commit the change in libc++ (I still have commit access).
&gt; 
&gt; Can we specialize the C++17 std::optional?
&gt; I mean, is it allowed in the spec?
&gt; I remember that these attempts are typically undefined, maybe, small part of
&gt; C++ things are allowed. (like, std::hash, std::swap). Is it correct?

You can but AFAIK it&apos;s UB. It means that we&apos;d *need* to #include &lt;wtf/optional.h&gt; and *never* #include &lt;optional&gt;, lest we mess up our internal ABI. Seem fraught with peril when we could fix the implementation before C++17 is finalized.


&gt; And another potentially useful specialization is, Optional&lt;T&amp;&gt;. Having T*
&gt; internally and use nullptr for Nullopt case.

Yeah that could work as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246515</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-31 11:24:03 -0700</bug_when>
    <thetext>OK, ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246525</commentid>
    <comment_count>35</comment_count>
      <attachid>293447</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-31 11:59:22 -0700</bug_when>
    <thetext>Created attachment 293447
Patch

Slightly update the Optional.h&apos;s if-def things to support environment supporting exceptions correctly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246526</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 12:02:09 -0700</bug_when>
    <thetext>Attachment 293447 did not pass style-queue:

ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:423:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:206:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:155:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:156:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:175:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:176:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:182:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:183:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:186:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:190:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:196:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:197:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:200:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:202:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:203:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:204:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:205:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:207:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:226:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:227:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:231:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:237:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:245:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:250:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:255:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:272:  static_addressof is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:285:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:285:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:289:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:289:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:295:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:295:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:295:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:296:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:298:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:304:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:304:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:304:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:304:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:305:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:305:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:305:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:305:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:311:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:312:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:312:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:315:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:315:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:315:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:315:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:315:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:318:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:318:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:318:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:320:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:320:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:320:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:326:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:327:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:330:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:330:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:330:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:333:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:333:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:333:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:333:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:341:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:342:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:345:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:345:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:347:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:349:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:352:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:355:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:356:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:358:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:364:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:365:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:366:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:368:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:368:  constexpr_optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:370:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:372:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:375:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:375:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:379:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:379:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:386:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:395:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:396:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:396:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:396:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:397:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:397:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:397:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:400:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:401:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:402:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:405:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:407:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:407:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:410:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:410:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:411:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:411:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:411:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:415:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:415:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:418:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:419:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:421:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:423:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:424:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:425:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:432:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:433:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:437:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:443:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:443:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:444:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:444:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:446:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:447:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:447:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:448:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:453:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:455:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:456:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:456:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:457:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:459:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:464:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:464:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:466:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:466:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:469:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:470:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:470:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:470:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:472:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:473:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:474:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:474:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:474:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:476:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:480:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:481:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:486:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:487:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:488:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:488:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:489:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:489:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:490:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:490:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:492:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:494:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:495:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:496:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:497:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:498:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:498:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:498:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:499:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:499:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:499:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:501:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:503:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:505:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:506:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:510:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:510:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:511:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:514:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:517:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:518:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:519:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:524:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:525:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:526:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:531:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:532:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:533:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:534:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:535:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:535:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:535:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:536:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:536:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:539:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:541:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:545:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:549:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:553:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:555:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:557:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:559:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:565:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:571:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:586:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:591:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:592:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:596:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:596:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:598:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:600:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:600:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:601:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:605:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:605:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:611:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:611:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:621:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:622:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:623:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:623:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:625:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:630:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:630:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:631:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:631:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:633:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:637:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:638:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:638:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:639:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:639:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:641:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:647:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:648:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:649:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:651:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:661:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:661:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:661:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:662:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:662:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:662:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:663:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:667:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:668:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:668:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:670:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:670:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:672:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:672:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:676:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:676:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:678:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:678:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:680:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:682:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:684:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:685:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:688:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:690:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:693:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:695:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:698:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:700:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:701:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:702:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:703:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:706:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:707:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:707:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:710:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:712:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:713:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:714:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:715:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:718:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:719:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:721:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:723:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:725:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:728:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:729:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:729:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:731:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:733:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:734:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:734:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:738:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:738:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:740:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:742:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:742:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:746:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:748:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:750:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:752:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:753:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:754:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:756:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:762:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:763:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:763:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:763:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:763:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:770:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:775:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:780:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:785:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:790:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:795:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:801:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:802:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:806:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:807:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:811:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:812:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:816:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:817:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:821:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:822:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:826:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:827:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:831:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:832:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:836:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:837:  Weird number of spaces at line-start.  Are you using a 4-
space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:841:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:842:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:846:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:847:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:851:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:852:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:856:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:857:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:865:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:870:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:875:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:880:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:885:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:895:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:900:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:905:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:910:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:915:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:920:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:927:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:932:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:937:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:942:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:947:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:952:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:957:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:962:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:967:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:972:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:977:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:982:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:988:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:993:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:998:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1003:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1008:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1013:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1018:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1023:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1028:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1033:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1038:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1043:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1051:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1058:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1064:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1071:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1080:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1081:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1082:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1083:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1083:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1085:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1087:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1088:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1088:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1088:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1092:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1093:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1094:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1094:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1096:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1098:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1099:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1099:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1099:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 458 in 90 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>1246576</commentid>
    <comment_count>37</comment_count>
      <attachid>293447</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-31 13:45:11 -0700</bug_when>
    <thetext>Comment on attachment 293447
Patch

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

&gt; Source/WTF/wtf/Optional.h:1073
&gt; +        return *Optional;

Oops. I&apos;ll use lowercase `optional` here later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246644</commentid>
    <comment_count>38</comment_count>
      <attachid>293447</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-31 15:51:44 -0700</bug_when>
    <thetext>Comment on attachment 293447
Patch

This patch seems reasonable to me, however, this implementation feels 10x harder to understand than our implementation (hopefully it&apos;s doing important things with that complexity) . It&apos;ll be nice when we can remove the implementation entirely.

I think it&apos;s good to get other folks&apos; opinion on this change, too. Maybe Anders/Darin/Sam have opinions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247445</commentid>
    <comment_count>39</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-11-02 13:29:36 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Comment on attachment 293447 [details]
&gt; Patch
&gt; 
&gt; This patch seems reasonable to me, however, this implementation feels 10x
&gt; harder to understand than our implementation (hopefully it&apos;s doing important
&gt; things with that complexity) . It&apos;ll be nice when we can remove the
&gt; implementation entirely.
&gt; 
&gt; I think it&apos;s good to get other folks&apos; opinion on this change, too. Maybe
&gt; Anders/Darin/Sam have opinions?

If this is the same as (the coming) std::optional, maybe we should keep that name. I&apos;m assuming once we can use std::optional we can just drop this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247470</commentid>
    <comment_count>40</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 14:09:30 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; Comment on attachment 293447 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; This patch seems reasonable to me, however, this implementation feels 10x
&gt; &gt; harder to understand than our implementation (hopefully it&apos;s doing important
&gt; &gt; things with that complexity) . It&apos;ll be nice when we can remove the
&gt; &gt; implementation entirely.
&gt; &gt; 
&gt; &gt; I think it&apos;s good to get other folks&apos; opinion on this change, too. Maybe
&gt; &gt; Anders/Darin/Sam have opinions?
&gt; 
&gt; If this is the same as (the coming) std::optional, maybe we should keep that
&gt; name. I&apos;m assuming once we can use std::optional we can just drop this one.

OK, let&apos;s make this WTF::Optional to std::optional for a while.
When C++17 comes to WebKit, we can just drop this header!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247476</commentid>
    <comment_count>41</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-02 14:18:15 -0700</bug_when>
    <thetext>rs=me with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247641</commentid>
    <comment_count>42</comment_count>
      <attachid>293742</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-02 20:48:08 -0700</bug_when>
    <thetext>Created attachment 293742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253695</commentid>
    <comment_count>43</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-26 12:44:58 -0800</bug_when>
    <thetext>OK, by applying Anders&apos; comment, I&apos;ll land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253719</commentid>
    <comment_count>44</comment_count>
      <attachid>295448</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-26 16:28:36 -0800</bug_when>
    <thetext>Created attachment 295448
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253720</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-26 16:32:44 -0800</bug_when>
    <thetext>Attachment 295448 did not pass style-queue:

ERROR: Source/WebCore/platform/network/DataURLDecoder.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:168:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:348:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentRequest.h:91:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/Optional.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:164:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:156:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:157:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:176:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:177:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:183:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:197:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:199:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:201:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:203:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:205:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:208:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:228:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:229:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:233:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:239:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:246:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:253:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:270:  static_addressof is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:292:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:302:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:303:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:310:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:311:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:313:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:315:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:316:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:324:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:325:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:328:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:328:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:331:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:331:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:339:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:340:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:341:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:343:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:345:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:347:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:350:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:353:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:356:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:362:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:363:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:364:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:366:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:366:  constexpr_optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:368:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:370:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:377:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:377:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:384:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:393:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:398:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:399:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:400:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:403:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:405:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:405:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:406:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:412:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:416:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:419:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:421:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:422:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:423:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:435:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:438:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:444:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:445:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:445:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:446:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:451:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:453:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:454:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:454:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:455:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:457:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:460:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:462:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:464:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:464:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:466:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:467:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:470:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:471:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:474:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:475:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:478:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:479:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:482:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:485:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:486:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:486:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:487:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:487:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:488:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:488:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:490:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:492:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:493:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:494:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:495:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:495:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:496:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:497:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:499:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:501:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:502:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:503:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:512:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:515:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:516:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:517:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:520:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:523:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:524:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:531:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:532:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:533:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:534:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:535:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:539:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:541:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:541:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:547:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:551:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:553:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:555:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:557:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:567:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:573:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:584:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:589:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:590:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:594:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:596:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:598:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:598:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:601:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:603:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:609:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:613:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:619:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:621:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:621:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:623:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:627:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:628:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:628:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:629:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:631:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:635:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:636:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:636:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:637:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:637:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:639:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:645:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:646:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:647:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:649:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:658:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:659:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:660:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:661:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:665:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:666:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:666:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:668:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:668:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:670:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:670:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:672:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:674:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:676:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:676:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:678:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:680:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:682:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:683:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:686:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:688:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:691:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:693:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:696:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:698:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:699:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:700:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:701:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:704:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:705:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:705:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:708:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:710:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:711:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:712:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:713:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:716:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:717:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:719:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:721:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:723:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:726:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:727:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:727:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:729:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:731:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:732:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:732:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:734:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:738:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:740:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:740:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:744:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:746:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:748:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:750:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:751:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:752:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:754:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:760:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:761:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:761:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:768:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:768:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:773:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:778:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:783:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:788:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:793:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:799:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:800:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:804:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:805:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:809:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:810:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:814:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:815:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:819:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:820:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:824:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:825:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:829:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:830:  Weird number of spaces at line-start.  Are y
ou using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:834:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:835:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:839:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:840:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:844:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:845:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:849:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:854:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:855:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:863:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:868:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:873:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:878:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:883:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:893:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:898:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:903:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:908:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:913:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:918:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:925:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:930:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:935:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:940:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:945:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:950:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:955:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:960:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:965:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:970:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:975:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:980:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:986:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:991:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:996:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1001:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1006:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1011:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1016:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1021:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1026:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1031:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1036:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1041:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1049:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1056:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1062:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1082:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1083:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1084:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1085:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1085:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1087:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1089:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1090:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1090:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1092:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1094:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1095:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1096:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1096:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1098:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1100:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1101:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1101:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:421:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:210:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/crypto/JsonWebKey.h:40:  key_ops is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h:233:  The parameter name &quot;scrollbarStyle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 463 in 708 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>1253723</commentid>
    <comment_count>46</comment_count>
      <attachid>295450</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-26 16:45:55 -0800</bug_when>
    <thetext>Created attachment 295450
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253724</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-26 17:18:21 -0800</bug_when>
    <thetext>Attachment 295450 did not pass style-queue:

ERROR: Source/WebCore/platform/network/DataURLDecoder.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:168:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:348:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentRequest.h:91:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/Optional.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:164:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:156:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:157:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:176:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:177:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:183:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:197:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:199:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:201:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:203:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:205:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:208:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:228:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:229:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:233:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:239:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:246:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:253:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:270:  static_addressof is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:292:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:302:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:303:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:310:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:311:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:313:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:315:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:316:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:324:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:325:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:328:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:328:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:331:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:331:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:339:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:340:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:341:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:343:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:345:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:347:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:350:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:353:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:356:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:362:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:363:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:364:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:366:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:366:  constexpr_optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:368:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:370:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:377:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:377:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:384:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:393:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:398:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:399:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:400:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:403:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:405:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:405:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:406:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:412:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:416:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:419:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:421:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:422:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:423:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:435:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:438:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:444:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:445:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:445:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:446:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:451:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:453:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:454:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:454:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:455:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:457:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:460:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:462:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:464:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:464:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:466:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:467:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:470:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:471:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:474:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:475:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:478:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:479:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:482:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:485:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:486:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:486:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:487:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:487:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:488:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:488:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:490:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:492:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:493:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:494:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:495:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:495:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:496:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:497:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:499:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:501:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:502:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:503:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:512:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:515:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:516:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:517:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:520:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:523:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:524:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:531:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:532:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:533:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:534:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:535:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:539:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:541:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:541:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:547:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:551:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:553:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:555:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:557:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:567:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:573:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:584:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:589:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:590:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:594:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:596:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:598:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:598:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:601:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:603:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:609:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:613:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:619:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:621:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:621:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:623:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:627:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:628:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:628:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:629:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:631:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:635:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:636:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:636:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:637:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:637:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:639:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:645:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:646:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:647:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:649:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:658:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:659:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:660:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:661:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:665:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:666:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:666:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:668:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:668:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:670:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:670:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:672:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:674:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:676:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:676:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:678:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:680:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:682:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:683:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:686:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:688:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:691:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:693:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:696:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:698:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:699:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:700:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:701:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:704:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:705:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:705:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:708:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:710:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:711:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:712:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:713:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:716:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:717:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:719:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:721:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:723:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:726:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:727:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:727:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:729:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:731:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:732:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:732:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:734:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:738:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:740:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:740:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:744:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:746:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:748:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:750:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:751:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:752:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:754:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:760:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:761:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:761:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:768:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:768:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:773:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:778:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:783:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:788:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:793:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:799:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:800:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:804:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:805:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:809:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:810:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:814:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:815:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:819:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:820:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:824:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:825:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:829:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:830:  Weird number of spaces at line-start.  Are y
ou using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:834:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:835:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:839:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:840:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:844:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:845:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:849:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:854:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:855:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:863:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:868:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:873:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:878:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:883:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:893:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:898:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:903:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:908:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:913:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:918:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:925:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:930:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:935:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:940:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:945:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:950:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:955:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:960:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:965:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:970:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:975:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:980:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:986:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:991:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:996:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1001:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1006:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1011:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1016:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1021:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1026:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1031:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1036:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1041:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1049:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1056:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1062:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1082:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1083:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1084:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1085:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1085:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1087:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1089:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1090:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1090:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1092:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1094:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1095:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1096:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1096:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1098:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1100:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1101:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1101:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:421:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:210:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/crypto/JsonWebKey.h:40:  key_ops is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h:233:  The parameter name &quot;scrollbarStyle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 463 in 708 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>1253725</commentid>
    <comment_count>48</comment_count>
      <attachid>295451</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-26 17:35:58 -0800</bug_when>
    <thetext>Created attachment 295451
Patch for landing

Rebaselining</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253726</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-26 17:39:55 -0800</bug_when>
    <thetext>Attachment 295451 did not pass style-queue:

ERROR: Source/WebCore/platform/network/DataURLDecoder.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:168:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/Connection.h:348:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/Modules/applepay/PaymentRequest.h:91:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/wtf/Optional.h:40:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:42:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/Optional.h:164:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:156:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:157:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/WTF/wtf/Optional.h:176:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:177:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:183:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:187:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:197:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:198:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:199:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:201:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:203:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:205:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:208:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:228:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:229:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:233:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:239:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:246:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:253:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:270:  static_addressof is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:283:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:287:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:292:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:293:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:296:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:302:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:302:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:302:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:303:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:303:  bad_optional_access is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:303:  what_arg is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:309:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:310:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:310:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:311:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:313:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:313:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:313:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:313:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:315:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:316:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:316:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:316:  storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:324:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:325:  dummy_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:328:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:328:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:328:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:331:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:331:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:331:  constexpr_storage_t is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:339:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:340:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:341:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:343:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:343:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:345:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:347:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:350:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:353:  optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:354:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:356:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:362:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:363:  init_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:364:  storage_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:366:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:366:  constexpr_optional_base is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:368:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:370:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:377:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:377:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:384:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Optional.h:393:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:394:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:394:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:395:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:395:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:398:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:399:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:400:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:403:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:405:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:405:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:406:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:408:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:409:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:409:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:412:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:413:  contained_val is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:416:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:417:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:419:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:421:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:422:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:423:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:429:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:430:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:431:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:435:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:438:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:440:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:441:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:441:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:442:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:442:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:444:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:445:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:445:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:446:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:451:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:453:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:454:  Wrong number of spaces before statement. (expected: 6)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Optional.h:454:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:455:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:457:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:460:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:462:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:462:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:464:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:464:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:466:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:467:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:468:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:470:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:471:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:472:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:474:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:475:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:477:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:478:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:479:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:482:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:484:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:485:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:486:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:486:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:487:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:487:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:488:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:488:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:490:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:492:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:493:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:494:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:495:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:495:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:496:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:496:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:497:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:497:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:499:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:501:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:502:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:503:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:504:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:507:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:508:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:508:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:509:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:512:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:515:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:516:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:517:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:520:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:522:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:523:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:524:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:527:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:529:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:530:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:531:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:532:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:532:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:533:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:533:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:534:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:534:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:535:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:539:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:541:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:541:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:543:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:547:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:551:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:553:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:555:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:557:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:561:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:563:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:567:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:569:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:573:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:584:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/Optional.h:585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:589:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:590:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:594:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:596:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:598:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:598:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:599:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:601:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:603:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:603:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:607:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:609:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:609:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:613:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:619:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:621:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:621:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:623:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:627:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:628:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:628:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:629:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:629:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:631:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:635:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:636:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Optional.h:636:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:637:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:637:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:639:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:645:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:646:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:647:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:649:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:658:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:659:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:659:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:660:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:660:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:661:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:665:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:666:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:666:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:668:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:668:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:670:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:670:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:672:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:674:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:676:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:676:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:678:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:680:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:682:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:683:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:686:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:688:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:691:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:693:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:696:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:698:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:699:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:700:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:701:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:704:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:705:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:705:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:708:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:710:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:711:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:712:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:713:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:716:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:717:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:719:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:721:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:723:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:726:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:727:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:727:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:729:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:731:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:732:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:732:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:734:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:736:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:738:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:740:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:740:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:744:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:746:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:748:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:750:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:751:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:752:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:754:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:760:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/Optional.h:761:  Extra space before )  [whitespace/parens] [2]
ERROR: Source/WTF/wtf/Optional.h:761:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:761:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:768:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/Optional.h:768:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:773:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:778:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:783:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:788:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:793:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:799:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:800:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:804:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:805:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:809:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:810:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:814:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:815:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:819:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:820:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:824:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:825:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:829:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:830:  Weird number of spaces at line-start.  Are y
ou using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:834:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:835:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:839:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:840:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:844:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:845:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:849:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:854:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:855:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:863:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:868:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:873:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:878:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:883:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:893:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:898:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:903:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:908:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:913:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:918:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:925:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:930:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:935:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:940:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:945:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:950:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:955:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:960:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:965:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:970:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:975:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:980:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:986:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:991:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:996:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1001:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1006:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1011:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1016:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1021:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1026:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1031:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1036:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1041:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1049:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1056:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1062:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1082:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1083:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1084:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1085:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1085:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1087:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1089:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1090:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1090:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1090:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1092:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1094:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1095:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1096:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1096:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1098:  argument_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/Optional.h:1100:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Optional.h:1101:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1101:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/Optional.h:1101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/Optional.h:1103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:421:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:210:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/crypto/JsonWebKey.h:40:  key_ops is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/WebViewImpl.h:233:  The parameter name &quot;scrollbarStyle&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 463 in 708 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>1253737</commentid>
    <comment_count>50</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-26 22:08:46 -0800</bug_when>
    <thetext>Committed r208985: &lt;http://trac.webkit.org/changeset/208985&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293387</attachid>
            <date>2016-10-30 21:21:47 -0700</date>
            <delta_ts>2016-10-30 21:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031131752.patch</filename>
            <type>text/plain</type>
            <size>154229</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi5hZmI3NGZmMGJiNDc4NzA4
ZmE0YmMyZWY4NzhjNjVjMGM2MDIwMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RG
OjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisKIDIwMTYtMTAtMjkgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJp
bmdpZnkgc2hvdWxkIGhhbmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJh
eSBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAu
LjMzYTZlZGM2MWM5M2E4Nzk0M2Y3YjVkODEzODEzYWQzZWY1MmQ2MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTUgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0
aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cG9ydCBMTFZNIGxpYmMrKydzIGV4cGVyaW1lbnRhbC9vcHRpb25hbC4gSXQgaGFzIHRoZSBzYW1l
CisgICAgICAgIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSB0byB0aGUgQysrMTcncyBvbmUu
IFByZXZpb3VzCisgICAgICAgIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFs
aXRpZXMuIFRoZSBsYXJnZXN0IG9uZQorICAgICAgICBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIg
Y29uc3RydWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBP
cHRpb25hbDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluCisgICAgICAgIFdl
YktpdC4KKworICAgICAgICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3Ry
dWN0b3JzLiBTbyBvbmx5IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhl
IHdheSB0byB1c2UgV1RGOjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGds
b2JhbCB2YXJpYWJsZXMuIFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBh
bmQKKyAgICAgICAgd2Ugd291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFy
aWFibGVzIHRoYXQgaW5jbHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBp
cyB0aGUgbWFpbiBtb3RpdmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlv
bmFsaXR5IGFsbG93cyB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAg
ICAgIHNpZ25hdHVyZXMgYXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAg
ICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6YmFkX29wdGlvbmFsX2FjY2Vzczo6
YmFkX29wdGlvbmFsX2FjY2Vzcyk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
fl9fb3B0aW9uYWxfc3RvcmFnZSk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
X19vcHRpb25hbF9zdG9yYWdlKToKKyAgICAgICAgKFdURjo6X19vcHRpb25hbF9zdG9yYWdlOjpu
b2V4Y2VwdCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6CisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6bm9leGNl
cHQpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZW1wbGFjZSk6CisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yKik6
CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpfX3Rocm93X2JhZF9vcHRpb25hbF9hY2Nlc3MpOgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWUpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6
dmFsdWVfb3IpOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPCk6CisgICAgICAgIChXVEY6Om9wZXJh
dG9yPik6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPD0pOgorICAgICAgICAoV1RGOjpvcGVyYXRv
cj49KToKKyAgICAgICAgKFdURjo6bm9leGNlcHQpOgorICAgICAgICAoV1RGOjptYWtlT3B0aW9u
YWwpOgorICAgICAgICAoV1RGOjpOdWxsb3B0VGFnOjpOdWxsb3B0VGFnKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uYWw6On5PcHRpb25hbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
Ok9wdGlvbmFsOjpvcGVyYXRvciBib29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9u
YWw6OnZhbHVlT3IpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPckNv
bXB1dGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6YXNQdHIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZGVzdHJveSk6IERlbGV0ZWQuCisKIDIwMTYtMTAt
MzAgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBIYXJm
QnV6eiBvdC1tYXRoIEFQSSB0byBwYXJzZSB0aGUgT3BlblR5cGUgTUFUSCB0YWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGY1ODUyZGIzODZiZTIzOTZlODFiODU1NjRmNGY0YTBmM2VmYzEzYzIuLmQ4NzVkOWIw
NjAyNTA4YzhjZWYzZjk3ZjY3Mzg0OGY1ZTg2YjVmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NzIgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0
aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmFtZSB2YWx1ZU9yIHRvIHZhbHVlX29yLiBUaGlzIGlzIHNwZWNpZmllZCBpbiBDKysxNyBwcm9w
b3NhbC4KKworICAgICAgICBVc2UgT3B0aW9uYWw6OmVtcGxhY2UuIEMrKzE3IE9wdGlvbmFsOjpv
cGVyYXRvcj0oT3B0aW9uYWwmJikgcmVxdWlyZXMKKyAgICAgICAgZWl0aGVyIGNvcHkgYXNzaWdu
bWVudCBvcGVyYXRvciBvciBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEJ1dAorICAgICAgICBE
Rkc6OkpTVmFsdWVPcGVyYW5kIGV0Yy4gb25seSBkZWZpbmVzIG1vdmUgY29uc3RydWN0b3JzIGFu
ZCBkcm9wCisgICAgICAgIGltcGxpY2l0IGNvcHkgYXNzaWdubWVudCBvcGVyYXRvcnMuCisKKyAg
ICAgICAgSXQgd2FzIE9LIGluIHRoZSBwcmV2aW91cyBXVEY6Ok9wdGlvbmFsIHNpbmNlIGl0IGFs
d2F5cyB1c2VzIG1vdmUKKyAgICAgICAgY29uc3RydWN0b3JzLiBCdXQgaXQgaXMgbm90IHZhbGlk
IGluIEMrKzE3IE9wdGlvbmFsLiBXZSB1c2UgT3B0aW9uYWw6OmVtcGxhY2UKKyAgICAgICAgaW5z
dGVhZC4gVGhpcyBmdW5jdGlvbiBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91
cyBXVEY6Ok9wdGlvbmFsJ3MKKyAgICAgICAgb3BlcmF0b3I9LgorCisgICAgICAgIE5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aGFzaCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJGYWN0b3J5OjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRN
Rik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01Qcm9taXNlOjpET01Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21p
c2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpzd2FwKToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmRvdWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjphZGRSdWxlKToKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxCeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKToKKyAgICAg
ICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
bk9ic2VydmVyOjpvYnNlcnZlKToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluU3Ryb2tlSW50
ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVm
bGlnaHQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmRhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmlu
Zyk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luSGFzaDo6aGFzaCk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpYWxvZ0ZlYXR1cmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6bWFwQWJz
b2x1dGVQb2ludFRvTG9jYWxQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dHJh
bnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBwZWRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0
ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6OnN1YnN0cmluZ1RvUmVuZGVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUGFpbnRJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFwcGx5VHJhbnNm
b3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5Cb3hBc2NlbnRGb3JD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRT
aXplRm9yTWluQW5kTWF4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OnNldEdyb3d0aExpbWl0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVz
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9m
R3JpZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjptaW5TaXplRm9yQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRy
YWNrU2l6aW5nRnVuY3Rpb25zRm9yTm9uU3Bhbm5pbmdJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
Ojpzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6bGlzdEluZGV4SXNWaXNpYmxl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdo
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnN0cmluZ1Zp
ZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmFzY2VudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250
YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6Omhp
dFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjppbnRl
cnNlY3RSZXBhaW50UmVjdFdpdGhTaGFkb3dzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJv
Y2Vzc0dseXBoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0
ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6CisKIDIwMTYtMTAtMzAgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2RlTWFwLCBh
bmQgRE9NU3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCBjZjZhZTYxZDk5NDU0YmMwYjk5MDE4MWViNDRiMmIzMzM0MjVkYzM1Li5mNTI2
N2E0MTFjZjk0N2E2ZGRmODE0MzFjMTg1NzRhZmZkOGY3NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFz
IFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgt
W1dlYlNlY3VyaXR5T3JpZ2luIHBvcnRdKToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAsIGFu
ZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCmluZGV4IDFhNjZhZjcwNWYwZjZlMDgyN2M3ZDA4N2E2YTlkYjU3ODYzZWYyMDcuLmVmOWFl
MzgyZmI1Yzk3NDQ1MmNlMzMxODU4OGViMTA2ZjYzMzcxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdp
bjo6cG9ydCk6CisKIDIwMTYtMTAtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2RlTWFwLCBhbmQgRE9NU3RyaW5nTWFwIGZy
b20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNjc2ZWE5NDE1MjE5
YTU2NTA4YjAxNDcwZThiZTk1NjBkZmRkYTFmLi42ZDYwMzBjOGZhYjlmNzA2OGM4NmIwMmU3N2Vm
NjdlZDhhZjdmNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMTAtMzAgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1w
b3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkdldFBvcnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tOgorICAg
ICAgICAoLVtXS1NlY3VyaXR5T3JpZ2luIHBvcnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3Q6OnJlc3RvcmVGcm9tU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnRyYW5zZm9ybUZyb21TY2VuZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjplbmNvZGVGb3JtRGF0YUVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5n
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8pOgorCiAyMDE2LTEwLTMwICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVsZW1lbnQsIE5hbWVkTm9kZU1h
cCwgYW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDdi
NTdiMTg5MjkzNzA2MTBiNzNhMDBjZTVjNTA5ZDMxY2ZiNTU2MWYuLjExOWQ2ZGJlYzIyNTVjMjRk
NzRmNjcyOWJmNjZmMGIzN2M0YmM1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjUyLDExICszMjUyLDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FT
U0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsK
IAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywg
bGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAg
IH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmlnaHQgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0
aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgfQogCkBAIC0zNDA1LDExICszNDA1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAK
ICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0ID0gSlNWYWx1
ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxl
ZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9
CiAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNW
YWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhp
cywgcmlnaHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygp
OwogICAgIH0KIApAQCAtMzU0Niw3ICszNTQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkK
IAogICAgIE9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByU2NyYXRjaDsKICAgICBpZiAobmVlZHNT
Y3JhdGNoRlBSUmVnKSB7Ci0gICAgICAgIGZwclNjcmF0Y2ggPSBGUFJUZW1wb3JhcnkodGhpcyk7
CisgICAgICAgIGZwclNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAgc2NyYXRjaEZQUiA9
IGZwclNjcmF0Y2gtPmZwcigpOwogICAgIH0KIApAQCAtMzU4MCwxMSArMzU4MCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSQogICAgIEFTU0VSVCghKEdlbmVyYXRvcjo6aXNMZWZ0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQobGVmdE9wZXJhbmQpICYmIEdlbmVyYXRvcjo6aXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KHJpZ2h0T3BlcmFuZCkpKTsKIAogICAgIGlmICghR2VuZXJhdG9yOjppc0xl
ZnRPcGVyYW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkpIHsKLSAgICAgICAgbGVmdCA9IEpT
VmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlz
LCBsZWZ0Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAg
ICAgfQogICAgIGlmICghR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmln
aHRPcGVyYW5kKSkgewotICAgICAgICByaWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0
Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAg
ICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NDksMTAg
KzM2NDksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2Rl
LCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICAgICAgfSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKEdlbmVyYXRvcjo6aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQo
bGVmdE9wZXJhbmQpKSB7Ci0gICAgICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywg
bGVmdENoaWxkKTsKKyAgICAgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOwog
ICAgICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9IGVs
c2UgaWYgKEdlbmVyYXRvcjo6aXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KHJpZ2h0T3BlcmFu
ZCkpIHsKLSAgICAgICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGls
ZCk7CisgICAgICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAg
ICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KIApAQCAt
NDc2NiwxMSArNDc2NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhEaXYo
Tm9kZSogbm9kZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3Qo
KSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAgICAgICAgaWYgKCFsZWZ0T3BlcmFu
ZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAg
ICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgICAgICByaWdodCA9
IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgcmlnaHQuZW1w
bGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5q
c1ZhbHVlUmVncygpOwogICAgICAgICB9CiAKQEAgLTcyNzcsNyArNzI3Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUpCiAgICAgT3B0aW9u
YWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKICAgICBpZiAocGF0Y2hwb2lu
dC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewogICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdl
ID0gbm9kZS0+Y2hpbGQyKCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdCA9IFNwZWN1bGF0ZUNlbGxP
cGVyYW5kKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOworICAgICAgICBnbG9iYWxPYmplY3QuZW1w
bGFjZSh0aGlzLCBnbG9iYWxPYmplY3RFZGdlKTsKICAgICAgICAgcmVncy5hcHBlbmQoRE9NSklU
OjpWYWx1ZShnbG9iYWxPYmplY3QtPmdwcigpLCBtX3N0YXRlLmZvck5vZGUoZ2xvYmFsT2JqZWN0
RWRnZSkudmFsdWUoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOGY3MmIxZThkYjYxZDdmMzNl
MzAzZDNiNzNkNWIzZjUyYmVjZThmOC4uZjk4ZTE0NWRmNDViMGFjOTU3MmQzZjU4ZGMxOWViMzMy
MzAyYmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCkBAIC01MDQ1LDExICs1MDQ1LDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJh
bmQ+IGtleUFzVmFsdWU7CiAgICAgICAgIEpTVmFsdWVSZWdzIGtleVJlZ3M7CiAgICAgICAgIGlm
IChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewotICAgICAgICAgICAg
a2V5QXNWYWx1ZSA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIGtleUFzVmFsdWUuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICBrZXlSZWdzID0ga2V5QXNWYWx1ZS0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlIHx8IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTeW1ib2xVc2UpOwotICAgICAgICAg
ICAga2V5QXNDZWxsID0gU3BlY3VsYXRlQ2VsbE9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAga2V5QXNDZWxsLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAga2V5UmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShrZXlBc0NlbGwt
PmdwcigpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBmODljMWU2OTc1NjliMzI4YzFiMmRkNDI1ZGUz
NWU0ZjQyYTM3NDg2Li41ZjE3M2I2MDk0NThmMDA4NjU3ODdmMmJjMGFkNzdjYzMzY2MxMjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTUxOTUsMTEgKzUxOTUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsK
ICAgICAgICAgR1BSUmVnIGtleUdQUjsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICBrZXlBc1ZhbHVlID0gSlNWYWx1ZU9w
ZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAga2V5QXNWYWx1ZS5lbXBs
YWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtleUFzVmFs
dWUtPmdwcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UgfHwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgp
ID09IFN5bWJvbFVzZSk7Ci0gICAgICAgICAgICBrZXlBc0NlbGwgPSBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc0NlbGwuZW1wbGFj
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBrZXlHUFIgPSBrZXlBc0NlbGwt
PmdwcigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQpp
bmRleCAxMmY5NTRjMDM0OWMxYmZjNzMzMDNkNjI5ZmRmMWZlYmE1NjI1NTdjLi4wNDgyYzc4YTU4
ZmI1ODAyY2QxODc3MTJlYmFlMmE2MDllNDQyYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Lm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2EK
ICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJn
ZXRNdXRleCk7CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3RhcmdldC0+cmVtb3Rl
Q29udHJvbEFsbG93ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2lu
Z2xldG9uKCkuc2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRpZmllcigpLnZhbHVlT3IoMCkpOworICAg
ICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0dXBGYWlsZWQodGFy
Z2V0SWRlbnRpZmllcigpLnZhbHVlX29yKDApKTsKICAgICAgICAgICAgICAgICBtX3RhcmdldCA9
IG51bGxwdHI7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbW90ZUluc3BlY3Rpb25UYXJn
ZXQ+KG1fdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgIGF1dG8gY2FzdGVkVGFyZ2V0ID0gZG93
bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4obV90YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKaW5kZXgg
NGNiNTNiZjU3ZjgyOWU0NGRhOWZiZDQ5ZDZmZDljOGM5OGM5NDRkNC4uMzA4ZDhjZDc0NDk1Yzgw
OGJhZGYzNTI3NTdlZGNjZGRlOWQ2NWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT3B0
aW9uYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCkBAIC0xLDI3MyArMSwxMDA2
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBPcHRpb25hbF9oCi0jZGVmaW5lIE9wdGlvbmFsX2gK
Ky8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gbGliYysrIExpY2Vuc2UKKy8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorLy8KKy8vIFRoZSBsaWJjKysgbGlicmFyeSBpcyBkdWFsIGxpY2Vuc2Vk
IHVuZGVyIGJvdGggdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMKKy8vICJCU0QtTGlrZSIgbGlj
ZW5zZSBhbmQgdGhlIE1JVCBsaWNlbnNlLiAgQXMgYSB1c2VyIG9mIHRoaXMgY29kZSB5b3UgbWF5
IGNob29zZQorLy8gdG8gdXNlIGl0IHVuZGVyIGVpdGhlciBsaWNlbnNlLiAgQXMgYSBjb250cmli
dXRvciwgeW91IGFncmVlIHRvIGFsbG93IHlvdXIgY29kZQorLy8gdG8gYmUgdXNlZCB1bmRlciBi
b3RoLgorLy8KKy8vIEZ1bGwgdGV4dCBvZiB0aGUgcmVsZXZhbnQgbGljZW5zZXMgaXMgaW5jbHVk
ZWQgYmVsb3cuCisvLworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLworLy8gVW5pdmVyc2l0
eSBvZiBJbGxpbm9pcy9OQ1NBCisvLyBPcGVuIFNvdXJjZSBMaWNlbnNlCisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDA5LTIwMTYgYnkgdGhlIGNvbnRyaWJ1dG9ycyBsaXN0ZWQgaW4gQ1JFRElUUy5U
WFQKKy8vCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIERldmVsb3BlZCBieToKKy8v
CisvLyAgICAgTExWTSBUZWFtCisvLworLy8gICAgIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQg
VXJiYW5hLUNoYW1wYWlnbgorLy8KKy8vICAgICBodHRwOi8vbGx2bS5vcmcKKy8vCisvLyBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5IG9mCisvLyB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCB3aXRoCisvLyB0aGUgU29m
dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUgcmlnaHRzIHRvCisvLyB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcworLy8gb2YgdGhlIFNvZnR3YXJl
LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVk
IHRvIGRvCisvLyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLAorLy8gICAgICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXJzLgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwKKy8vICAgICAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVycyBpbiB0aGUKKy8vICAgICAgICAgICAgICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWVzIG9mIHRoZSBMTFZNIFRlYW0sIFVuaXZl
cnNpdHkgb2YgSWxsaW5vaXMgYXQKKy8vICAgICAgICAgICBVcmJhbmEtQ2hhbXBhaWduLCBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8KKy8vICAgICAgICAg
ICAgICAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgU29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYworLy8gICAgICAgICAgICAgICAgICAgICAgIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksIEZJVE5FU1MKKy8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBDT05UUklCVVRPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8v
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIFdJVEggVEhFCisvLyBTT0ZU
V0FSRS4KKy8vCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMDktMjAxNCBieSB0aGUgY29udHJpYnV0b3JzIGxpc3RlZCBpbiBDUkVESVRTLlRYVAorLy8K
Ky8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNv
ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8v
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg
cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgor
Ly8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZU
V0FSRS4KKworLy8gQ29waWVkIGZyb20gaHR0cDovL2xsdm0ub3JnL3N2bi9sbHZtLXByb2plY3Qv
bGliY3h4L3RydW5rL2luY2x1ZGUvZXhwZXJpbWVudGFsL29wdGlvbmFsIChyMjg1NTI0KQorCisv
LyBNb2RpZmllZCB0byBtYWtlIGl0IGNvbXBpbGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgor
CisjcHJhZ21hIG9uY2UKIAorLyoKKyAgICBvcHRpb25hbCBzeW5vcHNpcworCisvLyBDKysxeQor
CituYW1lc3BhY2Ugc3RkIHsgbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7IGlubGluZSBuYW1lc3Bh
Y2UgZnVuZGFtZW50YWxzX3YxIHsKKworICAgIC8vIDUuMywgb3B0aW9uYWwgZm9yIG9iamVjdCB0
eXBlcworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBvcHRpb25hbDsKKworICAgIC8vIDUu
NCwgSW4tcGxhY2UgY29uc3RydWN0aW9uCisgICAgc3RydWN0IGluX3BsYWNlX3R7fTsKKyAgICBj
b25zdGV4cHIgaW5fcGxhY2VfdCBpbl9wbGFjZXt9OworCisgICAgLy8gNS41LCBOby12YWx1ZSBz
dGF0ZSBpbmRpY2F0b3IKKyAgICBzdHJ1Y3QgbnVsbG9wdF90e3NlZSBiZWxvd307CisgICAgY29u
c3RleHByIG51bGxvcHRfdCBudWxsb3B0KHVuc3BlY2lmaWVkKTsKKworICAgIC8vIDUuNiwgQ2xh
c3MgYmFkX29wdGlvbmFsX2FjY2VzcworICAgIGNsYXNzIGJhZF9vcHRpb25hbF9hY2Nlc3M7CisK
KyAgICAvLyA1LjcsIFJlbGF0aW9uYWwgb3BlcmF0b3JzCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+
CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29u
c3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBvcHRpb25hbDxUPiYp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBvcHRpb25hbDxU
PiYsIGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9u
YWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBvcHRpb25hbDxUPiYpOworCisgICAg
Ly8gNS44LCBDb21wYXJpc29uIHdpdGggbnVsbG9wdAorICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBu
b2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8VD4mLCBu
dWxsb3B0X3QpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9uYWw8VD4mKSBub2V4Y2VwdDsKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG9wdGlv
bmFsPFQ+JiwgbnVsbG9wdF90KSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9uYWw8VD4mKSBub2V4
Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0obnVsbG9wdF90LCBjb25zdCBvcHRpb25h
bDxUPiYpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIG5vZXhjZXB0OworICAgIHRl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4obnVsbG9wdF90LCBjb25z
dCBvcHRpb25hbDxUPiYpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBub2V4Y2Vw
dDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShudWxs
b3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9leGNlcHQ7CisKKyAgICAvLyA1LjksIENvbXBh
cmlzb24gd2l0aCBUCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYsIGNvbnN0IG9wdGlvbmFsPFQ+
Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYsIGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRpb25h
bDxUPiYsIGNvbnN0IFQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29u
c3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBUJiwg
Y29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBvcHRpb25hbDxUPiYsIGNvbnN0IFQmKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiwgY29uc3Qgb3B0
aW9uYWw8VD4mKTsKKworICAgIC8vIDUuMTAsIFNwZWNpYWxpemVkIGFsZ29yaXRobXMKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gdm9pZCBzd2FwKG9wdGlvbmFsPFQ+Jiwgb3B0aW9uYWw8VD4mKSBu
b2V4Y2VwdChzZWUgYmVsb3cpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgb3B0
aW9uYWw8c2VlIGJlbG93PiBtYWtlX29wdGlvbmFsKFQmJik7CisKKwl0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KKwljbGFzcyBvcHRpb25hbAorCXsKKwlwdWJsaWM6CisJICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKKworCSAgLy8gNS4zLjEsIENvbnN0cnVjdG9ycworCSAgY29uc3RleHByIG9wdGlvbmFsKCkg
bm9leGNlcHQ7CisJICBjb25zdGV4cHIgb3B0aW9uYWwobnVsbG9wdF90KSBub2V4Y2VwdDsKKwkg
IG9wdGlvbmFsKGNvbnN0IG9wdGlvbmFsJik7CisJICBvcHRpb25hbChvcHRpb25hbCYmKSBub2V4
Y2VwdChzZWUgYmVsb3cpOworCSAgY29uc3RleHByIG9wdGlvbmFsKGNvbnN0IFQmKTsKKwkgIGNv
bnN0ZXhwciBvcHRpb25hbChUJiYpOworCSAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGNvbnN0
ZXhwciBleHBsaWNpdCBvcHRpb25hbChpbl9wbGFjZV90LCBBcmdzJiYuLi4pOworCSAgdGVtcGxh
dGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisJCWNvbnN0ZXhwciBleHBsaWNpdCBvcHRpb25h
bChpbl9wbGFjZV90LCBpbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOworCisJICAvLyA1
LjMuMiwgRGVzdHJ1Y3RvcgorCSAgfm9wdGlvbmFsKCk7CisKKwkgIC8vIDUuMy4zLCBBc3NpZ25t
ZW50CisJICBvcHRpb25hbCYgb3BlcmF0b3I9KG51bGxvcHRfdCkgbm9leGNlcHQ7CisJICBvcHRp
b25hbCYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsJik7CisJICBvcHRpb25hbCYgb3BlcmF0b3I9
KG9wdGlvbmFsJiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7CisJICB0ZW1wbGF0ZSA8Y2xhc3MgVT4g
b3B0aW9uYWwmIG9wZXJhdG9yPShVJiYpOworCSAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IHZv
aWQgZW1wbGFjZShBcmdzJiYuLi4pOworCSAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFy
Z3M+CisJCXZvaWQgZW1wbGFjZShpbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOworCisJ
ICAvLyA1LjMuNCwgU3dhcAorCSAgdm9pZCBzd2FwKG9wdGlvbmFsJikgbm9leGNlcHQoc2VlIGJl
bG93KTsKKworCSAgLy8gNS4zLjUsIE9ic2VydmVycworCSAgY29uc3RleHByIFQgY29uc3QqIG9w
ZXJhdG9yIC0+KCkgY29uc3Q7CisJICBjb25zdGV4cHIgVCogb3BlcmF0b3IgLT4oKTsKKwkgIGNv
bnN0ZXhwciBUIGNvbnN0JiBvcGVyYXRvciAqKCkgY29uc3QgJjsKKwkgIGNvbnN0ZXhwciBUJiBv
cGVyYXRvciAqKCkgJjsKKwkgIGNvbnN0ZXhwciBUJiYgb3BlcmF0b3IgKigpICYmOworCSAgY29u
c3RleHByIGNvbnN0IFQmJiBvcGVyYXRvciAqKCkgY29uc3QgJiY7CisJICBjb25zdGV4cHIgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5vZXhjZXB0OworCSAgY29uc3RleHByIFQgY29u
c3QmIHZhbHVlKCkgY29uc3QgJjsKKwkgIGNvbnN0ZXhwciBUJiB2YWx1ZSgpICY7CisJICBjb25z
dGV4cHIgVCYmIHZhbHVlKCkgJiY7CisJICBjb25zdGV4cHIgY29uc3QgVCYmIHZhbHVlKCkgY29u
c3QgJiY7CisJICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gY29uc3RleHByIFQgdmFsdWVfb3IoVSYmKSBj
b25zdCAmOworCSAgdGVtcGxhdGUgPGNsYXNzIFU+IGNvbnN0ZXhwciBUIHZhbHVlX29yKFUmJikg
JiY7CisKKwlwcml2YXRlOgorCSAgVCogICB2YWw7ICAvLyBleHBvc2l0aW9uIG9ubHkKKwl9Owor
CisgIH0gLy8gbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MQorICB9IC8vIG5hbWVzcGFjZSBleHBl
cmltZW50YWwKKworICAvLyA1LjExLCBIYXNoIHN1cHBvcnQKKyAgdGVtcGxhdGUgPGNsYXNzIFQ+
IHN0cnVjdCBoYXNoOworICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGhhc2g8ZXhwZXJpbWVu
dGFsOjpvcHRpb25hbDxUPj47CisKK30gLy8gbmFtZXNwYWNlIHN0ZAorCisqLworCisjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisjaW5jbHVkZSA8aW5pdGlhbGl6
ZXJfbGlzdD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDxuZXc+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLS8vIFdURjo6T3B0aW9uYWwgaXMgYSBjbGFzcyBiYXNl
ZCBvbiBzdGQ6Om9wdGlvbmFsLCBkZXNjcmliZWQgaGVyZToKLS8vIGh0dHA6Ly93d3cub3Blbi1z
dGQub3JnL0pUQzEvU0MyMi9XRzIxL2RvY3MvcGFwZXJzLzIwMTMvbjM1MjcuaHRtbAotLy8gSWYg
dGhpcyBlbmRzIHVwIGluIGEgQysrIHN0YW5kYXJkLCB3ZSBzaG91bGQgcmVwbGFjZSBvdXIgaW1w
bGVtZW50YXRpb24gd2l0aCBpdC4KLQogbmFtZXNwYWNlIFdURiB7CiAKLXN0cnVjdCBJblBsYWNl
VGFnIHsgfTsKLWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9OworY2xhc3MgYmFkX29w
dGlvbmFsX2FjY2VzcworICAgIDogcHVibGljIHN0ZDo6bG9naWNfZXJyb3IKK3sKK3B1YmxpYzoK
KwliYWRfb3B0aW9uYWxfYWNjZXNzKCkgOiBzdGQ6OmxvZ2ljX2Vycm9yKCJCYWQgb3B0aW9uYWwg
QWNjZXNzIikge30KIAotc3RydWN0IE51bGxvcHRUYWcgeyBleHBsaWNpdCBjb25zdGV4cHIgTnVs
bG9wdFRhZyhpbnQpIHsgfSB9OwotY29uc3RleHByIE51bGxvcHRUYWcgTnVsbG9wdCB7IDAgfTsK
Ky8vCUdldCB0aGUga2V5IGZ1bmN0aW9uIH5iYWRfb3B0aW9uYWxfYWNjZXNzKCkgaW50byB0aGUg
ZHlsaWIKKyAgICB2aXJ0dWFsIH5iYWRfb3B0aW9uYWxfYWNjZXNzKCkgbm9leGNlcHQ7Cit9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgT3B0aW9uYWwgewotcHVibGljOgotICAgIE9w
dGlvbmFsKCkKLSAgICAgICAgOiBtX2lzRW5nYWdlZChmYWxzZSkKLSAgICB7Ci0gICAgfQorc3Ry
dWN0IF9fbmF0Cit7CisgICAgX19uYXQoKSA9IGRlbGV0ZTsKKyAgICBfX25hdChjb25zdCBfX25h
dCYpID0gZGVsZXRlOworICAgIF9fbmF0JiBvcGVyYXRvcj0oY29uc3QgX19uYXQmKSA9IGRlbGV0
ZTsKKyAgICB+X19uYXQoKSA9IGRlbGV0ZTsKK307CiAKLSAgICBPcHRpb25hbChOdWxsb3B0VGFn
KQotICAgICAgICA6IG1faXNFbmdhZ2VkKGZhbHNlKQotICAgIHsKLSAgICB9Cit0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfVXAgPSBfVHAsCisgICAgICAgICAgYm9vbCBfTm90Vm9pZCA9ICFz
dGQ6OmlzX3ZvaWQ8X1RwPjo6dmFsdWUgJiYgIXN0ZDo6aXNfdm9pZDxfVXA+Ojp2YWx1ZT4KK3N0
cnVjdCBfX3N3YXBwYWJsZV93aXRoCit7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9MSFMsIGNsYXNz
IF9SSFM+CisgICAgc3RhdGljIGRlY2x0eXBlKHN0ZDo6c3dhcChzdGQ6OmRlY2x2YWw8X0xIUz4o
KSwgc3RkOjpkZWNsdmFsPF9SSFM+KCkpKQorICAgIF9fdGVzdF9zd2FwKGludCk7CisgICAgdGVt
cGxhdGUgPGNsYXNzLCBjbGFzcz4KKyAgICBzdGF0aWMgX19uYXQgX190ZXN0X3N3YXAobG9uZyk7
CisKKyAgICAvLyBFeHRyYSBwYXJlbnMgYXJlIG5lZWRlZCBmb3IgdGhlIEMrKzAzIGRlZmluaXRp
b24gb2YgZGVjbHR5cGUuCisgICAgdHlwZWRlZiBkZWNsdHlwZSgoX190ZXN0X3N3YXA8X1RwLCBf
VXA+KDApKSkgX19zd2FwMTsKKyAgICB0eXBlZGVmIGRlY2x0eXBlKChfX3Rlc3Rfc3dhcDxfVXAs
IF9UcD4oMCkpKSBfX3N3YXAyOworCisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSAhc3Rk
Ojppc19zYW1lPF9fc3dhcDEsIF9fbmF0Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmICFzdGQ6OmlzX3NhbWU8X19zd2FwMiwgX19uYXQ+Ojp2YWx1ZTsKK307CiAKLSAgICBP
cHRpb25hbChjb25zdCBUJiB2YWx1ZSkKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAg
IHsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCh2YWx1ZSk7Ci0gICAgfQordGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1VwPgorc3RydWN0IF9fc3dhcHBhYmxlX3dpdGg8X1Rw
LCBfVXAsICBmYWxzZT4gOiBzdGQ6OmZhbHNlX3R5cGUge307CiAKLSAgICBPcHRpb25hbChjb25z
dCBPcHRpb25hbCYgb3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQob3RoZXIubV9pc0VuZ2Fn
ZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICBuZXcgKE5v
dE51bGwsICZtX3ZhbHVlKSBUKCpvdGhlci5hc1B0cigpKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfVXAgPSBfVHAsIGJvb2wgX1N3YXBwYWJsZSA9IF9fc3dhcHBhYmxlX3dp
dGg8X1RwLCBfVXA+Ojp2YWx1ZT4KK3N0cnVjdCBfX25vdGhyb3dfc3dhcHBhYmxlX3dpdGggewor
ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAgICBub2V4Y2VwdChzdGQ6OnN3YXAoc3Rk
OjpkZWNsdmFsPF9UcD4oKSwgc3RkOjpkZWNsdmFsPF9VcD4oKSkpCisgICYmICBub2V4Y2VwdChz
dGQ6OnN3YXAoc3RkOjpkZWNsdmFsPF9VcD4oKSwgc3RkOjpkZWNsdmFsPF9UcD4oKSkpOworfTsK
IAotICAgIE9wdGlvbmFsKE9wdGlvbmFsJiYgb3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQo
b3RoZXIubV9pc0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAg
ICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUoKm90aGVyLmFzUHRyKCkp
KTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfVXA+CitzdHJ1Y3QgX19ub3Ro
cm93X3N3YXBwYWJsZV93aXRoPF9UcCwgX1VwLCBmYWxzZT4gOiBzdGQ6OmZhbHNlX3R5cGUge307
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19ub3Rocm93X3N3YXBwYWJsZQor
ICAgIDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19ub3Rocm93X3N3YXBw
YWJsZV93aXRoPF9UcCY+Ojp2YWx1ZT4KK3sKK307CisKK3N0cnVjdCBJblBsYWNlVHlwZSB7fTsK
K2NvbnN0ZXhwciBJblBsYWNlVHlwZSBJblBsYWNle307CisKK3N0cnVjdCBOdWxsb3B0VHlwZQor
eworICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBOdWxsb3B0VHlwZShpbnQpIG5vZXhjZXB0IHt9Cit9
OworCitjb25zdGV4cHIgTnVsbG9wdFR5cGUgTnVsbG9wdHswfTsKIAotICAgIE9wdGlvbmFsKFQm
JiB2YWx1ZSkKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQordGVtcGxhdGUgPGNsYXNzIF9U
cCwgYm9vbCA9IHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxfVHA+Ojp2YWx1ZT4KK2Ns
YXNzIF9fb3B0aW9uYWxfc3RvcmFnZQoreworcHJvdGVjdGVkOgorICAgIHR5cGVkZWYgX1RwIHZh
bHVlX3R5cGU7CisgICAgdW5pb24KICAgICB7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFs
dWUpIFQoV1RGTW92ZSh2YWx1ZSkpOwotICAgIH0KKyAgICAgICAgY2hhciBfX251bGxfc3RhdGVf
OworICAgICAgICB2YWx1ZV90eXBlIF9fdmFsXzsKKyAgICB9OworICAgIGJvb2wgX19lbmdhZ2Vk
XyA9IGZhbHNlOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBPcHRpb25h
bChJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJncykKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVl
KQorICAgIEFMV0FZU19JTkxJTkUKKyAgICB+X19vcHRpb25hbF9zdG9yYWdlKCkKICAgICB7Ci0g
ICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICAgICAgaWYgKF9fZW5nYWdlZF8pCisgICAgICAgICAgICBfX3ZhbF8ufnZhbHVl
X3R5cGUoKTsKICAgICB9CiAKLSAgICB+T3B0aW9uYWwoKQorICAgIEFMV0FZU19JTkxJTkUKKyAg
ICBjb25zdGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKCkgbm9leGNlcHQKKyAgICAgICAgOiAgX19u
dWxsX3N0YXRlXygnXDAnKSB7fQorCisgICAgQUxXQVlTX0lOTElORQorICAgIF9fb3B0aW9uYWxf
c3RvcmFnZShjb25zdCBfX29wdGlvbmFsX3N0b3JhZ2UmIF9feCkKKyAgICAgICAgOiAgX19lbmdh
Z2VkXyhfX3guX19lbmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKF9fZW5nYWdl
ZF8pCisgICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKF9fdmFsXykp
IHZhbHVlX3R5cGUoX194Ll9fdmFsXyk7CisgICAgICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUK
KyAgICBfX29wdGlvbmFsX3N0b3JhZ2UoX19vcHRpb25hbF9zdG9yYWdlJiYgX194KQorICAgICAg
ICAgICAgICAgICAgICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGli
bGU8dmFsdWVfdHlwZT46OnZhbHVlKQorICAgICAgICA6ICBfX2VuZ2FnZWRfKF9feC5fX2VuZ2Fn
ZWRfKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoX19lbmdhZ2VkXykKKyAgICAgICAgICAg
ICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YoX192YWxfKSkgdmFsdWVfdHlwZShXVEZN
b3ZlKF9feC5fX3ZhbF8pKTsKKyAgICAgICAgfQorCisgICAgQUxXQVlTX0lOTElORQorICAgIGNv
bnN0ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UoY29uc3QgdmFsdWVfdHlwZSYgX192KQorICAgICAg
ICA6ICBfX3ZhbF8oX192KSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVlKSB7fQorCisgICAg
QUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UodmFsdWVfdHlw
ZSYmIF9fdikKKyAgICAgICAgOiAgX192YWxfKFdURk1vdmUoX192KSksCisgICAgICAgICAgIF9f
ZW5nYWdlZF8odHJ1ZSkge30KKworICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfQXJncz4KKyAgICBB
TFdBWVNfSU5MSU5FCisgICAgY29uc3RleHByCisgICAgZXhwbGljaXQgX19vcHRpb25hbF9zdG9y
YWdlKEluUGxhY2VUeXBlLCBfQXJncyYmLi4uIF9fYXJncykKKyAgICAgICA6ICBfX3ZhbF8oc3Rk
Ojpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVl
KSB7fQorfTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK2NsYXNzIF9fb3B0aW9uYWxfc3RvcmFn
ZTxfVHAsIHRydWU+Cit7Citwcm90ZWN0ZWQ6CisgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsK
KyAgICB1bmlvbgogICAgIHsKLSAgICAgICAgZGVzdHJveSgpOwotICAgIH0KKyAgICAgICAgY2hh
ciBfX251bGxfc3RhdGVfOworICAgICAgICB2YWx1ZV90eXBlIF9fdmFsXzsKKyAgICB9OworICAg
IGJvb2wgX19lbmdhZ2VkXyA9IGZhbHNlOworCisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0
ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UoKSBub2V4Y2VwdAorICAgICAgICA6ICBfX251bGxfc3Rh
dGVfKCdcMCcpIHt9CisKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgX19vcHRpb25hbF9zdG9yYWdl
KGNvbnN0IF9fb3B0aW9uYWxfc3RvcmFnZSYgX194KQorICAgICAgICA6ICBfX2VuZ2FnZWRfKF9f
eC5fX2VuZ2FnZWRfKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoX19lbmdhZ2VkXykKKyAg
ICAgICAgICAgICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YoX192YWxfKSkgdmFsdWVf
dHlwZShfX3guX192YWxfKTsKKyAgICAgICAgfQorCisgICAgQUxXQVlTX0lOTElORQorICAgIF9f
b3B0aW9uYWxfc3RvcmFnZShfX29wdGlvbmFsX3N0b3JhZ2UmJiBfX3gpCisgICAgICAgICAgICAg
ICAgICAgICAgbm9leGNlcHQoc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTx2YWx1
ZV90eXBlPjo6dmFsdWUpCisgICAgICAgIDogIF9fZW5nYWdlZF8oX194Ll9fZW5nYWdlZF8pCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChfX2VuZ2FnZWRfKQorICAgICAgICAgICAgICAgIDo6
bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZihfX3ZhbF8pKSB2YWx1ZV90eXBlKFdURk1vdmUoX194
Ll9fdmFsXykpOworICAgICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgY29uc3RleHBy
IF9fb3B0aW9uYWxfc3RvcmFnZShjb25zdCB2YWx1ZV90eXBlJiBfX3YpCisgICAgICAgIDogIF9f
dmFsXyhfX3YpLAorICAgICAgICAgICBfX2VuZ2FnZWRfKHRydWUpIHt9CisKKyAgICBBTFdBWVNf
SU5MSU5FCisgICAgY29uc3RleHByIF9fb3B0aW9uYWxfc3RvcmFnZSh2YWx1ZV90eXBlJiYgX192
KQorICAgICAgICA6ICBfX3ZhbF8oV1RGTW92ZShfX3YpKSwKKyAgICAgICAgICAgX19lbmdhZ2Vk
Xyh0cnVlKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzPgorICAgIEFMV0FZU19J
TkxJTkUKKyAgICBjb25zdGV4cHIKKyAgICBleHBsaWNpdCBfX29wdGlvbmFsX3N0b3JhZ2UoSW5Q
bGFjZVR5cGUsIF9BcmdzJiYuLi4gX19hcmdzKQorICAgICAgIDogIF9fdmFsXyhzdGQ6OmZvcndh
cmQ8X0FyZ3M+KF9fYXJncykuLi4pLAorICAgICAgICAgICBfX2VuZ2FnZWRfKHRydWUpIHt9Cit9
OwogCi0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShOdWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNz
IF9UcD4KK2NsYXNzIE9wdGlvbmFsCisgICAgOiBwcml2YXRlIF9fb3B0aW9uYWxfc3RvcmFnZTxf
VHA+Cit7CisgICAgdHlwZWRlZiBfX29wdGlvbmFsX3N0b3JhZ2U8X1RwPiBfX2Jhc2U7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0
ZDo6aXNfcmVmZXJlbmNlPHZhbHVlX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgIkluc3Rh
bnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhIHJlZmVyZW5jZSB0eXBlIGlzIGlsbC1mb3JtZWQu
Iik7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PHZhbHVlX3R5cGU+Ojp0eXBlLCBJblBsYWNlVHlwZT46OnZhbHVlLAorICAgICAgICAgICAg
ICAiSW5zdGFudGlhdGlvbiBvZiBPcHRpb25hbCB3aXRoIGEgSW5QbGFjZVR5cGUgdHlwZSBpcyBp
bGwtZm9ybWVkLiIpOworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9jdjx2YWx1ZV90eXBlPjo6dHlwZSwgTnVsbG9wdFR5cGU+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhIE51bGxvcHRUeXBl
IHR5cGUgaXMgaWxsLWZvcm1lZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfb2JqZWN0
PHZhbHVlX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwg
d2l0aCBhIG5vbi1vYmplY3QgdHlwZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuIik7CisgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfZGVzdHJ1Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1
ZSwKKyAgICAgICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhbiBvYmplY3QgdHlw
ZSB0aGF0IGlzIG5vdCBub2V4Y2VwdCBkZXN0cnVjdGlibGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9y
LiIpOworCisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgT3B0aW9uYWwoKSBub2V4Y2VwdCB7
fQorICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmKSA9IGRlZmF1bHQ7
CisgICAgQUxXQVlTX0lOTElORSBPcHRpb25hbChPcHRpb25hbCYmKSA9IGRlZmF1bHQ7CisgICAg
QUxXQVlTX0lOTElORSB+T3B0aW9uYWwoKSA9IGRlZmF1bHQ7CisgICAgQUxXQVlTX0lOTElORSBj
b25zdGV4cHIgT3B0aW9uYWwoTnVsbG9wdFR5cGUpIG5vZXhjZXB0IHt9CisgICAgQUxXQVlTX0lO
TElORSBjb25zdGV4cHIgT3B0aW9uYWwoY29uc3QgdmFsdWVfdHlwZSYgX192KQorICAgICAgICA6
IF9fYmFzZShfX3YpIHt9CisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgT3B0aW9uYWwodmFs
dWVfdHlwZSYmIF9fdikKKyAgICAgICAgOiBfX2Jhc2UoV1RGTW92ZShfX3YpKSB7fQorCisgICAg
dGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzLAorICAgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmCisgICAgICAgICAgICAgICAgICAgICAgPAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGUsIF9BcmdzLi4uPjo6
dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCisgICAgICAgICAgICAgPgorICAg
IEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIKKyAgICBleHBsaWNpdCBPcHRpb25hbChJblBs
YWNlVHlwZSwgX0FyZ3MmJi4uLiBfX2FyZ3MpCisgICAgICAgIDogX19iYXNlKEluUGxhY2UsIHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLikge30KKworICAgIHRlbXBsYXRlIDxjbGFzcyBf
VXAsIGNsYXNzLi4uIF9BcmdzLAorICAgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmCisgICAgICAgICAgICAgICAgICAgICAgPAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGUsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxfVXA+JiwgX0FyZ3MuLi4+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgID46OnR5
cGUKKyAgICAgICAgICAgICA+CisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwcgorICAg
IGV4cGxpY2l0IE9wdGlvbmFsKEluUGxhY2VUeXBlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1Vw
PiBfX2lsLCBfQXJncyYmLi4uIF9fYXJncykKKyAgICAgICAgOiBfX2Jhc2UoSW5QbGFjZSwgX19p
bCwgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSB7fQorCisgICAgQUxXQVlTX0lOTElO
RQorICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFR5cGUpIG5vZXhjZXB0CiAgICAgewot
ICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIGlmICh0aGlzLT5fX2VuZ2FnZWRfKQorICAgICAg
ICB7CisgICAgICAgICAgICB0aGlzLT5fX3ZhbF8ufnZhbHVlX3R5cGUoKTsKKyAgICAgICAgICAg
IHRoaXMtPl9fZW5nYWdlZF8gPSBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShjb25zdCBPcHRpb25hbCYgb3Ro
ZXIpCisgICAgQUxXQVlTX0lOTElORQorICAgIE9wdGlvbmFsJgorICAgIG9wZXJhdG9yPShjb25z
dCBPcHRpb25hbCYgX19vcHQpCiAgICAgewotICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0g
ICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgZGVzdHJveSgpOwotICAgICAgICBp
ZiAob3RoZXIubV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFs
dWUpIFQoKm90aGVyLmFzUHRyKCkpOwotICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOwor
ICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXyA9PSBfX29wdC5fX2VuZ2FnZWRfKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAgICAgICAgICAgICAgICB0
aGlzLT5fX3ZhbF8gPSBfX29wdC5fX3ZhbF87CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAgICAgICAgICAgICAg
ICB0aGlzLT5fX3ZhbF8ufnZhbHVlX3R5cGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKSkgdmFsdWVf
dHlwZShfX29wdC5fX3ZhbF8pOworICAgICAgICAgICAgdGhpcy0+X19lbmdhZ2VkXyA9IF9fb3B0
Ll9fZW5nYWdlZF87CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oT3B0aW9uYWwmJiBvdGhlcikKKyAgICBBTFdBWVNfSU5M
SU5FCisgICAgT3B0aW9uYWwmCisgICAgb3BlcmF0b3I9KE9wdGlvbmFsJiYgX19vcHQpCisgICAg
ICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8dmFsdWVfdHlwZT46
OnZhbHVlICYmCisgICAgICAgICAgICAgICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVj
dGlibGU8dmFsdWVfdHlwZT46OnZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMgPT0gJm90
aGVyKQotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICAgIGRlc3Ryb3koKTsKLSAg
ICAgICAgaWYgKG90aGVyLm1faXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGws
ICZtX3ZhbHVlKSBUKFdURk1vdmUoKm90aGVyLmFzUHRyKCkpKTsKLSAgICAgICAgICAgIG1faXNF
bmdhZ2VkID0gdHJ1ZTsKKyAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8gPT0gX19vcHQuX19l
bmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisg
ICAgICAgICAgICAgICAgdGhpcy0+X192YWxfID0gV1RGTW92ZShfX29wdC5fX3ZhbF8pOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9f
ZW5nYWdlZF8pCisgICAgICAgICAgICAgICAgdGhpcy0+X192YWxfLn52YWx1ZV90eXBlKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVz
c29mKHRoaXMtPl9fdmFsXykpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUoV1RGTW92
ZShfX29wdC5fX3ZhbF8pKTsKKyAgICAgICAgICAgIHRoaXMtPl9fZW5nYWdlZF8gPSBfX29wdC5f
X2VuZ2FnZWRfOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIFQ+Ojp2
YWx1ZT46OnR5cGU+Ci0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShVJiYgdSkKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX1VwLAorICAgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmCisgICAgICAgICAgICAgICAgICAgICAgPAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPF9VcD46OnR5cGUsIHZh
bHVlX3R5cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Nv
bnN0cnVjdGlibGU8dmFsdWVfdHlwZSwgX1VwPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjppc19hc3NpZ25hYmxlPHZhbHVlX3R5cGUmLCBfVXA+Ojp2YWx1ZQorICAg
ICAgICAgICAgICAgICAgICAgID46OnR5cGUKKyAgICAgICAgICAgICA+CisgICAgQUxXQVlTX0lO
TElORQorICAgIE9wdGlvbmFsJgorICAgIG9wZXJhdG9yPShfVXAmJiBfX3YpCiAgICAgewotICAg
ICAgICBkZXN0cm95KCk7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoc3RkOjpm
b3J3YXJkPFU+KHUpKTsKLSAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOworICAgICAgICBpZiAo
dGhpcy0+X19lbmdhZ2VkXykKKyAgICAgICAgICAgIHRoaXMtPl9fdmFsXyA9IHN0ZDo6Zm9yd2Fy
ZDxfVXA+KF9fdik7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgOjpuZXco
KHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXykpIHZhbHVlX3R5cGUoc3RkOjpmb3J3
YXJkPF9VcD4oX192KSk7CisgICAgICAgICAgICB0aGlzLT5fX2VuZ2FnZWRfID0gdHJ1ZTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmdhZ2VkOyB9Ci0KLSAgICBjb25zdCBU
KiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0FyZ3MsCisgICAg
ICAgICAgICAgIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgICAgICAgICAgICAg
ICAgICAgICA8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJs
ZTx2YWx1ZV90eXBlLCBfQXJncy4uLj46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgPjo6
dHlwZQorICAgICAgICAgICAgID4KKyAgICBBTFdBWVNfSU5MSU5FCisgICAgdm9pZAorICAgIGVt
cGxhY2UoX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2Fn
ZWQpOwotICAgICAgICByZXR1cm4gYXNQdHIoKTsKKyAgICAgICAgKnRoaXMgPSBOdWxsb3B0Owor
ICAgICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKSkKKyAgICAg
ICAgICAgIHZhbHVlX3R5cGUoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKKyAgICAg
ICAgdGhpcy0+X19lbmdhZ2VkXyA9IHRydWU7CiAgICAgfQogCi0gICAgVCogb3BlcmF0b3ItPigp
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9VcCwgY2xhc3MuLi4gX0FyZ3MsCisgICAgICAgICAgICAg
IGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgICAgICAgICAgICAgICAgICAgICA8
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTx2YWx1ZV90
eXBlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1VwPiYsIF9BcmdzLi4uPjo6dmFsdWUKKyAgICAg
ICAgICAgICAgICAgICAgICA+Ojp0eXBlCisgICAgICAgICAgICAgPgorICAgIEFMV0FZU19JTkxJ
TkUKKyAgICB2b2lkCisgICAgZW1wbGFjZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1VwPiBfX2ls
LCBfQXJncyYmLi4uIF9fYXJncykKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7
Ci0gICAgICAgIHJldHVybiBhc1B0cigpOworICAgICAgICAqdGhpcyA9IE51bGxvcHQ7CisgICAg
ICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3ZhbF8pKQorICAgICAgICAg
ICAgdmFsdWVfdHlwZShfX2lsLCBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOworICAg
ICAgICB0aGlzLT5fX2VuZ2FnZWRfID0gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBUJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0gICAgVCYgb3BlcmF0b3IqKCkgeyBy
ZXR1cm4gdmFsdWUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUKKyAgICB2b2lkCisgICAgc3dhcChP
cHRpb25hbCYgX19vcHQpCisgICAgICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Nv
bnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgIF9faXNf
bm90aHJvd19zd2FwcGFibGU8dmFsdWVfdHlwZT46OnZhbHVlKQorICAgIHsKKyAgICAgICAgdXNp
bmcgc3RkOjpzd2FwOworICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXyA9PSBfX29wdC5fX2Vu
Z2FnZWRfKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAg
ICAgICAgICAgICAgICBzd2FwKHRoaXMtPl9fdmFsXywgX19vcHQuX192YWxfKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLT5fX2VuZ2Fn
ZWRfKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFk
ZHJlc3NvZihfX29wdC5fX3ZhbF8pKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlKFdU
Rk1vdmUodGhpcy0+X192YWxfKSk7CisgICAgICAgICAgICAgICAgdGhpcy0+X192YWxfLn52YWx1
ZV90eXBlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFs
XykpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUoV1RGTW92ZShfX29wdC5fX3ZhbF8p
KTsKKyAgICAgICAgICAgICAgICBfX29wdC5fX3ZhbF8ufnZhbHVlX3R5cGUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHN3YXAodGhpcy0+X19lbmdhZ2VkXywgX19vcHQuX19lbmdhZ2Vk
Xyk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBUJiB2YWx1ZSgpCisgICAgQUxXQVlTX0lOTElO
RQorICAgIGNvbnN0ZXhwcgorICAgIHZhbHVlX3R5cGUgY29uc3QqCisgICAgb3BlcmF0b3ItPigp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2FnZWQpOwotICAgICAgICByZXR1
cm4gKmFzUHRyKCk7CisgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwg
YXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRl
eHQuCisgICAgICAgIC8vIENPTlNURVhQUl9BU1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMtPl9fZW5n
YWdlZF8sICJPcHRpb25hbCBvcGVyYXRvci0+IGNhbGxlZCBmb3IgZGlzZW5nYWdlZCB2YWx1ZSIp
OworICAgICAgICByZXR1cm4gc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKTsKICAgICB9CiAK
LSAgICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORQorICAgIHZhbHVl
X3R5cGUqCisgICAgb3BlcmF0b3ItPigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2Fn
ZWQpOwotICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UodGhpcy0+X19lbmdhZ2VkXywgIk9wdGlvbmFsIG9wZXJhdG9yLT4gY2FsbGVkIGZvciBkaXNl
bmdhZ2VkIHZhbHVlIik7CisgICAgICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3Zh
bF8pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2YWx1ZU9yKFUm
JiB2YWx1ZSkgY29uc3QKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgY29uc3RleHByCisgICAgY29u
c3QgdmFsdWVfdHlwZSYKKyAgICBvcGVyYXRvciooKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYg
KG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgICAgICAvLyBG
SVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBi
ZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgICAgICAvLyBDT05TVEVYUFJf
QVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzLT5fX2VuZ2FnZWRfLCAiT3B0aW9uYWwgb3BlcmF0b3Iq
IGNhbGxlZCBmb3IgZGlzZW5nYWdlZCB2YWx1ZSIpOworICAgICAgICByZXR1cm4gdGhpcy0+X192
YWxfOworICAgIH0KIAotICAgICAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsKKyAg
ICBBTFdBWVNfSU5MSU5FCisgICAgdmFsdWVfdHlwZSYKKyAgICBvcGVyYXRvciooKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzLT5fX2VuZ2FnZWRfLCAiT3B0aW9uYWwg
b3BlcmF0b3IqIGNhbGxlZCBmb3IgZGlzZW5nYWdlZCB2YWx1ZSIpOworICAgICAgICByZXR1cm4g
dGhpcy0+X192YWxfOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2
YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25zdAorICAgIEFMV0FZU19JTkxJTkUKKyAgICBj
b25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5vZXhjZXB0IHtyZXR1cm4g
dGhpcy0+X19lbmdhZ2VkXzt9CisKKwlOT19SRVRVUk4gQUxXQVlTX0lOTElORQorCWNvbnN0ZXhw
ciB2b2lkIF9fdGhyb3dfYmFkX29wdGlvbmFsX2FjY2VzcygpIGNvbnN0CisJeworICAgICAgICBz
dGQ6OmFib3J0KCk7CisJfQorCisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwciB2YWx1
ZV90eXBlIGNvbnN0JiB2YWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9pc0VuZ2Fn
ZWQpCi0gICAgICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAgICAgIGlmICghdGhpcy0+X19l
bmdhZ2VkXykKKyAgICAgICAgICAgIF9fdGhyb3dfYmFkX29wdGlvbmFsX2FjY2VzcygpOworICAg
ICAgICByZXR1cm4gdGhpcy0+X192YWxfOworICAgIH0KIAotICAgICAgICByZXR1cm4gY2FsbGJh
Y2soKTsKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgdmFsdWVfdHlwZSYgdmFsdWUoKQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLT5fX2VuZ2FnZWRfKQorICAgICAgICAgICAgX190aHJvd19iYWRf
b3B0aW9uYWxfYWNjZXNzKCk7CisgICAgICAgIHJldHVybiB0aGlzLT5fX3ZhbF87CiAgICAgfQog
Ci1wcml2YXRlOgotICAgIGNvbnN0IFQqIGFzUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUKj4oJm1fdmFsdWUpOyB9Ci0gICAgVCogYXNQdHIoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQqPigmbV92YWx1ZSk7IH0KLSAgICB2b2lkIGRlc3Ryb3koKQorICAg
IHRlbXBsYXRlIDxjbGFzcyBfVXA+CisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwciB2
YWx1ZV90eXBlIHZhbHVlX29yKF9VcCYmIF9fdikgY29uc3QmCiAgICAgewotICAgICAgICBpZiAo
bV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIGFzUHRyKCktPn5UKCk7Ci0gICAgICAgICAgICBt
X2lzRW5nYWdlZCA9IGZhbHNlOwotICAgICAgICB9CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19jb3B5X2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICJPcHRpb25hbDxUPjo6dmFsdWVfb3I6IFQgbXVzdCBiZSBjb3B5IGNvbnN0cnVj
dGlibGUiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnZlcnRpYmxlPF9VcCwg
dmFsdWVfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICJPcHRpb25hbDxUPjo6
dmFsdWVfb3I6IFUgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBUIik7CisgICAgICAgIHJldHVybiB0
aGlzLT5fX2VuZ2FnZWRfID8gdGhpcy0+X192YWxfIDoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihzdGQ6OmZvcndhcmQ8X1VwPihfX3Yp
KTsKICAgICB9CiAKLSAgICBib29sIG1faXNFbmdhZ2VkOwotICAgIHR5cGVuYW1lIHN0ZDo6YWxp
Z25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlw
ZSBtX3ZhbHVlOworICAgIHRlbXBsYXRlIDxjbGFzcyBfVXA+CisgICAgQUxXQVlTX0lOTElORQor
ICAgIHZhbHVlX3R5cGUgdmFsdWVfb3IoX1VwJiYgX192KSAmJgorICAgIHsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlPjo6dmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICAgIk9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjogVCBtdXN0IGJl
IG1vdmUgY29uc3RydWN0aWJsZSIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29u
dmVydGlibGU8X1VwLCB2YWx1ZV90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
Ik9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjogVSBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIFQiKTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMtPl9fZW5nYWdlZF8gPyBXVEZNb3ZlKHRoaXMtPl9fdmFsXykgOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+
KHN0ZDo6Zm9yd2FyZDxfVXA+KF9fdikpOworICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNv
bnN0IE9wdGlvbmFsPFQ+JiByaHMpCisvLyBDb21wYXJpc29ucyBiZXR3ZWVuIG9wdGlvbmFscwor
dGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3Bl
cmF0b3I9PShjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9f
eSkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obGhzKSA9PSBzdGF0aWNfY2FzdDxi
b29sPihyaHMpICYmICghc3RhdGljX2Nhc3Q8Ym9vbD4obGhzKSB8fCBsaHMudmFsdWUoKSA9PSBy
aHMudmFsdWUoKSk7CisgICAgaWYgKHN0YXRpY19jYXN0PGJvb2w+KF9feCkgIT0gc3RhdGljX2Nh
c3Q8Ym9vbD4oX195KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghc3RhdGljX2Nh
c3Q8Ym9vbD4oX194KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuICpfX3ggPT0g
Kl9feTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgT3B0aW9uYWw8VD4mIGxocywgY29uc3QgT3B0aW9uYWw8VD4mIHJocykKK3RlbXBs
YXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9y
IT0oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3kpCiB7
Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7CisgICAgcmV0dXJuICEoX194ID09IF9feSk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE9wdGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxX
QVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8X1Rw
PiYgX194LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3kpCiB7Ci0gICAgcmV0dXJuICFvcHQ7Cisg
ICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihfX3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihfX3gpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gKl9feCA8ICpfX3k7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcpCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVy
YXRvcj4oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3kp
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG9wdCk7CisgICAgcmV0dXJuIF9feSA8
IF9feDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0oTnVsbG9wdFRhZywgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBf
VHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPD0oY29uc3QgT3B0
aW9uYWw8X1RwPiYgX194LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3kpCiB7Ci0gICAgcmV0dXJu
ICFvcHQ7CisgICAgcmV0dXJuICEoX195IDwgX194KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oTnVsbG9wdFRhZywgY29uc3QgT3B0aW9uYWw8
VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIK
K2Jvb2wKK29wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25zdCBPcHRpb25h
bDxfVHA+JiBfX3kpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG9wdCk7CisgICAg
cmV0dXJuICEoX194IDwgX195KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwgY29uc3QgVCYgdmFsdWUp
CisKKy8vIENvbXBhcmlzb25zIHdpdGggTnVsbG9wdAordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FM
V0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxf
VHA+JiBfX3gsIE51bGxvcHRUeXBlKSBub2V4Y2VwdAogewotICAgIHJldHVybiBvcHQgJiYgb3B0
LnZhbHVlKCkgPT0gdmFsdWU7CisgICAgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPihfX3gpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBPcHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBfVHA+
CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPT0oTnVsbG9wdFR5cGUs
IGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCkgbm9leGNlcHQKIHsKLSAgICByZXR1cm4gIShvcHQg
PT0gdmFsdWUpOworICAgIHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdmFs
dWUsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlT
X0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPF9UcD4m
IF9feCwgTnVsbG9wdFR5cGUpIG5vZXhjZXB0CiB7Ci0gICAgcmV0dXJuIG9wdCAmJiBvcHQudmFs
dWUoKSA9PSB2YWx1ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYg
dmFsdWUsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxX
QVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvciE9KE51bGxvcHRUeXBlLCBjb25z
dCBPcHRpb25hbDxfVHA+JiBfX3gpIG5vZXhjZXB0CiB7Ci0gICAgcmV0dXJuICEodmFsdWUgPT0g
b3B0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLU9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+Ci1tYWtl
T3B0aW9uYWwoVCYmIHZhbHVlKQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUK
K2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPF9UcD4mLCBOdWxsb3B0
VHlwZSkgbm9leGNlcHQKIHsKLSAgICByZXR1cm4gT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNh
eTxUPjo6dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29s
CitvcGVyYXRvcjwoTnVsbG9wdFR5cGUsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCkgbm9leGNl
cHQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8PShj
b25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIE51bGxvcHRUeXBlKSBub2V4Y2VwdAoreworICAgIHJl
dHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4K
K0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8PShOdWxsb3B0VHlwZSwg
Y29uc3QgT3B0aW9uYWw8X1RwPiYgX194KSBub2V4Y2VwdAoreworICAgIHJldHVybiB0cnVlOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29s
CitvcGVyYXRvcj4oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBOdWxsb3B0VHlwZSkgbm9leGNl
cHQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I+KE51
bGxvcHRUeXBlLCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpIG5vZXhjZXB0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29u
c3RleHByCitib29sCitvcGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPF9UcD4mLCBOdWxsb3B0VHlw
ZSkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9U
cD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I+PShOdWxsb3B0VHlw
ZSwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KSBub2V4Y2VwdAoreworICAgIHJldHVybiAhc3Rh
dGljX2Nhc3Q8Ym9vbD4oX194KTsKK30KKworLy8gQ29tcGFyaXNvbnMgd2l0aCBUCit0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj09
KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgX1RwJiBfX3YpCit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAqX194ID09IF9fdiA6IGZhbHNlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRv
cj09KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAqX194ID09IF9fdiA6IGZhbHNlOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVy
YXRvciE9KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgX1RwJiBfX3YpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAhKCpfX3ggPT0gX192KSA6IHRydWU7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wK
K29wZXJhdG9yIT0oY29uc3QgX1RwJiBfX3YsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KSA/ICEoKl9feCA9PSBfX3YpIDogdHJ1
ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgor
Ym9vbAorb3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgX1RwJiBfX3Yp
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyBzdGQ6Omxlc3M8X1RwPnt9
KCpfX3gsIF9fdikgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lO
TElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjwoY29uc3QgX1RwJiBfX3YsIGNvbnN0IE9w
dGlvbmFsPF9UcD4mIF9feCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KSA/
IHN0ZDo6bGVzczxfVHA+e30oX192LCAqX194KSA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjw9KGNvbnN0
IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgX1RwJiBfX3YpCit7CisgICAgcmV0dXJuICEoX194
ID4gX192KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0
ZXhwcgorYm9vbAorb3BlcmF0b3I8PShjb25zdCBfVHAmIF9fdiwgY29uc3QgT3B0aW9uYWw8X1Rw
PiYgX194KQoreworICAgIHJldHVybiAhKF9fdiA+IF9feCk7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPihjb25zdCBP
cHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxib29sPihfX3gpID8gX192IDwgX194IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPihjb25zdCBf
VHAmIF9fdiwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KQoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxib29sPihfX3gpID8gX194IDwgX192IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNz
IF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I+PShjb25zdCBP
cHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQoreworICAgIHJldHVybiAhKF9feCA8
IF9fdik7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4
cHIKK2Jvb2wKK29wZXJhdG9yPj0oY29uc3QgX1RwJiBfX3YsIGNvbnN0IE9wdGlvbmFsPF9UcD4m
IF9feCkKK3sKKyAgICByZXR1cm4gIShfX3YgPCBfX3gpOworfQorCisKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitBTFdBWVNfSU5MSU5FCit2b2lkCitzd2FwKE9wdGlvbmFsPF9UcD4mIF9feCwgT3B0
aW9uYWw8X1RwPiYgX195KSBub2V4Y2VwdChub2V4Y2VwdChfX3guc3dhcChfX3kpKSkKK3sKKyAg
ICBfX3guc3dhcChfX3kpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElO
RQorY29uc3RleHByCitPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PF9UcD46OnR5cGU+Citt
YWtlT3B0aW9uYWwoX1RwJiYgX192KQoreworICAgIHJldHVybiBPcHRpb25hbDx0eXBlbmFtZSBz
dGQ6OmRlY2F5PF9UcD46OnR5cGU+KHN0ZDo6Zm9yd2FyZDxfVHA+KF9fdikpOworfQorCisvLyAt
LSBXZWJLaXQgQWRkaXRpb25zIC0tCit0ZW1wbGF0ZSA8Y2xhc3MgT3B0aW9uYWxUeXBlLCBjbGFz
cyBDYWxsYmFjaz4KK0FMV0FZU19JTkxJTkUKK2F1dG8gdmFsdWVPckNvbXB1dGUoT3B0aW9uYWxU
eXBlIG9wdGlvbmFsLCBDYWxsYmFjayBjYWxsYmFjaykgLT4gdHlwZW5hbWUgT3B0aW9uYWxUeXBl
Ojp2YWx1ZV90eXBlCit7CisgICAgaWYgKG9wdGlvbmFsKQorICAgICAgICByZXR1cm4gKm9wdGlv
bmFsOworICAgIHJldHVybiBjYWxsYmFjaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAor
bmFtZXNwYWNlIHN0ZCB7CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgaGFzaDxXVEY6
Ok9wdGlvbmFsPF9UcD4gPgoreworICAgIHR5cGVkZWYgV1RGOjpPcHRpb25hbDxfVHA+IGFyZ3Vt
ZW50X3R5cGU7CisgICAgdHlwZWRlZiBzaXplX3QgICAgICAgIHJlc3VsdF90eXBlOworCisgICAg
QUxXQVlTX0lOTElORQorICAgIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoY29uc3QgYXJndW1lbnRf
dHlwZSYgX19vcHQpIGNvbnN0IG5vZXhjZXB0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oX19vcHQpID8gaGFzaDxfVHA+KCkoKl9fb3B0KSA6IDA7CisgICAgfQorfTsK
KworfSAvLyBuYW1lc3BhY2Ugc3RkCisKIHVzaW5nIFdURjo6SW5QbGFjZTsKIHVzaW5nIFdURjo6
TnVsbG9wdDsKIHVzaW5nIFdURjo6T3B0aW9uYWw7CiB1c2luZyBXVEY6Om1ha2VPcHRpb25hbDsK
LQotI2VuZGlmIC8vIE9wdGlvbmFsX2gKK3VzaW5nIFdURjo6dmFsdWVPckNvbXB1dGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDhi
ZjgyOWRmMGU0OTllZmVkY2E3MThkNzE3NDQ1ZGYwZGVhNjJiMTcuLjIxOGRlMTZhNjZjMDlhMTVh
NDNlYjM0MmM3MzY4MWNjZjg0Yjc3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBGZXRjaEJv
ZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNv
bnN1bWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9ibG9iTG9hZGVyID0geyAq
dGhpcyB9OworICAgIG1fYmxvYkxvYWRlci5lbXBsYWNlKCp0aGlzKTsKICAgICBtX2Jsb2JMb2Fk
ZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIs
IGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuaAppbmRleCBhMTM4Njk3ODIxNDAwNzIyZDdlY2EyYzcyNmQ1ODAxYTgz
NDFmOTg4Li5lMzgwNWU4ZTEyNzlhYjUxMmFhYjIzODBiNGUwZDkxMjhkOGNkYTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC04NCw2ICs4
NCw4IEBAIGNsYXNzIEZldGNoQm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5
T3duZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmlu
YWwgOiBGZXRjaExvYWRlckNsaWVudCB7CiAgICAgICAgIEJsb2JMb2FkZXIoRmV0Y2hCb2R5T3du
ZXImKTsKIAorICAgICAgICB2b2lkIHN3YXAoQmxvYkxvYWRlciYpOworCiAgICAgICAgIC8vIEZl
dGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRh
dGEsIHNpemUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCAwMmUzMTM1MGYyNmUwYzliMTg1MjRjZDQyNDlkYmI4NjcyNDI3Njk3Li44
NmUyNGFkOTQ0ZDU4MzFkNGYyNzI4NWRlMTQwYjM3M2Y4MDU1MWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdAogICAgIC8vIFNldHRpbmcgcGVuZGluZyBhY3Rpdml0
eSB1bnRpbCBCb2R5TG9hZGVyIGRpZEZhaWwgb3IgZGlkU3VjY2VlZCBjYWxsYmFjayBpcyBjYWxs
ZWQuCiAgICAgcmVzcG9uc2UtPnNldFBlbmRpbmdBY3Rpdml0eShyZXNwb25zZS5wdHIoKSk7CiAK
LSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gQm9keUxvYWRlcihyZXNwb25zZS5nZXQoKSwg
V1RGTW92ZShwcm9taXNlKSk7CisgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlci5lbXBsYWNlKHJl
c3BvbnNlLmdldCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICBpZiAoIXJlc3BvbnNlLT5tX2Jv
ZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNwb25zZS0+bV9i
b2R5TG9hZGVyID0gTnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggOWNmZjdhMmNlZGQ3
YTZkNzg5ODQ5YWNlMmIxOGI3ZDQ2ZGUzMTkwNi4uZGQ5ZjE0ZmZhMTQ5MzYxMWQwMTY2MWJjYTdh
N2Y4ODkyOTdhYmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3Mg
SURCRGF0YWJhc2VJZGVudGlmaWVyIHsKICAgICAgICAgdW5zaWduZWQgbWFpbkZyYW1lUHJvdG9j
b2xIYXNoID0gU3RyaW5nSGFzaDo6aGFzaChtX21haW5GcmFtZU9yaWdpbi5wcm90b2NvbCk7CiAg
ICAgICAgIHVuc2lnbmVkIG1haW5GcmFtZUhvc3RIYXNoID0gU3RyaW5nSGFzaDo6aGFzaChtX21h
aW5GcmFtZU9yaWdpbi5ob3N0KTsKICAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rl
c1s3XSA9IHsgbmFtZUhhc2gsIG9wZW5pbmdQcm90b2NvbEhhc2gsIG9wZW5pbmdIb3N0SGFzaCwg
bV9vcGVuaW5nT3JpZ2luLnBvcnQudmFsdWVPcigwKSwgbWFpbkZyYW1lUHJvdG9jb2xIYXNoLCBt
YWluRnJhbWVIb3N0SGFzaCwgbV9tYWluRnJhbWVPcmlnaW4ucG9ydC52YWx1ZU9yKDApIH07Cisg
ICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s3XSA9IHsgbmFtZUhhc2gsIG9wZW5pbmdQcm90b2Nv
bEhhc2gsIG9wZW5pbmdIb3N0SGFzaCwgbV9vcGVuaW5nT3JpZ2luLnBvcnQudmFsdWVfb3IoMCks
IG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1lSG9zdEhhc2gsIG1fbWFpbkZyYW1lT3Jp
Z2luLnBvcnQudmFsdWVfb3IoMCkgfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFz
aE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggMWM0NDBi
OGE2NmNhNmRjMDUwZDEyY2MxMTk2NWE2ODEwNjI2OGU5OS4uZjYyYWRiYmZjZDM1Mzc0NDgzNDQy
ZWRhYzNkODIxMWUwYjU3NGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElE
Qk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnQKICAgICBpZiAodmVyc2lvbiAmJiAhdmVyc2lvbi52YWx1ZSgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIklEQkZhY3Rvcnkub3Blbigp
IGNhbGxlZCB3aXRoIGEgdmVyc2lvbiBvZiAwIikgfTsKIAotICAgIHJldHVybiBvcGVuSW50ZXJu
YWwoY29udGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gb3Blbklu
dGVybmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVfb3IoMCkpOwogfQogCiBFeGNlcHRp
b25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVk
IGxvbmcgbG9uZyB2ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggZjdiYzdkMzljZGNlYTRlNjRjNDVkYjg0
M2JhNWQzOTAxYTUzNTJjMy4uY2MxMjk3YTc1ZjQyYjAzY2UxMDNhNzI3ZDZlNzRiMGY5ZTg2OTM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RUTUZT
ZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgT3B0aW9uYWw8aW50PiBkCiAg
ICAgaWYgKGludGVyVG9uZUdhcCAmJiBpbnRlclRvbmVHYXAudmFsdWUoKSA8IG1pbkludGVyVG9u
ZUdhcE1zKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCi0gICAg
bV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZhbHVlT3IoZGVmYXVsdFRvbmVEdXJhdGlvbk1zKTsKLSAg
ICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1ZU9yKGRlZmF1bHRJbnRlclRvbmVH
YXBNcyk7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZhbHVlX29yKGRlZmF1bHRUb25lRHVy
YXRpb25Ncyk7CisgICAgbV9pbnRlclRvbmVHYXAgPSBpbnRlclRvbmVHYXAudmFsdWVfb3IoZGVm
YXVsdEludGVyVG9uZUdhcE1zKTsKIAogICAgIGlmICghbV9oYW5kbGVyLT5pbnNlcnREVE1GKHRv
bmVzLCBtX2R1cmF0aW9uLCBtX2ludGVyVG9uZUdhcCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTWU5UQVhfRVJSIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZS5oCmluZGV4IDI0MTI3MWY2NjhiNWRmZDhjZjhmMDBlYWM3NTViYzgzZTJiNzdlNWEuLmY3ZjZi
ZmRmZjVjY2Y4MmRlZGVkZjc4N2M2NmU0MDRkNTI4OTM5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC0yMDIsMTEgKzIwMiwxNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVmFsdWU+CiBjbGFzcyBET01Qcm9taXNlIHsKIHB1YmxpYzoKICAgICBET01Qcm9t
aXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpIDogbV9wcm9taXNlRGVm
ZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpIHsgfQorICAgIERPTVByb21pc2UoY29uc3Qg
RE9NUHJvbWlzZSYgb3RoZXIpCisgICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQob3RoZXIubV9w
cm9taXNlRGVmZXJyZWQuY29weVJlZigpKQorICAgIHsKKyAgICB9CisgICAgRE9NUHJvbWlzZShE
T01Qcm9taXNlJiYpID0gZGVmYXVsdDsKIAotICAgIERPTVByb21pc2UoRE9NUHJvbWlzZSYmIHBy
b21pc2UpIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVy
cmVkKSkgeyB9Ci0KLSAgICBET01Qcm9taXNlKGNvbnN0IERPTVByb21pc2UmKSA9IGRlZmF1bHQ7
Ci0gICAgRE9NUHJvbWlzZSYgb3BlcmF0b3I9KERPTVByb21pc2UgY29uc3QmKSA9IGRlZmF1bHQ7
CisgICAgRE9NUHJvbWlzZSYgb3BlcmF0b3I9KERPTVByb21pc2Ugb3RoZXIpCisgICAgeworICAg
ICAgICBzd2FwKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAgIHZv
aWQgcmVzb2x2ZSh0eXBlbmFtZSBQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFZhbHVlPjo6VHlwZSB2
YWx1ZSkgeyBtX3Byb21pc2VEZWZlcnJlZC0+cmVzb2x2ZSh2YWx1ZSk7IH0KIApAQCAtMjE1LDYg
KzIyMSwxMSBAQCBjbGFzcyBET01Qcm9taXNlIHsKICAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7IH07CiAKIHByaXZh
dGU6CisgICAgdm9pZCBzd2FwKERPTVByb21pc2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgc3Rk
Ojpzd2FwKG1fcHJvbWlzZURlZmVycmVkLCBvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7CisgICAg
fQorCiAgICAgUmVmPERlZmVycmVkUHJvbWlzZT4gbV9wcm9taXNlRGVmZXJyZWQ7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhNQUMuY3BwCmluZGV4IGVkMTg2ZDcyMjdlY2UwN2I3MzJlMjE1N2UwYzExNjczOGYyZjc2
YmYuLjJhNjZkMTk0N2FkZWM2ZWExZDZmN2QwZGM4OGZmMjdhYWMzNGJkMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJh
dGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVy
YXRlKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNo
SWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgYXV0byByZXN1bHQgPSBDcnlw
dG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGht
YWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBp
ZiAoIXJlc3VsdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CmluZGV4IDQ5MmM3NTQ3ZTg4MjkyYWQ0ZDkxYTgwZDYyYzkwZWU5YjkzYTFiZDMuLmY3ZDU5Zjdm
YWFlNzQxYWZiZTk0YjM1ZGFiNjg4OWEzZGZmZDQ0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0
PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlw
ZSkgY29uCiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoVW5pdFR5cGVz
IHVuaXRUeXBlKSBjb25zdAogewotICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRU
eXBlKS52YWx1ZU9yKDApOworICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBl
KS52YWx1ZV9vcigwKTsKIH0KIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggYWZhMzY2NjRi
MjQ2NDFhNzYzZTQ4ZjJkMjg3Y2MxZjVhZDE4YzVjZS4uYjZiYTIyMWQyNmRiZjc3MWQ0NTI1MzE4
ZTNkMjAzMmQzZmE3ZTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAt
MzM0LDcgKzMzNCw3IEBAIEV4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0CiAgICAgaWYgKCFzdHlsZS5p
c0VtcHR5KCkpCiAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CiAgICAgdGV4dC5hcHBlbmQoJ30n
KTsKLSAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmco
KSwgaW5kZXgudmFsdWVPcihsZW5ndGgoKSkpOworICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9
IGluc2VydFJ1bGUodGV4dC50b1N0cmluZygpLCBpbmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOwog
ICAgIGlmIChpbnNlcnRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
aW5zZXJ0UnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggM2M3YzhkMTViNGQxM2Q1MThjYjM4ZGZiOWNlYjQxNTJjZTY2ZTc2YS4uMzVk
MmNmNjUxMmI2YWJjZDU3Y2FhN2RlNzAwZTdkODk2N2VmODQ1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtNjg3LDcgKzY4Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5v
dFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUpCiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xs
QnkoY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBzY3JvbGxC
eShvcHRpb25zLmxlZnQudmFsdWVPcigwKSwgb3B0aW9ucy50b3AudmFsdWVPcigwKSk7CisgICAg
cmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZV9vcigwKSwgb3B0aW9ucy50b3AudmFs
dWVfb3IoMCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxpemVOb25GaW5pdGVW
YWx1ZShkb3VibGUgZikKQEAgLTMwMjgsNyArMzAyOCw3IEBAIFVSTCBFbGVtZW50OjpnZXROb25F
bXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiBpbnQg
RWxlbWVudDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlSFRNTEludGVn
ZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBF
bGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBpbnQgdmFsdWUpCkBAIC0zMDM4LDcgKzMwMzgsNyBAQCB2b2lkIEVsZW1lbnQ6OnNl
dEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGlu
dCB2YWx1ZQogCiB1bnNpZ25lZCBFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkp
LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihnZXRB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIEVsZW1lbnQ6
OnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgdW5zaWduZWQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5jcHAKaW5kZXggZjE3MDAxZmIyNjliYmMxOWJjODYyNzRlNTdmMmQ1NWFmMWM2ZGY0ZC4uMzI1
NTc5ZGNjNDMwZjdmYWZkNzAxOThjMmRlOGM3ZTcxMGM2ZGI3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtODAsOSArODAsOSBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IEluaXQmIGluaXQp
CiAgICAgICAgIG9wdGlvbnMgfD0gQ2hpbGRMaXN0OwogICAgIGlmIChpbml0LnN1YnRyZWUpCiAg
ICAgICAgIG9wdGlvbnMgfD0gU3VidHJlZTsKLSAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1
ZS52YWx1ZU9yKGZhbHNlKSkKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZV9v
cihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlT2xkVmFsdWU7Ci0gICAgaWYg
KGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQorICAgIGlmIChpbml0
LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMg
fD0gQ2hhcmFjdGVyRGF0YU9sZFZhbHVlOwogCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGF0
dHJpYnV0ZUZpbHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCBlYzdj
YzQxMDQxMjM1YWY1ZmNiOTk2MTg0Nzc2OWQzZTU3ZjhhMTE0Li5hNDI3ZDBiMzA0ZmY2NDZjZTJi
MTllMGE0YTNkMWE4ZDQ2YmJiMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVRva2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3Bw
CkBAIC0xNDIsNyArMTQyLDcgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gRE9NVG9rZW5MaXN0Ojp0b2dn
bGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgT3B0aW9uYWw8Ym9vbD4KICAgICBhdXRvJiB0
b2tlbnMgPSB0aGlzLT50b2tlbnMoKTsKIAogICAgIGlmICh0b2tlbnMuY29udGFpbnModG9rZW4p
KSB7Ci0gICAgICAgIGlmICghZm9yY2UudmFsdWVPcihmYWxzZSkpIHsKKyAgICAgICAgaWYgKCFm
b3JjZS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAgICAgICAgIHRva2Vucy5yZW1vdmVGaXJzdCh0
b2tlbik7CiAgICAgICAgICAgICB1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2Vucygp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggZjQwM2YyMzA1MWIwMjA2YTIzZTNiODY1N2M3NTNlMDcwYjcyYTk3
ZS4uYjVkMWJjMzNlYzFhZWIzNzY1YjUzZTE3NzRkNTZjNThlYzM1NGE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OmlzRW1wdHlWYWx1ZSgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKIHsKICAgICB1bnNpZ25lZCBvbGRFZmZlY3RpdmVNYXhMZW5ndGggPSBlZmZlY3RpdmVN
YXhMZW5ndGgoKTsKLSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2
ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1heExlbmd0
aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAg
ICAgaWYgKG9sZEVmZmVjdGl2ZU1heExlbmd0aCAhPSBlZmZlY3RpdmVNYXhMZW5ndGgoKSkKICAg
ICAgICAgdXBkYXRlVmFsdWVJZk5lZWRlZCgpOwogCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSkKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWluTGVuZ3RoQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGludCBvbGRN
aW5MZW5ndGggPSBtaW5MZW5ndGgoKTsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhU
TUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5h
bFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVl
X29yKC0xKSk7CiAgICAgaWYgKG9sZE1pbkxlbmd0aCAhPSBtaW5MZW5ndGgoKSkKICAgICAgICAg
dXBkYXRlVmFsdWVJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcAppbmRleCAxZmRiYzUxODRhYjY3NmM1MzVkNTJlNDJkMGVjMzA5NjQwNTJl
NDY0Li5iY2ViNTlhNmY4NTllNWUwYTY0YjYzOWJmNWExMzIyOWM1MmU5YWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTIwNSwxMyArMjA1LDEz
IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljCiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6
bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQog
ewotICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihu
ZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVW
YWxpZGl0eSgpOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5h
bFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVl
T3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKaW5kZXggMjVkOWIyYmU2ZjlmMzUzZjA5MzlmZWVjOGYyYTJiOWEzMGI5
ZGY1MS4uN2E3ZTcxODVlYmE2MjdjYmFjNjgxY2IxZmY5NjdiOTRiYTliNGQxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6aXNQb2ludEluUGF0aEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgsCiAgICAg
aWYgKCFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3Jt
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50
KHgsIHkpKTsKKyAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0
UG9pbnQoeCwgeSkpOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQu
eCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTExMzEsNyArMTEzMSw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4
CiAgICAgaWYgKCFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9h
dFBvaW50KHgsIHkpKTsKKyAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgp
LnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50
KEZsb2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBv
aW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuaAppbmRleCAzZTc5ODlkN2NhY2YxYmRiMTczNjdjOGRhODdkYmVjM2IxMGY3YWFm
Li4wYmM4YjA3OWM0OGNmYTdkNmQyZTBiMTAxOWU1NjgyNzc1OWVkY2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0xNTQsNyArMTU0LDcg
QEAgaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHVuc2lnbmVkIHZh
bHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUKIGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhU
TUxOb25OZWdhdGl2ZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFs
dWUgPSAwKQogewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcik7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVn
ZXIoc3RyaW5nVmFsdWUpLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsKKyAgICB1bnNpZ25lZCB2YWx1
ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSkudmFsdWVfb3IoZGVm
YXVsdFZhbHVlKTsKICAgICBBU1NFUlQodmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cik7CiAgICAgcmV0dXJuIHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAxMWE0OGQ3M2NhMzc4ZmI1NGE4ZWVk
ZDg4ZTZjNzY4YTIzZjkwZTEyLi5iYWUxZmIyOTZhODJjYTQwN2RjMmQyZjE1ZDEyNjBlYjM0MmU3
YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KFJlc291cmNlUmVxdWVzCiB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVz
dFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBpZiAobV9h
c3luYykgewotICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBDcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXIoKnRoaXMsIFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBtX3ByZWZsaWdodENo
ZWNrZXIuZW1wbGFjZSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1fcHJlZmxp
Z2h0Q2hlY2tlci0+c3RhcnRQcmVmbGlnaHQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGI5ZWY2ZTA5ZTdiMzgwMDc5Y2U4
ZTdjNzFmYTZkZmNlMWQzMDM2MGYuLmE5OGFkYmZkNDIyZTM5OTZiODgxY2Q0ZTNiNzA2NzQyMWZh
NDNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzQ2LDcgKzM0
Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIHJlcXVlc3QpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVu
dCwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBPcHRp
b25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9taWNTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlKQogewotICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0Zy
YW1lT3BlbmVyUG9saWN5ID0gb3BlbmVyUG9saWN5LnZhbHVlT3Ioc2hvdWxkU2VuZFJlZmVycmVy
ID09IE5ldmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDog
TmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBu
ZXdGcmFtZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihzaG91bGRTZW5kUmVm
ZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJl
c3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOwogICAgIHVybFNlbGVjdGVkKEZyYW1l
TG9hZFJlcXVlc3QobV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJj
ZVJlcXVlc3QodXJsKSwgcGFzc2VkVGFyZ2V0LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJk
TGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olll
cywgbmV3RnJhbWVPcGVuZXJQb2xpY3ksIERvTm90UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0
VVJMLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBkb3dubG9hZEF0dHJpYnV0ZSksIHRy
aWdnZXJpbmdFdmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAzYTJm
NzU5MDM3NTk2N2ZkYmVkNzFkMGU0MjNiMmQ3Mjc4MzJkMmFjLi45MTBhNTBiNzdhZjAzZGUyNzNj
MzE5MGNlNjc4MzdjYmU3N2M5ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0x
NDk1LDcgKzE0OTUsNyBAQCBkb3VibGUgRE9NV2luZG93OjpkZXZpY2VQaXhlbFJhdGlvKCkgY29u
c3QKIAogdm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0
aW9ucykgY29uc3QKIHsKLSAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlT3Io
MCksIG9wdGlvbnMudG9wLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25z
LmxlZnQudmFsdWVfb3IoMCksIG9wdGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAogdm9pZCBE
T01XaW5kb3c6OnNjcm9sbEJ5KGRvdWJsZSB4LCBkb3VibGUgeSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggZTM1YTIzN2U0ZDgzM2M1MmM1MDBlZjY1ZDhm
NTBjZjI1MDRmZDI0My4uMWNjNzhlNmY1Y2E1YWU2NmY0NWZiY2QzMTVhYjMzZTkzZjQ5MmM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU3Miw3ICs1NzIsNyBA
QCBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChlbmNvZGVGb3JGaWxlTmFtZShtX2hvc3QpKTsKICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVt
YmVyKG1fcG9ydC52YWx1ZU9yKDApKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlciht
X3BvcnQudmFsdWVfb3IoMCkpOwogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBi
NWQ4OTliZWExZWI4MTVjYjAzMGVhMGMyMDQ5MTcyZWE3OTM0NmUyLi4xOTg3YmNiMDk2ZWM3OGRj
NmJkY2ZiOTVhMzBlN2U4YzNmMWM0YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYK
ICNpZiAhTE9HX0RJU0FCTEVECiBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0
LCAiOiIsIFN0cmluZzo6bnVtYmVyKHBvcnQudmFsdWVPcigwKSkpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZh
bHVlX29yKDApKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5IYXNoLmgKaW5kZXggNTBlYjI5NTZmMjNiN2NmMTJlY2I5MGNmNzZmZDhiOTgxZWEzYjU1YS4u
YjdhNWFlZmVkYTFiNmRlZmQ3MmE5YmU3YzZiYTIwNjJlMWJkMmQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBTZWN1
cml0eU9yaWdpbkhhc2ggewogICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAg
ICAgICAgICBvcmlnaW4tPnByb3RvY29sKCkuaW1wbCgpID8gb3JpZ2luLT5wcm90b2NvbCgpLmlt
cGwoKS0+aGFzaCgpIDogMCwKICAgICAgICAgICAgIG9yaWdpbi0+aG9zdCgpLmltcGwoKSA/IG9y
aWdpbi0+aG9zdCgpLmltcGwoKS0+aGFzaCgpIDogMCwKLSAgICAgICAgICAgIG9yaWdpbi0+cG9y
dCgpLnZhbHVlT3IoMCkKKyAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApCiAg
ICAgICAgIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9m
KGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcAppbmRleCA3Yzc2YWUxMjgyMDhmODQzY2U3MjdkNGM2ZTFiNGE2ZTM2Yjk1ZjUz
Li5lNmQ4NjhjMGRjMDY5NmNlOTVlODUyODgwYTM2N2M0ODYwMWJkYzMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcApAQCAtMTU4LDggKzE1OCw4IEBAIFdpbmRvd0ZlYXR1
cmVzIHBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmlu
ZywgY29uc3QgRmxvCiAgICAgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlID0gZmFsc2U7CiAg
ICAgZmVhdHVyZXMuZGlhbG9nID0gdHJ1ZTsKIAotICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0
dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qu
d2lkdGgoKSkudmFsdWVPcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNp
emUgb2YgZGlhbG9nIGluIE1hY0lFCi0gICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZl
YXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdo
dCgpKS52YWx1ZU9yKDQ1MCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBv
ZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJl
c01hcCwgImRpYWxvZ3dpZHRoIiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZh
bHVlX29yKDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFs
b2cgaW4gTWFjSUUKKyAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAs
ICJkaWFsb2doZWlnaHQiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVl
X29yKDQ1MCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cg
aW4gTWFjSUUKIAogICAgIGZlYXR1cmVzLndpZHRoID0gd2lkdGg7CiAgICAgZmVhdHVyZXMuaGVp
Z2h0ID0gaGVpZ2h0OwpAQCAtMTY3LDE2ICsxNjcsMTYgQEAgV2luZG93RmVhdHVyZXMgcGFyc2VE
aWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBG
bG8KICAgICBmZWF0dXJlcy54ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVm
dCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFgoKSAt
IHdpZHRoKTsKICAgICBmZWF0dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlh
bG9ndG9wIiwgc2NyZWVuQXZhaWxhYmxlUmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4
WSgpIC0gaGVpZ2h0KTsKIAotICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRl
ciIpLnZhbHVlT3IodHJ1ZSkpIHsKKyAgICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJj
ZW50ZXIiKS52YWx1ZV9vcih0cnVlKSkgewogICAgICAgICBpZiAoIWZlYXR1cmVzLngpCiAgICAg
ICAgICAgICBmZWF0dXJlcy54ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC54KCkgKyAoc2NyZWVuQXZh
aWxhYmxlUmVjdC53aWR0aCgpIC0gd2lkdGgpIC8gMjsKICAgICAgICAgaWYgKCFmZWF0dXJlcy55
KQogICAgICAgICAgICAgZmVhdHVyZXMueSA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgKHNj
cmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkgLSBoZWlnaHQpIC8gMjsKICAgICB9CiAKLSAgICBm
ZWF0dXJlcy5yZXNpemFibGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIp
LnZhbHVlT3IoZmFsc2UpOwotICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZl
YXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZU9yKHRydWUpOwotICAgIGZlYXR1cmVz
LnN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZh
bHVlT3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1
cmVzTWFwLCAicmVzaXphYmxlIikudmFsdWVfb3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnNjcm9s
bGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZV9v
cih0cnVlKTsKKyAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVh
dHVyZXNNYXAsICJzdGF0dXMiKS52YWx1ZV9vcihmYWxzZSk7CiAKICAgICByZXR1cm4gZmVhdHVy
ZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAKaW5kZXggYWU5NzUxOGIxNjllMTAxYzdiZmVjMTgzMDI4ODMxMDMwYTgyZTZiOC4uMWEz
YjYzZjU1MzgwNDRiZmM5M2VjZDFkMDNlMWI2YjRmOGJlZTJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzA5LDcgKzMwOSw3
IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMo
KSAmJiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPT0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFs
dWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVf
b3IocnVuLmxlbmd0aCgpKTsKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0
aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFu
ZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8v
d2Via2l0Lm9yZy9iLzEwMDA1MApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuCiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOwor
ICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKIAog
ICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1F
OiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0
aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApA
QCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRo
SWZBdmFpbGFibGUoZmxvYXQmIHdpZHRoKSBjb25zdAogCiB2b2lkIEZvbnRDYXNjYWRlOjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNl
bGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QK
IHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsK
KyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAK
ICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhN
RTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdp
dGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5k
ZXggODk4ZDY1YmQ1MjRlZTYzNTZmMjlhMDMwNWM4OGZlMTAxMGM2YzdiYy4uZmYwOTViNTIxOWZh
YTMzYzFiNjIyMWRmYWQ1Y2U1MGNlZDBjMDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCBJbnRSZWN0
IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRgogICAgIGlmIChtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0
cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBv
bHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1YWQoc2hhZG93ZWRSZWN0KSk7CiAgICAg
ICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0KTsKLSAgICAgICAgbGF5ZXJSZWN0
ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFk
KHRyYW5zZm9ybWVkUG9seWdvbikuYm91bmRpbmdCb3goKTsKKyAgICAgICAgbGF5ZXJSZWN0ID0g
dHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0
cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
bGF5ZXJSZWN0ID0gc2hhZG93ZWRSZWN0OwogICAgICAgICBsYXllclJlY3QubW92ZShtX29mZnNl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1MzI0YzIwOGNiMThkYTg3ZDFlMjhhMDQw
OGUxOTg2ZjkxNTE4MmZhLi5iYzFkMDBmNDVmMzZjMjE3NTk1MjA4ODc2ZWU2OTk5ZDk4MDg0YWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIzNTIsNyArMjM1Miw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3Jh
cGhpY3NDb250ZXh0JiBjCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRo
KG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkp
OwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJsZWRWaWRl
b1RyYWNrIHByZWZlcnJlZFRyYW5zZm9ybV07Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0
cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBSZWN0KG91dHB1dFJlY3QpOworICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91dHB1
dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CiAKICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1Ry
YW5zZm9ybSk7CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCks
IGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KaW5kZXggZmE3Y2I3MWY0MWE4YTI1OGVmMGU0ZDYwMDljMmNkNzZjYjNlYzBkOC4uYTAxYmRl
OTUyMjAwZmI1ODkyZDA2NGI3MDljYTNjMGFjZWEwYTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTEwMDIsNyAr
MTAwMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNlZWtUb1RpbWUoTWVk
aWFUaW1lIHRpbWUpCiAKIEZsb2F0U2l6ZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0
dXJhbFNpemUoKQogewotICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVPcihGbG9hdFNpemUo
KSk7CisgICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNh
bXBsZXMoaW50IHRyYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCAyNWE1ZGJiMTI2MTgzNDc1M2Q1NDc2ODg5MDg0MDVi
ZmY3MDIwOThjLi4zYWZmZDQyMWUwZTNkNzMxODdmMmUzNDI3ZmI2ZDRmMTNlYjU4NWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgRmlsdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVy
PiB7CiAgICAgdm9pZCBzZXRGaWx0ZXJTY2FsZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxl
ID0gc2NhbGU7IH0KIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtOyB9Ci0gICAgRmxvYXRQb2lu
dCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBj
b25zdCB7IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7IH0KKyAgICBGbG9hdFBvaW50IG1hcEFic29s
dXRlUG9pbnRUb0xvY2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0
dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChwb2ludCk7IH0KIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0UmVuZGVy
aW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0g
cmVuZGVyaW5nTW9kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4OTVkMzdm
MzljZjA1NzJmNWQ0OTZlMGViNjBhYmIxZjI5MDZmYTVjLi40OTEwY2YwYWM3ZTJkODc2MDAxOThi
ODQ5NWU1OGQ3M2Y4YTE1MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjEx
LDcgKzIxMSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJl
bldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWluCiAgICAgICAgIFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbnMgcmVwbGljYU9wdGlvbnMob3B0aW9ucyk7CiAgICAgICAgIHJlcGxpY2FP
cHRpb25zLnRyYW5zZm9ybQogICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxh
eWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSkKLSAgICAgICAgICAgIC5tdWx0aXBs
eShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKSk7CisgICAgICAgICAgICAubXVsdGlwbHkobV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
KTsKICAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ocmVwbGljYU9wdGlvbnMpOwogICAgIH0K
IApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRl
ZE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKIAogVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1h
cHBlckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKCkKIHsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRp
b25NYXRyaXgobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpKS5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFs
dWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9u
TWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQo
KSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVl
X29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNldEFuaW1hdGVkRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQpA
QCAtNzMxLDcgKzczMSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVy
OjpmaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hCiBGbG9hdFNpemUgVGV4
dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQp
CiB7CiAgICAgZG91YmxlIHplcm9YLCB6ZXJvWSwgb2Zmc2V0WCwgb2Zmc2V0WTsKLSAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQo
KS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgdHJhbnNmb3Jt
Lm1hcCgwLCAwLCB6ZXJvWCwgemVyb1kpOwogICAgIHRyYW5zZm9ybS5tYXAob2Zmc2V0LndpZHRo
KCksIG9mZnNldC5oZWlnaHQoKSwgb2Zmc2V0WCwgb2Zmc2V0WSk7CiAgICAgcmV0dXJuIEZsb2F0
U2l6ZShvZmZzZXRYIC0gemVyb1gsIG9mZnNldFkgLSB6ZXJvWSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDc0OGFk
OGU5ZTM4MGEzZWU3MmE2YTAyMTU4MjRlZjhkNDE3ZWMzMTAuLjQ2MmI2MmVkNDc3N2JmNjM1N2Q1
NDQzNGE4MWVlNWZmYTgzMjlhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgSW50UmVj
dCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAg
IC8vIFJldHVybiBhIHByb2plY3Rpb24gb2YgdGhlIHZpc2libGUgcmVjdCAoc3VyZmFjZSBjb29y
ZGluYXRlcykgb250byB0aGUgbGF5ZXIncyBwbGFuZSAobGF5ZXIgY29vcmRpbmF0ZXMpLgogICAg
IC8vIFRoZSByZXN1bHRpbmcgcXVhZCBtaWdodCBiZSBzcXVld2VkIGFuZCB0aGUgdmlzaWJsZSBy
ZWN0IGlzIHRoZSBib3VuZGluZyBib3ggb2YgdGhpcyBxdWFkLAogICAgIC8vIHNvIGl0IG1pZ2h0
IHNwcmVhZCBmdXJ0aGVyIHRoYW4gdGhlIHJlYWwgdmlzaWJsZSBhcmVhIChhbmQgdGhlbiBldmVu
IG1vcmUgYW1wbGlmaWVkIGJ5IHRoZSBjb3ZlciByZWN0IG11bHRpcGxpZXIpLgotICAgIEFTU0VS
VChtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgp
LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBBU1NFUlQo
bV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgIEZsb2F0UmVj
dCByZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3Rl
ZFF1YWQoRmxvYXRRdWFkKG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwog
ICAgIGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHNpemUoKSk7CiAg
ICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QocmVjdCk7CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJl
Y3QoKQogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5U
cmFuc2Zvcm0oKSk7CiAgICAgbV9sYXllclRyYW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJl
bnQoKSA/IGRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKnBhcmVudCgpKS5tX2xh
eWVyVHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpOwogCi0gICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5j
b21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAg
IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAvLyBUaGUg
Y29tYmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZpc2li
bGVSZWN0LgogICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtU3RhdGUuY3BwCmluZGV4IGU3NjNjYzEzOTNkYmNkZTYxMTMyMTE4ZmZiNDMxOTFjNjQ4
ZTQ1ZTQuLmYwZTJkYTMxOTNjNGU4OTkxMWZmN2ZjYjZkYjhlYTg0NjQ4NzkwZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRQb2ludCBUcmFu
c2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICBpZiAo
bV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHJldHVybiBt
X2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYXBQb2ludChwb2ludCk7CiAKLSAgICByZXR1cm4gbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFtcGVkKTsKKyAgICByZXR1cm4gbV9hY2N1
bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CiB9CiAKIEZsb2F0UXVhZCBUcmFu
c2Zvcm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdApAQCAtMjE4LDcg
KzIxOCw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBU
cmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBB
cHBseVRyYW5zZm9ybURpcmVjdGlvbikKICAgICAgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFu
c2Zvcm0tPm1hcFF1YWQocXVhZCk7CiAKLSAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9y
bS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQo
cXVhZCwgd2FzQ2xhbXBlZCk7CisgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmlu
dmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVhZChxdWFk
LCB3YXNDbGFtcGVkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHdhc0NsYW1wZWQpCkBA
IC0yMzMsNyArMjMzLDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHcKICAgICAgICAgfQogCiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9y
bSA9IHQuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52YWx1
ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKICAgICAgICAgaWYgKG1fbWFwUG9pbnQpCiAg
ICAgICAgICAgICBtX2xhc3RQbGFuYXJQb2ludCA9IGludmVyc2VUcmFuc2Zvcm0ucHJvamVjdFBv
aW50KG1fbGFzdFBsYW5hclBvaW50KTsKICAgICAgICAgaWYgKG1fbWFwUXVhZCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmlu
ZGV4IDFmMWMzODA1NTUxMTFmNDRhMWYxZTdlNmUwMzJhMjczMGRkOTRiZmQuLmIzOGU3MDcyMDIz
OGUwYzhlZTdlY2IwZGViOTA2YzJhMWIyNTY1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBzdAogICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3IgbGF0
ZW5jeSBhcyB0aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UuCiAgICAg
YXV0byBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7CiAgICAgYXV0byBhcHBhcmVudEFnZSA9
IGRhdGVWYWx1ZSA/IHN0ZDo6bWF4KDB1cywgZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KHJl
c3BvbnNlVGltZSAtICpkYXRlVmFsdWUpKSA6IDB1czsKLSAgICBhdXRvIGFnZVZhbHVlID0gcmVz
cG9uc2UuYWdlKCkudmFsdWVPcigwdXMpOworICAgIGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5h
Z2UoKS52YWx1ZV9vcigwdXMpOwogICAgIGF1dG8gY29ycmVjdGVkSW5pdGlhbEFnZSA9IHN0ZDo6
bWF4KGFwcGFyZW50QWdlLCBhZ2VWYWx1ZSk7CiAgICAgYXV0byByZXNpZGVudFRpbWUgPSBkdXJh
dGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oc3lzdGVtX2Nsb2NrOjpub3coKSAtIHJlc3BvbnNlVGlt
ZSk7CiAgICAgcmV0dXJuIGNvcnJlY3RlZEluaXRpYWxBZ2UgKyByZXNpZGVudFRpbWU7CkBAIC0x
MjIsNyArMTIyLDcgQEAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlRnJlc2huZXNz
TGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgcmV0dXJuICpt
YXhBZ2U7CiAKICAgICBhdXRvIGRhdGUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgYXV0byBlZmZl
Y3RpdmVEYXRlID0gZGF0ZS52YWx1ZU9yKHJlc3BvbnNlVGltZSk7CisgICAgYXV0byBlZmZlY3Rp
dmVEYXRlID0gZGF0ZS52YWx1ZV9vcihyZXNwb25zZVRpbWUpOwogICAgIGlmIChhdXRvIGV4cGly
ZXMgPSByZXNwb25zZS5leHBpcmVzKCkpCiAgICAgICAgIHJldHVybiBkdXJhdGlvbl9jYXN0PG1p
Y3Jvc2Vjb25kcz4oKmV4cGlyZXMgLSBlZmZlY3RpdmVEYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDIzYWRjZDM0MzE3MjFkMDY1YmIyMjNl
MjY2OGQ4YTA1ZjUyMDI1NTcuLmY3YWVhODQyNmYyYTEzNjBhN2UzY2E3OGI5MDJmOTRlMDhjNDA0
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEw
MTcsNyArMTAxNyw3IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVu
c2lnbmVkIG9mZnNldCkgY29uc3QKIAogU3RyaW5nVmlldyBJbmxpbmVUZXh0Qm94OjpzdWJzdHJp
bmdUb1JlbmRlcihPcHRpb25hbDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0aCkgY29uc3QKIHsK
LSAgICByZXR1cm4gU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0
KCksIG92ZXJyaWRpbmdMZW5ndGgudmFsdWVPcihsZW4oKSkpOworICAgIHJldHVybiBTdHJpbmdW
aWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnQoKSwgb3ZlcnJpZGluZ0xlbmd0
aC52YWx1ZV9vcihsZW4oKSkpOwogfQogCiBTdHJpbmcgSW5saW5lVGV4dEJveDo6aHlwaGVuYXRl
ZFN0cmluZ0ZvclRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRpb25hbDx1bnNp
Z25lZD4gYWx0ZXJuYXRlTGVuZ3RoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5m
by5oCmluZGV4IDUxMWE2YmNjNTRmYTgxNDk3NGMyMGU2Y2Y4OGQxMzFjMmViODQ2NGYuLjRhYjM4
OTM1ZTk0YjhmMzA2MmVlMDlkM2EyMjI3ZDJhODg5NDBmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRJbmZvLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAg
ICAgICAgaWYgKHJlY3QuaXNJbmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOworICAgICAg
ICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAg
IHJlY3Quc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkp
OwogICAgICAgICByZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDA2NmNm
YjhmYmJkZTU3NWRmNzRkOGEzZTljMjg1ZGQzM2JjYWM1NTkuLjRkNGRlODE3OTZhOWE3YmIwMDlk
OWQ5ZTA0ZDFjY2IxMDhmZTI3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgICAg
ICBMYXlvdXRVbml0IGhlaWdodFJlc3VsdDsKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0
KSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGludHJpbnNpY0hlaWdodCA9IGNvbXB1dGVkVmFs
dWVzLm1fZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAg
ICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVy
cmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFsdWVP
cihjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CisgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBj
b21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9n
aWNhbEhlaWdodCgpLCBpbnRyaW5zaWNIZWlnaHQpLnZhbHVlX29yKGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50KTsKICAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbnN0cmFpbkxvZ2ljYWxIZWln
aHRCeU1pbk1heChoZWlnaHRSZXN1bHQsIGludHJpbnNpY0hlaWdodCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBUaGUgb25seSB0aW1lcyB3ZSBkb24ndCBjaGVjayBtaW4vbWF4
IGhlaWdodCBhcmUgd2hlbiBhIGZpeGVkIGxlbmd0aCBoYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXgg
ODJhZGJjZDQxZjA5ODhhOGI0OWVkZjA5ZWY5MjFlMDdiZjljZDJkNC4uNTYzZTUzNmQ2YTE2NjAy
ZjRjZTk0NTAzOTY0MGY0MTBmMmU5YzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTQzMyw3ICs0
MzMsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRh
bEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSBvdXIg
aGVpZ2h0IGFuZCBvdmVyZmxvdyBoZWlnaHQuCiAgICAgICAgICAgICBpZiAoc3R5bGUoKS5ib3hB
bGlnbigpID09IEJCQVNFTElORSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50
ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBj
aGlsZC0+bWFyZ2luQm90dG9tKCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50
ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsg
Y2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQt
Pm1hcmdpblRvcCgpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGls
ZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAK
QEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5
b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAg
ICAgIGNoaWxkWSArPSBjaGlsZC0+bWFyZ2luVG9wKCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0Pigw
LCAoY29udGVudEhlaWdodCgpIC0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNhbE1h
cmdpbkV4dGVudCgpKSkgLyAyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgY2FzZSBCQkFTRUxJTkU6IHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWln
aHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CisgICAgICAgICAgICAgICAgICAgIExheW91
dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQt
PmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICAgICAg
YXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRZ
ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIChtYXhBc2NlbnQgLSBhc2NlbnQpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCmluZGV4IDQ5Y2EyYWNkMjg0YWYxY2QxZjJhNzllYzAyYjc2YTAzODk0MzNk
ZTIuLjQ0ZjI3YTNkMjI0MDE4Y2ZhOWU0OWMxZGQ0OTYxYjk0OGFmMjNlMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTc1LDcgKzE3
NSw3IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KGNvbnN0
IFJlbmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uCiAKIGludCBSZW5kZXJGbGV4aWJsZUJveDo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRp
cmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICBpbnQgYmFzZWxpbmUgPSBm
aXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3Ioc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50
Qm94KCp0aGlzLCBkaXJlY3Rpb24pKTsKKyAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNl
bGluZSgpLnZhbHVlX29yKHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywg
ZGlyZWN0aW9uKSk7CiAKICAgICBpbnQgbWFyZ2luQXNjZW50ID0gZGlyZWN0aW9uID09IEhvcml6
b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpOwogICAgIHJldHVybiBiYXNl
bGluZSArIG1hcmdpbkFzY2VudDsKQEAgLTY4NSw3ICs2ODUsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckZsZXhpYmxlQm94OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChSZW5k
ZXJCb3gmCiAgICAgICAgIEFTU0VSVChtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5k
UGFkZGluZ0V4dGVudEZvckNoaWxkKGNoaWxkKSA+PSAwKTsKICAgICAgICAgcmV0dXJuIG1haW5B
eGlzRXh0ZW50IC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQp
OwogICAgIH0KLSAgICByZXR1cm4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQs
IE1haW5PclByZWZlcnJlZFNpemUsIGZsZXhCYXNpcykudmFsdWVPcigwKTsKKyAgICByZXR1cm4g
Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUs
IGZsZXhCYXNpcykudmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6Omxh
eW91dEZsZXhJdGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIFZlY3RvcjxMaW5lQ29udGV4dD4m
IGxpbmVDb250ZXh0cykKQEAgLTgyNSw3ICs4MjUsNyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94
Ojp1cGRhdGVBdXRvTWFyZ2luc0luQ3Jvc3NBeGlzKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVu
aQogCiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGls
ZChSZW5kZXJCb3gmIGNoaWxkKQogewotICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkKSk7
CisgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVl
X29yKGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkKSk7CiAgICAgcmV0dXJuIGFzY2VudCAr
IGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKTsKIH0KIApAQCAtOTMwLDEyICs5
MzAsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9y
TWluQW5kTWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQKICAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBtYXhFeHRlbnQgPSBOdWxsb3B0OwogICAgIGlmIChtYXguaXNTcGVjaWZpZWRPckludHJpbnNp
YygpKSB7CiAgICAgICAgIG1heEV4dGVudCA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxk
KGNoaWxkLCBNYXhTaXplLCBtYXgpOwotICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihjaGls
ZFNpemUsIG1heEV4dGVudC52YWx1ZU9yKGNoaWxkU2l6ZSkpOworICAgICAgICBjaGlsZFNpemUg
PSBzdGQ6Om1pbihjaGlsZFNpemUsIG1heEV4dGVudC52YWx1ZV9vcihjaGlsZFNpemUpKTsKICAg
ICB9CiAgICAgCiAgICAgTGVuZ3RoIG1pbiA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0
eWxlKCkubWluV2lkdGgoKSA6IGNoaWxkLnN0eWxlKCkubWluSGVpZ2h0KCk7CiAgICAgaWYgKG1p
bi5pc1NwZWNpZmllZE9ySW50cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1heChjaGls
ZFNpemUsIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4p
LnZhbHVlT3IoY2hpbGRTaXplKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUs
IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVl
X29yKGNoaWxkU2l6ZSkpOwogICAgIAogICAgIGlmICghaXNGbGV4aWJsZUJveEltcGwoKSAmJiBt
aW4uaXNBdXRvKCkgJiYgbWFpbkF4aXNPdmVyZmxvd0ZvckNoaWxkKGNoaWxkKSA9PSBPVklTSUJM
RSAmJiAhKGlzQ29sdW1uRmxvdygpICYmIGlzPFJlbmRlckZsZXhpYmxlQm94PihjaGlsZCkpKSB7
CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIENTUyBmbGV4Ym94IHNl
Y3Rpb24gNC41IHdoaWNoIGRlZmluZXMgdGhlIG1pbmltdW0gc2l6ZSBvZiAicHVyZSIgZmxleApA
QCAtOTQ3LDEzICs5NDcsMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0
Q2hpbGRTaXplRm9yTWluQW5kTWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQKICAgICAgICAgQVNT
RVJUKGNvbnRlbnRTaXplID49IDApOwogICAgICAgICBpZiAoY2hpbGQuaGFzQXNwZWN0UmF0aW8o
KSAmJiBjaGlsZC5pbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgPiAwKQogICAgICAgICAgICAgY29u
dGVudFNpemUgPSBhZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1h
eChjaGlsZCwgY29udGVudFNpemUpOwotICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNv
bnRlbnRTaXplLCBtYXhFeHRlbnQudmFsdWVPcihjb250ZW50U2l6ZSkpOworICAgICAgICBjb250
ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY29udGVu
dFNpemUpKTsKICAgICAgICAgCiAgICAgICAgIExlbmd0aCBtYWluU2l6ZSA9IGlzSG9yaXpvbnRh
bEZsb3coKSA/IGNoaWxkLnN0eWxlKCkud2lkdGgoKSA6IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCk7
CiAgICAgICAgIGlmIChtYWluQXhpc0xlbmd0aElzRGVmaW5pdGUoY2hpbGQsIG1haW5TaXplKSkg
ewogICAgICAgICAgICAgTGF5b3V0VW5pdCByZXNvbHZlZE1haW5TaXplID0gY29tcHV0ZU1haW5B
eGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIG1haW5TaXplKS52
YWx1ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc29sdmVkTWFpblNpemUgPj0gMCk7Ci0gICAg
ICAgICAgICBMYXlvdXRVbml0IHNwZWNpZmllZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5T
aXplLCBtYXhFeHRlbnQudmFsdWVPcihyZXNvbHZlZE1haW5TaXplKSk7CisgICAgICAgICAgICBM
YXlvdXRVbml0IHNwZWNpZmllZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5TaXplLCBtYXhF
eHRlbnQudmFsdWVfb3IocmVzb2x2ZWRNYWluU2l6ZSkpOwogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KGNoaWxkU2l6ZSwgc3RkOjptaW4oc3BlY2lmaWVkU2l6ZSwgY29udGVudFNpemUpKTsK
ICAgICAgICAgfSBlbHNlIGlmICh1c2VDaGlsZEFzcGVjdFJhdGlvKGNoaWxkKSkgewogICAgICAg
ICAgICAgTGVuZ3RoIGNyb3NzU2l6ZUxlbmd0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxk
LnN0eWxlKCkuaGVpZ2h0KCkgOiBjaGlsZC5zdHlsZSgpLndpZHRoKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNWYwZGQwNDdiYTkwNzkyZTMxYzQ1ZmZlYTgw
MmY3OTY3NDBjZmVhNC4uYjYwMDJkMmIxMzI1NTg2NzJhYjM3YTc4OWIwZjM4MDIzZDRkODdiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBjbGFzcyBHcmlkVHJhY2sgewogCiAgICAgdm9pZCBzZXRHcm93dGhMaW1pdChMYXlvdXRVbml0
IGdyb3d0aExpbWl0KQogICAgIHsKLSAgICAgICAgbV9ncm93dGhMaW1pdCA9IGdyb3d0aExpbWl0
ID09IGluZmluaXR5ID8gZ3Jvd3RoTGltaXQgOiBzdGQ6Om1pbihncm93dGhMaW1pdCwgbV9ncm93
dGhMaW1pdENhcC52YWx1ZU9yKGdyb3d0aExpbWl0KSk7CisgICAgICAgIG1fZ3Jvd3RoTGltaXQg
PSBncm93dGhMaW1pdCA9PSBpbmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3Ro
TGltaXQsIG1fZ3Jvd3RoTGltaXRDYXAudmFsdWVfb3IoZ3Jvd3RoTGltaXQpKTsKICAgICAgICAg
ZW5zdXJlR3Jvd3RoTGltaXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpOwogICAgIH0KIApAQCAtNjg2
LDcgKzY4Niw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0CiAKICAgICBpZiAobG9naWNhbEhl
aWdodExlbmd0aC5pc0ZpdENvbnRlbnQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGZpbGxBdmFp
bGFibGVFeHRlbnQgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChF
eGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihtX21h
eENvbnRlbnRIZWlnaHQudmFsdWVPcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZh
bHVlT3IoMCksIGZpbGxBdmFpbGFibGVFeHRlbnQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWlu
KG1fbWF4Q29udGVudEhlaWdodC52YWx1ZV9vcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVp
Z2h0LnZhbHVlX29yKDApLCBmaWxsQXZhaWxhYmxlRXh0ZW50KSk7CiAgICAgfQogCiAgICAgaWYg
KGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNGaWxsQXZhaWxhYmxlKCkpCkBAIC03MDksNyArNzA5LDcg
QEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGkKIAogICAgIC8vIEdyaWQgZ3V0dGVycyB3ZXJlIHJl
bW92ZWQgZnJvbSBmcmVlU3BhY2UgYnkgdGhlIGNhbGxlciAoaWYgZnJlZVNwYWNlIGlzIGRlZmlu
aXRlKSwKICAgICAvLyBidXQgd2UgbXVzdCB1c2UgdGhlbSB0byBjb21wdXRlIHJlbGF0aXZlIChp
LmUuIHBlcmNlbnRhZ2VzKSBzaXplcy4KLSAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1h
eChMYXlvdXRVbml0KCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKExheW91
dFVuaXQoKSkpOworICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KExheW91dFVuaXQo
KSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwog
ICAgIGNvbnN0IGJvb2wgaGFzRGVmaW5pdGVGcmVlU3BhY2UgPSBzaXppbmdEYXRhLnNpemluZ09w
ZXJhdGlvbiA9PSBUcmFja1NpemluZzsKIAogICAgIC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQg
dHJhY2sgdmFyaWFibGVzLgpAQCAtMTAyOSwxMyArMTAyOSwxMyBAQCBMYXlvdXRVbml0IFJlbmRl
ckdyaWQ6Om1pblNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdE
aXJlY3RpbwogICAgIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCA9IHVwZGF0ZU92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJl
Y3Rpb24sIHNpemluZ0RhdGEpOwogICAgIGlmIChpc1Jvd0F4aXMpIHsKICAgICAgICAgTGF5b3V0
VW5pdCBtYXJnaW5Mb2dpY2FsV2lkdGggPSBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9PSBU
cmFja1NpemluZyA/IGNvbXB1dGVNYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGNoaWxkSW5saW5l
RGlyZWN0aW9uLCBjaGlsZCkgOiBtYXJnaW5JbnRyaW5zaWNMb2dpY2FsV2lkdGhGb3JDaGlsZChj
aGlsZCk7Ci0gICAgICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25V
c2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVu
dFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24pLnZhbHVlT3IoMCksICp0
aGlzLCBudWxscHRyKSArIG1hcmdpbkxvZ2ljYWxXaWR0aDsKKyAgICAgICAgcmV0dXJuIGNoaWxk
LmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwg
b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElu
bGluZURpcmVjdGlvbikudmFsdWVfb3IoMCksICp0aGlzLCBudWxscHRyKSArIG1hcmdpbkxvZ2lj
YWxXaWR0aDsKICAgICB9CiAKICAgICBpZiAob3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCAmJiAoZGly
ZWN0aW9uICE9IEZvckNvbHVtbnMgfHwgc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gIT0gSW50
cmluc2ljU2l6ZUNvbXB1dGF0aW9uKSkKICAgICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFy
a09ubHlUaGlzKTsKICAgICBjaGlsZC5sYXlvdXRJZk5lZWRlZCgpOwotICAgIHJldHVybiBjaGls
ZC5jb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgTnVsbG9w
dCkudmFsdWVPcigwKSArIGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9s
bGJhckxvZ2ljYWxIZWlnaHQoKTsKKyAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWln
aHRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIE51bGxvcHQpLnZhbHVlX29yKDApICsgY2hp
bGQubWFyZ2luTG9naWNhbEhlaWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgp
OwogfQogCiBib29sIFJlbmRlckdyaWQ6OnVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29u
dGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkgY29uc3QKQEAgLTExOTks
NyArMTE5OSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6
aW5nRnVuY3Rpb25zRm9yTm9uU3Bhbm5pbmdJdGVtcyhHcmlkCiAgICAgfSBlbHNlIGlmICh0cmFj
a1NpemUuaGFzTWF4Q29udGVudE9yQXV0b01heFRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExh
eW91dFVuaXQgZ3Jvd3RoTGltaXQgPSBtYXhDb250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0sIGRpcmVj
dGlvbiwgc2l6aW5nRGF0YSk7CiAgICAgICAgIGlmICh0cmFja1NpemUuaXNGaXRDb250ZW50KCkp
Ci0gICAgICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZv
ckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBzaXpp
bmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKSkpOworICAgICAgICAgICAgZ3Jvd3Ro
TGltaXQgPSBzdGQ6Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZp
dENvbnRlbnRUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFj
ZSgpLnZhbHVlX29yKDApKSk7CiAgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0KHN0ZDo6bWF4
KHRyYWNrLmdyb3d0aExpbWl0KCksIGdyb3d0aExpbWl0KSk7CiAgICAgfQogfQpAQCAtMTM4Nyw4
ICsxMzg3LDggQEAgc3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNv
bnN0IEdyaWRUcmFjayogdHJhY2sxLCBjb25zdCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5m
aW5pdGVHcm93dGhQb3RlbnRpYWxXaXRob3V0Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3Ro
UG90ZW50aWFsV2l0aG91dENhcCkKICAgICAgICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jv
d3RoUG90ZW50aWFsV2l0aG91dENhcDsKIAotICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0
cmFjazEtPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwot
ICAgIExheW91dFVuaXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFs
dWVPcih0cmFjazItPmdyb3d0aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQg
PSB0cmFjazEtPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgp
KTsKKyAgICBMYXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgp
LnZhbHVlX29yKHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1p
dCAtIHRyYWNrMS0+YmFzZVNpemUoKSkgPCAodHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXpl
KCkpOwogfQogCkBAIC0xNDU3LDcgKzE0NTcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmRpc3RyaWJ1
dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYgdHJhY2tzLCBWZWN0b3I8R3JpZAog
Ym9vbCBSZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEp
CiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcyA9IChkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBzaXppbmdEYXRhLmNvbHVtblRyYWNrcyA6IHNpemluZ0RhdGEucm93VHJh
Y2tzOwotICAgIGNvbnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxl
U3BhY2UoKS52YWx1ZU9yKDApOworICAgIGNvbnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemlu
Z0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEdyaWRUcmFja1Np
emUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUoZGlyZWN0aW9uLCBpLCBzaXppbmdEYXRhLnNp
emluZ09wZXJhdGlvbik7CiAgICAgICAgIGlmIChjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0
aCh0cmFja1NpemUsIG1heFNpemUpID4gdHJhY2tzW2ldLmJhc2VTaXplKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyNTk1YzM0MzEyNDEyZDUwODdjYjBj
YzIyYzYyMDFiMGQ4OTY2NDFhLi5mYzk4YTM5YjJjZTBmY2QxNTlkMTI0ZTUxMTYyMjhiN2VmNDgy
MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ0NjMs
NyArNDQ2Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNm
b3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKIAogICAgIC8vIE5vdyBkbyBhIHBh
aW50IHdpdGggdGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXpl
IGFkanVzdGVkU3VicGl4ZWxPZmZzZXQgPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXpl
KGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7Ci0gICAgTGF5ZXJQYWludGlu
Z0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8odGhpcywgTGF5b3V0UmVjdChlbmNsb3NlUmVj
dFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZh
Y3RvcikpLAorICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRo
aXMsIExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWlu
dERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSksCiAgICAgICAgIHBhaW50aW5nSW5mby5w
YWludEJlaGF2aW9yLCBhZGp1c3RlZFN1YnBpeGVsT2Zmc2V0LCBwYWludGluZ0luZm8uc3VidHJl
ZVBhaW50Um9vdCwgcGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMpOwogICAgIHBhaW50
TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgdHJhbnNmb3JtZWRQYWludGluZ0lu
Zm8sIHBhaW50RmxhZ3MpOwogICAgIGNvbnRleHQuc2V0Q1RNKG9sZFRyYW5zZnJvbSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggYjcxNjNlNjZiM2M2
ZmYxMTg3NzFhYzk4OTA5NzZjM2IzYmU0NjZmYi4uMzA2YzVhMzk0NmU0M2UyNjgwYjA0Y2U5ZmMz
NzZkMWMzOWU1YzM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJv
dW5kaW5nQm94UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEZ1bmN0aW9uIHBhaW50RnVuY3Rpb24pCiB7CiAgICAg
aW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwotICAgIGludCBmaXJzdFZpc2libGVJdGVt
ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3Io
bV9pbmRleE9mZnNldCk7CisgICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJz
dFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7
CiAgICAgaW50IGVuZEluZGV4ID0gZmlyc3RWaXNpYmxlSXRlbSArIG51bVZpc2libGVJdGVtcyhD
b25zaWRlclBhZGRpbmc6Olllcyk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0VmlzaWJsZUl0ZW07
IGkgPCBsaXN0SXRlbXNTaXplICYmIGkgPCBlbmRJbmRleDsgKytpKQogICAgICAgICBwYWludEZ1
bmN0aW9uKHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIGkpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIGJv
b2wgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoaW50IGlu
ZGV4KQogCiBib29sIFJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZShpbnQgaW5kZXgp
CiB7Ci0gICAgaW50IGZpcnN0SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRl
UGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RJbmRl
eCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9v
cihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2li
bGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEKICAgICAgICAgPyBtX2luZGV4T2ZGaXJzdFZp
c2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEudmFsdWUoKSArIG51bWJlck9mVmlzaWJs
ZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkKICAgICAgICAgOiBtX2luZGV4T2Zmc2V0ICsgbnVtVmlz
aWJsZUl0ZW1zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU2V0LmNwcAppbmRleCA3ZDJmYjQzNjI4MTU0Yjk0MjU2NmY5OTc4OWNmNTA4ZjUyYjQ5
N2FkLi4yMGNmOWVjMDNmMmU2YmM5MmUxNzViOTJkMjJkM2I0ZWVmYTBhZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTQx
NSw3ICs0MTUsNyBAQCBMYXlvdXRVbml0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVN
YXhDb2x1bW5IZWlnaHQoKSBjb25zdAogICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0ID0g
bXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPmNvbHVtbkhlaWdodEF2YWlsYWJsZSgpOwogICAgIExh
eW91dFVuaXQgbWF4Q29sdW1uSGVpZ2h0ID0gYXZhaWxhYmxlSGVpZ2h0ID8gYXZhaWxhYmxlSGVp
Z2h0IDogUmVuZGVyRmxvd1RocmVhZDo6bWF4TG9naWNhbEhlaWdodCgpOwogICAgIGlmICghbXVs
dGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWF4
Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4obWF4Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5j
b21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2Fs
TWF4SGVpZ2h0KCksIE51bGxvcHQpLnZhbHVlT3IobWF4Q29sdW1uSGVpZ2h0KSk7CisgICAgICAg
IG1heENvbHVtbkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9j
ay0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9n
aWNhbE1heEhlaWdodCgpLCBOdWxsb3B0KS52YWx1ZV9vcihtYXhDb2x1bW5IZWlnaHQpKTsKICAg
ICByZXR1cm4gaGVpZ2h0QWRqdXN0ZWRGb3JTZXRPZmZzZXQobWF4Q29sdW1uSGVpZ2h0KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggNGMwYjdiMzUz
YjFkYmU0NGU3OTU3OTJkODZhYmVjNGY3MGM0MjBlZC4uMjA2ODY0MDYyZDM2MzVhZjg0NmRhYWQ0
NTQ0NWEwNGMwYmI1MzdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCkBAIC0zNzMsOSArMzczLDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0
eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBzdHlsZUxvZ2ljYWxIZWlnaHQudmFsdWUoKSAtIGJvcmRlcnM7CiAg
ICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkp
Ci0gICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dp
Y2FsSGVpZ2h0KS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VM
b2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhlaWdodCkudmFsdWVfb3IoMCk7CiAgICAgZWxzZSBp
ZiAoc3R5bGVMb2dpY2FsSGVpZ2h0LmlzSW50cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBjb21w
dXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQs
IGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZh
bHVlT3IoMCk7CisgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRI
ZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFu
ZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlX29yKDApOwogICAgIGVsc2UKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQoKTsKQEAgLTE0
NjQsNyArMTQ2NCw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnVwZGF0ZUZpcnN0TGV0dGVyKFJlbmRl
clRyZWVNdXRhdGlvbklzQWxsb3dlZCkKIAogaW50IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yQ29tcHV0ZShbJl0g
eworICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShmaXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewog
ICAgICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwg
Zmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBjMDBjYmNj
OTkxM2QxM2Q3NmYxN2FmZDgzMmM4NjhmMmFiNzhlYjlkLi5lMWE3ZWFhNzU5YWQzMzE2OWJhMTEx
YTM1ZjkxNWE0YzFlOGM3NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcApAQCAtNDAxLDcgKzQwMSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVD
ZWxsOjpjZWxsQmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0CiAgICAgLy8gPGh0dHA6Ly93d3cudzMu
b3JnL1RSLzIwMDcvQ1ItQ1NTMjEtMjAwNzA3MTkvdGFibGVzLmh0bWwjaGVpZ2h0LWxheW91dD46
IFRoZSBiYXNlbGluZSBvZiBhIGNlbGwgaXMgdGhlIGJhc2VsaW5lIG9mCiAgICAgLy8gdGhlIGZp
cnN0IGluLWZsb3cgbGluZSBib3ggaW4gdGhlIGNlbGwsIG9yIHRoZSBmaXJzdCBpbi1mbG93IHRh
YmxlLXJvdyBpbiB0aGUgY2VsbCwgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiBJZiB0aGVyZQogICAg
IC8vIGlzIG5vIHN1Y2ggbGluZSBib3ggb3IgdGFibGUtcm93LCB0aGUgYmFzZWxpbmUgaXMgdGhl
IGJvdHRvbSBvZiBjb250ZW50IGVkZ2Ugb2YgdGhlIGNlbGwgYm94LgotICAgIHJldHVybiBmaXJz
dExpbmVCYXNlbGluZSgpLnZhbHVlT3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVu
dExvZ2ljYWxIZWlnaHQoKSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVf
b3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrQ2VsbERpcnR5V2hlbkNvbGxhcHNlZEJvcmRlckNo
YW5nZXMoUmVuZGVyVGFibGVDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBkODg1ZThlMmM2MjVjNmRjMGI1ZjJkZmYx
NTc5MzQzZWU1ZWU1MTBmLi44NmZmZjFiNzU0OTZlMDA0NDgzNmYwNjY0MWZlYjYxYTMzMWE4YmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cApAQCAtOTM0LDcgKzkzNCw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgICAgIC8vIE9ubHkgY2VsbHMgd2l0aCBjb250
ZW50IGhhdmUgYSBiYXNlbGluZQogICAgICAgICBpZiAoY2VsbCAmJiBjZWxsLT5jb250ZW50TG9n
aWNhbEhlaWdodCgpKSB7CiAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gcm91bmRUb0ludChj
ZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxsLT5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjZWxs
LT5jb250ZW50TG9naWNhbEhlaWdodCgpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4
KHJlc3VsdC52YWx1ZU9yKGNhbmRpZGF0ZSksIGNhbmRpZGF0ZSk7CisgICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVfb3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmlu
ZGV4IDQ0YTFjNTIwMzliNWQ0N2ZmY2QyYTFhN2UxNmM1NTgwMTkwMWZkMDkuLjY1NmI3MzQ3ODcz
ODdhODAzYjQzMjM0MTJmMjU3YzMyNDAzZjk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBG
bwogICAgICAgICB9CiAgICAgfQogCi0gICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlw
aExlZnRPdmVyZmxvdy52YWx1ZU9yKGdseXBoT3ZlcmZsb3cubGVmdCk7CisgICAgZ2x5cGhPdmVy
Zmxvdy5sZWZ0ID0gZmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlwaE92ZXJmbG93
LmxlZnQpOwogCiAgICAgaWYgKChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEpIHx8IChpZ25v
cmluZ1NwYWNlcyAmJiAhZmlyc3RXb3JkKSkKICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdvcmRT
cGFjaW5nOwpAQCAtMTY3Nyw3ICsxNjc3LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmls
eVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKIAog
U3RyaW5nVmlldyBSZW5kZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0LCBPcHRpb25h
bDx1bnNpZ25lZD4gc3RvcCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0
b3AudmFsdWVPcih0ZXh0TGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3Rv
cC52YWx1ZV9vcih0ZXh0TGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBsZW5ndGgoKSk7
CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uIDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQg
PD0gZGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IGVjMDI4NjUwNzA2NmIzMTliYzc3ZjE2
ZDU4ZjgzMGNkOTlmZjM0ZDYuLjVhMmFkNzJiZGY3ZDVkNDMxMzkxYTQ5OGVhNjU4NWU0YjVhN2U0
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBw
YWkKICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAhPSBUZXh0RGVjb3Jh
dGlvbk5vbmUpIHsKICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gY2hp
bGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4oZmxvdykuZmlyc3QoKTsKICAgICAgICAgaWYgKHRleHRS
ZW5kZXJlcikgewotICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyID0gVGV4dERlY29y
YXRpb25QYWludGVyKHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0lu
RWZmZWN0KCksICp0ZXh0UmVuZGVyZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHREZWNvcmF0
aW9uUGFpbnRlci5lbXBsYWNlKHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCksICp0ZXh0UmVuZGVyZXIsIGZhbHNlKTsKICAgICAgICAgICAgIHRleHRE
ZWNvcmF0aW9uUGFpbnRlci0+c2V0Rm9udChzdHlsZS5mb250Q2FzY2FkZSgpKTsKICAgICAgICAg
ICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci0+c2V0QmFzZWxpbmUoc3R5bGUuZm9udE1ldHJpY3Mo
KS5hc2NlbnQoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggNWIyMTEyZjM1YTQ2ZDNiNWI3
MTI5Yzk1NmVhZDI4ODg3OTFhYmY1OS4uYTY2NmM5Yjg0OWU1M2Q5NDYyZDYzYjgwNGM5MjcwZWI5
YjI3YjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbnQgUmVuZGVyTWF0aE1M
QmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpbgogICAgIGlmIChsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT2ZJbnRlcmlvckxp
bmVCb3hlcykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxp
bmUoKS52YWx1ZU9yKFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwg
Zmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKKyAgICByZXR1cm4gZmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihi
YXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CiB9
CiAKICNpZiBFTkFCTEUoREVCVUdfTUFUSF9MQVlPVVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMGU3MzNiOWViMTM2
NDJhODFmM2JmZTRhNGQyYTc5OGIyYWI3MDFkZC4uOTRjMmY3MTI0ZTA0YmIyYzlhNjRlOGVjYzQw
OTM3Y2M2YzhkZjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBSZW5kZXJNYXRo
TUxCbG9jayA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBh
c2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0
KCkpOworICAgICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihj
aGlsZC5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KIAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAKaW5kZXggZWVhNGYwZDgzMjA2ZjM0N2IxNzdmNzNmMDcyNjU4ZDAxNjZlNjQw
My4uY2NkZjI0ZjljNjFlNjJkNTlhNWJiODViN2VjYWFiN2NhOWFlNzQ3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAt
MTczLDcgKzE3Myw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgaWYgKCFwb2ludElz
SW5zaWRlVmlld3BvcnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCku
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJl
bnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5Q
YXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVh
KCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
aW5kZXggMmJmMDg2ZmMxZjMwNzk4MzU5YmQ2NzY4YTYzODRhZjA5OWQ1NzNkMC4uMTA5NWQyNGUx
MTIxOWI2MjI3YzhjMmQ2OWUxNmYzMTc0YzVhMTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xODMs
NyArMTgzLDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAoaGl0VGVzdEFjdGlv
biAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxv
YXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgLy8gRWFybHkgZXhp
dCBpZiBsb2NhbCBwb2ludCBpcyBub3QgY29udGFpbmVkIGluIGNsaXBwZWQgdmlld3BvcnQgYXJl
YQogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSAmJiAh
bV92aWV3cG9ydC5jb250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMTU4NDc2MTlhNzEzYWRlNTAwMGY0
YmVjNjdlNThjY2QzN2MwMTFmNi4uMGRjYjkxODA3MWQ4MTFhOTUyYjY3ZjgxMzEzNjhjNWI5Mzg0
YjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9h
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIFBv
aW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19J
TUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7CiAgICAg
Ym9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7CiAgICAg
aWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKLSAgICAgICAgRmxv
YXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAg
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7
CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xp
cHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcAppbmRleCBiNWNiZGU2YThlMTVkOGIyOTIxYmZjMWJkOGRmOWYwY2Fk
NGNhYTM2Li41ZDgzNWZlMTcwNmQ4OTMwMGRlYWNhZTcyNWExZjEwMTBkZGQ4YjVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwCkBAIC0yNjcsMTAgKzI2NywxMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRp
bgogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsK
ICAgICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0
aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIHBvaW50ID0gdHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7
CisgICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhF
bGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1l
bnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9
IGNsaXBQYXRoRWxlbWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBj
aGlsZE5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYTQ5MDQ2NGI3
OWVhMmZkOTMwNzA1ODU0Zjk1ZDMwNmRkOGE1YTA2ZS4uY2Q1YmY3NWY2YTAwNTk4OTQ2Y2FjMzZk
ZThiZDE1ODg5OWY4OTM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2
b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFn
ZSA9IGxhc3RFZmZlY3QtPmFzSW1hZ2VCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlc3VsdEltYWdl
KSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVl
QWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNv
bHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAog
ICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0
ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5m
aWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJ
bWFnZUJ1ZmZlcigqcmVzdWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5k
ZXggMWFjYTRlNTBjZTFiODNhMzdhNzJhYTM3ZTBhZTU1M2JkOWU0ZjRmMC4uMzU5ZmQ0YmFjYmNk
ODc1NjI5ZTcxYTlmMjYyOWFmYTBmZTM2NTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmUKICAgICAvLyBPbmx5IHRlc3QgU1ZHIGNvbnRlbnQgaWYgdGhlIHBvaW50
IGlzIGluIG91ciBjb250ZW50IGJveC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4g
aW50ZXJzZWN0aW9uIHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVzdHMgYXJlIHN1cHBvcnRlZCBieSBu
b2RlQXRGbG9hdFBvaW50LgogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmNvbnRhaW5zKHBvaW50
SW5Cb3JkZXJCb3gpKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9j
YWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOwogCiAg
ICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBu
b2RlQXRGbG9hdFBvaW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMgeWV0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApp
bmRleCBmZTkxMjI2NGIyMzhmZDczMjg3MzVjYTdkY2JlYmIyNjU2ZGVhNTEzLi43NTAyNDBlNTM1
ODRkZTdhZjA4ZGE5MmRjZGUyNjY2Yjc4ZTM4NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIGJvb2wg
UmVuZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVn
cm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2lu
dCA9IG1fbG9jYWxUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1f
bG9jYWxUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJ
bkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4
IDJiYWI3YTdmYzBhMjQzMGMzMGU4NmQyNTYwMTBjMDM3YzA0ODJjYmMuLjg3MDhmNGIzOTdmMTUy
MWI4NDIzMDliZGQwZDZhMDE0NTM4ZWE2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgUmVuZGVy
U1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsCiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2li
bGUpIHsKICAgICAgICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYgKHN0eWxlKCkuc3Zn
U3R5bGUoKS5oYXNTdHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCiAgICAgICAg
ICAgICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc0Zp
bGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAgICAgICAgICAgRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwog
CiAgICAgICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEo
KnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAppbmRleCA0YzdkY2MyYzc3OTM3ZTI3OGZlMzk0OWRjNzY2MGJlOWM1MTViMWZkLi5hZjgxMGZk
ZWQyNjU4Mzc5OWU0MjZhZjZiMDg5MTY5YmM4YmI2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTM3MCw3ICszNzAsNyBA
QCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmludGVyc2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3Mo
Y29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZAogICAgIGlmIChsb2NhbFRvUm9vdFRyYW5zZm9ybS5p
c0lkZW50aXR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFmZmluZVRyYW5zZm9ybSByb290
VG9Mb2NhbFRyYW5zZm9ybSA9IGxvY2FsVG9Sb290VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gcm9vdFRvTG9jYWxUcmFu
c2Zvcm0gPSBsb2NhbFRvUm9vdFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpOwogICAgIHJlcGFpbnRSZWN0ID0gcm9vdFRvTG9jYWxUcmFuc2Zvcm0ubWFwUmVj
dChyZXBhaW50UmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDRmMzVlZDllYWEwMzkxMzRlNzBjOGNl
MjMxOTU4NWNjZGY5ZDk2OTUuLmM0YjNhYWM1YmZkMWNlOGNjNTY2MWM4ZGJiYmU0YzUzMjQ2N2Vk
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJp
bmdDb250ZXh0LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZp
CiAKICAgICAvLyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0
ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAg
ICAgLy8gU28gdGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhl
IGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LmNvbmNhdENU
TShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkp
OworICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIo
KmltYWdlQnVmZmVyLCBhYnNvbHV0ZVRhcmdldFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RN
KGFic29sdXRlVHJhbnNmb3JtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwCmluZGV4IGFlZTk0N2MwMTM2ZDljNjBjZTAyNWNiOTM3MTdmMzRhMWY5
Mjg1OTEuLmQyMzcyZmZiYWYwMDYxNTFjMGQwNjQwMWJmZWNmYmY5MjJkNDA5ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTEzMTEsNyAr
MTMxMSw3IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50
KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nCiAgICAgaWYgKGdseXBoQm91bmRpbmdC
b3gpCiAgICAgICAgIG1fbWluUmlnaHRTaWRlQmVhcmluZyA9IHN0ZDo6bWluKG1fbWluUmlnaHRT
aWRlQmVhcmluZywgaG9yaXpvbnRhbEFkdmFuY2UgLSBnbHlwaEJvdW5kaW5nQm94LnZhbHVlKCku
bWF4WCgpKTsKIAotICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwg
Z2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJv
dW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CisgICAgbV9nbHlw
aHMuYXBwZW5kKEdseXBoRGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250
YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVfb3IoRmxv
YXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CiB9CiAKIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVy
OjphcHBlbmRMaWdhdHVyZUdseXBocygpCkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBTVkdUb09URkZv
bnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcihjb25zdCBTVkdGb250RWxlbWVudCYg
Zm9udEVsZW1lbnQpCiAgICAgICAgICAgICBwcm9jZXNzR2x5cGhFbGVtZW50KGdseXBoRWxlbWVu
dCwgJmdseXBoRWxlbWVudCwgZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBkZWZhdWx0VmVydGlj
YWxBZHZhbmNlLCB1bmljb2RlQXR0cmlidXRlLCBib3VuZGluZ0JveCk7CiAgICAgfQogCi0gICAg
bV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpOworICAgIG1f
Ym91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSk7CiAKICNpZiBQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTAxMDAw
CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzIwMDg2MjIzPiBDb2NvYSBoYXMgYSBidWcgd2hlcmUg
Z2x5cGggYm91bmRpbmcgYm94ZXMgYXJlIG5vdCBjb3JyZWN0bHkgcmVzcGVjdGVkIGZvciBmcnVz
dHVtIGN1bGxpbmcuIFdvcmsgYXJvdW5kIHRoaXMgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNDhiYmQzMGQ3
NzY3YmNhNTUyZmEwODEwNTJlMDIwZjFlMDFjM2MxNC4uYzc2N2Q5YmUwNDUwMTIwNmQ0MDJmNmZh
OGY5OWVhODRhZjZjMTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTkwLDcgKzkwLDcgQEAgLSAoTlNTdHJp
bmcgKilzdHJpbmdWYWx1ZQogCiAtICh1bnNpZ25lZCBzaG9ydClwb3J0CiB7Ci0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPnBvcnQoKS52YWx1
ZU9yKDApOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3By
aXZhdGUpLT5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CiAKIC8vIEZJWE1FOiBPdmVycmlkaW5nIGlz
RXF1YWw6IHdpdGhvdXQgb3ZlcnJpZGluZyBoYXNoIHdpbGwgY2F1c2UgdHJvdWJsZSBpZiB0aGlz
IGV2ZXIgZ29lcyBpbnRvIGFuIE5TU2V0IG9yIGlzIHRoZSBrZXkgaW4gYW4gTlNEaWN0aW9uYXJ5
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDc4NGFhY2RlMDRl
NGI3NjBkYzlmZWU5YWZjOTFiZjZiMDcwNzMzMzguLjI3ODM4Y2NiMzk4MzlkZjJhMTllZGE0Yzcy
N2NiMThiNmU3OGU3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAK
QEAgLTExOSw3ICsxMTksNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KF9PdXRf
IHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZh
bHVlT3IoMCk7CisgICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZV9v
cigwKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IGQ0YWEwMTNhMzg5YTlkNDE3
NDY0MTU1OWYzYWU3MWU1ZmFhMDcwNjcuLjhkZjhmZmFhYjdjNGZhNzg4NjQ1ZTE3N2ZlYjZjMTUx
YjdhMzNiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3Vy
aXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1
cml0eU9yaWdpblJlZi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgV0tTdHJpbmdSZWYgV0tTZWN1cml0
eU9yaWdpbkNvcHlIb3N0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiAKIHVu
c2lnbmVkIHNob3J0IFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KFdLU2VjdXJpdHlPcmlnaW5SZWYg
c2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNl
Y3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHRvSW1wbChzZWN1
cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAv
LyBGb3IgYmFja3dhcmRzIEFCSSBjb21wYXRpYmlsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCA3ZWE2YTk4ZTY0MDExNzQxYzRlM2M0ZjlkYzZmYTc4MzVkYzNmYjMwLi41OTA2OTFiOGNj
M2IzOTRkZmI2Y2YxMDAyM2NhMTZkZTljYTNjZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApA
QCAtMTAxLDkgKzEwMSw5IEBAIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFn
ZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSCiAKICAgICAgICAgICAg
IGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5L
ZXkoKSktPnN0cmluZygpLCBvcmlnaW4pOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFpbHMu
Y3JlYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6
OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1lLnZhbHVlT3IoMCkpKTsK
KyAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0
ZShvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZS52YWx1ZV9vcigwKSkpOwogICAgICAgICAgICAg
aWYgKG9yaWdpbkRldGFpbHMubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRh
aWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9u
VGltZUtleSgpKS0+c3RyaW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5t
b2RpZmljYXRpb25UaW1lLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgICAgICBkZXRhaWxzTWFw
LnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtl
eSgpKS0+c3RyaW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmlj
YXRpb25UaW1lLnZhbHVlX29yKDApKSk7CiAKICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShkZXRhaWxzTWFwKSkpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
U2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggYzU1NDNhMjBiNzFlOGM5NzZlMjEyMmI5YjRiZWE0OGIz
NzUxZmM3MC4uYjcxMTJjZWUxN2JkY2MyNjliYzlmOWUyNzFkMjQwMmRhMjE2NjgyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9y
aWdpbi5tbQpAQCAtNTgsNyArNTgsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNJbnRl
Z2VyKXBvcnQKIHsKLSAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigp
LnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBfc2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5
T3JpZ2luKCkucG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW0KaW5kZXggNTc5YWZhZmE4YjI2NmQ1NzJmZGQ2ZTg0MTZmYmFmMmMz
MzI5MWRmMC4uNzQxYzZjMTNjZTA3YTg2ZjNhZWVhYTM2Yzk1ZTEyYTljMmQzYzRlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTI3NSw3
ICsyNzUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGVjaW1hbE51bWJlcj4gdG9EZWNpbWFsTnVt
YmVyKGludDY0X3QgdmFsdWUpCiAKIHN0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U3VtbWFyeUl0
ZW0+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6
OkxpbmVJdGVtJiBsaW5lSXRlbSkKIHsKLSAgICByZXR1cm4gW2dldFBLUGF5bWVudFN1bW1hcnlJ
dGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudC52YWx1ZU9yKDApKS5nZXQoKSB0eXBlOnRvUEtQ
YXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKKyAgICByZXR1cm4gW2dldFBL
UGF5bWVudFN1bW1hcnlJdGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5s
YWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudC52YWx1ZV9vcigwKSku
Z2V0KCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CiB9
CiAKIHN0YXRpYyBQS01lcmNoYW50Q2FwYWJpbGl0eSB0b1BLTWVyY2hhbnRDYXBhYmlsaXRpZXMo
Y29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzJiBtZXJj
aGFudENhcGFiaWxpdGllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAyN2IxZjE2MGQ4
Zjc4ZjdlYWY1NWRkMWQ4MzNhN2QxMmVkOTc5NmExLi4yMjNmMGNiMmU3ZGFkY2E5MzhkNTUzNTMx
NTJkZjdhNTQwNDY4OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
ZXJyb3JOYW1lQW5kRGV0YWlsc1NlcGFyYXRvciA9ICI7IjsKIAogLy8gTWFrZSBzdXJlIHRoZSBw
cmVkZWZpbmVkIGVycm9yIG5hbWUgaXMgdmFsaWQsIG90aGVyd2lzZSB1c2UgSW50ZXJuYWxFcnJv
ci4KLSNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmlu
ZykudmFsdWVPcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6
OkludGVybmFsRXJyb3IpCisjZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3Ry
aW5nKSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2Fn
ZT4oZXJyb3JTdHJpbmcpLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkVycm9yTWVzc2FnZTo6SW50ZXJuYWxFcnJvcikKIAogLy8gSWYgdGhlIGVycm9yIG5hbWUgaXMg
aW5jb3JyZWN0IGZvciB0aGVzZSBtYWNyb3MsIGl0IHdpbGwgYmUgYSBjb21waWxlLXRpbWUgZXJy
b3IuCiAjZGVmaW5lIFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKGVycm9yTmFtZSkg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZh
bHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6ZXJyb3JO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNw
cAppbmRleCBmMmEyODk4OWIyMjM3OGQwMmVjOWI2NTlhMjQ2ZWE3NWM2ZmViMDQ2Li4xOWFhNzQ5
OTI0N2IxNzQ5OGI0ZTE4MzExZjlkYWRmNWEzN2YyNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIHZv
aWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0
YXRlIGJhY2tGb3J3YXJkTGlzdFN0CiAgICAgICAgIGl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKSk7CiAgICAgfQogICAgIG1faGFzQ3VycmVudEluZGV4ID0g
ISFiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXg7Ci0gICAgbV9jdXJyZW50SW5kZXgg
PSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWVPcigwKTsKKyAgICBtX2N1
cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZV9vcigw
KTsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggZDdmN2I0NzBhNDcxMWI1N2FiZGE3NzdmNDNl
M2VlYWY0ZGJlNDUxNy4uN2ZkYjMzYjUzNjM2OWVhNDZhZDcwN2I3YzU5ZjAzNjEzYTFiZmRhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC0zNDgsNyArMzQ4
LDcgQEAgdm9pZCBXZWJWaWV3OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmUKIAogQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6
OnRyYW5zZm9ybUZyb21TY2VuZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybVRvU2Nl
bmUoKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgcmV0dXJuIHRy
YW5zZm9ybVRvU2NlbmUoKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwog
fQogCiBBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtVG9TY2VuZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0
ZUNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25T
dGF0ZUNvZGluZy5jcHAKaW5kZXggMDE2YzZiOTMzNDY1M2NmZWEyMjkwYjIxNjUwMGFiMDA5MjFi
ZGU2Zi4uNjdlYWEwZDU0ZDJkMzc3ZDQwMzkyY2ZmNWMzY2QzNDhhMjZkZTFmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRl
Q29kaW5nLmNwcApAQCAtMjgyLDggKzI4Miw4IEBAIHN0YXRpYyB2b2lkIGVuY29kZUZvcm1EYXRh
RWxlbWVudChIaXN0b3J5RW50cnlEYXRhRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSFRUUEJvCiAg
ICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiAKICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZp
bGVTdGFydDsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcigt
MSk7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lLnZhbHVlT3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7Cisg
ICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKC0xKTsKKyAgICAg
ICAgZW5jb2RlciA8PCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVf
b3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRl
ZFBERlBsdWdpbi5tbQppbmRleCA1ZWRlNTZlZWU0MGFjZmRiOTkwMTE5ZGU3YWNlOTE4ZTY3OGJj
NjY2Li5mOTYxYTM1OTE1NDExNTcxNDc4ZDQwNzQ0NDIxMzQ0YWY5YTA4YzVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVn
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNh
dGVkUERGUGx1Z2luLm1tCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBJbnRQb2ludCBQREZQbHVnaW46
OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0
CiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEludFBvaW50IHBvaW50SW5QbHVnaW5Db29y
ZGluYXRlcyhwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0
dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1
cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogRmxv
YXRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRS
ZWN0JiByZWN0KSBjb25zdApAQCAtMTIwNyw3ICsxMjA3LDcgQEAgRmxvYXRSZWN0IFBERlBsdWdp
bjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKICAgICBGbG9hdFBvaW50IG9yaWdpbklu
UGx1Z2luQ29vcmRpbmF0ZXMocmVjdC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHJlY3QueSgpIC0g
cmVjdC5oZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFJlY3QoRmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJl
Y3Quc2l6ZSgpKSk7CisgICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBt
X3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBSZWN0KEZsb2F0UmVjdChvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0
LnNpemUoKSkpOwogCiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNs
b3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KQEAgLTEyMjAsNyAr
MTIyMCw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOwogICAgIHJldHVy
biBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHZvaWQgUERGUGx1
Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJ
bnRSZWN0JiwgY29uCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7
Ci0gICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBz
ZXRGcmFtZVNpemU6cGx1Z2luU2l6ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IGRiNGVjM2U0MTI5OWY2OTI5NjFmNzRkZDIxNmM5N2M2ZGE0NjEyMzUuLjdlZmEwNzQz
NDQzNTYxOTgyMjQxMDIwMDFmOTc5NTgwNGZhMmYzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05MzIsNyArOTMyLDcg
QEAgSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHZvaWQgUERGUGx1
Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
KQogewogICAgIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm07Ci0gICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAg
bV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIG1fc2l6ZSA9IHBsdWdp
blNpemU7CiAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFt
ZSgpLT52aWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCAx
Y2E3ZjQ0OTdhNzk4YjNlNWRlZDRhZWViMThlYWNjMmYxOWFhNzcxLi4yOGY3NTdmZmUwYjQzNDZm
MjYzNzk5ZjA0N2Y3NjE0N2I2ODQ0Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
dG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAg
ICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZp
bGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKGludmFs
aWRGaWxlVGltZSgpKSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVs
ZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFs
dWVfb3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9k
aWZpY2F0aW9uVGltZS52YWx1ZV9vcihpbnZhbGlkRmlsZVRpbWUoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYjhlZDllYjJhMjBmNTUwZTM4ZjY0
ODhhNDkwNmRjNTIzYmMyMjQ0Ny4uYmRlNjYyYjY0NTU0OTgwOTAxZWVmMzVjODIxYWJiNzVmYjc2
OTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQ1NCw3ICs0NTQs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0
aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYQogICAgIHdlYlBhZ2UtPnNhbmRib3hFeHRlbnNp
b25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAgICAgLy8g
Tm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVu
dExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlw
ZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBkb2N1bWVudExv
YWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0
dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50
KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVy
Lm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1f
ZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21wdXRlKGRv
Y3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENl
cnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlz
UGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5n
ZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBlOWJi
YjJiYTc5OTQxMGIzYjA2NDY0OGMxNDk4NTk5YTNkZTExOWYzLi5lMThhOTc4OWYxYWQzNjg3YTFh
YzliYzEwNGI0NGRiZDJiNTBiODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTQyMCw3ICs0MjAsNyBAQCBDZXJ0aWZpY2F0ZUluZm8g
V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudExvYWRl
cikKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0
aWZpY2F0ZUluZm8oKTsgfSk7CisgICAgcmV0dXJuIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9h
ZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBDZXJ0aWZpY2F0
ZUluZm8oKTsgfSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6aW5uZXJUZXh0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNWYwYmUw
OWFiNGZmZmNiNzFhMDE4M2MxODlhZjgxOGNlYTM1M2RlLi5jODA0NjU0ODFiZjI5M2ZiZTVmOGZi
YjMzYjlmMDEyMWU1NWY2ZjRiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGli
YysrIG9wdGlvbmFsIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6dGVzdFBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
aGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKwogMjAxNi0xMC0zMCAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJRExdIFJlc3RydWN0
dXJlIElETFBhcnNlciBzdHJ1Y3RzIHRvIGJldHRlciBtYXRjaCBtb2Rlcm4gV2ViSURMIGNvbmNl
cHRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKaW5kZXggYTA3
MTVmZDYyZmU3NmMxMDJjNDQzYTFjNzc0NmY2ZDRiODhjNzRiYi4uMDc1NzViMTY5MGJjOGFiNGJl
Zjc0MjNiMzk3NTMyNDk1NDg3M2RmZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvT3B0aW9uYWwuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L09wdGlvbmFsLmNwcApAQCAtNzYsNyArNzYsNyBAQCBURVNUKFdURl9PcHRpb25hbCwgQ2FsbGJh
Y2spCiB7CiAgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKICAgICBPcHRpb25hbDxpbnQ+IGE7Ci0g
ICAgaW50IHJlc3VsdCA9IGEudmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICBpbnQgcmVzdWx0ID0g
dmFsdWVPckNvbXB1dGUoYSwgWyZdIHsKICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKICAgICAgICAg
cmV0dXJuIDMwMDsKICAgICB9KTsKQEAgLTg1LDcgKzg1LDcgQEAgVEVTVChXVEZfT3B0aW9uYWws
IENhbGxiYWNrKQogCiAgICAgYSA9IDI1MDsKICAgICBjYWxsZWQgPSBmYWxzZTsKLSAgICByZXN1
bHQgPSBhLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgcmVzdWx0ID0gdmFsdWVPckNvbXB1dGUo
YSwgWyZdIHsKICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIDMwMDsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCAwZjFjMDJkOWU2Y2E4NWMwOWNiNDk2Y2IzN2YxMmMyOTlm
NThmZWY4Li42ZTllNzM4YWI1YmNlMWRmYWJmYjQyZjYwZWI3YjJmMmI2NDVjYjRmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBpbnQgdGVzdFBhcnNlSFRNTEludGVnZXIo
Y29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VI
VE1MSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7Ci0g
ICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlvbmFs
UmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRlZ2VyRmFp
bHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgdGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQog
ewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
aW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJldHVybiBv
cHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1
ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyRmFp
bHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5kZXggNDdjZDA3Mjk3YjQ5ZGQ4NmY0OGUwNWM2ZjJlNTVh
NzU3MWViNWQ4Yi4uMTFhYWM2ODQ0ZWZlYjNmYjY3YTc1ODUzYjAwNTU4ZjdmOTE2ZDhiNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigw
KSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMDgsNyArMTA4
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51
c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQs
IG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCBvbGRVUkwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVP
cigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7
CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0
LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFs
dWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0zNjQs
NyArMzY0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy51c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCBv
bGRVUkwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCku
dmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFs
dWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVSTC5wYXRoKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmll
cigpKSk7CkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNl
cyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGEKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBv
cnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQs
IHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBh
dGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVyeSwgdXJs
LnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC00OTAsNyArNDkwLDcgQEAgc3RhdGljIHZvaWQgY2hl
Y2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQ
YXJ0cyYgcGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRVUkwudXNlcigp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0g
ICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7Cisg
ICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c09sZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c09sZC5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigp
KSk7CkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZl
cmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQs
IHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVy
bC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgs
IHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVyeSwgdXJsLnF1
ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpKSk7CkBAIC01MzUsNyArNTM1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tS
ZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRVUkwudXNlcigpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0gICAg
RVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAg
RVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c09sZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c09sZC5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7
CkBAIC0xMTg3LDcgKzExODcsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29ucwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhv
c3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52
YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9v
cigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTEy
MTMsNyArMTIxMyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293388</attachid>
            <date>2016-10-30 21:35:15 -0700</date>
            <delta_ts>2016-10-30 21:42:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031133119.patch</filename>
            <type>text/plain</type>
            <size>154224</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi5hZmI3NGZmMGJiNDc4NzA4
ZmE0YmMyZWY4NzhjNjVjMGM2MDIwMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RG
OjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisKIDIwMTYtMTAtMjkgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJp
bmdpZnkgc2hvdWxkIGhhbmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJh
eSBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAu
LjMzYTZlZGM2MWM5M2E4Nzk0M2Y3YjVkODEzODEzYWQzZWY1MmQ2MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTUgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0
aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cG9ydCBMTFZNIGxpYmMrKydzIGV4cGVyaW1lbnRhbC9vcHRpb25hbC4gSXQgaGFzIHRoZSBzYW1l
CisgICAgICAgIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSB0byB0aGUgQysrMTcncyBvbmUu
IFByZXZpb3VzCisgICAgICAgIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFs
aXRpZXMuIFRoZSBsYXJnZXN0IG9uZQorICAgICAgICBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIg
Y29uc3RydWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBP
cHRpb25hbDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluCisgICAgICAgIFdl
YktpdC4KKworICAgICAgICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3Ry
dWN0b3JzLiBTbyBvbmx5IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhl
IHdheSB0byB1c2UgV1RGOjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGds
b2JhbCB2YXJpYWJsZXMuIFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBh
bmQKKyAgICAgICAgd2Ugd291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFy
aWFibGVzIHRoYXQgaW5jbHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBp
cyB0aGUgbWFpbiBtb3RpdmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlv
bmFsaXR5IGFsbG93cyB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAg
ICAgIHNpZ25hdHVyZXMgYXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAg
ICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6YmFkX29wdGlvbmFsX2FjY2Vzczo6
YmFkX29wdGlvbmFsX2FjY2Vzcyk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
fl9fb3B0aW9uYWxfc3RvcmFnZSk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
X19vcHRpb25hbF9zdG9yYWdlKToKKyAgICAgICAgKFdURjo6X19vcHRpb25hbF9zdG9yYWdlOjpu
b2V4Y2VwdCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6CisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6bm9leGNl
cHQpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZW1wbGFjZSk6CisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yKik6
CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpfX3Rocm93X2JhZF9vcHRpb25hbF9hY2Nlc3MpOgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWUpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6
dmFsdWVfb3IpOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPCk6CisgICAgICAgIChXVEY6Om9wZXJh
dG9yPik6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPD0pOgorICAgICAgICAoV1RGOjpvcGVyYXRv
cj49KToKKyAgICAgICAgKFdURjo6bm9leGNlcHQpOgorICAgICAgICAoV1RGOjptYWtlT3B0aW9u
YWwpOgorICAgICAgICAoV1RGOjpOdWxsb3B0VGFnOjpOdWxsb3B0VGFnKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uYWw6On5PcHRpb25hbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
Ok9wdGlvbmFsOjpvcGVyYXRvciBib29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9u
YWw6OnZhbHVlT3IpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPckNv
bXB1dGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6YXNQdHIpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZGVzdHJveSk6IERlbGV0ZWQuCisKIDIwMTYtMTAt
MzAgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBIYXJm
QnV6eiBvdC1tYXRoIEFQSSB0byBwYXJzZSB0aGUgT3BlblR5cGUgTUFUSCB0YWJsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGY1ODUyZGIzODZiZTIzOTZlODFiODU1NjRmNGY0YTBmM2VmYzEzYzIuLmQ4NzVkOWIw
NjAyNTA4YzhjZWYzZjk3ZjY3Mzg0OGY1ZTg2YjVmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NzIgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0
aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmFtZSB2YWx1ZU9yIHRvIHZhbHVlX29yLiBUaGlzIGlzIHNwZWNpZmllZCBpbiBDKysxNyBwcm9w
b3NhbC4KKworICAgICAgICBVc2UgT3B0aW9uYWw6OmVtcGxhY2UuIEMrKzE3IE9wdGlvbmFsOjpv
cGVyYXRvcj0oT3B0aW9uYWwmJikgcmVxdWlyZXMKKyAgICAgICAgZWl0aGVyIGNvcHkgYXNzaWdu
bWVudCBvcGVyYXRvciBvciBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEJ1dAorICAgICAgICBE
Rkc6OkpTVmFsdWVPcGVyYW5kIGV0Yy4gb25seSBkZWZpbmVzIG1vdmUgY29uc3RydWN0b3JzIGFu
ZCBkcm9wCisgICAgICAgIGltcGxpY2l0IGNvcHkgYXNzaWdubWVudCBvcGVyYXRvcnMuCisKKyAg
ICAgICAgSXQgd2FzIE9LIGluIHRoZSBwcmV2aW91cyBXVEY6Ok9wdGlvbmFsIHNpbmNlIGl0IGFs
d2F5cyB1c2VzIG1vdmUKKyAgICAgICAgY29uc3RydWN0b3JzLiBCdXQgaXQgaXMgbm90IHZhbGlk
IGluIEMrKzE3IE9wdGlvbmFsLiBXZSB1c2UgT3B0aW9uYWw6OmVtcGxhY2UKKyAgICAgICAgaW5z
dGVhZC4gVGhpcyBmdW5jdGlvbiBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91
cyBXVEY6Ok9wdGlvbmFsJ3MKKyAgICAgICAgb3BlcmF0b3I9LgorCisgICAgICAgIE5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aGFzaCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJGYWN0b3J5OjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRN
Rik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01Qcm9taXNlOjpET01Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21p
c2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpzd2FwKToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmRvdWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjphZGRSdWxlKToKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxCeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKToKKyAgICAg
ICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlv
bk9ic2VydmVyOjpvYnNlcnZlKToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnRvZ2dsZSk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluU3Ryb2tlSW50
ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVm
bGlnaHQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmRhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmlu
Zyk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luSGFzaDo6aGFzaCk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpYWxvZ0ZlYXR1cmVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVv
T3V0cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6bWFwQWJz
b2x1dGVQb2ludFRvTG9jYWxQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dHJh
bnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBwZWRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0
ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6OnN1YnN0cmluZ1RvUmVuZGVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUGFpbnRJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFwcGx5VHJhbnNm
b3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5Cb3hBc2NlbnRGb3JD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRT
aXplRm9yTWluQW5kTWF4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OnNldEdyb3d0aExpbWl0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVz
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9m
R3JpZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjptaW5TaXplRm9yQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRy
YWNrU2l6aW5nRnVuY3Rpb25zRm9yTm9uU3Bhbm5pbmdJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
Ojpzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpwYWludEl0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6bGlzdEluZGV4SXNWaXNpYmxl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdo
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnN0cmluZ1Zp
ZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MQmxvY2s6OmFzY2VudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250
YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6Omhp
dFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjppbnRl
cnNlY3RSZXBhaW50UmVjdFdpdGhTaGFkb3dzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJv
Y2Vzc0dseXBoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0
ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6CisKIDIwMTYtMTAtMzAgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2RlTWFwLCBh
bmQgRE9NU3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCBjZjZhZTYxZDk5NDU0YmMwYjk5MDE4MWViNDRiMmIzMzM0MjVkYzM1Li5mNTI2
N2E0MTFjZjk0N2E2ZGRmODE0MzFjMTg1NzRhZmZkOGY3NmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFz
IFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgt
W1dlYlNlY3VyaXR5T3JpZ2luIHBvcnRdKToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAsIGFu
ZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCmluZGV4IDFhNjZhZjcwNWYwZjZlMDgyN2M3ZDA4N2E2YTlkYjU3ODYzZWYyMDcuLmVmOWFl
MzgyZmI1Yzk3NDQ1MmNlMzMxODU4OGViMTA2ZjYzMzcxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdp
bjo6cG9ydCk6CisKIDIwMTYtMTAtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2RlTWFwLCBhbmQgRE9NU3RyaW5nTWFwIGZy
b20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxNjc2ZWE5NDE1MjE5
YTU2NTA4YjAxNDcwZThiZTk1NjBkZmRkYTFmLi42ZDYwMzBjOGZhYjlmNzA2OGM4NmIwMmU3N2Vm
NjdlZDhhZjdmNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMTAtMzAgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1w
b3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1cml0eU9yaWdpbkdldFBvcnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tOgorICAg
ICAgICAoLVtXS1NlY3VyaXR5T3JpZ2luIHBvcnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3Q6OnJlc3RvcmVGcm9tU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnRyYW5zZm9ybUZyb21TY2VuZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAg
ICAoV2ViS2l0OjplbmNvZGVGb3JtRGF0YUVsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5n
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8pOgorCiAyMDE2LTEwLTMwICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVsZW1lbnQsIE5hbWVkTm9kZU1h
cCwgYW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDdi
NTdiMTg5MjkzNzA2MTBiNzNhMDBjZTVjNTA5ZDMxY2ZiNTU2MWYuLjExOWQ2ZGJlYzIyNTVjMjRk
NzRmNjcyOWJmNjZmMGIzN2M0YmM1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zMjUyLDExICszMjUyLDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FT
U0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsK
IAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywg
bGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAg
IH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmlnaHQgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0
aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgfQogCkBAIC0zNDA1LDExICszNDA1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAK
ICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0ID0gSlNWYWx1
ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxl
ZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9
CiAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNW
YWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhp
cywgcmlnaHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygp
OwogICAgIH0KIApAQCAtMzU0Niw3ICszNTQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkK
IAogICAgIE9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByU2NyYXRjaDsKICAgICBpZiAobmVlZHNT
Y3JhdGNoRlBSUmVnKSB7Ci0gICAgICAgIGZwclNjcmF0Y2ggPSBGUFJUZW1wb3JhcnkodGhpcyk7
CisgICAgICAgIGZwclNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAgc2NyYXRjaEZQUiA9
IGZwclNjcmF0Y2gtPmZwcigpOwogICAgIH0KIApAQCAtMzU4MCwxMSArMzU4MCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSQogICAgIEFTU0VSVCghKEdlbmVyYXRvcjo6aXNMZWZ0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQobGVmdE9wZXJhbmQpICYmIEdlbmVyYXRvcjo6aXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KHJpZ2h0T3BlcmFuZCkpKTsKIAogICAgIGlmICghR2VuZXJhdG9yOjppc0xl
ZnRPcGVyYW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkpIHsKLSAgICAgICAgbGVmdCA9IEpT
VmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlz
LCBsZWZ0Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAg
ICAgfQogICAgIGlmICghR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmln
aHRPcGVyYW5kKSkgewotICAgICAgICByaWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0
Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAg
ICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM2NDksMTAg
KzM2NDksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2Rl
LCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICAgICAgfSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKEdlbmVyYXRvcjo6aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQo
bGVmdE9wZXJhbmQpKSB7Ci0gICAgICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywg
bGVmdENoaWxkKTsKKyAgICAgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOwog
ICAgICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9IGVs
c2UgaWYgKEdlbmVyYXRvcjo6aXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KHJpZ2h0T3BlcmFu
ZCkpIHsKLSAgICAgICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGls
ZCk7CisgICAgICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAg
ICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KIApAQCAt
NDc2NiwxMSArNDc2NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhEaXYo
Tm9kZSogbm9kZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3Qo
KSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAgICAgICAgaWYgKCFsZWZ0T3BlcmFu
ZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAg
ICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgICAgICByaWdodCA9
IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgcmlnaHQuZW1w
bGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5q
c1ZhbHVlUmVncygpOwogICAgICAgICB9CiAKQEAgLTcyNzcsNyArNzI3Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUpCiAgICAgT3B0aW9u
YWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKICAgICBpZiAocGF0Y2hwb2lu
dC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgewogICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdl
ID0gbm9kZS0+Y2hpbGQyKCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdCA9IFNwZWN1bGF0ZUNlbGxP
cGVyYW5kKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOworICAgICAgICBnbG9iYWxPYmplY3QuZW1w
bGFjZSh0aGlzLCBnbG9iYWxPYmplY3RFZGdlKTsKICAgICAgICAgcmVncy5hcHBlbmQoRE9NSklU
OjpWYWx1ZShnbG9iYWxPYmplY3QtPmdwcigpLCBtX3N0YXRlLmZvck5vZGUoZ2xvYmFsT2JqZWN0
RWRnZSkudmFsdWUoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggOGY3MmIxZThkYjYxZDdmMzNl
MzAzZDNiNzNkNWIzZjUyYmVjZThmOC4uZjk4ZTE0NWRmNDViMGFjOTU3MmQzZjU4ZGMxOWViMzMy
MzAyYmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCkBAIC01MDQ1LDExICs1MDQ1LDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJh
bmQ+IGtleUFzVmFsdWU7CiAgICAgICAgIEpTVmFsdWVSZWdzIGtleVJlZ3M7CiAgICAgICAgIGlm
IChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewotICAgICAgICAgICAg
a2V5QXNWYWx1ZSA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIGtleUFzVmFsdWUuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
ICAgICBrZXlSZWdzID0ga2V5QXNWYWx1ZS0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlIHx8IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTeW1ib2xVc2UpOwotICAgICAgICAg
ICAga2V5QXNDZWxsID0gU3BlY3VsYXRlQ2VsbE9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAga2V5QXNDZWxsLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwog
ICAgICAgICAgICAga2V5UmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShrZXlBc0NlbGwt
PmdwcigpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBmODljMWU2OTc1NjliMzI4YzFiMmRkNDI1ZGUz
NWU0ZjQyYTM3NDg2Li41ZjE3M2I2MDk0NThmMDA4NjU3ODdmMmJjMGFkNzdjYzMzY2MxMjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTUxOTUsMTEgKzUxOTUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsK
ICAgICAgICAgR1BSUmVnIGtleUdQUjsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICBrZXlBc1ZhbHVlID0gSlNWYWx1ZU9w
ZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAga2V5QXNWYWx1ZS5lbXBs
YWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtleUFzVmFs
dWUtPmdwcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UgfHwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgp
ID09IFN5bWJvbFVzZSk7Ci0gICAgICAgICAgICBrZXlBc0NlbGwgPSBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc0NlbGwuZW1wbGFj
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBrZXlHUFIgPSBrZXlBc0NlbGwt
PmdwcigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQpp
bmRleCAxMmY5NTRjMDM0OWMxYmZjNzMzMDNkNjI5ZmRmMWZlYmE1NjI1NTdjLi4wNDgyYzc4YTU4
ZmI1ODAyY2QxODc3MTJlYmFlMmE2MDllNDQyYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Lm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2EK
ICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJn
ZXRNdXRleCk7CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3RhcmdldC0+cmVtb3Rl
Q29udHJvbEFsbG93ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2lu
Z2xldG9uKCkuc2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRpZmllcigpLnZhbHVlT3IoMCkpOworICAg
ICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0dXBGYWlsZWQodGFy
Z2V0SWRlbnRpZmllcigpLnZhbHVlX29yKDApKTsKICAgICAgICAgICAgICAgICBtX3RhcmdldCA9
IG51bGxwdHI7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbW90ZUluc3BlY3Rpb25UYXJn
ZXQ+KG1fdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgIGF1dG8gY2FzdGVkVGFyZ2V0ID0gZG93
bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4obV90YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKaW5kZXgg
NGNiNTNiZjU3ZjgyOWU0NGRhOWZiZDQ5ZDZmZDljOGM5OGM5NDRkNC4uNTM1NmU3YTFlM2U4NTBk
MzY0ZDQ2NDk1ZGM0YmNkZTcxYmJmYThhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT3B0
aW9uYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCkBAIC0xLDI3MyArMSwxMDA2
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBPcHRpb25hbF9oCi0jZGVmaW5lIE9wdGlvbmFsX2gK
Ky8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gbGliYysrIExpY2Vuc2UKKy8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorLy8KKy8vIFRoZSBsaWJjKysgbGlicmFyeSBpcyBkdWFsIGxpY2Vuc2Vk
IHVuZGVyIGJvdGggdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMKKy8vICJCU0QtTGlrZSIgbGlj
ZW5zZSBhbmQgdGhlIE1JVCBsaWNlbnNlLiAgQXMgYSB1c2VyIG9mIHRoaXMgY29kZSB5b3UgbWF5
IGNob29zZQorLy8gdG8gdXNlIGl0IHVuZGVyIGVpdGhlciBsaWNlbnNlLiAgQXMgYSBjb250cmli
dXRvciwgeW91IGFncmVlIHRvIGFsbG93IHlvdXIgY29kZQorLy8gdG8gYmUgdXNlZCB1bmRlciBi
b3RoLgorLy8KKy8vIEZ1bGwgdGV4dCBvZiB0aGUgcmVsZXZhbnQgbGljZW5zZXMgaXMgaW5jbHVk
ZWQgYmVsb3cuCisvLworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLworLy8gVW5pdmVyc2l0
eSBvZiBJbGxpbm9pcy9OQ1NBCisvLyBPcGVuIFNvdXJjZSBMaWNlbnNlCisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDA5LTIwMTYgYnkgdGhlIGNvbnRyaWJ1dG9ycyBsaXN0ZWQgaW4gQ1JFRElUUy5U
WFQKKy8vCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIERldmVsb3BlZCBieToKKy8v
CisvLyAgICAgTExWTSBUZWFtCisvLworLy8gICAgIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQg
VXJiYW5hLUNoYW1wYWlnbgorLy8KKy8vICAgICBodHRwOi8vbGx2bS5vcmcKKy8vCisvLyBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5IG9mCisvLyB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCB3aXRoCisvLyB0aGUgU29m
dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0
aGUgcmlnaHRzIHRvCisvLyB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry
aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcworLy8gb2YgdGhlIFNvZnR3YXJl
LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVk
IHRvIGRvCisvLyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisvLwor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLAorLy8gICAgICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXJzLgorLy8KKy8vICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwKKy8vICAgICAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVycyBpbiB0aGUKKy8vICAgICAgICAgICAgICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWVzIG9mIHRoZSBMTFZNIFRlYW0sIFVuaXZl
cnNpdHkgb2YgSWxsaW5vaXMgYXQKKy8vICAgICAgICAgICBVcmJhbmEtQ2hhbXBhaWduLCBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8KKy8vICAgICAgICAg
ICAgICAgICBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgU29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYworLy8gICAgICAgICAgICAgICAgICAgICAgIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksIEZJVE5FU1MKKy8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisvLyBDT05UUklCVVRPUlMgT1IgQ09QWVJJ
R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKy8v
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIFdJVEggVEhFCisvLyBTT0ZU
V0FSRS4KKy8vCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMDktMjAxNCBieSB0aGUgY29udHJpYnV0b3JzIGxpc3RlZCBpbiBDUkVESVRTLlRYVAorLy8K
Ky8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisvLyBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUgcmlnaHRzCisvLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCisvLyBjb3BpZXMgb2YgdGhlIFNv
ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKy8v
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
CisvLworLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg
cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQVVUSE9SUyBPUiBDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgor
Ly8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KKy8vIFRIRSBTT0ZU
V0FSRS4KKworLy8gQ29waWVkIGZyb20gaHR0cDovL2xsdm0ub3JnL3N2bi9sbHZtLXByb2plY3Qv
bGliY3h4L3RydW5rL2luY2x1ZGUvZXhwZXJpbWVudGFsL29wdGlvbmFsIChyMjg1NTI0KQorCisv
LyBNb2RpZmllZCB0byBtYWtlIGl0IGNvbXBpbGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgor
CisjcHJhZ21hIG9uY2UKIAorLyoKKyAgICBvcHRpb25hbCBzeW5vcHNpcworCisvLyBDKysxeQor
CituYW1lc3BhY2Ugc3RkIHsgbmFtZXNwYWNlIGV4cGVyaW1lbnRhbCB7IGlubGluZSBuYW1lc3Bh
Y2UgZnVuZGFtZW50YWxzX3YxIHsKKworICAgIC8vIDUuMywgb3B0aW9uYWwgZm9yIG9iamVjdCB0
eXBlcworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBvcHRpb25hbDsKKworICAgIC8vIDUu
NCwgSW4tcGxhY2UgY29uc3RydWN0aW9uCisgICAgc3RydWN0IGluX3BsYWNlX3R7fTsKKyAgICBj
b25zdGV4cHIgaW5fcGxhY2VfdCBpbl9wbGFjZXt9OworCisgICAgLy8gNS41LCBOby12YWx1ZSBz
dGF0ZSBpbmRpY2F0b3IKKyAgICBzdHJ1Y3QgbnVsbG9wdF90e3NlZSBiZWxvd307CisgICAgY29u
c3RleHByIG51bGxvcHRfdCBudWxsb3B0KHVuc3BlY2lmaWVkKTsKKworICAgIC8vIDUuNiwgQ2xh
c3MgYmFkX29wdGlvbmFsX2FjY2VzcworICAgIGNsYXNzIGJhZF9vcHRpb25hbF9hY2Nlc3M7CisK
KyAgICAvLyA1LjcsIFJlbGF0aW9uYWwgb3BlcmF0b3JzCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+
CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29u
c3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBvcHRpb25hbDxUPiYp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBvcHRpb25hbDxU
PiYsIGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9u
YWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBvcHRpb25hbDxUPiYpOworCisgICAg
Ly8gNS44LCBDb21wYXJpc29uIHdpdGggbnVsbG9wdAorICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBu
b2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8VD4mLCBu
dWxsb3B0X3QpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9uYWw8VD4mKSBub2V4Y2VwdDsKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG9wdGlv
bmFsPFQ+JiwgbnVsbG9wdF90KSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9uYWw8VD4mKSBub2V4
Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0obnVsbG9wdF90LCBjb25zdCBvcHRpb25h
bDxUPiYpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIG5vZXhjZXB0OworICAgIHRl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4obnVsbG9wdF90LCBjb25z
dCBvcHRpb25hbDxUPiYpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBub2V4Y2Vw
dDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShudWxs
b3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9leGNlcHQ7CisKKyAgICAvLyA1LjksIENvbXBh
cmlzb24gd2l0aCBUCisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYsIGNvbnN0IG9wdGlvbmFsPFQ+
Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYsIGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRpb25h
bDxUPiYsIGNvbnN0IFQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29u
c3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBUJiwg
Y29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBvcHRpb25hbDxUPiYsIGNvbnN0IFQmKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiwgY29uc3Qgb3B0
aW9uYWw8VD4mKTsKKworICAgIC8vIDUuMTAsIFNwZWNpYWxpemVkIGFsZ29yaXRobXMKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gdm9pZCBzd2FwKG9wdGlvbmFsPFQ+Jiwgb3B0aW9uYWw8VD4mKSBu
b2V4Y2VwdChzZWUgYmVsb3cpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgb3B0
aW9uYWw8c2VlIGJlbG93PiBtYWtlX29wdGlvbmFsKFQmJik7CisKKwl0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KKwljbGFzcyBvcHRpb25hbAorCXsKKwlwdWJsaWM6CisJICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKKworCSAgLy8gNS4zLjEsIENvbnN0cnVjdG9ycworCSAgY29uc3RleHByIG9wdGlvbmFsKCkg
bm9leGNlcHQ7CisJICBjb25zdGV4cHIgb3B0aW9uYWwobnVsbG9wdF90KSBub2V4Y2VwdDsKKwkg
IG9wdGlvbmFsKGNvbnN0IG9wdGlvbmFsJik7CisJICBvcHRpb25hbChvcHRpb25hbCYmKSBub2V4
Y2VwdChzZWUgYmVsb3cpOworCSAgY29uc3RleHByIG9wdGlvbmFsKGNvbnN0IFQmKTsKKwkgIGNv
bnN0ZXhwciBvcHRpb25hbChUJiYpOworCSAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGNvbnN0
ZXhwciBleHBsaWNpdCBvcHRpb25hbChpbl9wbGFjZV90LCBBcmdzJiYuLi4pOworCSAgdGVtcGxh
dGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisJCWNvbnN0ZXhwciBleHBsaWNpdCBvcHRpb25h
bChpbl9wbGFjZV90LCBpbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOworCisJICAvLyA1
LjMuMiwgRGVzdHJ1Y3RvcgorCSAgfm9wdGlvbmFsKCk7CisKKwkgIC8vIDUuMy4zLCBBc3NpZ25t
ZW50CisJICBvcHRpb25hbCYgb3BlcmF0b3I9KG51bGxvcHRfdCkgbm9leGNlcHQ7CisJICBvcHRp
b25hbCYgb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsJik7CisJICBvcHRpb25hbCYgb3BlcmF0b3I9
KG9wdGlvbmFsJiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7CisJICB0ZW1wbGF0ZSA8Y2xhc3MgVT4g
b3B0aW9uYWwmIG9wZXJhdG9yPShVJiYpOworCSAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IHZv
aWQgZW1wbGFjZShBcmdzJiYuLi4pOworCSAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFy
Z3M+CisJCXZvaWQgZW1wbGFjZShpbml0aWFsaXplcl9saXN0PFU+LCBBcmdzJiYuLi4pOworCisJ
ICAvLyA1LjMuNCwgU3dhcAorCSAgdm9pZCBzd2FwKG9wdGlvbmFsJikgbm9leGNlcHQoc2VlIGJl
bG93KTsKKworCSAgLy8gNS4zLjUsIE9ic2VydmVycworCSAgY29uc3RleHByIFQgY29uc3QqIG9w
ZXJhdG9yIC0+KCkgY29uc3Q7CisJICBjb25zdGV4cHIgVCogb3BlcmF0b3IgLT4oKTsKKwkgIGNv
bnN0ZXhwciBUIGNvbnN0JiBvcGVyYXRvciAqKCkgY29uc3QgJjsKKwkgIGNvbnN0ZXhwciBUJiBv
cGVyYXRvciAqKCkgJjsKKwkgIGNvbnN0ZXhwciBUJiYgb3BlcmF0b3IgKigpICYmOworCSAgY29u
c3RleHByIGNvbnN0IFQmJiBvcGVyYXRvciAqKCkgY29uc3QgJiY7CisJICBjb25zdGV4cHIgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5vZXhjZXB0OworCSAgY29uc3RleHByIFQgY29u
c3QmIHZhbHVlKCkgY29uc3QgJjsKKwkgIGNvbnN0ZXhwciBUJiB2YWx1ZSgpICY7CisJICBjb25z
dGV4cHIgVCYmIHZhbHVlKCkgJiY7CisJICBjb25zdGV4cHIgY29uc3QgVCYmIHZhbHVlKCkgY29u
c3QgJiY7CisJICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gY29uc3RleHByIFQgdmFsdWVfb3IoVSYmKSBj
b25zdCAmOworCSAgdGVtcGxhdGUgPGNsYXNzIFU+IGNvbnN0ZXhwciBUIHZhbHVlX29yKFUmJikg
JiY7CisKKwlwcml2YXRlOgorCSAgVCogICB2YWw7ICAvLyBleHBvc2l0aW9uIG9ubHkKKwl9Owor
CisgIH0gLy8gbmFtZXNwYWNlIGZ1bmRhbWVudGFsc192MQorICB9IC8vIG5hbWVzcGFjZSBleHBl
cmltZW50YWwKKworICAvLyA1LjExLCBIYXNoIHN1cHBvcnQKKyAgdGVtcGxhdGUgPGNsYXNzIFQ+
IHN0cnVjdCBoYXNoOworICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGhhc2g8ZXhwZXJpbWVu
dGFsOjpvcHRpb25hbDxUPj47CisKK30gLy8gbmFtZXNwYWNlIHN0ZAorCisqLworCisjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisjaW5jbHVkZSA8aW5pdGlhbGl6
ZXJfbGlzdD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDxuZXc+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLS8vIFdURjo6T3B0aW9uYWwgaXMgYSBjbGFzcyBiYXNl
ZCBvbiBzdGQ6Om9wdGlvbmFsLCBkZXNjcmliZWQgaGVyZToKLS8vIGh0dHA6Ly93d3cub3Blbi1z
dGQub3JnL0pUQzEvU0MyMi9XRzIxL2RvY3MvcGFwZXJzLzIwMTMvbjM1MjcuaHRtbAotLy8gSWYg
dGhpcyBlbmRzIHVwIGluIGEgQysrIHN0YW5kYXJkLCB3ZSBzaG91bGQgcmVwbGFjZSBvdXIgaW1w
bGVtZW50YXRpb24gd2l0aCBpdC4KLQogbmFtZXNwYWNlIFdURiB7CiAKLXN0cnVjdCBJblBsYWNl
VGFnIHsgfTsKLWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9OworY2xhc3MgYmFkX29w
dGlvbmFsX2FjY2VzcworICAgIDogcHVibGljIHN0ZDo6bG9naWNfZXJyb3IKK3sKK3B1YmxpYzoK
KwliYWRfb3B0aW9uYWxfYWNjZXNzKCkgOiBzdGQ6OmxvZ2ljX2Vycm9yKCJCYWQgb3B0aW9uYWwg
QWNjZXNzIikge30KIAotc3RydWN0IE51bGxvcHRUYWcgeyBleHBsaWNpdCBjb25zdGV4cHIgTnVs
bG9wdFRhZyhpbnQpIHsgfSB9OwotY29uc3RleHByIE51bGxvcHRUYWcgTnVsbG9wdCB7IDAgfTsK
Ky8vCUdldCB0aGUga2V5IGZ1bmN0aW9uIH5iYWRfb3B0aW9uYWxfYWNjZXNzKCkgaW50byB0aGUg
ZHlsaWIKKyAgICB2aXJ0dWFsIH5iYWRfb3B0aW9uYWxfYWNjZXNzKCkgbm9leGNlcHQ7Cit9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgT3B0aW9uYWwgewotcHVibGljOgotICAgIE9w
dGlvbmFsKCkKLSAgICAgICAgOiBtX2lzRW5nYWdlZChmYWxzZSkKLSAgICB7Ci0gICAgfQorc3Ry
dWN0IF9fbmF0Cit7CisgICAgX19uYXQoKSA9IGRlbGV0ZTsKKyAgICBfX25hdChjb25zdCBfX25h
dCYpID0gZGVsZXRlOworICAgIF9fbmF0JiBvcGVyYXRvcj0oY29uc3QgX19uYXQmKSA9IGRlbGV0
ZTsKKyAgICB+X19uYXQoKSA9IGRlbGV0ZTsKK307CiAKLSAgICBPcHRpb25hbChOdWxsb3B0VGFn
KQotICAgICAgICA6IG1faXNFbmdhZ2VkKGZhbHNlKQotICAgIHsKLSAgICB9Cit0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfVXAgPSBfVHAsCisgICAgICAgICAgYm9vbCBfTm90Vm9pZCA9ICFz
dGQ6OmlzX3ZvaWQ8X1RwPjo6dmFsdWUgJiYgIXN0ZDo6aXNfdm9pZDxfVXA+Ojp2YWx1ZT4KK3N0
cnVjdCBfX3N3YXBwYWJsZV93aXRoCit7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9MSFMsIGNsYXNz
IF9SSFM+CisgICAgc3RhdGljIGRlY2x0eXBlKHN0ZDo6c3dhcChzdGQ6OmRlY2x2YWw8X0xIUz4o
KSwgc3RkOjpkZWNsdmFsPF9SSFM+KCkpKQorICAgIF9fdGVzdF9zd2FwKGludCk7CisgICAgdGVt
cGxhdGUgPGNsYXNzLCBjbGFzcz4KKyAgICBzdGF0aWMgX19uYXQgX190ZXN0X3N3YXAobG9uZyk7
CisKKyAgICAvLyBFeHRyYSBwYXJlbnMgYXJlIG5lZWRlZCBmb3IgdGhlIEMrKzAzIGRlZmluaXRp
b24gb2YgZGVjbHR5cGUuCisgICAgdHlwZWRlZiBkZWNsdHlwZSgoX190ZXN0X3N3YXA8X1RwLCBf
VXA+KDApKSkgX19zd2FwMTsKKyAgICB0eXBlZGVmIGRlY2x0eXBlKChfX3Rlc3Rfc3dhcDxfVXAs
IF9UcD4oMCkpKSBfX3N3YXAyOworCisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSAhc3Rk
Ojppc19zYW1lPF9fc3dhcDEsIF9fbmF0Pjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICYmICFzdGQ6OmlzX3NhbWU8X19zd2FwMiwgX19uYXQ+Ojp2YWx1ZTsKK307CiAKLSAgICBP
cHRpb25hbChjb25zdCBUJiB2YWx1ZSkKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAg
IHsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCh2YWx1ZSk7Ci0gICAgfQordGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1VwPgorc3RydWN0IF9fc3dhcHBhYmxlX3dpdGg8X1Rw
LCBfVXAsICBmYWxzZT4gOiBzdGQ6OmZhbHNlX3R5cGUge307CiAKLSAgICBPcHRpb25hbChjb25z
dCBPcHRpb25hbCYgb3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQob3RoZXIubV9pc0VuZ2Fn
ZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICBuZXcgKE5v
dE51bGwsICZtX3ZhbHVlKSBUKCpvdGhlci5hc1B0cigpKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfVXAgPSBfVHAsIGJvb2wgX1N3YXBwYWJsZSA9IF9fc3dhcHBhYmxlX3dp
dGg8X1RwLCBfVXA+Ojp2YWx1ZT4KK3N0cnVjdCBfX25vdGhyb3dfc3dhcHBhYmxlX3dpdGggewor
ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9CisgICAgICBub2V4Y2VwdChzdGQ6OnN3YXAoc3Rk
OjpkZWNsdmFsPF9UcD4oKSwgc3RkOjpkZWNsdmFsPF9VcD4oKSkpCisgICYmICBub2V4Y2VwdChz
dGQ6OnN3YXAoc3RkOjpkZWNsdmFsPF9VcD4oKSwgc3RkOjpkZWNsdmFsPF9UcD4oKSkpOworfTsK
IAotICAgIE9wdGlvbmFsKE9wdGlvbmFsJiYgb3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQo
b3RoZXIubV9pc0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAg
ICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUoKm90aGVyLmFzUHRyKCkp
KTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfVXA+CitzdHJ1Y3QgX19ub3Ro
cm93X3N3YXBwYWJsZV93aXRoPF9UcCwgX1VwLCBmYWxzZT4gOiBzdGQ6OmZhbHNlX3R5cGUge307
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX19pc19ub3Rocm93X3N3YXBwYWJsZQor
ICAgIDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgX19ub3Rocm93X3N3YXBw
YWJsZV93aXRoPF9UcCY+Ojp2YWx1ZT4KK3sKK307CisKK3N0cnVjdCBJblBsYWNlVHlwZSB7fTsK
K2NvbnN0ZXhwciBJblBsYWNlVHlwZSBJblBsYWNle307CisKK3N0cnVjdCBOdWxsb3B0VHlwZQor
eworICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBOdWxsb3B0VHlwZShpbnQpIG5vZXhjZXB0IHt9Cit9
OworCitjb25zdGV4cHIgTnVsbG9wdFR5cGUgTnVsbG9wdHswfTsKIAotICAgIE9wdGlvbmFsKFQm
JiB2YWx1ZSkKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQordGVtcGxhdGUgPGNsYXNzIF9U
cCwgYm9vbCA9IHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxfVHA+Ojp2YWx1ZT4KK2Ns
YXNzIF9fb3B0aW9uYWxfc3RvcmFnZQoreworcHJvdGVjdGVkOgorICAgIHR5cGVkZWYgX1RwIHZh
bHVlX3R5cGU7CisgICAgdW5pb24KICAgICB7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFs
dWUpIFQoV1RGTW92ZSh2YWx1ZSkpOwotICAgIH0KKyAgICAgICAgY2hhciBfX251bGxfc3RhdGVf
OworICAgICAgICB2YWx1ZV90eXBlIF9fdmFsXzsKKyAgICB9OworICAgIGJvb2wgX19lbmdhZ2Vk
XyA9IGZhbHNlOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBPcHRpb25h
bChJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJncykKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVl
KQorICAgIEFMV0FZU19JTkxJTkUKKyAgICB+X19vcHRpb25hbF9zdG9yYWdlKCkKICAgICB7Ci0g
ICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICAgICAgaWYgKF9fZW5nYWdlZF8pCisgICAgICAgICAgICBfX3ZhbF8ufnZhbHVl
X3R5cGUoKTsKICAgICB9CiAKLSAgICB+T3B0aW9uYWwoKQorICAgIEFMV0FZU19JTkxJTkUKKyAg
ICBjb25zdGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKCkgbm9leGNlcHQKKyAgICAgICAgOiAgX19u
dWxsX3N0YXRlXygnXDAnKSB7fQorCisgICAgQUxXQVlTX0lOTElORQorICAgIF9fb3B0aW9uYWxf
c3RvcmFnZShjb25zdCBfX29wdGlvbmFsX3N0b3JhZ2UmIF9feCkKKyAgICAgICAgOiAgX19lbmdh
Z2VkXyhfX3guX19lbmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKF9fZW5nYWdl
ZF8pCisgICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKF9fdmFsXykp
IHZhbHVlX3R5cGUoX194Ll9fdmFsXyk7CisgICAgICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUK
KyAgICBfX29wdGlvbmFsX3N0b3JhZ2UoX19vcHRpb25hbF9zdG9yYWdlJiYgX194KQorICAgICAg
ICAgICAgICAgICAgICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGli
bGU8dmFsdWVfdHlwZT46OnZhbHVlKQorICAgICAgICA6ICBfX2VuZ2FnZWRfKF9feC5fX2VuZ2Fn
ZWRfKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoX19lbmdhZ2VkXykKKyAgICAgICAgICAg
ICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YoX192YWxfKSkgdmFsdWVfdHlwZShXVEZN
b3ZlKF9feC5fX3ZhbF8pKTsKKyAgICAgICAgfQorCisgICAgQUxXQVlTX0lOTElORQorICAgIGNv
bnN0ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UoY29uc3QgdmFsdWVfdHlwZSYgX192KQorICAgICAg
ICA6ICBfX3ZhbF8oX192KSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVlKSB7fQorCisgICAg
QUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UodmFsdWVfdHlw
ZSYmIF9fdikKKyAgICAgICAgOiAgX192YWxfKFdURk1vdmUoX192KSksCisgICAgICAgICAgIF9f
ZW5nYWdlZF8odHJ1ZSkge30KKworICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfQXJncz4KKyAgICBB
TFdBWVNfSU5MSU5FCisgICAgY29uc3RleHByCisgICAgZXhwbGljaXQgX19vcHRpb25hbF9zdG9y
YWdlKEluUGxhY2VUeXBlLCBfQXJncyYmLi4uIF9fYXJncykKKyAgICAgICA6ICBfX3ZhbF8oc3Rk
Ojpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVl
KSB7fQorfTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK2NsYXNzIF9fb3B0aW9uYWxfc3RvcmFn
ZTxfVHAsIHRydWU+Cit7Citwcm90ZWN0ZWQ6CisgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsK
KyAgICB1bmlvbgogICAgIHsKLSAgICAgICAgZGVzdHJveSgpOwotICAgIH0KKyAgICAgICAgY2hh
ciBfX251bGxfc3RhdGVfOworICAgICAgICB2YWx1ZV90eXBlIF9fdmFsXzsKKyAgICB9OworICAg
IGJvb2wgX19lbmdhZ2VkXyA9IGZhbHNlOworCisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0
ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UoKSBub2V4Y2VwdAorICAgICAgICA6ICBfX251bGxfc3Rh
dGVfKCdcMCcpIHt9CisKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgX19vcHRpb25hbF9zdG9yYWdl
KGNvbnN0IF9fb3B0aW9uYWxfc3RvcmFnZSYgX194KQorICAgICAgICA6ICBfX2VuZ2FnZWRfKF9f
eC5fX2VuZ2FnZWRfKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoX19lbmdhZ2VkXykKKyAg
ICAgICAgICAgICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YoX192YWxfKSkgdmFsdWVf
dHlwZShfX3guX192YWxfKTsKKyAgICAgICAgfQorCisgICAgQUxXQVlTX0lOTElORQorICAgIF9f
b3B0aW9uYWxfc3RvcmFnZShfX29wdGlvbmFsX3N0b3JhZ2UmJiBfX3gpCisgICAgICAgICAgICAg
ICAgICAgICAgbm9leGNlcHQoc3RkOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTx2YWx1
ZV90eXBlPjo6dmFsdWUpCisgICAgICAgIDogIF9fZW5nYWdlZF8oX194Ll9fZW5nYWdlZF8pCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChfX2VuZ2FnZWRfKQorICAgICAgICAgICAgICAgIDo6
bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZihfX3ZhbF8pKSB2YWx1ZV90eXBlKFdURk1vdmUoX194
Ll9fdmFsXykpOworICAgICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgY29uc3RleHBy
IF9fb3B0aW9uYWxfc3RvcmFnZShjb25zdCB2YWx1ZV90eXBlJiBfX3YpCisgICAgICAgIDogIF9f
dmFsXyhfX3YpLAorICAgICAgICAgICBfX2VuZ2FnZWRfKHRydWUpIHt9CisKKyAgICBBTFdBWVNf
SU5MSU5FCisgICAgY29uc3RleHByIF9fb3B0aW9uYWxfc3RvcmFnZSh2YWx1ZV90eXBlJiYgX192
KQorICAgICAgICA6ICBfX3ZhbF8oV1RGTW92ZShfX3YpKSwKKyAgICAgICAgICAgX19lbmdhZ2Vk
Xyh0cnVlKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzPgorICAgIEFMV0FZU19J
TkxJTkUKKyAgICBjb25zdGV4cHIKKyAgICBleHBsaWNpdCBfX29wdGlvbmFsX3N0b3JhZ2UoSW5Q
bGFjZVR5cGUsIF9BcmdzJiYuLi4gX19hcmdzKQorICAgICAgIDogIF9fdmFsXyhzdGQ6OmZvcndh
cmQ8X0FyZ3M+KF9fYXJncykuLi4pLAorICAgICAgICAgICBfX2VuZ2FnZWRfKHRydWUpIHt9Cit9
OwogCi0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShOdWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNz
IF9UcD4KK2NsYXNzIE9wdGlvbmFsCisgICAgOiBwcml2YXRlIF9fb3B0aW9uYWxfc3RvcmFnZTxf
VHA+Cit7CisgICAgdHlwZWRlZiBfX29wdGlvbmFsX3N0b3JhZ2U8X1RwPiBfX2Jhc2U7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0
ZDo6aXNfcmVmZXJlbmNlPHZhbHVlX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgIkluc3Rh
bnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhIHJlZmVyZW5jZSB0eXBlIGlzIGlsbC1mb3JtZWQu
Iik7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PHZhbHVlX3R5cGU+Ojp0eXBlLCBJblBsYWNlVHlwZT46OnZhbHVlLAorICAgICAgICAgICAg
ICAiSW5zdGFudGlhdGlvbiBvZiBPcHRpb25hbCB3aXRoIGEgSW5QbGFjZVR5cGUgdHlwZSBpcyBp
bGwtZm9ybWVkLiIpOworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9jdjx2YWx1ZV90eXBlPjo6dHlwZSwgTnVsbG9wdFR5cGU+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhIE51bGxvcHRUeXBl
IHR5cGUgaXMgaWxsLWZvcm1lZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfb2JqZWN0
PHZhbHVlX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwg
d2l0aCBhIG5vbi1vYmplY3QgdHlwZSBpcyB1bmRlZmluZWQgYmVoYXZpb3IuIik7CisgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX25vdGhyb3dfZGVzdHJ1Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1
ZSwKKyAgICAgICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhbiBvYmplY3QgdHlw
ZSB0aGF0IGlzIG5vdCBub2V4Y2VwdCBkZXN0cnVjdGlibGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9y
LiIpOworCisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgT3B0aW9uYWwoKSBub2V4Y2VwdCB7
fQorICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmKSA9IGRlZmF1bHQ7
CisgICAgQUxXQVlTX0lOTElORSBPcHRpb25hbChPcHRpb25hbCYmKSA9IGRlZmF1bHQ7CisgICAg
QUxXQVlTX0lOTElORSB+T3B0aW9uYWwoKSA9IGRlZmF1bHQ7CisgICAgQUxXQVlTX0lOTElORSBj
b25zdGV4cHIgT3B0aW9uYWwoTnVsbG9wdFR5cGUpIG5vZXhjZXB0IHt9CisgICAgQUxXQVlTX0lO
TElORSBjb25zdGV4cHIgT3B0aW9uYWwoY29uc3QgdmFsdWVfdHlwZSYgX192KQorICAgICAgICA6
IF9fYmFzZShfX3YpIHt9CisgICAgQUxXQVlTX0lOTElORSBjb25zdGV4cHIgT3B0aW9uYWwodmFs
dWVfdHlwZSYmIF9fdikKKyAgICAgICAgOiBfX2Jhc2UoV1RGTW92ZShfX3YpKSB7fQorCisgICAg
dGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzLAorICAgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmCisgICAgICAgICAgICAgICAgICAgICAgPAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGUsIF9BcmdzLi4uPjo6
dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCisgICAgICAgICAgICAgPgorICAg
IEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIKKyAgICBleHBsaWNpdCBPcHRpb25hbChJblBs
YWNlVHlwZSwgX0FyZ3MmJi4uLiBfX2FyZ3MpCisgICAgICAgIDogX19iYXNlKEluUGxhY2UsIHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLikge30KKworICAgIHRlbXBsYXRlIDxjbGFzcyBf
VXAsIGNsYXNzLi4uIF9BcmdzLAorICAgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmCisgICAgICAgICAgICAgICAgICAgICAgPAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjppc19jb25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGUsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxfVXA+JiwgX0FyZ3MuLi4+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgID46OnR5
cGUKKyAgICAgICAgICAgICA+CisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwcgorICAg
IGV4cGxpY2l0IE9wdGlvbmFsKEluUGxhY2VUeXBlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1Vw
PiBfX2lsLCBfQXJncyYmLi4uIF9fYXJncykKKyAgICAgICAgOiBfX2Jhc2UoSW5QbGFjZSwgX19p
bCwgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSB7fQorCisgICAgQUxXQVlTX0lOTElO
RQorICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFR5cGUpIG5vZXhjZXB0CiAgICAgewot
ICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIGlmICh0aGlzLT5fX2VuZ2FnZWRfKQorICAgICAg
ICB7CisgICAgICAgICAgICB0aGlzLT5fX3ZhbF8ufnZhbHVlX3R5cGUoKTsKKyAgICAgICAgICAg
IHRoaXMtPl9fZW5nYWdlZF8gPSBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShjb25zdCBPcHRpb25hbCYgb3Ro
ZXIpCisgICAgQUxXQVlTX0lOTElORQorICAgIE9wdGlvbmFsJgorICAgIG9wZXJhdG9yPShjb25z
dCBPcHRpb25hbCYgX19vcHQpCiAgICAgewotICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0g
ICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgZGVzdHJveSgpOwotICAgICAgICBp
ZiAob3RoZXIubV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFs
dWUpIFQoKm90aGVyLmFzUHRyKCkpOwotICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOwor
ICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXyA9PSBfX29wdC5fX2VuZ2FnZWRfKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAgICAgICAgICAgICAgICB0
aGlzLT5fX3ZhbF8gPSBfX29wdC5fX3ZhbF87CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAgICAgICAgICAgICAg
ICB0aGlzLT5fX3ZhbF8ufnZhbHVlX3R5cGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKSkgdmFsdWVf
dHlwZShfX29wdC5fX3ZhbF8pOworICAgICAgICAgICAgdGhpcy0+X19lbmdhZ2VkXyA9IF9fb3B0
Ll9fZW5nYWdlZF87CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oT3B0aW9uYWwmJiBvdGhlcikKKyAgICBBTFdBWVNfSU5M
SU5FCisgICAgT3B0aW9uYWwmCisgICAgb3BlcmF0b3I9KE9wdGlvbmFsJiYgX19vcHQpCisgICAg
ICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8dmFsdWVfdHlwZT46
OnZhbHVlICYmCisgICAgICAgICAgICAgICAgIHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVj
dGlibGU8dmFsdWVfdHlwZT46OnZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMgPT0gJm90
aGVyKQotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICAgIGRlc3Ryb3koKTsKLSAg
ICAgICAgaWYgKG90aGVyLm1faXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGws
ICZtX3ZhbHVlKSBUKFdURk1vdmUoKm90aGVyLmFzUHRyKCkpKTsKLSAgICAgICAgICAgIG1faXNF
bmdhZ2VkID0gdHJ1ZTsKKyAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8gPT0gX19vcHQuX19l
bmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisg
ICAgICAgICAgICAgICAgdGhpcy0+X192YWxfID0gV1RGTW92ZShfX29wdC5fX3ZhbF8pOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9f
ZW5nYWdlZF8pCisgICAgICAgICAgICAgICAgdGhpcy0+X192YWxfLn52YWx1ZV90eXBlKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVz
c29mKHRoaXMtPl9fdmFsXykpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUoV1RGTW92
ZShfX29wdC5fX3ZhbF8pKTsKKyAgICAgICAgICAgIHRoaXMtPl9fZW5nYWdlZF8gPSBfX29wdC5f
X2VuZ2FnZWRfOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIFQ+Ojp2
YWx1ZT46OnR5cGU+Ci0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShVJiYgdSkKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgX1VwLAorICAgICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmCisgICAgICAgICAgICAgICAgICAgICAgPAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPF9VcD46OnR5cGUsIHZh
bHVlX3R5cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2Nv
bnN0cnVjdGlibGU8dmFsdWVfdHlwZSwgX1VwPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjppc19hc3NpZ25hYmxlPHZhbHVlX3R5cGUmLCBfVXA+Ojp2YWx1ZQorICAg
ICAgICAgICAgICAgICAgICAgID46OnR5cGUKKyAgICAgICAgICAgICA+CisgICAgQUxXQVlTX0lO
TElORQorICAgIE9wdGlvbmFsJgorICAgIG9wZXJhdG9yPShfVXAmJiBfX3YpCiAgICAgewotICAg
ICAgICBkZXN0cm95KCk7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoc3RkOjpm
b3J3YXJkPFU+KHUpKTsKLSAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOworICAgICAgICBpZiAo
dGhpcy0+X19lbmdhZ2VkXykKKyAgICAgICAgICAgIHRoaXMtPl9fdmFsXyA9IHN0ZDo6Zm9yd2Fy
ZDxfVXA+KF9fdik7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgOjpuZXco
KHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXykpIHZhbHVlX3R5cGUoc3RkOjpmb3J3
YXJkPF9VcD4oX192KSk7CisgICAgICAgICAgICB0aGlzLT5fX2VuZ2FnZWRfID0gdHJ1ZTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmdhZ2VkOyB9Ci0KLSAgICBjb25zdCBU
KiBvcGVyYXRvci0+KCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0FyZ3MsCisgICAg
ICAgICAgICAgIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgICAgICAgICAgICAg
ICAgICAgICA8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJs
ZTx2YWx1ZV90eXBlLCBfQXJncy4uLj46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgPjo6
dHlwZQorICAgICAgICAgICAgID4KKyAgICBBTFdBWVNfSU5MSU5FCisgICAgdm9pZAorICAgIGVt
cGxhY2UoX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2Fn
ZWQpOwotICAgICAgICByZXR1cm4gYXNQdHIoKTsKKyAgICAgICAgKnRoaXMgPSBOdWxsb3B0Owor
ICAgICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKSkKKyAgICAg
ICAgICAgIHZhbHVlX3R5cGUoc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKKyAgICAg
ICAgdGhpcy0+X19lbmdhZ2VkXyA9IHRydWU7CiAgICAgfQogCi0gICAgVCogb3BlcmF0b3ItPigp
CisgICAgdGVtcGxhdGUgPGNsYXNzIF9VcCwgY2xhc3MuLi4gX0FyZ3MsCisgICAgICAgICAgICAg
IGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgICAgICAgICAgICAgICAgICAgICA8
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTx2YWx1ZV90
eXBlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1VwPiYsIF9BcmdzLi4uPjo6dmFsdWUKKyAgICAg
ICAgICAgICAgICAgICAgICA+Ojp0eXBlCisgICAgICAgICAgICAgPgorICAgIEFMV0FZU19JTkxJ
TkUKKyAgICB2b2lkCisgICAgZW1wbGFjZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8X1VwPiBfX2ls
LCBfQXJncyYmLi4uIF9fYXJncykKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7
Ci0gICAgICAgIHJldHVybiBhc1B0cigpOworICAgICAgICAqdGhpcyA9IE51bGxvcHQ7CisgICAg
ICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3ZhbF8pKQorICAgICAgICAg
ICAgdmFsdWVfdHlwZShfX2lsLCBzdGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pOworICAg
ICAgICB0aGlzLT5fX2VuZ2FnZWRfID0gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBUJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0gICAgVCYgb3BlcmF0b3IqKCkgeyBy
ZXR1cm4gdmFsdWUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUKKyAgICB2b2lkCisgICAgc3dhcChP
cHRpb25hbCYgX19vcHQpCisgICAgICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2Nv
bnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgIF9faXNf
bm90aHJvd19zd2FwcGFibGU8dmFsdWVfdHlwZT46OnZhbHVlKQorICAgIHsKKyAgICAgICAgdXNp
bmcgc3RkOjpzd2FwOworICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXyA9PSBfX29wdC5fX2Vu
Z2FnZWRfKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAg
ICAgICAgICAgICAgICBzd2FwKHRoaXMtPl9fdmFsXywgX19vcHQuX192YWxfKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLT5fX2VuZ2Fn
ZWRfKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFk
ZHJlc3NvZihfX29wdC5fX3ZhbF8pKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlKFdU
Rk1vdmUodGhpcy0+X192YWxfKSk7CisgICAgICAgICAgICAgICAgdGhpcy0+X192YWxfLn52YWx1
ZV90eXBlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFs
XykpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUoV1RGTW92ZShfX29wdC5fX3ZhbF8p
KTsKKyAgICAgICAgICAgICAgICBfX29wdC5fX3ZhbF8ufnZhbHVlX3R5cGUoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHN3YXAodGhpcy0+X19lbmdhZ2VkXywgX19vcHQuX19lbmdhZ2Vk
Xyk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBUJiB2YWx1ZSgpCisgICAgQUxXQVlTX0lOTElO
RQorICAgIGNvbnN0ZXhwcgorICAgIHZhbHVlX3R5cGUgY29uc3QqCisgICAgb3BlcmF0b3ItPigp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2FnZWQpOwotICAgICAgICByZXR1
cm4gKmFzUHRyKCk7CisgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwg
YXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRl
eHQuCisgICAgICAgIC8vIENPTlNURVhQUl9BU1NFUlRfV0lUSF9NRVNTQUdFKHRoaXMtPl9fZW5n
YWdlZF8sICJPcHRpb25hbCBvcGVyYXRvci0+IGNhbGxlZCBmb3IgZGlzZW5nYWdlZCB2YWx1ZSIp
OworICAgICAgICByZXR1cm4gc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKTsKICAgICB9CiAK
LSAgICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORQorICAgIHZhbHVl
X3R5cGUqCisgICAgb3BlcmF0b3ItPigpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2Fn
ZWQpOwotICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UodGhpcy0+X19lbmdhZ2VkXywgIk9wdGlvbmFsIG9wZXJhdG9yLT4gY2FsbGVkIGZvciBkaXNl
bmdhZ2VkIHZhbHVlIik7CisgICAgICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3Zh
bF8pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2YWx1ZU9yKFUm
JiB2YWx1ZSkgY29uc3QKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgY29uc3RleHByCisgICAgY29u
c3QgdmFsdWVfdHlwZSYKKyAgICBvcGVyYXRvciooKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYg
KG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgICAgICAvLyBG
SVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBi
ZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgICAgICAvLyBDT05TVEVYUFJf
QVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzLT5fX2VuZ2FnZWRfLCAiT3B0aW9uYWwgb3BlcmF0b3Iq
IGNhbGxlZCBmb3IgZGlzZW5nYWdlZCB2YWx1ZSIpOworICAgICAgICByZXR1cm4gdGhpcy0+X192
YWxfOworICAgIH0KIAotICAgICAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsKKyAg
ICBBTFdBWVNfSU5MSU5FCisgICAgdmFsdWVfdHlwZSYKKyAgICBvcGVyYXRvciooKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzLT5fX2VuZ2FnZWRfLCAiT3B0aW9uYWwg
b3BlcmF0b3IqIGNhbGxlZCBmb3IgZGlzZW5nYWdlZCB2YWx1ZSIpOworICAgICAgICByZXR1cm4g
dGhpcy0+X192YWxfOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2
YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25zdAorICAgIEFMV0FZU19JTkxJTkUKKyAgICBj
b25zdGV4cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IG5vZXhjZXB0IHtyZXR1cm4g
dGhpcy0+X19lbmdhZ2VkXzt9CisKKwlOT19SRVRVUk4gQUxXQVlTX0lOTElORQorCWNvbnN0ZXhw
ciB2b2lkIF9fdGhyb3dfYmFkX29wdGlvbmFsX2FjY2VzcygpIGNvbnN0CisJeworICAgICAgICBD
UkFTSCgpOworCX0KKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIgdmFsdWVfdHlw
ZSBjb25zdCYgdmFsdWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQot
ICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgICAgICBpZiAoIXRoaXMtPl9fZW5nYWdl
ZF8pCisgICAgICAgICAgICBfX3Rocm93X2JhZF9vcHRpb25hbF9hY2Nlc3MoKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMtPl9fdmFsXzsKKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7
CisgICAgQUxXQVlTX0lOTElORQorICAgIHZhbHVlX3R5cGUmIHZhbHVlKCkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy0+X19lbmdhZ2VkXykKKyAgICAgICAgICAgIF9fdGhyb3dfYmFkX29wdGlv
bmFsX2FjY2VzcygpOworICAgICAgICByZXR1cm4gdGhpcy0+X192YWxfOwogICAgIH0KIAotcHJp
dmF0ZToKLSAgICBjb25zdCBUKiBhc1B0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVCo+KCZtX3ZhbHVlKTsgfQotICAgIFQqIGFzUHRyKCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUKj4oJm1fdmFsdWUpOyB9Ci0gICAgdm9pZCBkZXN0cm95KCkKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgX1VwPgorICAgIEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIgdmFsdWVf
dHlwZSB2YWx1ZV9vcihfVXAmJiBfX3YpIGNvbnN0JgogICAgIHsKLSAgICAgICAgaWYgKG1faXNF
bmdhZ2VkKSB7Ci0gICAgICAgICAgICBhc1B0cigpLT5+VCgpOwotICAgICAgICAgICAgbV9pc0Vu
Z2FnZWQgPSBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
Y29weV9jb25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAiT3B0aW9uYWw8VD46OnZhbHVlX29yOiBUIG11c3QgYmUgY29weSBjb25zdHJ1Y3RpYmxl
Iik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19jb252ZXJ0aWJsZTxfVXAsIHZhbHVl
X3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAiT3B0aW9uYWw8VD46OnZhbHVl
X29yOiBVIG11c3QgYmUgY29udmVydGlibGUgdG8gVCIpOworICAgICAgICByZXR1cm4gdGhpcy0+
X19lbmdhZ2VkXyA/IHRoaXMtPl9fdmFsXyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpmb3J3YXJkPF9VcD4oX192KSk7CiAg
ICAgfQogCi0gICAgYm9vbCBtX2lzRW5nYWdlZDsKLSAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRf
c3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgbV92
YWx1ZTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1VwPgorICAgIEFMV0FZU19JTkxJTkUKKyAgICB2
YWx1ZV90eXBlIHZhbHVlX29yKF9VcCYmIF9fdikgJiYKKyAgICB7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19tb3ZlX2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICJPcHRpb25hbDxUPjo6dmFsdWVfb3I6IFQgbXVzdCBiZSBtb3Zl
IGNvbnN0cnVjdGlibGUiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnZlcnRp
YmxlPF9VcCwgdmFsdWVfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICJPcHRp
b25hbDxUPjo6dmFsdWVfb3I6IFUgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBUIik7CisgICAgICAg
IHJldHVybiB0aGlzLT5fX2VuZ2FnZWRfID8gV1RGTW92ZSh0aGlzLT5fX3ZhbF8pIDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihzdGQ6
OmZvcndhcmQ8X1VwPihfX3YpKTsKKyAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgbGhzLCBjb25zdCBP
cHRpb25hbDxUPiYgcmhzKQorLy8gQ29tcGFyaXNvbnMgYmV0d2VlbiBvcHRpb25hbHMKK3RlbXBs
YXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9y
PT0oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3kpCiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KGxocykgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4o
cmhzKSAmJiAoIXN0YXRpY19jYXN0PGJvb2w+KGxocykgfHwgbGhzLnZhbHVlKCkgPT0gcmhzLnZh
bHVlKCkpOworICAgIGlmIChzdGF0aWNfY2FzdDxib29sPihfX3gpICE9IHN0YXRpY19jYXN0PGJv
b2w+KF9feSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXN0YXRpY19jYXN0PGJv
b2w+KF9feCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAqX194ID09ICpfX3k7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCit0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvciE9KGNv
bnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX195KQogewotICAg
IHJldHVybiAhKGxocyA9PSByaHMpOworICAgIHJldHVybiAhKF9feCA9PSBfX3kpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRp
b25hbDxUPiYgb3B0LCBOdWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19J
TkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9f
eCwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX195KQogewotICAgIHJldHVybiAhb3B0OworICAgIGlm
ICghc3RhdGljX2Nhc3Q8Ym9vbD4oX195KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghc3RhdGljX2Nhc3Q8Ym9vbD4oX194KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuICpfX3ggPCAqX195OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxUPiYgb3B0LCBOdWxsb3B0VGFnKQordGVtcGxh
dGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I+
KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX195KQogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihvcHQpOworICAgIHJldHVybiBfX3kgPCBfX3g7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KE51
bGxvcHRUYWcsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgor
QUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjw9KGNvbnN0IE9wdGlvbmFs
PF9UcD4mIF9feCwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX195KQogewotICAgIHJldHVybiAhb3B0
OworICAgIHJldHVybiAhKF9feSA8IF9feCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1j
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KE51bGxvcHRUYWcsIGNvbnN0IE9wdGlvbmFsPFQ+JiBv
cHQpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29s
CitvcGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgT3B0aW9uYWw8X1Rw
PiYgX195KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihvcHQpOworICAgIHJldHVy
biAhKF9feCA8IF9feSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIGNvbnN0IFQmIHZhbHVlKQorCisv
LyBDb21wYXJpc29ucyB3aXRoIE51bGxvcHQKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNf
SU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8X1RwPiYg
X194LCBOdWxsb3B0VHlwZSkgbm9leGNlcHQKIHsKLSAgICByZXR1cm4gb3B0ICYmIG9wdC52YWx1
ZSgpID09IHZhbHVlOworICAgIHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0
aW9uYWw8VD4mIG9wdCwgY29uc3QgVCYgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxX
QVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj09KE51bGxvcHRUeXBlLCBjb25z
dCBPcHRpb25hbDxfVHA+JiBfX3gpIG5vZXhjZXB0CiB7Ci0gICAgcmV0dXJuICEob3B0ID09IHZh
bHVlKTsKKyAgICByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KF9feCk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHZhbHVlLCBj
b25zdCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJ
TkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gs
IE51bGxvcHRUeXBlKSBub2V4Y2VwdAogewotICAgIHJldHVybiBvcHQgJiYgb3B0LnZhbHVlKCkg
PT0gdmFsdWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHZhbHVl
LCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19J
TkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3IhPShOdWxsb3B0VHlwZSwgY29uc3QgT3B0
aW9uYWw8X1RwPiYgX194KSBub2V4Y2VwdAogewotICAgIHJldHVybiAhKHZhbHVlID09IG9wdCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1PcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPgotbWFrZU9wdGlv
bmFsKFQmJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25z
dGV4cHIKK2Jvb2wKK29wZXJhdG9yPChjb25zdCBPcHRpb25hbDxfVHA+JiwgTnVsbG9wdFR5cGUp
IG5vZXhjZXB0CiB7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46
OnR5cGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3Bl
cmF0b3I8KE51bGxvcHRUeXBlLCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpIG5vZXhjZXB0Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPD0oY29uc3Qg
T3B0aW9uYWw8X1RwPiYgX194LCBOdWxsb3B0VHlwZSkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4g
IXN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdB
WVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPD0oTnVsbG9wdFR5cGUsIGNvbnN0
IE9wdGlvbmFsPF9UcD4mIF9feCkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3Bl
cmF0b3I+KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgTnVsbG9wdFR5cGUpIG5vZXhjZXB0Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPihOdWxsb3B0
VHlwZSwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KSBub2V4Y2VwdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhw
cgorYm9vbAorb3BlcmF0b3I+PShjb25zdCBPcHRpb25hbDxfVHA+JiwgTnVsbG9wdFR5cGUpIG5v
ZXhjZXB0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitB
TFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPj0oTnVsbG9wdFR5cGUsIGNv
bnN0IE9wdGlvbmFsPF9UcD4mIF9feCkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gIXN0YXRpY19j
YXN0PGJvb2w+KF9feCk7Cit9CisKKy8vIENvbXBhcmlzb25zIHdpdGggVAordGVtcGxhdGUgPGNs
YXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I9PShjb25z
dCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQoreworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihfX3gpID8gKl9feCA9PSBfX3YgOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I9PShj
b25zdCBfVHAmIF9fdiwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KQoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxib29sPihfX3gpID8gKl9feCA9PSBfX3YgOiBmYWxzZTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3Ih
PShjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihfX3gpID8gISgqX194ID09IF9fdikgOiB0cnVlOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVy
YXRvciE9KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAhKCpfX3ggPT0gX192KSA6IHRydWU7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wK
K29wZXJhdG9yPChjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihfX3gpID8gc3RkOjpsZXNzPF9UcD57fSgqX194
LCBfX3YpIDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUK
K2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25h
bDxfVHA+JiBfX3gpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyBzdGQ6
Omxlc3M8X1RwPnt9KF9fdiwgKl9feCkgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9U
cD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8PShjb25zdCBPcHRp
b25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQoreworICAgIHJldHVybiAhKF9feCA+IF9f
dik7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIK
K2Jvb2wKK29wZXJhdG9yPD0oY29uc3QgX1RwJiBfX3YsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9f
eCkKK3sKKyAgICByZXR1cm4gIShfX3YgPiBfX3gpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
PgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj4oY29uc3QgT3B0aW9u
YWw8X1RwPiYgX194LCBjb25zdCBfVHAmIF9fdikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Ym9vbD4oX194KSA/IF9fdiA8IF9feCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
PgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj4oY29uc3QgX1RwJiBf
X3YsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Ym9vbD4oX194KSA/IF9feCA8IF9fdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+
CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPj0oY29uc3QgT3B0aW9u
YWw8X1RwPiYgX194LCBjb25zdCBfVHAmIF9fdikKK3sKKyAgICByZXR1cm4gIShfX3ggPCBfX3Yp
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCiti
b29sCitvcGVyYXRvcj49KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gp
Cit7CisgICAgcmV0dXJuICEoX192IDwgX194KTsKK30KKworCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
PgorQUxXQVlTX0lOTElORQordm9pZAorc3dhcChPcHRpb25hbDxfVHA+JiBfX3gsIE9wdGlvbmFs
PF9UcD4mIF9feSkgbm9leGNlcHQobm9leGNlcHQoX194LnN3YXAoX195KSkpCit7CisgICAgX194
LnN3YXAoX195KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2Nv
bnN0ZXhwcgorT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxfVHA+Ojp0eXBlPgorbWFrZU9w
dGlvbmFsKF9UcCYmIF9fdikKK3sKKyAgICByZXR1cm4gT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpk
ZWNheTxfVHA+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8X1RwPihfX3YpKTsKK30KKworLy8gLS0gV2Vi
S2l0IEFkZGl0aW9ucyAtLQordGVtcGxhdGUgPGNsYXNzIE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2Fs
bGJhY2s+CitBTFdBWVNfSU5MSU5FCithdXRvIHZhbHVlT3JDb21wdXRlKE9wdGlvbmFsVHlwZSBv
cHRpb25hbCwgQ2FsbGJhY2sgY2FsbGJhY2spIC0+IHR5cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFs
dWVfdHlwZQoreworICAgIGlmIChvcHRpb25hbCkKKyAgICAgICAgcmV0dXJuICpvcHRpb25hbDsK
KyAgICByZXR1cm4gY2FsbGJhY2soKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKK25hbWVz
cGFjZSBzdGQgeworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IGhhc2g8V1RGOjpPcHRp
b25hbDxfVHA+ID4KK3sKKyAgICB0eXBlZGVmIFdURjo6T3B0aW9uYWw8X1RwPiBhcmd1bWVudF90
eXBlOworICAgIHR5cGVkZWYgc2l6ZV90ICAgICAgICByZXN1bHRfdHlwZTsKKworICAgIEFMV0FZ
U19JTkxJTkUKKyAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGNvbnN0IGFyZ3VtZW50X3R5cGUm
IF9fb3B0KSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KF9fb3B0KSA/IGhhc2g8X1RwPigpKCpfX29wdCkgOiAwOworICAgIH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIHN0ZAorCiB1c2luZyBXVEY6OkluUGxhY2U7CiB1c2luZyBXVEY6Ok51bGxv
cHQ7CiB1c2luZyBXVEY6Ok9wdGlvbmFsOwogdXNpbmcgV1RGOjptYWtlT3B0aW9uYWw7Ci0KLSNl
bmRpZiAvLyBPcHRpb25hbF9oCit1c2luZyBXVEY6OnZhbHVlT3JDb21wdXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCA4YmY4Mjlk
ZjBlNDk5ZWZlZGNhNzE4ZDcxNzQ0NWRmMGRlYTYyYjE3Li4yMThkZTE2YTY2YzA5YTE1YTQzZWIz
NDJjNzM2ODFjY2Y4NGI3Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3du
ZXI6OmxvYWRCbG9iKGNvbnN0IEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1l
cikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmxvYkxvYWRlciA9IHsgKnRoaXMg
fTsKKyAgICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7CiAgICAgbV9ibG9iTG9hZGVyLT5s
b2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25z
dW1lcik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmgKaW5kZXggYTEzODY5NzgyMTQwMDcyMmQ3ZWNhMmM3MjZkNTgwMWE4MzQxZjk4
OC4uZTM4MDVlOGUxMjc5YWI1MTJhYWIyMzgwYjRlMGQ5MTI4ZDhjZGE1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtODQsNiArODQsOCBA
QCBjbGFzcyBGZXRjaEJvZHlPd25lciA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoQm9keU93bmVy
PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdAogICAgIHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFsIDog
RmV0Y2hMb2FkZXJDbGllbnQgewogICAgICAgICBCbG9iTG9hZGVyKEZldGNoQm9keU93bmVyJik7
CiAKKyAgICAgICAgdm9pZCBzd2FwKEJsb2JMb2FkZXImKTsKKwogICAgICAgICAvLyBGZXRjaExv
YWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhkYXRhLCBz
aXplKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKaW5kZXggMDJlMzEzNTBmMjZlMGM5YjE4NTI0Y2Q0MjQ5ZGJiODY3MjQyNzY5Ny4uODZlMjRh
ZDk0NGQ1ODMxZDRmMjcyODVkZTE0MGIzNzNmODA1NTFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9p
ZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBG
ZXRjaFJlcXVlc3QmIHJlcXVlc3QKICAgICAvLyBTZXR0aW5nIHBlbmRpbmcgYWN0aXZpdHkgdW50
aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJhY2sgaXMgY2FsbGVkLgog
ICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2UucHRyKCkpOwogCi0gICAg
cmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IEJvZHlMb2FkZXIocmVzcG9uc2UuZ2V0KCksIFdURk1v
dmUocHJvbWlzZSkpOworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIuZW1wbGFjZShyZXNwb25z
ZS5nZXQoKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9ib2R5TG9h
ZGVyLT5zdGFydChjb250ZXh0LCByZXF1ZXN0KSkKICAgICAgICAgcmVzcG9uc2UtPm1fYm9keUxv
YWRlciA9IE51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDljZmY3YTJjZWRkN2E2ZDc4
OTg0OWFjZTJiMThiN2Q0NmRlMzE5MDYuLmRkOWYxNGZmYTE0OTM2MTFkMDE2NjFiY2E3YTdmODg5
Mjk3YWJkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElEQkRh
dGFiYXNlSWRlbnRpZmllciB7CiAgICAgICAgIHVuc2lnbmVkIG1haW5GcmFtZVByb3RvY29sSGFz
aCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmlnaW4ucHJvdG9jb2wpOwogICAgICAg
ICB1bnNpZ25lZCBtYWluRnJhbWVIb3N0SGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJh
bWVPcmlnaW4uaG9zdCk7CiAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbN10g
PSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3Bl
bmluZ09yaWdpbi5wb3J0LnZhbHVlT3IoMCksIG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZy
YW1lSG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQudmFsdWVPcigwKSB9OworICAgICAg
ICB1bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNo
LCBvcGVuaW5nSG9zdEhhc2gsIG1fb3BlbmluZ09yaWdpbi5wb3J0LnZhbHVlX29yKDApLCBtYWlu
RnJhbWVQcm90b2NvbEhhc2gsIG1haW5GcmFtZUhvc3RIYXNoLCBtX21haW5GcmFtZU9yaWdpbi5w
b3J0LnZhbHVlX29yKDApIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1v
cnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDFjNDQwYjhhNjZj
YTZkYzA1MGQxMmNjMTE5NjVhNjgxMDYyNjhlOTkuLmY2MmFkYmJmY2QzNTM3NDQ4MzQ0MmVkYWMz
ZDgyMTFlMGI1NzRkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVu
REJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
CiAgICAgaWYgKHZlcnNpb24gJiYgIXZlcnNpb24udmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBjYWxs
ZWQgd2l0aCBhIHZlcnNpb24gb2YgMCIpIH07CiAKLSAgICByZXR1cm4gb3BlbkludGVybmFsKGNv
bnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVPcigwKSk7CisgICAgcmV0dXJuIG9wZW5JbnRlcm5h
bChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLnZhbHVlX29yKDApKTsKIH0KIAogRXhjZXB0aW9uT3I8
UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRFRNRlNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCmluZGV4IGY3YmM3ZDM5Y2RjZWE0ZTY0YzQ1ZGI4NDNiYTVk
MzkwMWE1MzUyYzMuLmNjMTI5N2E3NWY0MmIwM2NlMTAzYTcyN2Q2ZTc0YjBmOWU4NjkzNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVyLmNwcApAQCAtOTcsOCArOTcsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENEVE1GU2VuZGVy
OjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIE9wdGlvbmFsPGludD4gZAogICAgIGlm
IChpbnRlclRvbmVHYXAgJiYgaW50ZXJUb25lR2FwLnZhbHVlKCkgPCBtaW5JbnRlclRvbmVHYXBN
cykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAotICAgIG1fZHVy
YXRpb24gPSBkdXJhdGlvbi52YWx1ZU9yKGRlZmF1bHRUb25lRHVyYXRpb25Ncyk7Ci0gICAgbV9p
bnRlclRvbmVHYXAgPSBpbnRlclRvbmVHYXAudmFsdWVPcihkZWZhdWx0SW50ZXJUb25lR2FwTXMp
OworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbi52YWx1ZV9vcihkZWZhdWx0VG9uZUR1cmF0aW9u
TXMpOworICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2FwLnZhbHVlX29yKGRlZmF1bHRJ
bnRlclRvbmVHYXBNcyk7CiAKICAgICBpZiAoIW1faGFuZGxlci0+aW5zZXJ0RFRNRih0b25lcywg
bV9kdXJhdGlvbiwgbV9pbnRlclRvbmVHYXApKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U1lOVEFYX0VSUiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApp
bmRleCAyNDEyNzFmNjY4YjVkZmQ4Y2Y4ZjAwZWFjNzU1YmM4M2UyYjc3ZTVhLi5mN2Y2YmZkZmY1
Y2NmODJkZWRlZGY3ODdjNjZlNDA0ZDUyODkzOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaApAQCAtMjAyLDExICsyMDIsMTcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFZhbHVlPgogY2xhc3MgRE9NUHJvbWlzZSB7CiBwdWJsaWM6CiAgICAgRE9NUHJvbWlzZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIGdlbmVyaWNQcm9taXNlKSA6IG1fcHJvbWlzZURlZmVycmVk
KFdURk1vdmUoZ2VuZXJpY1Byb21pc2UpKSB7IH0KKyAgICBET01Qcm9taXNlKGNvbnN0IERPTVBy
b21pc2UmIG90aGVyKQorICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVkKG90aGVyLm1fcHJvbWlz
ZURlZmVycmVkLmNvcHlSZWYoKSkKKyAgICB7CisgICAgfQorICAgIERPTVByb21pc2UoRE9NUHJv
bWlzZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBET01Qcm9taXNlKERPTVByb21pc2UmJiBwcm9taXNl
KSA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUocHJvbWlzZS5tX3Byb21pc2VEZWZlcnJlZCkp
IHsgfQotCi0gICAgRE9NUHJvbWlzZShjb25zdCBET01Qcm9taXNlJikgPSBkZWZhdWx0OwotICAg
IERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlIGNvbnN0JikgPSBkZWZhdWx0OworICAg
IERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlIG90aGVyKQorICAgIHsKKyAgICAgICAg
c3dhcChvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKICAgICB2b2lkIHJl
c29sdmUodHlwZW5hbWUgUHJvbWlzZVJlc3VsdEluc3BlY3RvcjxWYWx1ZT46OlR5cGUgdmFsdWUp
IHsgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUodmFsdWUpOyB9CiAKQEAgLTIxNSw2ICsyMjEs
MTEgQEAgY2xhc3MgRE9NUHJvbWlzZSB7CiAgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25z
dCB7IHJldHVybiBtX3Byb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOyB9OwogCiBwcml2YXRlOgor
ICAgIHZvaWQgc3dhcChET01Qcm9taXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIHN0ZDo6c3dh
cChtX3Byb21pc2VEZWZlcnJlZCwgb3RoZXIubV9wcm9taXNlRGVmZXJyZWQpOworICAgIH0KKwog
ICAgIFJlZjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZURlZmVycmVkOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1B
Qy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1I
TUFDLmNwcAppbmRleCBlZDE4NmQ3MjI3ZWNlMDdiNzMyZTIxNTdlMGMxMTY3MzhmMmY3NmJmLi4y
YTY2ZDE5NDdhZGVjNmVhMWQ2ZjdkMGRjODhmZjI3YWFjMzRiZDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNw
cApAQCAtODIsNyArODIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZSho
bWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVPcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50
aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5
SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFy
YW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRl
eCA0OTJjNzU0N2U4ODI5MmFkNGQ5MWE4MGQ2MmM5MGVlOWI5M2ExYmQzLi5mN2Q1OWY3ZmFhZTc0
MWFmYmU5NGIzNWRhYjY4ODlhM2RmZmQ0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKQEAgLTgzNiw3ICs4MzYsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmdldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNv
bgogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKFVuaXRUeXBlcyB1bml0
VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRlcm5hbCh1bml0VHlwZSku
dmFsdWVPcigwKTsKKyAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRlcm5hbCh1bml0VHlwZSkudmFs
dWVfb3IoMCk7CiB9CiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGFmYTM2NjY0YjI0NjQx
YTc2M2U0OGYyZDI4N2NjMWY1YWQxOGM1Y2UuLmI2YmEyMjFkMjZkYmY3NzFkNDUyNTMxOGUzZDIw
MzJkM2ZhN2UzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMzNCw3
ICszMzQsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdAogICAgIGlmICghc3R5bGUuaXNFbXB0
eSgpKQogICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwogICAgIHRleHQuYXBwZW5kKCd9Jyk7Ci0g
ICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGlu
ZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNl
cnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVfb3IobGVuZ3RoKCkpKTsKICAgICBp
ZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGluc2Vy
dFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDNjN2M4ZDE1YjRkMTNkNTE4Y2IzOGRmYjljZWI0MTUyY2U2NmU3NmEuLjM1ZDJjZjY1
MTJiNmFiY2Q1N2NhYTdkZTcwMGU3ZDg5NjdlZjg0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNp
YmxlKGJvb2wgY2VudGVySWZOb3RWaXNpYmxlKQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEJ5KGNv
bnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gc2Nyb2xsQnkob3B0
aW9ucy5sZWZ0LnZhbHVlT3IoMCksIG9wdGlvbnMudG9wLnZhbHVlT3IoMCkpOworICAgIHJldHVy
biBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVfb3IoMCksIG9wdGlvbnMudG9wLnZhbHVlX29y
KDApKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgbm9ybWFsaXplTm9uRmluaXRlVmFsdWUo
ZG91YmxlIGYpCkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIAogaW50IEVsZW1l
bnQ6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2VyKGdl
dEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQgRWxlbWVu
dDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgaW50IHZhbHVlKQpAQCAtMzAzOCw3ICszMDM4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJbnRl
Z3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFs
dWUKIAogdW5zaWduZWQgRWxlbWVudDo6Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1
ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRV
bnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIHVuc2lnbmVkIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CmluZGV4IGYxNzAwMWZiMjY5YmJjMTliYzg2Mjc0ZTU3ZjJkNTVhZjFjNmRmNGQuLjMyNTU3OWRj
YzQzMGY3ZmFmZDcwMTk4YzJkZThjN2U3MTBjNmRiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5jcHAKQEAgLTgwLDkgKzgwLDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTXV0
YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0JiBpbml0KQogICAg
ICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAgICBpZiAoaW5pdC5zdWJ0cmVlKQogICAgICAg
ICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUudmFs
dWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUudmFsdWVfb3IoZmFs
c2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZU9sZFZhbHVlOwotICAgIGlmIChpbml0
LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKKyAgICBpZiAoaW5pdC5jaGFy
YWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IENo
YXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBhdHRyaWJ1
dGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKaW5kZXggZWM3Y2M0MTA0
MTIzNWFmNWZjYjk5NjE4NDc3NjlkM2U1N2Y4YTExNC4uYTQyN2QwYjMwNGZmNjQ2Y2UyYjE5ZTBh
NGEzZDFhOGQ0NmJiYjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tl
bkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAt
MTQyLDcgKzE0Miw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IERPTVRva2VuTGlzdDo6dG9nZ2xlKGNv
bnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIE9wdGlvbmFsPGJvb2w+CiAgICAgYXV0byYgdG9rZW5z
ID0gdGhpcy0+dG9rZW5zKCk7CiAKICAgICBpZiAodG9rZW5zLmNvbnRhaW5zKHRva2VuKSkgewot
ICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3IoZmFsc2UpKSB7CisgICAgICAgIGlmICghZm9yY2Uu
dmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICB0b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4p
OwogICAgICAgICAgICAgdXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCmluZGV4IGY0MDNmMjMwNTFiMDIwNmEyM2UzYjg2NTdjNzUzZTA3MGI3MmE5N2UuLmI1
ZDFiYzMzZWMxYWViMzc2NWI1M2UxNzc0ZDU2YzU4ZWMzNTRhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTc2NSw3ICsxNzY1LDcgQEAgYm9vbCBIVE1M
SW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUp
CiB7CiAgICAgdW5zaWduZWQgb2xkRWZmZWN0aXZlTWF4TGVuZ3RoID0gZWZmZWN0aXZlTWF4TGVu
Z3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlm
IChvbGRFZmZlY3RpdmVNYXhMZW5ndGggIT0gZWZmZWN0aXZlTWF4TGVuZ3RoKCkpCiAgICAgICAg
IHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUpCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpbnQgb2xkTWluTGVu
Z3RoID0gbWluTGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRN
aW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigt
MSkpOwogICAgIGlmIChvbGRNaW5MZW5ndGggIT0gbWluTGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0
ZVZhbHVlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggMWZkYmM1MTg0YWI2NzZjNTM1ZDUyZTQyZDBlYzMwOTY0MDUyZTQ2NC4u
YmNlYjU5YTZmODU5ZTVlMGE2NGI2MzliZjVhMTMyMjljNTJlOWFiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yMDUsMTMgKzIwNSwxMyBAQCB2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pYwogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExl
bmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAg
ICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFs
dWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRp
dHkoKTsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxTZXRN
aW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0x
KSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCmluZGV4IDI1ZDliMmJlNmY5ZjM1M2YwOTM5ZmVlYzhmMmEyYjlhMzBiOWRmNTEu
LjdhN2U3MTg1ZWJhNjI3Y2JhYzY4MWNiMWZmOTY3Yjk0YmE5YjRkMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cApAQCAtMTExNSw3ICsxMTE1LDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Omlz
UG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4LAogICAgIGlmICgh
c3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5
KSk7CisgICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50cmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50
KHgsIHkpKTsKIAogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkg
fHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgeAogICAg
IGlmICghc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2lu
dCh4LCB5KSk7CisgICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50cmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9h
dFBvaW50KHgsIHkpKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC54
KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmgKaW5kZXggM2U3OTg5ZDdjYWNmMWJkYjE3MzY3YzhkYTg3ZGJlYzNiMTBmN2FhZi4uMGJj
OGIwNzljNDhjZmE3ZDZkMmUwYjEwMTllNTY4Mjc3NTllZGNkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMTU0LDcgKzE1NCw3IEBAIGlu
bGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh1bnNpZ25lZCB2YWx1ZSwg
dW5zaWduZWQgZGVmYXVsdFZhbHVlCiBpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9u
TmVnYXRpdmUoU3RyaW5nVmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0g
MCkKIHsKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVn
ZXIpOwotICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0
cmluZ1ZhbHVlKS52YWx1ZU9yKGRlZmF1bHRWYWx1ZSk7CisgICAgdW5zaWduZWQgdmFsdWUgPSBw
YXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZhbHVlX29yKGRlZmF1bHRW
YWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwog
ICAgIHJldHVybiB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMTFhNDhkNzNjYTM3OGZiNTRhOGVlZGQ4OGU2
Yzc2OGEyM2Y5MGUxMi4uYmFlMWZiMjk2YTgyY2E0MDdkYzJkMmYxNWQxMjYwZWIzNDJlN2JmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlcwogdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRo
UHJlZmxpZ2h0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fYXN5bmMp
IHsKLSAgICAgICAgbV9wcmVmbGlnaHRDaGVja2VyID0gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgbV9wcmVmbGlnaHRDaGVja2Vy
LmVtcGxhY2UoKnRoaXMsIFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICBtX3ByZWZsaWdodENo
ZWNrZXItPnN0YXJ0UHJlZmxpZ2h0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiOWVmNmUwOWU3YjM4MDA3OWNlOGU3Yzcx
ZmE2ZGZjZTFkMzAzNjBmLi5hOThhZGJmZDQyMmUzOTk2Yjg4MWNkNGUzYjcwNjc0MjFmYTQzZDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM0Niw3ICszNDYsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0KQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIExv
Y2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8
TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRvbWljU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSkKIHsKLSAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFtZU9w
ZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZU9yKHNob3VsZFNlbmRSZWZlcnJlciA9PSBO
ZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5ld0Zy
YW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CisgICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJh
bWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVfb3Ioc2hvdWxkU2VuZFJlZmVycmVy
ID09IE5ldmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDog
TmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRS
ZXF1ZXN0KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1
ZXN0KHVybCksIHBhc3NlZFRhcmdldCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3Qs
IHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIG5l
d0ZyYW1lT3BlbmVyUG9saWN5LCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgZG93bmxvYWRBdHRyaWJ1dGUpLCB0cmlnZ2Vy
aW5nRXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggM2EyZjc1OTAz
NzU5NjdmZGJlZDcxZDBlNDIzYjJkNzI3ODMyZDJhYy4uOTEwYTUwYjc3YWYwM2RlMjczYzMxOTBj
ZTY3ODM3Y2JlNzdjOTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ5NSw3
ICsxNDk1LDcgQEAgZG91YmxlIERPTVdpbmRvdzo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiAK
IHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlvbnMp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZU9yKDApLCBv
cHRpb25zLnRvcC52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0
LnZhbHVlX29yKDApLCBvcHRpb25zLnRvcC52YWx1ZV9vcigwKSk7CiB9CiAKIHZvaWQgRE9NV2lu
ZG93OjpzY3JvbGxCeShkb3VibGUgeCwgZG91YmxlIHkpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGUzNWEyMzdlNGQ4MzNjNTJjNTAwZWY2NWQ4ZjUwY2Yy
NTA0ZmQyNDMuLjFjYzc4ZTZmNWNhNWFlNjZmNDVmYmNkMzE1YWIzM2U5M2Y0OTJjOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC01NzIsNyArNTcyLDcgQEAgU3Ry
aW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdAogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoZW5jb2RlRm9yRmlsZU5hbWUobV9ob3N0KSk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlciht
X3BvcnQudmFsdWVPcigwKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobV9wb3J0
LnZhbHVlX29yKDApKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggYjVkODk5
YmVhMWViODE1Y2IwMzBlYTBjMjA0OTE3MmVhNzkzNDZlMi4uMTk4N2JjYjA5NmVjNzhkYzZiZGNm
Yjk1YTMwZTdlOGMzZjFjNGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmNwcApAQCAtNDksNyArNDksNyBAQCBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mCiAjaWYg
IUxPR19ESVNBQkxFRAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcoKSBj
b25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwgIjoi
LCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlT3IoMCkpKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
Zyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZV9v
cigwKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFz
aC5oCmluZGV4IDUwZWIyOTU2ZjIzYjdjZjEyZWNiOTBjZjc2ZmQ4Yjk4MWVhM2I1NWEuLmI3YTVh
ZWZlZGExYjZkZWZkNzJhOWJlN2M2YmEyMDYyZTFiZDJkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5IYXNoIHsKICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewogICAgICAgICAg
ICAgb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKSA/IG9yaWdpbi0+cHJvdG9jb2woKS5pbXBsKCkt
Pmhhc2goKSA6IDAsCiAgICAgICAgICAgICBvcmlnaW4tPmhvc3QoKS5pbXBsKCkgPyBvcmlnaW4t
Pmhvc3QoKS5pbXBsKCktPmhhc2goKSA6IDAsCi0gICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52
YWx1ZU9yKDApCisgICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKQogICAgICAg
ICB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNo
Q29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJl
cy5jcHAKaW5kZXggN2M3NmFlMTI4MjA4Zjg0M2NlNzI3ZDRjNmUxYjRhNmUzNmI5NWY1My4uZTZk
ODY4YzBkYzA2OTZjZTk1ZTg1Mjg4MGEzNjdjNDg2MDFiZGMzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTE1OCw4ICsxNTgsOCBAQCBXaW5kb3dGZWF0dXJlcyBw
YXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNv
bnN0IEZsbwogICAgIGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSA9IGZhbHNlOwogICAgIGZl
YXR1cmVzLmRpYWxvZyA9IHRydWU7CiAKLSAgICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShm
ZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRoIiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRo
KCkpLnZhbHVlT3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9m
IGRpYWxvZyBpbiBNYWNJRQotICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJl
c01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSku
dmFsdWVPcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlh
bG9nIGluIE1hY0lFCisgICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAs
ICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9v
cig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGlu
IE1hY0lFCisgICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlh
bG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZV9vcig0
NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1h
Y0lFCiAKICAgICBmZWF0dXJlcy53aWR0aCA9IHdpZHRoOwogICAgIGZlYXR1cmVzLmhlaWdodCA9
IGhlaWdodDsKQEAgLTE2NywxNiArMTY3LDE2IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9n
RmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvCiAg
ICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2xlZnQiLCBz
Y3JlZW5BdmFpbGFibGVSZWN0LngoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhYKCkgLSB3aWR0
aCk7CiAgICAgZmVhdHVyZXMueSA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ3Rv
cCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFkoKSAt
IGhlaWdodCk7CiAKLSAgICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52
YWx1ZU9yKHRydWUpKSB7CisgICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAiY2VudGVy
IikudmFsdWVfb3IodHJ1ZSkpIHsKICAgICAgICAgaWYgKCFmZWF0dXJlcy54KQogICAgICAgICAg
ICAgZmVhdHVyZXMueCA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpICsgKHNjcmVlbkF2YWlsYWJs
ZVJlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDI7CiAgICAgICAgIGlmICghZmVhdHVyZXMueSkKICAg
ICAgICAgICAgIGZlYXR1cmVzLnkgPSBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIChzY3JlZW5B
dmFpbGFibGVSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDI7CiAgICAgfQogCi0gICAgZmVhdHVy
ZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1
ZU9yKGZhbHNlKTsKLSAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJl
KGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVPcih0cnVlKTsKLSAgICBmZWF0dXJlcy5zdGF0
dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1ZU9y
KGZhbHNlKTsKKyAgICBmZWF0dXJlcy5yZXNpemFibGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01h
cCwgInJlc2l6YWJsZSIpLnZhbHVlX29yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5zY3JvbGxiYXJz
VmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVfb3IodHJ1
ZSk7CisgICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAic3RhdHVzIikudmFsdWVfb3IoZmFsc2UpOwogCiAgICAgcmV0dXJuIGZlYXR1cmVzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CmluZGV4IGFlOTc1MThiMTY5ZTEwMWM3YmZlYzE4MzAyODgzMTAzMGE4MmU2YjguLjFhM2I2M2Y1
NTM4MDQ0YmZjOTNlY2QxZDAzZTFiNmI0ZjhiZWUyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCBm
bG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkgJiYg
Y3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID09IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3Io
cnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1
bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVu
KTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMg
cGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtp
dC5vcmcvYi8xMDAwNTAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
bgogICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAgICBD
b2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNl
IHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2Vy
bmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAgLTQ5
Miw3ICs0OTIsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElmQXZh
aWxhYmxlKGZsb2F0JiB3aWR0aCkgY29uc3QKIAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2Vs
ZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rp
b25SZWN0LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7Ci0g
ICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAg
dW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogCiAgICAg
Q29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVz
ZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtl
cm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDg5
OGQ2NWJkNTI0ZWU2MzU2ZjI5YTAzMDVjODhmZTEwMTBjNmM3YmMuLmZmMDk1YjUyMTlmYWEzM2Mx
YjYyMjFkZmFkNWNlNTBjZWQwYzAwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgSW50UmVjdCBTaGFk
b3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEYKICAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNm
b3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAgICBGbG9hdFF1YWQgdHJhbnNmb3JtZWRQb2x5Z29u
ID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRRdWFkKHNoYWRvd2VkUmVjdCkpOwogICAgICAgICB0
cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNldCk7Ci0gICAgICAgIGxheWVyUmVjdCA9IHRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFu
c2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7CisgICAgICAgIGxheWVyUmVjdCA9IHRyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNm
b3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxheWVy
UmVjdCA9IHNoYWRvd2VkUmVjdDsKICAgICAgICAgbGF5ZXJSZWN0Lm1vdmUobV9vZmZzZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTMyNGMyMDhjYjE4ZGE4N2QxZTI4YTA0MDhlMTk4
NmY5MTUxODJmYS4uYmMxZDAwZjQ1ZjM2YzIxNzU5NTIwODg3NmVlNjk5OWQ5ODA4NGFkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzUyLDcgKzIzNTIsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNz
Q29udGV4dCYgYwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChtX2xh
c3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9sYXN0SW1hZ2UuZ2V0KCkpKTsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSBbZmlyc3RFbmFibGVkVmlkZW9UcmFj
ayBwcmVmZXJyZWRUcmFuc2Zvcm1dOwotICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJl
Y3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUmVjdChvdXRwdXRSZWN0KTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRwdXRSZWN0
ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBSZWN0KG91dHB1dFJlY3QpOwogCiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zv
cm0pOwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFn
ZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IGZhN2NiNzFmNDFhOGEyNThlZjBlNGQ2MDA5YzJjZDc2Y2IzZWMwZDguLmEwMWJkZTk1MjIw
MGZiNTg5MmQwNjRiNzA5Y2EzYzBhY2VhMGEwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0xMDAyLDcgKzEwMDIs
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZWVrVG9UaW1lKE1lZGlhVGlt
ZSB0aW1lKQogCiBGbG9hdFNpemUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxT
aXplKCkKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlT3IoRmxvYXRTaXplKCkpOwor
ICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVfb3IoRmxvYXRTaXplKCkpOwogfQogCiB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVz
KGludCB0cmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmgKaW5kZXggMjVhNWRiYjEyNjE4MzQ3NTNkNTQ3Njg4OTA4NDA1YmZmNzAy
MDk4Yy4uM2FmZmQ0MjFlMGUzZDczMTg3ZjJlMzQyN2ZiNmQ0ZjEzZWI1ODViOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC00
Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlcj4gewog
ICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoZmxvYXQgc2NhbGUpIHsgbV9maWx0ZXJTY2FsZSA9IHNj
YWxlOyB9CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybTsgfQotICAgIEZsb2F0UG9pbnQgbWFw
QWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3Qg
eyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOyB9CisgICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBv
aW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBt
X2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnQpOyB9CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01v
ZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRl
cmluZ01vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggODk1ZDM3ZjM5Y2Yw
NTcyZjVkNDk2ZTBlYjYwYWJiMWYyOTA2ZmE1Yy4uNDkxMGNmMGFjN2UyZDg3NjAwMTk4Yjg0OTVl
NThkNzNmOGExNTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIxMSw3ICsy
MTEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRo
UmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogICAgICAgICBUZXh0dXJlTWFwcGVyUGFp
bnRPcHRpb25zIHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwogICAgICAgICByZXBsaWNhT3B0aW9u
cy50cmFuc2Zvcm0KICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+
bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpCi0gICAgICAgICAgICAubXVsdGlwbHkobV9j
dXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkpOworICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5j
b21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAg
ICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxpY2FPcHRpb25zKTsKICAgICB9CiAKQEAg
LTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJM
YXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCiB7Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0
cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSku
bXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3Io
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpLm11
bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
ZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKQEAgLTcz
MSw3ICs3MzEsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6Zmlu
ZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYQogRmxvYXRTaXplIFRleHR1cmVN
YXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQogewog
ICAgIGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNldFk7Ci0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgIHRyYW5zZm9ybS5tYXAo
MCwgMCwgemVyb1gsIHplcm9ZKTsKICAgICB0cmFuc2Zvcm0ubWFwKG9mZnNldC53aWR0aCgpLCBv
ZmZzZXQuaGVpZ2h0KCksIG9mZnNldFgsIG9mZnNldFkpOwogICAgIHJldHVybiBGbG9hdFNpemUo
b2Zmc2V0WCAtIHplcm9YLCBvZmZzZXRZIC0gemVyb1kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA3NDhhZDhlOWUz
ODBhM2VlNzJhNmEwMjE1ODI0ZWY4ZDQxN2VjMzEwLi40NjJiNjJlZDQ3NzdiZjYzNTdkNTQ0MzRh
ODFlZTVmZmE4MzI5YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTQ3LDcgKzk0Nyw3IEBAIEludFJlY3QgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICAvLyBS
ZXR1cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxlIHJlY3QgKHN1cmZhY2UgY29vcmRpbmF0
ZXMpIG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVyIGNvb3JkaW5hdGVzKS4KICAgICAvLyBU
aGUgcmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQgdGhlIHZpc2libGUgcmVjdCBp
cyB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAvLyBzbyBpdCBtaWdodCBzcHJl
YWQgZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAoYW5kIHRoZW4gZXZlbiBtb3Jl
IGFtcGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVyKS4KLSAgICBBU1NFUlQobV9j
YWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZl
cnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgQVNTRVJUKG1fY2Fj
aGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICBGbG9hdFJlY3QgcmVj
dCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFk
KEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVudHNSZWN0KCkpKTsKICAgICBj
bGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShyZWN0LCBzaXplKCkpOwogICAgIHJl
dHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkK
ICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNm
b3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50KCkg
PyBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpwYXJlbnQoKSkubV9sYXllclRy
YW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsK
IAotICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmlu
ZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBtX2Nh
Y2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgLy8gVGhlIGNvbWJp
bmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVj
dC4KICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bVN0YXRlLmNwcAppbmRleCBlNzYzY2MxMzkzZGJjZGU2MTEzMjExOGZmYjQzMTkxYzY0OGU0NWU0
Li5mMGUyZGEzMTkzYzRlODk5MTFmZjdmY2I2ZGI4ZWE4NDY0ODc5MGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybVN0YXRlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIEZsb2F0UG9pbnQgVHJhbnNmb3Jt
U3RhdGU6Om1hcHBlZFBvaW50KGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiAgICAgaWYgKG1fZGly
ZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gbV9hY2N1
bXVsYXRlZFRyYW5zZm9ybS0+bWFwUG9pbnQocG9pbnQpOwogCi0gICAgcmV0dXJuIG1fYWNjdW11
bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
LnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CisgICAgcmV0dXJuIG1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5w
cm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOwogfQogCiBGbG9hdFF1YWQgVHJhbnNmb3Jt
U3RhdGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKQEAgLTIxOCw3ICsyMTgs
NyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNm
b3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbAogICAgIGlmIChkaXJlY3Rpb24gPT0gQXBwbHlU
cmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
LT5tYXBRdWFkKHF1YWQpOwogCi0gICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmlu
dmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQs
IHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNl
KCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwgd2Fz
Q2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3YXNDbGFtcGVkKQpAQCAtMjMz
LDcgKzIzMyw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3CiAgICAgICAgIH0KIAogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0
LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVfb3Io
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIGlmIChtX21hcFBvaW50KQogICAgICAg
ICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlVHJhbnNmb3JtLnByb2plY3RQb2ludCht
X2xhc3RQbGFuYXJQb2ludCk7CiAgICAgICAgIGlmIChtX21hcFF1YWQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAppbmRleCAx
ZjFjMzgwNTU1MTExZjQ0YTFmMWU3ZTZlMDMyYTI3MzBkZDk0YmZkLi5iMzhlNzA3MjAyMzhlMGM4
ZWU3ZWNiMGRlYjkwNmMyYTFiMjU2NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgc3QKICAgICAvLyBObyBjb21wZW5zYXRpb24gZm9yIGxhdGVuY3kg
YXMgdGhhdCBpcyBub3QgdGVycmlibHkgaW1wb3J0YW50IGluIHByYWN0aWNlLgogICAgIGF1dG8g
ZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOwogICAgIGF1dG8gYXBwYXJlbnRBZ2UgPSBkYXRl
VmFsdWUgPyBzdGQ6Om1heCgwdXMsIGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihyZXNwb25z
ZVRpbWUgLSAqZGF0ZVZhbHVlKSkgOiAwdXM7Ci0gICAgYXV0byBhZ2VWYWx1ZSA9IHJlc3BvbnNl
LmFnZSgpLnZhbHVlT3IoMHVzKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCku
dmFsdWVfb3IoMHVzKTsKICAgICBhdXRvIGNvcnJlY3RlZEluaXRpYWxBZ2UgPSBzdGQ6Om1heChh
cHBhcmVudEFnZSwgYWdlVmFsdWUpOwogICAgIGF1dG8gcmVzaWRlbnRUaW1lID0gZHVyYXRpb25f
Y2FzdDxtaWNyb3NlY29uZHM+KHN5c3RlbV9jbG9jazo6bm93KCkgLSByZXNwb25zZVRpbWUpOwog
ICAgIHJldHVybiBjb3JyZWN0ZWRJbml0aWFsQWdlICsgcmVzaWRlbnRUaW1lOwpAQCAtMTIyLDcg
KzEyMiw3IEBAIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY29tcHV0ZUZyZXNobmVzc0xpZmV0
aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIHJldHVybiAqbWF4QWdl
OwogCiAgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOwotICAgIGF1dG8gZWZmZWN0aXZl
RGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRpbWUpOworICAgIGF1dG8gZWZmZWN0aXZlRGF0
ZSA9IGRhdGUudmFsdWVfb3IocmVzcG9uc2VUaW1lKTsKICAgICBpZiAoYXV0byBleHBpcmVzID0g
cmVzcG9uc2UuZXhwaXJlcygpKQogICAgICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNyb3Nl
Y29uZHM+KCpleHBpcmVzIC0gZWZmZWN0aXZlRGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyM2FkY2QzNDMxNzIxZDA2NWJiMjIzZTI2Njhk
OGEwNWY1MjAyNTU3Li5mN2FlYTg0MjZmMmExMzYwYTdlM2NhNzhiOTAyZjk0ZTA4YzQwNDY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMDE3LDcg
KzEwMTcsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNpZ25l
ZCBvZmZzZXQpIGNvbnN0CiAKIFN0cmluZ1ZpZXcgSW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9S
ZW5kZXIoT3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRpbmdMZW5ndGgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhzdGFydCgpLCBv
dmVycmlkaW5nTGVuZ3RoLnZhbHVlT3IobGVuKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyhy
ZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0KCksIG92ZXJyaWRpbmdMZW5ndGgudmFs
dWVfb3IobGVuKCkpKTsKIH0KIAogU3RyaW5nIElubGluZVRleHRCb3g6Omh5cGhlbmF0ZWRTdHJp
bmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgT3B0aW9uYWw8dW5zaWduZWQ+
IGFsdGVybmF0ZUxlbmd0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaApp
bmRleCA1MTFhNmJjYzU0ZmE4MTQ5NzRjMjBlNmNmODhkMTMxYzJlYjg0NjRmLi40YWIzODkzNWU5
NGI4ZjMwNjJlZTA5ZDNhMjIyN2QyYTg4OTQwZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50SW5mby5oCkBAIC0xMDksNyArMTA5LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAg
IGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBG
bG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3QpKTsKKyAgICAgICAgRmxv
YXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOwogICAgICAgICByZWN0
LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5mb3JtZWRSZWN0LmxvY2F0aW9uKCkpKTsKICAg
ICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUodHJhbmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAwNjZjZmI4ZmJi
ZGU1NzVkZjc0ZDhhM2U5YzI4NWRkMzNiY2FjNTU5Li40ZDRkZTgxNzk2YTlhN2JiMDA5ZDlkOWUw
NGQxY2NiMTA4ZmUyNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApA
QCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0
KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICAgICAgTGF5
b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAgICAgIGlmIChjaGVja01pbk1heEhlaWdodCkgewog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBpbnRyaW5zaWNIZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5t
X2V4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBo
ZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNp
emUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBpbnRyaW5zaWNIZWlnaHQpLnZhbHVlT3IoY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0
ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZV9vcihjb21wdXRlZFZhbHVlcy5tX2V4dGVu
dCk7CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlN
aW5NYXgoaGVpZ2h0UmVzdWx0LCBpbnRyaW5zaWNIZWlnaHQpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gVGhlIG9ubHkgdGltZXMgd2UgZG9uJ3QgY2hlY2sgbWluL21heCBoZWln
aHQgYXJlIHdoZW4gYSBmaXhlZCBsZW5ndGggaGFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDgyYWRi
Y2Q0MWYwOTg4YThiNDllZGYwOWVmOTIxZTA3YmY5Y2QyZDQuLjU2M2U1MzZkNmExNjYwMmY0Y2U5
NDUwMzk2NDBmNDEwZjJlOWM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC00MzMsNyArNDMzLDcg
QEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3go
Ym9vbCByZWxheW91dENoaWxkcmVuKQogCiAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdo
dCBhbmQgb3ZlcmZsb3cgaGVpZ2h0LgogICAgICAgICAgICAgaWYgKHN0eWxlKCkuYm94QWxpZ24o
KSA9PSBCQkFTRUxJTkUpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNo
aWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQt
Pm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNo
aWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxk
LT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5tYXJn
aW5Ub3AoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGRlc2NlbnQgPSAoY2hpbGQtPmhl
aWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpIC0gYXNjZW50OwogCkBAIC01
MDgsNyArNTA4LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhv
cml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgICAgICBj
aGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgKGNv
bnRlbnRIZWlnaHQoKSAtIChjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5F
eHRlbnQoKSkpIC8gMik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgQkJBU0VMSU5FOiB7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNj
ZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkg
KyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOworICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWln
aHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAgICAgICAgIGFzY2Vu
dCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSArPSBj
aGlsZC0+bWFyZ2luVG9wKCkgKyAobWF4QXNjZW50IC0gYXNjZW50KTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAppbmRleCA0OWNhMmFjZDI4NGFmMWNkMWYyYTc5ZWMwMmI3NmEwMzg5NDMzZGUyLi40
NGYyN2EzZDIyNDAxOGNmYTllNDljMWRkNDk2MWI5NDhhZjIzZTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBA
QCBzdGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveChjb25zdCBSZW5k
ZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbgogCiBpbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rp
b24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7Ci0gICAgaW50IGJhc2VsaW5lID0gZmlyc3RM
aW5lQmFzZWxpbmUoKS52YWx1ZU9yKHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgq
dGhpcywgZGlyZWN0aW9uKSk7CisgICAgaW50IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUo
KS52YWx1ZV9vcihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRpcmVj
dGlvbikpOwogCiAgICAgaW50IG1hcmdpbkFzY2VudCA9IGRpcmVjdGlvbiA9PSBIb3Jpem9udGFs
TGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKTsKICAgICByZXR1cm4gYmFzZWxpbmUg
KyBtYXJnaW5Bc2NlbnQ7CkBAIC02ODUsNyArNjg1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4
aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94
JgogICAgICAgICBBU1NFUlQobWFpbkF4aXNFeHRlbnQgLSBtYWluQXhpc0JvcmRlckFuZFBhZGRp
bmdFeHRlbnRGb3JDaGlsZChjaGlsZCkgPj0gMCk7CiAgICAgICAgIHJldHVybiBtYWluQXhpc0V4
dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNoaWxkKGNoaWxkKTsKICAg
ICB9Ci0gICAgcmV0dXJuIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWlu
T3JQcmVmZXJyZWRTaXplLCBmbGV4QmFzaXMpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBmbGV4
QmFzaXMpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRG
bGV4SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVuLCBWZWN0b3I8TGluZUNvbnRleHQ+JiBsaW5l
Q29udGV4dHMpCkBAIC04MjUsNyArODI1LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6dXBk
YXRlQXV0b01hcmdpbnNJbkNyb3NzQXhpcyhSZW5kZXJCb3gmIGNoaWxkLCBMYXlvdXRVbmkKIAog
TGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQoUmVu
ZGVyQm94JiBjaGlsZCkKIHsKLSAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVPcihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOworICAg
IExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihj
cm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOwogICAgIHJldHVybiBhc2NlbnQgKyBmbG93
QXdhcmVNYXJnaW5CZWZvcmVGb3JDaGlsZChjaGlsZCk7CiB9CiAKQEAgLTkzMCwxMiArOTMwLDEy
IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFu
ZE1heChjb25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4
RXh0ZW50ID0gTnVsbG9wdDsKICAgICBpZiAobWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkg
ewogICAgICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGls
ZCwgTWF4U2l6ZSwgbWF4KTsKLSAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXpl
LCBtYXhFeHRlbnQudmFsdWVPcihjaGlsZFNpemUpKTsKKyAgICAgICAgY2hpbGRTaXplID0gc3Rk
OjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRTaXplKSk7CiAgICAgfQog
ICAgIAogICAgIExlbmd0aCBtaW4gPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgp
Lm1pbldpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLm1pbkhlaWdodCgpOwogICAgIGlmIChtaW4uaXNT
cGVjaWZpZWRPckludHJpbnNpYygpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXpl
LCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52YWx1
ZU9yKGNoaWxkU2l6ZSkpOworICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBjb21w
dXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52YWx1ZV9vcihj
aGlsZFNpemUpKTsKICAgICAKICAgICBpZiAoIWlzRmxleGlibGVCb3hJbXBsKCkgJiYgbWluLmlz
QXV0bygpICYmIG1haW5BeGlzT3ZlcmZsb3dGb3JDaGlsZChjaGlsZCkgPT0gT1ZJU0lCTEUgJiYg
IShpc0NvbHVtbkZsb3coKSAmJiBpczxSZW5kZXJGbGV4aWJsZUJveD4oY2hpbGQpKSkgewogICAg
ICAgICAvLyBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDU1MgZmxleGJveCBzZWN0aW9u
IDQuNSB3aGljaCBkZWZpbmVzIHRoZSBtaW5pbXVtIHNpemUgb2YgInB1cmUiIGZsZXgKQEAgLTk0
NywxMyArOTQ3LDEzIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxk
U2l6ZUZvck1pbkFuZE1heChjb25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAgICAgIEFTU0VSVChj
b250ZW50U2l6ZSA+PSAwKTsKICAgICAgICAgaWYgKGNoaWxkLmhhc0FzcGVjdFJhdGlvKCkgJiYg
Y2hpbGQuaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpID4gMCkKICAgICAgICAgICAgIGNvbnRlbnRT
aXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hp
bGQsIGNvbnRlbnRTaXplKTsKLSAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250ZW50
U2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY29udGVudFNpemUpKTsKKyAgICAgICAgY29udGVudFNp
emUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNvbnRlbnRTaXpl
KSk7CiAgICAgICAgIAogICAgICAgICBMZW5ndGggbWFpblNpemUgPSBpc0hvcml6b250YWxGbG93
KCkgPyBjaGlsZC5zdHlsZSgpLndpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLmhlaWdodCgpOwogICAg
ICAgICBpZiAobWFpbkF4aXNMZW5ndGhJc0RlZmluaXRlKGNoaWxkLCBtYWluU2l6ZSkpIHsKICAg
ICAgICAgICAgIExheW91dFVuaXQgcmVzb2x2ZWRNYWluU2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4
dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBtYWluU2l6ZSkudmFsdWUo
KTsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlZE1haW5TaXplID49IDApOwotICAgICAgICAg
ICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwg
bWF4RXh0ZW50LnZhbHVlT3IocmVzb2x2ZWRNYWluU2l6ZSkpOworICAgICAgICAgICAgTGF5b3V0
VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50
LnZhbHVlX29yKHJlc29sdmVkTWFpblNpemUpKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
eChjaGlsZFNpemUsIHN0ZDo6bWluKHNwZWNpZmllZFNpemUsIGNvbnRlbnRTaXplKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAodXNlQ2hpbGRBc3BlY3RSYXRpbyhjaGlsZCkpIHsKICAgICAgICAgICAg
IExlbmd0aCBjcm9zc1NpemVMZW5ndGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHls
ZSgpLmhlaWdodCgpIDogY2hpbGQuc3R5bGUoKS53aWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDVmMGRkMDQ3YmE5MDc5MmUzMWM0NWZmZWE4MDJmNzk2
NzQwY2ZlYTQuLmI2MDAyZDJiMTMyNTU4NjcyYWIzN2E3ODliMGYzODAyM2Q0ZDg3YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgY2xh
c3MgR3JpZFRyYWNrIHsKIAogICAgIHZvaWQgc2V0R3Jvd3RoTGltaXQoTGF5b3V0VW5pdCBncm93
dGhMaW1pdCkKICAgICB7Ci0gICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9PSBp
bmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3RoTGlt
aXRDYXAudmFsdWVPcihncm93dGhMaW1pdCkpOworICAgICAgICBtX2dyb3d0aExpbWl0ID0gZ3Jv
d3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0
LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlX29yKGdyb3d0aExpbWl0KSk7CiAgICAgICAgIGVuc3Vy
ZUdyb3d0aExpbWl0SXNCaWdnZXJUaGFuQmFzZVNpemUoKTsKICAgICB9CiAKQEAgLTY4Niw3ICs2
ODYsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2lj
TG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndAogCiAgICAgaWYgKGxvZ2ljYWxIZWlnaHRM
ZW5ndGguaXNGaXRDb250ZW50KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBmaWxsQXZhaWxhYmxl
RXh0ZW50ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoRXhjbHVk
ZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAgICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhDb250
ZW50SGVpZ2h0LnZhbHVlT3IoMCksIHN0ZDo6bWF4KG1fbWluQ29udGVudEhlaWdodC52YWx1ZU9y
KDApLCBmaWxsQXZhaWxhYmxlRXh0ZW50KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1pbihtX21h
eENvbnRlbnRIZWlnaHQudmFsdWVfb3IoMCksIHN0ZDo6bWF4KG1fbWluQ29udGVudEhlaWdodC52
YWx1ZV9vcigwKSwgZmlsbEF2YWlsYWJsZUV4dGVudCkpOwogICAgIH0KIAogICAgIGlmIChsb2dp
Y2FsSGVpZ2h0TGVuZ3RoLmlzRmlsbEF2YWlsYWJsZSgpKQpAQCAtNzA5LDcgKzcwOSw3IEBAIHZv
aWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3RpCiAKICAgICAvLyBHcmlkIGd1dHRlcnMgd2VyZSByZW1vdmVk
IGZyb20gZnJlZVNwYWNlIGJ5IHRoZSBjYWxsZXIgKGlmIGZyZWVTcGFjZSBpcyBkZWZpbml0ZSks
CiAgICAgLy8gYnV0IHdlIG11c3QgdXNlIHRoZW0gdG8gY29tcHV0ZSByZWxhdGl2ZSAoaS5lLiBw
ZXJjZW50YWdlcykgc2l6ZXMuCi0gICAgTGF5b3V0VW5pdCBtYXhTaXplID0gc3RkOjptYXgoTGF5
b3V0VW5pdCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcihMYXlvdXRVbml0
KCkpKTsKKyAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heChMYXlvdXRVbml0KCksIHNp
emluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsKICAgICBj
b25zdCBib29sIGhhc0RlZmluaXRlRnJlZVNwYWNlID0gc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRp
b24gPT0gVHJhY2tTaXppbmc7CiAKICAgICAvLyAxLiBJbml0aWFsaXplIHBlciBHcmlkIHRyYWNr
IHZhcmlhYmxlcy4KQEAgLTEwMjksMTMgKzEwMjksMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlk
OjptaW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW8KICAgICBib29sIG92ZXJyaWRlU2l6ZUhhc0NoYW5nZWQgPSB1cGRhdGVPdmVycmlkZUNvbnRh
aW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9u
LCBzaXppbmdEYXRhKTsKICAgICBpZiAoaXNSb3dBeGlzKSB7CiAgICAgICAgIExheW91dFVuaXQg
bWFyZ2luTG9naWNhbFdpZHRoID0gc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gPT0gVHJhY2tT
aXppbmcgPyBjb21wdXRlTWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjaGlsZElubGluZURpcmVj
dGlvbiwgY2hpbGQpIDogbWFyZ2luSW50cmluc2ljTG9naWNhbFdpZHRoRm9yQ2hpbGQoY2hpbGQp
OwotICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmco
TWluU2l6ZSwgY2hpbGRNaW5TaXplLCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXpl
Rm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uKS52YWx1ZU9yKDApLCAqdGhpcywg
bnVsbHB0cikgKyBtYXJnaW5Mb2dpY2FsV2lkdGg7CisgICAgICAgIHJldHVybiBjaGlsZC5jb21w
dXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIG92ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxpbmVE
aXJlY3Rpb24pLnZhbHVlX29yKDApLCAqdGhpcywgbnVsbHB0cikgKyBtYXJnaW5Mb2dpY2FsV2lk
dGg7CiAgICAgfQogCiAgICAgaWYgKG92ZXJyaWRlU2l6ZUhhc0NoYW5nZWQgJiYgKGRpcmVjdGlv
biAhPSBGb3JDb2x1bW5zIHx8IHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uICE9IEludHJpbnNp
Y1NpemVDb21wdXRhdGlvbikpCiAgICAgICAgIGNoaWxkLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5
VGhpcyk7CiAgICAgY2hpbGQubGF5b3V0SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gY2hpbGQuY29t
cHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIE51bGxvcHQpLnZh
bHVlT3IoMCkgKyBjaGlsZC5tYXJnaW5Mb2dpY2FsSGVpZ2h0KCkgKyBjaGlsZC5zY3JvbGxiYXJM
b2dpY2FsSGVpZ2h0KCk7CisgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNp
bmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBOdWxsb3B0KS52YWx1ZV9vcigwKSArIGNoaWxkLm1h
cmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKIH0K
IAogYm9vbCBSZW5kZXJHcmlkOjp1cGRhdGVPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRT
aXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpIGNvbnN0CkBAIC0xMTk5LDcgKzEx
OTksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1
bmN0aW9uc0Zvck5vblNwYW5uaW5nSXRlbXMoR3JpZAogICAgIH0gZWxzZSBpZiAodHJhY2tTaXpl
Lmhhc01heENvbnRlbnRPckF1dG9NYXhUcmFja0JyZWFkdGgoKSkgewogICAgICAgICBMYXlvdXRV
bml0IGdyb3d0aExpbWl0ID0gbWF4Q29udGVudEZvckNoaWxkKGdyaWRJdGVtLCBkaXJlY3Rpb24s
IHNpemluZ0RhdGEpOwogICAgICAgICBpZiAodHJhY2tTaXplLmlzRml0Q29udGVudCgpKQotICAg
ICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JMZW5n
dGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgc2l6aW5nRGF0
YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgIGdyb3d0aExpbWl0
ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQsIHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5maXRDb250
ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52
YWx1ZV9vcigwKSkpOwogICAgICAgICB0cmFjay5zZXRHcm93dGhMaW1pdChzdGQ6Om1heCh0cmFj
ay5ncm93dGhMaW1pdCgpLCBncm93dGhMaW1pdCkpOwogICAgIH0KIH0KQEAgLTEzODcsOCArMTM4
Nyw4IEBAIHN0YXRpYyBib29sIHNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbChjb25zdCBH
cmlkVHJhY2sqIHRyYWNrMSwgY29uc3QgR3JpZFRyCiAgICAgaWYgKHRyYWNrMUhhc0luZmluaXRl
R3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcCB8fCB0cmFjazJIYXNJbmZpbml0ZUdyb3d0aFBvdGVu
dGlhbFdpdGhvdXRDYXApCiAgICAgICAgIHJldHVybiB0cmFjazJIYXNJbmZpbml0ZUdyb3d0aFBv
dGVudGlhbFdpdGhvdXRDYXA7CiAKLSAgICBMYXlvdXRVbml0IHRyYWNrMUxpbWl0ID0gdHJhY2sx
LT5ncm93dGhMaW1pdENhcCgpLnZhbHVlT3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKLSAgICBM
YXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlT3Io
dHJhY2syLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlvdXRVbml0IHRyYWNrMUxpbWl0ID0gdHJh
Y2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMS0+Z3Jvd3RoTGltaXQoKSk7Cisg
ICAgTGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1
ZV9vcih0cmFjazItPmdyb3d0aExpbWl0KCkpOwogICAgIHJldHVybiAodHJhY2sxTGltaXQgLSB0
cmFjazEtPmJhc2VTaXplKCkpIDwgKHRyYWNrMkxpbWl0IC0gdHJhY2syLT5iYXNlU2l6ZSgpKTsK
IH0KIApAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3Bh
Y2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9yPEdyaWQKIGJvb2wg
UmVuZGVyR3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQogewog
ICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MgPSAoZGlyZWN0aW9uID09IEZvckNv
bHVtbnMpID8gc2l6aW5nRGF0YS5jb2x1bW5UcmFja3MgOiBzaXppbmdEYXRhLnJvd1RyYWNrczsK
LSAgICBjb25zdCBMYXlvdXRVbml0IG1heFNpemUgPSBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNl
KCkudmFsdWVPcigwKTsKKyAgICBjb25zdCBMYXlvdXRVbml0IG1heFNpemUgPSBzaXppbmdEYXRh
LmF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0
cmFja1NpemUgPSBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgaSwgc2l6aW5nRGF0YS5zaXppbmdP
cGVyYXRpb24pOwogICAgICAgICBpZiAoY29tcHV0ZVVzZWRCcmVhZHRoT2ZNaW5MZW5ndGgodHJh
Y2tTaXplLCBtYXhTaXplKSA+IHRyYWNrc1tpXS5iYXNlU2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjU5NWMzNDMxMjQxMmQ1MDg3Y2IwY2MyMmM2
MjAxYjBkODk2NjQxYS4uZmM5OGEzOWIyY2UwZmNkMTU5ZDEyNGU1MTE2MjI4YjdlZjQ4MjExNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00NDYzLDcgKzQ0
NjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBOb3cgZG8gYSBwYWludCB3
aXRoIHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUgdXMuCiAgICAgTGF5b3V0U2l6ZSBhZGp1
c3RlZFN1YnBpeGVsT2Zmc2V0ID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6ZShkZXZp
Y2VQaXhlbFNuYXBwZWRPZmZzZXRGb3JUaGlzTGF5ZXIpOwotICAgIExheWVyUGFpbnRpbmdJbmZv
IHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0Rl
dmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3Ip
KSwKKyAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyh0aGlzLCBM
YXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAogICAgICAgICBwYWludGluZ0luZm8ucGFpbnRC
ZWhhdmlvciwgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCwgcGFpbnRpbmdJbmZvLnN1YnRyZWVQYWlu
dFJvb3QsIHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzKTsKICAgICBwYWludExheWVy
Q29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBw
YWludEZsYWdzKTsKICAgICBjb250ZXh0LnNldENUTShvbGRUcmFuc2Zyb20pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGI3MTYzZTY2YjNjNmZmMTE4
NzcxYWM5ODkwOTc2YzNiM2JlNDY2ZmIuLjMwNmM1YTM5NDZlNDNlMjY4MGIwNGNlOWZjMzc2ZDFj
MzllNWMzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
QEAgLTI4MSw3ICsyODEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpc3RCb3g6Oml0ZW1Cb3VuZGlu
Z0JveFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZQogdm9pZCBSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW0oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgUGFpbnRGdW5jdGlvbiBwYWludEZ1bmN0aW9uKQogewogICAgIGludCBs
aXN0SXRlbXNTaXplID0gbnVtSXRlbXMoKTsKLSAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1f
aW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZU9yKG1faW5k
ZXhPZmZzZXQpOworICAgIGludCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RWaXNp
YmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhPZmZzZXQpOwogICAg
IGludCBlbmRJbmRleCA9IGZpcnN0VmlzaWJsZUl0ZW0gKyBudW1WaXNpYmxlSXRlbXMoQ29uc2lk
ZXJQYWRkaW5nOjpZZXMpOwogICAgIGZvciAoaW50IGkgPSBmaXJzdFZpc2libGVJdGVtOyBpIDwg
bGlzdEl0ZW1zU2l6ZSAmJiBpIDwgZW5kSW5kZXg7ICsraSkKICAgICAgICAgcGFpbnRGdW5jdGlv
bihwYWludEluZm8sIHBhaW50T2Zmc2V0LCBpKTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIFJl
bmRlckxpc3RCb3g6OnNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KGludCBpbmRleCkK
IAogYm9vbCBSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUoaW50IGluZGV4KQogewot
ICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRp
bmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9mZnNldCk7CisgICAgaW50IGZpcnN0SW5kZXggPSBt
X2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9p
bmRleE9mZnNldCk7CiAgICAgaW50IGVuZEluZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRl
bUluc2lkZVBhZGRpbmdCb3R0b21BcmVhCiAgICAgICAgID8gbV9pbmRleE9mRmlyc3RWaXNpYmxl
SXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhLnZhbHVlKCkgKyBudW1iZXJPZlZpc2libGVJdGVt
c0luUGFkZGluZ0JvdHRvbSgpCiAgICAgICAgIDogbV9pbmRleE9mZnNldCArIG51bVZpc2libGVJ
dGVtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
blNldC5jcHAKaW5kZXggN2QyZmI0MzYyODE1NGI5NDI1NjZmOTk3ODljZjUwOGY1MmI0OTdhZC4u
MjBjZjllYzAzZjJlNmJjOTJlMTc1YjkyZDIyZDNiNGVlZmEwYWZlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MTUsNyAr
NDE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29s
dW1uSGVpZ2h0KCkgY29uc3QKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUhlaWdodCA9IG11bHRp
Q29sdW1uRmxvd1RocmVhZCgpLT5jb2x1bW5IZWlnaHRBdmFpbGFibGUoKTsKICAgICBMYXlvdXRV
bml0IG1heENvbHVtbkhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCA/IGF2YWlsYWJsZUhlaWdodCA6
IFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQoKTsKICAgICBpZiAoIW11bHRpY29s
U3R5bGUubG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG1heENvbHVt
bkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhl
aWdodCgpLCBOdWxsb3B0KS52YWx1ZU9yKG1heENvbHVtbkhlaWdodCkpOworICAgICAgICBtYXhD
b2x1bW5IZWlnaHQgPSBzdGQ6Om1pbihtYXhDb2x1bW5IZWlnaHQsIG11bHRpY29sQmxvY2stPmNv
bXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBtdWx0aWNvbFN0eWxlLmxvZ2ljYWxN
YXhIZWlnaHQoKSwgTnVsbG9wdCkudmFsdWVfb3IobWF4Q29sdW1uSGVpZ2h0KSk7CiAgICAgcmV0
dXJuIGhlaWdodEFkanVzdGVkRm9yU2V0T2Zmc2V0KG1heENvbHVtbkhlaWdodCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDRjMGI3YjM1M2IxZGJl
NDRlNzk1NzkyZDg2YWJlYzRmNzBjNDIwZWQuLjIwNjg2NDA2MmQzNjM1YWY4NDZkYWFkNDU0NDVh
MDRjMGJiNTM3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApA
QCAtMzczLDkgKzM3Myw5IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxv
Z2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KGNvbnN0IExlbmd0aCYKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gc3R5bGVMb2dpY2FsSGVpZ2h0LnZhbHVlKCkgLSBib3JkZXJzOwogICAgIH0g
ZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQotICAg
ICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhl
aWdodCkudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNh
bEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpLnZhbHVlX29yKDApOwogICAgIGVsc2UgaWYgKHN0
eWxlTG9naWNhbEhlaWdodC5pc0ludHJpbnNpYygpKQotICAgICAgICByZXR1cm4gY29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dp
Y2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1ZU9y
KDApOworICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0
VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRk
aW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1ZV9vcigwKTsKICAgICBlbHNlCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBMYXlvdXRVbml0KCk7CkBAIC0xNDY0LDcg
KzE0NjQsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjp1cGRhdGVGaXJzdExldHRlcihSZW5kZXJUcmVl
TXV0YXRpb25Jc0FsbG93ZWQpCiAKIGludCBSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPckNvbXB1dGUoWyZdIHsKKyAg
ICByZXR1cm4gdmFsdWVPckNvbXB1dGUoZmlyc3RMaW5lQmFzZWxpbmUoKSwgWyZdIHsKICAgICAg
ICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0
TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYzAwY2JjYzk5MTNk
MTNkNzZmMTdhZmQ4MzJjODY4ZjJhYjc4ZWI5ZC4uZTFhN2VhYTc1OWFkMzMxNjliYTExMWEzNWY5
MTVhNGMxZThjNzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6
Y2VsbEJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9U
Ui8yMDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxlcy5odG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUg
YmFzZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNlbGluZSBvZgogICAgIC8vIHRoZSBmaXJzdCBp
bi1mbG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBvciB0aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1y
b3cgaW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gSWYgdGhlcmUKICAgICAvLyBp
cyBubyBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJvdywgdGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0
b20gb2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxsIGJveC4KLSAgICByZXR1cm4gZmlyc3RMaW5l
QmFzZWxpbmUoKS52YWx1ZU9yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGJv
cmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOwogfQogCiBz
dGF0aWMgaW5saW5lIHZvaWQgbWFya0NlbGxEaXJ0eVdoZW5Db2xsYXBzZWRCb3JkZXJDaGFuZ2Vz
KFJlbmRlclRhYmxlQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZDg4NWU4ZTJjNjI1YzZkYzBiNWYyZGZmMTU3OTM0
M2VlNWVlNTEwZi4uODZmZmYxYjc1NDk2ZTAwNDQ4MzZmMDY2NDFmZWI2MWEzMzFhOGJiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAg
LTkzNCw3ICs5MzQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICAvLyBPbmx5IGNlbGxzIHdpdGggY29udGVudCBo
YXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwgJiYgY2VsbC0+Y29udGVudExvZ2ljYWxI
ZWlnaHQoKSkgewogICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHJvdW5kVG9JbnQoY2VsbC0+
bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29u
dGVudExvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1
bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5kaWRhdGUpOworICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYXgocmVzdWx0LnZhbHVlX29yKGNhbmRpZGF0ZSksIGNhbmRpZGF0ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA0
NGExYzUyMDM5YjVkNDdmZmNkMmExYTdlMTZjNTU4MDE5MDFmZDA5Li42NTZiNzM0Nzg3Mzg3YTgw
M2I0MzIzNDEyZjI1N2MzMjQwM2Y5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAg
ICAgICAgfQogICAgIH0KIAotICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0
T3ZlcmZsb3cudmFsdWVPcihnbHlwaE92ZXJmbG93LmxlZnQpOworICAgIGdseXBoT3ZlcmZsb3cu
bGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVfb3IoZ2x5cGhPdmVyZmxvdy5sZWZ0
KTsKIAogICAgIGlmICgobmVlZHNXb3JkU3BhY2luZyAmJiBsZW4gPiAxKSB8fCAoaWdub3JpbmdT
cGFjZXMgJiYgIWZpcnN0V29yZCkpCiAgICAgICAgIGN1cnJNYXhXaWR0aCArPSB3b3JkU3BhY2lu
ZzsKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZl
YWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAKIFN0cmlu
Z1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCwgT3B0aW9uYWw8dW5z
aWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZh
bHVlT3IodGV4dExlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0b3AudmFs
dWVfb3IodGV4dExlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQgPD0gbGVuZ3RoKCkpOwogICAg
IEFTU0VSVChkZXN0aW5hdGlvbiA8PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGRl
c3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBlYzAyODY1MDcwNjZiMzE5YmM3N2YxNmQ1OGY4
MzBjZDk5ZmYzNGQ2Li41YTJhZDcyYmRmN2Q1ZDQzMTM5MWE0OThlYTY1ODVlNGI1YTdlNGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRG
dW5jdGlvbnMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAg
ICAgaWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgIT0gVGV4dERlY29yYXRpb25O
b25lKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IGNoaWxkcmVu
T2ZUeXBlPFJlbmRlclRleHQ+KGZsb3cpLmZpcnN0KCk7CiAgICAgICAgIGlmICh0ZXh0UmVuZGVy
ZXIpIHsKLSAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlciA9IFRleHREZWNvcmF0aW9u
UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpLCBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpLCAqdGV4dFJlbmRlcmVyLCBmYWxzZSk7CisgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblBh
aW50ZXIuZW1wbGFjZShwYWludEluZm8uY29udGV4dCgpLCBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpLCAqdGV4dFJlbmRlcmVyLCBmYWxzZSk7CiAgICAgICAgICAgICB0ZXh0RGVjb3Jh
dGlvblBhaW50ZXItPnNldEZvbnQoc3R5bGUuZm9udENhc2NhZGUoKSk7CiAgICAgICAgICAgICB0
ZXh0RGVjb3JhdGlvblBhaW50ZXItPnNldEJhc2VsaW5lKHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IDViMjExMmYzNWE0NmQzYjViNzEyOWM5
NTZlYWQyODg4NzkxYWJmNTkuLmE2NjZjOWI4NDllNTNkOTQ2MmQ2M2I4MDRjOTI3MGViOWIyN2I1
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgaW50IFJlbmRlck1hdGhNTEJsb2Nr
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RM
aW4KICAgICBpZiAobGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVPcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0
TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CisgICAgcmV0dXJuIGZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVfb3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxp
bmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOwogfQogCiAj
aWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IDBlNzMzYjllYjEzNjQyYTgx
ZjNiZmU0YTRkMmE3OThiMmFiNzAxZGQuLjk0YzJmNzEyNGUwNGJiMmM5YTY0ZThlY2M0MDkzN2Nj
NmM4ZGYxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmgKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MQmxv
Y2sgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogCiAgICAgc3RhdGljIExheW91dFVuaXQgYXNjZW50
Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBj
aGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQubG9naWNhbEhlaWdodCgpKTsK
KyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQu
bG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCmluZGV4IGVlYTRmMGQ4MzIwNmYzNDdiMTc3ZjczZjA3MjY1OGQwMTY2ZTY0MDMuLmNj
ZGYyNGY5YzYxZTYyZDU5YTViYjg1YjdlY2FhYjdjYTlhZTc0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTE3Myw3
ICsxNzMsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdAogICAgIGlmICghcG9pbnRJc0luc2lk
ZVZpZXdwb3J0Q2xpcChwb2ludEluUGFyZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsK
KyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50
KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhp
cywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4
IDJiZjA4NmZjMWYzMDc5ODM1OWJkNjc2OGE2Mzg0YWYwOTlkNTczZDAuLjEwOTVkMjRlMTEyMTli
NjIyN2M4YzJkNjllMTZmMzE3NGM1YTEwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAtMTgzLDcgKzE4
Myw3IEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0RmxvYXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0g
SGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9p
bnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9j
YWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIC8vIEVhcmx5IGV4aXQgaWYg
bG9jYWwgcG9pbnQgaXMgbm90IGNvbnRhaW5lZCBpbiBjbGlwcGVkIHZpZXdwb3J0IGFyZWEKICAg
ICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykgJiYgIW1fdmll
d3BvcnQuY29udGFpbnMobG9jYWxQb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDE1ODQ3NjE5YTcxM2FkZTUwMDBmNGJlYzY3
ZTU4Y2NkMzdjMDExZjYuLjBkY2I5MTgwNzFkODExYTk1MmI2N2Y4MTMxMzY4YzViOTM4NGIwZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBQb2ludGVy
RXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfSU1BR0Vf
SElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJvb2wg
aXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpOwogICAgIGlmIChp
c1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7Ci0gICAgICAgIEZsb2F0UG9p
bnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVP
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgIEZs
b2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogICAg
ICAgICAgICAgCiAgICAgICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5n
QXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHAKaW5kZXggYjVjYmRlNmE4ZTE1ZDhiMjkyMWJmYzFiZDhkZjlmMGNhZDRjYWEz
Ni4uNWQ4MzVmZTE3MDZkODkzMDBkZWFjYWU3MjVhMWYxMDEwZGRkOGI1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcApAQCAtMjY3LDEwICsyNjcsMTAgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZShvYmplY3RCb3VuZGluZ0JveC54KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7CiAgICAg
ICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwg
b2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBwb2ludCA9IHRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOworICAg
ICAgICBwb2ludCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50KTsKICAgICB9CiAKLSAgICBwb2ludCA9IGNsaXBQYXRoRWxlbWVu
dCgpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOworICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCku
YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUG9pbnQocG9pbnQpOwogCiAgICAgZm9yIChOb2RlKiBjaGlsZE5vZGUgPSBjbGlw
UGF0aEVsZW1lbnQoKS5maXJzdENoaWxkKCk7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGRO
b2RlLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBj
aGlsZE5vZGUtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGE0OTA0NjRiNzllYTJm
ZDkzMDcwNTg1NGY5NWQzMDZkZDhhNWEwNmUuLmNkNWJmNzVmNmEwMDU5ODk0NmNhYzM2ZGU4YmQx
NTg4OTlmODkzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIEdyYXBoaWMKIAogICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBs
YXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkgewot
ICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29s
dXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKICAgICAg
ICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5m
aWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVy
UmVzb2x1dGlvbigpLmhlaWdodCgpKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoKnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDFh
Y2E0ZTUwY2UxYjgzYTM3YTcyYWEzN2UwYWU1NTNiZDllNGY0ZjAuLjM1OWZkNGJhY2JjZDg3NTYy
OWU3MWE5ZjI2MjlhZmEwZmUzNjU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgUmVuZGVyU1ZH
Um9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1bHQmIHJlCiAgICAgLy8gT25seSB0ZXN0IFNWRyBjb250ZW50IGlmIHRoZSBwb2ludCBpcyBp
biBvdXIgY29udGVudCBib3guCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVy
c2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRlc3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0
RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJveFJlY3QoKS5jb250YWlucyhwb2ludEluQm9y
ZGVyQm94KSkgewotICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50
KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOworICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9p
bnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsKIAogICAgICAg
ICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbm9kZUF0
RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQgaGl0IHRlc3RzIHlldC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXgg
ZmU5MTIyNjRiMjM4ZmQ3MzI4NzM1Y2E3ZGNiZWJiMjY1NmRlYTUxMy4uNzUwMjQwZTUzNTg0ZGU3
YWYwOGRhOTJkY2RlMjY2NmI3OGUzODUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCBib29sIFJlbmRl
clNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0UmVzdQogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5k
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBt
X2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xvY2Fs
VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQo
cG9pbnRJblBhcmVudCk7CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlw
cGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCAyYmFi
N2E3ZmMwYTI0MzBjMzBlODZkMjU2MDEwYzAzN2MwNDgyY2JjLi44NzA4ZjRiMzk3ZjE1MjFiODQy
MzA5YmRkMGQ2YTAxNDUzOGVhNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFJlbmRlclNWR1Rl
eHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bAogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7
CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2Z1N0eWxl
KCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAgICAg
fHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNGaWxsKCkg
fHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSkpIHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9j
YWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgICAgICBGbG9h
dFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAg
ICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlz
LCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5k
ZXggNGM3ZGNjMmM3NzkzN2UyNzhmZTM5NDlkYzc2NjBiZTljNTE1YjFmZC4uYWY4MTBmZGVkMjY1
ODM3OTllNDI2YWY2YjA4OTE2OWJjOGJiNjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgdm9p
ZCBTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhTaGFkb3dzKGNvbnN0
IFJlbmRlckVsZW1lbnQmIHJlbmQKICAgICBpZiAobG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaXNJZGVu
dGl0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gcm9vdFRvTG9j
YWxUcmFuc2Zvcm0gPSBsb2NhbFRvUm9vdFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZp
bmVUcmFuc2Zvcm0oKSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHJvb3RUb0xvY2FsVHJhbnNmb3Jt
ID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKTsKICAgICByZXBhaW50UmVjdCA9IHJvb3RUb0xvY2FsVHJhbnNmb3JtLm1hcFJlY3QocmVw
YWludFJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0ZjM1ZWQ5ZWFhMDM5MTM0ZTcwYzhjZTIzMTk1
ODVjY2RmOWQ5Njk1Li5jNGIzYWFjNWJmZDFjZThjYzU2NjFjOGRiYmJlNGM1MzI0NjdlZGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogCiAg
ICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29v
cmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8v
IFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNv
bHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4dC5jb25jYXRDVE0oYWJz
b2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAg
ICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpKTsKICAgICBjb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNv
bHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09U
RkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcAppbmRleCBhZWU5NDdjMDEzNmQ5YzYwY2UwMjVjYjkzNzE3ZjM0YTFmOTI4NTkx
Li5kMjM3MmZmYmFmMDA2MTUxYzBkMDY0MDFiZmVjZmJmOTIyZDQwOWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC0xMzExLDcgKzEzMTEs
NyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25z
dCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZwogICAgIGlmIChnbHlwaEJvdW5kaW5nQm94KQog
ICAgICAgICBtX21pblJpZ2h0U2lkZUJlYXJpbmcgPSBzdGQ6Om1pbihtX21pblJpZ2h0U2lkZUJl
YXJpbmcsIGhvcml6b250YWxBZHZhbmNlIC0gZ2x5cGhCb3VuZGluZ0JveC52YWx1ZSgpLm1heFgo
KSk7CiAKLSAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCksIGdseXBo
RWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGlu
Z0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOworICAgIG1fZ2x5cGhzLmFw
cGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2
YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlX29yKEZsb2F0UmVj
dCgpKSwgY29kZXBvaW50cykpOwogfQogCiB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBw
ZW5kTGlnYXR1cmVHbHlwaHMoKQpAQCAtMTQzNSw3ICsxNDM1LDcgQEAgU1ZHVG9PVEZGb250Q29u
dmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRF
bGVtZW50KQogICAgICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudChnbHlwaEVsZW1lbnQsICZn
bHlwaEVsZW1lbnQsIGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZGVmYXVsdFZlcnRpY2FsQWR2
YW5jZSwgdW5pY29kZUF0dHJpYnV0ZSwgYm91bmRpbmdCb3gpOwogICAgIH0KIAotICAgIG1fYm91
bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKTsKKyAgICBtX2JvdW5k
aW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVfb3IoRmxvYXRSZWN0KCkpOwogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwMTAwMAogICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS8yMDA4NjIyMz4gQ29jb2EgaGFzIGEgYnVnIHdoZXJlIGdseXBo
IGJvdW5kaW5nIGJveGVzIGFyZSBub3QgY29ycmVjdGx5IHJlc3BlY3RlZCBmb3IgZnJ1c3R1bSBj
dWxsaW5nLiBXb3JrIGFyb3VuZCB0aGlzIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDQ4YmJkMzBkNzc2N2Jj
YTU1MmZhMDgxMDUyZTAyMGYxZTAxYzNjMTQuLmM3NjdkOWJlMDQ1MDEyMDZkNDAyZjZmYThmOTll
YTg0YWY2YzE3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC05MCw3ICs5MCw3IEBAIC0gKE5TU3RyaW5nICop
c3RyaW5nVmFsdWUKIAogLSAodW5zaWduZWQgc2hvcnQpcG9ydAogewotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCkudmFsdWVPcigw
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRl
KS0+cG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBGSVhNRTogT3ZlcnJpZGluZyBpc0VxdWFs
OiB3aXRob3V0IG92ZXJyaWRpbmcgaGFzaCB3aWxsIGNhdXNlIHRyb3VibGUgaWYgdGhpcyBldmVy
IGdvZXMgaW50byBhbiBOU1NldCBvciBpcyB0aGUga2V5IGluIGFuIE5TRGljdGlvbmFyeSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA3ODRhYWNkZTA0ZTRiNzYw
ZGM5ZmVlOWFmYzkxYmY2YjA3MDczMzM4Li4yNzgzOGNjYjM5ODM5ZGYyYTE5ZWRhNGM3MjdjYjE4
YjZlNzhlN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0x
MTksNyArMTE5LDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6cG9ydChfT3V0XyB1bnNp
Z25lZCBzaG9ydCogcmVzdWx0KQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZU9y
KDApOworICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5T3JpZ2luLT5wb3J0KCkudmFsdWVfb3IoMCk7
CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCBkNGFhMDEzYTM4OWE5ZDQxNzQ2NDE1
NTlmM2FlNzFlNWZhYTA3MDY3Li44ZGY4ZmZhYWI3YzRmYTc4ODY0NWUxNzdmZWI2YzE1MWI3YTMz
Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9y
aWdpblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlP
cmlnaW5SZWYuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmln
aW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogCiB1bnNpZ25l
ZCBzaG9ydCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3Vy
aXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0
eU9yaWdpbigpLnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiB0b0ltcGwoc2VjdXJpdHlP
cmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogLy8gRm9y
IGJhY2t3YXJkcyBBQkkgY29tcGF0aWJpbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXgg
N2VhNmE5OGU2NDAxMTc0MWM0ZTNjNGY5ZGM2ZmE3ODM1ZGMzZmIzMC4uNTkwNjkxYjhjYzNiMzk0
ZGZiNmNmMTAwMjNjYTE2ZGU5Y2EzY2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEw
MSw5ICsxMDEsOSBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRh
aWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUgogCiAgICAgICAgICAgICBkZXRh
aWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0T3JpZ2luS2V5KCkp
LT5zdHJpbmcoKSwgb3JpZ2luKTsKICAgICAgICAgICAgIGlmIChvcmlnaW5EZXRhaWxzLmNyZWF0
aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3Vi
bGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZS52YWx1ZU9yKDApKSk7CisgICAg
ICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3Jp
Z2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVfb3IoMCkpKTsKICAgICAgICAgICAgIGlmIChv
cmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsc01h
cC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVL
ZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMubW9kaWZp
Y2F0aW9uVGltZS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQo
dG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSkt
PnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMubW9kaWZpY2F0aW9u
VGltZS52YWx1ZV9vcigwKSkpOwogCiAgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5k
KEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUoZGV0YWlsc01hcCkpKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3Vy
aXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3Vy
aXR5T3JpZ2luLm1tCmluZGV4IGM1NTQzYTIwYjcxZThjOTc2ZTIxMjJiOWI0YmVhNDhiMzc1MWZj
NzAuLmI3MTEyY2VlMTdiZGNjMjY5YmM5ZjllMjcxZDI0MDJkYTIxNjY4MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4u
bW0KQEAgLTU4LDcgKzU4LDcgQEAgLSAoTlNTdHJpbmcgKilob3N0CiAKIC0gKE5TSW50ZWdlcilw
b3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0
KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdp
bigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3Rv
Y29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tCmluZGV4IDU3OWFmYWZhOGIyNjZkNTcyZmRkNmU4NDE2ZmJhZjJjMzMyOTFk
ZjAuLjc0MWM2YzEzY2UwN2E4NmYzYWVlYWEzNmM5NWUxMmE5YzJkM2M0ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0yNzUsNyArMjc1
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RlY2ltYWxOdW1iZXI+IHRvRGVjaW1hbE51bWJlcihp
bnQ2NF90IHZhbHVlKQogCiBzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0
b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpMaW5l
SXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNs
YXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1h
bE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFsdWVPcigwKSkuZ2V0KCkgdHlwZTp0b1BLUGF5bWVu
dFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CisgICAgcmV0dXJuIFtnZXRQS1BheW1l
bnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwg
YW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFsdWVfb3IoMCkpLmdldCgp
IHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwogfQogCiBz
dGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01lcmNoYW50Q2FwYWJpbGl0aWVzKGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYgbWVyY2hhbnRD
YXBhYmlsaXRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMjdiMWYxNjBkOGY3OGY3
ZWFmNTVkZDFkODMzYTdkMTJlZDk3OTZhMS4uMjIzZjBjYjJlN2RhZGNhOTM4ZDU1MzUzMTUyZGY3
YTU0MDQ2ODlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9y
TmFtZUFuZERldGFpbHNTZXBhcmF0b3IgPSAiOyI7CiAKIC8vIE1ha2Ugc3VyZSB0aGUgcHJlZGVm
aW5lZCBlcnJvciBuYW1lIGlzIHZhbGlkLCBvdGhlcndpc2UgdXNlIEludGVybmFsRXJyb3IuCi0j
ZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJpbmcpLnZh
bHVlT3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRl
cm5hbEVycm9yKQorI2RlZmluZSBWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVy
cm9yU3RyaW5nKS52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJv
ck1lc3NhZ2U6OkludGVybmFsRXJyb3IpCiAKIC8vIElmIHRoZSBlcnJvciBuYW1lIGlzIGluY29y
cmVjdCBmb3IgdGhlc2UgbWFjcm9zLCBpdCB3aWxsIGJlIGEgY29tcGlsZS10aW1lIGVycm9yLgog
I2RlZmluZSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShlcnJvck5hbWUpIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OmVycm9yTmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5k
ZXggZjJhMjg5ODliMjIzNzhkMDJlYzliNjU5YTI0NmVhNzVjNmZlYjA0Ni4uMTlhYTc0OTkyNDdi
MTc0OThiNGUxODMxMWY5ZGFkZjVhMzdmMjQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBi
YWNrRm9yd2FyZExpc3RTdAogICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwg
bV9wYWdlLT5wYWdlSUQoKSkpOwogICAgIH0KICAgICBtX2hhc0N1cnJlbnRJbmRleCA9ICEhYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4OwotICAgIG1fY3VycmVudEluZGV4ID0gYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZhbHVlT3IoMCk7CisgICAgbV9jdXJyZW50
SW5kZXggPSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWVfb3IoMCk7CiAg
ICAgbV9lbnRyaWVzID0gV1RGTW92ZShpdGVtcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IGQ3ZjdiNDcwYTQ3MTFiNTdhYmRhNzc3ZjQzZTNlZWFm
NGRiZTQ1MTcuLjdmZGIzM2I1MzYzNjllYTQ2YWQ3MDdiN2M1OWYwMzYxM2ExYmZkYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBA
IHZvaWQgV2ViVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlCiAKIEFmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFu
c2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAogewotICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCku
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIHJldHVybiB0cmFuc2Zv
cm1Ub1NjZW5lKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKIH0KIAog
QWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmcuY3BwCmluZGV4IDAxNmM2YjkzMzQ2NTNjZmVhMjI5MGIyMTY1MDBhYjAwOTIxYmRlNmYu
LjY3ZWFhMGQ1NGQyZDM3N2Q0MDM5MmNmZjVjM2NkMzQ4YTI2ZGUxZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Zy5jcHAKQEAgLTI4Miw4ICsyODIsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVGb3JtRGF0YUVsZW1l
bnQoSGlzdG9yeUVudHJ5RGF0YUVuY29kZXImIGVuY29kZXIsIGNvbnN0IEhUVFBCbwogICAgICAg
ICBlbmNvZGVyIDw8IGZhbHNlOwogCiAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlU3Rh
cnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoLTEpOwot
ICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52
YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOworICAgICAg
ICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcigtMSk7CisgICAgICAgIGVu
Y29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29yKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQ
bHVnaW4ubW0KaW5kZXggNWVkZTU2ZWVlNDBhY2ZkYjk5MDExOWRlN2FjZTkxOGU2NzhiYzY2Ni4u
Zjk2MWEzNTkxNTQxMTU3MTQ3OGQ0MDc0NDQyMTM0NGFmOWEwOGM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgSW50UG9pbnQgUERGUGx1Z2luOjpjb252
ZXJ0RnJvbVJvb3RWaWV3VG9QbHVnaW4oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogSW50
UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IEludFBv
aW50JiBwb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludEluUGx1Z2luQ29vcmRpbmF0
ZXMocG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkpOwotICAgIHJldHVybiBt
X3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0dXJuIG1f
cm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiB9CiAKIEZsb2F0UmVj
dCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkgY29uc3QKQEAgLTEyMDcsNyArMTIwNyw3IEBAIEZsb2F0UmVjdCBQREZQbHVnaW46OmNv
bnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCiAgICAgRmxvYXRQb2ludCBvcmlnaW5JblBsdWdp
bkNvb3JkaW5hdGVzKHJlY3QueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSByZWN0LnkoKSAtIHJlY3Qu
aGVpZ2h0KCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9y
b290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBSZWN0KEZsb2F0UmVjdChvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0LnNp
emUoKSkpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290
Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcywgcmVjdC5zaXpl
KCkpKTsKIAogICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5jbG9zaW5n
SW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CkBAIC0xMjIwLDcgKzEyMjAs
NyBAQCBJbnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogICAgICAgICBy
ZXR1cm4gSW50UmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIHNpemUoKSk7Ci0gICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFJlY3QoYm91bmRzKTsKKyAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoYm91bmRzKTsKICAgICByZXR1cm4gZnJh
bWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QocmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcykpOwogfQogCkBAIC0xMjMwLDcgKzEyMzAsNyBAQCB2b2lkIFBERlBsdWdpbjo6
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVj
dCYsIGNvbgogICAgICAgICByZXR1cm47CiAKICAgICBtX3NpemUgPSBwbHVnaW5TaXplOwotICAg
IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIG1fcm9vdFZpZXdUb1Bs
dWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
X29yKEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RnJh
bWVTaXplOnBsdWdpblNpemVdOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRl
eCBkYjRlYzNlNDEyOTlmNjkyOTYxZjc0ZGQyMTZjOTdjNmRhNDYxMjM1Li43ZWZhMDc0MzQ0MzU2
MTk4MjI0MTAyMDAxZjk3OTU4MDRmYTJmM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTMyLDcgKzkzMiw3IEBAIElu
dFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkKIHsK
ICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtOwotICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIG1fcm9v
dFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICBtX3NpemUgPSBwbHVnaW5TaXpl
OwogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+
dmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMWNhN2Y0
NDk3YTc5OGIzZTVkZWQ0YWVlYjE4ZWFjYzJmMTlhYTc3MS4uMjhmNzU3ZmZlMGI0MzQ2ZjI2Mzc5
OWYwNDdmNzYxNDdiNjg0NGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHRvRm9y
bURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6RmlsZToKLSAgICAgICAgICAgIGZv
cm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3Rh
cnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZU9yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUp
LCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVPcihpbnZhbGlkRmls
ZVRpbWUoKSkpOworICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50
LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29y
KEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUudmFsdWVfb3IoaW52YWxpZEZpbGVUaW1lKCkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGI4ZWQ5ZWIyYTIwZjU1MGUzOGY2NDg4YTQ5
MDZkYzUyM2JjMjI0NDcuLmJkZTY2MmI2NDU1NDk4MDkwMWVlZjM1YzgyMWFiYjc1ZmI3NjkyMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFs
PEhhc0luc2VjdXJlQ29udGVudD4gaGEKICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJh
Y2tlcigpLmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChtX2ZyYW1lKTsKIAogICAgIC8vIE5vdGlm
eSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2Fk
ZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwg
bV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIu
cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBD
ZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5p
c1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSku
Z2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRD
b21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZp
Z2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVu
dExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBDZXJ0aWZp
Y2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdp
bkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZTliYmIyYmE3
OTk0MTBiM2IwNjQ2NDhjMTQ5ODU5OWEzZGUxMTlmMy4uZTE4YTk3ODlmMWFkMzY4N2ExYWM5YmMx
MDRiNDRkYmQyYjUwYjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAgQ2VydGlmaWNhdGVJbmZvIFdlYkZy
YW1lOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNl
KCkuY2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2VydGlmaWNh
dGVJbmZvKCk7IH0pOworICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci0+
cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZv
KCk7IH0pOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTVmMGJlMDlhYjRm
ZmZjYjcxYTAxODNjMTg5YWY4MThjZWEzNTNkZS4uYzgwNDY1NDgxYmYyOTNmYmU1ZjhmYmIzM2I5
ZjAxMjFlNTVmNmY0YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTMwICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEltcG9ydCBMTFZNIGxpYmMrKyBv
cHRpb25hbCBhcyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnRlc3RQYXJzZUhUTUxJbnRlZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RQ
YXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tV
UkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2VzKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyk6CisKIDIwMTYtMTAtMzAgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBSZXN0cnVjdHVyZSBJ
RExQYXJzZXIgc3RydWN0cyB0byBiZXR0ZXIgbWF0Y2ggbW9kZXJuIFdlYklETCBjb25jZXB0cwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCmluZGV4IGEwNzE1ZmQ2
MmZlNzZjMTAyYzQ0M2ExYzc3NDZmNmQ0Yjg4Yzc0YmIuLjA3NTc1YjE2OTBiYzhhYjRiZWY3NDIz
YjM5NzUzMjQ5NTQ4NzNkZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL09wdGlvbmFsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRp
b25hbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgVEVTVChXVEZfT3B0aW9uYWwsIENhbGxiYWNrKQog
ewogICAgIGJvb2wgY2FsbGVkID0gZmFsc2U7CiAgICAgT3B0aW9uYWw8aW50PiBhOwotICAgIGlu
dCByZXN1bHQgPSBhLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgaW50IHJlc3VsdCA9IHZhbHVl
T3JDb21wdXRlKGEsIFsmXSB7CiAgICAgICAgIGNhbGxlZCA9IHRydWU7CiAgICAgICAgIHJldHVy
biAzMDA7CiAgICAgfSk7CkBAIC04NSw3ICs4NSw3IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxs
YmFjaykKIAogICAgIGEgPSAyNTA7CiAgICAgY2FsbGVkID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0g
YS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgIHJlc3VsdCA9IHZhbHVlT3JDb21wdXRlKGEsIFsm
XSB7CiAgICAgICAgIGNhbGxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiAzMDA7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNl
cklkaW9tcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNl
cklkaW9tcy5jcHAKaW5kZXggMGYxYzAyZDllNmNhODVjMDljYjQ5NmNiMzdmMTJjMjk5ZjU4ZmVm
OC4uNmU5ZTczOGFiNWJjZTFkZmFiZmI0MmY2MGViN2IyZjJiNjQ1Y2I0ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgaW50IHRlc3RQYXJzZUhUTUxJbnRlZ2VyKGNvbnN0
IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRpb25hbFJlc3VsdCA9IHBhcnNlSFRNTElu
dGVnZXIoaW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJl
dHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3Vs
dC52YWx1ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MSW50ZWdlckZhaWxzKGNv
bnN0IFN0cmluZyYgaW5wdXQpCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHVuc2lnbmVkIHRl
c3RQYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAg
ICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGlucHV0
KTsKICAgICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9u
YWxSZXN1bHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3Io
MCk7CiB9CiAKIHN0YXRpYyBib29sIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlckZhaWxzKGNv
bnN0IFN0cmluZyYgaW5wdXQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VUkxQYXJzZXIuY3BwCmluZGV4IDQ3Y2QwNzI5N2I0OWRkODZmNDhlMDVjNmYyZTU1YTc1NzFl
YjVkOGIuLjExYWFjNjg0NGVmZWIzZmI2N2E3NTg1M2IwMDU1OGY3ZjkxNmQ4YjYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3Qo
KSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwor
ICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
ZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTA4LDcgKzEwOCw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBl
Y3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwg
b2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCBvbGRV
UkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgb2xkVVJMLmhvc3Qo
KSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkp
OworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAt
MzU0LDcgKzM1NCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMzY0LDcgKzM2
NCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
dXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgb2xkVVJM
Lmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVl
T3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29y
KDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkp
OwpAQCAtNDgwLDcgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1
cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwu
cG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1
cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVy
eSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKSkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJM
RGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMm
IHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQudXNlciwgb2xkVVJMLnVzZXIoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVY
UEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVY
UEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNPbGQucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNPbGQuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpA
QCAtNTI1LDcgKzUyNSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNl
cyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNO
ZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwu
cG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9y
dCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwu
cGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSkpOwpAQCAtNTM1LDcgKzUzNSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRp
dmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBi
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQudXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNPbGQuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVD
VF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVD
VF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c09sZC5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNPbGQucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNPbGQuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAt
MTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnMKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1
cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVP
cigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMjEzLDcg
KzEyMTMsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdAogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29y
ZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0
KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsK
KyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293389</attachid>
            <date>2016-10-30 21:42:55 -0700</date>
            <delta_ts>2016-10-30 21:51:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031133859.patch</filename>
            <type>text/plain</type>
            <size>154097</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi5hZmI3NGZmMGJiNDc4NzA4
ZmE0YmMyZWY4NzhjNjVjMGM2MDIwMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RG
OjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisKIDIwMTYtMTAtMjkgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJp
bmdpZnkgc2hvdWxkIGhhbmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJh
eSBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAu
LjJmZjIzZWY4Nzg4YmUwNTkzYzE4N2M4Y2M2OTdhM2YzOTkyZDFiZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTQgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0
aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cG9ydCBMTFZNIGxpYmMrKydzIGV4cGVyaW1lbnRhbC9vcHRpb25hbC4gSXQgaGFzIHRoZSBzYW1l
CisgICAgICAgIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSB0byB0aGUgQysrMTcncyBvbmUu
IFByZXZpb3VzCisgICAgICAgIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFs
aXRpZXMuIFRoZSBsYXJnZXN0IG9uZQorICAgICAgICBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIg
Y29uc3RydWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBP
cHRpb25hbDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluCisgICAgICAgIFdl
YktpdC4KKworICAgICAgICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3Ry
dWN0b3JzLiBTbyBvbmx5IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhl
IHdheSB0byB1c2UgV1RGOjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGds
b2JhbCB2YXJpYWJsZXMuIFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBh
bmQKKyAgICAgICAgd2Ugd291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFy
aWFibGVzIHRoYXQgaW5jbHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBp
cyB0aGUgbWFpbiBtb3RpdmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlv
bmFsaXR5IGFsbG93cyB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAg
ICAgIHNpZ25hdHVyZXMgYXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAg
ICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6YmFkX29wdGlvbmFsX2FjY2Vzczo6
YmFkX29wdGlvbmFsX2FjY2Vzcyk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
fl9fb3B0aW9uYWxfc3RvcmFnZSk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
X19vcHRpb25hbF9zdG9yYWdlKToKKyAgICAgICAgKFdURjo6X19vcHRpb25hbF9zdG9yYWdlOjpu
b2V4Y2VwdCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6CisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6bm9leGNl
cHQpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZW1wbGFjZSk6CisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yKik6
CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZSk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFs
Ojp2YWx1ZV9vcik6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpv
cGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I+KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PSk6CisgICAgICAgIChXVEY6Om9wZXJh
dG9yPj0pOgorICAgICAgICAoV1RGOjpub2V4Y2VwdCk6CisgICAgICAgIChXVEY6Om1ha2VPcHRp
b25hbCk6CisgICAgICAgIChXVEY6Ok51bGxvcHRUYWc6Ok51bGxvcHRUYWcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6fk9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6Om9wZXJhdG9yIGJvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRp
b25hbDo6dmFsdWVPcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9y
Q29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjphc1B0cik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpkZXN0cm95KTogRGVsZXRlZC4KKwogMjAxNi0x
MC0zMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIEhh
cmZCdXp6IG90LW1hdGggQVBJIHRvIHBhcnNlIHRoZSBPcGVuVHlwZSBNQVRIIHRhYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZjU4NTJkYjM4NmJlMjM5NmU4MWI4NTU2NGY0ZjRhMGYzZWZjMTNjMi4uZDg3NWQ5
YjA2MDI1MDhjOGNlZjNmOTdmNjczODQ4ZjVlODZiNWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3MiBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RGOjpP
cHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVuYW1lIHZhbHVlT3IgdG8gdmFsdWVfb3IuIFRoaXMgaXMgc3BlY2lmaWVkIGluIEMrKzE3IHBy
b3Bvc2FsLgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6ZW1wbGFjZS4gQysrMTcgT3B0aW9uYWw6
Om9wZXJhdG9yPShPcHRpb25hbCYmKSByZXF1aXJlcworICAgICAgICBlaXRoZXIgY29weSBhc3Np
Z25tZW50IG9wZXJhdG9yIG9yIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4gQnV0CisgICAgICAg
IERGRzo6SlNWYWx1ZU9wZXJhbmQgZXRjLiBvbmx5IGRlZmluZXMgbW92ZSBjb25zdHJ1Y3RvcnMg
YW5kIGRyb3AKKyAgICAgICAgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKwor
ICAgICAgICBJdCB3YXMgT0sgaW4gdGhlIHByZXZpb3VzIFdURjo6T3B0aW9uYWwgc2luY2UgaXQg
YWx3YXlzIHVzZXMgbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMuIEJ1dCBpdCBpcyBub3QgdmFs
aWQgaW4gQysrMTcgT3B0aW9uYWwuIFdlIHVzZSBPcHRpb25hbDo6ZW1wbGFjZQorICAgICAgICBp
bnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHByZXZp
b3VzIFdURjo6T3B0aW9uYWwncworICAgICAgICBvcGVyYXRvcj0uCisKKyAgICAgICAgTm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6
ZmV0Y2gpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnRE
VE1GKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJv
bWlzZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnN3YXApOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkpOgorICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uT2JzZXJ2ZXI6Om9ic2VydmUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2VJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFBy
ZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6CisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmRlYnVnU3Ry
aW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6ZHJhd0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlk
ZW9PdXRwdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjptYXBB
YnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0
cmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0
YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9D
YWNoZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWls
eSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFu
c2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZv
ckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGls
ZFNpemVGb3JNaW5BbmRNYXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0R3Jvd3RoTGltaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0
VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRo
T2ZHcmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pblNpemVGb3JD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2Vk
VHJhY2tTaXppbmdGdW5jdGlvbnNGb3JOb25TcGFubmluZ0l0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OnNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2li
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVp
Z2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5n
Vmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxCbG9jazo6YXNjZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Nv
bnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVp
Z25PYmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVB
dEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6
aGl0VGVzdENsaXBDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6Omlu
dGVyc2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdD
b250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpw
cm9jZXNzR2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZl
cnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAs
IGFuZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IGNmNmFlNjFkOTk0NTRiYzBiOTkwMTgxZWI0NGIyYjMzMzQyNWRjMzUuLmY1
MjY3YTQxMWNmOTQ3YTZkZGY4MTQzMWMxODU3NGFmZmQ4Zjc2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwg
YXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorCiAyMDE2LTEwLTMwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVsZW1lbnQsIE5hbWVkTm9kZU1hcCwg
YW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggMWE2NmFmNzA1ZjBmNmUwODI3YzdkMDg3YTZhOWRiNTc4NjNlZjIwNy4uZWY5
YWUzODJmYjVjOTc0NDUyY2UzMzE4NTg4ZWIxMDZmNjMzNzE5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEltcG9ydCBMTFZNIGxpYmMrKyBvcHRpb25hbCBh
cyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYlNlY3VyaXR5T3Jp
Z2luOjpwb3J0KToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAsIGFuZCBET01TdHJpbmdNYXAg
ZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE2NzZlYTk0MTUy
MTlhNTY1MDhiMDE0NzBlOGJlOTU2MGRmZGRhMWYuLjZkNjAzMGM4ZmFiOWY3MDY4Yzg2YjAyZTc3
ZWY2N2VkOGFmN2Y3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNi0xMC0zMCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJ
bXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTZWN1
cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW06Cisg
ICAgICAgICgtW1dLU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisKIDIwMTYtMTAtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2Rl
TWFwLCBhbmQgRE9NU3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
N2I1N2IxODkyOTM3MDYxMGI3M2EwMGNlNWM1MDlkMzFjZmI1NTYxZi4uMTE5ZDZkYmVjMjI1NWMy
NGQ3NGY2NzI5YmY2NmYwYjM3YzRiYzViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyNTIsMTEgKzMyNTIsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAgIFJFTEVBU0Vf
QVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkp
OwogCiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgbGVmdCA9IEpT
VmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlz
LCBsZWZ0Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAg
ICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodCA9
IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNl
KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJl
Z3MoKTsKICAgICB9CiAKQEAgLTM0MDUsMTEgKzM0MDUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FT
U0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsK
IAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywg
bGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAg
IH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmlnaHQgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0
aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgfQogCkBAIC0zNTQ2LDcgKzM1NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SQogCiAgICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlmIChuZWVk
c1NjcmF0Y2hGUFJSZWcpIHsKLSAgICAgICAgZnByU2NyYXRjaCA9IEZQUlRlbXBvcmFyeSh0aGlz
KTsKKyAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3JhdGNoRlBS
ID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQogCkBAIC0zNTgwLDExICszNTgwLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0
aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgQVNTRVJUKCEoR2VuZXJhdG9yOjppc0xlZnRPcGVy
YW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVyYW5kKSkpOwogCiAgICAgaWYgKCFHZW5lcmF0b3I6Omlz
TGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAgICAgICBsZWZ0ID0g
SlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRo
aXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsK
ICAgICB9CiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChy
aWdodE9wZXJhbmQpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmln
aHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAg
ICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzY0OSwx
MCArMzY0OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5v
ZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9KTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFu
dChsZWZ0T3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlz
LCBsZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7
CiAgICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVy
YW5kKSkgewotICAgICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENo
aWxkKTsKKyAgICAgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAg
ICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQogCkBA
IC00NzY2LDExICs0NzY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERp
dihOb2RlKiBub2RlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25z
dCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgICAgICBpZiAoIWxlZnRPcGVy
YW5kLmlzQ29uc3QoKSkgewotICAgICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMs
IGxlZnRDaGlsZCk7CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsK
ICAgICAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAgIHJpZ2h0
ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgICAgICByaWdodC5l
bXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQt
PmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KIApAQCAtNzI3Nyw3ICs3Mjc3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICBPcHRp
b25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlmIChwYXRjaHBv
aW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9iamVjdEVk
Z2UgPSBub2RlLT5jaGlsZDIoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0ID0gU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CisgICAgICAgIGdsb2JhbE9iamVjdC5l
bXBsYWNlKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAgICByZWdzLmFwcGVuZChET01K
SVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUuZm9yTm9kZShnbG9iYWxPYmpl
Y3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4ZjcyYjFlOGRiNjFkN2Yz
M2UzMDNkM2I3M2Q1YjNmNTJiZWNlOGY4Li5mOThlMTQ1ZGY0NWIwYWM5NTcyZDNmNThkYzE5ZWIz
MzIzMDJiZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTUwNDUsMTEgKzUwNDUsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3Bl
cmFuZD4ga2V5QXNWYWx1ZTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsKICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAg
ICBrZXlBc1ZhbHVlID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAga2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgIGtleVJlZ3MgPSBrZXlBc1ZhbHVlLT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJp
bmdVc2UgfHwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgICAg
ICAgICBrZXlBc0NlbGwgPSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBrZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICBrZXlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGtleUFzQ2Vs
bC0+Z3ByKCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGY4OWMxZTY5NzU2OWIzMjhjMWIyZGQ0MjVk
ZTM1ZTRmNDJhMzc0ODYuLjVmMTczYjYwOTQ1OGYwMDg2NTc4N2YyYmMwYWQ3N2NjMzNjYzEyMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTE5NSwxMSArNTE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVl
OwogICAgICAgICBHUFJSZWcga2V5R1BSOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtleUFzVmFsdWUgPSBKU1ZhbHVl
T3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc1ZhbHVlLmVt
cGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5R1BSID0ga2V5QXNW
YWx1ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0ZUNlbGxP
cGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzQ2VsbC5lbXBs
YWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtleUFzQ2Vs
bC0+Z3ByKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
CmluZGV4IDEyZjk1NGMwMzQ5YzFiZmM3MzMwM2Q2MjlmZGYxZmViYTU2MjU1N2MuLjA0ODJjNzhh
NThmYjU4MDJjZDE4NzcxMmViYWUyYTYwOWU0NDJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGlj
YQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rh
cmdldE11dGV4KTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1v
dGVDb250cm9sQWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpz
aW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigwKSk7Cisg
ICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0
YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIG1fdGFyZ2V0
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRh
cmdldD4obV90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjYXN0ZWRUYXJnZXQgPSBk
b3duY2FzdDxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRl
eCA0Y2I1M2JmNTdmODI5ZTQ0ZGE5ZmJkNDlkNmZkOWM4Yzk4Yzk0NGQ0Li44MWYwMmVjMDM4ZTRi
MzJiYzEwNzAyYWIxMTM0ZjNmZDAyYmNjZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9P
cHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTEsMjczICsxLDk5
OSBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgT3B0aW9uYWxfaAotI2RlZmluZSBPcHRpb25hbF9o
CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGxpYmMrKyBMaWNlbnNlCisvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKy8vCisvLyBUaGUgbGliYysrIGxpYnJhcnkgaXMgZHVhbCBsaWNlbnNl
ZCB1bmRlciBib3RoIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzCisvLyAiQlNELUxpa2UiIGxp
Y2Vuc2UgYW5kIHRoZSBNSVQgbGljZW5zZS4gIEFzIGEgdXNlciBvZiB0aGlzIGNvZGUgeW91IG1h
eSBjaG9vc2UKKy8vIHRvIHVzZSBpdCB1bmRlciBlaXRoZXIgbGljZW5zZS4gIEFzIGEgY29udHJp
YnV0b3IsIHlvdSBhZ3JlZSB0byBhbGxvdyB5b3VyIGNvZGUKKy8vIHRvIGJlIHVzZWQgdW5kZXIg
Ym90aC4KKy8vCisvLyBGdWxsIHRleHQgb2YgdGhlIHJlbGV2YW50IGxpY2Vuc2VzIGlzIGluY2x1
ZGVkIGJlbG93LgorLy8KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIFVuaXZlcnNp
dHkgb2YgSWxsaW5vaXMvTkNTQQorLy8gT3BlbiBTb3VyY2UgTGljZW5zZQorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwOS0yMDE2IGJ5IHRoZSBjb250cmlidXRvcnMgbGlzdGVkIGluIENSRURJVFMu
VFhUCisvLworLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBEZXZlbG9wZWQgYnk6Cisv
LworLy8gICAgIExMVk0gVGVhbQorLy8KKy8vICAgICBVbml2ZXJzaXR5IG9mIElsbGlub2lzIGF0
IFVyYmFuYS1DaGFtcGFpZ24KKy8vCisvLyAgICAgaHR0cDovL2xsdm0ub3JnCisvLworLy8gUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weSBvZgorLy8gdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgd2l0aAorLy8gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlIHJpZ2h0cyB0bworLy8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKy8vIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hl
ZCB0byBkbworLy8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKy8vICAgICAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVycy4KKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsCisvLyAgICAgICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcnMgaW4gdGhlCisvLyAgICAgICAgICAgICAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lcyBvZiB0aGUgTExWTSBUZWFtLCBVbml2
ZXJzaXR5IG9mIElsbGlub2lzIGF0CisvLyAgICAgICAgICAgVXJiYW5hLUNoYW1wYWlnbiwgbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvCisvLyAgICAgICAg
ICAgICAgICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIFNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMKKy8vICAgICAgICAgICAgICAgICAgICAgICBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLCBGSVRORVNTCisvLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQ09OVFJJQlVUT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisv
LyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBXSVRIIFRIRQorLy8gU09G
VFdBUkUuCisvLworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDA5LTIwMTQgYnkgdGhlIGNvbnRyaWJ1dG9ycyBsaXN0ZWQgaW4gQ1JFRElUUy5UWFQKKy8v
CisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55
IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh
dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo
LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisv
LyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
OgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g
bm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8g
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK
Ky8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig
T1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09G
VFdBUkUuCisKKy8vIENvcGllZCBmcm9tIGh0dHA6Ly9sbHZtLm9yZy9zdm4vbGx2bS1wcm9qZWN0
L2xpYmN4eC90cnVuay9pbmNsdWRlL2V4cGVyaW1lbnRhbC9vcHRpb25hbCAocjI4NTUyNCkKKwor
Ly8gTW9kaWZpZWQgdG8gbWFrZSBpdCBjb21waWxlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4K
KworI3ByYWdtYSBvbmNlCiAKKy8qCisgICAgb3B0aW9uYWwgc3lub3BzaXMKKworLy8gQysrMXkK
KworbmFtZXNwYWNlIHN0ZCB7IG5hbWVzcGFjZSBleHBlcmltZW50YWwgeyBpbmxpbmUgbmFtZXNw
YWNlIGZ1bmRhbWVudGFsc192MSB7CisKKyAgICAvLyA1LjMsIG9wdGlvbmFsIGZvciBvYmplY3Qg
dHlwZXMKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3Mgb3B0aW9uYWw7CisKKyAgICAvLyA1
LjQsIEluLXBsYWNlIGNvbnN0cnVjdGlvbgorICAgIHN0cnVjdCBpbl9wbGFjZV90e307CisgICAg
Y29uc3RleHByIGluX3BsYWNlX3QgaW5fcGxhY2V7fTsKKworICAgIC8vIDUuNSwgTm8tdmFsdWUg
c3RhdGUgaW5kaWNhdG9yCisgICAgc3RydWN0IG51bGxvcHRfdHtzZWUgYmVsb3d9OworICAgIGNv
bnN0ZXhwciBudWxsb3B0X3QgbnVsbG9wdCh1bnNwZWNpZmllZCk7CisKKyAgICAvLyA1LjYsIENs
YXNzIGJhZF9vcHRpb25hbF9hY2Nlc3MKKyAgICBjbGFzcyBiYWRfb3B0aW9uYWxfYWNjZXNzOwor
CisgICAgLy8gNS43LCBSZWxhdGlvbmFsIG9wZXJhdG9ycworICAgIHRlbXBsYXRlIDxjbGFzcyBU
PgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcHRpb25hbDxUPiYsIGNv
bnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9uYWw8VD4m
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PChjb25zdCBvcHRpb25hbDxUPiYsIGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFQ+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8
VD4mLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYsIGNvbnN0IG9wdGlv
bmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKworICAg
IC8vIDUuOCwgQ29tcGFyaXNvbiB3aXRoIG51bGxvcHQKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkg
bm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0obnVsbG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYpIG5vZXhjZXB0OworICAgIHRlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPFQ+Jiwg
bnVsbG9wdF90KSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9leGNlcHQ7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRp
b25hbDxUPiYsIG51bGxvcHRfdCkgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPChudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9l
eGNlcHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0o
Y29uc3Qgb3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9u
YWw8VD4mKSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBub2V4Y2VwdDsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KG51bGxvcHRfdCwgY29u
c3Qgb3B0aW9uYWw8VD4mKSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkgbm9leGNl
cHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0obnVs
bG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYpIG5vZXhjZXB0OworCisgICAgLy8gNS45LCBDb21w
YXJpc29uIHdpdGggVAorICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxU
PiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IG9wdGlvbmFsPFQ+JiwgY29uc3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3Qgb3B0aW9u
YWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBUJiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYsIGNv
bnN0IFQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBUJiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3QgVCYpOwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYs
IGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYsIGNvbnN0IG9w
dGlvbmFsPFQ+Jik7CisKKyAgICAvLyA1LjEwLCBTcGVjaWFsaXplZCBhbGdvcml0aG1zCisgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgc3dhcChvcHRpb25hbDxUPiYsIG9wdGlvbmFsPFQ+Jikg
bm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIG9w
dGlvbmFsPHNlZSBiZWxvdz4gbWFrZV9vcHRpb25hbChUJiYpOworCisJdGVtcGxhdGUgPGNsYXNz
IFQ+CisJY2xhc3Mgb3B0aW9uYWwKKwl7CisJcHVibGljOgorCSAgdHlwZWRlZiBUIHZhbHVlX3R5
cGU7CisKKwkgIC8vIDUuMy4xLCBDb25zdHJ1Y3RvcnMKKwkgIGNvbnN0ZXhwciBvcHRpb25hbCgp
IG5vZXhjZXB0OworCSAgY29uc3RleHByIG9wdGlvbmFsKG51bGxvcHRfdCkgbm9leGNlcHQ7CisJ
ICBvcHRpb25hbChjb25zdCBvcHRpb25hbCYpOworCSAgb3B0aW9uYWwob3B0aW9uYWwmJikgbm9l
eGNlcHQoc2VlIGJlbG93KTsKKwkgIGNvbnN0ZXhwciBvcHRpb25hbChjb25zdCBUJik7CisJICBj
b25zdGV4cHIgb3B0aW9uYWwoVCYmKTsKKwkgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiBjb25z
dGV4cHIgZXhwbGljaXQgb3B0aW9uYWwoaW5fcGxhY2VfdCwgQXJncyYmLi4uKTsKKwkgIHRlbXBs
YXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgorCQljb25zdGV4cHIgZXhwbGljaXQgb3B0aW9u
YWwoaW5fcGxhY2VfdCwgaW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKworCSAgLy8g
NS4zLjIsIERlc3RydWN0b3IKKwkgIH5vcHRpb25hbCgpOworCisJICAvLyA1LjMuMywgQXNzaWdu
bWVudAorCSAgb3B0aW9uYWwmIG9wZXJhdG9yPShudWxsb3B0X3QpIG5vZXhjZXB0OworCSAgb3B0
aW9uYWwmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbCYpOworCSAgb3B0aW9uYWwmIG9wZXJhdG9y
PShvcHRpb25hbCYmKSBub2V4Y2VwdChzZWUgYmVsb3cpOworCSAgdGVtcGxhdGUgPGNsYXNzIFU+
IG9wdGlvbmFsJiBvcGVyYXRvcj0oVSYmKTsKKwkgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiB2
b2lkIGVtcGxhY2UoQXJncyYmLi4uKTsKKwkgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBB
cmdzPgorCQl2b2lkIGVtcGxhY2UoaW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKwor
CSAgLy8gNS4zLjQsIFN3YXAKKwkgIHZvaWQgc3dhcChvcHRpb25hbCYpIG5vZXhjZXB0KHNlZSBi
ZWxvdyk7CisKKwkgIC8vIDUuMy41LCBPYnNlcnZlcnMKKwkgIGNvbnN0ZXhwciBUIGNvbnN0KiBv
cGVyYXRvciAtPigpIGNvbnN0OworCSAgY29uc3RleHByIFQqIG9wZXJhdG9yIC0+KCk7CisJICBj
b25zdGV4cHIgVCBjb25zdCYgb3BlcmF0b3IgKigpIGNvbnN0ICY7CisJICBjb25zdGV4cHIgVCYg
b3BlcmF0b3IgKigpICY7CisJICBjb25zdGV4cHIgVCYmIG9wZXJhdG9yICooKSAmJjsKKwkgIGNv
bnN0ZXhwciBjb25zdCBUJiYgb3BlcmF0b3IgKigpIGNvbnN0ICYmOworCSAgY29uc3RleHByIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdDsKKwkgIGNvbnN0ZXhwciBUIGNv
bnN0JiB2YWx1ZSgpIGNvbnN0ICY7CisJICBjb25zdGV4cHIgVCYgdmFsdWUoKSAmOworCSAgY29u
c3RleHByIFQmJiB2YWx1ZSgpICYmOworCSAgY29uc3RleHByIGNvbnN0IFQmJiB2YWx1ZSgpIGNv
bnN0ICYmOworCSAgdGVtcGxhdGUgPGNsYXNzIFU+IGNvbnN0ZXhwciBUIHZhbHVlX29yKFUmJikg
Y29uc3QgJjsKKwkgIHRlbXBsYXRlIDxjbGFzcyBVPiBjb25zdGV4cHIgVCB2YWx1ZV9vcihVJiYp
ICYmOworCisJcHJpdmF0ZToKKwkgIFQqICAgdmFsOyAgLy8gZXhwb3NpdGlvbiBvbmx5CisJfTsK
KworICB9IC8vIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjEKKyAgfSAvLyBuYW1lc3BhY2UgZXhw
ZXJpbWVudGFsCisKKyAgLy8gNS4xMSwgSGFzaCBzdXBwb3J0CisgIHRlbXBsYXRlIDxjbGFzcyBU
PiBzdHJ1Y3QgaGFzaDsKKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBoYXNoPGV4cGVyaW1l
bnRhbDo6b3B0aW9uYWw8VD4+OworCit9IC8vIG5hbWVzcGFjZSBzdGQKKworKi8KKworI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorI2luY2x1ZGUgPGluaXRpYWxp
emVyX2xpc3Q+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8bmV3PgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi0vLyBXVEY6Ok9wdGlvbmFsIGlzIGEgY2xhc3MgYmFz
ZWQgb24gc3RkOjpvcHRpb25hbCwgZGVzY3JpYmVkIGhlcmU6Ci0vLyBodHRwOi8vd3d3Lm9wZW4t
c3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL3BhcGVycy8yMDEzL24zNTI3Lmh0bWwKLS8vIElm
IHRoaXMgZW5kcyB1cCBpbiBhIEMrKyBzdGFuZGFyZCwgd2Ugc2hvdWxkIHJlcGxhY2Ugb3VyIGlt
cGxlbWVudGF0aW9uIHdpdGggaXQuCi0KIG5hbWVzcGFjZSBXVEYgewogCi1zdHJ1Y3QgSW5QbGFj
ZVRhZyB7IH07Ci1jb25zdGV4cHIgSW5QbGFjZVRhZyBJblBsYWNlIHsgfTsKK2NsYXNzIGJhZF9v
cHRpb25hbF9hY2Nlc3MKKyAgICA6IHB1YmxpYyBzdGQ6OmxvZ2ljX2Vycm9yCit7CitwdWJsaWM6
CisJYmFkX29wdGlvbmFsX2FjY2VzcygpIDogc3RkOjpsb2dpY19lcnJvcigiQmFkIG9wdGlvbmFs
IEFjY2VzcyIpIHt9CiAKLXN0cnVjdCBOdWxsb3B0VGFnIHsgZXhwbGljaXQgY29uc3RleHByIE51
bGxvcHRUYWcoaW50KSB7IH0gfTsKLWNvbnN0ZXhwciBOdWxsb3B0VGFnIE51bGxvcHQgeyAwIH07
CisvLwlHZXQgdGhlIGtleSBmdW5jdGlvbiB+YmFkX29wdGlvbmFsX2FjY2VzcygpIGludG8gdGhl
IGR5bGliCisgICAgdmlydHVhbCB+YmFkX29wdGlvbmFsX2FjY2VzcygpIG5vZXhjZXB0OworfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIE9wdGlvbmFsIHsKLXB1YmxpYzoKLSAgICBP
cHRpb25hbCgpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAgIH0KK3N0
cnVjdCBfX25hdAoreworICAgIF9fbmF0KCkgPSBkZWxldGU7CisgICAgX19uYXQoY29uc3QgX19u
YXQmKSA9IGRlbGV0ZTsKKyAgICBfX25hdCYgb3BlcmF0b3I9KGNvbnN0IF9fbmF0JikgPSBkZWxl
dGU7CisgICAgfl9fbmF0KCkgPSBkZWxldGU7Cit9OwogCi0gICAgT3B0aW9uYWwoTnVsbG9wdFRh
ZykKLSAgICAgICAgOiBtX2lzRW5nYWdlZChmYWxzZSkKLSAgICB7Ci0gICAgfQordGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX1VwID0gX1RwLAorICAgICAgICAgIGJvb2wgX05vdFZvaWQgPSAh
c3RkOjppc192b2lkPF9UcD46OnZhbHVlICYmICFzdGQ6OmlzX3ZvaWQ8X1VwPjo6dmFsdWU+Citz
dHJ1Y3QgX19zd2FwcGFibGVfd2l0aAoreworICAgIHRlbXBsYXRlIDxjbGFzcyBfTEhTLCBjbGFz
cyBfUkhTPgorICAgIHN0YXRpYyBkZWNsdHlwZShzdGQ6OnN3YXAoc3RkOjpkZWNsdmFsPF9MSFM+
KCksIHN0ZDo6ZGVjbHZhbDxfUkhTPigpKSkKKyAgICBfX3Rlc3Rfc3dhcChpbnQpOworICAgIHRl
bXBsYXRlIDxjbGFzcywgY2xhc3M+CisgICAgc3RhdGljIF9fbmF0IF9fdGVzdF9zd2FwKGxvbmcp
OworCisgICAgLy8gRXh0cmEgcGFyZW5zIGFyZSBuZWVkZWQgZm9yIHRoZSBDKyswMyBkZWZpbml0
aW9uIG9mIGRlY2x0eXBlLgorICAgIHR5cGVkZWYgZGVjbHR5cGUoKF9fdGVzdF9zd2FwPF9UcCwg
X1VwPigwKSkpIF9fc3dhcDE7CisgICAgdHlwZWRlZiBkZWNsdHlwZSgoX190ZXN0X3N3YXA8X1Vw
LCBfVHA+KDApKSkgX19zd2FwMjsKKworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gIXN0
ZDo6aXNfc2FtZTxfX3N3YXAxLCBfX25hdD46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAhc3RkOjppc19zYW1lPF9fc3dhcDIsIF9fbmF0Pjo6dmFsdWU7Cit9OwogCi0gICAg
T3B0aW9uYWwoY29uc3QgVCYgdmFsdWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1ZSkKLSAg
ICB7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQodmFsdWUpOwotICAgIH0KK3Rl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9VcD4KK3N0cnVjdCBfX3N3YXBwYWJsZV93aXRoPF9U
cCwgX1VwLCAgZmFsc2U+IDogc3RkOjpmYWxzZV90eXBlIHt9OwogCi0gICAgT3B0aW9uYWwoY29u
c3QgT3B0aW9uYWwmIG90aGVyKQotICAgICAgICA6IG1faXNFbmdhZ2VkKG90aGVyLm1faXNFbmdh
Z2VkKQotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgbmV3IChO
b3ROdWxsLCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0gICAgfQordGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX1VwID0gX1RwLCBib29sIF9Td2FwcGFibGUgPSBfX3N3YXBwYWJsZV93
aXRoPF9UcCwgX1VwPjo6dmFsdWU+CitzdHJ1Y3QgX19ub3Rocm93X3N3YXBwYWJsZV93aXRoIHsK
KyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPQorICAgICAgbm9leGNlcHQoc3RkOjpzd2FwKHN0
ZDo6ZGVjbHZhbDxfVHA+KCksIHN0ZDo6ZGVjbHZhbDxfVXA+KCkpKQorICAmJiAgbm9leGNlcHQo
c3RkOjpzd2FwKHN0ZDo6ZGVjbHZhbDxfVXA+KCksIHN0ZDo6ZGVjbHZhbDxfVHA+KCkpKTsKK307
CiAKLSAgICBPcHRpb25hbChPcHRpb25hbCYmIG90aGVyKQotICAgICAgICA6IG1faXNFbmdhZ2Vk
KG90aGVyLm1faXNFbmdhZ2VkKQotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAg
ICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0cigp
KSk7Ci0gICAgfQordGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1VwPgorc3RydWN0IF9fbm90
aHJvd19zd2FwcGFibGVfd2l0aDxfVHAsIF9VcCwgZmFsc2U+IDogc3RkOjpmYWxzZV90eXBlIHt9
OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfbm90aHJvd19zd2FwcGFibGUK
KyAgICA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIF9fbm90aHJvd19zd2Fw
cGFibGVfd2l0aDxfVHAmPjo6dmFsdWU+Cit7Cit9OworCitzdHJ1Y3QgSW5QbGFjZVR5cGUge307
Citjb25zdGV4cHIgSW5QbGFjZVR5cGUgSW5QbGFjZXt9OworCitzdHJ1Y3QgTnVsbG9wdFR5cGUK
K3sKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgTnVsbG9wdFR5cGUoaW50KSBub2V4Y2VwdCB7fQor
fTsKKworY29uc3RleHByIE51bGxvcHRUeXBlIE51bGxvcHR7MH07CiAKLSAgICBPcHRpb25hbChU
JiYgdmFsdWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1ZSkKK3RlbXBsYXRlIDxjbGFzcyBf
VHAsIGJvb2wgPSBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8X1RwPjo6dmFsdWU+Citj
bGFzcyBfX29wdGlvbmFsX3N0b3JhZ2UKK3sKK3Byb3RlY3RlZDoKKyAgICB0eXBlZGVmIF9UcCB2
YWx1ZV90eXBlOworICAgIHVuaW9uCiAgICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3Zh
bHVlKSBUKFdURk1vdmUodmFsdWUpKTsKLSAgICB9CisgICAgICAgIGNoYXIgX19udWxsX3N0YXRl
XzsKKyAgICAgICAgdmFsdWVfdHlwZSBfX3ZhbF87CisgICAgfTsKKyAgICBib29sIF9fZW5nYWdl
ZF8gPSBmYWxzZTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgT3B0aW9u
YWwoSW5QbGFjZVRhZywgQXJncyYmLi4uIGFyZ3MpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1
ZSkKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgfl9fb3B0aW9uYWxfc3RvcmFnZSgpCiAgICAgewot
ICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgICAgIGlmIChfX2VuZ2FnZWRfKQorICAgICAgICAgICAgX192YWxfLn52YWx1
ZV90eXBlKCk7CiAgICAgfQogCi0gICAgfk9wdGlvbmFsKCkKKyAgICBBTFdBWVNfSU5MSU5FCisg
ICAgY29uc3RleHByIF9fb3B0aW9uYWxfc3RvcmFnZSgpIG5vZXhjZXB0CisgICAgICAgIDogIF9f
bnVsbF9zdGF0ZV8oJ1wwJykge30KKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBfX29wdGlvbmFs
X3N0b3JhZ2UoY29uc3QgX19vcHRpb25hbF9zdG9yYWdlJiBfX3gpCisgICAgICAgIDogIF9fZW5n
YWdlZF8oX194Ll9fZW5nYWdlZF8pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChfX2VuZ2Fn
ZWRfKQorICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZihfX3ZhbF8p
KSB2YWx1ZV90eXBlKF9feC5fX3ZhbF8pOworICAgICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
CisgICAgX19vcHRpb25hbF9zdG9yYWdlKF9fb3B0aW9uYWxfc3RvcmFnZSYmIF9feCkKKyAgICAg
ICAgICAgICAgICAgICAgICBub2V4Y2VwdChzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3Rp
YmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSkKKyAgICAgICAgOiAgX19lbmdhZ2VkXyhfX3guX19lbmdh
Z2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKF9fZW5nYWdlZF8pCisgICAgICAgICAg
ICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKF9fdmFsXykpIHZhbHVlX3R5cGUoV1RG
TW92ZShfX3guX192YWxfKSk7CisgICAgICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBj
b25zdGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKGNvbnN0IHZhbHVlX3R5cGUmIF9fdikKKyAgICAg
ICAgOiAgX192YWxfKF9fdiksCisgICAgICAgICAgIF9fZW5nYWdlZF8odHJ1ZSkge30KKworICAg
IEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKHZhbHVlX3R5
cGUmJiBfX3YpCisgICAgICAgIDogIF9fdmFsXyhXVEZNb3ZlKF9fdikpLAorICAgICAgICAgICBf
X2VuZ2FnZWRfKHRydWUpIHt9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0FyZ3M+CisgICAg
QUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwcgorICAgIGV4cGxpY2l0IF9fb3B0aW9uYWxfc3Rv
cmFnZShJblBsYWNlVHlwZSwgX0FyZ3MmJi4uLiBfX2FyZ3MpCisgICAgICAgOiAgX192YWxfKHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLiksCisgICAgICAgICAgIF9fZW5nYWdlZF8odHJ1
ZSkge30KK307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitjbGFzcyBfX29wdGlvbmFsX3N0b3Jh
Z2U8X1RwLCB0cnVlPgoreworcHJvdGVjdGVkOgorICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7
CisgICAgdW5pb24KICAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICB9CisgICAgICAgIGNo
YXIgX19udWxsX3N0YXRlXzsKKyAgICAgICAgdmFsdWVfdHlwZSBfX3ZhbF87CisgICAgfTsKKyAg
ICBib29sIF9fZW5nYWdlZF8gPSBmYWxzZTsKKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBjb25z
dGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKCkgbm9leGNlcHQKKyAgICAgICAgOiAgX19udWxsX3N0
YXRlXygnXDAnKSB7fQorCisgICAgQUxXQVlTX0lOTElORQorICAgIF9fb3B0aW9uYWxfc3RvcmFn
ZShjb25zdCBfX29wdGlvbmFsX3N0b3JhZ2UmIF9feCkKKyAgICAgICAgOiAgX19lbmdhZ2VkXyhf
X3guX19lbmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKF9fZW5nYWdlZF8pCisg
ICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKF9fdmFsXykpIHZhbHVl
X3R5cGUoX194Ll9fdmFsXyk7CisgICAgICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBf
X29wdGlvbmFsX3N0b3JhZ2UoX19vcHRpb25hbF9zdG9yYWdlJiYgX194KQorICAgICAgICAgICAg
ICAgICAgICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8dmFs
dWVfdHlwZT46OnZhbHVlKQorICAgICAgICA6ICBfX2VuZ2FnZWRfKF9feC5fX2VuZ2FnZWRfKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoX19lbmdhZ2VkXykKKyAgICAgICAgICAgICAgICA6
Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YoX192YWxfKSkgdmFsdWVfdHlwZShXVEZNb3ZlKF9f
eC5fX3ZhbF8pKTsKKyAgICAgICAgfQorCisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhw
ciBfX29wdGlvbmFsX3N0b3JhZ2UoY29uc3QgdmFsdWVfdHlwZSYgX192KQorICAgICAgICA6ICBf
X3ZhbF8oX192KSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVlKSB7fQorCisgICAgQUxXQVlT
X0lOTElORQorICAgIGNvbnN0ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UodmFsdWVfdHlwZSYmIF9f
dikKKyAgICAgICAgOiAgX192YWxfKFdURk1vdmUoX192KSksCisgICAgICAgICAgIF9fZW5nYWdl
ZF8odHJ1ZSkge30KKworICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfQXJncz4KKyAgICBBTFdBWVNf
SU5MSU5FCisgICAgY29uc3RleHByCisgICAgZXhwbGljaXQgX19vcHRpb25hbF9zdG9yYWdlKElu
UGxhY2VUeXBlLCBfQXJncyYmLi4uIF9fYXJncykKKyAgICAgICA6ICBfX3ZhbF8oc3RkOjpmb3J3
YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVlKSB7fQor
fTsKIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFRhZykKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitjbGFzcyBPcHRpb25hbAorICAgIDogcHJpdmF0ZSBfX29wdGlvbmFsX3N0b3JhZ2U8
X1RwPgoreworICAgIHR5cGVkZWYgX19vcHRpb25hbF9zdG9yYWdlPF9UcD4gX19iYXNlOworcHVi
bGljOgorICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CisKKyAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX3JlZmVyZW5jZTx2YWx1ZV90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICJJbnN0
YW50aWF0aW9uIG9mIE9wdGlvbmFsIHdpdGggYSByZWZlcmVuY2UgdHlwZSBpcyBpbGwtZm9ybWVk
LiIpOworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jdjx2YWx1ZV90eXBlPjo6dHlwZSwgSW5QbGFjZVR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhIEluUGxhY2VUeXBlIHR5cGUgaXMg
aWxsLWZvcm1lZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8dmFsdWVfdHlwZT46OnR5cGUsIE51bGxvcHRUeXBlPjo6dmFsdWUsCisg
ICAgICAgICAgICAgICJJbnN0YW50aWF0aW9uIG9mIE9wdGlvbmFsIHdpdGggYSBOdWxsb3B0VHlw
ZSB0eXBlIGlzIGlsbC1mb3JtZWQuIik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX29iamVj
dDx2YWx1ZV90eXBlPjo6dmFsdWUsCisgICAgICAgICJJbnN0YW50aWF0aW9uIG9mIE9wdGlvbmFs
IHdpdGggYSBub24tb2JqZWN0IHR5cGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLiIpOworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Rlc3RydWN0aWJsZTx2YWx1ZV90eXBlPjo6dmFs
dWUsCisgICAgICAgICJJbnN0YW50aWF0aW9uIG9mIE9wdGlvbmFsIHdpdGggYW4gb2JqZWN0IHR5
cGUgdGhhdCBpcyBub3Qgbm9leGNlcHQgZGVzdHJ1Y3RpYmxlIGlzIHVuZGVmaW5lZCBiZWhhdmlv
ci4iKTsKKworICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIE9wdGlvbmFsKCkgbm9leGNlcHQg
e30KKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsKGNvbnN0IE9wdGlvbmFsJikgPSBkZWZhdWx0
OworICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWwoT3B0aW9uYWwmJikgPSBkZWZhdWx0OworICAg
IEFMV0FZU19JTkxJTkUgfk9wdGlvbmFsKCkgPSBkZWZhdWx0OworICAgIEFMV0FZU19JTkxJTkUg
Y29uc3RleHByIE9wdGlvbmFsKE51bGxvcHRUeXBlKSBub2V4Y2VwdCB7fQorICAgIEFMV0FZU19J
TkxJTkUgY29uc3RleHByIE9wdGlvbmFsKGNvbnN0IHZhbHVlX3R5cGUmIF9fdikKKyAgICAgICAg
OiBfX2Jhc2UoX192KSB7fQorICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIE9wdGlvbmFsKHZh
bHVlX3R5cGUmJiBfX3YpCisgICAgICAgIDogX19iYXNlKFdURk1vdmUoX192KSkge30KKworICAg
IHRlbXBsYXRlIDxjbGFzcy4uLiBfQXJncywKKyAgICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZgorICAgICAgICAgICAgICAgICAgICAgIDwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlLCBfQXJncy4uLj46
OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQorICAgICAgICAgICAgID4KKyAg
ICBBTFdBWVNfSU5MSU5FCisgICAgY29uc3RleHByCisgICAgZXhwbGljaXQgT3B0aW9uYWwoSW5Q
bGFjZVR5cGUsIF9BcmdzJiYuLi4gX19hcmdzKQorICAgICAgICA6IF9fYmFzZShJblBsYWNlLCBz
dGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pIHt9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1VwLCBjbGFzcy4uLiBfQXJncywKKyAgICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZgorICAgICAgICAgICAgICAgICAgICAgIDwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlLCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8X1VwPiYsIF9BcmdzLi4uPjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICA+Ojp0
eXBlCisgICAgICAgICAgICAgPgorICAgIEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIKKyAg
ICBleHBsaWNpdCBPcHRpb25hbChJblBsYWNlVHlwZSwgc3RkOjppbml0aWFsaXplcl9saXN0PF9V
cD4gX19pbCwgX0FyZ3MmJi4uLiBfX2FyZ3MpCisgICAgICAgIDogX19iYXNlKEluUGxhY2UsIF9f
aWwsIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLikge30KKworICAgIEFMV0FZU19JTkxJ
TkUKKyAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE51bGxvcHRUeXBlKSBub2V4Y2VwdAogICAgIHsK
LSAgICAgICAgZGVzdHJveSgpOworICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAgICAg
ICAgeworICAgICAgICAgICAgdGhpcy0+X192YWxfLn52YWx1ZV90eXBlKCk7CisgICAgICAgICAg
ICB0aGlzLT5fX2VuZ2FnZWRfID0gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3QgT3B0aW9uYWwmIG90
aGVyKQorICAgIEFMV0FZU19JTkxJTkUKKyAgICBPcHRpb25hbCYKKyAgICBvcGVyYXRvcj0oY29u
c3QgT3B0aW9uYWwmIF9fb3B0KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQot
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAg
aWYgKG90aGVyLm1faXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3Zh
bHVlKSBUKCpvdGhlci5hc1B0cigpKTsKLSAgICAgICAgICAgIG1faXNFbmdhZ2VkID0gdHJ1ZTsK
KyAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8gPT0gX19vcHQuX19lbmdhZ2VkXykKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisgICAgICAgICAgICAgICAg
dGhpcy0+X192YWxfID0gX19vcHQuX192YWxfOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisgICAgICAgICAgICAg
ICAgdGhpcy0+X192YWxfLn52YWx1ZV90eXBlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXykpIHZhbHVl
X3R5cGUoX19vcHQuX192YWxfKTsKKyAgICAgICAgICAgIHRoaXMtPl9fZW5nYWdlZF8gPSBfX29w
dC5fX2VuZ2FnZWRfOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFsJiYgb3RoZXIpCisgICAgQUxXQVlTX0lO
TElORQorICAgIE9wdGlvbmFsJgorICAgIG9wZXJhdG9yPShPcHRpb25hbCYmIF9fb3B0KQorICAg
ICAgICBub2V4Y2VwdChzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPHZhbHVlX3R5cGU+
Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1
Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZv
dGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgICBkZXN0cm95KCk7Ci0g
ICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0cigpKSk7Ci0gICAgICAgICAgICBtX2lz
RW5nYWdlZCA9IHRydWU7CisgICAgICAgIGlmICh0aGlzLT5fX2VuZ2FnZWRfID09IF9fb3B0Ll9f
ZW5nYWdlZF8pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLT5fX2VuZ2FnZWRfKQor
ICAgICAgICAgICAgICAgIHRoaXMtPl9fdmFsXyA9IFdURk1vdmUoX19vcHQuX192YWxfKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLT5f
X2VuZ2FnZWRfKQorICAgICAgICAgICAgICAgIHRoaXMtPl9fdmFsXy5+dmFsdWVfdHlwZSgpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJl
c3NvZih0aGlzLT5fX3ZhbF8pKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlKFdURk1v
dmUoX19vcHQuX192YWxfKSk7CisgICAgICAgICAgICB0aGlzLT5fX2VuZ2FnZWRfID0gX19vcHQu
X19lbmdhZ2VkXzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBUPjo6
dmFsdWU+Ojp0eXBlPgotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oVSYmIHUpCisgICAgdGVtcGxh
dGUgPGNsYXNzIF9VcCwKKyAgICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZgorICAgICAgICAgICAgICAgICAgICAgIDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxfVXA+Ojp0eXBlLCB2
YWx1ZV90eXBlPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19j
b25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGUsIF9VcD46OnZhbHVlICYmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6aXNfYXNzaWduYWJsZTx2YWx1ZV90eXBlJiwgX1VwPjo6dmFsdWUKKyAg
ICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCisgICAgICAgICAgICAgPgorICAgIEFMV0FZU19J
TkxJTkUKKyAgICBPcHRpb25hbCYKKyAgICBvcGVyYXRvcj0oX1VwJiYgX192KQogICAgIHsKLSAg
ICAgICAgZGVzdHJveSgpOwotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6
Zm9yd2FyZDxVPih1KSk7Ci0gICAgICAgIG1faXNFbmdhZ2VkID0gdHJ1ZTsKKyAgICAgICAgaWYg
KHRoaXMtPl9fZW5nYWdlZF8pCisgICAgICAgICAgICB0aGlzLT5fX3ZhbF8gPSBzdGQ6OmZvcndh
cmQ8X1VwPihfX3YpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIDo6bmV3
KCh2b2lkKilzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3ZhbF8pKSB2YWx1ZV90eXBlKHN0ZDo6Zm9y
d2FyZDxfVXA+KF9fdikpOworICAgICAgICAgICAgdGhpcy0+X19lbmdhZ2VkXyA9IHRydWU7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2lzRW5nYWdlZDsgfQotCi0gICAgY29uc3Qg
VCogb3BlcmF0b3ItPigpIGNvbnN0CisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzLAorICAg
ICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgICAgICAgICAgICAg
ICAgICAgICAgPAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGli
bGU8dmFsdWVfdHlwZSwgX0FyZ3MuLi4+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgID46
OnR5cGUKKyAgICAgICAgICAgICA+CisgICAgQUxXQVlTX0lOTElORQorICAgIHZvaWQKKyAgICBl
bXBsYWNlKF9BcmdzJiYuLi4gX19hcmdzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdh
Z2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRyKCk7CisgICAgICAgICp0aGlzID0gTnVsbG9wdDsK
KyAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXykpCisgICAg
ICAgICAgICB2YWx1ZV90eXBlKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CisgICAg
ICAgIHRoaXMtPl9fZW5nYWdlZF8gPSB0cnVlOwogICAgIH0KIAotICAgIFQqIG9wZXJhdG9yLT4o
KQorICAgIHRlbXBsYXRlIDxjbGFzcyBfVXAsIGNsYXNzLi4uIF9BcmdzLAorICAgICAgICAgICAg
ICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgICAgICAgICAgICAgICAgICAgICAg
PAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8dmFsdWVf
dHlwZSwgc3RkOjppbml0aWFsaXplcl9saXN0PF9VcD4mLCBfQXJncy4uLj46OnZhbHVlCisgICAg
ICAgICAgICAgICAgICAgICAgPjo6dHlwZQorICAgICAgICAgICAgID4KKyAgICBBTFdBWVNfSU5M
SU5FCisgICAgdm9pZAorICAgIGVtcGxhY2Uoc3RkOjppbml0aWFsaXplcl9saXN0PF9VcD4gX19p
bCwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2FnZWQp
OwotICAgICAgICByZXR1cm4gYXNQdHIoKTsKKyAgICAgICAgKnRoaXMgPSBOdWxsb3B0OworICAg
ICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKSkKKyAgICAgICAg
ICAgIHZhbHVlX3R5cGUoX19pbCwgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKKyAg
ICAgICAgdGhpcy0+X19lbmdhZ2VkXyA9IHRydWU7CiAgICAgfQogCi0gICAgY29uc3QgVCYgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFQmIG9wZXJhdG9yKigpIHsg
cmV0dXJuIHZhbHVlKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FCisgICAgdm9pZAorICAgIHN3YXAo
T3B0aW9uYWwmIF9fb3B0KQorICAgICAgICBub2V4Y2VwdChzdGQ6OmlzX25vdGhyb3dfbW92ZV9j
b25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICBfX2lz
X25vdGhyb3dfc3dhcHBhYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSkKKyAgICB7CisgICAgICAgIHVz
aW5nIHN0ZDo6c3dhcDsKKyAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8gPT0gX19vcHQuX19l
bmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisg
ICAgICAgICAgICAgICAgc3dhcCh0aGlzLT5fX3ZhbF8sIF9fb3B0Ll9fdmFsXyk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdh
Z2VkXykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICA6Om5ldygodm9pZCopc3RkOjph
ZGRyZXNzb2YoX19vcHQuX192YWxfKSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZShX
VEZNb3ZlKHRoaXMtPl9fdmFsXykpOworICAgICAgICAgICAgICAgIHRoaXMtPl9fdmFsXy5+dmFs
dWVfdHlwZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3Zh
bF8pKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlKFdURk1vdmUoX19vcHQuX192YWxf
KSk7CisgICAgICAgICAgICAgICAgX19vcHQuX192YWxfLn52YWx1ZV90eXBlKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzd2FwKHRoaXMtPl9fZW5nYWdlZF8sIF9fb3B0Ll9fZW5nYWdl
ZF8pOworICAgICAgICB9CisgICAgfQogCi0gICAgVCYgdmFsdWUoKQorICAgIEFMV0FZU19JTkxJ
TkUKKyAgICBjb25zdGV4cHIKKyAgICB2YWx1ZV90eXBlIGNvbnN0KgorICAgIG9wZXJhdG9yLT4o
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0
dXJuICphc1B0cigpOworICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFs
IGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250
ZXh0LgorICAgICAgICAvLyBDT05TVEVYUFJfQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzLT5fX2Vu
Z2FnZWRfLCAiT3B0aW9uYWwgb3BlcmF0b3ItPiBjYWxsZWQgZm9yIGRpc2VuZ2FnZWQgdmFsdWUi
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXyk7CiAgICAgfQog
Ci0gICAgY29uc3QgVCYgdmFsdWUoKSBjb25zdAorICAgIEFMV0FZU19JTkxJTkUKKyAgICB2YWx1
ZV90eXBlKgorICAgIG9wZXJhdG9yLT4oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdh
Z2VkKTsKLSAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHRoaXMtPl9fZW5nYWdlZF8sICJPcHRpb25hbCBvcGVyYXRvci0+IGNhbGxlZCBmb3IgZGlz
ZW5nYWdlZCB2YWx1ZSIpOworICAgICAgICByZXR1cm4gc3RkOjphZGRyZXNzb2YodGhpcy0+X192
YWxfKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIFQgdmFsdWVPcihV
JiYgdmFsdWUpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwcgorICAgIGNv
bnN0IHZhbHVlX3R5cGUmCisgICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlm
IChtX2lzRW5nYWdlZCkKLSAgICAgICAgICAgIHJldHVybiAqYXNQdHIoKTsKKyAgICAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4g
YmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAgICAgLy8gQ09OU1RFWFBS
X0FTU0VSVF9XSVRIX01FU1NBR0UodGhpcy0+X19lbmdhZ2VkXywgIk9wdGlvbmFsIG9wZXJhdG9y
KiBjYWxsZWQgZm9yIGRpc2VuZ2FnZWQgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPl9f
dmFsXzsKKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7Cisg
ICAgQUxXQVlTX0lOTElORQorICAgIHZhbHVlX3R5cGUmCisgICAgb3BlcmF0b3IqKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodGhpcy0+X19lbmdhZ2VkXywgIk9wdGlvbmFs
IG9wZXJhdG9yKiBjYWxsZWQgZm9yIGRpc2VuZ2FnZWQgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMtPl9fdmFsXzsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIFQg
dmFsdWVPckNvbXB1dGUoVSBjYWxsYmFjaykgY29uc3QKKyAgICBBTFdBWVNfSU5MSU5FCisgICAg
Y29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdCB7cmV0dXJu
IHRoaXMtPl9fZW5nYWdlZF87fQorCisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwciB2
YWx1ZV90eXBlIGNvbnN0JiB2YWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9pc0Vu
Z2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQg
dW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgICAgIC8vIENPTlNURVhQUl9BU1NFUlQo
IXRoaXMtPl9fZW5nYWdlZF8pOworICAgICAgICByZXR1cm4gdGhpcy0+X192YWxfOworICAgIH0K
IAotICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgdmFs
dWVfdHlwZSYgdmFsdWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPl9fZW5nYWdlZF8p
CisgICAgICAgIHJldHVybiB0aGlzLT5fX3ZhbF87CiAgICAgfQogCi1wcml2YXRlOgotICAgIGNv
bnN0IFQqIGFzUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4o
Jm1fdmFsdWUpOyB9Ci0gICAgVCogYXNQdHIoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFQq
PigmbV92YWx1ZSk7IH0KLSAgICB2b2lkIGRlc3Ryb3koKQorICAgIHRlbXBsYXRlIDxjbGFzcyBf
VXA+CisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwciB2YWx1ZV90eXBlIHZhbHVlX29y
KF9VcCYmIF9fdikgY29uc3QmCiAgICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpIHsKLSAg
ICAgICAgICAgIGFzUHRyKCktPn5UKCk7Ci0gICAgICAgICAgICBtX2lzRW5nYWdlZCA9IGZhbHNl
OwotICAgICAgICB9CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19jb3B5X2NvbnN0cnVj
dGlibGU8dmFsdWVfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICJPcHRpb25h
bDxUPjo6dmFsdWVfb3I6IFQgbXVzdCBiZSBjb3B5IGNvbnN0cnVjdGlibGUiKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnZlcnRpYmxlPF9VcCwgdmFsdWVfdHlwZT46OnZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICJPcHRpb25hbDxUPjo6dmFsdWVfb3I6IFUgbXVzdCBi
ZSBjb252ZXJ0aWJsZSB0byBUIik7CisgICAgICAgIHJldHVybiB0aGlzLT5fX2VuZ2FnZWRfID8g
dGhpcy0+X192YWxfIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx2YWx1ZV90eXBlPihzdGQ6OmZvcndhcmQ8X1VwPihfX3YpKTsKICAgICB9CiAKLSAgICBi
b29sIG1faXNFbmdhZ2VkOwotICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVv
ZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBtX3ZhbHVlOworICAgIHRl
bXBsYXRlIDxjbGFzcyBfVXA+CisgICAgQUxXQVlTX0lOTElORQorICAgIHZhbHVlX3R5cGUgdmFs
dWVfb3IoX1VwJiYgX192KSAmJgorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X21vdmVfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgIk9wdGlvbmFsPFQ+Ojp2YWx1ZV9vcjogVCBtdXN0IGJlIG1vdmUgY29uc3RydWN0aWJs
ZSIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29udmVydGlibGU8X1VwLCB2YWx1
ZV90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIk9wdGlvbmFsPFQ+Ojp2YWx1
ZV9vcjogVSBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIFQiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMt
Pl9fZW5nYWdlZF8gPyBXVEZNb3ZlKHRoaXMtPl9fdmFsXykgOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KHN0ZDo6Zm9yd2FyZDxfVXA+
KF9fdikpOworICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiBy
aHMpCisvLyBDb21wYXJpc29ucyBiZXR3ZWVuIG9wdGlvbmFscwordGVtcGxhdGUgPGNsYXNzIF9U
cD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I9PShjb25zdCBPcHRp
b25hbDxfVHA+JiBfX3gsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feSkKK3sKKyAgICBpZiAoc3Rh
dGljX2Nhc3Q8Ym9vbD4oX194KSAhPSBzdGF0aWNfY2FzdDxib29sPihfX3kpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxib29sPihfX3gpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gKl9feCA9PSAqX195OworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvciE9KGNvbnN0
IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX195KQoreworICAgIHJl
dHVybiAhKF9feCA9PSBfX3kpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lO
TElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8X1RwPiYgX194
LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3kpCit7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxib29s
PihfX3kpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxib29s
PihfX3gpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gKl9feCA8ICpfX3k7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wK
K29wZXJhdG9yPihjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IE9wdGlvbmFsPF9UcD4m
IF9feSkKK3sKKyAgICByZXR1cm4gX195IDwgX194OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
PgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjw9KGNvbnN0IE9wdGlv
bmFsPF9UcD4mIF9feCwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX195KQoreworICAgIHJldHVybiAh
KF9feSA8IF9feCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitj
b25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25z
dCBPcHRpb25hbDxfVHA+JiBfX3kpCit7CisgICAgcmV0dXJuICEoX194IDwgX195KTsKK30KKwor
CisvLyBDb21wYXJpc29ucyB3aXRoIE51bGxvcHQKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdB
WVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8X1Rw
PiYgX194LCBOdWxsb3B0VHlwZSkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gIXN0YXRpY19jYXN0
PGJvb2w+KF9feCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitj
b25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPT0oTnVsbG9wdFR5cGUsIGNvbnN0IE9wdGlvbmFsPF9U
cD4mIF9feCkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KF9feCk7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jv
b2wKK29wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBOdWxsb3B0VHlwZSkgbm9l
eGNlcHQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3Ih
PShOdWxsb3B0VHlwZSwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KSBub2V4Y2VwdAoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihfX3gpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
PgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjwoY29uc3QgT3B0aW9u
YWw8X1RwPiYsIE51bGxvcHRUeXBlKSBub2V4Y2VwdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAor
b3BlcmF0b3I8KE51bGxvcHRUeXBlLCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpIG5vZXhjZXB0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPD0oY29u
c3QgT3B0aW9uYWw8X1RwPiYgX194LCBOdWxsb3B0VHlwZSkgbm9leGNlcHQKK3sKKyAgICByZXR1
cm4gIXN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitB
TFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPD0oTnVsbG9wdFR5cGUsIGNv
bnN0IE9wdGlvbmFsPF9UcD4mIF9feCkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAor
b3BlcmF0b3I+KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgTnVsbG9wdFR5cGUpIG5vZXhjZXB0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPihOdWxs
b3B0VHlwZSwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KSBub2V4Y2VwdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0
ZXhwcgorYm9vbAorb3BlcmF0b3I+PShjb25zdCBPcHRpb25hbDxfVHA+JiwgTnVsbG9wdFR5cGUp
IG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+
CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPj0oTnVsbG9wdFR5cGUs
IGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gIXN0YXRp
Y19jYXN0PGJvb2w+KF9feCk7Cit9CisKKy8vIENvbXBhcmlzb25zIHdpdGggVAordGVtcGxhdGUg
PGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I9PShj
b25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxib29sPihfX3gpID8gKl9feCA9PSBfX3YgOiBmYWxzZTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I9
PShjb25zdCBfVHAmIF9fdiwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihfX3gpID8gKl9feCA9PSBfX3YgOiBmYWxzZTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0
b3IhPShjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxib29sPihfX3gpID8gISgqX194ID09IF9fdikgOiB0cnVlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitv
cGVyYXRvciE9KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpCiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KGxocykgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4ocmhz
KSAmJiAoIXN0YXRpY19jYXN0PGJvb2w+KGxocykgfHwgbGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVl
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihfX3gpID8gISgqX194ID09IF9fdikg
OiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBPcHRpb25hbDxUPiYgbGhzLCBjb25zdCBPcHRpb25hbDxUPiYgcmhzKQordGVt
cGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0
b3I8KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgX1RwJiBfX3YpCiB7Ci0gICAgcmV0
dXJuICEobGhzID09IHJocyk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyBz
dGQ6Omxlc3M8X1RwPnt9KCpfX3gsIF9fdikgOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgb3B0LCBO
dWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhw
cgorYm9vbAorb3BlcmF0b3I8KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxfVHA+JiBf
X3gpCiB7Ci0gICAgcmV0dXJuICFvcHQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9f
eCkgPyBzdGQ6Omxlc3M8X1RwPnt9KF9fdiwgKl9feCkgOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4m
IG9wdCwgTnVsbG9wdFRhZykKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitj
b25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPD0oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25z
dCBfVHAmIF9fdikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0KTsKKyAgICBy
ZXR1cm4gIShfX3ggPiBfX3YpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShOdWxsb3B0VGFnLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQordGVt
cGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0
b3I8PShjb25zdCBfVHAmIF9fdiwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KQogewotICAgIHJl
dHVybiAhb3B0OworICAgIHJldHVybiAhKF9fdiA+IF9feCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KE51bGxvcHRUYWcsIGNvbnN0IE9wdGlv
bmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3Rl
eHByCitib29sCitvcGVyYXRvcj4oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25zdCBfVHAm
IF9fdikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0KTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4oX194KSA/IF9fdiA8IF9feCA6IGZhbHNlOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxU
PiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5M
SU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPihjb25zdCBfVHAmIF9fdiwgY29uc3QgT3B0
aW9uYWw8X1RwPiYgX194KQogewotICAgIHJldHVybiBvcHQgJiYgb3B0LnZhbHVlKCkgPT0gdmFs
dWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyBfX3ggPCBfX3YgOiB0cnVl
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBPcHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBf
VHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPj0oY29uc3QgT3B0
aW9uYWw8X1RwPiYgX194LCBjb25zdCBfVHAmIF9fdikKIHsKLSAgICByZXR1cm4gIShvcHQgPT0g
dmFsdWUpOworICAgIHJldHVybiAhKF9feCA8IF9fdik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBPcHRp
b25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0
ZXhwcgorYm9vbAorb3BlcmF0b3I+PShjb25zdCBfVHAmIF9fdiwgY29uc3QgT3B0aW9uYWw8X1Rw
PiYgX194KQoreworICAgIHJldHVybiAhKF9fdiA8IF9feCk7Cit9CisKKwordGVtcGxhdGUgPGNs
YXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK3ZvaWQKK3N3YXAoT3B0aW9uYWw8X1RwPiYgX194LCBP
cHRpb25hbDxfVHA+JiBfX3kpIG5vZXhjZXB0KG5vZXhjZXB0KF9feC5zd2FwKF9feSkpKQogewot
ICAgIHJldHVybiBvcHQgJiYgb3B0LnZhbHVlKCkgPT0gdmFsdWU7CisgICAgX194LnN3YXAoX195
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVCYgdmFsdWUsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRl
Y2F5PF9UcD46OnR5cGU+CittYWtlT3B0aW9uYWwoX1RwJiYgX192KQogewotICAgIHJldHVybiAh
KHZhbHVlID09IG9wdCk7CisgICAgcmV0dXJuIE9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8
X1RwPjo6dHlwZT4oc3RkOjpmb3J3YXJkPF9UcD4oX192KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1PcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPgotbWFrZU9wdGlv
bmFsKFQmJiB2YWx1ZSkKKy8vIC0tIFdlYktpdCBBZGRpdGlvbnMgLS0KK3RlbXBsYXRlIDxjbGFz
cyBPcHRpb25hbFR5cGUsIGNsYXNzIENhbGxiYWNrPgorQUxXQVlTX0lOTElORQorYXV0byB2YWx1
ZU9yQ29tcHV0ZShPcHRpb25hbFR5cGUgb3B0aW9uYWwsIENhbGxiYWNrIGNhbGxiYWNrKSAtPiB0
eXBlbmFtZSBPcHRpb25hbFR5cGU6OnZhbHVlX3R5cGUKIHsKLSAgICByZXR1cm4gT3B0aW9uYWw8
dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7Cisg
ICAgaWYgKG9wdGlvbmFsKQorICAgICAgICByZXR1cm4gKm9wdGlvbmFsOworICAgIHJldHVybiBj
YWxsYmFjaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAorbmFtZXNwYWNlIHN0ZCB7CisK
K3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgaGFzaDxXVEY6Ok9wdGlvbmFsPF9UcD4gPgor
eworICAgIHR5cGVkZWYgV1RGOjpPcHRpb25hbDxfVHA+IGFyZ3VtZW50X3R5cGU7CisgICAgdHlw
ZWRlZiBzaXplX3QgICAgICAgIHJlc3VsdF90eXBlOworCisgICAgQUxXQVlTX0lOTElORQorICAg
IHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoY29uc3QgYXJndW1lbnRfdHlwZSYgX19vcHQpIGNvbnN0
IG5vZXhjZXB0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX19vcHQp
ID8gaGFzaDxfVHA+KCkoKl9fb3B0KSA6IDA7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
c3RkCisKIHVzaW5nIFdURjo6SW5QbGFjZTsKIHVzaW5nIFdURjo6TnVsbG9wdDsKIHVzaW5nIFdU
Rjo6T3B0aW9uYWw7CiB1c2luZyBXVEY6Om1ha2VPcHRpb25hbDsKLQotI2VuZGlmIC8vIE9wdGlv
bmFsX2gKK3VzaW5nIFdURjo6dmFsdWVPckNvbXB1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDhiZjgyOWRmMGU0OTllZmVkY2E3
MThkNzE3NDQ1ZGYwZGVhNjJiMTcuLjIxOGRlMTZhNjZjMDlhMTVhNDNlYjM0MmM3MzY4MWNjZjg0
Yjc3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2Io
Y29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9ibG9iTG9hZGVyID0geyAqdGhpcyB9OworICAgIG1fYmxv
YkxvYWRlci5lbXBsYWNlKCp0aGlzKTsKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKIAogICAg
IG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBi
bG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApp
bmRleCBhMTM4Njk3ODIxNDAwNzIyZDdlY2EyYzcyNmQ1ODAxYTgzNDFmOTg4Li5lMzgwNWU4ZTEy
NzlhYjUxMmFhYjIzODBiNGUwZDkxMjhkOGNkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC04NCw2ICs4NCw4IEBAIGNsYXNzIEZldGNo
Qm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0CiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBGZXRjaExvYWRlckNs
aWVudCB7CiAgICAgICAgIEJsb2JMb2FkZXIoRmV0Y2hCb2R5T3duZXImKTsKIAorICAgICAgICB2
b2lkIHN3YXAoQmxvYkxvYWRlciYpOworCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQ
SQogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpIGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCAwMmUz
MTM1MGYyNmUwYzliMTg1MjRjZDQyNDlkYmI4NjcyNDI3Njk3Li44NmUyNGFkOTQ0ZDU4MzFkNGYy
NzI4NWRlMTQwYjM3M2Y4MDU1MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEZldGNoUmVzcG9u
c2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYg
cmVxdWVzdAogICAgIC8vIFNldHRpbmcgcGVuZGluZyBhY3Rpdml0eSB1bnRpbCBCb2R5TG9hZGVy
IGRpZEZhaWwgb3IgZGlkU3VjY2VlZCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgcmVzcG9uc2Ut
PnNldFBlbmRpbmdBY3Rpdml0eShyZXNwb25zZS5wdHIoKSk7CiAKLSAgICByZXNwb25zZS0+bV9i
b2R5TG9hZGVyID0gQm9keUxvYWRlcihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShwcm9taXNlKSk7
CisgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlci5lbXBsYWNlKHJlc3BvbnNlLmdldCgpLCBXVEZN
b3ZlKHByb21pc2UpKTsKICAgICBpZiAoIXJlc3BvbnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNv
bnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gTnVsbG9w
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggOWNmZjdhMmNlZGQ3YTZkNzg5ODQ5YWNlMmIxOGI3
ZDQ2ZGUzMTkwNi4uZGQ5ZjE0ZmZhMTQ5MzYxMWQwMTY2MWJjYTdhN2Y4ODkyOTdhYmRjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VJZGVudGlm
aWVyIHsKICAgICAgICAgdW5zaWduZWQgbWFpbkZyYW1lUHJvdG9jb2xIYXNoID0gU3RyaW5nSGFz
aDo6aGFzaChtX21haW5GcmFtZU9yaWdpbi5wcm90b2NvbCk7CiAgICAgICAgIHVuc2lnbmVkIG1h
aW5GcmFtZUhvc3RIYXNoID0gU3RyaW5nSGFzaDo6aGFzaChtX21haW5GcmFtZU9yaWdpbi5ob3N0
KTsKICAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s3XSA9IHsgbmFtZUhhc2gs
IG9wZW5pbmdQcm90b2NvbEhhc2gsIG9wZW5pbmdIb3N0SGFzaCwgbV9vcGVuaW5nT3JpZ2luLnBv
cnQudmFsdWVPcigwKSwgbWFpbkZyYW1lUHJvdG9jb2xIYXNoLCBtYWluRnJhbWVIb3N0SGFzaCwg
bV9tYWluRnJhbWVPcmlnaW4ucG9ydC52YWx1ZU9yKDApIH07CisgICAgICAgIHVuc2lnbmVkIGhh
c2hDb2Rlc1s3XSA9IHsgbmFtZUhhc2gsIG9wZW5pbmdQcm90b2NvbEhhc2gsIG9wZW5pbmdIb3N0
SGFzaCwgbV9vcGVuaW5nT3JpZ2luLnBvcnQudmFsdWVfb3IoMCksIG1haW5GcmFtZVByb3RvY29s
SGFzaCwgbWFpbkZyYW1lSG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQudmFsdWVfb3Io
MCkgfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFz
aENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggMWM0NDBiOGE2NmNhNmRjMDUwZDEyY2Mx
MTk2NWE2ODEwNjI2OGU5OS4uZjYyYWRiYmZjZDM1Mzc0NDgzNDQyZWRhYzNkODIxMWUwYjU3NGRi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJ
REJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnQKICAgICBpZiAodmVy
c2lvbiAmJiAhdmVyc2lvbi52YWx1ZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCBBU0NJSUxpdGVyYWwoIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCB3aXRoIGEgdmVy
c2lvbiBvZiAwIikgfTsKIAotICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwg
dmVyc2lvbi52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5h
bWUsIHZlcnNpb24udmFsdWVfb3IoMCkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRC
UmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNl
bmRlci5jcHAKaW5kZXggZjdiYzdkMzljZGNlYTRlNjRjNDVkYjg0M2JhNWQzOTAxYTUzNTJjMy4u
Y2MxMjk3YTc1ZjQyYjAzY2UxMDNhNzI3ZDZlNzRiMGY5ZTg2OTM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC05
Nyw4ICs5Nyw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYo
Y29uc3QgU3RyaW5nJiB0b25lcywgT3B0aW9uYWw8aW50PiBkCiAgICAgaWYgKGludGVyVG9uZUdh
cCAmJiBpbnRlclRvbmVHYXAudmFsdWUoKSA8IG1pbkludGVyVG9uZUdhcE1zKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCi0gICAgbV9kdXJhdGlvbiA9IGR1cmF0
aW9uLnZhbHVlT3IoZGVmYXVsdFRvbmVEdXJhdGlvbk1zKTsKLSAgICBtX2ludGVyVG9uZUdhcCA9
IGludGVyVG9uZUdhcC52YWx1ZU9yKGRlZmF1bHRJbnRlclRvbmVHYXBNcyk7CisgICAgbV9kdXJh
dGlvbiA9IGR1cmF0aW9uLnZhbHVlX29yKGRlZmF1bHRUb25lRHVyYXRpb25Ncyk7CisgICAgbV9p
bnRlclRvbmVHYXAgPSBpbnRlclRvbmVHYXAudmFsdWVfb3IoZGVmYXVsdEludGVyVG9uZUdhcE1z
KTsKIAogICAgIGlmICghbV9oYW5kbGVyLT5pbnNlcnREVE1GKHRvbmVzLCBtX2R1cmF0aW9uLCBt
X2ludGVyVG9uZUdhcCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDI0MTI3MWY2
NjhiNWRmZDhjZjhmMDBlYWM3NTViYzgzZTJiNzdlNWEuLmY3ZjZiZmRmZjVjY2Y4MmRlZGVkZjc4
N2M2NmU0MDRkNTI4OTM5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oCkBAIC0yMDIsMTEgKzIwMiwxNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWU+CiBj
bGFzcyBET01Qcm9taXNlIHsKIHB1YmxpYzoKICAgICBET01Qcm9taXNlKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgZ2VuZXJpY1Byb21pc2UpIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShnZW5l
cmljUHJvbWlzZSkpIHsgfQorICAgIERPTVByb21pc2UoY29uc3QgRE9NUHJvbWlzZSYgb3RoZXIp
CisgICAgICAgIDogbV9wcm9taXNlRGVmZXJyZWQob3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29w
eVJlZigpKQorICAgIHsKKyAgICB9CisgICAgRE9NUHJvbWlzZShET01Qcm9taXNlJiYpID0gZGVm
YXVsdDsKIAotICAgIERPTVByb21pc2UoRE9NUHJvbWlzZSYmIHByb21pc2UpIDogbV9wcm9taXNl
RGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVycmVkKSkgeyB9Ci0KLSAgICBE
T01Qcm9taXNlKGNvbnN0IERPTVByb21pc2UmKSA9IGRlZmF1bHQ7Ci0gICAgRE9NUHJvbWlzZSYg
b3BlcmF0b3I9KERPTVByb21pc2UgY29uc3QmKSA9IGRlZmF1bHQ7CisgICAgRE9NUHJvbWlzZSYg
b3BlcmF0b3I9KERPTVByb21pc2Ugb3RoZXIpCisgICAgeworICAgICAgICBzd2FwKG90aGVyKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFt
ZSBQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFZhbHVlPjo6VHlwZSB2YWx1ZSkgeyBtX3Byb21pc2VE
ZWZlcnJlZC0+cmVzb2x2ZSh2YWx1ZSk7IH0KIApAQCAtMjE1LDYgKzIyMSwxMSBAQCBjbGFzcyBE
T01Qcm9taXNlIHsKICAgICBKU0M6OkpTVmFsdWUgcHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7IH07CiAKIHByaXZhdGU6CisgICAgdm9pZCBzd2Fw
KERPTVByb21pc2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpzd2FwKG1fcHJvbWlzZURl
ZmVycmVkLCBvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7CisgICAgfQorCiAgICAgUmVmPERlZmVy
cmVkUHJvbWlzZT4gbV9wcm9taXNlRGVmZXJyZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4
IGVkMTg2ZDcyMjdlY2UwN2I3MzJlMjE1N2UwYzExNjczOGYyZjc2YmYuLjJhNjZkMTk0N2FkZWM2
ZWExZDZmN2QwZGM4OGZmMjdhYWMzNGJkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0ZXJz
Lmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CisgICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0
ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJ
ZGVudGlmaWVyLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAoIXJlc3VsdCkgewogICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDQ5MmM3NTQ3ZTg4
MjkyYWQ0ZDkxYTgwZDYyYzkwZWU5YjkzYTFiZDMuLmY3ZDU5ZjdmYWFlNzQxYWZiZTk0YjM1ZGFi
Njg4OWEzZGZmZDQ0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cApAQCAtODM2LDcgKzgzNiw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1
ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uCiAKIGRvdWJsZSBD
U1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoVW5pdFR5cGVzIHVuaXRUeXBlKSBjb25zdAog
ewotICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZU9yKDApOwor
ICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZV9vcigwKTsKIH0K
IAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggYWZhMzY2NjRiMjQ2NDFhNzYzZTQ4ZjJkMjg3
Y2MxZjVhZDE4YzVjZS4uYjZiYTIyMWQyNmRiZjc3MWQ0NTI1MzE4ZTNkMjAzMmQzZmE3ZTM0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIEV4
Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVj
dG9yLCBjb25zdCBTdHJpbmcmIHN0CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAgICAg
IHRleHQuYXBwZW5kKCcgJyk7CiAgICAgdGV4dC5hcHBlbmQoJ30nKTsKLSAgICBhdXRvIGluc2Vy
dFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVPcihs
ZW5ndGgoKSkpOworICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dC50
b1N0cmluZygpLCBpbmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOwogICAgIGlmIChpbnNlcnRSdWxl
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gaW5zZXJ0UnVsZVJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggM2M3Yzhk
MTViNGQxM2Q1MThjYjM4ZGZiOWNlYjQxNTJjZTY2ZTc2YS4uMzVkMmNmNjUxMmI2YWJjZDU3Y2Fh
N2RlNzAwZTdkODk2N2VmODQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjg3LDcgKzY4
Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50
ZXJJZk5vdFZpc2libGUpCiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsQnkoY29uc3QgU2Nyb2xsVG9P
cHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFs
dWVPcigwKSwgb3B0aW9ucy50b3AudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHNjcm9sbEJ5KG9w
dGlvbnMubGVmdC52YWx1ZV9vcigwKSwgb3B0aW9ucy50b3AudmFsdWVfb3IoMCkpOwogfQogCiBz
dGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxpemVOb25GaW5pdGVWYWx1ZShkb3VibGUgZikKQEAg
LTMwMjgsNyArMzAyOCw3IEBAIFVSTCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiBpbnQgRWxlbWVudDo6Z2V0SW50ZWdy
YWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkp
LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3Jh
bEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUp
CkBAIC0zMDM4LDcgKzMwMzgsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZQogCiB1bnNpZ25l
ZCBFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7CisgICAg
cmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSkpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldFVuc2lnbmVkSW50ZWdy
YWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgdW5zaWduZWQg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggZjE3MDAx
ZmIyNjliYmMxOWJjODYyNzRlNTdmMmQ1NWFmMWM2ZGY0ZC4uMzI1NTc5ZGNjNDMwZjdmYWZkNzAx
OThjMmRlOGM3ZTcxMGM2ZGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmNwcApAQCAtODAsOSArODAsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNdXRhdGlvbk9ic2VydmVy
OjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IEluaXQmIGluaXQpCiAgICAgICAgIG9wdGlvbnMg
fD0gQ2hpbGRMaXN0OwogICAgIGlmIChpbml0LnN1YnRyZWUpCiAgICAgICAgIG9wdGlvbnMgfD0g
U3VidHJlZTsKLSAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkK
KyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAg
IG9wdGlvbnMgfD0gQXR0cmlidXRlT2xkVmFsdWU7Ci0gICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0
YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQorICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRW
YWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9s
ZFZhbHVlOwogCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGF0dHJpYnV0ZUZpbHRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCBlYzdjYzQxMDQxMjM1YWY1ZmNiOTk2
MTg0Nzc2OWQzZTU3ZjhhMTE0Li5hNDI3ZDBiMzA0ZmY2NDZjZTJiMTllMGE0YTNkMWE4ZDQ2YmJi
MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBAIC0xNDIsNyArMTQyLDcg
QEAgRXhjZXB0aW9uT3I8Ym9vbD4gRE9NVG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0b2tlbiwgT3B0aW9uYWw8Ym9vbD4KICAgICBhdXRvJiB0b2tlbnMgPSB0aGlzLT50b2tl
bnMoKTsKIAogICAgIGlmICh0b2tlbnMuY29udGFpbnModG9rZW4pKSB7Ci0gICAgICAgIGlmICgh
Zm9yY2UudmFsdWVPcihmYWxzZSkpIHsKKyAgICAgICAgaWYgKCFmb3JjZS52YWx1ZV9vcihmYWxz
ZSkpIHsKICAgICAgICAgICAgIHRva2Vucy5yZW1vdmVGaXJzdCh0b2tlbik7CiAgICAgICAgICAg
ICB1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2VucygpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
ZjQwM2YyMzA1MWIwMjA2YTIzZTNiODY1N2M3NTNlMDcwYjcyYTk3ZS4uYjVkMWJjMzNlYzFhZWIz
NzY1YjUzZTE3NzRkNTZjNThlYzM1NGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OmlzRW1wdHlWYWx1ZSgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aEF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICB1bnNp
Z25lZCBvbGRFZmZlY3RpdmVNYXhMZW5ndGggPSBlZmZlY3RpdmVNYXhMZW5ndGgoKTsKLSAgICBp
bnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUp
LnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgaWYgKG9sZEVmZmVjdGl2
ZU1heExlbmd0aCAhPSBlZmZlY3RpdmVNYXhMZW5ndGgoKSkKICAgICAgICAgdXBkYXRlVmFsdWVJ
Zk5lZWRlZCgpOwogCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkK
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBB
dG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGludCBvbGRNaW5MZW5ndGggPSBtaW5MZW5n
dGgoKTsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVn
ZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgaWYg
KG9sZE1pbkxlbmd0aCAhPSBtaW5MZW5ndGgoKSkKICAgICAgICAgdXBkYXRlVmFsdWVJZk5lZWRl
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRl
eCAxZmRiYzUxODRhYjY3NmM1MzVkNTJlNDJkMGVjMzA5NjQwNTJlNDY0Li5iY2ViNTlhNmY4NTll
NWUwYTY0YjYzOWJmNWExMzIyOWM1MmU5YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTIwNSwxMyArMjA1LDEzIEBAIHZvaWQgSFRNTFRleHRB
cmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljCiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewotICAgIGludGVybmFsU2V0
TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigt
MSkpOworICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiB2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRl
cm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZh
bHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggMjVkOWIyYmU2ZjlmMzUzZjA5MzlmZWVjOGYyYTJiOWEzMGI5ZGY1MS4uN2E3ZTcxODVlYmE2
MjdjYmFjNjgxY2IxZmY5NjdiOTRiYTliNGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xMTE1LDcg
KzExMTUsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aElu
dGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgsCiAgICAgaWYgKCFzdGF0ZSgpLmhhc0lu
dmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9p
bnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBGbG9h
dFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogCiAg
ICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zp
bml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEx
MzEsNyArMTEzMSw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5T
dHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4CiAgICAgaWYgKCFzdGF0ZSgp
Lmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZs
b2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAg
ICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkp
OwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6
aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCAz
ZTc5ODlkN2NhY2YxYmRiMTczNjdjOGRhODdkYmVjM2IxMGY3YWFmLi4wYmM4YjA3OWM0OGNmYTdk
NmQyZTBiMTAxOWU1NjgyNzc1OWVkY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0xNTQsNyArMTU0LDcgQEAgaW5saW5lIHVuc2lnbmVk
IGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBkZWZh
dWx0VmFsdWUKIGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZShTdHJp
bmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAwKQogewogICAgIEFT
U0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7Ci0gICAgdW5z
aWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZh
bHVlT3IoZGVmYXVsdFZhbHVlKTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSkudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKICAgICBB
U1NFUlQodmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CiAgICAgcmV0dXJuIHZh
bHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCAxMWE0OGQ3M2NhMzc4ZmI1NGE4ZWVkZDg4ZTZjNzY4YTIzZjkwZTEy
Li5iYWUxZmIyOTZhODJjYTQwN2RjMmQyZjE1ZDEyNjBlYjM0MmU3YmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTU3
LDcgKzE1Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KFJlc291cmNlUmVxdWVzCiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBpZiAobV9hc3luYykgewotICAgICAgICBt
X3ByZWZsaWdodENoZWNrZXIgPSBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIoKnRoaXMsIFdU
Rk1vdmUocmVxdWVzdCkpOworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIuZW1wbGFjZSgqdGhp
cywgV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlci0+c3RhcnRQ
cmVmbGlnaHQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IGI5ZWY2ZTA5ZTdiMzgwMDc5Y2U4ZTdjNzFmYTZkZmNlMWQzMDM2
MGYuLmE5OGFkYmZkNDIyZTM5OTZiODgxY2Q0ZTNiNzA2NzQyMWZhNDNkMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QpCiAK
IHZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgTG9ja0hpc3RvcnkgbG9j
a0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxk
U2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBPcHRpb25hbDxOZXdGcmFtZU9wZW5l
clBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlKQogewotICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0g
b3BlbmVyUG9saWN5LnZhbHVlT3Ioc2hvdWxkU2VuZFJlZmVycmVyID09IE5ldmVyU2VuZFJlZmVy
cmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFtZU9wZW5lclBvbGlj
eSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5k
UmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5l
clBvbGljeTo6QWxsb3cpOwogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QobV9mcmFt
ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgcGFz
c2VkVGFyZ2V0LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJl
ZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgbmV3RnJhbWVPcGVuZXJQ
b2xpY3ksIERvTm90UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBkb3dubG9hZEF0dHJpYnV0ZSksIHRyaWdnZXJpbmdFdmVudCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAzYTJmNzU5MDM3NTk2N2ZkYmVkNzFk
MGU0MjNiMmQ3Mjc4MzJkMmFjLi45MTBhNTBiNzdhZjAzZGUyNzNjMzE5MGNlNjc4MzdjYmU3N2M5
ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDk1LDcgKzE0OTUsNyBAQCBk
b3VibGUgRE9NV2luZG93OjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKIAogdm9pZCBET01XaW5k
b3c6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucykgY29uc3QKIHsKLSAg
ICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlT3IoMCksIG9wdGlvbnMudG9wLnZh
bHVlT3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVfb3IoMCks
IG9wdGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5
KGRvdWJsZSB4LCBkb3VibGUgeSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKaW5kZXggZTM1YTIzN2U0ZDgzM2M1MmM1MDBlZjY1ZDhmNTBjZjI1MDRmZDI0My4uMWNj
NzhlNmY1Y2E1YWU2NmY0NWZiY2QzMTVhYjMzZTkzZjQ5MmM4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCBTdHJpbmcgU2VjdXJpdHlP
cmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlbmNvZGVG
b3JGaWxlTmFtZShtX2hvc3QpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZXBhcmF0b3JD
aGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKG1fcG9ydC52YWx1ZU9y
KDApKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWVfb3IoMCkp
OwogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBiNWQ4OTliZWExZWI4MTVjYjAz
MGVhMGMyMDQ5MTcyZWE3OTM0NmUyLi4xOTg3YmNiMDk2ZWM3OGRjNmJkY2ZiOTVhMzBlN2U4YzNm
MWM0YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYKICNpZiAhTE9HX0RJU0FCTEVE
CiBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAiOiIsIFN0cmluZzo6bnVt
YmVyKHBvcnQudmFsdWVPcigwKSkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAi
Oi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlX29yKDApKSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhh
c2guaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5kZXggNTBl
YjI5NTZmMjNiN2NmMTJlY2I5MGNmNzZmZDhiOTgxZWEzYjU1YS4uYjdhNWFlZmVkYTFiNmRlZmQ3
MmE5YmU3YzZiYTIwNjJlMWJkMmQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luSGFzaC5oCkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkhhc2ggewog
ICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAgICAgICBvcmlnaW4tPnBy
b3RvY29sKCkuaW1wbCgpID8gb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKS0+aGFzaCgpIDogMCwK
ICAgICAgICAgICAgIG9yaWdpbi0+aG9zdCgpLmltcGwoKSA/IG9yaWdpbi0+aG9zdCgpLmltcGwo
KS0+aGFzaCgpIDogMCwKLSAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlT3IoMCkKKyAg
ICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApCiAgICAgICAgIH07CiAgICAgICAg
IHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hD
b2Rlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAppbmRleCA3
Yzc2YWUxMjgyMDhmODQzY2U3MjdkNGM2ZTFiNGE2ZTM2Yjk1ZjUzLi5lNmQ4NjhjMGRjMDY5NmNl
OTVlODUyODgwYTM2N2M0ODYwMWJkYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd0ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcApAQCAtMTU4LDggKzE1OCw4IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVh
dHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvCiAgICAg
ZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgZmVhdHVyZXMuZGlhbG9n
ID0gdHJ1ZTsKIAotICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAi
ZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSkudmFsdWVPcig2
MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1h
Y0lFCi0gICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9n
aGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZU9yKDQ1MCk7
IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUK
KyAgICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRo
IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlX29yKDYyMCk7IC8vIGRl
ZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBm
bG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAx
MDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlX29yKDQ1MCk7IC8vIGRlZmF1
bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKIAogICAgIGZl
YXR1cmVzLndpZHRoID0gd2lkdGg7CiAgICAgZmVhdHVyZXMuaGVpZ2h0ID0gaGVpZ2h0OwpAQCAt
MTY3LDE2ICsxNjcsMTYgQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25z
dCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJlcy54
ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVmdCIsIHNjcmVlbkF2YWlsYWJs
ZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFgoKSAtIHdpZHRoKTsKICAgICBmZWF0
dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9ndG9wIiwgc2NyZWVuQXZh
aWxhYmxlUmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WSgpIC0gaGVpZ2h0KTsKIAot
ICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRlciIpLnZhbHVlT3IodHJ1ZSkp
IHsKKyAgICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZV9vcih0
cnVlKSkgewogICAgICAgICBpZiAoIWZlYXR1cmVzLngpCiAgICAgICAgICAgICBmZWF0dXJlcy54
ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC54KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgp
IC0gd2lkdGgpIC8gMjsKICAgICAgICAgaWYgKCFmZWF0dXJlcy55KQogICAgICAgICAgICAgZmVh
dHVyZXMueSA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgKHNjcmVlbkF2YWlsYWJsZVJlY3Qu
aGVpZ2h0KCkgLSBoZWlnaHQpIC8gMjsKICAgICB9CiAKLSAgICBmZWF0dXJlcy5yZXNpemFibGUg
PSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIpLnZhbHVlT3IoZmFsc2UpOwot
ICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAs
ICJzY3JvbGwiKS52YWx1ZU9yKHRydWUpOwotICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUg
PSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlT3IoZmFsc2UpOworICAg
IGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVzaXphYmxl
IikudmFsdWVfb3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9v
bEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZV9vcih0cnVlKTsKKyAgICBmZWF0
dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMi
KS52YWx1ZV9vcihmYWxzZSk7CiAKICAgICByZXR1cm4gZmVhdHVyZXM7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggYWU5NzUx
OGIxNjllMTAxYzdiZmVjMTgzMDI4ODMxMDMwYTgyZTZiOC4uMWEzYjYzZjU1MzgwNDRiZmM5M2Vj
ZDFkMDNlMWI2YjRmOGJlZTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIGZsb2F0IEZvbnRDYXNj
YWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSAmJiBjdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gPT0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkp
OworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsK
IAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJ
WE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMg
d2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1
MApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgaWYgKGlz
TG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIGRl
c3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3Rp
bmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKIAogICAgIENvZGVQYXRoIGNvZGVQ
YXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29k
ZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdh
dHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApAQCAtNDkyLDcgKzQ5Miw3IEBA
IGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQm
IHdpZHRoKSBjb25zdAogCiB2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2ln
bmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0
aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBjb2Rl
UGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNv
ZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGln
YXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggODk4ZDY1YmQ1MjRlZTYz
NTZmMjlhMDMwNWM4OGZlMTAxMGM2YzdiYy4uZmYwOTViNTIxOWZhYTMzYzFiNjIyMWRmYWQ1Y2U1
MGNlZDBjMDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCBJbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1
bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRgog
ICAgIGlmIChtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0
eSgpKSB7CiAgICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0u
bWFwUXVhZChGbG9hdFF1YWQoc2hhZG93ZWRSZWN0KSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUG9s
eWdvbi5tb3ZlKG1fb2Zmc2V0KTsKLSAgICAgICAgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdv
bikuYm91bmRpbmdCb3goKTsKKyAgICAgICAgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24p
LmJvdW5kaW5nQm94KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5ZXJSZWN0ID0gc2hhZG93
ZWRSZWN0OwogICAgICAgICBsYXllclJlY3QubW92ZShtX29mZnNldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCA1MzI0YzIwOGNiMThkYTg3ZDFlMjhhMDQwOGUxOTg2ZjkxNTE4MmZhLi5i
YzFkMDBmNDVmMzZjMjE3NTk1MjA4ODc2ZWU2OTk5ZDk4MDg0YWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTIzNTIsNyArMjM1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIEZs
b2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdEltYWdlLmdldCgp
KSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwogICAgIEFmZmluZVRyYW5z
Zm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJsZWRWaWRlb1RyYWNrIHByZWZlcnJlZFRy
YW5zZm9ybV07Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KG91dHB1
dFJlY3QpOworICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QgPSB2aWRlb1RyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qob3V0cHV0
UmVjdCk7CiAKICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CiAgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCks
IHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZmE3Y2I3MWY0
MWE4YTI1OGVmMGU0ZDYwMDljMmNkNzZjYjNlYzBkOC4uYTAxYmRlOTUyMjAwZmI1ODkyZDA2NGI3
MDljYTNjMGFjZWEwYTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNlZWtUb1RpbWUoTWVkaWFUaW1lIHRpbWUpCiAKIEZs
b2F0U2l6ZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUoKQogewotICAg
IHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVPcihGbG9hdFNpemUoKSk7CisgICAgcmV0dXJuIG1f
Y2FjaGVkU2l6ZS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMoaW50IHRyYWNrSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIu
aAppbmRleCAyNWE1ZGJiMTI2MTgzNDc1M2Q1NDc2ODg5MDg0MDViZmY3MDIwOThjLi4zYWZmZDQy
MWUwZTNkNzMxODdmMmUzNDI3ZmI2ZDRmMTNlYjU4NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
Y2xhc3MgRmlsdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyPiB7CiAgICAgdm9pZCBzZXRG
aWx0ZXJTY2FsZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KIAogICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX2Fic29sdXRlVHJhbnNmb3JtOyB9Ci0gICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50
VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBtX2Fi
c29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludCk7IH0KKyAgICBGbG9hdFBvaW50IG1hcEFic29sdXRlUG9pbnRUb0xvY2FsUG9p
bnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2lu
dCk7IH0KIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTW9kZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4OTVkMzdmMzljZjA1NzJmNWQ0OTZlMGVi
NjBhYmIxZjI5MDZmYTVjLi40OTEwY2YwYWM3ZTJkODc2MDAxOThiODQ5NWU1OGQ3M2Y4YTE1MmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0
IFRleHR1cmVNYXBwZXJQYWluCiAgICAgICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcmVw
bGljYU9wdGlvbnMob3B0aW9ucyk7CiAgICAgICAgIHJlcGxpY2FPcHRpb25zLnRyYW5zZm9ybQog
ICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFu
c2Zvcm0uY29tYmluZWQoKSkKLSAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zv
cm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7
CisgICAgICAgICAgICAubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICAgICAgcGFpbnRT
ZWxmQW5kQ2hpbGRyZW4ocmVwbGljYU9wdGlvbnMpOwogICAgIH0KIApAQCAtMjMwLDcgKzIzMCw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRlZE9wYWNpdHkoZmxvYXQgb3Bh
Y2l0eSkKIAogVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlckxheWVyOjpyZXBsaWNh
VHJhbnNmb3JtKCkKIHsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0ZS5y
ZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBseShtX2N1
cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKSk7CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fc3RhdGUucmVw
bGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSkubXVsdGlwbHkobV9jdXJy
ZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkRmls
dGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQpAQCAtNzMxLDcgKzczMSw3IEBA
IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpmaW5kU2Nyb2xsYWJsZUNv
bnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hCiBGbG9hdFNpemUgVGV4dHVyZU1hcHBlckxheWVyOjpt
YXBTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCiB7CiAgICAgZG91YmxlIHpl
cm9YLCB6ZXJvWSwgb2Zmc2V0WCwgb2Zmc2V0WTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVP
cihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFu
c2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVfb3Io
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgdHJhbnNmb3JtLm1hcCgwLCAwLCB6ZXJvWCwg
emVyb1kpOwogICAgIHRyYW5zZm9ybS5tYXAob2Zmc2V0LndpZHRoKCksIG9mZnNldC5oZWlnaHQo
KSwgb2Zmc2V0WCwgb2Zmc2V0WSk7CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShvZmZzZXRYIC0gemVy
b1gsIG9mZnNldFkgLSB6ZXJvWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDc0OGFkOGU5ZTM4MGEzZWU3MmE2YTAy
MTU4MjRlZjhkNDE3ZWMzMTAuLjQ2MmI2MmVkNDc3N2JmNjM1N2Q1NDQzNGE4MWVlNWZmYTgzMjlh
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgSW50UmVjdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIC8vIFJldHVybiBhIHByb2pl
Y3Rpb24gb2YgdGhlIHZpc2libGUgcmVjdCAoc3VyZmFjZSBjb29yZGluYXRlcykgb250byB0aGUg
bGF5ZXIncyBwbGFuZSAobGF5ZXIgY29vcmRpbmF0ZXMpLgogICAgIC8vIFRoZSByZXN1bHRpbmcg
cXVhZCBtaWdodCBiZSBzcXVld2VkIGFuZCB0aGUgdmlzaWJsZSByZWN0IGlzIHRoZSBib3VuZGlu
ZyBib3ggb2YgdGhpcyBxdWFkLAogICAgIC8vIHNvIGl0IG1pZ2h0IHNwcmVhZCBmdXJ0aGVyIHRo
YW4gdGhlIHJlYWwgdmlzaWJsZSBhcmVhIChhbmQgdGhlbiBldmVuIG1vcmUgYW1wbGlmaWVkIGJ5
IHRoZSBjb3ZlciByZWN0IG11bHRpcGxpZXIpLgotICAgIEFTU0VSVChtX2NhY2hlZEludmVyc2VU
cmFuc2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBBU1NFUlQobV9jYWNoZWRJbnZlcnNlVHJh
bnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVfb3Io
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgIEZsb2F0UmVjdCByZWN0ID0gbV9jYWNoZWRJ
bnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKG1f
Y29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwogICAgIGNsYW1wVG9Db250ZW50
c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHNpemUoKSk7CiAgICAgcmV0dXJuIGVuY2xvc2lu
Z0ludFJlY3QocmVjdCk7CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1fbGF5ZXJU
cmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0oKSk7CiAgICAg
bV9sYXllclRyYW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJlbnQoKSA/IGRvd25jYXN0PENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKnBhcmVudCgpKS5tX2xheWVyVHJhbnNmb3JtLmNvbWJp
bmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCi0gICAgbV9jYWNo
ZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2Uo
KS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG1fY2FjaGVkSW52ZXJzZVRy
YW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVfb3Io
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAvLyBUaGUgY29tYmluZWQgdHJhbnNmb3Jt
IHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0LgogICAgIHNldE5l
ZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmlu
ZGV4IGU3NjNjYzEzOTNkYmNkZTYxMTMyMTE4ZmZiNDMxOTFjNjQ4ZTQ1ZTQuLmYwZTJkYTMxOTNj
NGU4OTkxMWZmN2ZjYjZkYjhlYTg0NjQ4NzkwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
Y3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVk
UG9pbnQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICBpZiAobV9kaXJlY3Rpb24gPT0gQXBw
bHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNm
b3JtLT5tYXBQb2ludChwb2ludCk7CiAKLSAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9y
bS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50
KHBvaW50LCB3YXNDbGFtcGVkKTsKKyAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+
aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQb2ludChw
b2ludCwgd2FzQ2xhbXBlZCk7CiB9CiAKIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVk
UXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgVHJh
bnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24g
ZGlyZWN0aW9uLCBib29sCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVj
dGlvbikKICAgICAgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm1hcFF1YWQocXVh
ZCk7CiAKLSAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVl
T3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7
CisgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9vcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVhZChxdWFkLCB3YXNDbGFtcGVkKTsKIH0K
IAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHdhc0NsYW1wZWQpCkBAIC0yMzMsNyArMjMzLDcgQEAg
dm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHQsIGJvb2wqIHcKICAgICAgICAgfQogCiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZh
bHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKICAgICAgICAgaWYgKG1fbWFwUG9pbnQpCiAgICAgICAgICAgICBtX2xhc3RQ
bGFuYXJQb2ludCA9IGludmVyc2VUcmFuc2Zvcm0ucHJvamVjdFBvaW50KG1fbGFzdFBsYW5hclBv
aW50KTsKICAgICAgICAgaWYgKG1fbWFwUXVhZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDFmMWMzODA1NTUxMTFm
NDRhMWYxZTdlNmUwMzJhMjczMGRkOTRiZmQuLmIzOGU3MDcyMDIzOGUwYzhlZTdlY2IwZGViOTA2
YzJhMWIyNTY1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q2FjaGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBzdAogICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3IgbGF0ZW5jeSBhcyB0aGF0IGlzIG5v
dCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UuCiAgICAgYXV0byBkYXRlVmFsdWUgPSBy
ZXNwb25zZS5kYXRlKCk7CiAgICAgYXV0byBhcHBhcmVudEFnZSA9IGRhdGVWYWx1ZSA/IHN0ZDo6
bWF4KDB1cywgZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KHJlc3BvbnNlVGltZSAtICpkYXRl
VmFsdWUpKSA6IDB1czsKLSAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVP
cigwdXMpOworICAgIGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52YWx1ZV9vcigwdXMp
OwogICAgIGF1dG8gY29ycmVjdGVkSW5pdGlhbEFnZSA9IHN0ZDo6bWF4KGFwcGFyZW50QWdlLCBh
Z2VWYWx1ZSk7CiAgICAgYXV0byByZXNpZGVudFRpbWUgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vj
b25kcz4oc3lzdGVtX2Nsb2NrOjpub3coKSAtIHJlc3BvbnNlVGltZSk7CiAgICAgcmV0dXJuIGNv
cnJlY3RlZEluaXRpYWxBZ2UgKyByZXNpZGVudFRpbWU7CkBAIC0xMjIsNyArMTIyLDcgQEAgc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFt
aWx5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgcmV0dXJuICptYXhBZ2U7CiAKICAgICBhdXRv
IGRhdGUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgYXV0byBlZmZlY3RpdmVEYXRlID0gZGF0ZS52
YWx1ZU9yKHJlc3BvbnNlVGltZSk7CisgICAgYXV0byBlZmZlY3RpdmVEYXRlID0gZGF0ZS52YWx1
ZV9vcihyZXNwb25zZVRpbWUpOwogICAgIGlmIChhdXRvIGV4cGlyZXMgPSByZXNwb25zZS5leHBp
cmVzKCkpCiAgICAgICAgIHJldHVybiBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oKmV4cGly
ZXMgLSBlZmZlY3RpdmVEYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCmluZGV4IDIzYWRjZDM0MzE3MjFkMDY1YmIyMjNlMjY2OGQ4YTA1ZjUyMDI1NTcu
LmY3YWVhODQyNmYyYTEzNjBhN2UzY2E3OGI5MDJmOTRlMDhjNDA0NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwMTcsNyArMTAxNyw3IEBAIGZs
b2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29u
c3QKIAogU3RyaW5nVmlldyBJbmxpbmVUZXh0Qm94OjpzdWJzdHJpbmdUb1JlbmRlcihPcHRpb25h
bDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0aCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5n
VmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0KCksIG92ZXJyaWRpbmdMZW5n
dGgudmFsdWVPcihsZW4oKSkpOworICAgIHJldHVybiBTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4
dCgpKS5zdWJzdHJpbmcoc3RhcnQoKSwgb3ZlcnJpZGluZ0xlbmd0aC52YWx1ZV9vcihsZW4oKSkp
OwogfQogCiBTdHJpbmcgSW5saW5lVGV4dEJveDo6aHlwaGVuYXRlZFN0cmluZ0ZvclRleHRSdW4o
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVu
Z3RoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDUxMWE2YmNj
NTRmYTgxNDk3NGMyMGU2Y2Y4OGQxMzFjMmViODQ2NGYuLjRhYjM4OTM1ZTk0YjhmMzA2MmVlMDlk
M2EyMjI3ZDJhODg5NDBmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
YWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAg
LTEwOSw3ICsxMDksNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKHJlY3QuaXNJ
bmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEZsb2F0UmVjdCB0cmFu
Zm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOworICAgICAgICBGbG9hdFJlY3QgdHJhbmZv
cm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAgIHJlY3Quc2V0TG9jYXRpb24o
TGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkpOwogICAgICAgICByZWN0LnNl
dFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDA2NmNmYjhmYmJkZTU3NWRmNzRkOGEz
ZTljMjg1ZGQzM2JjYWM1NTkuLjRkNGRlODE3OTZhOWE3YmIwMDlkOWQ5ZTA0ZDFjY2IxMDhmZTI3
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yODU2LDcgKzI4
NTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgICAgICBMYXlvdXRVbml0IGhlaWdo
dFJlc3VsdDsKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0KSB7CiAgICAgICAgICAgICBM
YXlvdXRVbml0IGludHJpbnNpY0hlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IC0gYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5s
b2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFsdWVPcihjb21wdXRlZFZhbHVlcy5t
X2V4dGVudCk7CisgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBpbnRy
aW5zaWNIZWlnaHQpLnZhbHVlX29yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKICAgICAgICAg
ICAgIGhlaWdodFJlc3VsdCA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChoZWlnaHRS
ZXN1bHQsIGludHJpbnNpY0hlaWdodCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAv
LyBUaGUgb25seSB0aW1lcyB3ZSBkb24ndCBjaGVjayBtaW4vbWF4IGhlaWdodCBhcmUgd2hlbiBh
IGZpeGVkIGxlbmd0aCBoYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggODJhZGJjZDQxZjA5ODhhOGI0
OWVkZjA5ZWY5MjFlMDdiZjljZDJkNC4uNTYzZTUzNmQ2YTE2NjAyZjRjZTk0NTAzOTY0MGY0MTBm
MmU5YzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFJlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0
Q2hpbGRyZW4pCiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSBvdXIgaGVpZ2h0IGFuZCBvdmVyZmxv
dyBoZWlnaHQuCiAgICAgICAgICAgICBpZiAoc3R5bGUoKS5ib3hBbGlnbigpID09IEJCQVNFTElO
RSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9t
KCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRv
bSgpKTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwogICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGlsZC0+aGVpZ2h0KCkgKyBjaGls
ZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAKQEAgLTUwOCw3ICs1MDgsNyBA
QCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChi
b29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSArPSBjaGls
ZC0+bWFyZ2luVG9wKCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCAoY29udGVudEhlaWdodCgp
IC0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSkgLyAy
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCQkFT
RUxJTkU6IHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+
Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJn
aW5Cb3R0b20oKSk7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hp
bGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQt
Pm1hcmdpbkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5t
YXJnaW5Ub3AoKTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5tYXJnaW5U
b3AoKSArIChtYXhBc2NlbnQgLSBhc2NlbnQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4
IDQ5Y2EyYWNkMjg0YWYxY2QxZjJhNzllYzAyYjc2YTAzODk0MzNkZTIuLjQ0ZjI3YTNkMjI0MDE4
Y2ZhOWU0OWMxZGQ0OTYxYjk0OGFmMjNlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRpYyBpbnQg
c3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBM
aW5lRGlyZWN0aW9uCiAKIGludCBSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0
aW9uTW9kZSkgY29uc3QKIHsKLSAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgp
LnZhbHVlT3Ioc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0aGlzLCBkaXJlY3Rp
b24pKTsKKyAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKHN5
bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7CiAKICAg
ICBpbnQgbWFyZ2luQXNjZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2lu
VG9wKCkgOiBtYXJnaW5SaWdodCgpOwogICAgIHJldHVybiBiYXNlbGluZSArIG1hcmdpbkFzY2Vu
dDsKQEAgLTY4NSw3ICs2ODUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpwcmVm
ZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gmCiAgICAgICAgIEFT
U0VSVChtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNo
aWxkKGNoaWxkKSA+PSAwKTsKICAgICAgICAgcmV0dXJuIG1haW5BeGlzRXh0ZW50IC0gbWFpbkF4
aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOwogICAgIH0KLSAgICByZXR1
cm4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNp
emUsIGZsZXhCYXNpcykudmFsdWVPcigwKTsKKyAgICByZXR1cm4gY29tcHV0ZU1haW5BeGlzRXh0
ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIGZsZXhCYXNpcykudmFsdWVf
b3IoMCk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJdGVtcyhib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIFZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cykKQEAg
LTgyNSw3ICs4MjUsNyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94Ojp1cGRhdGVBdXRvTWFyZ2lu
c0luQ3Jvc3NBeGlzKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaQogCiBMYXlvdXRVbml0IFJl
bmRlckZsZXhpYmxlQm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxk
KQogewotICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52
YWx1ZU9yKGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkKSk7CisgICAgTGF5b3V0VW5pdCBh
c2NlbnQgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNyb3NzQXhpc0V4dGVu
dEZvckNoaWxkKGNoaWxkKSk7CiAgICAgcmV0dXJuIGFzY2VudCArIGZsb3dBd2FyZU1hcmdpbkJl
Zm9yZUZvckNoaWxkKGNoaWxkKTsKIH0KIApAQCAtOTMwLDEyICs5MzAsMTIgQEAgTGF5b3V0VW5p
dCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KGNvbnN0IFJl
bmRlckJveCYgY2hpbGQKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtYXhFeHRlbnQgPSBOdWxs
b3B0OwogICAgIGlmIChtYXguaXNTcGVjaWZpZWRPckludHJpbnNpYygpKSB7CiAgICAgICAgIG1h
eEV4dGVudCA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYXhTaXplLCBt
YXgpOwotICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihjaGlsZFNpemUsIG1heEV4dGVudC52
YWx1ZU9yKGNoaWxkU2l6ZSkpOworICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihjaGlsZFNp
emUsIG1heEV4dGVudC52YWx1ZV9vcihjaGlsZFNpemUpKTsKICAgICB9CiAgICAgCiAgICAgTGVu
Z3RoIG1pbiA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkubWluV2lkdGgoKSA6
IGNoaWxkLnN0eWxlKCkubWluSGVpZ2h0KCk7CiAgICAgaWYgKG1pbi5pc1NwZWNpZmllZE9ySW50
cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIGNvbXB1dGVNYWlu
QXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlT3IoY2hpbGRTaXpl
KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIGNvbXB1dGVNYWluQXhpc0V4
dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlX29yKGNoaWxkU2l6ZSkpOwog
ICAgIAogICAgIGlmICghaXNGbGV4aWJsZUJveEltcGwoKSAmJiBtaW4uaXNBdXRvKCkgJiYgbWFp
bkF4aXNPdmVyZmxvd0ZvckNoaWxkKGNoaWxkKSA9PSBPVklTSUJMRSAmJiAhKGlzQ29sdW1uRmxv
dygpICYmIGlzPFJlbmRlckZsZXhpYmxlQm94PihjaGlsZCkpKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIENTUyBmbGV4Ym94IHNlY3Rpb24gNC41IHdoaWNoIGRl
ZmluZXMgdGhlIG1pbmltdW0gc2l6ZSBvZiAicHVyZSIgZmxleApAQCAtOTQ3LDEzICs5NDcsMTMg
QEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5k
TWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQKICAgICAgICAgQVNTRVJUKGNvbnRlbnRTaXplID49
IDApOwogICAgICAgICBpZiAoY2hpbGQuaGFzQXNwZWN0UmF0aW8oKSAmJiBjaGlsZC5pbnRyaW5z
aWNTaXplKCkuaGVpZ2h0KCkgPiAwKQogICAgICAgICAgICAgY29udGVudFNpemUgPSBhZGp1c3RD
aGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1heChjaGlsZCwgY29udGVudFNp
emUpOwotICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRTaXplLCBtYXhFeHRl
bnQudmFsdWVPcihjb250ZW50U2l6ZSkpOworICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWlu
KGNvbnRlbnRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY29udGVudFNpemUpKTsKICAgICAgICAg
CiAgICAgICAgIExlbmd0aCBtYWluU2l6ZSA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0
eWxlKCkud2lkdGgoKSA6IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCk7CiAgICAgICAgIGlmIChtYWlu
QXhpc0xlbmd0aElzRGVmaW5pdGUoY2hpbGQsIG1haW5TaXplKSkgewogICAgICAgICAgICAgTGF5
b3V0VW5pdCByZXNvbHZlZE1haW5TaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQo
Y2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIG1haW5TaXplKS52YWx1ZSgpOwogICAgICAgICAg
ICAgQVNTRVJUKHJlc29sdmVkTWFpblNpemUgPj0gMCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0
IHNwZWNpZmllZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5TaXplLCBtYXhFeHRlbnQudmFs
dWVPcihyZXNvbHZlZE1haW5TaXplKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHNwZWNpZmll
ZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5TaXplLCBtYXhFeHRlbnQudmFsdWVfb3IocmVz
b2x2ZWRNYWluU2l6ZSkpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwg
c3RkOjptaW4oc3BlY2lmaWVkU2l6ZSwgY29udGVudFNpemUpKTsKICAgICAgICAgfSBlbHNlIGlm
ICh1c2VDaGlsZEFzcGVjdFJhdGlvKGNoaWxkKSkgewogICAgICAgICAgICAgTGVuZ3RoIGNyb3Nz
U2l6ZUxlbmd0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCkg
OiBjaGlsZC5zdHlsZSgpLndpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKaW5kZXggNWYwZGQwNDdiYTkwNzkyZTMxYzQ1ZmZlYTgwMmY3OTY3NDBjZmVhNC4uYjYw
MDJkMmIxMzI1NTg2NzJhYjM3YTc4OWIwZjM4MDIzZDRkODdiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBHcmlkVHJhY2sg
ewogCiAgICAgdm9pZCBzZXRHcm93dGhMaW1pdChMYXlvdXRVbml0IGdyb3d0aExpbWl0KQogICAg
IHsKLSAgICAgICAgbV9ncm93dGhMaW1pdCA9IGdyb3d0aExpbWl0ID09IGluZmluaXR5ID8gZ3Jv
d3RoTGltaXQgOiBzdGQ6Om1pbihncm93dGhMaW1pdCwgbV9ncm93dGhMaW1pdENhcC52YWx1ZU9y
KGdyb3d0aExpbWl0KSk7CisgICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9PSBp
bmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3RoTGlt
aXRDYXAudmFsdWVfb3IoZ3Jvd3RoTGltaXQpKTsKICAgICAgICAgZW5zdXJlR3Jvd3RoTGltaXRJ
c0JpZ2dlclRoYW5CYXNlU2l6ZSgpOwogICAgIH0KIApAQCAtNjg2LDcgKzY4Niw3IEBAIE9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVu
dEhlaWdodFVzaW5nKExlbmd0CiAKICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc0ZpdENv
bnRlbnQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFibGVFeHRlbnQgPSBjb250
YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVy
UGFkZGluZyk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihtX21heENvbnRlbnRIZWlnaHQudmFs
dWVPcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlT3IoMCksIGZpbGxBdmFp
bGFibGVFeHRlbnQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4Q29udGVudEhlaWdo
dC52YWx1ZV9vcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlX29yKDApLCBm
aWxsQXZhaWxhYmxlRXh0ZW50KSk7CiAgICAgfQogCiAgICAgaWYgKGxvZ2ljYWxIZWlnaHRMZW5n
dGguaXNGaWxsQXZhaWxhYmxlKCkpCkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBSZW5kZXJHcmlk
Ojpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGkKIAogICAgIC8vIEdyaWQgZ3V0dGVycyB3ZXJlIHJlbW92ZWQgZnJvbSBmcmVlU3Bh
Y2UgYnkgdGhlIGNhbGxlciAoaWYgZnJlZVNwYWNlIGlzIGRlZmluaXRlKSwKICAgICAvLyBidXQg
d2UgbXVzdCB1c2UgdGhlbSB0byBjb21wdXRlIHJlbGF0aXZlIChpLmUuIHBlcmNlbnRhZ2VzKSBz
aXplcy4KLSAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heChMYXlvdXRVbml0KCksIHNp
emluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKExheW91dFVuaXQoKSkpOworICAgIExh
eW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgc2l6aW5nRGF0YS5hdmFp
bGFibGVTcGFjZSgpLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwogICAgIGNvbnN0IGJvb2wgaGFz
RGVmaW5pdGVGcmVlU3BhY2UgPSBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9PSBUcmFja1Np
emluZzsKIAogICAgIC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQgdHJhY2sgdmFyaWFibGVzLgpA
QCAtMTAyOSwxMyArMTAyOSwxMyBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6Om1pblNpemVGb3JD
aGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3RpbwogICAgIGJvb2wg
b3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCA9IHVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29u
dGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24sIHNpemluZ0RhdGEp
OwogICAgIGlmIChpc1Jvd0F4aXMpIHsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5Mb2dpY2Fs
V2lkdGggPSBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9PSBUcmFja1NpemluZyA/IGNvbXB1
dGVNYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGNoaWxkSW5saW5lRGlyZWN0aW9uLCBjaGlsZCkg
OiBtYXJnaW5JbnRyaW5zaWNMb2dpY2FsV2lkdGhGb3JDaGlsZChjaGlsZCk7Ci0gICAgICAgIHJl
dHVybiBjaGlsZC5jb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5TaXplLCBjaGls
ZE1pblNpemUsIG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGls
ZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24pLnZhbHVlT3IoMCksICp0aGlzLCBudWxscHRyKSArIG1h
cmdpbkxvZ2ljYWxXaWR0aDsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsV2lk
dGhJblJlZ2lvblVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgb3ZlcnJpZGVDb250YWluaW5n
QmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbikudmFs
dWVfb3IoMCksICp0aGlzLCBudWxscHRyKSArIG1hcmdpbkxvZ2ljYWxXaWR0aDsKICAgICB9CiAK
ICAgICBpZiAob3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCAmJiAoZGlyZWN0aW9uICE9IEZvckNvbHVt
bnMgfHwgc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gIT0gSW50cmluc2ljU2l6ZUNvbXB1dGF0
aW9uKSkKICAgICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICBj
aGlsZC5sYXlvdXRJZk5lZWRlZCgpOwotICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgTnVsbG9wdCkudmFsdWVPcigwKSArIGNo
aWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQo
KTsKKyAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBj
aGlsZE1pblNpemUsIE51bGxvcHQpLnZhbHVlX29yKDApICsgY2hpbGQubWFyZ2luTG9naWNhbEhl
aWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogfQogCiBib29sIFJlbmRl
ckdyaWQ6OnVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChS
ZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlk
U2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkgY29uc3QKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQg
UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9yTm9u
U3Bhbm5pbmdJdGVtcyhHcmlkCiAgICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFzTWF4Q29udGVu
dE9yQXV0b01heFRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZ3Jvd3RoTGlt
aXQgPSBtYXhDb250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgc2l6aW5nRGF0YSk7
CiAgICAgICAgIGlmICh0cmFja1NpemUuaXNGaXRDb250ZW50KCkpCi0gICAgICAgICAgICBncm93
dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUu
Zml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNw
YWNlKCkudmFsdWVPcigwKSkpOworICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihn
cm93dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFk
dGgoKS5sZW5ndGgoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDApKSk7
CiAgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0KHN0ZDo6bWF4KHRyYWNrLmdyb3d0aExpbWl0
KCksIGdyb3d0aExpbWl0KSk7CiAgICAgfQogfQpAQCAtMTM4Nyw4ICsxMzg3LDggQEAgc3RhdGlj
IGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRUcmFjayogdHJh
Y2sxLCBjb25zdCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5maW5pdGVHcm93dGhQb3RlbnRp
YWxXaXRob3V0Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENh
cCkKICAgICAgICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91
dENhcDsKIAotICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0aExpbWl0
Q2FwKCkudmFsdWVPcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwotICAgIExheW91dFVuaXQgdHJh
Y2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazItPmdyb3d0
aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0aExp
bWl0Q2FwKCkudmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlvdXRVbml0
IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMi0+
Z3Jvd3RoTGltaXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1pdCAtIHRyYWNrMS0+YmFzZVNp
emUoKSkgPCAodHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXplKCkpOwogfQogCkBAIC0xNDU3
LDcgKzE0NTcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZl
Y3RvcjxHcmlkVHJhY2sqPiYgdHJhY2tzLCBWZWN0b3I8R3JpZAogYm9vbCBSZW5kZXJHcmlkOjp0
cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiB7CiAgICAgY29uc3QgVmVj
dG9yPEdyaWRUcmFjaz4mIHRyYWNrcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzaXpp
bmdEYXRhLmNvbHVtblRyYWNrcyA6IHNpemluZ0RhdGEucm93VHJhY2tzOwotICAgIGNvbnN0IExh
eW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDAp
OworICAgIGNvbnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxlU3Bh
Y2UoKS52YWx1ZV9vcigwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGdy
aWRUcmFja1NpemUoZGlyZWN0aW9uLCBpLCBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbik7CiAg
ICAgICAgIGlmIChjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aCh0cmFja1NpemUsIG1heFNp
emUpID4gdHJhY2tzW2ldLmJhc2VTaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCAyNTk1YzM0MzEyNDEyZDUwODdjYjBjYzIyYzYyMDFiMGQ4OTY2NDFh
Li5mYzk4YTM5YjJjZTBmY2QxNTlkMTI0ZTUxMTYyMjhiN2VmNDgyMTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ0NjMsNyArNDQ2Myw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGggdGhlIHJvb3Qg
bGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4ZWxP
ZmZzZXQgPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBpeGVsU25hcHBl
ZE9mZnNldEZvclRoaXNMYXllcik7Ci0gICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQ
YWludGluZ0luZm8odGhpcywgTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWlu
dGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAorICAgIExheWVy
UGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5j
bG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmlj
ZVNjYWxlRmFjdG9yKSksCiAgICAgICAgIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLCBhZGp1
c3RlZFN1YnBpeGVsT2Zmc2V0LCBwYWludGluZ0luZm8uc3VidHJlZVBhaW50Um9vdCwgcGFpbnRp
bmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMpOwogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJl
ZmxlY3Rpb24oY29udGV4dCwgdHJhbnNmb3JtZWRQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwog
ICAgIGNvbnRleHQuc2V0Q1RNKG9sZFRyYW5zZnJvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggYjcxNjNlNjZiM2M2ZmYxMTg3NzFhYzk4OTA5NzZj
M2IzYmU0NjZmYi4uMzA2YzVhMzk0NmU0M2UyNjgwYjA0Y2U5ZmMzNzZkMWMzOWU1YzM0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMjgxLDcgKzI4
MSw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJvdW5kaW5nQm94UmVjdChjb25z
dCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBQYWludEZ1bmN0aW9uIHBhaW50RnVuY3Rpb24pCiB7CiAgICAgaW50IGxpc3RJdGVtc1NpemUg
PSBudW1JdGVtcygpOwotICAgIGludCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RW
aXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9mZnNldCk7Cisg
ICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRl
UGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7CiAgICAgaW50IGVuZEluZGV4
ID0gZmlyc3RWaXNpYmxlSXRlbSArIG51bVZpc2libGVJdGVtcyhDb25zaWRlclBhZGRpbmc6Olll
cyk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0VmlzaWJsZUl0ZW07IGkgPCBsaXN0SXRlbXNTaXpl
ICYmIGkgPCBlbmRJbmRleDsgKytpKQogICAgICAgICBwYWludEZ1bmN0aW9uKHBhaW50SW5mbywg
cGFpbnRPZmZzZXQsIGkpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6
c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoaW50IGluZGV4KQogCiBib29sIFJlbmRl
ckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZShpbnQgaW5kZXgpCiB7Ci0gICAgaW50IGZpcnN0
SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFs
dWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RJbmRleCA9IG1faW5kZXhPZkZpcnN0
VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsK
ICAgICBpbnQgZW5kSW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGlu
Z0JvdHRvbUFyZWEKICAgICAgICAgPyBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFk
ZGluZ0JvdHRvbUFyZWEudmFsdWUoKSArIG51bWJlck9mVmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90
dG9tKCkKICAgICAgICAgOiBtX2luZGV4T2Zmc2V0ICsgbnVtVmlzaWJsZUl0ZW1zKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRl
eCA3ZDJmYjQzNjI4MTU0Yjk0MjU2NmY5OTc4OWNmNTA4ZjUyYjQ5N2FkLi4yMGNmOWVjMDNmMmU2
YmM5MmUxNzViOTJkMjJkM2I0ZWVmYTBhZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTQxNSw3ICs0MTUsNyBAQCBMYXlv
dXRVbml0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVNYXhDb2x1bW5IZWlnaHQoKSBj
b25zdAogICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0ID0gbXVsdGlDb2x1bW5GbG93VGhy
ZWFkKCktPmNvbHVtbkhlaWdodEF2YWlsYWJsZSgpOwogICAgIExheW91dFVuaXQgbWF4Q29sdW1u
SGVpZ2h0ID0gYXZhaWxhYmxlSGVpZ2h0ID8gYXZhaWxhYmxlSGVpZ2h0IDogUmVuZGVyRmxvd1Ro
cmVhZDo6bWF4TG9naWNhbEhlaWdodCgpOwogICAgIGlmICghbXVsdGljb2xTdHlsZS5sb2dpY2Fs
TWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3Rk
OjptaW4obWF4Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2lj
YWxIZWlnaHQoTWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIE51bGxv
cHQpLnZhbHVlT3IobWF4Q29sdW1uSGVpZ2h0KSk7CisgICAgICAgIG1heENvbHVtbkhlaWdodCA9
IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRM
b2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBO
dWxsb3B0KS52YWx1ZV9vcihtYXhDb2x1bW5IZWlnaHQpKTsKICAgICByZXR1cm4gaGVpZ2h0QWRq
dXN0ZWRGb3JTZXRPZmZzZXQobWF4Q29sdW1uSGVpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggNGMwYjdiMzUzYjFkYmU0NGU3OTU3OTJkODZh
YmVjNGY3MGM0MjBlZC4uMjA2ODY0MDYyZDM2MzVhZjg0NmRhYWQ0NTQ0NWEwNGMwYmI1MzdjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0zNzMsOSArMzcz
LDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRv
Q29tcHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBz
dHlsZUxvZ2ljYWxIZWlnaHQudmFsdWUoKSAtIGJvcmRlcnM7CiAgICAgfSBlbHNlIGlmIChzdHls
ZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAgIHJldHVybiBj
b21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZU9y
KDApOworICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxl
TG9naWNhbEhlaWdodCkudmFsdWVfb3IoMCk7CiAgICAgZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVp
Z2h0LmlzSW50cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNh
bENvbnRlbnRIZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAt
IGJvcmRlckFuZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlT3IoMCk7CisgICAgICAg
IHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhzdHlsZUxv
Z2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJvcmRlckFu
ZFBhZGRpbmcpLnZhbHVlX29yKDApOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQoKTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIHZv
aWQgUmVuZGVyVGFibGU6OnVwZGF0ZUZpcnN0TGV0dGVyKFJlbmRlclRyZWVNdXRhdGlvbklzQWxs
b3dlZCkKIAogaW50IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgIHJldHVybiB2YWx1
ZU9yQ29tcHV0ZShmaXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewogICAgICAgICByZXR1cm4gUmVu
ZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rp
b24sIGxpbmVQb3NpdGlvbk1vZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBjMDBjYmNjOTkxM2QxM2Q3NmYxN2FmZDgz
MmM4NjhmMmFiNzhlYjlkLi5lMWE3ZWFhNzU5YWQzMzE2OWJhMTExYTM1ZjkxNWE0YzFlOGM3NTIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAt
NDAxLDcgKzQwMSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpjZWxsQmFzZWxpbmVQ
b3NpdGlvbigpIGNvbnN0CiAgICAgLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvQ1ItQ1NT
MjEtMjAwNzA3MTkvdGFibGVzLmh0bWwjaGVpZ2h0LWxheW91dD46IFRoZSBiYXNlbGluZSBvZiBh
IGNlbGwgaXMgdGhlIGJhc2VsaW5lIG9mCiAgICAgLy8gdGhlIGZpcnN0IGluLWZsb3cgbGluZSBi
b3ggaW4gdGhlIGNlbGwsIG9yIHRoZSBmaXJzdCBpbi1mbG93IHRhYmxlLXJvdyBpbiB0aGUgY2Vs
bCwgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiBJZiB0aGVyZQogICAgIC8vIGlzIG5vIHN1Y2ggbGlu
ZSBib3ggb3IgdGFibGUtcm93LCB0aGUgYmFzZWxpbmUgaXMgdGhlIGJvdHRvbSBvZiBjb250ZW50
IGVkZ2Ugb2YgdGhlIGNlbGwgYm94LgotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZh
bHVlT3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7
CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoYm9yZGVyQW5kUGFkZGlu
Z0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
dm9pZCBtYXJrQ2VsbERpcnR5V2hlbkNvbGxhcHNlZEJvcmRlckNoYW5nZXMoUmVuZGVyVGFibGVD
ZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcAppbmRleCBkODg1ZThlMmM2MjVjNmRjMGI1ZjJkZmYxNTc5MzQzZWU1ZWU1MTBmLi44
NmZmZjFiNzU0OTZlMDA0NDgzNmYwNjY0MWZlYjYxYTMzMWE4YmIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtOTM0LDcgKzkzNCw3
IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CiAgICAgICAgIC8vIE9ubHkgY2VsbHMgd2l0aCBjb250ZW50IGhhdmUgYSBiYXNlbGlu
ZQogICAgICAgICBpZiAoY2VsbCAmJiBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpKSB7CiAg
ICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gcm91bmRUb0ludChjZWxsLT5sb2dpY2FsVG9wKCkg
KyBjZWxsLT5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhl
aWdodCgpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZU9yKGNh
bmRpZGF0ZSksIGNhbmRpZGF0ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1
bHQudmFsdWVfb3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDQ0YTFjNTIwMzliNWQ0
N2ZmY2QyYTFhN2UxNmM1NTgwMTkwMWZkMDkuLjY1NmI3MzQ3ODczODdhODAzYjQzMjM0MTJmMjU3
YzMyNDAzZjk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAg
LTk5OSw3ICs5OTksNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICB9CiAgICAg
fQogCi0gICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1
ZU9yKGdseXBoT3ZlcmZsb3cubGVmdCk7CisgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RH
bHlwaExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlwaE92ZXJmbG93LmxlZnQpOwogCiAgICAgaWYg
KChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEpIHx8IChpZ25vcmluZ1NwYWNlcyAmJiAhZmly
c3RXb3JkKSkKICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdvcmRTcGFjaW5nOwpAQCAtMTY3Nyw3
ICsxNjc3LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENo
YXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKIAogU3RyaW5nVmlldyBSZW5kZXJU
ZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0LCBPcHRpb25hbDx1bnNpZ25lZD4gc3RvcCkg
Y29uc3QKIHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0b3AudmFsdWVPcih0ZXh0TGVu
Z3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9vcih0ZXh0TGVu
Z3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJUKGRlc3Rp
bmF0aW9uIDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQgPD0gZGVzdGluYXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwCmluZGV4IGVjMDI4NjUwNzA2NmIzMTliYzc3ZjE2ZDU4ZjgzMGNkOTlmZjM0ZDYu
LjVhMmFkNzJiZGY3ZDVkNDMxMzkxYTQ5OGVhNjU4NWU0YjVhN2U0ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBm
bG93LCBjb25zdCBMYXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBwYWkKICAgICBpZiAoc3R5bGUu
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAhPSBUZXh0RGVjb3JhdGlvbk5vbmUpIHsKICAgICAg
ICAgY29uc3QgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVy
VGV4dD4oZmxvdykuZmlyc3QoKTsKICAgICAgICAgaWYgKHRleHRSZW5kZXJlcikgewotICAgICAg
ICAgICAgdGV4dERlY29yYXRpb25QYWludGVyID0gVGV4dERlY29yYXRpb25QYWludGVyKHBhaW50
SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0ZXh0UmVu
ZGVyZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci5lbXBsYWNl
KHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0
ZXh0UmVuZGVyZXIsIGZhbHNlKTsKICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci0+
c2V0Rm9udChzdHlsZS5mb250Q2FzY2FkZSgpKTsKICAgICAgICAgICAgIHRleHREZWNvcmF0aW9u
UGFpbnRlci0+c2V0QmFzZWxpbmUoc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAKaW5kZXggNWIyMTEyZjM1YTQ2ZDNiNWI3MTI5Yzk1NmVhZDI4ODg3OTFh
YmY1OS4uYTY2NmM5Yjg0OWU1M2Q5NDYyZDYzYjgwNGM5MjcwZWI5YjI3YjU0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbnQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbgogICAgIGlmIChs
aW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKFJlbmRl
ckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rp
b24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKKyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52
YWx1ZV9vcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0
TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CiB9CiAKICNpZiBFTkFCTEUoREVC
VUdfTUFUSF9MQVlPVVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMGU3MzNiOWViMTM2NDJhODFmM2JmZTRhNGQyYTc5
OGIyYWI3MDFkZC4uOTRjMmY3MTI0ZTA0YmIyYzlhNjRlOGVjYzQwOTM3Y2M2YzhkZjFhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suaApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6IHB1YmxpYyBS
ZW5kZXJCbG9jayB7CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBhc2NlbnRGb3JDaGlsZChjb25z
dCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICByZXR1
cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC5sb2dpY2FsSGVpZ2h0
KCkpOwogICAgIH0KIAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXgg
ZWVhNGYwZDgzMjA2ZjM0N2IxNzdmNzNmMDcyNjU4ZDAxNjZlNjQwMy4uY2NkZjI0ZjljNjFlNjJk
NTlhNWJiODViN2VjYWFiN2NhOWFlNzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIGJv
b2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgaWYgKCFwb2ludElzSW5zaWRlVmlld3BvcnRDbGlw
KHBvaW50SW5QYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50
IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9p
bnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgaWYg
KCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggMmJmMDg2ZmMxZjMw
Nzk4MzU5YmQ2NzY4YTYzODRhZjA5OWQ1NzNkMC4uMTA5NWQyNGUxMTIxOWI2MjI3YzhjMmQ2OWUx
NmYzMTc0YzVhMTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdy
b3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50
ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9j
YWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgLy8gRWFybHkgZXhpdCBpZiBsb2NhbCBwb2ludCBp
cyBub3QgY29udGFpbmVkIGluIGNsaXBwZWQgdmlld3BvcnQgYXJlYQogICAgIGlmIChTVkdSZW5k
ZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSAmJiAhbV92aWV3cG9ydC5jb250YWlu
cyhsb2NhbFBvaW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAKaW5kZXggMTU4NDc2MTlhNzEzYWRlNTAwMGY0YmVjNjdlNThjY2QzN2MwMTFm
Ni4uMGRjYjkxODA3MWQ4MTFhOTUyYjY3ZjgxMzEzNjhjNWI5Mzg0YjBkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE4Niw3ICsx
ODYsNyBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxl
cyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNUSU5HLCBy
ZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7CiAgICAgYm9vbCBpc1Zpc2libGUgPSAo
c3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAh
aGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50
ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2Nh
bFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBs
b2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApp
bmRleCBiNWNiZGU2YThlMTVkOGIyOTIxYmZjMWJkOGRmOWYwY2FkNGNhYTM2Li41ZDgzNWZlMTcw
NmQ4OTMwMGRlYWNhZTcyNWExZjEwMTBkZGQ4YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0y
NjcsMTAgKzI2NywxMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENs
aXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbgogICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJv
dW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgdHJhbnNmb3Jt
LnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGlu
Z0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgICAgIHBvaW50ID0g
dHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQo
cG9pbnQpOwogICAgIH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRM
b2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludCk7CisgICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2Fs
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2lu
dChwb2ludCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxlbWVudCgp
LmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJs
aW5nKCkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVu
ZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYTQ5MDQ2NGI3OWVhMmZkOTMwNzA1ODU0Zjk1
ZDMwNmRkOGE1YTA2ZS4uY2Q1YmY3NWY2YTAwNTk4OTQ2Y2FjMzZkZThiZDE1ODg5OWY4OTM4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3Jh
cGhpYwogCiAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmFz
SW1hZ2VCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAogICAgICAgICAgICAgY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRp
b24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCku
aGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMWFjYTRlNTBjZTFiODNh
MzdhNzJhYTM3ZTBhZTU1M2JkOWU0ZjRmMC4uMzU5ZmQ0YmFjYmNkODc1NjI5ZTcxYTlmMjYyOWFm
YTBmZTM2NTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBSZW5kZXJTVkdSb290Ojpub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAg
ICAvLyBPbmx5IHRlc3QgU1ZHIGNvbnRlbnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50
IGJveC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gaW50ZXJzZWN0aW9uIHdoZW4g
cmVjdC1iYXNlZCBoaXQgdGVzdHMgYXJlIHN1cHBvcnRlZCBieSBub2RlQXRGbG9hdFBvaW50Lgog
ICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmNvbnRhaW5zKHBvaW50SW5Cb3JkZXJCb3gpKSB7Ci0g
ICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludChw
b2ludEluUGFyZW50KSk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOwogCiAgICAgICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBvaW50KCkg
ZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBmZTkxMjI2NGIyMzhm
ZDczMjg3MzVjYTdkY2JlYmIyNjU2ZGVhNTEzLi43NTAyNDBlNTM1ODRkZTdhZjA4ZGE5MmRjZGUy
NjY2Yjc4ZTM4NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6Om5v
ZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxUcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5Q
YXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxUcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50
KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhp
cywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDJiYWI3YTdmYzBhMjQzMGMz
MGU4NmQyNTYwMTBjMDM3YzA0ODJjYmMuLjg3MDhmNGIzOTdmMTUyMWI4NDIzMDliZGQwZDZhMDE0
NTM4ZWE2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0Rmxv
YXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAgICAg
aWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKICAgICAgICAgaWYg
KChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNTdHJva2Uo
KSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCiAgICAgICAgICAgICB8fCAoaGl0UnVsZXMu
Y2FuSGl0RmlsbCAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMu
cmVxdWlyZUZpbGwpKSkgewotICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9j
YWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgICAgICAgICBpZiAo
IVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCA0YzdkY2MyYzc3
OTM3ZTI3OGZlMzk0OWRjNzY2MGJlOWM1MTViMWZkLi5hZjgxMGZkZWQyNjU4Mzc5OWU0MjZhZjZi
MDg5MTY5YmM4YmI2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIFNWR1JlbmRlclN1
cHBvcnQ6OmludGVyc2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3MoY29uc3QgUmVuZGVyRWxlbWVu
dCYgcmVuZAogICAgIGlmIChsb2NhbFRvUm9vdFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEFmZmluZVRyYW5zZm9ybSByb290VG9Mb2NhbFRyYW5zZm9ybSA9
IGxvY2FsVG9Sb290VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gcm9vdFRvTG9jYWxUcmFuc2Zvcm0gPSBsb2NhbFRvUm9v
dFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIHJl
cGFpbnRSZWN0ID0gcm9vdFRvTG9jYWxUcmFuc2Zvcm0ubWFwUmVjdChyZXBhaW50UmVjdCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IDRmMzVlZDllYWEwMzkxMzRlNzBjOGNlMjMxOTU4NWNjZGY5ZDk2OTUu
LmM0YjNhYWM1YmZkMWNlOGNjNTY2MWM4ZGJiYmU0YzUzMjQ2N2VkYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
MzE4LDcgKzMxOCw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpCiAKICAgICAvLyBUaGUgbWFz
ayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNl
LCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVh
bCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5h
dGUgc3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgIGNvbnRleHQuY29u
Y2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSkpOwogICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBhYnNv
bHV0ZVRhcmdldFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3Jt
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmlu
ZGV4IGFlZTk0N2MwMTM2ZDljNjBjZTAyNWNiOTM3MTdmMzRhMWY5Mjg1OTEuLmQyMzcyZmZiYWYw
MDYxNTFjMGQwNjQwMWJmZWNmYmY5MjJkNDA5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgU1ZH
VG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQm
IGdseXBoT3JNaXNzaW5nCiAgICAgaWYgKGdseXBoQm91bmRpbmdCb3gpCiAgICAgICAgIG1fbWlu
UmlnaHRTaWRlQmVhcmluZyA9IHN0ZDo6bWluKG1fbWluUmlnaHRTaWRlQmVhcmluZywgaG9yaXpv
bnRhbEFkdmFuY2UgLSBnbHlwaEJvdW5kaW5nQm94LnZhbHVlKCkubWF4WCgpKTsKIAotICAgIG1f
Z2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jp
em9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlT3Io
RmxvYXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CisgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0
YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNh
bEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVfb3IoRmxvYXRSZWN0KCkpLCBjb2RlcG9p
bnRzKSk7CiB9CiAKIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRMaWdhdHVyZUds
eXBocygpCkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1Rv
T1RGRm9udENvbnZlcnRlcihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAg
ICAgICAgICBwcm9jZXNzR2x5cGhFbGVtZW50KGdseXBoRWxlbWVudCwgJmdseXBoRWxlbWVudCwg
ZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCB1bmljb2Rl
QXR0cmlidXRlLCBib3VuZGluZ0JveCk7CiAgICAgfQogCi0gICAgbV9ib3VuZGluZ0JveCA9IGJv
dW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3ggPSBib3Vu
ZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTAxMDAwCiAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzIwMDg2MjIzPiBDb2NvYSBoYXMgYSBidWcgd2hlcmUgZ2x5cGggYm91bmRpbmcgYm94
ZXMgYXJlIG5vdCBjb3JyZWN0bHkgcmVzcGVjdGVkIGZvciBmcnVzdHVtIGN1bGxpbmcuIFdvcmsg
YXJvdW5kIHRoaXMgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNDhiYmQzMGQ3NzY3YmNhNTUyZmEwODEwNTJl
MDIwZjFlMDFjM2MxNC4uYzc2N2Q5YmUwNDUwMTIwNmQ0MDJmNmZhOGY5OWVhODRhZjZjMTdhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW0KQEAgLTkwLDcgKzkwLDcgQEAgLSAoTlNTdHJpbmcgKilzdHJpbmdWYWx1ZQog
CiAtICh1bnNpZ25lZCBzaG9ydClwb3J0CiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCkudmFs
dWVfb3IoMCk7CiB9CiAKIC8vIEZJWE1FOiBPdmVycmlkaW5nIGlzRXF1YWw6IHdpdGhvdXQgb3Zl
cnJpZGluZyBoYXNoIHdpbGwgY2F1c2UgdHJvdWJsZSBpZiB0aGlzIGV2ZXIgZ29lcyBpbnRvIGFu
IE5TU2V0IG9yIGlzIHRoZSBrZXkgaW4gYW4gTlNEaWN0aW9uYXJ5LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDc4NGFhY2RlMDRlNGI3NjBkYzlmZWU5YWZjOTFi
ZjZiMDcwNzMzMzguLjI3ODM4Y2NiMzk4MzlkZjJhMTllZGE0YzcyN2NiMThiNmU3OGU3YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KF9PdXRfIHVuc2lnbmVkIHNob3J0KiBy
ZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAg
ICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZhbHVlT3IoMCk7CisgICAgKnJl
c3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKTsKIAogICAgIHJldHVy
biBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW5SZWYuY3BwCmluZGV4IGQ0YWEwMTNhMzg5YTlkNDE3NDY0MTU1OWYzYWU3MWU1ZmFh
MDcwNjcuLjhkZjhmZmFhYjdjNGZhNzg4NjQ1ZTE3N2ZlYjZjMTUxYjdhMzNiNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAK
QEAgLTc0LDcgKzc0LDcgQEAgV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KFdL
U2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiAKIHVuc2lnbmVkIHNob3J0IFdLU2Vj
dXJpdHlPcmlnaW5HZXRQb3J0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9y
dCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3Vy
aXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBGb3IgYmFja3dhcmRzIEFC
SSBjb21wYXRpYmlsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3ZWE2YTk4ZTY0MDEx
NzQxYzRlM2M0ZjlkYzZmYTc4MzVkYzNmYjMwLi41OTA2OTFiOGNjM2IzOTRkZmI2Y2YxMDAyM2Nh
MTZkZTljYTNjZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTAxLDkgKzEwMSw5IEBA
IHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSCiAKICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRv
SW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSktPnN0cmluZygpLCBv
cmlnaW4pOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1lKQotICAg
ICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9y
aWdpbkRldGFpbHMuY3JlYXRpb25UaW1lLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgICAgICBk
ZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25U
aW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNy
ZWF0aW9uVGltZS52YWx1ZV9vcigwKSkpOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFpbHMu
bW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwo
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpKS0+c3RyaW5n
KCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1lLnZh
bHVlT3IoMCkpKTsKKyAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQ
STo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1lLnZhbHVlX29y
KDApKSk7CiAKICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQVBJOjpEaWN0aW9u
YXJ5OjpjcmVhdGUoV1RGTW92ZShkZXRhaWxzTWFwKSkpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW0K
aW5kZXggYzU1NDNhMjBiNzFlOGM5NzZlMjEyMmI5YjRiZWE0OGIzNzUxZmM3MC4uYjcxMTJjZWUx
N2JkY2MyNjliYzlmOWUyNzFkMjQwMmRhMjE2NjgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbQpAQCAtNTgsNyAr
NTgsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNJbnRlZ2VyKXBvcnQKIHsKLSAgICBy
ZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZU9yKDAp
OworICAgIHJldHVybiBfc2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZh
bHVlX29yKDApOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0K
aW5kZXggNTc5YWZhZmE4YjI2NmQ1NzJmZGQ2ZTg0MTZmYmFmMmMzMzI5MWRmMC4uNzQxYzZjMTNj
ZTA3YTg2ZjNhZWVhYTM2Yzk1ZTEyYTljMmQzYzRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTI3NSw3ICsyNzUsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRGVjaW1hbE51bWJlcj4gdG9EZWNpbWFsTnVtYmVyKGludDY0X3QgdmFsdWUp
CiAKIHN0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U3VtbWFyeUl0ZW0+IHRvUEtQYXltZW50U3Vt
bWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRl
bSkKIHsKLSAgICByZXR1cm4gW2dldFBLUGF5bWVudFN1bW1hcnlJdGVtQ2xhc3MoKSBzdW1tYXJ5
SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKGxpbmVJ
dGVtLmFtb3VudC52YWx1ZU9yKDApKS5nZXQoKSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1U
eXBlKGxpbmVJdGVtLnR5cGUpXTsKKyAgICByZXR1cm4gW2dldFBLUGF5bWVudFN1bW1hcnlJdGVt
Q2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNp
bWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudC52YWx1ZV9vcigwKSkuZ2V0KCkgdHlwZTp0b1BLUGF5
bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CiB9CiAKIHN0YXRpYyBQS01lcmNo
YW50Q2FwYWJpbGl0eSB0b1BLTWVyY2hhbnRDYXBhYmlsaXRpZXMoY29uc3QgV2ViQ29yZTo6UGF5
bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzJiBtZXJjaGFudENhcGFiaWxpdGllcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAyN2IxZjE2MGQ4Zjc4ZjdlYWY1NWRkMWQ4MzNh
N2QxMmVkOTc5NmExLi4yMjNmMGNiMmU3ZGFkY2E5MzhkNTUzNTMxNTJkZjdhNTQwNDY4OWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3JOYW1lQW5kRGV0YWls
c1NlcGFyYXRvciA9ICI7IjsKIAogLy8gTWFrZSBzdXJlIHRoZSBwcmVkZWZpbmVkIGVycm9yIG5h
bWUgaXMgdmFsaWQsIG90aGVyd2lzZSB1c2UgSW50ZXJuYWxFcnJvci4KLSNkZWZpbmUgVkFMSURB
VEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmluZykudmFsdWVPcihJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpCisj
ZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJpbmcpLnZh
bHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW50
ZXJuYWxFcnJvcikKIAogLy8gSWYgdGhlIGVycm9yIG5hbWUgaXMgaW5jb3JyZWN0IGZvciB0aGVz
ZSBtYWNyb3MsIGl0IHdpbGwgYmUgYSBjb21waWxlLXRpbWUgZXJyb3IuCiAjZGVmaW5lIFNUUklO
R19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKGVycm9yTmFtZSkgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6ZXJyb3JOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBmMmEyODk4OWIy
MjM3OGQwMmVjOWI2NTlhMjQ2ZWE3NWM2ZmViMDQ2Li4xOWFhNzQ5OTI0N2IxNzQ5OGI0ZTE4MzEx
ZjlkYWRmNWEzN2YyNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlz
dFN0CiAgICAgICAgIGl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OjpjcmVhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKSk7CiAgICAgfQogICAgIG1faGFzQ3VycmVudEluZGV4ID0gISFiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXg7Ci0gICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXgudmFsdWVPcigwKTsKKyAgICBtX2N1cnJlbnRJbmRleCA9IGJhY2tG
b3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZV9vcigwKTsKICAgICBtX2VudHJpZXMg
PSBXVEZNb3ZlKGl0ZW1zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
dy5jcHAKaW5kZXggZDdmN2I0NzBhNDcxMWI1N2FiZGE3NzdmNDNlM2VlYWY0ZGJlNDUxNy4uN2Zk
YjMzYjUzNjM2OWVhNDZhZDcwN2I3YzU5ZjAzNjEzYTFiZmRhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJWaWV3
OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0YXJnZXQsIGNv
bnN0IFdlYkNvcmUKIAogQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybUZyb21TY2Vu
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybVRvU2NlbmUoKS5pbnZlcnNlKCkudmFs
dWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybVRvU2NlbmUoKS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogfQogCiBBZmZpbmVUcmFuc2Zv
cm0gV2ViVmlldzo6dHJhbnNmb3JtVG9TY2VuZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5k
ZXggMDE2YzZiOTMzNDY1M2NmZWEyMjkwYjIxNjUwMGFiMDA5MjFiZGU2Zi4uNjdlYWEwZDU0ZDJk
Mzc3ZDQwMzkyY2ZmNWMzY2QzNDhhMjZkZTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApAQCAtMjgy
LDggKzI4Miw4IEBAIHN0YXRpYyB2b2lkIGVuY29kZUZvcm1EYXRhRWxlbWVudChIaXN0b3J5RW50
cnlEYXRhRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSFRUUEJvCiAgICAgICAgIGVuY29kZXIgPDwg
ZmFsc2U7CiAKICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVTdGFydDsKLSAgICAgICAg
ZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcigtMSk7Ci0gICAgICAgIGVuY29k
ZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlT3Ioc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgICAgIGVuY29kZXIgPDwg
ZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKC0xKTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVt
ZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3Ioc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBI
VFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQppbmRl
eCA1ZWRlNTZlZWU0MGFjZmRiOTkwMTE5ZGU3YWNlOTE4ZTY3OGJjNjY2Li5mOTYxYTM1OTE1NDEx
NTcxNDc4ZDQwNzQ0NDIxMzQ0YWY5YTA4YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCkBA
IC0xMTk2LDcgKzExOTYsNyBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZp
ZXdUb1BsdWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiBJbnRQb2ludCBQREZQbHVn
aW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAogewogICAgIEludFBvaW50IHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyhwb2ludC54KCks
IHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1Bs
dWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1
Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogRmxvYXRSZWN0IFBERlBsdWdpbjo6
Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdApA
QCAtMTIwNyw3ICsxMjA3LDcgQEAgRmxvYXRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZW
aWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogICAgICAgICByZXR1cm4g
RmxvYXRSZWN0KCk7CiAKICAgICBGbG9hdFBvaW50IG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMo
cmVjdC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7Ci0g
ICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVn
aW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qo
RmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJlY3Quc2l6ZSgpKSk7CisgICAg
RmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5U
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KEZs
b2F0UmVjdChvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0LnNpemUoKSkpOwogCiAgICAg
cmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIEludFJlY3Qg
UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBJbnRSZWN0
KCk7CiAKICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6
ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZp
ZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUmVjdChib3VuZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
ID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOwogICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRl
bnRzVG9TY3JlZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7
CiB9CiAKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENo
YW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7Ci0gICAgbV9yb290Vmlld1Rv
UGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3Jt
ID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpOwogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNpemU6cGx1Z2lu
U2l6ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGRiNGVjM2U0MTI5
OWY2OTI5NjFmNzRkZDIxNmM5N2M2ZGE0NjEyMzUuLjdlZmEwNzQzNDQzNTYxOTgyMjQxMDIwMDFm
OTc5NTgwNGZhMmYzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05MzIsNyArOTMyLDcgQEAgSW50UmVjdCBQREZQbHVn
aW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENo
YW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKQogewogICAgIG1fcGx1Z2lu
VG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07Ci0gICAgbV9y
b290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2lu
VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7CiAKICAgICBGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCAxY2E3ZjQ0OTdhNzk4YjNlNWRl
ZDRhZWViMThlYWNjMmYxOWFhNzcxLi4yOGY3NTdmZmUwYjQzNDZmMjYzNzk5ZjA0N2Y3NjE0N2I2
ODQ0Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTEzMiw3
ICsxMzIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25zdCBI
VFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhU
VFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVu
ZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5m
aWxlTGVuZ3RoLnZhbHVlT3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKGludmFsaWRGaWxlVGltZSgpKSk7Cisg
ICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVs
ZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxvYkRhdGFJdGVt
Ojp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1
ZV9vcihpbnZhbGlkRmlsZVRpbWUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggYjhlZDllYjJhMjBmNTUwZTM4ZjY0ODhhNDkwNmRjNTIzYmMyMjQ0
Ny4uYmRlNjYyYjY0NTU0OTgwOTAxZWVmMzVjODIxYWJiNzVmYjc2OTIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVD
b250ZW50PiBoYQogICAgIHdlYlBhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuZGlkQ29t
bWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nl
c3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRM
b2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9u
SUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNl
cnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5m
bygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1l
bnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3Bv
bnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9
KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwg
aGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICAgICB3ZWJQ
YWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBlOWJiYjJiYTc5OTQxMGIzYjA2NDY0
OGMxNDk4NTk5YTNkZTExOWYzLi5lMThhOTc4OWYxYWQzNjg3YTFhYzliYzEwNGI0NGRiZDJiNTBi
ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTQyMCw3ICs0MjAsNyBAQCBDZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jZXJ0aWZpY2F0
ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSk7
CisgICAgcmV0dXJuIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNl
cnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSk7CiB9CiAK
IFN0cmluZyBXZWJGcmFtZTo6aW5uZXJUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNWYwYmUwOWFiNGZmZmNiNzFhMDE4M2Mx
ODlhZjgxOGNlYTM1M2RlLi5jODA0NjU0ODFiZjI5M2ZiZTVmOGZiYjMzYjlmMDEyMWU1NWY2ZjRi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdU
Rjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFBhcnNl
SFRNTEludGVnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tS
ZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKwogMjAxNi0xMC0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJRExdIFJlc3RydWN0dXJlIElETFBhcnNlciBzdHJ1
Y3RzIHRvIGJldHRlciBtYXRjaCBtb2Rlcm4gV2ViSURMIGNvbmNlcHRzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKaW5kZXggYTA3MTVmZDYyZmU3NmMxMDJjNDQz
YTFjNzc0NmY2ZDRiODhjNzRiYi4uMDc1NzViMTY5MGJjOGFiNGJlZjc0MjNiMzk3NTMyNDk1NDg3
M2RmZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcApAQCAt
NzYsNyArNzYsNyBAQCBURVNUKFdURl9PcHRpb25hbCwgQ2FsbGJhY2spCiB7CiAgICAgYm9vbCBj
YWxsZWQgPSBmYWxzZTsKICAgICBPcHRpb25hbDxpbnQ+IGE7Ci0gICAgaW50IHJlc3VsdCA9IGEu
dmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICBpbnQgcmVzdWx0ID0gdmFsdWVPckNvbXB1dGUoYSwg
WyZdIHsKICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIDMwMDsKICAgICB9
KTsKQEAgLTg1LDcgKzg1LDcgQEAgVEVTVChXVEZfT3B0aW9uYWwsIENhbGxiYWNrKQogCiAgICAg
YSA9IDI1MDsKICAgICBjYWxsZWQgPSBmYWxzZTsKLSAgICByZXN1bHQgPSBhLnZhbHVlT3JDb21w
dXRlKFsmXSB7CisgICAgcmVzdWx0ID0gdmFsdWVPckNvbXB1dGUoYSwgWyZdIHsKICAgICAgICAg
Y2FsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIDMwMDsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcApp
bmRleCAwZjFjMDJkOWU2Y2E4NWMwOWNiNDk2Y2IzN2YxMmMyOTlmNThmZWY4Li42ZTllNzM4YWI1
YmNlMWRmYWJmYjQyZjYwZWI3YjJmMmI2NDVjYjRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBAIHN0YXRpYyBpbnQgdGVzdFBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1
dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7
CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFs
UmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDAp
OwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRlZ2VyRmFpbHMoY29uc3QgU3RyaW5nJiBp
bnB1dCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdW5zaWduZWQgdGVzdFBhcnNlSFRNTE5v
bk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQogewogICAgIGF1dG8gb3B0aW9u
YWxSZXN1bHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoaW5wdXQpOwogICAgIEVYUEVD
VF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1
ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZV9vcigwKTsKIH0KIAogc3Rh
dGljIGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyRmFpbHMoY29uc3QgU3RyaW5nJiBp
bnB1dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQ
YXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5j
cHAKaW5kZXggNDdjZDA3Mjk3YjQ5ZGQ4NmY0OGUwNWM2ZjJlNTVhNzU3MWViNWQ4Yi4uMTFhYWM2
ODQ0ZWZlYjNmYjY3YTc1ODUzYjAwNTU4ZjdmOTE2ZDhiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVk
UGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwu
dXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQ
RUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VR
KHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVy
eSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQg
Y2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBh
cnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCBvbGRVUkwudXNlcigp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0gICAgRVhQ
RUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNU
X0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5m
cmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0zNTQsNyArMzU0LDcg
QEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2Vy
LCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5w
YXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0g
ICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQ
RUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVu
dCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3Ry
aW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCBvbGRVUkwu
dXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIG9sZFVSTC5wYXNz
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0g
ICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAg
RVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC00ODAsNyAr
NDgwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFz
c3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1
cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFs
dWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVf
b3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
KSk7CkBAIC00OTAsNyArNDkwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNlcyhj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGEKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRz
T2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRz
T2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
c09sZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09s
ZC5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC01MjUsNyArNTI1
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dv
cmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVP
cigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7
CkBAIC01MzUsNyArNTM1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVu
Y2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzT2xk
LnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzT2xk
LnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09s
ZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5m
cmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMTg3LDcgKzExODcs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
VGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29ucwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsK
LSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdt
ZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTEyMTMsNyArMTIxMyw3IEBAIHN0
YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJs
LnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVY
UEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9F
UShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVl
cnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVy
bC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293390</attachid>
            <date>2016-10-30 21:51:10 -0700</date>
            <delta_ts>2016-10-31 01:21:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031134714.patch</filename>
            <type>text/plain</type>
            <size>154042</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi5hZmI3NGZmMGJiNDc4NzA4
ZmE0YmMyZWY4NzhjNjVjMGM2MDIwMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RG
OjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisKIDIwMTYtMTAtMjkgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJp
bmdpZnkgc2hvdWxkIGhhbmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJh
eSBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAu
LjJmZjIzZWY4Nzg4YmUwNTkzYzE4N2M4Y2M2OTdhM2YzOTkyZDFiZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTQgQEAKKzIwMTYtMTAtMzAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IExMVk0gbGliYysrIG9wdGlvbmFsIGFzIFdURjo6T3B0
aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cG9ydCBMTFZNIGxpYmMrKydzIGV4cGVyaW1lbnRhbC9vcHRpb25hbC4gSXQgaGFzIHRoZSBzYW1l
CisgICAgICAgIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSB0byB0aGUgQysrMTcncyBvbmUu
IFByZXZpb3VzCisgICAgICAgIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFs
aXRpZXMuIFRoZSBsYXJnZXN0IG9uZQorICAgICAgICBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIg
Y29uc3RydWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBP
cHRpb25hbDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluCisgICAgICAgIFdl
YktpdC4KKworICAgICAgICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3Ry
dWN0b3JzLiBTbyBvbmx5IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhl
IHdheSB0byB1c2UgV1RGOjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGds
b2JhbCB2YXJpYWJsZXMuIFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBh
bmQKKyAgICAgICAgd2Ugd291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFy
aWFibGVzIHRoYXQgaW5jbHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBp
cyB0aGUgbWFpbiBtb3RpdmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlv
bmFsaXR5IGFsbG93cyB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAg
ICAgIHNpZ25hdHVyZXMgYXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAg
ICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6YmFkX29wdGlvbmFsX2FjY2Vzczo6
YmFkX29wdGlvbmFsX2FjY2Vzcyk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
fl9fb3B0aW9uYWxfc3RvcmFnZSk6CisgICAgICAgIChXVEY6Ol9fb3B0aW9uYWxfc3RvcmFnZTo6
X19vcHRpb25hbF9zdG9yYWdlKToKKyAgICAgICAgKFdURjo6X19vcHRpb25hbF9zdG9yYWdlOjpu
b2V4Y2VwdCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6CisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6bm9leGNl
cHQpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZW1wbGFjZSk6CisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yKik6
CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZSk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFs
Ojp2YWx1ZV9vcik6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpv
cGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I+KToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PSk6CisgICAgICAgIChXVEY6Om9wZXJh
dG9yPj0pOgorICAgICAgICAoV1RGOjpub2V4Y2VwdCk6CisgICAgICAgIChXVEY6Om1ha2VPcHRp
b25hbCk6CisgICAgICAgIChXVEY6Ok51bGxvcHRUYWc6Ok51bGxvcHRUYWcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6fk9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6Om9wZXJhdG9yIGJvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRp
b25hbDo6dmFsdWVPcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9y
Q29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjphc1B0cik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpkZXN0cm95KTogRGVsZXRlZC4KKwogMjAxNi0x
MC0zMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIEhh
cmZCdXp6IG90LW1hdGggQVBJIHRvIHBhcnNlIHRoZSBPcGVuVHlwZSBNQVRIIHRhYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZjU4NTJkYjM4NmJlMjM5NmU4MWI4NTU2NGY0ZjRhMGYzZWZjMTNjMi4uZDg3NWQ5
YjA2MDI1MDhjOGNlZjNmOTdmNjczODQ4ZjVlODZiNWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3MiBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RGOjpP
cHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVuYW1lIHZhbHVlT3IgdG8gdmFsdWVfb3IuIFRoaXMgaXMgc3BlY2lmaWVkIGluIEMrKzE3IHBy
b3Bvc2FsLgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6ZW1wbGFjZS4gQysrMTcgT3B0aW9uYWw6
Om9wZXJhdG9yPShPcHRpb25hbCYmKSByZXF1aXJlcworICAgICAgICBlaXRoZXIgY29weSBhc3Np
Z25tZW50IG9wZXJhdG9yIG9yIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4gQnV0CisgICAgICAg
IERGRzo6SlNWYWx1ZU9wZXJhbmQgZXRjLiBvbmx5IGRlZmluZXMgbW92ZSBjb25zdHJ1Y3RvcnMg
YW5kIGRyb3AKKyAgICAgICAgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKwor
ICAgICAgICBJdCB3YXMgT0sgaW4gdGhlIHByZXZpb3VzIFdURjo6T3B0aW9uYWwgc2luY2UgaXQg
YWx3YXlzIHVzZXMgbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMuIEJ1dCBpdCBpcyBub3QgdmFs
aWQgaW4gQysrMTcgT3B0aW9uYWwuIFdlIHVzZSBPcHRpb25hbDo6ZW1wbGFjZQorICAgICAgICBp
bnN0ZWFkLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHByZXZp
b3VzIFdURjo6T3B0aW9uYWwncworICAgICAgICBvcGVyYXRvcj0uCisKKyAgICAgICAgTm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6
ZmV0Y2gpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnRE
VE1GKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJv
bWlzZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnN3YXApOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkpOgorICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uT2JzZXJ2ZXI6Om9ic2VydmUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2VJ
bnRlcm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFBy
ZWZsaWdodCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6CisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmRlYnVnU3Ry
aW5nKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6ZHJhd0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlk
ZW9PdXRwdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjptYXBB
YnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0
cmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0
YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9D
YWNoZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWls
eSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFu
c2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZv
ckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGls
ZFNpemVGb3JNaW5BbmRNYXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0R3Jvd3RoTGltaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0
VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRo
T2ZHcmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pblNpemVGb3JD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2Vk
VHJhY2tTaXppbmdGdW5jdGlvbnNGb3JOb25TcGFubmluZ0l0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OnNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2li
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVp
Z2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5n
Vmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxCbG9jazo6YXNjZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Nv
bnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVp
Z25PYmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVB
dEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6
aGl0VGVzdENsaXBDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6Omlu
dGVyc2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdD
b250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpw
cm9jZXNzR2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZl
cnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAs
IGFuZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IGNmNmFlNjFkOTk0NTRiYzBiOTkwMTgxZWI0NGIyYjMzMzQyNWRjMzUuLmY1
MjY3YTQxMWNmOTQ3YTZkZGY4MTQzMWMxODU3NGFmZmQ4Zjc2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwg
YXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorCiAyMDE2LTEwLTMwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVsZW1lbnQsIE5hbWVkTm9kZU1hcCwg
YW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggMWE2NmFmNzA1ZjBmNmUwODI3YzdkMDg3YTZhOWRiNTc4NjNlZjIwNy4uZWY5
YWUzODJmYjVjOTc0NDUyY2UzMzE4NTg4ZWIxMDZmNjMzNzE5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEltcG9ydCBMTFZNIGxpYmMrKyBvcHRpb25hbCBh
cyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYlNlY3VyaXR5T3Jp
Z2luOjpwb3J0KToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAsIGFuZCBET01TdHJpbmdNYXAg
ZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDE2NzZlYTk0MTUy
MTlhNTY1MDhiMDE0NzBlOGJlOTU2MGRmZGRhMWYuLjZkNjAzMGM4ZmFiOWY3MDY4Yzg2YjAyZTc3
ZWY2N2VkOGFmN2Y3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNi0xMC0zMCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJ
bXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTZWN1
cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW06Cisg
ICAgICAgICgtW1dLU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hh
bmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisKIDIwMTYtMTAtMzAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2Rl
TWFwLCBhbmQgRE9NU3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
N2I1N2IxODkyOTM3MDYxMGI3M2EwMGNlNWM1MDlkMzFjZmI1NTYxZi4uMTE5ZDZkYmVjMjI1NWMy
NGQ3NGY2NzI5YmY2NmYwYjM3YzRiYzViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyNTIsMTEgKzMyNTIsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAgIFJFTEVBU0Vf
QVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkp
OwogCiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgbGVmdCA9IEpT
VmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlz
LCBsZWZ0Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAg
ICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodCA9
IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNl
KHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJl
Z3MoKTsKICAgICB9CiAKQEAgLTM0MDUsMTEgKzM0MDUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FT
U0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsK
IAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywg
bGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAg
IH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmlnaHQgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0
aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgfQogCkBAIC0zNTQ2LDcgKzM1NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRo
SQogCiAgICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlmIChuZWVk
c1NjcmF0Y2hGUFJSZWcpIHsKLSAgICAgICAgZnByU2NyYXRjaCA9IEZQUlRlbXBvcmFyeSh0aGlz
KTsKKyAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3JhdGNoRlBS
ID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQogCkBAIC0zNTgwLDExICszNTgwLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0
aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgQVNTRVJUKCEoR2VuZXJhdG9yOjppc0xlZnRPcGVy
YW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFu
ZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVyYW5kKSkpOwogCiAgICAgaWYgKCFHZW5lcmF0b3I6Omlz
TGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAgICAgICBsZWZ0ID0g
SlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRo
aXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsK
ICAgICB9CiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChy
aWdodE9wZXJhbmQpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmln
aHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAg
ICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzY0OSwx
MCArMzY0OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5v
ZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9KTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFu
dChsZWZ0T3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlz
LCBsZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7
CiAgICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVy
YW5kKSkgewotICAgICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENo
aWxkKTsKKyAgICAgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAg
ICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQogCkBA
IC00NzY2LDExICs0NzY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERp
dihOb2RlKiBub2RlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25z
dCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgICAgICBpZiAoIWxlZnRPcGVy
YW5kLmlzQ29uc3QoKSkgewotICAgICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMs
IGxlZnRDaGlsZCk7CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsK
ICAgICAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAgIHJpZ2h0
ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgICAgICByaWdodC5l
bXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQt
PmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KIApAQCAtNzI3Nyw3ICs3Mjc3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICBPcHRp
b25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlmIChwYXRjaHBv
aW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9iamVjdEVk
Z2UgPSBub2RlLT5jaGlsZDIoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0ID0gU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CisgICAgICAgIGdsb2JhbE9iamVjdC5l
bXBsYWNlKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAgICByZWdzLmFwcGVuZChET01K
SVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUuZm9yTm9kZShnbG9iYWxPYmpl
Y3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4ZjcyYjFlOGRiNjFkN2Yz
M2UzMDNkM2I3M2Q1YjNmNTJiZWNlOGY4Li5mOThlMTQ1ZGY0NWIwYWM5NTcyZDNmNThkYzE5ZWIz
MzIzMDJiZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTUwNDUsMTEgKzUwNDUsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3Bl
cmFuZD4ga2V5QXNWYWx1ZTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsKICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAg
ICBrZXlBc1ZhbHVlID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAga2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgICAgIGtleVJlZ3MgPSBrZXlBc1ZhbHVlLT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJp
bmdVc2UgfHwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgICAg
ICAgICBrZXlBc0NlbGwgPSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBrZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICBrZXlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGtleUFzQ2Vs
bC0+Z3ByKCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGY4OWMxZTY5NzU2OWIzMjhjMWIyZGQ0MjVk
ZTM1ZTRmNDJhMzc0ODYuLjVmMTczYjYwOTQ1OGYwMDg2NTc4N2YyYmMwYWQ3N2NjMzNjYzEyMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNTE5NSwxMSArNTE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVl
OwogICAgICAgICBHUFJSZWcga2V5R1BSOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtleUFzVmFsdWUgPSBKU1ZhbHVl
T3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc1ZhbHVlLmVt
cGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5R1BSID0ga2V5QXNW
YWx1ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0ZUNlbGxP
cGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzQ2VsbC5lbXBs
YWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtleUFzQ2Vs
bC0+Z3ByKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
CmluZGV4IDEyZjk1NGMwMzQ5YzFiZmM3MzMwM2Q2MjlmZGYxZmViYTU2MjU1N2MuLjA0ODJjNzhh
NThmYjU4MDJjZDE4NzcxMmViYWUyYTYwOWU0NDJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGlj
YQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3Rh
cmdldE11dGV4KTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1v
dGVDb250cm9sQWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpz
aW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigwKSk7Cisg
ICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0
YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIG1fdGFyZ2V0
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRh
cmdldD4obV90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjYXN0ZWRUYXJnZXQgPSBk
b3duY2FzdDxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRl
eCA0Y2I1M2JmNTdmODI5ZTQ0ZGE5ZmJkNDlkNmZkOWM4Yzk4Yzk0NGQ0Li4wNDc2YzBhMjgyNjll
OTZkYTk1YjMzMGNmYTc5ZmZjZjU1ZGM3NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9P
cHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTEsMjczICsxLDk5
NSBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgT3B0aW9uYWxfaAotI2RlZmluZSBPcHRpb25hbF9o
CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGxpYmMrKyBMaWNlbnNlCisvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKy8vCisvLyBUaGUgbGliYysrIGxpYnJhcnkgaXMgZHVhbCBsaWNlbnNl
ZCB1bmRlciBib3RoIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzCisvLyAiQlNELUxpa2UiIGxp
Y2Vuc2UgYW5kIHRoZSBNSVQgbGljZW5zZS4gIEFzIGEgdXNlciBvZiB0aGlzIGNvZGUgeW91IG1h
eSBjaG9vc2UKKy8vIHRvIHVzZSBpdCB1bmRlciBlaXRoZXIgbGljZW5zZS4gIEFzIGEgY29udHJp
YnV0b3IsIHlvdSBhZ3JlZSB0byBhbGxvdyB5b3VyIGNvZGUKKy8vIHRvIGJlIHVzZWQgdW5kZXIg
Ym90aC4KKy8vCisvLyBGdWxsIHRleHQgb2YgdGhlIHJlbGV2YW50IGxpY2Vuc2VzIGlzIGluY2x1
ZGVkIGJlbG93LgorLy8KKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8KKy8vIFVuaXZlcnNp
dHkgb2YgSWxsaW5vaXMvTkNTQQorLy8gT3BlbiBTb3VyY2UgTGljZW5zZQorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwOS0yMDE2IGJ5IHRoZSBjb250cmlidXRvcnMgbGlzdGVkIGluIENSRURJVFMu
VFhUCisvLworLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBEZXZlbG9wZWQgYnk6Cisv
LworLy8gICAgIExMVk0gVGVhbQorLy8KKy8vICAgICBVbml2ZXJzaXR5IG9mIElsbGlub2lzIGF0
IFVyYmFuYS1DaGFtcGFpZ24KKy8vCisvLyAgICAgaHR0cDovL2xsdm0ub3JnCisvLworLy8gUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEgY29weSBvZgorLy8gdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgd2l0aAorLy8gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlIHJpZ2h0cyB0bworLy8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKy8vIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hl
ZCB0byBkbworLy8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLy8K
Ky8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKy8vICAgICAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVycy4KKy8vCisvLyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsCisvLyAgICAgICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcnMgaW4gdGhlCisvLyAgICAgICAgICAgICAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vCisvLyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lcyBvZiB0aGUgTExWTSBUZWFtLCBVbml2
ZXJzaXR5IG9mIElsbGlub2lzIGF0CisvLyAgICAgICAgICAgVXJiYW5hLUNoYW1wYWlnbiwgbm9y
IHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvCisvLyAgICAgICAg
ICAgICAgICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIFNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMKKy8vICAgICAgICAgICAgICAgICAgICAgICBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLCBGSVRORVNTCisvLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorLy8gQ09OVFJJQlVUT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisv
LyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLAorLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBXSVRIIFRIRQorLy8gU09G
VFdBUkUuCisvLworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDA5LTIwMTQgYnkgdGhlIGNvbnRyaWJ1dG9ycyBsaXN0ZWQgaW4gQ1JFRElUUy5UWFQKKy8v
CisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55
IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisvLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh
dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorLy8gaW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlIHJpZ2h0cworLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo
LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorLy8gY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisv
LyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
OgorLy8KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g
bm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisvLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8g
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksCisvLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKy8vIEFVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK
Ky8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig
T1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisvLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCisvLyBUSEUgU09G
VFdBUkUuCisKKy8vIENvcGllZCBmcm9tIGh0dHA6Ly9sbHZtLm9yZy9zdm4vbGx2bS1wcm9qZWN0
L2xpYmN4eC90cnVuay9pbmNsdWRlL2V4cGVyaW1lbnRhbC9vcHRpb25hbCAocjI4NTUyNCkKKwor
Ly8gTW9kaWZpZWQgdG8gbWFrZSBpdCBjb21waWxlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4K
KworI3ByYWdtYSBvbmNlCiAKKy8qCisgICAgb3B0aW9uYWwgc3lub3BzaXMKKworLy8gQysrMXkK
KworbmFtZXNwYWNlIHN0ZCB7IG5hbWVzcGFjZSBleHBlcmltZW50YWwgeyBpbmxpbmUgbmFtZXNw
YWNlIGZ1bmRhbWVudGFsc192MSB7CisKKyAgICAvLyA1LjMsIG9wdGlvbmFsIGZvciBvYmplY3Qg
dHlwZXMKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3Mgb3B0aW9uYWw7CisKKyAgICAvLyA1
LjQsIEluLXBsYWNlIGNvbnN0cnVjdGlvbgorICAgIHN0cnVjdCBpbl9wbGFjZV90e307CisgICAg
Y29uc3RleHByIGluX3BsYWNlX3QgaW5fcGxhY2V7fTsKKworICAgIC8vIDUuNSwgTm8tdmFsdWUg
c3RhdGUgaW5kaWNhdG9yCisgICAgc3RydWN0IG51bGxvcHRfdHtzZWUgYmVsb3d9OworICAgIGNv
bnN0ZXhwciBudWxsb3B0X3QgbnVsbG9wdCh1bnNwZWNpZmllZCk7CisKKyAgICAvLyA1LjYsIENs
YXNzIGJhZF9vcHRpb25hbF9hY2Nlc3MKKyAgICBjbGFzcyBiYWRfb3B0aW9uYWxfYWNjZXNzOwor
CisgICAgLy8gNS43LCBSZWxhdGlvbmFsIG9wZXJhdG9ycworICAgIHRlbXBsYXRlIDxjbGFzcyBU
PgorICAgICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcHRpb25hbDxUPiYsIGNv
bnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9uYWw8VD4m
KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KKyAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PChjb25zdCBvcHRpb25hbDxUPiYsIGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFQ+CisgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8
VD4mLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgICAg
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYsIGNvbnN0IG9wdGlv
bmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgICAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKworICAg
IC8vIDUuOCwgQ29tcGFyaXNvbiB3aXRoIG51bGxvcHQKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkg
bm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0obnVsbG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYpIG5vZXhjZXB0OworICAgIHRlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPFQ+Jiwg
bnVsbG9wdF90KSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9leGNlcHQ7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRp
b25hbDxUPiYsIG51bGxvcHRfdCkgbm9leGNlcHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPChudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikgbm9l
eGNlcHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0o
Y29uc3Qgb3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIG5vZXhjZXB0OworICAgIHRlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9u
YWw8VD4mKSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBub2V4Y2VwdDsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KG51bGxvcHRfdCwgY29u
c3Qgb3B0aW9uYWw8VD4mKSBub2V4Y2VwdDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkgbm9leGNl
cHQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0obnVs
bG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYpIG5vZXhjZXB0OworCisgICAgLy8gNS45LCBDb21w
YXJpc29uIHdpdGggVAorICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxU
PiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IG9wdGlvbmFsPFQ+JiwgY29uc3QgVCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmLCBjb25zdCBvcHRpb25hbDxUPiYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3Qgb3B0aW9u
YWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBUJiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYsIGNv
bnN0IFQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBUJiwgY29uc3Qgb3B0aW9uYWw8VD4mKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPFQ+JiwgY29uc3QgVCYpOwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYs
IGNvbnN0IG9wdGlvbmFsPFQ+Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mLCBjb25zdCBUJik7CisgICAgdGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYsIGNvbnN0IG9w
dGlvbmFsPFQ+Jik7CisKKyAgICAvLyA1LjEwLCBTcGVjaWFsaXplZCBhbGdvcml0aG1zCisgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+IHZvaWQgc3dhcChvcHRpb25hbDxUPiYsIG9wdGlvbmFsPFQ+Jikg
bm9leGNlcHQoc2VlIGJlbG93KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIG9w
dGlvbmFsPHNlZSBiZWxvdz4gbWFrZV9vcHRpb25hbChUJiYpOworCisJdGVtcGxhdGUgPGNsYXNz
IFQ+CisJY2xhc3Mgb3B0aW9uYWwKKwl7CisJcHVibGljOgorCSAgdHlwZWRlZiBUIHZhbHVlX3R5
cGU7CisKKwkgIC8vIDUuMy4xLCBDb25zdHJ1Y3RvcnMKKwkgIGNvbnN0ZXhwciBvcHRpb25hbCgp
IG5vZXhjZXB0OworCSAgY29uc3RleHByIG9wdGlvbmFsKG51bGxvcHRfdCkgbm9leGNlcHQ7CisJ
ICBvcHRpb25hbChjb25zdCBvcHRpb25hbCYpOworCSAgb3B0aW9uYWwob3B0aW9uYWwmJikgbm9l
eGNlcHQoc2VlIGJlbG93KTsKKwkgIGNvbnN0ZXhwciBvcHRpb25hbChjb25zdCBUJik7CisJICBj
b25zdGV4cHIgb3B0aW9uYWwoVCYmKTsKKwkgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiBjb25z
dGV4cHIgZXhwbGljaXQgb3B0aW9uYWwoaW5fcGxhY2VfdCwgQXJncyYmLi4uKTsKKwkgIHRlbXBs
YXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgorCQljb25zdGV4cHIgZXhwbGljaXQgb3B0aW9u
YWwoaW5fcGxhY2VfdCwgaW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKworCSAgLy8g
NS4zLjIsIERlc3RydWN0b3IKKwkgIH5vcHRpb25hbCgpOworCisJICAvLyA1LjMuMywgQXNzaWdu
bWVudAorCSAgb3B0aW9uYWwmIG9wZXJhdG9yPShudWxsb3B0X3QpIG5vZXhjZXB0OworCSAgb3B0
aW9uYWwmIG9wZXJhdG9yPShjb25zdCBvcHRpb25hbCYpOworCSAgb3B0aW9uYWwmIG9wZXJhdG9y
PShvcHRpb25hbCYmKSBub2V4Y2VwdChzZWUgYmVsb3cpOworCSAgdGVtcGxhdGUgPGNsYXNzIFU+
IG9wdGlvbmFsJiBvcGVyYXRvcj0oVSYmKTsKKwkgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiB2
b2lkIGVtcGxhY2UoQXJncyYmLi4uKTsKKwkgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBB
cmdzPgorCQl2b2lkIGVtcGxhY2UoaW5pdGlhbGl6ZXJfbGlzdDxVPiwgQXJncyYmLi4uKTsKKwor
CSAgLy8gNS4zLjQsIFN3YXAKKwkgIHZvaWQgc3dhcChvcHRpb25hbCYpIG5vZXhjZXB0KHNlZSBi
ZWxvdyk7CisKKwkgIC8vIDUuMy41LCBPYnNlcnZlcnMKKwkgIGNvbnN0ZXhwciBUIGNvbnN0KiBv
cGVyYXRvciAtPigpIGNvbnN0OworCSAgY29uc3RleHByIFQqIG9wZXJhdG9yIC0+KCk7CisJICBj
b25zdGV4cHIgVCBjb25zdCYgb3BlcmF0b3IgKigpIGNvbnN0ICY7CisJICBjb25zdGV4cHIgVCYg
b3BlcmF0b3IgKigpICY7CisJICBjb25zdGV4cHIgVCYmIG9wZXJhdG9yICooKSAmJjsKKwkgIGNv
bnN0ZXhwciBjb25zdCBUJiYgb3BlcmF0b3IgKigpIGNvbnN0ICYmOworCSAgY29uc3RleHByIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdDsKKwkgIGNvbnN0ZXhwciBUIGNv
bnN0JiB2YWx1ZSgpIGNvbnN0ICY7CisJICBjb25zdGV4cHIgVCYgdmFsdWUoKSAmOworCSAgY29u
c3RleHByIFQmJiB2YWx1ZSgpICYmOworCSAgY29uc3RleHByIGNvbnN0IFQmJiB2YWx1ZSgpIGNv
bnN0ICYmOworCSAgdGVtcGxhdGUgPGNsYXNzIFU+IGNvbnN0ZXhwciBUIHZhbHVlX29yKFUmJikg
Y29uc3QgJjsKKwkgIHRlbXBsYXRlIDxjbGFzcyBVPiBjb25zdGV4cHIgVCB2YWx1ZV9vcihVJiYp
ICYmOworCisJcHJpdmF0ZToKKwkgIFQqICAgdmFsOyAgLy8gZXhwb3NpdGlvbiBvbmx5CisJfTsK
KworICB9IC8vIG5hbWVzcGFjZSBmdW5kYW1lbnRhbHNfdjEKKyAgfSAvLyBuYW1lc3BhY2UgZXhw
ZXJpbWVudGFsCisKKyAgLy8gNS4xMSwgSGFzaCBzdXBwb3J0CisgIHRlbXBsYXRlIDxjbGFzcyBU
PiBzdHJ1Y3QgaGFzaDsKKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBoYXNoPGV4cGVyaW1l
bnRhbDo6b3B0aW9uYWw8VD4+OworCit9IC8vIG5hbWVzcGFjZSBzdGQKKworKi8KKworI2luY2x1
ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8c3RkZXhjZXB0PgorI2luY2x1ZGUgPGluaXRpYWxp
emVyX2xpc3Q+CiAjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8bmV3PgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi0vLyBXVEY6Ok9wdGlvbmFsIGlzIGEgY2xhc3MgYmFz
ZWQgb24gc3RkOjpvcHRpb25hbCwgZGVzY3JpYmVkIGhlcmU6Ci0vLyBodHRwOi8vd3d3Lm9wZW4t
c3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL3BhcGVycy8yMDEzL24zNTI3Lmh0bWwKLS8vIElm
IHRoaXMgZW5kcyB1cCBpbiBhIEMrKyBzdGFuZGFyZCwgd2Ugc2hvdWxkIHJlcGxhY2Ugb3VyIGlt
cGxlbWVudGF0aW9uIHdpdGggaXQuCi0KIG5hbWVzcGFjZSBXVEYgewogCi1zdHJ1Y3QgSW5QbGFj
ZVRhZyB7IH07Ci1jb25zdGV4cHIgSW5QbGFjZVRhZyBJblBsYWNlIHsgfTsKK2NsYXNzIGJhZF9v
cHRpb25hbF9hY2Nlc3MKKyAgICA6IHB1YmxpYyBzdGQ6OmxvZ2ljX2Vycm9yCit7CitwdWJsaWM6
CisJYmFkX29wdGlvbmFsX2FjY2VzcygpIDogc3RkOjpsb2dpY19lcnJvcigiQmFkIG9wdGlvbmFs
IEFjY2VzcyIpIHt9CiAKLXN0cnVjdCBOdWxsb3B0VGFnIHsgZXhwbGljaXQgY29uc3RleHByIE51
bGxvcHRUYWcoaW50KSB7IH0gfTsKLWNvbnN0ZXhwciBOdWxsb3B0VGFnIE51bGxvcHQgeyAwIH07
CisvLwlHZXQgdGhlIGtleSBmdW5jdGlvbiB+YmFkX29wdGlvbmFsX2FjY2VzcygpIGludG8gdGhl
IGR5bGliCisgICAgdmlydHVhbCB+YmFkX29wdGlvbmFsX2FjY2VzcygpIG5vZXhjZXB0OworfTsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIE9wdGlvbmFsIHsKLXB1YmxpYzoKLSAgICBP
cHRpb25hbCgpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAgIH0KK3N0
cnVjdCBfX25hdAoreworICAgIF9fbmF0KCkgPSBkZWxldGU7CisgICAgX19uYXQoY29uc3QgX19u
YXQmKSA9IGRlbGV0ZTsKKyAgICBfX25hdCYgb3BlcmF0b3I9KGNvbnN0IF9fbmF0JikgPSBkZWxl
dGU7CisgICAgfl9fbmF0KCkgPSBkZWxldGU7Cit9OwogCi0gICAgT3B0aW9uYWwoTnVsbG9wdFRh
ZykKLSAgICAgICAgOiBtX2lzRW5nYWdlZChmYWxzZSkKLSAgICB7Ci0gICAgfQordGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX1VwID0gX1RwLAorICAgICAgICAgIGJvb2wgX05vdFZvaWQgPSAh
c3RkOjppc192b2lkPF9UcD46OnZhbHVlICYmICFzdGQ6OmlzX3ZvaWQ8X1VwPjo6dmFsdWU+Citz
dHJ1Y3QgX19zd2FwcGFibGVfd2l0aAoreworICAgIHRlbXBsYXRlIDxjbGFzcyBfTEhTLCBjbGFz
cyBfUkhTPgorICAgIHN0YXRpYyBkZWNsdHlwZShzdGQ6OnN3YXAoc3RkOjpkZWNsdmFsPF9MSFM+
KCksIHN0ZDo6ZGVjbHZhbDxfUkhTPigpKSkKKyAgICBfX3Rlc3Rfc3dhcChpbnQpOworICAgIHRl
bXBsYXRlIDxjbGFzcywgY2xhc3M+CisgICAgc3RhdGljIF9fbmF0IF9fdGVzdF9zd2FwKGxvbmcp
OworCisgICAgLy8gRXh0cmEgcGFyZW5zIGFyZSBuZWVkZWQgZm9yIHRoZSBDKyswMyBkZWZpbml0
aW9uIG9mIGRlY2x0eXBlLgorICAgIHR5cGVkZWYgZGVjbHR5cGUoKF9fdGVzdF9zd2FwPF9UcCwg
X1VwPigwKSkpIF9fc3dhcDE7CisgICAgdHlwZWRlZiBkZWNsdHlwZSgoX190ZXN0X3N3YXA8X1Vw
LCBfVHA+KDApKSkgX19zd2FwMjsKKworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gIXN0
ZDo6aXNfc2FtZTxfX3N3YXAxLCBfX25hdD46OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAhc3RkOjppc19zYW1lPF9fc3dhcDIsIF9fbmF0Pjo6dmFsdWU7Cit9OwogCi0gICAg
T3B0aW9uYWwoY29uc3QgVCYgdmFsdWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1ZSkKLSAg
ICB7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQodmFsdWUpOwotICAgIH0KK3Rl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9VcD4KK3N0cnVjdCBfX3N3YXBwYWJsZV93aXRoPF9U
cCwgX1VwLCAgZmFsc2U+IDogc3RkOjpmYWxzZV90eXBlIHt9OwogCi0gICAgT3B0aW9uYWwoY29u
c3QgT3B0aW9uYWwmIG90aGVyKQotICAgICAgICA6IG1faXNFbmdhZ2VkKG90aGVyLm1faXNFbmdh
Z2VkKQotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgbmV3IChO
b3ROdWxsLCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0gICAgfQordGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX1VwID0gX1RwLCBib29sIF9Td2FwcGFibGUgPSBfX3N3YXBwYWJsZV93
aXRoPF9UcCwgX1VwPjo6dmFsdWU+CitzdHJ1Y3QgX19ub3Rocm93X3N3YXBwYWJsZV93aXRoIHsK
KyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPQorICAgICAgbm9leGNlcHQoc3RkOjpzd2FwKHN0
ZDo6ZGVjbHZhbDxfVHA+KCksIHN0ZDo6ZGVjbHZhbDxfVXA+KCkpKQorICAmJiAgbm9leGNlcHQo
c3RkOjpzd2FwKHN0ZDo6ZGVjbHZhbDxfVXA+KCksIHN0ZDo6ZGVjbHZhbDxfVHA+KCkpKTsKK307
CiAKLSAgICBPcHRpb25hbChPcHRpb25hbCYmIG90aGVyKQotICAgICAgICA6IG1faXNFbmdhZ2Vk
KG90aGVyLm1faXNFbmdhZ2VkKQotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAg
ICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0cigp
KSk7Ci0gICAgfQordGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX1VwPgorc3RydWN0IF9fbm90
aHJvd19zd2FwcGFibGVfd2l0aDxfVHAsIF9VcCwgZmFsc2U+IDogc3RkOjpmYWxzZV90eXBlIHt9
OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfbm90aHJvd19zd2FwcGFibGUK
KyAgICA6IHB1YmxpYyBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIF9fbm90aHJvd19zd2Fw
cGFibGVfd2l0aDxfVHAmPjo6dmFsdWU+Cit7Cit9OworCitzdHJ1Y3QgSW5QbGFjZVR5cGUge307
Citjb25zdGV4cHIgSW5QbGFjZVR5cGUgSW5QbGFjZXt9OworCitzdHJ1Y3QgTnVsbG9wdFR5cGUK
K3sKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgTnVsbG9wdFR5cGUoaW50KSBub2V4Y2VwdCB7fQor
fTsKKworY29uc3RleHByIE51bGxvcHRUeXBlIE51bGxvcHR7MH07CiAKLSAgICBPcHRpb25hbChU
JiYgdmFsdWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1ZSkKK3RlbXBsYXRlIDxjbGFzcyBf
VHAsIGJvb2wgPSBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8X1RwPjo6dmFsdWU+Citj
bGFzcyBfX29wdGlvbmFsX3N0b3JhZ2UKK3sKK3Byb3RlY3RlZDoKKyAgICB0eXBlZGVmIF9UcCB2
YWx1ZV90eXBlOworICAgIHVuaW9uCiAgICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3Zh
bHVlKSBUKFdURk1vdmUodmFsdWUpKTsKLSAgICB9CisgICAgICAgIGNoYXIgX19udWxsX3N0YXRl
XzsKKyAgICAgICAgdmFsdWVfdHlwZSBfX3ZhbF87CisgICAgfTsKKyAgICBib29sIF9fZW5nYWdl
ZF8gPSBmYWxzZTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgT3B0aW9u
YWwoSW5QbGFjZVRhZywgQXJncyYmLi4uIGFyZ3MpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1
ZSkKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgfl9fb3B0aW9uYWxfc3RvcmFnZSgpCiAgICAgewot
ICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgICAgIGlmIChfX2VuZ2FnZWRfKQorICAgICAgICAgICAgX192YWxfLn52YWx1
ZV90eXBlKCk7CiAgICAgfQogCi0gICAgfk9wdGlvbmFsKCkKKyAgICBBTFdBWVNfSU5MSU5FCisg
ICAgY29uc3RleHByIF9fb3B0aW9uYWxfc3RvcmFnZSgpIG5vZXhjZXB0CisgICAgICAgIDogIF9f
bnVsbF9zdGF0ZV8oJ1wwJykge30KKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBfX29wdGlvbmFs
X3N0b3JhZ2UoY29uc3QgX19vcHRpb25hbF9zdG9yYWdlJiBfX3gpCisgICAgICAgIDogIF9fZW5n
YWdlZF8oX194Ll9fZW5nYWdlZF8pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChfX2VuZ2Fn
ZWRfKQorICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZihfX3ZhbF8p
KSB2YWx1ZV90eXBlKF9feC5fX3ZhbF8pOworICAgICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
CisgICAgX19vcHRpb25hbF9zdG9yYWdlKF9fb3B0aW9uYWxfc3RvcmFnZSYmIF9feCkKKyAgICAg
ICAgICAgICAgICAgICAgICBub2V4Y2VwdChzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3Rp
YmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSkKKyAgICAgICAgOiAgX19lbmdhZ2VkXyhfX3guX19lbmdh
Z2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKF9fZW5nYWdlZF8pCisgICAgICAgICAg
ICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKF9fdmFsXykpIHZhbHVlX3R5cGUoV1RG
TW92ZShfX3guX192YWxfKSk7CisgICAgICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBj
b25zdGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKGNvbnN0IHZhbHVlX3R5cGUmIF9fdikKKyAgICAg
ICAgOiAgX192YWxfKF9fdiksCisgICAgICAgICAgIF9fZW5nYWdlZF8odHJ1ZSkge30KKworICAg
IEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKHZhbHVlX3R5
cGUmJiBfX3YpCisgICAgICAgIDogIF9fdmFsXyhXVEZNb3ZlKF9fdikpLAorICAgICAgICAgICBf
X2VuZ2FnZWRfKHRydWUpIHt9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0FyZ3M+CisgICAg
QUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwcgorICAgIGV4cGxpY2l0IF9fb3B0aW9uYWxfc3Rv
cmFnZShJblBsYWNlVHlwZSwgX0FyZ3MmJi4uLiBfX2FyZ3MpCisgICAgICAgOiAgX192YWxfKHN0
ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLiksCisgICAgICAgICAgIF9fZW5nYWdlZF8odHJ1
ZSkge30KK307CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitjbGFzcyBfX29wdGlvbmFsX3N0b3Jh
Z2U8X1RwLCB0cnVlPgoreworcHJvdGVjdGVkOgorICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7
CisgICAgdW5pb24KICAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICB9CisgICAgICAgIGNo
YXIgX19udWxsX3N0YXRlXzsKKyAgICAgICAgdmFsdWVfdHlwZSBfX3ZhbF87CisgICAgfTsKKyAg
ICBib29sIF9fZW5nYWdlZF8gPSBmYWxzZTsKKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBjb25z
dGV4cHIgX19vcHRpb25hbF9zdG9yYWdlKCkgbm9leGNlcHQKKyAgICAgICAgOiAgX19udWxsX3N0
YXRlXygnXDAnKSB7fQorCisgICAgQUxXQVlTX0lOTElORQorICAgIF9fb3B0aW9uYWxfc3RvcmFn
ZShjb25zdCBfX29wdGlvbmFsX3N0b3JhZ2UmIF9feCkKKyAgICAgICAgOiAgX19lbmdhZ2VkXyhf
X3guX19lbmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKF9fZW5nYWdlZF8pCisg
ICAgICAgICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKF9fdmFsXykpIHZhbHVl
X3R5cGUoX194Ll9fdmFsXyk7CisgICAgICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUKKyAgICBf
X29wdGlvbmFsX3N0b3JhZ2UoX19vcHRpb25hbF9zdG9yYWdlJiYgX194KQorICAgICAgICAgICAg
ICAgICAgICAgIG5vZXhjZXB0KHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8dmFs
dWVfdHlwZT46OnZhbHVlKQorICAgICAgICA6ICBfX2VuZ2FnZWRfKF9feC5fX2VuZ2FnZWRfKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoX19lbmdhZ2VkXykKKyAgICAgICAgICAgICAgICA6
Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YoX192YWxfKSkgdmFsdWVfdHlwZShXVEZNb3ZlKF9f
eC5fX3ZhbF8pKTsKKyAgICAgICAgfQorCisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhw
ciBfX29wdGlvbmFsX3N0b3JhZ2UoY29uc3QgdmFsdWVfdHlwZSYgX192KQorICAgICAgICA6ICBf
X3ZhbF8oX192KSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVlKSB7fQorCisgICAgQUxXQVlT
X0lOTElORQorICAgIGNvbnN0ZXhwciBfX29wdGlvbmFsX3N0b3JhZ2UodmFsdWVfdHlwZSYmIF9f
dikKKyAgICAgICAgOiAgX192YWxfKFdURk1vdmUoX192KSksCisgICAgICAgICAgIF9fZW5nYWdl
ZF8odHJ1ZSkge30KKworICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBfQXJncz4KKyAgICBBTFdBWVNf
SU5MSU5FCisgICAgY29uc3RleHByCisgICAgZXhwbGljaXQgX19vcHRpb25hbF9zdG9yYWdlKElu
UGxhY2VUeXBlLCBfQXJncyYmLi4uIF9fYXJncykKKyAgICAgICA6ICBfX3ZhbF8oc3RkOjpmb3J3
YXJkPF9BcmdzPihfX2FyZ3MpLi4uKSwKKyAgICAgICAgICAgX19lbmdhZ2VkXyh0cnVlKSB7fQor
fTsKIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFRhZykKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitjbGFzcyBPcHRpb25hbAorICAgIDogcHJpdmF0ZSBfX29wdGlvbmFsX3N0b3JhZ2U8
X1RwPgoreworICAgIHR5cGVkZWYgX19vcHRpb25hbF9zdG9yYWdlPF9UcD4gX19iYXNlOworcHVi
bGljOgorICAgIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CisKKyAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX3JlZmVyZW5jZTx2YWx1ZV90eXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICJJbnN0
YW50aWF0aW9uIG9mIE9wdGlvbmFsIHdpdGggYSByZWZlcmVuY2UgdHlwZSBpcyBpbGwtZm9ybWVk
LiIpOworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jdjx2YWx1ZV90eXBlPjo6dHlwZSwgSW5QbGFjZVR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAg
ICAgIkluc3RhbnRpYXRpb24gb2YgT3B0aW9uYWwgd2l0aCBhIEluUGxhY2VUeXBlIHR5cGUgaXMg
aWxsLWZvcm1lZC4iKTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8dmFsdWVfdHlwZT46OnR5cGUsIE51bGxvcHRUeXBlPjo6dmFsdWUsCisg
ICAgICAgICAgICAgICJJbnN0YW50aWF0aW9uIG9mIE9wdGlvbmFsIHdpdGggYSBOdWxsb3B0VHlw
ZSB0eXBlIGlzIGlsbC1mb3JtZWQuIik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX29iamVj
dDx2YWx1ZV90eXBlPjo6dmFsdWUsCisgICAgICAgICJJbnN0YW50aWF0aW9uIG9mIE9wdGlvbmFs
IHdpdGggYSBub24tb2JqZWN0IHR5cGUgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLiIpOworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19ub3Rocm93X2Rlc3RydWN0aWJsZTx2YWx1ZV90eXBlPjo6dmFs
dWUsCisgICAgICAgICJJbnN0YW50aWF0aW9uIG9mIE9wdGlvbmFsIHdpdGggYW4gb2JqZWN0IHR5
cGUgdGhhdCBpcyBub3Qgbm9leGNlcHQgZGVzdHJ1Y3RpYmxlIGlzIHVuZGVmaW5lZCBiZWhhdmlv
ci4iKTsKKworICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIE9wdGlvbmFsKCkgbm9leGNlcHQg
e30KKyAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsKGNvbnN0IE9wdGlvbmFsJikgPSBkZWZhdWx0
OworICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWwoT3B0aW9uYWwmJikgPSBkZWZhdWx0OworICAg
IEFMV0FZU19JTkxJTkUgfk9wdGlvbmFsKCkgPSBkZWZhdWx0OworICAgIEFMV0FZU19JTkxJTkUg
Y29uc3RleHByIE9wdGlvbmFsKE51bGxvcHRUeXBlKSBub2V4Y2VwdCB7fQorICAgIEFMV0FZU19J
TkxJTkUgY29uc3RleHByIE9wdGlvbmFsKGNvbnN0IHZhbHVlX3R5cGUmIF9fdikKKyAgICAgICAg
OiBfX2Jhc2UoX192KSB7fQorICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIE9wdGlvbmFsKHZh
bHVlX3R5cGUmJiBfX3YpCisgICAgICAgIDogX19iYXNlKFdURk1vdmUoX192KSkge30KKworICAg
IHRlbXBsYXRlIDxjbGFzcy4uLiBfQXJncywKKyAgICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZgorICAgICAgICAgICAgICAgICAgICAgIDwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlLCBfQXJncy4uLj46
OnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQorICAgICAgICAgICAgID4KKyAg
ICBBTFdBWVNfSU5MSU5FCisgICAgY29uc3RleHByCisgICAgZXhwbGljaXQgT3B0aW9uYWwoSW5Q
bGFjZVR5cGUsIF9BcmdzJiYuLi4gX19hcmdzKQorICAgICAgICA6IF9fYmFzZShJblBsYWNlLCBz
dGQ6OmZvcndhcmQ8X0FyZ3M+KF9fYXJncykuLi4pIHt9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1VwLCBjbGFzcy4uLiBfQXJncywKKyAgICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZgorICAgICAgICAgICAgICAgICAgICAgIDwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6aXNfY29uc3RydWN0aWJsZTx2YWx1ZV90eXBlLCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8X1VwPiYsIF9BcmdzLi4uPjo6dmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICA+Ojp0
eXBlCisgICAgICAgICAgICAgPgorICAgIEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIKKyAg
ICBleHBsaWNpdCBPcHRpb25hbChJblBsYWNlVHlwZSwgc3RkOjppbml0aWFsaXplcl9saXN0PF9V
cD4gX19pbCwgX0FyZ3MmJi4uLiBfX2FyZ3MpCisgICAgICAgIDogX19iYXNlKEluUGxhY2UsIF9f
aWwsIHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLikge30KKworICAgIEFMV0FZU19JTkxJ
TkUKKyAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE51bGxvcHRUeXBlKSBub2V4Y2VwdAogICAgIHsK
LSAgICAgICAgZGVzdHJveSgpOworICAgICAgICBpZiAodGhpcy0+X19lbmdhZ2VkXykKKyAgICAg
ICAgeworICAgICAgICAgICAgdGhpcy0+X192YWxfLn52YWx1ZV90eXBlKCk7CisgICAgICAgICAg
ICB0aGlzLT5fX2VuZ2FnZWRfID0gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3QgT3B0aW9uYWwmIG90
aGVyKQorICAgIEFMV0FZU19JTkxJTkUKKyAgICBPcHRpb25hbCYKKyAgICBvcGVyYXRvcj0oY29u
c3QgT3B0aW9uYWwmIF9fb3B0KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQot
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAg
aWYgKG90aGVyLm1faXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3Zh
bHVlKSBUKCpvdGhlci5hc1B0cigpKTsKLSAgICAgICAgICAgIG1faXNFbmdhZ2VkID0gdHJ1ZTsK
KyAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8gPT0gX19vcHQuX19lbmdhZ2VkXykKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisgICAgICAgICAgICAgICAg
dGhpcy0+X192YWxfID0gX19vcHQuX192YWxfOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisgICAgICAgICAgICAg
ICAgdGhpcy0+X192YWxfLn52YWx1ZV90eXBlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXykpIHZhbHVl
X3R5cGUoX19vcHQuX192YWxfKTsKKyAgICAgICAgICAgIHRoaXMtPl9fZW5nYWdlZF8gPSBfX29w
dC5fX2VuZ2FnZWRfOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFsJiYgb3RoZXIpCisgICAgQUxXQVlTX0lO
TElORQorICAgIE9wdGlvbmFsJgorICAgIG9wZXJhdG9yPShPcHRpb25hbCYmIF9fb3B0KQorICAg
ICAgICBub2V4Y2VwdChzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPHZhbHVlX3R5cGU+
Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1
Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZv
dGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgICBkZXN0cm95KCk7Ci0g
ICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0cigpKSk7Ci0gICAgICAgICAgICBtX2lz
RW5nYWdlZCA9IHRydWU7CisgICAgICAgIGlmICh0aGlzLT5fX2VuZ2FnZWRfID09IF9fb3B0Ll9f
ZW5nYWdlZF8pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLT5fX2VuZ2FnZWRfKQor
ICAgICAgICAgICAgICAgIHRoaXMtPl9fdmFsXyA9IFdURk1vdmUoX19vcHQuX192YWxfKTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLT5f
X2VuZ2FnZWRfKQorICAgICAgICAgICAgICAgIHRoaXMtPl9fdmFsXy5+dmFsdWVfdHlwZSgpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJl
c3NvZih0aGlzLT5fX3ZhbF8pKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlKFdURk1v
dmUoX19vcHQuX192YWxfKSk7CisgICAgICAgICAgICB0aGlzLT5fX2VuZ2FnZWRfID0gX19vcHQu
X19lbmdhZ2VkXzsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBUPjo6
dmFsdWU+Ojp0eXBlPgotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oVSYmIHUpCisgICAgdGVtcGxh
dGUgPGNsYXNzIF9VcCwKKyAgICAgICAgICAgICAgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZgorICAgICAgICAgICAgICAgICAgICAgIDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxfVXA+Ojp0eXBlLCB2
YWx1ZV90eXBlPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19j
b25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGUsIF9VcD46OnZhbHVlICYmCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6aXNfYXNzaWduYWJsZTx2YWx1ZV90eXBlJiwgX1VwPjo6dmFsdWUKKyAg
ICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCisgICAgICAgICAgICAgPgorICAgIEFMV0FZU19J
TkxJTkUKKyAgICBPcHRpb25hbCYKKyAgICBvcGVyYXRvcj0oX1VwJiYgX192KQogICAgIHsKLSAg
ICAgICAgZGVzdHJveSgpOwotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6
Zm9yd2FyZDxVPih1KSk7Ci0gICAgICAgIG1faXNFbmdhZ2VkID0gdHJ1ZTsKKyAgICAgICAgaWYg
KHRoaXMtPl9fZW5nYWdlZF8pCisgICAgICAgICAgICB0aGlzLT5fX3ZhbF8gPSBzdGQ6OmZvcndh
cmQ8X1VwPihfX3YpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIDo6bmV3
KCh2b2lkKilzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3ZhbF8pKSB2YWx1ZV90eXBlKHN0ZDo6Zm9y
d2FyZDxfVXA+KF9fdikpOworICAgICAgICAgICAgdGhpcy0+X19lbmdhZ2VkXyA9IHRydWU7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2lzRW5nYWdlZDsgfQotCi0gICAgY29uc3Qg
VCogb3BlcmF0b3ItPigpIGNvbnN0CisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIF9BcmdzLAorICAg
ICAgICAgICAgICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgICAgICAgICAgICAg
ICAgICAgICAgPAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGli
bGU8dmFsdWVfdHlwZSwgX0FyZ3MuLi4+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgID46
OnR5cGUKKyAgICAgICAgICAgICA+CisgICAgQUxXQVlTX0lOTElORQorICAgIHZvaWQKKyAgICBl
bXBsYWNlKF9BcmdzJiYuLi4gX19hcmdzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdh
Z2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRyKCk7CisgICAgICAgICp0aGlzID0gTnVsbG9wdDsK
KyAgICAgICAgOjpuZXcoKHZvaWQqKXN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXykpCisgICAg
ICAgICAgICB2YWx1ZV90eXBlKHN0ZDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CisgICAg
ICAgIHRoaXMtPl9fZW5nYWdlZF8gPSB0cnVlOwogICAgIH0KIAotICAgIFQqIG9wZXJhdG9yLT4o
KQorICAgIHRlbXBsYXRlIDxjbGFzcyBfVXAsIGNsYXNzLi4uIF9BcmdzLAorICAgICAgICAgICAg
ICBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgICAgICAgICAgICAgICAgICAgICAg
PAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8dmFsdWVf
dHlwZSwgc3RkOjppbml0aWFsaXplcl9saXN0PF9VcD4mLCBfQXJncy4uLj46OnZhbHVlCisgICAg
ICAgICAgICAgICAgICAgICAgPjo6dHlwZQorICAgICAgICAgICAgID4KKyAgICBBTFdBWVNfSU5M
SU5FCisgICAgdm9pZAorICAgIGVtcGxhY2Uoc3RkOjppbml0aWFsaXplcl9saXN0PF9VcD4gX19p
bCwgX0FyZ3MmJi4uLiBfX2FyZ3MpCiAgICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2FnZWQp
OwotICAgICAgICByZXR1cm4gYXNQdHIoKTsKKyAgICAgICAgKnRoaXMgPSBOdWxsb3B0OworICAg
ICAgICA6Om5ldygodm9pZCopc3RkOjphZGRyZXNzb2YodGhpcy0+X192YWxfKSkKKyAgICAgICAg
ICAgIHZhbHVlX3R5cGUoX19pbCwgc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKKyAg
ICAgICAgdGhpcy0+X19lbmdhZ2VkXyA9IHRydWU7CiAgICAgfQogCi0gICAgY29uc3QgVCYgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFQmIG9wZXJhdG9yKigpIHsg
cmV0dXJuIHZhbHVlKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FCisgICAgdm9pZAorICAgIHN3YXAo
T3B0aW9uYWwmIF9fb3B0KQorICAgICAgICBub2V4Y2VwdChzdGQ6OmlzX25vdGhyb3dfbW92ZV9j
b25zdHJ1Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICBfX2lz
X25vdGhyb3dfc3dhcHBhYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSkKKyAgICB7CisgICAgICAgIHVz
aW5nIHN0ZDo6c3dhcDsKKyAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8gPT0gX19vcHQuX19l
bmdhZ2VkXykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMtPl9fZW5nYWdlZF8pCisg
ICAgICAgICAgICAgICAgc3dhcCh0aGlzLT5fX3ZhbF8sIF9fb3B0Ll9fdmFsXyk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy0+X19lbmdh
Z2VkXykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICA6Om5ldygodm9pZCopc3RkOjph
ZGRyZXNzb2YoX19vcHQuX192YWxfKSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZShX
VEZNb3ZlKHRoaXMtPl9fdmFsXykpOworICAgICAgICAgICAgICAgIHRoaXMtPl9fdmFsXy5+dmFs
dWVfdHlwZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIDo6bmV3KCh2b2lkKilzdGQ6OmFkZHJlc3NvZih0aGlzLT5fX3Zh
bF8pKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlKFdURk1vdmUoX19vcHQuX192YWxf
KSk7CisgICAgICAgICAgICAgICAgX19vcHQuX192YWxfLn52YWx1ZV90eXBlKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBzd2FwKHRoaXMtPl9fZW5nYWdlZF8sIF9fb3B0Ll9fZW5nYWdl
ZF8pOworICAgICAgICB9CisgICAgfQogCi0gICAgVCYgdmFsdWUoKQorICAgIEFMV0FZU19JTkxJ
TkUKKyAgICBjb25zdGV4cHIKKyAgICB2YWx1ZV90eXBlIGNvbnN0KgorICAgIG9wZXJhdG9yLT4o
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0
dXJuICphc1B0cigpOworICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFs
IGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250
ZXh0LgorICAgICAgICAvLyBDT05TVEVYUFJfQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzLT5fX2Vu
Z2FnZWRfLCAiT3B0aW9uYWwgb3BlcmF0b3ItPiBjYWxsZWQgZm9yIGRpc2VuZ2FnZWQgdmFsdWUi
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKHRoaXMtPl9fdmFsXyk7CiAgICAgfQog
Ci0gICAgY29uc3QgVCYgdmFsdWUoKSBjb25zdAorICAgIEFMV0FZU19JTkxJTkUKKyAgICB2YWx1
ZV90eXBlKgorICAgIG9wZXJhdG9yLT4oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdh
Z2VkKTsKLSAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHRoaXMtPl9fZW5nYWdlZF8sICJPcHRpb25hbCBvcGVyYXRvci0+IGNhbGxlZCBmb3IgZGlz
ZW5nYWdlZCB2YWx1ZSIpOworICAgICAgICByZXR1cm4gc3RkOjphZGRyZXNzb2YodGhpcy0+X192
YWxfKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIFQgdmFsdWVPcihV
JiYgdmFsdWUpIGNvbnN0CisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwcgorICAgIGNv
bnN0IHZhbHVlX3R5cGUmCisgICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlm
IChtX2lzRW5nYWdlZCkKLSAgICAgICAgICAgIHJldHVybiAqYXNQdHIoKTsKKyAgICAgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4g
YmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAgICAgLy8gQ09OU1RFWFBS
X0FTU0VSVF9XSVRIX01FU1NBR0UodGhpcy0+X19lbmdhZ2VkXywgIk9wdGlvbmFsIG9wZXJhdG9y
KiBjYWxsZWQgZm9yIGRpc2VuZ2FnZWQgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPl9f
dmFsXzsKKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7Cisg
ICAgQUxXQVlTX0lOTElORQorICAgIHZhbHVlX3R5cGUmCisgICAgb3BlcmF0b3IqKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodGhpcy0+X19lbmdhZ2VkXywgIk9wdGlvbmFs
IG9wZXJhdG9yKiBjYWxsZWQgZm9yIGRpc2VuZ2FnZWQgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMtPl9fdmFsXzsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIFQg
dmFsdWVPckNvbXB1dGUoVSBjYWxsYmFjaykgY29uc3QKKyAgICBBTFdBWVNfSU5MSU5FCisgICAg
Y29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBub2V4Y2VwdCB7cmV0dXJu
IHRoaXMtPl9fZW5nYWdlZF87fQorCisgICAgQUxXQVlTX0lOTElORQorICAgIGNvbnN0ZXhwciB2
YWx1ZV90eXBlIGNvbnN0JiB2YWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9pc0Vu
Z2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQg
dW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgICAgIC8vIENPTlNURVhQUl9BU1NFUlQo
IXRoaXMtPl9fZW5nYWdlZF8pOworICAgICAgICByZXR1cm4gdGhpcy0+X192YWxfOworICAgIH0K
IAotICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKKyAgICBBTFdBWVNfSU5MSU5FCisgICAgdmFs
dWVfdHlwZSYgdmFsdWUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMtPl9fZW5nYWdlZF8p
OworICAgICAgICByZXR1cm4gdGhpcy0+X192YWxfOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBj
b25zdCBUKiBhc1B0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+
KCZtX3ZhbHVlKTsgfQotICAgIFQqIGFzUHRyKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxU
Kj4oJm1fdmFsdWUpOyB9Ci0gICAgdm9pZCBkZXN0cm95KCkKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1VwPgorICAgIEFMV0FZU19JTkxJTkUKKyAgICBjb25zdGV4cHIgdmFsdWVfdHlwZSB2YWx1ZV9v
cihfVXAmJiBfX3YpIGNvbnN0JgogICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKSB7Ci0g
ICAgICAgICAgICBhc1B0cigpLT5+VCgpOwotICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSBmYWxz
ZTsKLSAgICAgICAgfQorICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfY29weV9jb25zdHJ1
Y3RpYmxlPHZhbHVlX3R5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAiT3B0aW9u
YWw8VD46OnZhbHVlX29yOiBUIG11c3QgYmUgY29weSBjb25zdHJ1Y3RpYmxlIik7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19jb252ZXJ0aWJsZTxfVXAsIHZhbHVlX3R5cGU+Ojp2YWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAiT3B0aW9uYWw8VD46OnZhbHVlX29yOiBVIG11c3Qg
YmUgY29udmVydGlibGUgdG8gVCIpOworICAgICAgICByZXR1cm4gdGhpcy0+X19lbmdhZ2VkXyA/
IHRoaXMtPl9fdmFsXyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8dmFsdWVfdHlwZT4oc3RkOjpmb3J3YXJkPF9VcD4oX192KSk7CiAgICAgfQogCi0gICAg
Ym9vbCBtX2lzRW5nYWdlZDsKLSAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXpl
b2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgbV92YWx1ZTsKKyAgICB0
ZW1wbGF0ZSA8Y2xhc3MgX1VwPgorICAgIEFMV0FZU19JTkxJTkUKKyAgICB2YWx1ZV90eXBlIHZh
bHVlX29yKF9VcCYmIF9fdikgJiYKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19tb3ZlX2NvbnN0cnVjdGlibGU8dmFsdWVfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICAgICJPcHRpb25hbDxUPjo6dmFsdWVfb3I6IFQgbXVzdCBiZSBtb3ZlIGNvbnN0cnVjdGli
bGUiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2NvbnZlcnRpYmxlPF9VcCwgdmFs
dWVfdHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICJPcHRpb25hbDxUPjo6dmFs
dWVfb3I6IFUgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBUIik7CisgICAgICAgIHJldHVybiB0aGlz
LT5fX2VuZ2FnZWRfID8gV1RGTW92ZSh0aGlzLT5fX3ZhbF8pIDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlPihzdGQ6OmZvcndhcmQ8X1Vw
PihfX3YpKTsKKyAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgbGhzLCBjb25zdCBPcHRpb25hbDxUPiYg
cmhzKQorLy8gQ29tcGFyaXNvbnMgYmV0d2VlbiBvcHRpb25hbHMKK3RlbXBsYXRlIDxjbGFzcyBf
VHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9yPT0oY29uc3QgT3B0
aW9uYWw8X1RwPiYgX194LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3kpCit7CisgICAgcmV0dXJu
IChzdGF0aWNfY2FzdDxib29sPihfX3gpICE9IHN0YXRpY19jYXN0PGJvb2w+KF9feSkpCisgICAg
ICAgID8gZmFsc2UgOiAoIXN0YXRpY19jYXN0PGJvb2w+KF9feCkpCisgICAgICAgID8gdHJ1ZSA6
ICpfX3ggPT0gKl9feTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUK
K2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNv
bnN0IE9wdGlvbmFsPF9UcD4mIF9feSkKK3sKKyAgICByZXR1cm4gIShfX3ggPT0gX195KTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAor
b3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgT3B0aW9uYWw8X1RwPiYg
X195KQoreworICAgIHJldHVybiAoIXN0YXRpY19jYXN0PGJvb2w+KF9feSkpCisgICAgICAgID8g
ZmFsc2UgOiAoIXN0YXRpY19jYXN0PGJvb2w+KF9feCkpCisgICAgICAgID8gdHJ1ZSA6ICpfX3gg
PCAqX195OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3Rl
eHByCitib29sCitvcGVyYXRvcj4oY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25zdCBPcHRp
b25hbDxfVHA+JiBfX3kpCit7CisgICAgcmV0dXJuIF9feSA8IF9feDsKK30KKwordGVtcGxhdGUg
PGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8PShj
b25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feSkKK3sKKyAg
ICByZXR1cm4gIShfX3kgPCBfX3gpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlT
X0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPF9UcD4m
IF9feCwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX195KQoreworICAgIHJldHVybiAhKF9feCA8IF9f
eSk7Cit9CisKKworLy8gQ29tcGFyaXNvbnMgd2l0aCBOdWxsb3B0Cit0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj09KGNvbnN0IE9w
dGlvbmFsPF9UcD4mIF9feCwgTnVsbG9wdFR5cGUpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuICFz
dGF0aWNfY2FzdDxib29sPihfX3gpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlT
X0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj09KE51bGxvcHRUeXBlLCBjb25zdCBP
cHRpb25hbDxfVHA+JiBfX3gpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuICFzdGF0aWNfY2FzdDxi
b29sPihfX3gpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29u
c3RleHByCitib29sCitvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgTnVsbG9w
dFR5cGUpIG5vZXhjZXB0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wK
K29wZXJhdG9yIT0oTnVsbG9wdFR5cGUsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCkgbm9leGNl
cHQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8KGNv
bnN0IE9wdGlvbmFsPF9UcD4mLCBOdWxsb3B0VHlwZSkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4
cHIKK2Jvb2wKK29wZXJhdG9yPChOdWxsb3B0VHlwZSwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194
KSBub2V4Y2VwdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihfX3gpOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVy
YXRvcjw9KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgTnVsbG9wdFR5cGUpIG5vZXhjZXB0Cit7
CisgICAgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPihfX3gpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcjw9KE51bGxv
cHRUeXBlLCBjb25zdCBPcHRpb25hbDxfVHA+Jikgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgor
Ym9vbAorb3BlcmF0b3I+KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgTnVsbG9wdFR5cGUpIG5v
ZXhjZXB0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCk7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wKK29wZXJhdG9y
PihOdWxsb3B0VHlwZSwgY29uc3QgT3B0aW9uYWw8X1RwPiYpIG5vZXhjZXB0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29u
c3RleHByCitib29sCitvcGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPF9UcD4mLCBOdWxsb3B0VHlw
ZSkgbm9leGNlcHQKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9U
cD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I+PShOdWxsb3B0VHlw
ZSwgY29uc3QgT3B0aW9uYWw8X1RwPiYgX194KSBub2V4Y2VwdAoreworICAgIHJldHVybiAhc3Rh
dGljX2Nhc3Q8Ym9vbD4oX194KTsKK30KKworLy8gQ29tcGFyaXNvbnMgd2l0aCBUCit0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRvcj09
KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgX1RwJiBfX3YpCit7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAqX194ID09IF9fdiA6IGZhbHNlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVyYXRv
cj09KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAqX194ID09IF9fdiA6IGZhbHNlOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVy
YXRvciE9KGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCwgY29uc3QgX1RwJiBfX3YpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAhKCpfX3ggPT0gX192KSA6IHRydWU7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK2Jvb2wK
K29wZXJhdG9yIT0oY29uc3QgX1RwJiBfX3YsIGNvbnN0IE9wdGlvbmFsPF9UcD4mIF9feCkKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obGhzKSA9PSBzdGF0aWNfY2FzdDxib29sPihy
aHMpICYmICghc3RhdGljX2Nhc3Q8Ym9vbD4obGhzKSB8fCBsaHMudmFsdWUoKSA9PSByaHMudmFs
dWUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KF9feCkgPyAhKCpfX3ggPT0gX192
KSA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVy
YXRvcjwoY29uc3QgT3B0aW9uYWw8X1RwPiYgX194LCBjb25zdCBfVHAmIF9fdikKIHsKLSAgICBy
ZXR1cm4gIShsaHMgPT0gcmhzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KSA/
IHN0ZDo6bGVzczxfVHA+e30oKl9feCwgX192KSA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQs
IE51bGxvcHRUYWcpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3Rl
eHByCitib29sCitvcGVyYXRvcjwoY29uc3QgX1RwJiBfX3YsIGNvbnN0IE9wdGlvbmFsPF9UcD4m
IF9feCkKIHsKLSAgICByZXR1cm4gIW9wdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
X194KSA/IHN0ZDo6bGVzczxfVHA+e30oX192LCAqX194KSA6IGZhbHNlOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxU
PiYgb3B0LCBOdWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19JTkxJTkUK
K2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I8PShjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNv
bnN0IF9UcCYgX192KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihvcHQpOworICAg
IHJldHVybiAhKF9feCA+IF9fdik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KE51bGxvcHRUYWcsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCit0
ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29uc3RleHByCitib29sCitvcGVy
YXRvcjw9KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gpCiB7Ci0gICAg
cmV0dXJuICFvcHQ7CisgICAgcmV0dXJuICEoX192ID4gX194KTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oTnVsbG9wdFRhZywgY29uc3QgT3B0
aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25z
dGV4cHIKK2Jvb2wKK29wZXJhdG9yPihjb25zdCBPcHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9U
cCYgX192KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihvcHQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihfX3gpID8gX192IDwgX194IDogZmFsc2U7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFs
PFQ+JiBvcHQsIGNvbnN0IFQmIHZhbHVlKQordGVtcGxhdGUgPGNsYXNzIF9UcD4KK0FMV0FZU19J
TkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I+KGNvbnN0IF9UcCYgX192LCBjb25zdCBP
cHRpb25hbDxfVHA+JiBfX3gpCiB7Ci0gICAgcmV0dXJuIG9wdCAmJiBvcHQudmFsdWUoKSA9PSB2
YWx1ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX194KSA/IF9feCA8IF9fdiA6IHRy
dWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIGNvbnN0IFQmIHZhbHVlKQordGVtcGxhdGUgPGNsYXNz
IF9UcD4KK0FMV0FZU19JTkxJTkUKK2NvbnN0ZXhwcgorYm9vbAorb3BlcmF0b3I+PShjb25zdCBP
cHRpb25hbDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX192KQogewotICAgIHJldHVybiAhKG9wdCA9
PSB2YWx1ZSk7CisgICAgcmV0dXJuICEoX194IDwgX192KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdmFsdWUsIGNvbnN0IE9w
dGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQorY29u
c3RleHByCitib29sCitvcGVyYXRvcj49KGNvbnN0IF9UcCYgX192LCBjb25zdCBPcHRpb25hbDxf
VHA+JiBfX3gpCit7CisgICAgcmV0dXJuICEoX192IDwgX194KTsKK30KKworCit0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgorQUxXQVlTX0lOTElORQordm9pZAorc3dhcChPcHRpb25hbDxfVHA+JiBfX3gs
IE9wdGlvbmFsPF9UcD4mIF9feSkgbm9leGNlcHQobm9leGNlcHQoX194LnN3YXAoX195KSkpCiB7
Ci0gICAgcmV0dXJuIG9wdCAmJiBvcHQudmFsdWUoKSA9PSB2YWx1ZTsKKyAgICBfX3guc3dhcChf
X3kpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBUJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFz
cyBfVHA+CitBTFdBWVNfSU5MSU5FCitjb25zdGV4cHIKK09wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6
ZGVjYXk8X1RwPjo6dHlwZT4KK21ha2VPcHRpb25hbChfVHAmJiBfX3YpCiB7Ci0gICAgcmV0dXJu
ICEodmFsdWUgPT0gb3B0KTsKKyAgICByZXR1cm4gT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNh
eTxfVHA+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8X1RwPihfX3YpKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLU9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+Ci1tYWtlT3B0
aW9uYWwoVCYmIHZhbHVlKQorLy8gLS0gV2ViS2l0IEFkZGl0aW9ucyAtLQordGVtcGxhdGUgPGNs
YXNzIE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+CitBTFdBWVNfSU5MSU5FCithdXRvIHZh
bHVlT3JDb21wdXRlKE9wdGlvbmFsVHlwZSBvcHRpb25hbCwgQ2FsbGJhY2sgY2FsbGJhY2spIC0+
IHR5cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFsdWVfdHlwZQogewotICAgIHJldHVybiBPcHRpb25h
bDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKTsK
KyAgICBpZiAob3B0aW9uYWwpCisgICAgICAgIHJldHVybiAqb3B0aW9uYWw7CisgICAgcmV0dXJu
IGNhbGxiYWNrKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCituYW1lc3BhY2Ugc3RkIHsK
KwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK3N0cnVjdCBoYXNoPFdURjo6T3B0aW9uYWw8X1RwPiA+
Cit7CisgICAgdHlwZWRlZiBXVEY6Ok9wdGlvbmFsPF9UcD4gYXJndW1lbnRfdHlwZTsKKyAgICB0
eXBlZGVmIHNpemVfdCAgICAgICAgcmVzdWx0X3R5cGU7CisKKyAgICBBTFdBWVNfSU5MSU5FCisg
ICAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShjb25zdCBhcmd1bWVudF90eXBlJiBfX29wdCkgY29u
c3Qgbm9leGNlcHQKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihfX29w
dCkgPyBoYXNoPF9UcD4oKSgqX19vcHQpIDogMDsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBzdGQKKwogdXNpbmcgV1RGOjpJblBsYWNlOwogdXNpbmcgV1RGOjpOdWxsb3B0OwogdXNpbmcg
V1RGOjpPcHRpb25hbDsKIHVzaW5nIFdURjo6bWFrZU9wdGlvbmFsOwotCi0jZW5kaWYgLy8gT3B0
aW9uYWxfaAordXNpbmcgV1RGOjp2YWx1ZU9yQ29tcHV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggOGJmODI5ZGYwZTQ5OWVmZWRj
YTcxOGQ3MTc0NDVkZjBkZWE2MmIxNy4uMjE4ZGUxNmE2NmMwOWExNWE0M2ViMzQyYzczNjgxY2Nm
ODRiNzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxv
Yihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2Jsb2JMb2FkZXIgPSB7ICp0aGlzIH07CisgICAgbV9i
bG9iTG9hZGVyLmVtcGxhY2UoKnRoaXMpOwogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAg
ICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
CmluZGV4IGExMzg2OTc4MjE0MDA3MjJkN2VjYTJjNzI2ZDU4MDFhODM0MWY5ODguLmUzODA1ZThl
MTI3OWFiNTEyYWFiMjM4MGI0ZTBkOTEyOGQ4Y2RhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTg0LDYgKzg0LDggQEAgY2xhc3MgRmV0
Y2hCb2R5T3duZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaEJvZHlPd25lcj4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QKICAgICBzdHJ1Y3QgQmxvYkxvYWRlciBmaW5hbCA6IEZldGNoTG9hZGVy
Q2xpZW50IHsKICAgICAgICAgQmxvYkxvYWRlcihGZXRjaEJvZHlPd25lciYpOwogCisgICAgICAg
IHZvaWQgc3dhcChCbG9iTG9hZGVyJik7CisKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQg
QVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5ibG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDAy
ZTMxMzUwZjI2ZTBjOWIxODUyNGNkNDI0OWRiYjg2NzI0Mjc2OTcuLjg2ZTI0YWQ5NDRkNTgzMWQ0
ZjI3Mjg1ZGUxNDBiMzczZjgwNTUxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0
JiByZXF1ZXN0CiAgICAgLy8gU2V0dGluZyBwZW5kaW5nIGFjdGl2aXR5IHVudGlsIEJvZHlMb2Fk
ZXIgZGlkRmFpbCBvciBkaWRTdWNjZWVkIGNhbGxiYWNrIGlzIGNhbGxlZC4KICAgICByZXNwb25z
ZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHJlc3BvbnNlLnB0cigpKTsKIAotICAgIHJlc3BvbnNlLT5t
X2JvZHlMb2FkZXIgPSBCb2R5TG9hZGVyKHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyLmVtcGxhY2UocmVzcG9uc2UuZ2V0KCksIFdU
Rk1vdmUocHJvbWlzZSkpOwogICAgIGlmICghcmVzcG9uc2UtPm1fYm9keUxvYWRlci0+c3RhcnQo
Y29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBOdWxs
b3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA5Y2ZmN2EyY2VkZDdhNmQ3ODk4NDlhY2UyYjE4
YjdkNDZkZTMxOTA2Li5kZDlmMTRmZmExNDkzNjExZDAxNjYxYmNhN2E3Zjg4OTI5N2FiZGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlk
ZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJREJEYXRhYmFzZUlkZW50
aWZpZXIgewogICAgICAgICB1bnNpZ25lZCBtYWluRnJhbWVQcm90b2NvbEhhc2ggPSBTdHJpbmdI
YXNoOjpoYXNoKG1fbWFpbkZyYW1lT3JpZ2luLnByb3RvY29sKTsKICAgICAgICAgdW5zaWduZWQg
bWFpbkZyYW1lSG9zdEhhc2ggPSBTdHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1lT3JpZ2luLmhv
c3QpOwogICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzddID0geyBuYW1lSGFz
aCwgb3BlbmluZ1Byb3RvY29sSGFzaCwgb3BlbmluZ0hvc3RIYXNoLCBtX29wZW5pbmdPcmlnaW4u
cG9ydC52YWx1ZU9yKDApLCBtYWluRnJhbWVQcm90b2NvbEhhc2gsIG1haW5GcmFtZUhvc3RIYXNo
LCBtX21haW5GcmFtZU9yaWdpbi5wb3J0LnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdW5zaWduZWQg
aGFzaENvZGVzWzddID0geyBuYW1lSGFzaCwgb3BlbmluZ1Byb3RvY29sSGFzaCwgb3BlbmluZ0hv
c3RIYXNoLCBtX29wZW5pbmdPcmlnaW4ucG9ydC52YWx1ZV9vcigwKSwgbWFpbkZyYW1lUHJvdG9j
b2xIYXNoLCBtYWluRnJhbWVIb3N0SGFzaCwgbV9tYWluRnJhbWVPcmlnaW4ucG9ydC52YWx1ZV9v
cigwKSB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZiho
YXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCAxYzQ0MGI4YTY2Y2E2ZGMwNTBkMTJj
YzExOTY1YTY4MTA2MjY4ZTk5Li5mNjJhZGJiZmNkMzUzNzQ0ODM0NDJlZGFjM2Q4MjExZTBiNTc0
ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+
IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAgIGlmICh2
ZXJzaW9uICYmICF2ZXJzaW9uLnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdpdGggYSB2
ZXJzaW9uIG9mIDAiKSB9OwogCi0gICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1l
LCB2ZXJzaW9uLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwg
bmFtZSwgdmVyc2lvbi52YWx1ZV9vcigwKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVu
REJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcAppbmRleCBmN2JjN2QzOWNkY2VhNGU2NGM0NWRiODQzYmE1ZDM5MDFhNTM1MmMz
Li5jYzEyOTdhNzVmNDJiMDNjZTEwM2E3MjdkNmU3NGIwZjllODY5MzQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAg
LTk3LDggKzk3LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRN
Rihjb25zdCBTdHJpbmcmIHRvbmVzLCBPcHRpb25hbDxpbnQ+IGQKICAgICBpZiAoaW50ZXJUb25l
R2FwICYmIGludGVyVG9uZUdhcC52YWx1ZSgpIDwgbWluSW50ZXJUb25lR2FwTXMpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKLSAgICBtX2R1cmF0aW9uID0gZHVy
YXRpb24udmFsdWVPcihkZWZhdWx0VG9uZUR1cmF0aW9uTXMpOwotICAgIG1faW50ZXJUb25lR2Fw
ID0gaW50ZXJUb25lR2FwLnZhbHVlT3IoZGVmYXVsdEludGVyVG9uZUdhcE1zKTsKKyAgICBtX2R1
cmF0aW9uID0gZHVyYXRpb24udmFsdWVfb3IoZGVmYXVsdFRvbmVEdXJhdGlvbk1zKTsKKyAgICBt
X2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1ZV9vcihkZWZhdWx0SW50ZXJUb25lR2Fw
TXMpOwogCiAgICAgaWYgKCFtX2hhbmRsZXItPmluc2VydERUTUYodG9uZXMsIG1fZHVyYXRpb24s
IG1faW50ZXJUb25lR2FwKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggMjQxMjcx
ZjY2OGI1ZGZkOGNmOGYwMGVhYzc1NWJjODNlMmI3N2U1YS4uZjdmNmJmZGZmNWNjZjgyZGVkZWRm
Nzg3YzY2ZTQwNGQ1Mjg5MzliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmgKQEAgLTIwMiwxMSArMjAyLDE3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZT4K
IGNsYXNzIERPTVByb21pc2UgewogcHVibGljOgogICAgIERPTVByb21pc2UoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBnZW5lcmljUHJvbWlzZSkgOiBtX3Byb21pc2VEZWZlcnJlZChXVEZNb3ZlKGdl
bmVyaWNQcm9taXNlKSkgeyB9CisgICAgRE9NUHJvbWlzZShjb25zdCBET01Qcm9taXNlJiBvdGhl
cikKKyAgICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChvdGhlci5tX3Byb21pc2VEZWZlcnJlZC5j
b3B5UmVmKCkpCisgICAgeworICAgIH0KKyAgICBET01Qcm9taXNlKERPTVByb21pc2UmJikgPSBk
ZWZhdWx0OwogCi0gICAgRE9NUHJvbWlzZShET01Qcm9taXNlJiYgcHJvbWlzZSkgOiBtX3Byb21p
c2VEZWZlcnJlZChXVEZNb3ZlKHByb21pc2UubV9wcm9taXNlRGVmZXJyZWQpKSB7IH0KLQotICAg
IERPTVByb21pc2UoY29uc3QgRE9NUHJvbWlzZSYpID0gZGVmYXVsdDsKLSAgICBET01Qcm9taXNl
JiBvcGVyYXRvcj0oRE9NUHJvbWlzZSBjb25zdCYpID0gZGVmYXVsdDsKKyAgICBET01Qcm9taXNl
JiBvcGVyYXRvcj0oRE9NUHJvbWlzZSBvdGhlcikKKyAgICB7CisgICAgICAgIHN3YXAob3RoZXIp
OworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgdm9pZCByZXNvbHZlKHR5cGVu
YW1lIFByb21pc2VSZXN1bHRJbnNwZWN0b3I8VmFsdWU+OjpUeXBlIHZhbHVlKSB7IG1fcHJvbWlz
ZURlZmVycmVkLT5yZXNvbHZlKHZhbHVlKTsgfQogCkBAIC0yMTUsNiArMjIxLDExIEBAIGNsYXNz
IERPTVByb21pc2UgewogICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9taXNlRGVmZXJyZWQtPnByb21pc2UoKTsgfTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHN3
YXAoRE9NUHJvbWlzZSYgb3RoZXIpCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9wcm9taXNl
RGVmZXJyZWQsIG90aGVyLm1fcHJvbWlzZURlZmVycmVkKTsKKyAgICB9CisKICAgICBSZWY8RGVm
ZXJyZWRQcm9taXNlPiBtX3Byb21pc2VEZWZlcnJlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKaW5k
ZXggZWQxODZkNzIyN2VjZTA3YjczMmUyMTU3ZTBjMTE2NzM4ZjJmNzZiZi4uMmE2NmQxOTQ3YWRl
YzZlYTFkNmY3ZDBkYzg4ZmYyN2FhYzM0YmQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRl
cnMubGVuZ3RoLnZhbHVlT3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBleHRy
YWN0YWJsZSwgdXNhZ2VzKTsKKyAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVy
YXRlKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZV9vcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgIGlmICghcmVzdWx0KSB7CiAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggNDkyYzc1NDdl
ODgyOTJhZDRkOTFhODBkNjJjOTBlZTliOTNhMWJkMy4uZjdkNTlmN2ZhYWU3NDFhZmJlOTRiMzVk
YWI2ODg5YTNkZmZkNDQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCkBAIC04MzYsNyArODM2LDcgQEAgRXhjZXB0aW9uT3I8ZmxvYXQ+IENTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKSBjb24KIAogZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZShVbml0VHlwZXMgdW5pdFR5cGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50ZXJuYWwodW5pdFR5cGUpLnZhbHVlT3IoMCk7
CisgICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50ZXJuYWwodW5pdFR5cGUpLnZhbHVlX29yKDApOwog
fQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCBhZmEzNjY2NGIyNDY0MWE3NjNlNDhmMmQy
ODdjYzFmNWFkMThjNWNlLi5iNmJhMjIxZDI2ZGJmNzcxZDQ1MjUzMThlM2QyMDMyZDNmYTdlMzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAg
RXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3IsIGNvbnN0IFN0cmluZyYgc3QKICAgICBpZiAoIXN0eWxlLmlzRW1wdHkoKSkKICAgICAg
ICAgdGV4dC5hcHBlbmQoJyAnKTsKICAgICB0ZXh0LmFwcGVuZCgnfScpOwotICAgIGF1dG8gaW5z
ZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dC50b1N0cmluZygpLCBpbmRleC52YWx1ZU9y
KGxlbmd0aCgpKSk7CisgICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0
LnRvU3RyaW5nKCksIGluZGV4LnZhbHVlX29yKGxlbmd0aCgpKSk7CiAgICAgaWYgKGluc2VydFJ1
bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBpbnNlcnRSdWxlUmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAzYzdj
OGQxNWI0ZDEzZDUxOGNiMzhkZmI5Y2ViNDE1MmNlNjZlNzZhLi4zNWQyY2Y2NTEyYjZhYmNkNTdj
YWE3ZGU3MDBlN2Q4OTY3ZWY4NDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02ODcsNyAr
Njg3LDcgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShib29sIGNl
bnRlcklmTm90VmlzaWJsZSkKIAogdm9pZCBFbGVtZW50OjpzY3JvbGxCeShjb25zdCBTY3JvbGxU
b09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52
YWx1ZU9yKDApLCBvcHRpb25zLnRvcC52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gc2Nyb2xsQnko
b3B0aW9ucy5sZWZ0LnZhbHVlX29yKDApLCBvcHRpb25zLnRvcC52YWx1ZV9vcigwKSk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZU5vbkZpbml0ZVZhbHVlKGRvdWJsZSBmKQpA
QCAtMzAyOCw3ICszMDI4LDcgQEAgVVJMIEVsZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAKIGludCBFbGVtZW50OjpnZXRJbnRl
Z3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAog
ewotICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEludGVn
cmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1
ZSkKQEAgLTMwMzgsNyArMzAzOCw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgaW50IHZhbHVlCiAKIHVuc2ln
bmVkIEVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVPcigwKTsKKyAg
ICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0VW5zaWduZWRJbnRl
Z3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCB1bnNpZ25l
ZCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBmMTcw
MDFmYjI2OWJiYzE5YmM4NjI3NGU1N2YyZDU1YWYxYzZkZjRkLi4zMjU1NzlkY2M0MzBmN2ZhZmQ3
MDE5OGMyZGU4YzdlNzEwYzZkYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXIuY3BwCkBAIC04MCw5ICs4MCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE11dGF0aW9uT2JzZXJ2
ZXI6Om9ic2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5pdCkKICAgICAgICAgb3B0aW9u
cyB8PSBDaGlsZExpc3Q7CiAgICAgaWYgKGluaXQuc3VidHJlZSkKICAgICAgICAgb3B0aW9ucyB8
PSBTdWJ0cmVlOwotICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlT3IoZmFsc2Up
KQorICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlX29yKGZhbHNlKSkKICAgICAg
ICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRWYWx1ZTsKLSAgICBpZiAoaW5pdC5jaGFyYWN0ZXJE
YXRhT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9s
ZFZhbHVlLnZhbHVlX29yKGZhbHNlKSkKICAgICAgICAgb3B0aW9ucyB8PSBDaGFyYWN0ZXJEYXRh
T2xkVmFsdWU7CiAKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gYXR0cmlidXRlRmlsdGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCmluZGV4IGVjN2NjNDEwNDEyMzVhZjVmY2I5
OTYxODQ3NzY5ZDNlNTdmOGExMTQuLmE0MjdkMGIzMDRmZjY0NmNlMmIxOWUwYTRhM2QxYThkNDZi
YmIwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKQEAgLTE0Miw3ICsxNDIs
NyBAQCBFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNT
dHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29sPgogICAgIGF1dG8mIHRva2VucyA9IHRoaXMtPnRv
a2VucygpOwogCiAgICAgaWYgKHRva2Vucy5jb250YWlucyh0b2tlbikpIHsKLSAgICAgICAgaWYg
KCFmb3JjZS52YWx1ZU9yKGZhbHNlKSkgeworICAgICAgICBpZiAoIWZvcmNlLnZhbHVlX29yKGZh
bHNlKSkgewogICAgICAgICAgICAgdG9rZW5zLnJlbW92ZUZpcnN0KHRva2VuKTsKICAgICAgICAg
ICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCBmNDAzZjIzMDUxYjAyMDZhMjNlM2I4NjU3Yzc1M2UwNzBiNzJhOTdlLi5iNWQxYmMzM2VjMWFl
YjM3NjViNTNlMTc3NGQ1NmM1OGVjMzU0YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTE3NjUsNyArMTc2NSw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVu
dDo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3Ro
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIHVu
c2lnbmVkIG9sZEVmZmVjdGl2ZU1heExlbmd0aCA9IGVmZmVjdGl2ZU1heExlbmd0aCgpOwotICAg
IGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1
ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICBpZiAob2xkRWZmZWN0
aXZlTWF4TGVuZ3RoICE9IGVmZmVjdGl2ZU1heExlbmd0aCgpKQogICAgICAgICB1cGRhdGVWYWx1
ZUlmTmVlZGVkKCk7CiAKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVl
KQogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgaW50IG9sZE1pbkxlbmd0aCA9IG1pbkxl
bmd0aCgpOwotICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50
ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBh
cnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICBp
ZiAob2xkTWluTGVuZ3RoICE9IG1pbkxlbmd0aCgpKQogICAgICAgICB1cGRhdGVWYWx1ZUlmTmVl
ZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmlu
ZGV4IDFmZGJjNTE4NGFiNjc2YzUzNWQ1MmU0MmQwZWMzMDk2NDA1MmU0NjQuLmJjZWI1OWE2Zjg1
OWU1ZTBhNjRiNjM5YmY1YTEzMjI5YzUyZTlhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMjA1LDEzICsyMDUsMTMgQEAgdm9pZCBIVE1MVGV4
dEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWMKIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxT
ZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9y
KC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAK
IHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewotICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBh
cnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGlu
dGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSku
dmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApp
bmRleCAyNWQ5YjJiZTZmOWYzNTNmMDkzOWZlZWM4ZjJhMmI5YTMwYjlkZjUxLi43YTdlNzE4NWVi
YTYyN2NiYWM2ODFjYjFmZjk2N2I5NGJhOWI0ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTExMTUs
NyArMTExNSw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRo
SW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgeCwKICAgICBpZiAoIXN0YXRlKCkuaGFz
SW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQ
b2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
T3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIEZs
b2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAK
ICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC54KCkpIHx8ICFzdGQ6Omlz
ZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTEzMSw3ICsxMTMxLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJ
blN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgKICAgICBpZiAoIXN0YXRl
KCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
RmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwor
ICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5
KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhc3Rk
Ojppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4
IDNlNzk4OWQ3Y2FjZjFiZGIxNzM2N2M4ZGE4N2RiZWMzYjEwZjdhYWYuLjBiYzhiMDc5YzQ4Y2Zh
N2Q2ZDJlMGIxMDE5ZTU2ODI3NzU5ZWRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBpbmxpbmUgdW5zaWdu
ZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUodW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIGRl
ZmF1bHRWYWx1ZQogaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKFN0
cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDApCiB7CiAgICAg
QVNTRVJUKGRlZmF1bHRWYWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKLSAgICB1
bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSku
dmFsdWVPcihkZWZhdWx0VmFsdWUpOworICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKHN0cmluZ1ZhbHVlKS52YWx1ZV9vcihkZWZhdWx0VmFsdWUpOwogICAg
IEFTU0VSVCh2YWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKICAgICByZXR1cm4g
dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDExYTQ4ZDczY2EzNzhmYjU0YThlZWRkODhlNmM3NjhhMjNmOTBl
MTIuLmJhZTFmYjI5NmE4MmNhNDA3ZGMyZDJmMTVkMTI2MGViMzQyZTdiZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0x
NTcsNyArMTU3LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVD
cm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXMKIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGlmIChtX2FzeW5jKSB7Ci0gICAgICAg
IG1fcHJlZmxpZ2h0Q2hlY2tlciA9IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcigqdGhpcywg
V1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlci5lbXBsYWNlKCp0
aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgbV9wcmVmbGlnaHRDaGVja2VyLT5zdGFy
dFByZWZsaWdodCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKaW5kZXggYjllZjZlMDllN2IzODAwNzljZThlN2M3MWZhNmRmY2UxZDMw
MzYwZi4uYTk4YWRiZmQ0MjJlMzk5NmI4ODFjZDRlM2I3MDY3NDIxZmE0M2QyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCkK
IAogdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBs
b2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91
bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUpCiB7Ci0gICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kg
PSBvcGVuZXJQb2xpY3kudmFsdWVPcihzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVm
ZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5lclBv
bGljeTo6QWxsb3cpOworICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9s
aWN5ID0gb3BlbmVyUG9saWN5LnZhbHVlX29yKHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNl
bmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3Bl
bmVyUG9saWN5OjpBbGxvdyk7CiAgICAgdXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdChtX2Zy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1cmwpLCBw
YXNzZWRUYXJnZXQsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5k
UmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5l
clBvbGljeSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIGRvd25sb2FkQXR0cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDNhMmY3NTkwMzc1OTY3ZmRiZWQ3
MWQwZTQyM2IyZDcyNzgzMmQyYWMuLjkxMGE1MGI3N2FmMDNkZTI3M2MzMTkwY2U2NzgzN2NiZTc3
Yzk4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE0OTUsNyArMTQ5NSw3IEBA
IGRvdWJsZSBET01XaW5kb3c6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAogCiB2b2lkIERPTVdp
bmRvdzo6c2Nyb2xsQnkoY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zKSBjb25zdAogewot
ICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVPcigwKSwgb3B0aW9ucy50b3Au
dmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZV9vcigw
KSwgb3B0aW9ucy50b3AudmFsdWVfb3IoMCkpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6c2Nyb2xs
QnkoZG91YmxlIHgsIGRvdWJsZSB5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcAppbmRleCBlMzVhMjM3ZTRkODMzYzUyYzUwMGVmNjVkOGY1MGNmMjUwNGZkMjQzLi4x
Y2M3OGU2ZjVjYTVhZTY2ZjQ1ZmJjZDMxNWFiMzNlOTNmNDkyYzhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNTcyLDcgKzU3Miw3IEBAIFN0cmluZyBTZWN1cml0
eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QKICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGVuY29k
ZUZvckZpbGVOYW1lKG1faG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRv
ckNoYXJhY3Rlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobV9wb3J0LnZhbHVl
T3IoMCkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKG1fcG9ydC52YWx1ZV9vcigw
KSk7CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGI1ZDg5OWJlYTFlYjgxNWNi
MDMwZWEwYzIwNDkxNzJlYTc5MzQ2ZTIuLjE5ODdiY2IwOTZlYzc4ZGM2YmRjZmI5NWEzMGU3ZThj
M2YxYzRhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogI2lmICFMT0dfRElTQUJM
RUQKIFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRlYnVnU3RyaW5nKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpu
dW1iZXIocG9ydC52YWx1ZU9yKDApKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2ws
ICI6Ly8iLCBob3N0LCAiOiIsIFN0cmluZzo6bnVtYmVyKHBvcnQudmFsdWVfb3IoMCkpKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
SGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAppbmRleCA1
MGViMjk1NmYyM2I3Y2YxMmVjYjkwY2Y3NmZkOGI5ODFlYTNiNTVhLi5iN2E1YWVmZWRhMWI2ZGVm
ZDcyYTliZTdjNmJhMjA2MmUxYmQyZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5IYXNoLmgKQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luSGFzaCB7
CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsKICAgICAgICAgICAgIG9yaWdpbi0+
cHJvdG9jb2woKS5pbXBsKCkgPyBvcmlnaW4tPnByb3RvY29sKCkuaW1wbCgpLT5oYXNoKCkgOiAw
LAogICAgICAgICAgICAgb3JpZ2luLT5ob3N0KCkuaW1wbCgpID8gb3JpZ2luLT5ob3N0KCkuaW1w
bCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVPcigwKQor
ICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVfb3IoMCkKICAgICAgICAgfTsKICAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFz
aENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4
IDdjNzZhZTEyODIwOGY4NDNjZTcyN2Q0YzZlMWI0YTZlMzZiOTVmNTMuLmU2ZDg2OGMwZGMwNjk2
Y2U5NWU4NTI4ODBhMzY3YzQ4NjAxYmRjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVh
dHVyZXMuY3BwCkBAIC0xNTgsOCArMTU4LDggQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dG
ZWF0dXJlcyhjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAg
ICBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFs
b2cgPSB0cnVlOwogCi0gICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAs
ICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZU9y
KDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4g
TWFjSUUKLSAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFs
b2doZWlnaHQiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUw
KTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJ
RQorICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lk
dGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSkudmFsdWVfb3IoNjIwKTsgLy8g
ZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAg
IGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIs
IDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsgLy8gZGVm
YXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAg
ZmVhdHVyZXMud2lkdGggPSB3aWR0aDsKICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBA
IC0xNjcsMTYgKzE2NywxNiBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNv
bnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVz
LnggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxh
YmxlUmVjdC54KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOwogICAgIGZl
YXR1cmVzLnkgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiLCBzY3JlZW5B
dmFpbGFibGVSZWN0LnkoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwog
Ci0gICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVPcih0cnVl
KSkgeworICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRlciIpLnZhbHVlX29y
KHRydWUpKSB7CiAgICAgICAgIGlmICghZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVz
LnggPSBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRo
KCkgLSB3aWR0aCkgLyAyOwogICAgICAgICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBm
ZWF0dXJlcy55ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVj
dC5oZWlnaHQoKSAtIGhlaWdodCkgLyAyOwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJs
ZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVzaXphYmxlIikudmFsdWVPcihmYWxzZSk7
Ci0gICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01h
cCwgInNjcm9sbCIpLnZhbHVlT3IodHJ1ZSk7Ci0gICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJs
ZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic3RhdHVzIikudmFsdWVPcihmYWxzZSk7Cisg
ICAgZmVhdHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFi
bGUiKS52YWx1ZV9vcihmYWxzZSk7CisgICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBi
b29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlX29yKHRydWUpOworICAgIGZl
YXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1
cyIpLnZhbHVlX29yKGZhbHNlKTsKIAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBhZTk3
NTE4YjE2OWUxMDFjN2JmZWMxODMwMjg4MzEwMzBhODJlNmI4Li4xYTNiNjNmNTUzODA0NGJmYzkz
ZWNkMWQwM2UxYjZiNGY4YmVlMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgZmxvYXQgRm9udENh
c2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdAogICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpICYmIGN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbiA9PSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgo
KSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkp
OwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8g
RklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVu
cyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAw
MDUwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFy
a3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4KICAgICBpZiAo
aXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQg
ZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVz
dGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogCiAgICAgQ29kZVBhdGggY29k
ZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBj
b2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxp
Z2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCkBAIC00OTIsNyArNDkyLDcg
QEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9h
dCYgd2lkdGgpIGNvbnN0CiAKIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5z
aWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25zdAogewotICAgIHVuc2lnbmVk
IGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRl
c3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKIAogICAgIENvZGVQYXRoIGNv
ZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3Qg
Y29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBs
aWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA4OThkNjViZDUyNGVl
NjM1NmYyOWEwMzA1Yzg4ZmUxMDEwYzZjN2JjLi5mZjA5NWI1MjE5ZmFhMzNjMWI2MjIxZGZhZDVj
ZTUwY2VkMGMwMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcApAQCAtNDAwLDcgKzQwMCw3IEBAIEludFJlY3QgU2hhZG93Qmx1cjo6Y2Fs
Y3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50
aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9seWdvbiA9IHRyYW5zZm9y
bS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAgICAgdHJhbnNmb3JtZWRQ
b2x5Z29uLm1vdmUobV9vZmZzZXQpOwotICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5
Z29uKS5ib3VuZGluZ0JveCgpOworICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdv
bikuYm91bmRpbmdCb3goKTsKICAgICB9IGVsc2UgewogICAgICAgICBsYXllclJlY3QgPSBzaGFk
b3dlZFJlY3Q7CiAgICAgICAgIGxheWVyUmVjdC5tb3ZlKG1fb2Zmc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDUzMjRjMjA4Y2IxOGRhODdkMWUyOGEwNDA4ZTE5ODZmOTE1MTgyZmEu
LmJjMWQwMGY0NWYzNmMyMTc1OTUyMDg4NzZlZTY5OTlkOTgwODRhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjM1Miw3ICsyMzUyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAg
RmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9sYXN0SW1hZ2UuZ2V0
KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7CiAgICAgQWZmaW5lVHJh
bnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gW2ZpcnN0RW5hYmxlZFZpZGVvVHJhY2sgcHJlZmVycmVk
VHJhbnNmb3JtXTsKLSAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRwdXRSZWN0ID0gdmlkZW9U
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qob3V0
cHV0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChvdXRw
dXRSZWN0KTsKIAogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUo
KSwgdHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBmYTdjYjcx
ZjQxYThhMjU4ZWYwZTRkNjAwOWMyY2Q3NmNiM2VjMGQ4Li5hMDFiZGU5NTIyMDBmYjU4OTJkMDY0
YjcwOWNhM2MwYWNlYTBhMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2Vla1RvVGltZShNZWRpYVRpbWUgdGltZSkKIAog
RmxvYXRTaXplIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSgpCiB7Ci0g
ICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZU9yKEZsb2F0U2l6ZSgpKTsKKyAgICByZXR1cm4g
bV9jYWNoZWRTaXplLnZhbHVlX29yKEZsb2F0U2l6ZSgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhpbnQgdHJhY2tJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oCmluZGV4IDI1YTVkYmIxMjYxODM0NzUzZDU0NzY4ODkwODQwNWJmZjcwMjA5OGMuLjNhZmZk
NDIxZTBlM2Q3MzE4N2YyZTM0MjdmYjZkNGYxM2ViNTg1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0ZXI+IHsKICAgICB2b2lkIHNl
dEZpbHRlclNjYWxlKGZsb2F0IHNjYWxlKSB7IG1fZmlsdGVyU2NhbGUgPSBzY2FsZTsgfQogCiAg
ICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0KLSAgICBGbG9hdFBvaW50IG1hcEFic29sdXRlUG9p
bnRUb0xvY2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0dXJuIG1f
YWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KHBvaW50KTsgfQorICAgIEZsb2F0UG9pbnQgbWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQ
b2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBv
aW50KTsgfQogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNb2RlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDg5NWQzN2YzOWNmMDU3MmY1ZDQ5NmUw
ZWI2MGFiYjFmMjkwNmZhNWMuLjQ5MTBjZjBhYzdlMmQ4NzYwMDE5OGI4NDk1ZTU4ZDczZjhhMTUy
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29u
c3QgVGV4dHVyZU1hcHBlclBhaW4KICAgICAgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBy
ZXBsaWNhT3B0aW9ucyhvcHRpb25zKTsKICAgICAgICAgcmVwbGljYU9wdGlvbnMudHJhbnNmb3Jt
CiAgICAgICAgICAgICAubXVsdGlwbHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRy
YW5zZm9ybS5jb21iaW5lZCgpKQotICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5z
Zm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
KTsKKyAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgICAgICBwYWlu
dFNlbGZBbmRDaGlsZHJlbihyZXBsaWNhT3B0aW9ucyk7CiAgICAgfQogCkBAIC0yMzAsNyArMjMw
LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkT3BhY2l0eShmbG9hdCBv
cGFjaXR5KQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxp
Y2FUcmFuc2Zvcm0oKQogewotICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3N0YXRl
LnJlcGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpLm11bHRpcGx5KG1f
Y3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0ZS5y
ZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBseShtX2N1
cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCkBAIC03MzEsNyArNzMxLDcg
QEAgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZpbmRTY3JvbGxhYmxl
Q29udGVudHNMYXllckF0KGNvbnN0IEZsb2EKIEZsb2F0U2l6ZSBUZXh0dXJlTWFwcGVyTGF5ZXI6
Om1hcFNjcm9sbE9mZnNldChjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKIHsKICAgICBkb3VibGUg
emVyb1gsIHplcm9ZLCBvZmZzZXRYLCBvZmZzZXRZOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1
ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybSA9IG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9v
cihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKICAgICB0cmFuc2Zvcm0ubWFwKDAsIDAsIHplcm9Y
LCB6ZXJvWSk7CiAgICAgdHJhbnNmb3JtLm1hcChvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdo
dCgpLCBvZmZzZXRYLCBvZmZzZXRZKTsKICAgICByZXR1cm4gRmxvYXRTaXplKG9mZnNldFggLSB6
ZXJvWCwgb2Zmc2V0WSAtIHplcm9ZKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNzQ4YWQ4ZTllMzgwYTNlZTcyYTZh
MDIxNTgyNGVmOGQ0MTdlYzMxMC4uNDYyYjYyZWQ0Nzc3YmY2MzU3ZDU0NDM0YTgxZWU1ZmZhODMy
OWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKQEAgLTk0Nyw3ICs5NDcsNyBAQCBJbnRSZWN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgLy8gUmV0dXJuIGEgcHJv
amVjdGlvbiBvZiB0aGUgdmlzaWJsZSByZWN0IChzdXJmYWNlIGNvb3JkaW5hdGVzKSBvbnRvIHRo
ZSBsYXllcidzIHBsYW5lIChsYXllciBjb29yZGluYXRlcykuCiAgICAgLy8gVGhlIHJlc3VsdGlu
ZyBxdWFkIG1pZ2h0IGJlIHNxdWV3ZWQgYW5kIHRoZSB2aXNpYmxlIHJlY3QgaXMgdGhlIGJvdW5k
aW5nIGJveCBvZiB0aGlzIHF1YWQsCiAgICAgLy8gc28gaXQgbWlnaHQgc3ByZWFkIGZ1cnRoZXIg
dGhhbiB0aGUgcmVhbCB2aXNpYmxlIGFyZWEgKGFuZCB0aGVuIGV2ZW4gbW9yZSBhbXBsaWZpZWQg
YnkgdGhlIGNvdmVyIHJlY3QgbXVsdGlwbGllcikuCi0gICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJz
ZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVl
T3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgIEFTU0VSVChtX2NhY2hlZEludmVyc2VU
cmFuc2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9v
cihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAgICAgRmxvYXRSZWN0IHJlY3QgPSBtX2NhY2hl
ZEludmVyc2VUcmFuc2Zvcm0uY2xhbXBlZEJvdW5kc09mUHJvamVjdGVkUXVhZChGbG9hdFF1YWQo
bV9jb29yZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CiAgICAgY2xhbXBUb0NvbnRl
bnRzUmVjdElmUmVjdElzSW5maW5pdGUocmVjdCwgc2l6ZSgpKTsKICAgICByZXR1cm4gZW5jbG9z
aW5nSW50UmVjdChyZWN0KTsKQEAgLTExMzksNyArMTEzOSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgbV9sYXll
clRyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgpKTsKICAg
ICBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVUcmFuc2Zvcm1zKHBhcmVudCgpID8gZG93bmNhc3Q8
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqcGFyZW50KCkpLm1fbGF5ZXJUcmFuc2Zvcm0uY29t
YmluZWRGb3JDaGlsZHJlbigpIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKLSAgICBtX2Nh
Y2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgbV9jYWNoZWRJbnZlcnNl
VHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9v
cihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKIAogICAgIC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zv
cm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QuCiAgICAgc2V0
TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAK
aW5kZXggZTc2M2NjMTM5M2RiY2RlNjExMzIxMThmZmI0MzE5MWM2NDhlNDVlNC4uZjBlMmRhMzE5
M2M0ZTg5OTExZmY3ZmNiNmRiOGVhODQ2NDg3OTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0
ZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBGbG9hdFBvaW50IFRyYW5zZm9ybVN0YXRlOjptYXBw
ZWRQb2ludChib29sKiB3YXNDbGFtcGVkKSBjb25zdAogICAgIGlmIChtX2RpcmVjdGlvbiA9PSBB
cHBseVRyYW5zZm9ybURpcmVjdGlvbikKICAgICAgICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFu
c2Zvcm0tPm1hcFBvaW50KHBvaW50KTsKIAotICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNm
b3JtLT5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UG9p
bnQocG9pbnQsIHdhc0NsYW1wZWQpOworICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
LT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50
KHBvaW50LCB3YXNDbGFtcGVkKTsKIH0KIAogRmxvYXRRdWFkIFRyYW5zZm9ybVN0YXRlOjptYXBw
ZWRRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBU
cmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVjdGlv
biBkaXJlY3Rpb24sIGJvb2wKICAgICBpZiAoZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGly
ZWN0aW9uKQogICAgICAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bWFwUXVhZChx
dWFkKTsKIAotICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFs
dWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVhZChxdWFkLCB3YXNDbGFtcGVk
KTsKKyAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOwog
fQogCiB2b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdCwgYm9vbCogd2FzQ2xhbXBlZCkKQEAgLTIzMyw3ICsyMzMsNyBA
QCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdCwgYm9vbCogdwogICAgICAgICB9CiAKICAgICB9IGVsc2UgewotICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCku
dmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpOwogICAgICAgICBpZiAobV9tYXBQb2ludCkKICAgICAgICAgICAgIG1fbGFz
dFBsYW5hclBvaW50ID0gaW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0UG9pbnQobV9sYXN0UGxhbmFy
UG9pbnQpOwogICAgICAgICBpZiAobV9tYXBRdWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggMWYxYzM4MDU1NTEx
MWY0NGExZjFlN2U2ZTAzMmEyNzMwZGQ5NGJmZC4uYjM4ZTcwNzIwMjM4ZTBjOGVlN2VjYjBkZWI5
MDZjMmExYjI1NjU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHMgY29tcHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIHN0CiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRoYXQgaXMg
bm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZS4KICAgICBhdXRvIGRhdGVWYWx1ZSA9
IHJlc3BvbnNlLmRhdGUoKTsKICAgICBhdXRvIGFwcGFyZW50QWdlID0gZGF0ZVZhbHVlID8gc3Rk
OjptYXgoMHVzLCBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4ocmVzcG9uc2VUaW1lIC0gKmRh
dGVWYWx1ZSkpIDogMHVzOwotICAgIGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52YWx1
ZU9yKDB1cyk7CisgICAgYXV0byBhZ2VWYWx1ZSA9IHJlc3BvbnNlLmFnZSgpLnZhbHVlX29yKDB1
cyk7CiAgICAgYXV0byBjb3JyZWN0ZWRJbml0aWFsQWdlID0gc3RkOjptYXgoYXBwYXJlbnRBZ2Us
IGFnZVZhbHVlKTsKICAgICBhdXRvIHJlc2lkZW50VGltZSA9IGR1cmF0aW9uX2Nhc3Q8bWljcm9z
ZWNvbmRzPihzeXN0ZW1fY2xvY2s6Om5vdygpIC0gcmVzcG9uc2VUaW1lKTsKICAgICByZXR1cm4g
Y29ycmVjdGVkSW5pdGlhbEFnZSArIHJlc2lkZW50VGltZTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBG
YW1pbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICByZXR1cm4gKm1heEFnZTsKIAogICAgIGF1
dG8gZGF0ZSA9IHJlc3BvbnNlLmRhdGUoKTsKLSAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRl
LnZhbHVlT3IocmVzcG9uc2VUaW1lKTsKKyAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZh
bHVlX29yKHJlc3BvbnNlVGltZSk7CiAgICAgaWYgKGF1dG8gZXhwaXJlcyA9IHJlc3BvbnNlLmV4
cGlyZXMoKSkKICAgICAgICAgcmV0dXJuIGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPigqZXhw
aXJlcyAtIGVmZmVjdGl2ZURhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKaW5kZXggMjNhZGNkMzQzMTcyMWQwNjViYjIyM2UyNjY4ZDhhMDVmNTIwMjU1
Ny4uZjdhZWE4NDI2ZjJhMTM2MGE3ZTNjYTc4YjkwMmY5NGUwOGM0MDQ2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTAxNyw3ICsxMDE3LDcgQEAg
ZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBj
b25zdAogCiBTdHJpbmdWaWV3IElubGluZVRleHRCb3g6OnN1YnN0cmluZ1RvUmVuZGVyKE9wdGlv
bmFsPHVuc2lnbmVkPiBvdmVycmlkaW5nTGVuZ3RoKSBjb25zdAogewotICAgIHJldHVybiBTdHJp
bmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnQoKSwgb3ZlcnJpZGluZ0xl
bmd0aC52YWx1ZU9yKGxlbigpKSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50
ZXh0KCkpLnN1YnN0cmluZyhzdGFydCgpLCBvdmVycmlkaW5nTGVuZ3RoLnZhbHVlX29yKGxlbigp
KSk7CiB9CiAKIFN0cmluZyBJbmxpbmVUZXh0Qm94OjpoeXBoZW5hdGVkU3RyaW5nRm9yVGV4dFJ1
bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVM
ZW5ndGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKaW5kZXggNTExYTZi
Y2M1NGZhODE0OTc0YzIwZTZjZjg4ZDEzMWMyZWI4NDY0Zi4uNGFiMzg5MzVlOTRiOGYzMDYyZWUw
OWQzYTIyMjdkMmE4ODk0MGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaApA
QCAtMTA5LDcgKzEwOSw3IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgICAgICBpZiAocmVjdC5p
c0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgRmxvYXRSZWN0IHRy
YW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CisgICAgICAgIEZsb2F0UmVjdCB0cmFu
Zm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3QpKTsKICAgICAgICAgcmVjdC5zZXRMb2NhdGlv
bihMYXlvdXRQb2ludCh0cmFuZm9ybWVkUmVjdC5sb2NhdGlvbigpKSk7CiAgICAgICAgIHJlY3Qu
c2V0U2l6ZShMYXlvdXRTaXplKHRyYW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMDY2Y2ZiOGZiYmRlNTc1ZGY3NGQ4
YTNlOWMyODVkZDMzYmNhYzU1OS4uNGQ0ZGU4MTc5NmE5YTdiYjAwOWQ5ZDllMDRkMWNjYjEwOGZl
MjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTI4NTYsNyAr
Mjg1Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhCiAgICAgICAgIExheW91dFVuaXQgaGVp
Z2h0UmVzdWx0OwogICAgICAgICBpZiAoY2hlY2tNaW5NYXhIZWlnaHQpIHsKICAgICAgICAgICAg
IExheW91dFVuaXQgaW50cmluc2ljSGVpZ2h0ID0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgLSBi
b3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpOwotICAgICAgICAgICAgaGVpZ2h0UmVzdWx0
ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgp
LmxvZ2ljYWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZU9yKGNvbXB1dGVkVmFsdWVz
Lm1fZXh0ZW50KTsKKyAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVp
Z2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGlu
dHJpbnNpY0hlaWdodCkudmFsdWVfb3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgICAg
ICAgICAgaGVpZ2h0UmVzdWx0ID0gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KGhlaWdo
dFJlc3VsdCwgaW50cmluc2ljSGVpZ2h0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IC8vIFRoZSBvbmx5IHRpbWVzIHdlIGRvbid0IGNoZWNrIG1pbi9tYXggaGVpZ2h0IGFyZSB3aGVu
IGEgZml4ZWQgbGVuZ3RoIGhhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCA4MmFkYmNkNDFmMDk4OGE4
YjQ5ZWRmMDllZjkyMWUwN2JmOWNkMmQ0Li41NjNlNTM2ZDZhMTY2MDJmNGNlOTQ1MDM5NjQwZjQx
MGYyZTljNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlv
dXRDaGlsZHJlbikKIAogICAgICAgICAgICAgLy8gVXBkYXRlIG91ciBoZWlnaHQgYW5kIG92ZXJm
bG93IGhlaWdodC4KICAgICAgICAgICAgIGlmIChzdHlsZSgpLmJveEFsaWduKCkgPT0gQkJBU0VM
SU5FKSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RM
aW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0
b20oKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RM
aW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90
dG9tKCkpOwogICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50ID0gKGNoaWxkLT5oZWlnaHQoKSArIGNo
aWxkLT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSAtIGFzY2VudDsKIApAQCAtNTA4LDcgKzUwOCw3
IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNo
aWxkLT5tYXJnaW5Ub3AoKSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIChjb250ZW50SGVpZ2h0
KCkgLSAoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpKSAv
IDIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEJC
QVNFTElORTogewotICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxk
LT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1h
cmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBj
aGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGls
ZC0+bWFyZ2luQm90dG9tKCkpOwogICAgICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQt
Pm1hcmdpblRvcCgpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdp
blRvcCgpICsgKG1heEFzY2VudCAtIGFzY2VudCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5k
ZXggNDljYTJhY2QyODRhZjFjZDFmMmE3OWVjMDJiNzZhMDM4OTQzM2RlMi4uNDRmMjdhM2QyMjQw
MThjZmE5ZTQ5YzFkZDQ5NjFiOTQ4YWYyM2UyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIGlu
dCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goY29uc3QgUmVuZGVyQm94JiBib3gs
IExpbmVEaXJlY3Rpb24KIAogaW50IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9z
aXRpb25Nb2RlKSBjb25zdAogewotICAgIGludCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5l
KCkudmFsdWVPcihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRpcmVj
dGlvbikpOworICAgIGludCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3Io
c3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0aGlzLCBkaXJlY3Rpb24pKTsKIAog
ICAgIGludCBtYXJnaW5Bc2NlbnQgPSBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJn
aW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCk7CiAgICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luQXNj
ZW50OwpAQCAtNjg1LDcgKzY4NSw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OnBy
ZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKFJlbmRlckJveCYKICAgICAgICAg
QVNTRVJUKG1haW5BeGlzRXh0ZW50IC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9y
Q2hpbGQoY2hpbGQpID49IDApOwogICAgICAgICByZXR1cm4gbWFpbkF4aXNFeHRlbnQgLSBtYWlu
QXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChjaGlsZCk7CiAgICAgfQotICAgIHJl
dHVybiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVk
U2l6ZSwgZmxleEJhc2lzKS52YWx1ZU9yKDApOworICAgIHJldHVybiBjb21wdXRlTWFpbkF4aXNF
eHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgZmxleEJhc2lzKS52YWx1
ZV9vcigwKTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgVmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKQpA
QCAtODI1LDcgKzgyNSw3IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnVwZGF0ZUF1dG9NYXJn
aW5zSW5Dcm9zc0F4aXMoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pCiAKIExheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNoaWxkKFJlbmRlckJveCYgY2hp
bGQpCiB7Ci0gICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgp
LnZhbHVlT3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICBMYXlvdXRVbml0
IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY3Jvc3NBeGlzRXh0
ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKICAgICByZXR1cm4gYXNjZW50ICsgZmxvd0F3YXJlTWFyZ2lu
QmVmb3JlRm9yQ2hpbGQoY2hpbGQpOwogfQogCkBAIC05MzAsMTIgKzkzMCwxMiBAQCBMYXlvdXRV
bml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY29uc3Qg
UmVuZGVyQm94JiBjaGlsZAogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IE51
bGxvcHQ7CiAgICAgaWYgKG1heC5pc1NwZWNpZmllZE9ySW50cmluc2ljKCkpIHsKICAgICAgICAg
bWF4RXh0ZW50ID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1heFNpemUs
IG1heCk7Ci0gICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50
LnZhbHVlT3IoY2hpbGRTaXplKSk7CisgICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWluKGNoaWxk
U2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNoaWxkU2l6ZSkpOwogICAgIH0KICAgICAKICAgICBM
ZW5ndGggbWluID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQuc3R5bGUoKS5taW5XaWR0aCgp
IDogY2hpbGQuc3R5bGUoKS5taW5IZWlnaHQoKTsKICAgICBpZiAobWluLmlzU3BlY2lmaWVkT3JJ
bnRyaW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwgY29tcHV0ZU1h
aW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIG1pbikudmFsdWVPcihjaGlsZFNp
emUpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwgY29tcHV0ZU1haW5BeGlz
RXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIG1pbikudmFsdWVfb3IoY2hpbGRTaXplKSk7
CiAgICAgCiAgICAgaWYgKCFpc0ZsZXhpYmxlQm94SW1wbCgpICYmIG1pbi5pc0F1dG8oKSAmJiBt
YWluQXhpc092ZXJmbG93Rm9yQ2hpbGQoY2hpbGQpID09IE9WSVNJQkxFICYmICEoaXNDb2x1bW5G
bG93KCkgJiYgaXM8UmVuZGVyRmxleGlibGVCb3g+KGNoaWxkKSkpIHsKICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ1NTIGZsZXhib3ggc2VjdGlvbiA0LjUgd2hpY2gg
ZGVmaW5lcyB0aGUgbWluaW11bSBzaXplIG9mICJwdXJlIiBmbGV4CkBAIC05NDcsMTMgKzk0Nywx
MyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5B
bmRNYXgoY29uc3QgUmVuZGVyQm94JiBjaGlsZAogICAgICAgICBBU1NFUlQoY29udGVudFNpemUg
Pj0gMCk7CiAgICAgICAgIGlmIChjaGlsZC5oYXNBc3BlY3RSYXRpbygpICYmIGNoaWxkLmludHJp
bnNpY1NpemUoKS5oZWlnaHQoKSA+IDApCiAgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGFkanVz
dENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNoaWxkLCBjb250ZW50
U2l6ZSk7Ci0gICAgICAgIGNvbnRlbnRTaXplID0gc3RkOjptaW4oY29udGVudFNpemUsIG1heEV4
dGVudC52YWx1ZU9yKGNvbnRlbnRTaXplKSk7CisgICAgICAgIGNvbnRlbnRTaXplID0gc3RkOjpt
aW4oY29udGVudFNpemUsIG1heEV4dGVudC52YWx1ZV9vcihjb250ZW50U2l6ZSkpOwogICAgICAg
ICAKICAgICAgICAgTGVuZ3RoIG1haW5TaXplID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQu
c3R5bGUoKS53aWR0aCgpIDogY2hpbGQuc3R5bGUoKS5oZWlnaHQoKTsKICAgICAgICAgaWYgKG1h
aW5BeGlzTGVuZ3RoSXNEZWZpbml0ZShjaGlsZCwgbWFpblNpemUpKSB7CiAgICAgICAgICAgICBM
YXlvdXRVbml0IHJlc29sdmVkTWFpblNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGls
ZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgbWFpblNpemUpLnZhbHVlKCk7CiAgICAgICAg
ICAgICBBU1NFUlQocmVzb2x2ZWRNYWluU2l6ZSA+PSAwKTsKLSAgICAgICAgICAgIExheW91dFVu
aXQgc3BlY2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFpblNpemUsIG1heEV4dGVudC52
YWx1ZU9yKHJlc29sdmVkTWFpblNpemUpKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lm
aWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFpblNpemUsIG1heEV4dGVudC52YWx1ZV9vcihy
ZXNvbHZlZE1haW5TaXplKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXpl
LCBzdGQ6Om1pbihzcGVjaWZpZWRTaXplLCBjb250ZW50U2l6ZSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKHVzZUNoaWxkQXNwZWN0UmF0aW8oY2hpbGQpKSB7CiAgICAgICAgICAgICBMZW5ndGggY3Jv
c3NTaXplTGVuZ3RoID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQuc3R5bGUoKS5oZWlnaHQo
KSA6IGNoaWxkLnN0eWxlKCkud2lkdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCA1ZjBkZDA0N2JhOTA3OTJlMzFjNDVmZmVhODAyZjc5Njc0MGNmZWE0Li5i
NjAwMmQyYjEzMjU1ODY3MmFiMzdhNzg5YjBmMzgwMjNkNGQ4N2I5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIEdyaWRUcmFj
ayB7CiAKICAgICB2b2lkIHNldEdyb3d0aExpbWl0KExheW91dFVuaXQgZ3Jvd3RoTGltaXQpCiAg
ICAgewotICAgICAgICBtX2dyb3d0aExpbWl0ID0gZ3Jvd3RoTGltaXQgPT0gaW5maW5pdHkgPyBn
cm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVl
T3IoZ3Jvd3RoTGltaXQpKTsKKyAgICAgICAgbV9ncm93dGhMaW1pdCA9IGdyb3d0aExpbWl0ID09
IGluZmluaXR5ID8gZ3Jvd3RoTGltaXQgOiBzdGQ6Om1pbihncm93dGhMaW1pdCwgbV9ncm93dGhM
aW1pdENhcC52YWx1ZV9vcihncm93dGhMaW1pdCkpOwogICAgICAgICBlbnN1cmVHcm93dGhMaW1p
dElzQmlnZ2VyVGhhbkJhc2VTaXplKCk7CiAgICAgfQogCkBAIC02ODYsNyArNjg2LDcgQEAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250
ZW50SGVpZ2h0VXNpbmcoTGVuZ3QKIAogICAgIGlmIChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzRml0
Q29udGVudCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZmlsbEF2YWlsYWJsZUV4dGVudCA9IGNv
bnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEV4Y2x1ZGVNYXJnaW5Cb3Jk
ZXJQYWRkaW5nKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4Q29udGVudEhlaWdodC52
YWx1ZU9yKDApLCBzdGQ6Om1heChtX21pbkNvbnRlbnRIZWlnaHQudmFsdWVPcigwKSwgZmlsbEF2
YWlsYWJsZUV4dGVudCkpOworICAgICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhDb250ZW50SGVp
Z2h0LnZhbHVlX29yKDApLCBzdGQ6Om1heChtX21pbkNvbnRlbnRIZWlnaHQudmFsdWVfb3IoMCks
IGZpbGxBdmFpbGFibGVFeHRlbnQpKTsKICAgICB9CiAKICAgICBpZiAobG9naWNhbEhlaWdodExl
bmd0aC5pc0ZpbGxBdmFpbGFibGUoKSkKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIFJlbmRlckdy
aWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aQogCiAgICAgLy8gR3JpZCBndXR0ZXJzIHdlcmUgcmVtb3ZlZCBmcm9tIGZyZWVT
cGFjZSBieSB0aGUgY2FsbGVyIChpZiBmcmVlU3BhY2UgaXMgZGVmaW5pdGUpLAogICAgIC8vIGJ1
dCB3ZSBtdXN0IHVzZSB0aGVtIHRvIGNvbXB1dGUgcmVsYXRpdmUgKGkuZS4gcGVyY2VudGFnZXMp
IHNpemVzLgotICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwg
c2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoTGF5b3V0VW5pdCgpKSk7CisgICAg
TGF5b3V0VW5pdCBtYXhTaXplID0gc3RkOjptYXgoTGF5b3V0VW5pdCgpLCBzaXppbmdEYXRhLmF2
YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7CiAgICAgY29uc3QgYm9vbCBo
YXNEZWZpbml0ZUZyZWVTcGFjZSA9IHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uID09IFRyYWNr
U2l6aW5nOwogCiAgICAgLy8gMS4gSW5pdGlhbGl6ZSBwZXIgR3JpZCB0cmFjayB2YXJpYWJsZXMu
CkBAIC0xMDI5LDEzICsxMDI5LDEzIEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bWluU2l6ZUZv
ckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvCiAgICAgYm9v
bCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkID0gdXBkYXRlT3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbiwgc2l6aW5nRGF0
YSk7CiAgICAgaWYgKGlzUm93QXhpcykgewogICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkxvZ2lj
YWxXaWR0aCA9IHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uID09IFRyYWNrU2l6aW5nID8gY29t
cHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGRJbmxpbmVEaXJlY3Rpb24sIGNoaWxk
KSA6IG1hcmdpbkludHJpbnNpY0xvZ2ljYWxXaWR0aEZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAg
cmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKE1pblNpemUsIGNo
aWxkTWluU2l6ZSwgb3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNo
aWxkLCBjaGlsZElubGluZURpcmVjdGlvbikudmFsdWVPcigwKSwgKnRoaXMsIG51bGxwdHIpICsg
bWFyZ2luTG9naWNhbFdpZHRoOworICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBvdmVycmlkZUNvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uKS52
YWx1ZV9vcigwKSwgKnRoaXMsIG51bGxwdHIpICsgbWFyZ2luTG9naWNhbFdpZHRoOwogICAgIH0K
IAogICAgIGlmIChvdmVycmlkZVNpemVIYXNDaGFuZ2VkICYmIChkaXJlY3Rpb24gIT0gRm9yQ29s
dW1ucyB8fCBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiAhPSBJbnRyaW5zaWNTaXplQ29tcHV0
YXRpb24pKQogICAgICAgICBjaGlsZC5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogICAg
IGNoaWxkLmxheW91dElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2Fs
SGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBOdWxsb3B0KS52YWx1ZU9yKDApICsg
Y2hpbGQubWFyZ2luTG9naWNhbEhlaWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdo
dCgpOworICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUs
IGNoaWxkTWluU2l6ZSwgTnVsbG9wdCkudmFsdWVfb3IoMCkgKyBjaGlsZC5tYXJnaW5Mb2dpY2Fs
SGVpZ2h0KCkgKyBjaGlsZC5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKIGJvb2wgUmVu
ZGVyR3JpZDo6dXBkYXRlT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdy
aWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKSBjb25zdApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JO
b25TcGFubmluZ0l0ZW1zKEdyaWQKICAgICB9IGVsc2UgaWYgKHRyYWNrU2l6ZS5oYXNNYXhDb250
ZW50T3JBdXRvTWF4VHJhY2tCcmVhZHRoKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBncm93dGhM
aW1pdCA9IG1heENvbnRlbnRGb3JDaGlsZChncmlkSXRlbSwgZGlyZWN0aW9uLCBzaXppbmdEYXRh
KTsKICAgICAgICAgaWYgKHRyYWNrU2l6ZS5pc0ZpdENvbnRlbnQoKSkKLSAgICAgICAgICAgIGdy
b3d0aExpbWl0ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQsIHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6
ZS5maXRDb250ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIHNpemluZ0RhdGEuYXZhaWxhYmxl
U3BhY2UoKS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWlu
KGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJl
YWR0aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMCkp
KTsKICAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQoc3RkOjptYXgodHJhY2suZ3Jvd3RoTGlt
aXQoKSwgZ3Jvd3RoTGltaXQpKTsKICAgICB9CiB9CkBAIC0xMzg3LDggKzEzODcsOCBAQCBzdGF0
aWMgYm9vbCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwoY29uc3QgR3JpZFRyYWNrKiB0
cmFjazEsIGNvbnN0IEdyaWRUcgogICAgIGlmICh0cmFjazFIYXNJbmZpbml0ZUdyb3d0aFBvdGVu
dGlhbFdpdGhvdXRDYXAgfHwgdHJhY2sySGFzSW5maW5pdGVHcm93dGhQb3RlbnRpYWxXaXRob3V0
Q2FwKQogICAgICAgICByZXR1cm4gdHJhY2sySGFzSW5maW5pdGVHcm93dGhQb3RlbnRpYWxXaXRo
b3V0Q2FwOwogCi0gICAgTGF5b3V0VW5pdCB0cmFjazFMaW1pdCA9IHRyYWNrMS0+Z3Jvd3RoTGlt
aXRDYXAoKS52YWx1ZU9yKHRyYWNrMS0+Z3Jvd3RoTGltaXQoKSk7Ci0gICAgTGF5b3V0VW5pdCB0
cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZU9yKHRyYWNrMi0+Z3Jv
d3RoTGltaXQoKSk7CisgICAgTGF5b3V0VW5pdCB0cmFjazFMaW1pdCA9IHRyYWNrMS0+Z3Jvd3Ro
TGltaXRDYXAoKS52YWx1ZV9vcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOworICAgIExheW91dFVu
aXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJhY2sy
LT5ncm93dGhMaW1pdCgpKTsKICAgICByZXR1cm4gKHRyYWNrMUxpbWl0IC0gdHJhY2sxLT5iYXNl
U2l6ZSgpKSA8ICh0cmFjazJMaW1pdCAtIHRyYWNrMi0+YmFzZVNpemUoKSk7CiB9CiAKQEAgLTE0
NTcsNyArMTQ1Nyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3Mo
VmVjdG9yPEdyaWRUcmFjayo+JiB0cmFja3MsIFZlY3RvcjxHcmlkCiBib29sIFJlbmRlckdyaWQ6
OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkKIHsKICAgICBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHNp
emluZ0RhdGEuY29sdW1uVHJhY2tzIDogc2l6aW5nRGF0YS5yb3dUcmFja3M7Ci0gICAgY29uc3Qg
TGF5b3V0VW5pdCBtYXhTaXplID0gc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlT3Io
MCk7CisgICAgY29uc3QgTGF5b3V0VW5pdCBtYXhTaXplID0gc2l6aW5nRGF0YS5hdmFpbGFibGVT
cGFjZSgpLnZhbHVlX29yKDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3Mu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0g
Z3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIGksIHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uKTsK
ICAgICAgICAgaWYgKGNvbXB1dGVVc2VkQnJlYWR0aE9mTWluTGVuZ3RoKHRyYWNrU2l6ZSwgbWF4
U2l6ZSkgPiB0cmFja3NbaV0uYmFzZVNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDI1OTVjMzQzMTI0MTJkNTA4N2NiMGNjMjJjNjIwMWIwZDg5NjY0
MWEuLmZjOThhMzliMmNlMGZjZDE1OWQxMjRlNTExNjIyOGI3ZWY0ODIxMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDQ2Myw3ICs0NDYzLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgLy8gTm93IGRvIGEgcGFpbnQgd2l0aCB0aGUgcm9v
dCBsYXllciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIExheW91dFNpemUgYWRqdXN0ZWRTdWJwaXhl
bE9mZnNldCA9IG9mZnNldEZvclRoaXNMYXllciAtIExheW91dFNpemUoZGV2aWNlUGl4ZWxTbmFw
cGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsKLSAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1l
ZFBhaW50aW5nSW5mbyh0aGlzLCBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHMo
dHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBh
aW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSksCisgICAgTGF5
ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8odGhpcywgTGF5b3V0UmVjdChl
bmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2
aWNlU2NhbGVGYWN0b3IpKSwKICAgICAgICAgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGFk
anVzdGVkU3VicGl4ZWxPZmZzZXQsIHBhaW50aW5nSW5mby5zdWJ0cmVlUGFpbnRSb290LCBwYWlu
dGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5k
UmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7
CiAgICAgY29udGV4dC5zZXRDVE0ob2xkVHJhbnNmcm9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBiNzE2M2U2NmIzYzZmZjExODc3MWFjOTg5MDk3
NmMzYjNiZTQ2NmZiLi4zMDZjNWEzOTQ2ZTQzZTI2ODBiMDRjZTlmYzM3NmQxYzM5ZTVjMzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0yODEsNyAr
MjgxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaXN0Qm94OjppdGVtQm91bmRpbmdCb3hSZWN0KGNv
bnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2UKIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFp
bnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIFBhaW50RnVuY3Rpb24gcGFpbnRGdW5jdGlvbikKIHsKICAgICBpbnQgbGlzdEl0ZW1zU2l6
ZSA9IG51bUl0ZW1zKCk7Ci0gICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJz
dFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsK
KyAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNp
ZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5k
ZXggPSBmaXJzdFZpc2libGVJdGVtICsgbnVtVmlzaWJsZUl0ZW1zKENvbnNpZGVyUGFkZGluZzo6
WWVzKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RWaXNpYmxlSXRlbTsgaSA8IGxpc3RJdGVtc1Np
emUgJiYgaSA8IGVuZEluZGV4OyArK2kpCiAgICAgICAgIHBhaW50RnVuY3Rpb24ocGFpbnRJbmZv
LCBwYWludE9mZnNldCwgaSk7CkBAIC01OTcsNyArNTk3LDcgQEAgYm9vbCBSZW5kZXJMaXN0Qm94
OjpzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChpbnQgaW5kZXgpCiAKIGJvb2wgUmVu
ZGVyTGlzdEJveDo6bGlzdEluZGV4SXNWaXNpYmxlKGludCBpbmRleCkKIHsKLSAgICBpbnQgZmly
c3RJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52
YWx1ZU9yKG1faW5kZXhPZmZzZXQpOworICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRleE9mRmly
c3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhPZmZzZXQp
OwogICAgIGludCBlbmRJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRk
aW5nQm90dG9tQXJlYQogICAgICAgICA/IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQ
YWRkaW5nQm90dG9tQXJlYS52YWx1ZSgpICsgbnVtYmVyT2ZWaXNpYmxlSXRlbXNJblBhZGRpbmdC
b3R0b20oKQogICAgICAgICA6IG1faW5kZXhPZmZzZXQgKyBudW1WaXNpYmxlSXRlbXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmlu
ZGV4IDdkMmZiNDM2MjgxNTRiOTQyNTY2Zjk5Nzg5Y2Y1MDhmNTJiNDk3YWQuLjIwY2Y5ZWMwM2Yy
ZTZiYzkyZTE3NWI5MmQyMmQzYjRlZWZhMGFmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIExh
eW91dFVuaXQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCgp
IGNvbnN0CiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVIZWlnaHQgPSBtdWx0aUNvbHVtbkZsb3dU
aHJlYWQoKS0+Y29sdW1uSGVpZ2h0QXZhaWxhYmxlKCk7CiAgICAgTGF5b3V0VW5pdCBtYXhDb2x1
bW5IZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQgPyBhdmFpbGFibGVIZWlnaHQgOiBSZW5kZXJGbG93
VGhyZWFkOjptYXhMb2dpY2FsSGVpZ2h0KCk7CiAgICAgaWYgKCFtdWx0aWNvbFN0eWxlLmxvZ2lj
YWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBtYXhDb2x1bW5IZWlnaHQgPSBz
dGQ6Om1pbihtYXhDb2x1bW5IZWlnaHQsIG11bHRpY29sQmxvY2stPmNvbXB1dGVDb250ZW50TG9n
aWNhbEhlaWdodChNYXhTaXplLCBtdWx0aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgTnVs
bG9wdCkudmFsdWVPcihtYXhDb2x1bW5IZWlnaHQpKTsKKyAgICAgICAgbWF4Q29sdW1uSGVpZ2h0
ID0gc3RkOjptaW4obWF4Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCks
IE51bGxvcHQpLnZhbHVlX29yKG1heENvbHVtbkhlaWdodCkpOwogICAgIHJldHVybiBoZWlnaHRB
ZGp1c3RlZEZvclNldE9mZnNldChtYXhDb2x1bW5IZWlnaHQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCA0YzBiN2IzNTNiMWRiZTQ0ZTc5NTc5MmQ4
NmFiZWM0ZjcwYzQyMGVkLi4yMDY4NjQwNjJkMzYzNWFmODQ2ZGFhZDQ1NDQ1YTA0YzBiYjUzN2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM3Myw5ICsz
NzMsOSBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0
VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IHN0eWxlTG9naWNhbEhlaWdodC52YWx1ZSgpIC0gYm9yZGVyczsKICAgICB9IGVsc2UgaWYgKHN0
eWxlTG9naWNhbEhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKLSAgICAgICAgcmV0dXJu
IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpLnZhbHVl
T3IoMCk7CisgICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5
bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZV9vcigwKTsKICAgICBlbHNlIGlmIChzdHlsZUxvZ2ljYWxI
ZWlnaHQuaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsQ29udGVudEhlaWdodFVzaW5nKHN0eWxlTG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdodCgp
IC0gYm9yZGVyQW5kUGFkZGluZywgYm9yZGVyQW5kUGFkZGluZykudmFsdWVPcigwKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKHN0eWxl
TG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZywgYm9yZGVy
QW5kUGFkZGluZykudmFsdWVfb3IoMCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gTGF5b3V0VW5pdCgpOwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAg
dm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlRmlyc3RMZXR0ZXIoUmVuZGVyVHJlZU11dGF0aW9uSXNB
bGxvd2VkKQogCiBpbnQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
IGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
biwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewotICAgIHJldHVy
biBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgcmV0dXJuIHZh
bHVlT3JDb21wdXRlKGZpcnN0TGluZUJhc2VsaW5lKCksIFsmXSB7CiAgICAgICAgIHJldHVybiBS
ZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVj
dGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IGMwMGNiY2M5OTEzZDEzZDc2ZjE3YWZk
ODMyYzg2OGYyYWI3OGViOWQuLmUxYTdlYWE3NTlhZDMzMTY5YmExMTFhMzVmOTE1YTRjMWU4Yzc1
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGlu
ZVBvc2l0aW9uKCkgY29uc3QKICAgICAvLyA8aHR0cDovL3d3dy53My5vcmcvVFIvMjAwNy9DUi1D
U1MyMS0yMDA3MDcxOS90YWJsZXMuaHRtbCNoZWlnaHQtbGF5b3V0PjogVGhlIGJhc2VsaW5lIG9m
IGEgY2VsbCBpcyB0aGUgYmFzZWxpbmUgb2YKICAgICAvLyB0aGUgZmlyc3QgaW4tZmxvdyBsaW5l
IGJveCBpbiB0aGUgY2VsbCwgb3IgdGhlIGZpcnN0IGluLWZsb3cgdGFibGUtcm93IGluIHRoZSBj
ZWxsLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuIElmIHRoZXJlCiAgICAgLy8gaXMgbm8gc3VjaCBs
aW5lIGJveCBvciB0YWJsZS1yb3csIHRoZSBiYXNlbGluZSBpcyB0aGUgYm90dG9tIG9mIGNvbnRl
bnQgZWRnZSBvZiB0aGUgY2VsbCBib3guCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVPcihib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjb250ZW50TG9naWNhbEhlaWdodCgp
KTsKKyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihib3JkZXJBbmRQYWRk
aW5nQmVmb3JlKCkgKyBjb250ZW50TG9naWNhbEhlaWdodCgpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSB2b2lkIG1hcmtDZWxsRGlydHlXaGVuQ29sbGFwc2VkQm9yZGVyQ2hhbmdlcyhSZW5kZXJUYWJs
ZUNlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCmluZGV4IGQ4ODVlOGUyYzYyNWM2ZGMwYjVmMmRmZjE1NzkzNDNlZTVlZTUxMGYu
Ljg2ZmZmMWI3NTQ5NmUwMDQ0ODM2ZjA2NjQxZmViNjFhMzMxYThiYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC05MzQsNyArOTM0
LDcgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKICAgICAgICAgLy8gT25seSBjZWxscyB3aXRoIGNvbnRlbnQgaGF2ZSBhIGJhc2Vs
aW5lCiAgICAgICAgIGlmIChjZWxsICYmIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsK
ICAgICAgICAgICAgIGludCBjYW5kaWRhdGUgPSByb3VuZFRvSW50KGNlbGwtPmxvZ2ljYWxUb3Ao
KSArIGNlbGwtPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2Fs
SGVpZ2h0KCkpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlT3Io
Y2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJl
c3VsdC52YWx1ZV9vcihjYW5kaWRhdGUpLCBjYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNDRhMWM1MjAzOWI1
ZDQ3ZmZjZDJhMWE3ZTE2YzU1ODAxOTAxZmQwOS4uNjU2YjczNDc4NzM4N2E4MDNiNDMyMzQxMmYy
NTdjMzI0MDNmOTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApA
QCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93LnZh
bHVlT3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKKyAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJz
dEdseXBoTGVmdE92ZXJmbG93LnZhbHVlX29yKGdseXBoT3ZlcmZsb3cubGVmdCk7CiAKICAgICBp
ZiAoKG5lZWRzV29yZFNwYWNpbmcgJiYgbGVuID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFm
aXJzdFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lkdGggKz0gd29yZFNwYWNpbmc7CkBAIC0xNjc3
LDcgKzE2NzcsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVk
Q2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogCiBTdHJpbmdWaWV3IFJlbmRl
clRleHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9w
KSBjb25zdAogewotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZU9yKHRleHRM
ZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHRM
ZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoZGVz
dGluYXRpb24gPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5hdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5jcHAKaW5kZXggZWMwMjg2NTA3MDY2YjMxOWJjNzdmMTZkNThmODMwY2Q5OWZmMzRk
Ni4uNWEyYWQ3MmJkZjdkNWQ0MzEzOTFhNDk4ZWE2NTg1ZTRiNWE3ZTRmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogICAgIGlmIChzdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICE9IFRleHREZWNvcmF0aW9uTm9uZSkgewogICAg
ICAgICBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSBjaGlsZHJlbk9mVHlwZTxSZW5k
ZXJUZXh0PihmbG93KS5maXJzdCgpOwogICAgICAgICBpZiAodGV4dFJlbmRlcmVyKSB7Ci0gICAg
ICAgICAgICB0ZXh0RGVjb3JhdGlvblBhaW50ZXIgPSBUZXh0RGVjb3JhdGlvblBhaW50ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRS
ZW5kZXJlciwgZmFsc2UpOworICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLmVtcGxh
Y2UocGFpbnRJbmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwg
KnRleHRSZW5kZXJlciwgZmFsc2UpOwogICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVy
LT5zZXRGb250KHN0eWxlLmZvbnRDYXNjYWRlKCkpOwogICAgICAgICAgICAgdGV4dERlY29yYXRp
b25QYWludGVyLT5zZXRCYXNlbGluZShzdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcAppbmRleCA1YjIxMTJmMzVhNDZkM2I1YjcxMjljOTU2ZWFkMjg4ODc5
MWFiZjU5Li5hNjY2YzliODQ5ZTUzZDk0NjJkNjNiODA0YzkyNzBlYjliMjdiNTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGludCBSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluCiAgICAgaWYg
KGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoUmVu
ZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVj
dGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgp
LnZhbHVlX29yKFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmly
c3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKIH0KIAogI2lmIEVOQUJMRShE
RUJVR19NQVRIX0xBWU9VVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCAwZTczM2I5ZWIxMzY0MmE4MWYzYmZlNGE0ZDJh
Nzk4YjJhYjcwMWRkLi45NGMyZjcxMjRlMDRiYjJjOWE2NGU4ZWNjNDA5MzdjYzZjOGRmMWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJs
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxC
bG9jay5oCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTEJsb2NrIDogcHVibGlj
IFJlbmRlckJsb2NrIHsKIAogICAgIHN0YXRpYyBMYXlvdXRVbml0IGFzY2VudEZvckNoaWxkKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgewotICAgICAgICByZXR1cm4gY2hpbGQuZmlyc3RM
aW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLmxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgIHJl
dHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLmxvZ2ljYWxIZWln
aHQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRl
eCBlZWE0ZjBkODMyMDZmMzQ3YjE3N2Y3M2YwNzI2NThkMDE2NmU2NDAzLi5jY2RmMjRmOWM2MWU2
MmQ1OWE1YmI4NWI3ZWNhYWI3Y2E5YWU3NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAg
Ym9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICBpZiAoIXBvaW50SXNJbnNpZGVWaWV3cG9ydENs
aXAocG9pbnRJblBhcmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9p
bnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVP
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQ
b2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICBp
ZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9p
bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCAyYmYwODZmYzFm
MzA3OTgzNTliZDY3NjhhNjM4NGFmMDk5ZDU3M2QwLi4xMDk1ZDI0ZTExMjE5YjYyMjdjOGMyZDY5
ZTE2ZjMxNzRjNWExMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBib29s
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdAogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3Jl
Z3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9p
bnQgPSBsb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBs
b2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAvLyBFYXJseSBleGl0IGlmIGxvY2FsIHBvaW50
IGlzIG5vdCBjb250YWluZWQgaW4gY2xpcHBlZCB2aWV3cG9ydCBhcmVhCiAgICAgaWYgKFNWR1Jl
bmRlclN1cHBvcnQ6OmlzT3ZlcmZsb3dIaWRkZW4oKnRoaXMpICYmICFtX3ZpZXdwb3J0LmNvbnRh
aW5zKGxvY2FsUG9pbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcAppbmRleCAxNTg0NzYxOWE3MTNhZGU1MDAwZjRiZWM2N2U1OGNjZDM3YzAx
MWY2Li4wZGNiOTE4MDcxZDgxMWE5NTJiNjdmODEzMTM2OGM1YjkzODRiMGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1
bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX0lNQUdFX0hJVFRFU1RJTkcs
IHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsKICAgICBib29sIGlzVmlzaWJsZSA9
IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8
ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewotICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9p
bnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKICAgICAgICAgICAgIAog
ICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMs
IGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CmluZGV4IGI1Y2JkZTZhOGUxNWQ4YjI5MjFiZmMxYmQ4ZGY5ZjBjYWQ0Y2FhMzYuLjVkODM1ZmUx
NzA2ZDg5MzAwZGVhY2FlNzI1YTFmMTAxMGRkZDhiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAg
LTI2NywxMCArMjY3LDEwIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0
Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluCiAgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0
Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0JveC55KCkpOwogICAgICAgICB0cmFuc2Zv
cm0uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9iamVjdEJvdW5k
aW5nQm94LmhlaWdodCgpKTsKLSAgICAgICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgcG9pbnQg
PSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2lu
dChwb2ludCk7CiAgICAgfQogCi0gICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KHBvaW50KTsKKyAgICBwb2ludCA9IGNsaXBQYXRoRWxlbWVudCgpLmFuaW1hdGVkTG9j
YWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KHBvaW50KTsKIAogICAgIGZvciAoTm9kZSogY2hpbGROb2RlID0gY2xpcFBhdGhFbGVtZW50
KCkuZmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGROb2RlLT5y
ZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBhNDkwNDY0Yjc5ZWEyZmQ5MzA3MDU4NTRm
OTVkMzA2ZGQ4YTVhMDZlLi5jZDViZjc1ZjZhMDA1OTg5NDZjYWMzNmRlOGJkMTU4ODk5Zjg5Mzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBH
cmFwaGljCiAKICAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+
YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVzdWx0SW1hZ2UpIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgICAgICBjb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1
dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24o
KS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1
bHRJbWFnZSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCAxYWNhNGU1MGNlMWI4
M2EzN2E3MmFhMzdlMGFlNTUzYmQ5ZTRmNGYwLi4zNTlmZDRiYWNiY2Q4NzU2MjllNzFhOWYyNjI5
YWZhMGZlMzY1ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBib29sIFJlbmRlclNWR1Jvb3Q6Om5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQog
ICAgIC8vIE9ubHkgdGVzdCBTVkcgY29udGVudCBpZiB0aGUgcG9pbnQgaXMgaW4gb3VyIGNvbnRl
bnQgYm94LgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBpbnRlcnNlY3Rpb24gd2hl
biByZWN0LWJhc2VkIGhpdCB0ZXN0cyBhcmUgc3VwcG9ydGVkIGJ5IG5vZGVBdEZsb2F0UG9pbnQu
CiAgICAgaWYgKGNvbnRlbnRCb3hSZWN0KCkuY29udGFpbnMocG9pbnRJbkJvcmRlckJveCkpIHsK
LSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50
KHBvaW50SW5QYXJlbnQpKTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CiAKICAgICAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IG5vZGVBdEZsb2F0UG9pbnQo
KSBkb2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIGhpdCB0ZXN0cyB5ZXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IGZlOTEyMjY0YjIz
OGZkNzMyODczNWNhN2RjYmViYjI2NTZkZWE1MTMuLjc1MDI0MGU1MzU4NGRlN2FmMDhkYTkyZGNk
ZTI2NjZiNzhlMzg1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6
bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3UKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJ
blBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJl
bnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0
aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMmJhYjdhN2ZjMGEyNDMw
YzMwZTg2ZDI1NjAxMGMwMzdjMDQ4MmNiYy4uODcwOGY0YjM5N2YxNTIxYjg0MjMwOWJkZDBkNmEw
MTQ1MzhlYTYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRG
bG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWwKICAg
ICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBp
ZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1N0cm9r
ZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKICAgICAgICAgICAgIHx8IChoaXRSdWxl
cy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFoaXRSdWxl
cy5yZXF1aXJlRmlsbCkpKSB7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICAgICAgRmxvYXRQb2ludCBsb2Nh
bFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAgICAgICAgIGlm
ICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2lu
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDRjN2RjYzJj
Nzc5MzdlMjc4ZmUzOTQ5ZGM3NjYwYmU5YzUxNWIxZmQuLmFmODEwZmRlZDI2NTgzNzk5ZTQyNmFm
NmIwODkxNjliYzhiYjY1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgU1ZHUmVuZGVy
U3VwcG9ydDo6aW50ZXJzZWN0UmVwYWludFJlY3RXaXRoU2hhZG93cyhjb25zdCBSZW5kZXJFbGVt
ZW50JiByZW5kCiAgICAgaWYgKGxvY2FsVG9Sb290VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHJvb3RUb0xvY2FsVHJhbnNmb3Jt
ID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpOworICAgIEFmZmluZVRyYW5zZm9ybSByb290VG9Mb2NhbFRyYW5zZm9ybSA9IGxvY2FsVG9S
b290VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAg
cmVwYWludFJlY3QgPSByb290VG9Mb2NhbFRyYW5zZm9ybS5tYXBSZWN0KHJlcGFpbnRSZWN0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggNGYzNWVkOWVhYTAzOTEzNGU3MGM4Y2UyMzE5NTg1Y2NkZjlkOTY5
NS4uYzRiM2FhYzViZmQxY2U4Y2M1NjYxYzhkYmJiZTRjNTMyNDY3ZWRjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmkKIAogICAgIC8vIFRoZSBt
YXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3Bh
Y2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNjYWxlZC4KICAgICAvLyBTbyB0aGUgYWN0
dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9uZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRp
bmF0ZSBzcGFjZSBhcyB3ZWxsLgotICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgY29udGV4dC5j
b25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKSk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFi
c29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zv
cm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVy
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAK
aW5kZXggYWVlOTQ3YzAxMzZkOWM2MGNlMDI1Y2I5MzcxN2YzNGExZjkyODU5MS4uZDIzNzJmZmJh
ZjAwNjE1MWMwZDA2NDAxYmZlY2ZiZjkyMmQ0MDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAtMTMxMSw3ICsxMzExLDcgQEAgdm9pZCBT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVu
dCYgZ2x5cGhPck1pc3NpbmcKICAgICBpZiAoZ2x5cGhCb3VuZGluZ0JveCkKICAgICAgICAgbV9t
aW5SaWdodFNpZGVCZWFyaW5nID0gc3RkOjptaW4obV9taW5SaWdodFNpZGVCZWFyaW5nLCBob3Jp
em9udGFsQWR2YW5jZSAtIGdseXBoQm91bmRpbmdCb3gudmFsdWUoKS5tYXhYKCkpOwogCi0gICAg
bV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhv
cml6b250YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVP
cihGbG9hdFJlY3QoKSksIGNvZGVwb2ludHMpKTsKKyAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhE
YXRhKFdURk1vdmUocGF0aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRp
Y2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSksIGNvZGVw
b2ludHMpKTsKIH0KIAogdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJl
R2x5cGhzKCkKQEAgLTE0MzUsNyArMTQzNSw3IEBAIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZH
VG9PVEZGb250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCkKICAg
ICAgICAgICAgIHByb2Nlc3NHbHlwaEVsZW1lbnQoZ2x5cGhFbGVtZW50LCAmZ2x5cGhFbGVtZW50
LCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIHVuaWNv
ZGVBdHRyaWJ1dGUsIGJvdW5kaW5nQm94KTsKICAgICB9CiAKLSAgICBtX2JvdW5kaW5nQm94ID0g
Ym91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSk7CisgICAgbV9ib3VuZGluZ0JveCA9IGJv
dW5kaW5nQm94LnZhbHVlX29yKEZsb2F0UmVjdCgpKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDEwMDAKICAgICAvLyA8cmRhcjov
L3Byb2JsZW0vMjAwODYyMjM+IENvY29hIGhhcyBhIGJ1ZyB3aGVyZSBnbHlwaCBib3VuZGluZyBi
b3hlcyBhcmUgbm90IGNvcnJlY3RseSByZXNwZWN0ZWQgZm9yIGZydXN0dW0gY3VsbGluZy4gV29y
ayBhcm91bmQgdGhpcyBieQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCA0OGJiZDMwZDc3NjdiY2E1NTJmYTA4MTA1
MmUwMjBmMWUwMWMzYzE0Li5jNzY3ZDliZTA0NTAxMjA2ZDQwMmY2ZmE4Zjk5ZWE4NGFmNmMxN2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0
eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1
cml0eU9yaWdpbi5tbQpAQCAtOTAsNyArOTAsNyBAQCAtIChOU1N0cmluZyAqKXN0cmluZ1ZhbHVl
CiAKIC0gKHVuc2lnbmVkIHNob3J0KXBvcnQKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPnBvcnQoKS52
YWx1ZV9vcigwKTsKIH0KIAogLy8gRklYTUU6IE92ZXJyaWRpbmcgaXNFcXVhbDogd2l0aG91dCBv
dmVycmlkaW5nIGhhc2ggd2lsbCBjYXVzZSB0cm91YmxlIGlmIHRoaXMgZXZlciBnb2VzIGludG8g
YW4gTlNTZXQgb3IgaXMgdGhlIGtleSBpbiBhbiBOU0RpY3Rpb25hcnksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNzg0YWFjZGUwNGU0Yjc2MGRjOWZlZTlhZmM5
MWJmNmIwNzA3MzMzOC4uMjc4MzhjY2IzOTgzOWRmMmExOWVkYTRjNzI3Y2IxOGI2ZTc4ZTdjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtMTE5LDcgKzExOSw3
IEBAIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQoX091dF8gdW5zaWduZWQgc2hvcnQq
IHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAot
ICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5T3JpZ2luLT5wb3J0KCkudmFsdWVPcigwKTsKKyAgICAq
cmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApOwogCiAgICAgcmV0
dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
ZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1
cml0eU9yaWdpblJlZi5jcHAKaW5kZXggZDRhYTAxM2EzODlhOWQ0MTc0NjQxNTU5ZjNhZTcxZTVm
YWEwNzA2Ny4uOGRmOGZmYWFiN2M0ZmE3ODg2NDVlMTc3ZmViNmMxNTFiN2EzM2I3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNw
cApAQCAtNzQsNyArNzQsNyBAQCBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weUhvc3Qo
V0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIAogdW5zaWduZWQgc2hvcnQgV0tT
ZWN1cml0eU9yaWdpbkdldFBvcnQoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikK
IHsKLSAgICByZXR1cm4gdG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5w
b3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gdG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CiAKIC8vIEZvciBiYWNrd2FyZHMg
QUJJIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDdlYTZhOThlNjQw
MTE3NDFjNGUzYzRmOWRjNmZhNzgzNWRjM2ZiMzAuLjU5MDY5MWI4Y2MzYjM5NGRmYjZjZjEwMDIz
Y2ExNmRlOWNhM2NlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xMDEsOSArMTAxLDkg
QEAgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclIKIAogICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQo
dG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCks
IG9yaWdpbik7CiAgICAgICAgICAgICBpZiAob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUpCi0g
ICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUo
b3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVPcigwKSkpOworICAgICAgICAgICAgICAg
IGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlv
blRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMu
Y3JlYXRpb25UaW1lLnZhbHVlX29yKDApKSk7CiAgICAgICAgICAgICBpZiAob3JpZ2luRGV0YWls
cy5tb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1w
bChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJp
bmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUu
dmFsdWVPcigwKSkpOworICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwg
QVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUudmFsdWVf
b3IoMCkpKTsKIAogICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rp
b25hcnk6OmNyZWF0ZShXVEZNb3ZlKGRldGFpbHNNYXApKSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5t
bQppbmRleCBjNTU0M2EyMGI3MWU4Yzk3NmUyMTIyYjliNGJlYTQ4YjM3NTFmYzcwLi5iNzExMmNl
ZTE3YmRjYzI2OWJjOWY5ZTI3MWQyNDAyZGEyMTY2ODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCkBAIC01OCw3
ICs1OCw3IEBAIC0gKE5TU3RyaW5nICopaG9zdAogCiAtIChOU0ludGVnZXIpcG9ydAogewotICAg
IHJldHVybiBfc2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlT3Io
MCk7CisgICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCku
dmFsdWVfb3IoMCk7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1l
bnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2Nv
Y29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQppbmRleCA1NzlhZmFmYThiMjY2ZDU3MmZkZDZlODQxNmZiYWYyYzMzMjkxZGYwLi43NDFjNmMx
M2NlMDdhODZmM2FlZWFhMzZjOTVlMTJhOWMyZDNjNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMjc1LDcgKzI3NSw3IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNEZWNpbWFsTnVtYmVyPiB0b0RlY2ltYWxOdW1iZXIoaW50NjRfdCB2YWx1
ZSkKIAogc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTdW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRT
dW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJ
dGVtKQogewotICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1h
cnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGlu
ZUl0ZW0uYW1vdW50LnZhbHVlT3IoMCkpLmdldCgpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRl
bVR5cGUobGluZUl0ZW0udHlwZSldOworICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3VtbWFyeUl0
ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0Rl
Y2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50LnZhbHVlX29yKDApKS5nZXQoKSB0eXBlOnRvUEtQ
YXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KIAogc3RhdGljIFBLTWVy
Y2hhbnRDYXBhYmlsaXR5IHRvUEtNZXJjaGFudENhcGFiaWxpdGllcyhjb25zdCBXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDI3YjFmMTYwZDhmNzhmN2VhZjU1ZGQxZDgz
M2E3ZDEyZWQ5Nzk2YTEuLjIyM2YwY2IyZTdkYWRjYTkzOGQ1NTM1MzE1MmRmN2E1NDA0Njg5ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvck5hbWVBbmREZXRh
aWxzU2VwYXJhdG9yID0gIjsiOwogCiAvLyBNYWtlIHN1cmUgdGhlIHByZWRlZmluZWQgZXJyb3Ig
bmFtZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIHVzZSBJbnRlcm5hbEVycm9yLgotI2RlZmluZSBWQUxJ
REFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9yU3RyaW5nKS52YWx1ZU9yKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW50ZXJuYWxFcnJvcikK
KyNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmluZyku
dmFsdWVfb3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJ
bnRlcm5hbEVycm9yKQogCiAvLyBJZiB0aGUgZXJyb3IgbmFtZSBpcyBpbmNvcnJlY3QgZm9yIHRo
ZXNlIG1hY3JvcywgaXQgd2lsbCBiZSBhIGNvbXBpbGUtdGltZSBlcnJvci4KICNkZWZpbmUgU1RS
SU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUoZXJyb3JOYW1lKSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjplcnJvck5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGYyYTI4OTg5
YjIyMzc4ZDAyZWM5YjY1OWEyNDZlYTc1YzZmZWIwNDYuLjE5YWE3NDk5MjQ3YjE3NDk4YjRlMTgz
MTFmOWRhZGY1YTM3ZjI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUoQmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0ZvcndhcmRM
aXN0U3QKICAgICAgICAgaXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFn
ZUlEKCkpKTsKICAgICB9CiAgICAgbV9oYXNDdXJyZW50SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlz
dFN0YXRlLmN1cnJlbnRJbmRleDsKLSAgICBtX2N1cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlz
dFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZU9yKDApOworICAgIG1fY3VycmVudEluZGV4ID0gYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZhbHVlX29yKDApOwogICAgIG1fZW50cmll
cyA9IFdURk1vdmUoaXRlbXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3LmNwcAppbmRleCBkN2Y3YjQ3MGE0NzExYjU3YWJkYTc3N2Y0M2UzZWVhZjRkYmU0NTE3Li43
ZmRiMzNiNTM2MzY5ZWE0NmFkNzA3YjdjNTlmMDM2MTNhMWJmZGE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFdlYlZp
ZXc6OmRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdldCwg
Y29uc3QgV2ViQ29yZQogCiBBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtRnJvbVNj
ZW5lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICByZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgp
LmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiB9CiAKIEFmZmluZVRyYW5z
Zm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Ub1NjZW5lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApp
bmRleCAwMTZjNmI5MzM0NjUzY2ZlYTIyOTBiMjE2NTAwYWIwMDkyMWJkZTZmLi42N2VhYTBkNTRk
MmQzNzdkNDAzOTJjZmY1YzNjZDM0OGEyNmRlMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0y
ODIsOCArMjgyLDggQEAgc3RhdGljIHZvaWQgZW5jb2RlRm9ybURhdGFFbGVtZW50KEhpc3RvcnlF
bnRyeURhdGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIVFRQQm8KICAgICAgICAgZW5jb2RlciA8
PCBmYWxzZTsKIAogICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZVN0YXJ0OwotICAgICAg
ICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZU9yKC0xKTsKLSAgICAgICAgZW5j
b2RlciA8PCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVPcihzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKKyAgICAgICAgZW5jb2RlciA8
PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoLTEpOworICAgICAgICBlbmNvZGVyIDw8IGVs
ZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcihzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCmlu
ZGV4IDVlZGU1NmVlZTQwYWNmZGI5OTAxMTlkZTdhY2U5MThlNjc4YmM2NjYuLmY5NjFhMzU5MTU0
MTE1NzE0NzhkNDA3NDQ0MjEzNDRhZjlhMDhjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0K
QEAgLTExOTYsNyArMTE5Niw3IEBAIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21Sb290
Vmlld1RvUGx1Z2luKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIEludFBvaW50IFBERlBs
dWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQp
IGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKHBvaW50Lngo
KSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsKLSAgICByZXR1cm4gbV9yb290Vmlld1Rv
UGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOworICAgIHJldHVybiBtX3Jvb3RWaWV3VG9Q
bHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQogCiBGbG9hdFJlY3QgUERGUGx1Z2lu
Ojpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0
CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBGbG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBE
RlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgICAgIHJldHVy
biBGbG9hdFJlY3QoKTsKIAogICAgIEZsb2F0UG9pbnQgb3JpZ2luSW5QbHVnaW5Db29yZGluYXRl
cyhyZWN0LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcmVjdC55KCkgLSByZWN0LmhlaWdodCgpKTsK
LSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1Bs
dWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVj
dChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcywgcmVjdC5zaXplKCkpKTsKKyAg
ICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdp
blRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qo
RmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJlY3Quc2l6ZSgpKSk7CiAKICAg
ICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QocmVj
dEluUm9vdFZpZXdDb29yZGluYXRlcykpOwogfQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgSW50UmVj
dCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEludFJl
Y3QoKTsKIAogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBz
aXplKCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290
Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBSZWN0KGJvdW5kcyk7CisgICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29u
dGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMp
KTsKIH0KIApAQCAtMTIzMCw3ICsxMjMwLDcgQEAgdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb24KICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gcGx1Z2luU2l6ZTsKLSAgICBtX3Jvb3RWaWV3
VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zv
cm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSk7CiAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldEZyYW1lU2l6ZTpwbHVn
aW5TaXplXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZGI0ZWMzZTQx
Mjk5ZjY5Mjk2MWY3NGRkMjE2Yzk3YzZkYTQ2MTIzNS4uN2VmYTA3NDM0NDM1NjE5ODIyNDEwMjAw
MWY5Nzk1ODA0ZmEyZjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkzMiw3ICs5MzIsNyBAQCBJbnRSZWN0IFBERlBs
dWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlk
Q2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pCiB7CiAgICAgbV9wbHVn
aW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybTsKLSAgICBt
X3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX3Jvb3RWaWV3VG9QbHVn
aW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgbV9zaXplID0gcGx1Z2luU2l6ZTsKIAogICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPnZpZXcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDFjYTdmNDQ5N2E3OThiM2U1
ZGVkNGFlZWIxOGVhY2MyZjE5YWE3NzEuLjI4Zjc1N2ZmZTBiNDM0NmYyNjM3OTlmMDQ3Zjc2MTQ3
YjY4NDRjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0
IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
SFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+YXBw
ZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50
LmZpbGVMZW5ndGgudmFsdWVPcihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlT3IoaW52YWxpZEZpbGVUaW1lKCkpKTsK
KyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwg
ZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZh
bHVlX29yKGludmFsaWRGaWxlVGltZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCBiOGVkOWViMmEyMGY1NTBlMzhmNjQ4OGE0OTA2ZGM1MjNiYzIy
NDQ3Li5iZGU2NjJiNjQ1NTQ5ODA5MDFlZWYzNWM4MjFhYmI3NWZiNzY5MjI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNlY3Vy
ZUNvbnRlbnQ+IGhhCiAgICAgd2ViUGFnZS0+c2FuZGJveEV4dGVuc2lvblRyYWNrZXIoKS5kaWRD
b21taXRQcm92aXNpb25hbExvYWQobV9mcmFtZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJv
Y2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1p
dExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRp
b25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXND
dXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3Jl
RnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCku
Y2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2VydGlmaWNhdGVJ
bmZvKCk7IH0pLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1
bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwor
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCks
IGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgdmFsdWVPckNvbXB1dGUoZG9jdW1lbnRMb2FkZXIucmVz
cG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7
IH0pLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgp
LCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogICAgIHdl
YlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGU5YmJiMmJhNzk5NDEwYjNiMDY0
NjQ4YzE0OTg1OTlhM2RlMTE5ZjMuLmUxOGE5Nzg5ZjFhZDM2ODdhMWFjOWJjMTA0YjQ0ZGJkMmI1
MGI4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIENlcnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlm
aWNhdGVJbmZvKCkgY29uc3QKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmlj
YXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9
KTsKKyAgICByZXR1cm4gdmFsdWVPckNvbXB1dGUoZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCku
Y2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KTsKIH0K
IAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU1ZjBiZTA5YWI0ZmZmY2I3MWEwMTgz
YzE4OWFmODE4Y2VhMzUzZGUuLmM4MDQ2NTQ4MWJmMjkzZmJlNWY4ZmJiMzNiOWYwMTIxZTU1ZjZm
NGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAxNi0xMC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgTExWTSBsaWJjKysgb3B0aW9uYWwgYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFy
c2VIVE1MSW50ZWdlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVj
a1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOgorCiAyMDE2LTEwLTMwICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dlYklETF0gUmVzdHJ1Y3R1cmUgSURMUGFyc2VyIHN0
cnVjdHMgdG8gYmV0dGVyIG1hdGNoIG1vZGVybiBXZWJJREwgY29uY2VwdHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcAppbmRleCBhMDcxNWZkNjJmZTc2YzEwMmM0
NDNhMWM3NzQ2ZjZkNGI4OGM3NGJiLi4wNzU3NWIxNjkwYmM4YWI0YmVmNzQyM2IzOTc1MzI0OTU0
ODczZGZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25h
bC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFjaykKIHsKICAgICBib29s
IGNhbGxlZCA9IGZhbHNlOwogICAgIE9wdGlvbmFsPGludD4gYTsKLSAgICBpbnQgcmVzdWx0ID0g
YS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgIGludCByZXN1bHQgPSB2YWx1ZU9yQ29tcHV0ZShh
LCBbJl0gewogICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMzAwOwogICAg
IH0pOwpAQCAtODUsNyArODUsNyBAQCBURVNUKFdURl9PcHRpb25hbCwgQ2FsbGJhY2spCiAKICAg
ICBhID0gMjUwOwogICAgIGNhbGxlZCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IGEudmFsdWVPckNv
bXB1dGUoWyZdIHsKKyAgICByZXN1bHQgPSB2YWx1ZU9yQ29tcHV0ZShhLCBbJl0gewogICAgICAg
ICBjYWxsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMzAwOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
CmluZGV4IDBmMWMwMmQ5ZTZjYTg1YzA5Y2I0OTZjYjM3ZjEyYzI5OWY1OGZlZjguLjZlOWU3Mzhh
YjViY2UxZGZhYmZiNDJmNjBlYjdiMmYyYjY0NWNiNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgc3RhdGljIGludCB0ZXN0UGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlu
cHV0KQogewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0
KTsKICAgICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9u
YWxSZXN1bHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3Io
MCk7CiB9CiAKIHN0YXRpYyBib29sIHBhcnNlSFRNTEludGVnZXJGYWlscyhjb25zdCBTdHJpbmcm
IGlucHV0KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyB1bnNpZ25lZCB0ZXN0UGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRp
b25hbFJlc3VsdCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQ
RUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZh
bHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBz
dGF0aWMgYm9vbCBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXJGYWlscyhjb25zdCBTdHJpbmcm
IGlucHV0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2Vy
LmNwcAppbmRleCA0N2NkMDcyOTdiNDlkZDg2ZjQ4ZTA1YzZmMmU1NWE3NTcxZWI1ZDhiLi4xMWFh
YzY4NDRlZmViM2ZiNjdhNzU4NTNiMDA1NThmN2Y5MTZkOGI2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBz
dGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0
ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVy
bC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3Mo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1Rf
RVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1
ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYg
cGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIG9sZFVSTC51c2Vy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBF
Q1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTM1NCw3ICszNTQs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsK
LSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdt
ZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBzdGF0
aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIG9sZFVS
TC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgb2xkVVJMLnBh
c3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsK
LSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAg
ICBFWFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTQ4MCw3
ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5w
YXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3Qs
IHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52
YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1
ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzT2xkLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c09sZC5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzT2xkLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFy
dHNPbGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFy
dHNPbGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNPbGQucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzT2xkLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
T2xkLmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTUyNSw3ICs1
MjUsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNz
d29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVy
bC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1
ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9v
cigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkp
KTsKQEAgLTUzNSw3ICs1MzUsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVy
ZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzT2xkLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c09sZC5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzT2xkLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNP
bGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNP
bGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHNPbGQucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
T2xkLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xk
LmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTExODcsNyArMTE4
Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
dXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1
cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkp
OwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAg
IEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJh
Z21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTIxMyw3ICsxMjEzLDcgQEAg
c3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1
cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNz
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAg
RVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNU
X0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5x
dWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwg
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293404</attachid>
            <date>2016-10-31 01:21:06 -0700</date>
            <delta_ts>2016-10-31 01:53:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031011711.patch</filename>
            <type>text/plain</type>
            <size>159415</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi45ZDcyODM1ZjA5OTY3ZDI4
MDU5OWJlZjViY2EyM2FhYjNiNzFlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1w
bGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgUHJldmlvdXMgV1RGOjpPcHRpb25hbDo6b3BlcmF0b3I9IGlzIG5vdCBjb21wYXRpYmxl
IHRvIHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yPS4KKyAgICAgICAgc3RkOjpvcHRpb25hbDo6ZW1w
bGFjZSBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91cyBvbmUuCisgICAgICAg
IFNvIHdlIGNoYW5nZSB0aGUgY29kZSB0byB1c2UgaXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIFVzZSB2YWx1ZV9vciBp
bnN0ZWFkIG9mIHZhbHVlT3IuCisKIDIwMTYtMTAtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJpbmdpZnkgc2hvdWxkIGhh
bmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJheSBpcyB0cnVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAuLjU5NDQzYWQ0OTY4YThi
NjU4YjdhNmY4MmQ0NTEyZThlZjRjN2JkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTYtMTAt
MzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dU
Rl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6
T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZmZlcmVkIGJ5
IHRoZSBDKysxNworICAgICAgICBvcmlnaW5hbCBwcm9wb3NhbCBwYXBlci4gSXQgaGFzIHRoZSBz
YW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eQorICAgICAgICB0byB0aGUgQysrMTcncyBv
bmUuIFByZXZpb3VzIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFsaXRpZXMu
CisgICAgICAgIFRoZSBsYXJnZXN0IG9uZSBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIgY29uc3Ry
dWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBPcHRpb25h
bDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluIFdlYktpdC4KKworICAgICAg
ICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3RydWN0b3JzLiBTbyBvbmx5
IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhlIHdheSB0byB1c2UgV1RG
OjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGdsb2JhbCB2YXJpYWJsZXMu
IFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBhbmQKKyAgICAgICAgd2Ug
d291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFyaWFibGVzIHRoYXQgaW5j
bHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBpcyB0aGUgbWFpbiBtb3Rp
dmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGFsbG93cyB0
aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAgICAgIHNpZ25hdHVyZXMg
YXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAgICAgV2UgaW1wb3J0IHRo
ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIGluc3RlYWQgb2YgTExWTSBsaWJjKysncyBv
bmUuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBMTFZNIGxpYmMrKydzIG9uZSBkZXBlbmRzIG9u
IG1hbnkgbWFjcm8gYW5kIHR5cGVfdHJhaXRzCisgICAgICAgIG9mZmVyZWQgYnkgbGliYysrIGlt
cGxlbWVudGF0aW9uLiBBbmQgYWRvcHRpbmcgaXQgdG8gV2ViS2l0IHJlcXVpcmVzCisgICAgICAg
IGxhcmdlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGlzIHJlZmVyZW5jZSBpbXBsZW1lbnRh
dGlvbiBvbmUuCisgICAgICAgIFRvIGtlZXAgdGhlIHRoaW5nIHNpbXBsZSwgd2UgaW1wb3J0IHRo
ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIG5vdy4KKyAgICAgICAgT25jZSBDKysxNyBp
cyByZWxlYXNlZCBhbmQgd2UgdXBkYXRlIHRoZSBjb21waWxlciBiYXNlbGluZSwgd2UgY2FuIHNt
b290aGx5CisgICAgICAgIHN3aXRjaCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIHN0ZDo6b3B0
aW9uYWwuCisKKyAgICAgICAgQW5kIHdlIGFsc28gYWRkIHZhbHVlT3JDb21wdXRlIGhlbHBlciBm
dW5jdGlvbi4gVGhhdCBrZWVwcyB0aGUgZXh0ZW5kZWQKKyAgICAgICAgZnVuY3Rpb25hbGl0eSB0
aGF0IHByZXZpb3VzIFdURjo6T3B0aW9uYWwgaGFzLgorCisgICAgICAgICogd3RmL09wdGlvbmFs
Lmg6CisgICAgICAgIChXVEY6OmlzX2Fzc2lnbmFibGU6Omhhc19hc3NpZ24pOgorICAgICAgICAo
V1RGOjpkZXRhaWxfOjpoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y6Omhhc19vdmVybG9hZCk6Cisg
ICAgICAgIChXVEY6OmRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YpOgorICAgICAgICAoV1RGOjpk
ZXRhaWxfOjpjb252ZXJ0KToKKyAgICAgICAgKFdURjo6bnVsbG9wdF90OjpudWxsb3B0X3QpOgor
ICAgICAgICAoV1RGOjpiYWRfb3B0aW9uYWxfYWNjZXNzOjpiYWRfb3B0aW9uYWxfYWNjZXNzKToK
KyAgICAgICAgKFdURjo6b3B0aW9uYWxfYmFzZTo6b3B0aW9uYWxfYmFzZSk6CisgICAgICAgIChX
VEY6Om9wdGlvbmFsX2Jhc2U6On5vcHRpb25hbF9iYXNlKToKKyAgICAgICAgKFdURjo6Y29uc3Rl
eHByX29wdGlvbmFsX2Jhc2U6OmNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKToKKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6OmRhdGFwdHIpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6Y29udGFpbmVk
X3ZhbCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpfX05PRVhDRVBUXyk6CisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRv
cj0pOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZW1wbGFjZSk6CisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpvcGVyYXRvciAtPik6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvciAq
KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6OnZhbHVlKToKKyAgICAgICAgKFdURjo6T3B0aW9u
YWw6OnZhbHVlX29yKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6
Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjwpOgorICAgICAgICAoV1RGOjpv
cGVyYXRvcj4pOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I+PSk6CisgICAgICAgIChXVEY6Ol9fTk9FWENFUFRfKToKKyAgICAgICAgKFdURjo6bWFr
ZU9wdGlvbmFsKToKKyAgICAgICAgKHN0ZDo6aGFzaDxXVEY6Ok9wdGlvbmFsPFQ+Pjo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChXVEY6Ok51bGxvcHRUYWc6Ok51bGxvcHRUYWcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6fk9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6Om9wZXJhdG9yIGJvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRp
b25hbDo6b3BlcmF0b3ItPik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVy
YXRvciopOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9yQ29tcHV0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6Ok9wdGlvbmFsOjphc1B0cik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpkZXN0cm95KTogRGVsZXRlZC4KKwogMjAxNi0xMC0zMCAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIEhhcmZCdXp6IG90LW1hdGggQVBJIHRv
IHBhcnNlIHRoZSBPcGVuVHlwZSBNQVRIIHRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ExMWNjOGMzOGQ4
Yzk4MGI2ZDhmZjc4MTkwMzc2Mzk3MTU4NTNiNS4uOTYzOTY3ZGYxODgwZjk2M2IyYTBiNmFjODc0
MWE0M2EzODEyNWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAxNi0xMC0zMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJ
bXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRp
b25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHZhbHVlT3IgdG8gdmFsdWVfb3IuIFRoaXMgaXMgc3BlY2lmaWVkIGluIEMrKzE3IHByb3Bv
c2FsLgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6ZW1wbGFjZS4gQysrMTcgT3B0aW9uYWw6Om9w
ZXJhdG9yPShPcHRpb25hbCYmKSByZXF1aXJlcworICAgICAgICBlaXRoZXIgY29weSBhc3NpZ25t
ZW50IG9wZXJhdG9yIG9yIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4gQnV0CisgICAgICAgIERG
Rzo6SlNWYWx1ZU9wZXJhbmQgZXRjLiBvbmx5IGRlZmluZXMgbW92ZSBjb25zdHJ1Y3RvcnMgYW5k
IGRyb3AKKyAgICAgICAgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKworICAg
ICAgICBJdCB3YXMgT0sgaW4gdGhlIHByZXZpb3VzIFdURjo6T3B0aW9uYWwgc2luY2UgaXQgYWx3
YXlzIHVzZXMgbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMuIEJ1dCBpdCBpcyBub3QgdmFsaWQg
aW4gQysrMTcgT3B0aW9uYWwuIFdlIHVzZSBPcHRpb25hbDo6ZW1wbGFjZQorICAgICAgICBpbnN0
ZWFkLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHByZXZpb3Vz
IFdURjo6T3B0aW9uYWwncworICAgICAgICBvcGVyYXRvcj0uCisKKyAgICAgICAgTm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0
Y2gpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnREVE1G
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlz
ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnN3YXApOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkpOgorICAgICAgICAq
IGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6ZG91YmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
T2JzZXJ2ZXI6Om9ic2VydmUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4
dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2VJbnRl
cm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZs
aWdodCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6ZGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmRlYnVnU3RyaW5n
KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVz
dFNlbGVjdGlvblJlY3RGb3JUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVy
Qm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9P
dXRwdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjptYXBBYnNv
bHV0ZVBvaW50VG9Mb2NhbFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFu
c2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybVN0YXRlOjptYXBRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFuc2Zv
cm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNp
emVGb3JNaW5BbmRNYXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0R3Jvd3RoTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZH
cmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pblNpemVGb3JDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJh
Y2tTaXppbmdGdW5jdGlvbnNGb3JOb25TcGFubmluZ0l0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmll
dyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxCbG9jazo6YXNjZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRh
aW5lcjo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25P
YmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0
VGVzdENsaXBDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
Ojpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
VGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmludGVy
c2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250
ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9j
ZXNzR2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRl
cjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKwogMjAxNi0xMC0zMCAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGZpeDogQ29ycmVjdCBD
aGFuZ2VMb2cgYWZ0ZXIgbXkgYmFkIG1lcmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGNmNmFlNjFk
OTk0NTRiYzBiOTkwMTgxZWI0NGIyYjMzMzQyNWRjMzUuLmFmOGI3ZTk1ZDRiNWZhOGYwOTczNjVm
NmQ5YjliN2Y4MTZjZDJmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ni0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2lu
IHBvcnRdKToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAsIGFuZCBET01TdHJpbmdNYXAgZnJv
bSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDFhNjZhZjcw
NWYwZjZlMDgyN2M3ZDA4N2E2YTlkYjU3ODYzZWYyMDcuLjFkNTJlNmM1ZjI4YzVkOWY1MTRjYTlh
ZTRlMDc4NTBhMTU1YzhlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ni0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogV2ViU2VjdXJp
dHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQpOgorCiAyMDE2
LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVs
ZW1lbnQsIE5hbWVkTm9kZU1hcCwgYW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUg
dG8gRXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTY3NmVhOTQxNTIxOWE1NjUwOGIwMTQ3MGU4YmU5
NTYwZGZkZGExZi4uOWRiYTdiODU2OTBkMDcwNDUzYTA2NGJmZjA3ZjQxOTJlNjY3MDcxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE2LTEwLTMxICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFs
IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6dmFs
dWVfb3IgYW5kIFdURjo6dmFsdWVPckNvbXB1dGUuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tTZWN1cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luR2V0UG9y
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5
T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4u
bW06CisgICAgICAgICgtW1dLU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5l
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKToKKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5
RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0
TG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisKIDIwMTYtMTAtMzAgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFt
ZWROb2RlTWFwLCBhbmQgRE9NU3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggN2I1N2IxODkyOTM3MDYxMGI3M2EwMGNlNWM1MDlkMzFjZmI1NTYxZi4uMTE5ZDZkYmVj
MjI1NWMyNGQ3NGY2NzI5YmY2NmYwYjM3YzRiYzViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyNTIsMTEgKzMyNTIsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAgIFJF
TEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0Nv
bnN0KCkpOwogCiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgbGVm
dCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFj
ZSh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBy
aWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5l
bXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNW
YWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM0MDUsMTEgKzM0MDUsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxF
QVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25z
dCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQg
PSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2Uo
dGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygp
OwogICAgIH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmln
aHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1w
bGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFs
dWVSZWdzKCk7CiAgICAgfQogCkBAIC0zNTQ2LDcgKzM1NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSQogCiAgICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlm
IChuZWVkc1NjcmF0Y2hGUFJSZWcpIHsKLSAgICAgICAgZnByU2NyYXRjaCA9IEZQUlRlbXBvcmFy
eSh0aGlzKTsKKyAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3Jh
dGNoRlBSID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQogCkBAIC0zNTgwLDExICszNTgwLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmlu
YXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgQVNTRVJUKCEoR2VuZXJhdG9yOjppc0xl
ZnRPcGVyYW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJhdG9yOjppc1JpZ2h0
T3BlcmFuZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVyYW5kKSkpOwogCiAgICAgaWYgKCFHZW5lcmF0
b3I6OmlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAgICAgICBs
ZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBs
YWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJl
Z3MoKTsKICAgICB9CiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25z
dGFudChyaWdodE9wZXJhbmQpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhp
cywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7
CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAt
MzY0OSwxMCArMzY0OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5v
ZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9KTsK
ICAgICB9IGVsc2UgewogICAgICAgICBpZiAoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRD
b25zdGFudChsZWZ0T3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFu
ZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRD
aGlsZCk7CiAgICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmln
aHRPcGVyYW5kKSkgewotICAgICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICAgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7
CiAgICAgICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAg
fQogCkBAIC00NzY2LDExICs0NzY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aERpdihOb2RlKiBub2RlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQu
aXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgICAgICBpZiAoIWxl
ZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5k
KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENo
aWxkKTsKICAgICAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAg
IHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgICAgICBy
aWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgcmlnaHRSZWdzID0g
cmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KIApAQCAtNzI3Nyw3ICs3Mjc3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAg
ICBPcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlmIChw
YXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9i
amVjdEVkZ2UgPSBub2RlLT5jaGlsZDIoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0ID0gU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CisgICAgICAgIGdsb2JhbE9i
amVjdC5lbXBsYWNlKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAgICByZWdzLmFwcGVu
ZChET01KSVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUuZm9yTm9kZShnbG9i
YWxPYmplY3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4ZjcyYjFlOGRi
NjFkN2YzM2UzMDNkM2I3M2Q1YjNmNTJiZWNlOGY4Li5mOThlMTQ1ZGY0NWIwYWM5NTcyZDNmNThk
YzE5ZWIzMzIzMDJiZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTUwNDUsMTEgKzUwNDUsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBPcHRpb25hbDxKU1Zh
bHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsKICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAg
ICAgICAgICBrZXlBc1ZhbHVlID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAga2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgIGtleVJlZ3MgPSBrZXlBc1ZhbHVlLT5qc1ZhbHVlUmVncygpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBTdHJpbmdVc2UgfHwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0g
ICAgICAgICAgICBrZXlBc0NlbGwgPSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICBrZXlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGtl
eUFzQ2VsbC0+Z3ByKCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGY4OWMxZTY5NzU2OWIzMjhjMWIy
ZGQ0MjVkZTM1ZTRmNDJhMzc0ODYuLjVmMTczYjYwOTQ1OGYwMDg2NTc4N2YyYmMwYWQ3N2NjMzNj
YzEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtNTE5NSwxMSArNTE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlB
c1ZhbHVlOwogICAgICAgICBHUFJSZWcga2V5R1BSOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtleUFzVmFsdWUgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc1Zh
bHVlLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5R1BSID0g
a2V5QXNWYWx1ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0
ZUNlbGxPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzQ2Vs
bC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtl
eUFzQ2VsbC0+Z3ByKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tCmluZGV4IDEyZjk1NGMwMzQ5YzFiZmM3MzMwM2Q2MjlmZGYxZmViYTU2MjU1N2MuLjA0
ODJjNzhhNThmYjU4MDJjZDE4NzcxMmViYWUyYTYwOWU0NDJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0
b21hdGljYQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX3RhcmdldE11dGV4KTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0
LT5yZW1vdGVDb250cm9sQWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVj
dG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigw
KSk7CisgICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZh
aWxlZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIG1f
dGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlSW5zcGVj
dGlvblRhcmdldD4obV90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjYXN0ZWRUYXJn
ZXQgPSBkb3duY2FzdDxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwu
aAppbmRleCA0Y2I1M2JmNTdmODI5ZTQ0ZGE5ZmJkNDlkNmZkOWM4Yzk4Yzk0NGQ0Li44ZjhiZmJh
NDI1Njg2NzU5ZDdlZmY0MDdkODIzNTU5Yjg4YTk0MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTEsMjcz
ICsxLDExMDkgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE9wdGlvbmFsX2gKLSNkZWZpbmUgT3B0
aW9uYWxfaAotCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLS8vIFdURjo6T3B0aW9uYWwg
aXMgYSBjbGFzcyBiYXNlZCBvbiBzdGQ6Om9wdGlvbmFsLCBkZXNjcmliZWQgaGVyZToKLS8vIGh0
dHA6Ly93d3cub3Blbi1zdGQub3JnL0pUQzEvU0MyMi9XRzIxL2RvY3MvcGFwZXJzLzIwMTMvbjM1
MjcuaHRtbAotLy8gSWYgdGhpcyBlbmRzIHVwIGluIGEgQysrIHN0YW5kYXJkLCB3ZSBzaG91bGQg
cmVwbGFjZSBvdXIgaW1wbGVtZW50YXRpb24gd2l0aCBpdC4KKy8vIENvcHlyaWdodCAoQykgMjAx
MSAtIDIwMTIgQW5kcnplaiBLcnplbWllbnNraS4KKy8vCisvLyBVc2UsIG1vZGlmaWNhdGlvbiwg
YW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQorLy8gTGlj
ZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0
IG9yIGNvcHkgYXQKKy8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKKy8v
CisvLyBUaGUgaWRlYSBhbmQgaW50ZXJmYWNlIGlzIGJhc2VkIG9uIEJvb3N0Lk9wdGlvbmFsIGxp
YnJhcnkKKy8vIGF1dGhvcmVkIGJ5IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsCisv
LworLy8gQm9vc3QgU29mdHdhcmUgTGljZW5zZSAtIFZlcnNpb24gMS4wIC0gQXVndXN0IDE3dGgs
IDIwMDMKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvciBvcmdhbml6YXRpb24KKy8vIG9idGFpbmluZyBhIGNvcHkgb2Yg
dGhlIHNvZnR3YXJlIGFuZCBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBjb3ZlcmVkIGJ5Cisv
LyB0aGlzIGxpY2Vuc2UgKHRoZSAiU29mdHdhcmUiKSB0byB1c2UsIHJlcHJvZHVjZSwgZGlzcGxh
eSwgZGlzdHJpYnV0ZSwKKy8vIGV4ZWN1dGUsIGFuZCB0cmFuc21pdCB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlCisvLyBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCB0aGlyZC1wYXJ0aWVzIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0
bworLy8gZG8gc28sIGFsbCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmc6CisvLworLy8gVGhlIGNv
cHlyaWdodCBub3RpY2VzIGluIHRoZSBTb2Z0d2FyZSBhbmQgdGhpcyBlbnRpcmUgc3RhdGVtZW50
LCBpbmNsdWRpbmcKKy8vIHRoZSBhYm92ZSBsaWNlbnNlIGdyYW50LCB0aGlzIHJlc3RyaWN0aW9u
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIsCisvLyBtdXN0IGJlIGluY2x1ZGVkIGluIGFs
bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBpbiB3aG9sZSBvciBpbiBwYXJ0LCBhbmQKKy8vIGFs
bCBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTb2Z0d2FyZSwgdW5sZXNzIHN1Y2ggY29waWVzIG9y
IGRlcml2YXRpdmUKKy8vIHdvcmtzIGFyZSBzb2xlbHkgaW4gdGhlIGZvcm0gb2YgbWFjaGluZS1l
eGVjdXRhYmxlIG9iamVjdCBjb2RlIGdlbmVyYXRlZCBieQorLy8gYSBzb3VyY2UgbGFuZ3VhZ2Ug
cHJvY2Vzc29yLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
Ky8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBUSVRMRSBBTkQgTk9OLUlORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQKKy8vIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBB
TllPTkUgRElTVFJJQlVUSU5HIFRIRSBTT0ZUV0FSRSBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgREFN
QUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLAorLy8gQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisvLyBERUFMSU5HUyBJTiBUSEUgU09GVFdB
UkUuCisKKy8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6ZW1pMS9PcHRpb25h
bCAoNzI3YzcyOWRkMWQ5ZjA2ZjIyNTg2ODI4MGU1MDE1NDU5NGQ3ZTU5ZCkKKworLy8gTW9kaWZp
ZWQgdG8gbWFrZSBpdCBjb21waWxlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKworI3ByYWdt
YSBvbmNlCisKKyMgaW5jbHVkZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8dHlwZV90cmFpdHM+Cisj
IGluY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjIGluY2x1ZGUgPGNhc3NlcnQ+CisjIGluY2x1
ZGUgPGZ1bmN0aW9uYWw+CisjIGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0
PgorIyBpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorIyBpbmNsdWRlIDx3dGYvQ29tcGlsZXIu
aD4KKyMgaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjIGRlZmluZSBUUjJfT1BUSU9O
QUxfUkVRVUlSRVMoLi4uKSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxfX1ZBX0FSR1NfXzo6dmFs
dWUsIGJvb2w+Ojp0eXBlID0gZmFsc2UKKworIyBpZiBkZWZpbmVkIF9fR05VQ19fIC8vIE5PVEU6
IEdOVUMgaXMgYWxzbyBkZWZpbmVkIGZvciBDbGFuZworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAm
JiAoX19HTlVDX01JTk9SX18gPj0gOCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRf
OF9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQorIyAgICAgZGVmaW5lIFRS
Ml9PUFRJT05BTF9HQ0NfNF84X0FORF9ISUdIRVJfX18KKyMgICBlbmRpZgorIworIyAgIGlmIChf
X0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNykKKyMgICAgIGRlZmluZSBUUjJf
T1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQor
IyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF83X0FORF9ISUdIRVJfX18KKyMgICBlbmRp
ZgorIworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPT0gOCkgJiYg
KF9fR05VQ19QQVRDSExFVkVMX18gPj0gMSkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0ND
XzRfOF8xX0FORF9ISUdIRVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVD
X01JTk9SX18gPj0gOSkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9I
SUdIRVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA+IDQpCisjICAgICBkZWZpbmUgVFIyX09QVElP
TkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMgZW5kaWYKKyMKKyMgaWYg
ZGVmaW5lZCBfX2NsYW5nX21ham9yX18KKyMgICBpZiAoX19jbGFuZ19tYWpvcl9fID09IDMgJiYg
X19jbGFuZ19taW5vcl9fID49IDUpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0NMQU5HXzNf
NV9BTkRfSElHSFRFUl8KKyMgICBlbGlmIChfX2NsYW5nX21ham9yX18gPiAzKQorIyAgICAgZGVm
aW5lIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgZW5kaWYKKyMgICBp
ZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgICBkZWZp
bmUgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisjICAgZWxpZiAoX19jbGFu
Z19tYWpvcl9fID09IDMgJiYgX19jbGFuZ19taW5vcl9fID09IDQgJiYgX19jbGFuZ19wYXRjaGxl
dmVsX18gPj0gMikKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdfM180XzJfQU5EX0hJ
R0hFUl8KKyMgICBlbmRpZgorIyBlbmRpZgorIworIyBpZiBkZWZpbmVkIF9NU0NfVkVSCisjICAg
aWYgKF9NU0NfVkVSID49IDE5MDApCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX01TVkNfMjAx
NV9BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMgZW5kaWYKKworIyBpZiBkZWZpbmVkIF9fY2xh
bmdfXworIyAgIGlmIChfX2NsYW5nX21ham9yX18gPiAyKSB8fCAoX19jbGFuZ19tYWpvcl9fID09
IDIpICYmIChfX2NsYW5nX21pbm9yX18gPj0gOSkKKyMgICAgIGRlZmluZSBPUFRJT05BTF9IQVNf
VEhJU19SVkFMVUVfUkVGUyAxCisjICAgZWxzZQorIyAgICAgZGVmaW5lIE9QVElPTkFMX0hBU19U
SElTX1JWQUxVRV9SRUZTIDAKKyMgICBlbmRpZgorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFM
X0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JW
QUxVRV9SRUZTIDEKKyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9NU1ZDXzIwMTVfQU5EX0hJ
R0hFUl9fXworIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAxCisjIGVs
c2UKKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgMAorIyBlbmRpZgor
CisKKyMgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9ISUdIRVJfX18KKyMg
ICBkZWZpbmUgT1BUSU9OQUxfSEFTX0NPTlNURVhQUl9JTklUX0xJU1QgMQorIyAgIGRlZmluZSBP
UFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGNvbnN0ZXhwcgorIyBlbHNlCisjICAgZGVmaW5l
IE9QVElPTkFMX0hBU19DT05TVEVYUFJfSU5JVF9MSVNUIDAKKyMgICBkZWZpbmUgT1BUSU9OQUxf
Q09OU1RFWFBSX0lOSVRfTElTVAorIyBlbmRpZgorCisjIGlmIGRlZmluZWQgVFIyX09QVElPTkFM
X0NMQU5HXzNfNV9BTkRfSElHSFRFUl8gJiYgKGRlZmluZWQgX19jcGx1c3BsdXMpICYmIChfX2Nw
bHVzcGx1cyAhPSAyMDExMDNMKQorIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfTU9WRV9BQ0NFU1NP
UlMgMQorIyBlbHNlCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyAwCisj
IGVuZGlmCisKKyMgLy8gSW4gQysrMTEgY29uc3RleHByIGltcGxpZXMgY29uc3QsIHNvIHdlIG5l
ZWQgdG8gbWFrZSBub24tY29uc3QgbWVtYmVycyBhbHNvIG5vbi1jb25zdGV4cHIKKyMgaWYgKGRl
ZmluZWQgX19jcGx1c3BsdXMpICYmIChfX2NwbHVzcGx1cyA9PSAyMDExMDNMKQorIyAgIGRlZmlu
ZSBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUgorIyBlbHNlCisjICAgZGVmaW5lIE9QVElPTkFM
X01VVEFCTEVfQ09OU1RFWFBSIGNvbnN0ZXhwcgorIyBlbmRpZgorCisjaWYgQ09NUElMRVJfU1VQ
UE9SVFMoRVhDRVBUSU9OUykKKyNkZWZpbmUgX19USFJPV19FWENFUFRJT04oX19leGNlcHRpb24p
IHRocm93IF9fZXhjZXB0aW9uOworI2RlZmluZSBfX05PRVhDRVBUIG5vZXhjZXB0CisjZGVmaW5l
IF9fTk9FWENFUFRfKF9fZXhjZXB0aW9uKSBub2V4Y2VwdChfX2V4Y2VwdGlvbikKKyNlbHNlCisj
ZGVmaW5lIF9fVEhST1dfRVhDRVBUSU9OKF9fZXhjZXB0aW9uKSBkbyB7ICh2b2lkKV9fZXhjZXB0
aW9uOyBDUkFTSCgpOyB9IHdoaWxlICgwKTsKKyNkZWZpbmUgX19OT0VYQ0VQVAorI2RlZmluZSBf
X05PRVhDRVBUXyguLi4pCisjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXN0cnVjdCBJblBs
YWNlVGFnIHsgfTsKLWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9OworLy8gQWxsIG91
ciB0YXJnZXQgY29tcGlsZXJzIHN1cHBvcnQgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZS4KKyNp
ZiAwCisvLyBCRUdJTiB3b3JrYXJvdW5kIGZvciBtaXNzaW5nIGlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGUKKyMgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfR0NDXzRfOF9BTkRfSElHSEVSX19fCisg
ICAgLy8gbGVhdmUgaXQ6IGl0IGlzIGFscmVhZHkgdGhlcmUKKyMgZWxpZiBkZWZpbmVkIFRSMl9P
UFRJT05BTF9DTEFOR18zXzRfMl9BTkRfSElHSEVSXworICAgIC8vIGxlYXZlIGl0OiBpdCBpcyBh
bHJlYWR5IHRoZXJlCisjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfTVNWQ18yMDE1X0FORF9I
SUdIRVJfX18KKyAgICAvLyBsZWF2ZSBpdDogaXQgaXMgYWxyZWFkeSB0aGVyZQorIyBlbGlmIGRl
ZmluZWQgVFIyX09QVElPTkFMX0RJU0FCTEVfRU1VTEFUSU9OX09GX1RZUEVfVFJBSVRTCisgICAg
Ly8gbGVhdmUgaXQ6IHRoZSB1c2VyIGRvZXNuJ3Qgd2FudCBpdAorIyBlbHNlCisJdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisJdXNpbmcgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZSA9IHN0ZDo6aGFz
X3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjsKKyMgZW5kaWYKKy8vIEVORCB3b3JrYXJvdW5kIGZvciBt
aXNzaW5nIGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGUKKyNlbmRpZgorCisjIGlmIChkZWZpbmVk
IFRSMl9PUFRJT05BTF9HQ0NfNF83X0FORF9ISUdIRVJfX18pCisgICAgLy8gbGVhdmUgaXQ7IG91
ciBtZXRhZnVuY3Rpb25zIGFyZSBhbHJlYWR5IGRlZmluZWQuCisjIGVsaWYgZGVmaW5lZCBUUjJf
T1BUSU9OQUxfQ0xBTkdfM180XzJfQU5EX0hJR0hFUl8KKyAgICAvLyBsZWF2ZSBpdDsgb3VyIG1l
dGFmdW5jdGlvbnMgYXJlIGFscmVhZHkgZGVmaW5lZC4KKyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJ
T05BTF9NU1ZDXzIwMTVfQU5EX0hJR0hFUl9fXworICAgIC8vIGxlYXZlIGl0OiBpdCBpcyBhbHJl
YWR5IHRoZXJlCisjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfRElTQUJMRV9FTVVMQVRJT05f
T0ZfVFlQRV9UUkFJVFMKKyAgICAvLyBsZWF2ZSBpdDogdGhlIHVzZXIgZG9lc24ndCB3YW50IGl0
CisjIGVsc2UKKworCisvLyB3b3JrYXJvdW5kIGZvciBtaXNzaW5nIHRyYWl0cyBpbiBHQ0MgYW5k
IENMQU5HCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBpc19ub3Rocm93X21vdmVfY29uc3Ry
dWN0aWJsZQoreworICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBzdGQ6OmlzX25vdGhy
b3dfY29uc3RydWN0aWJsZTxULCBUJiY+Ojp2YWx1ZTsKK307CisKKwordGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIFU+CitzdHJ1Y3QgaXNfYXNzaWduYWJsZQoreworICB0ZW1wbGF0ZSA8Y2xhc3Mg
WCwgY2xhc3MgWT4KKyAgY29uc3RleHByIHN0YXRpYyBib29sIGhhc19hc3NpZ24oLi4uKSB7IHJl
dHVybiBmYWxzZTsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZLCBzaXplX3QgUyA9
IHNpemVvZigoc3RkOjpkZWNsdmFsPFg+KCkgPSBzdGQ6OmRlY2x2YWw8WT4oKSwgdHJ1ZSkpID4K
KyAgLy8gdGhlIGNvbW1hIG9wZXJhdG9yIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGNhc2VzIHdoZXJl
IG9wZXJhdG9yPSByZXR1cm5zIHZvaWQKKyAgY29uc3RleHByIHN0YXRpYyBib29sIGhhc19hc3Np
Z24oYm9vbCkgeyByZXR1cm4gdHJ1ZTsgfQorCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1
ZSA9IGhhc19hc3NpZ248VCwgVT4odHJ1ZSk7Cit9OworCisKK3RlbXBsYXRlIDxjbGFzcyBUPgor
c3RydWN0IGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlCit7CisgIHRlbXBsYXRlIDxjbGFzcyBY
LCBib29sIGhhc19hbnlfbW92ZV9hc3NpZ24+CisgIHN0cnVjdCBoYXNfbm90aHJvd19tb3ZlX2Fz
c2lnbiB7CisgICAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gZmFsc2U7CisgIH07CisK
KyAgdGVtcGxhdGUgPGNsYXNzIFg+CisgIHN0cnVjdCBoYXNfbm90aHJvd19tb3ZlX2Fzc2lnbjxY
LCB0cnVlPiB7CisgICAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gX19OT0VYQ0VQVF8o
IHN0ZDo6ZGVjbHZhbDxYJj4oKSA9IHN0ZDo6ZGVjbHZhbDxYJiY+KCkgKTsKKyAgfTsKKworICBj
b25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBoYXNfbm90aHJvd19tb3ZlX2Fzc2lnbjxULCBp
c19hc3NpZ25hYmxlPFQmLCBUJiY+Ojp2YWx1ZT46OnZhbHVlOworfTsKKy8vIGVuZCB3b3JrYXJv
dW5kCisKKworIyBlbmRpZgorCisKKworLy8gMjAuNS40LCBvcHRpb25hbCBmb3Igb2JqZWN0IHR5
cGVzCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgT3B0aW9uYWw7CisKKy8vIDIwLjUuNSwgb3B0
aW9uYWwgZm9yIGx2YWx1ZSByZWZlcmVuY2UgdHlwZXMKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFz
cyBPcHRpb25hbDxUJj47CisKKworLy8gd29ya2Fyb3VuZDogc3RkIHV0aWxpdHkgZnVuY3Rpb25z
IGFyZW4ndCBjb25zdGV4cHIgeWV0Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGNvbnN0ZXhw
ciBUJiYgY29uc3RleHByX2ZvcndhcmQodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+
Ojp0eXBlJiB0KSBfX05PRVhDRVBUCit7CisgIHJldHVybiBzdGF0aWNfY2FzdDxUJiY+KHQpOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGNvbnN0ZXhwciBUJiYgY29uc3RleHByX2Zv
cndhcmQodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgdCkgX19OT0VY
Q0VQVAoreworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6
dmFsdWUsICIhISIpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUJiY+KHQpOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZl
cmVuY2U8VD46OnR5cGUmJiBjb25zdGV4cHJfbW92ZShUJiYgdCkgX19OT0VYQ0VQVAoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5
cGUmJj4odCk7Cit9CisKKworI2lmIGRlZmluZWQgTkRFQlVHCisjIGRlZmluZSBUUjJfT1BUSU9O
QUxfQVNTRVJURURfRVhQUkVTU0lPTihDSEVDSywgRVhQUikgKEVYUFIpCisjZWxzZQorIyBkZWZp
bmUgVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oQ0hFQ0ssIEVYUFIpICgoQ0hFQ0sp
ID8gKEVYUFIpIDogKFtde2Fzc2VydCghI0NIRUNLKTt9KCksIChFWFBSKSkpCisjZW5kaWYKKwor
CituYW1lc3BhY2UgZGV0YWlsXworeworCisvLyBzdGF0aWNfYWRkcmVzc29mOiBhIGNvbnN0ZXhw
ciB2ZXJzaW9uIG9mIGFkZHJlc3NvZgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaGFz
X292ZXJsb2FkZWRfYWRkcmVzc29mCit7CisgIHRlbXBsYXRlIDxjbGFzcyBYPgorICBjb25zdGV4
cHIgc3RhdGljIGJvb2wgaGFzX292ZXJsb2FkKC4uLikgeyByZXR1cm4gZmFsc2U7IH0KKworICB0
ZW1wbGF0ZSA8Y2xhc3MgWCwgc2l6ZV90IFMgPSBzaXplb2Yoc3RkOjpkZWNsdmFsPFgmPigpLm9w
ZXJhdG9yJigpKSA+CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfb3ZlcmxvYWQoYm9vbCkg
eyByZXR1cm4gdHJ1ZTsgfQorCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IGhhc19v
dmVybG9hZDxUPih0cnVlKTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUUjJfT1BUSU9O
QUxfUkVRVUlSRVMoIWhhc19vdmVybG9hZGVkX2FkZHJlc3NvZjxUPik+Citjb25zdGV4cHIgVCog
c3RhdGljX2FkZHJlc3NvZihUJiByZWYpCit7CisgIHJldHVybiAmcmVmOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgVFIyX09QVElPTkFMX1JFUVVJUkVTKGhhc19vdmVybG9hZGVkX2FkZHJl
c3NvZjxUPik+CitUKiBzdGF0aWNfYWRkcmVzc29mKFQmIHJlZikKK3sKKyAgcmV0dXJuIHN0ZDo6
YWRkcmVzc29mKHJlZik7Cit9CisKKworLy8gdGhlIGNhbGwgdG8gY29udmVydDxBPihiKSBoYXMg
cmV0dXJuIHR5cGUgQSBhbmQgY29udmVydHMgYiB0byB0eXBlIEEgaWZmIGIgZGVjbHR5cGUoYikg
aXMgaW1wbGljaXRseSBjb252ZXJ0aWJsZSB0byBBCit0ZW1wbGF0ZSA8Y2xhc3MgVT4KK2NvbnN0
ZXhwciBVIGNvbnZlcnQoVSB2KSB7IHJldHVybiB2OyB9CisKK30gLy8gbmFtZXNwYWNlIGRldGFp
bAorCisKK2NvbnN0ZXhwciBzdHJ1Y3QgdHJpdmlhbF9pbml0X3R7fSB0cml2aWFsX2luaXR7fTsK
IAotc3RydWN0IE51bGxvcHRUYWcgeyBleHBsaWNpdCBjb25zdGV4cHIgTnVsbG9wdFRhZyhpbnQp
IHsgfSB9OwotY29uc3RleHByIE51bGxvcHRUYWcgTnVsbG9wdCB7IDAgfTsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWNsYXNzIE9wdGlvbmFsIHsKKy8vIDIwLjUuNiwgSW4tcGxhY2UgY29uc3Ry
dWN0aW9uCitjb25zdGV4cHIgc3RydWN0IEluUGxhY2VUYWd7fSBJblBsYWNle307CisKKworLy8g
MjAuNS43LCBEaXNlbmdhZ2VkIHN0YXRlIGluZGljYXRvcgorc3RydWN0IG51bGxvcHRfdAorewor
ICBzdHJ1Y3QgaW5pdHt9OworICBjb25zdGV4cHIgZXhwbGljaXQgbnVsbG9wdF90KGluaXQpe30K
K307Citjb25zdGV4cHIgbnVsbG9wdF90IE51bGxvcHR7bnVsbG9wdF90Ojppbml0KCl9OworCisK
Ky8vIDIwLjUuOCwgY2xhc3MgYmFkX29wdGlvbmFsX2FjY2VzcworY2xhc3MgYmFkX29wdGlvbmFs
X2FjY2VzcyA6IHB1YmxpYyBzdGQ6OmxvZ2ljX2Vycm9yIHsKIHB1YmxpYzoKLSAgICBPcHRpb25h
bCgpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAgIH0KKyAgZXhwbGlj
aXQgYmFkX29wdGlvbmFsX2FjY2Vzcyhjb25zdCBzdGQ6OnN0cmluZyYgd2hhdF9hcmcpIDogc3Rk
Ojpsb2dpY19lcnJvcnt3aGF0X2FyZ30ge30KKyAgZXhwbGljaXQgYmFkX29wdGlvbmFsX2FjY2Vz
cyhjb25zdCBjaGFyKiB3aGF0X2FyZykgOiBzdGQ6OmxvZ2ljX2Vycm9ye3doYXRfYXJnfSB7fQor
fTsKIAotICAgIE9wdGlvbmFsKE51bGxvcHRUYWcpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQoZmFs
c2UpCi0gICAgewotICAgIH0KIAotICAgIE9wdGlvbmFsKGNvbnN0IFQmIHZhbHVlKQotICAgICAg
ICA6IG1faXNFbmdhZ2VkKHRydWUpCi0gICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3Zh
bHVlKSBUKHZhbHVlKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VuaW9uIHN0b3JhZ2Vf
dAoreworICB1bnNpZ25lZCBjaGFyIGR1bW15XzsKKyAgVCB2YWx1ZV87CiAKLSAgICBPcHRpb25h
bChjb25zdCBPcHRpb25hbCYgb3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQob3RoZXIubV9p
c0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICBu
ZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKCpvdGhlci5hc1B0cigpKTsKLSAgICB9CisgIGNvbnN0
ZXhwciBzdG9yYWdlX3QoIHRyaXZpYWxfaW5pdF90ICkgX19OT0VYQ0VQVCA6IGR1bW15XygpIHt9
OwogCi0gICAgT3B0aW9uYWwoT3B0aW9uYWwmJiBvdGhlcikKLSAgICAgICAgOiBtX2lzRW5nYWdl
ZChvdGhlci5tX2lzRW5nYWdlZCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzRW5nYWdlZCkKLSAg
ICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSgqb3RoZXIuYXNQdHIo
KSkpOwotICAgIH0KKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIGNvbnN0ZXhwciBzdG9y
YWdlX3QoIEFyZ3MmJi4uLiBhcmdzICkgOiB2YWx1ZV8oY29uc3RleHByX2ZvcndhcmQ8QXJncz4o
YXJncykuLi4pIHt9CiAKLSAgICBPcHRpb25hbChUJiYgdmFsdWUpCi0gICAgICAgIDogbV9pc0Vu
Z2FnZWQodHJ1ZSkKLSAgICB7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RG
TW92ZSh2YWx1ZSkpOwotICAgIH0KKyAgfnN0b3JhZ2VfdCgpe30KK307CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIE9wdGlvbmFsKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBh
cmdzKQotICAgICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCi0gICAgewotICAgICAgICBuZXcgKE5v
dE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgfQog
Ci0gICAgfk9wdGlvbmFsKCkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICB9Cit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK3VuaW9uIGNvbnN0ZXhwcl9zdG9yYWdlX3QKK3sKKyAgICB1bnNpZ25l
ZCBjaGFyIGR1bW15XzsKKyAgICBUIHZhbHVlXzsKIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0o
TnVsbG9wdFRhZykKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2VfdCggdHJpdmlhbF9p
bml0X3QgKSBfX05PRVhDRVBUIDogZHVtbXlfKCkge307CiAKLSAgICBPcHRpb25hbCYgb3BlcmF0
b3I9KGNvbnN0IE9wdGlvbmFsJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZv
dGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgICBkZXN0cm95KCk7Ci0g
ICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0gICAgICAgICAgICBtX2lzRW5nYWdlZCA9
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2VfdCgg
QXJncyYmLi4uIGFyZ3MgKSA6IHZhbHVlXyhjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4u
Likge30KIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oT3B0aW9uYWwmJiBvdGhlcikKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsK
LQotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewot
ICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0
cigpKSk7Ci0gICAgICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICB+Y29uc3RleHByX3N0b3JhZ2VfdCgpID0gZGVm
YXVsdDsKK307CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBjbGFzcyA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8
VT46OnR5cGUsIFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShVJiYg
dSkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92
YWx1ZSkgVChzdGQ6OmZvcndhcmQ8VT4odSkpOwotICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gbV9pc0VuZ2FnZWQ7IH0KK3RlbXBsYXRlIDxjbGFzcyBUPgor
c3RydWN0IG9wdGlvbmFsX2Jhc2UKK3sKKyAgICBib29sIGluaXRfOworICAgIHN0b3JhZ2VfdDxU
PiBzdG9yYWdlXzsKIAotICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRyKCk7Ci0gICAg
fQorICAgIGNvbnN0ZXhwciBvcHRpb25hbF9iYXNlKCkgX19OT0VYQ0VQVCA6IGluaXRfKGZhbHNl
KSwgc3RvcmFnZV8odHJpdmlhbF9pbml0KSB7fTsKIAotICAgIFQqIG9wZXJhdG9yLT4oKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRyKCk7
Ci0gICAgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcHRpb25hbF9iYXNlKGNvbnN0IFQmIHYp
IDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKHYpIHt9CiAKLSAgICBjb25zdCBUJiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0gICAgVCYgb3BlcmF0b3IqKCkgeyByZXR1cm4g
dmFsdWUoKTsgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcHRpb25hbF9iYXNlKFQmJiB2KSA6
IGluaXRfKHRydWUpLCBzdG9yYWdlXyhjb25zdGV4cHJfbW92ZSh2KSkge30KIAotICAgIFQmIHZh
bHVlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVy
biAqYXNQdHIoKTsKLSAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxpY2l0
IG9wdGlvbmFsX2Jhc2UoSW5QbGFjZVRhZywgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogaW5p
dF8odHJ1ZSksIHN0b3JhZ2VfKGNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQog
Ci0gICAgY29uc3QgVCYgdmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNF
bmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuICphc1B0cigpOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgVFIyX09QVElPTkFMX1JFUVVJUkVTKHN0ZDo6aXNfY29u
c3RydWN0aWJsZTxULCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4+KT4KKyAgICBleHBsaWNpdCBv
cHRpb25hbF9iYXNlKEluUGxhY2VUYWcsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJn
cyYmLi4uIGFyZ3MpCisgICAgICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGlsLCBzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pIHt9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAg
IFQgdmFsdWVPcihVJiYgdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2Fn
ZWQpCi0gICAgICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAgfm9wdGlvbmFsX2Jhc2UoKSB7
IGlmIChpbml0Xykgc3RvcmFnZV8udmFsdWVfLlQ6On5UKCk7IH0KK307CiAKLSAgICAgICAgcmV0
dXJuIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7Ci0gICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4KLSAgICBUIHZhbHVlT3JDb21wdXRlKFUgY2FsbGJhY2spIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gKmFzUHRyKCk7Cit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZQoreworICAgIGJv
b2wgaW5pdF87CisgICAgY29uc3RleHByX3N0b3JhZ2VfdDxUPiBzdG9yYWdlXzsKKworICAgIGNv
bnN0ZXhwciBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZSgpIF9fTk9FWENFUFQgOiBpbml0XyhmYWxz
ZSksIHN0b3JhZ2VfKHRyaXZpYWxfaW5pdCkge307CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIg
Y29uc3RleHByX29wdGlvbmFsX2Jhc2UoY29uc3QgVCYgdikgOiBpbml0Xyh0cnVlKSwgc3RvcmFn
ZV8odikge30KKworICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBjb25zdGV4cHJfb3B0aW9uYWxfYmFz
ZShUJiYgdikgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oY29uc3RleHByX21vdmUodikpIHt9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4gZXhwbGljaXQgY29uc3RleHByIGNvbnN0ZXhw
cl9vcHRpb25hbF9iYXNlKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBpbml0
Xyh0cnVlKSwgc3RvcmFnZV8oY29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgVFIyX09QVElPTkFMX1JFUVVJ
UkVTKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4+KT4K
KyAgICBPUFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGV4cGxpY2l0IGNvbnN0ZXhwcl9vcHRp
b25hbF9iYXNlKEluUGxhY2VUYWcsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYm
Li4uIGFyZ3MpCisgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhpbCwgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgICAgfmNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKCkgPSBk
ZWZhdWx0OworfTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBPcHRpb25hbEJhc2UgPSB0
eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAorICAgIHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxUPjo6dmFsdWUsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBwb3NzaWJsZQor
ICAgIGNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+
Ojp0eXBlPiwgLy8gdXNlIGJhc2Ugd2l0aCB0cml2aWFsIGRlc3RydWN0b3IKKyAgICBvcHRpb25h
bF9iYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlPgorPjo6dHlwZTsKKwor
CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xhc3MgT3B0aW9uYWwgOiBwcml2YXRlIE9wdGlvbmFs
QmFzZTxUPgoreworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6
ZGVjYXk8VD46OnR5cGUsIG51bGxvcHRfdD46OnZhbHVlLCAiYmFkIFQiICk7CisgIHN0YXRpY19h
c3NlcnQoICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZSwgSW5QbGFj
ZVRhZz46OnZhbHVlLCAiYmFkIFQiICk7CisKIAotICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsK
KyAgY29uc3RleHByIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCBfX05PRVhDRVBUIHsgcmV0dXJu
IE9wdGlvbmFsQmFzZTxUPjo6aW5pdF87IH0KKyAgdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8
VD46OnR5cGUqIGRhdGFwdHIoKSB7ICByZXR1cm4gc3RkOjphZGRyZXNzb2YoT3B0aW9uYWxCYXNl
PFQ+OjpzdG9yYWdlXy52YWx1ZV8pOyB9CisgIGNvbnN0ZXhwciBjb25zdCBUKiBkYXRhcHRyKCkg
Y29uc3QgeyByZXR1cm4gZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZihPcHRpb25hbEJhc2U8VD46
OnN0b3JhZ2VfLnZhbHVlXyk7IH0KKworIyBpZiBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVG
UyA9PSAxCisgIGNvbnN0ZXhwciBjb25zdCBUJiBjb250YWluZWRfdmFsKCkgY29uc3QmIHsgcmV0
dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisjICAgaWYgT1BUSU9OQUxf
SEFTX01PVkVfQUNDRVNTT1JTID09IDEKKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCYm
IGNvbnRhaW5lZF92YWwoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoT3B0aW9uYWxCYXNlPFQ+Ojpz
dG9yYWdlXy52YWx1ZV8pOyB9CisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQmIGNvbnRh
aW5lZF92YWwoKSAmIHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9
CisjICAgZWxzZQorICBUJiBjb250YWluZWRfdmFsKCkgJiB7IHJldHVybiBPcHRpb25hbEJhc2U8
VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorICBUJiYgY29udGFpbmVkX3ZhbCgpICYmIHsgcmV0dXJu
IHN0ZDo6bW92ZShPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXyk7IH0KKyMgICBlbmRp
ZgorIyBlbHNlCisgIGNvbnN0ZXhwciBjb25zdCBUJiBjb250YWluZWRfdmFsKCkgY29uc3QgeyBy
ZXR1cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyAgVCYgY29udGFpbmVk
X3ZhbCgpIHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisjIGVu
ZGlmCisKKyAgdm9pZCBjbGVhcigpIF9fTk9FWENFUFQgeworICAgIGlmIChpbml0aWFsaXplZCgp
KSBkYXRhcHRyKCktPlQ6On5UKCk7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IGZhbHNl
OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgaW5pdGlhbGl6ZShB
cmdzJiYuLi4gYXJncykgX19OT0VYQ0VQVF8oX19OT0VYQ0VQVF8oVChzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKSkKKyAgeworICAgIEFTU0VSVCghT3B0aW9uYWxCYXNlPFQ+Ojppbml0Xyk7
CisgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7Cisg
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4KKyAgdm9pZCBpbml0aWFs
aXplKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYmLi4uIGFyZ3MpIF9fTk9FWENF
UFRfKF9fTk9FWENFUFRfKFQoaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKQorICB7
CisgICAgQVNTRVJUKCFPcHRpb25hbEJhc2U8VD46OmluaXRfKTsKKyAgICA6Om5ldyAoc3RhdGlj
X2Nhc3Q8dm9pZCo+KGRhdGFwdHIoKSkpIFQoaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
Lik7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7CisgIH0KKworcHVibGljOgor
ICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKworICAvLyAyMC41LjUuMSwgY29uc3RydWN0b3JzCisg
IGNvbnN0ZXhwciBPcHRpb25hbCgpIF9fTk9FWENFUFQgOiBPcHRpb25hbEJhc2U8VD4oKSAge307
CisgIGNvbnN0ZXhwciBPcHRpb25hbChudWxsb3B0X3QpIF9fTk9FWENFUFQgOiBPcHRpb25hbEJh
c2U8VD4oKSB7fTsKKworICBPcHRpb25hbChjb25zdCBPcHRpb25hbCYgcmhzKQorICA6IE9wdGlv
bmFsQmFzZTxUPigpCisgIHsKKyAgICBpZiAocmhzLmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAg
OjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKCpyaHMpOworICAgICAgICBP
cHRpb25hbEJhc2U8VD46OmluaXRfID0gdHJ1ZTsKICAgICB9CisgIH0KIAotcHJpdmF0ZToKLSAg
ICBjb25zdCBUKiBhc1B0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VCo+KCZtX3ZhbHVlKTsgfQotICAgIFQqIGFzUHRyKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUKj4oJm1fdmFsdWUpOyB9Ci0gICAgdm9pZCBkZXN0cm95KCkKLSAgICB7Ci0gICAgICAgIGlm
IChtX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgYXNQdHIoKS0+flQoKTsKLSAgICAgICAgICAg
IG1faXNFbmdhZ2VkID0gZmFsc2U7Ci0gICAgICAgIH0KKyAgT3B0aW9uYWwoT3B0aW9uYWwmJiBy
aHMpIF9fTk9FWENFUFRfKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkK
KyAgOiBPcHRpb25hbEJhc2U8VD4oKQorICB7CisgICAgaWYgKHJocy5pbml0aWFsaXplZCgpKSB7
CisgICAgICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVChzdGQ6Om1v
dmUoKnJocykpOworICAgICAgICBPcHRpb25hbEJhc2U8VD46OmluaXRfID0gdHJ1ZTsKICAgICB9
CisgIH0KKworICBjb25zdGV4cHIgT3B0aW9uYWwoY29uc3QgVCYgdikgOiBPcHRpb25hbEJhc2U8
VD4odikge30KKworICBjb25zdGV4cHIgT3B0aW9uYWwoVCYmIHYpIDogT3B0aW9uYWxCYXNlPFQ+
KGNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBl
eHBsaWNpdCBjb25zdGV4cHIgT3B0aW9uYWwoSW5QbGFjZVRhZywgQXJncyYmLi4uIGFyZ3MpCisg
IDogT3B0aW9uYWxCYXNlPFQ+KEluUGxhY2VUYWd7fSwgY29uc3RleHByX2ZvcndhcmQ8QXJncz4o
YXJncykuLi4pIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9P
UFRJT05BTF9SRVFVSVJFUyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXpl
cl9saXN0PFU+Pik+CisgIE9QVElPTkFMX0NPTlNURVhQUl9JTklUX0xJU1QgZXhwbGljaXQgT3B0
aW9uYWwoSW5QbGFjZVRhZywgc3RkOjppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYuLi4g
YXJncykKKyAgOiBPcHRpb25hbEJhc2U8VD4oSW5QbGFjZVRhZ3t9LCBpbCwgY29uc3RleHByX2Zv
cndhcmQ8QXJncz4oYXJncykuLi4pIHt9CisKKyAgLy8gMjAuNS40LjIsIERlc3RydWN0b3IKKyAg
fk9wdGlvbmFsKCkgPSBkZWZhdWx0OworCisgIC8vIDIwLjUuNC4zLCBhc3NpZ25tZW50CisgIE9w
dGlvbmFsJiBvcGVyYXRvcj0obnVsbG9wdF90KSBfX05PRVhDRVBUCisgIHsKKyAgICBjbGVhcigp
OworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIE9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3Qg
T3B0aW9uYWwmIHJocykKKyAgeworICAgIGlmICAgICAgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAg
JiYgcmhzLmluaXRpYWxpemVkKCkgPT0gZmFsc2UpIGNsZWFyKCk7CisgICAgZWxzZSBpZiAoaW5p
dGlhbGl6ZWQoKSA9PSBmYWxzZSAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgaW5pdGlh
bGl6ZSgqcmhzKTsKKyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5p
bml0aWFsaXplZCgpID09IHRydWUpICBjb250YWluZWRfdmFsKCkgPSAqcmhzOworICAgIHJldHVy
biAqdGhpczsKKyAgfQorCisgIE9wdGlvbmFsJiBvcGVyYXRvcj0oT3B0aW9uYWwmJiByaHMpCisg
IF9fTk9FWENFUFRfKGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJiBpc19u
b3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUpCisgIHsKKyAgICBpZiAgICAgIChp
bml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IGZhbHNlKSBjbGVh
cigpOworICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxp
emVkKCkgPT0gdHJ1ZSkgIGluaXRpYWxpemUoc3RkOjptb3ZlKCpyaHMpKTsKKyAgICBlbHNlIGlm
IChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICBj
b250YWluZWRfdmFsKCkgPSBzdGQ6Om1vdmUoKnJocyk7CisgICAgcmV0dXJuICp0aGlzOworICB9
CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIGF1dG8gb3BlcmF0b3I9KFUmJiB2KQorICAtPiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZgorICA8CisgICAgc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0
ZDo6ZGVjYXk8VT46OnR5cGUsIFQ+Ojp2YWx1ZSwKKyAgICBPcHRpb25hbCYKKyAgPjo6dHlwZQor
ICB7CisgICAgaWYgKGluaXRpYWxpemVkKCkpIHsgY29udGFpbmVkX3ZhbCgpID0gc3RkOjpmb3J3
YXJkPFU+KHYpOyB9CisgICAgZWxzZSAgICAgICAgICAgICAgIHsgaW5pdGlhbGl6ZShzdGQ6OmZv
cndhcmQ8VT4odikpOyAgfQorICAgIHJldHVybiAqdGhpczsKKyAgfQorCisKKyAgdGVtcGxhdGUg
PGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgZW1wbGFjZShBcmdzJiYuLi4gYXJncykKKyAgeworICAg
IGNsZWFyKCk7CisgICAgaW5pdGlhbGl6ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgZW1wbGFj
ZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICB7CisgICAg
Y2xlYXIoKTsKKyAgICBpbml0aWFsaXplPFUsIEFyZ3MuLi4+KGlsLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICB9CisKKyAgLy8gMjAuNS40LjQsIFN3YXAKKyAgdm9pZCBzd2FwKE9w
dGlvbmFsPFQ+JiByaHMpIF9fTk9FWENFUFRfKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZSAmJiBfX05PRVhDRVBUXyhzd2FwKGRlY2x2YWw8VCY+KCksIGRlY2x2YWw8VCY+
KCkpKSkKKyAgeworICAgIGlmICAgICAgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmlu
aXRpYWxpemVkKCkgPT0gZmFsc2UpIHsgcmhzLmluaXRpYWxpemUoc3RkOjptb3ZlKCoqdGhpcykp
OyBjbGVhcigpOyB9CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSAmJiByaHMu
aW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgeyBpbml0aWFsaXplKHN0ZDo6bW92ZSgqcmhzKSk7IHJo
cy5jbGVhcigpOyB9CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMu
aW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgeyB1c2luZyBzdGQ6OnN3YXA7IHN3YXAoKip0aGlzLCAq
cmhzKTsgfQorICB9CisKKyAgLy8gMjAuNS40LjUsIE9ic2VydmVycworCisgIGV4cGxpY2l0IGNv
bnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29uc3QgX19OT0VYQ0VQVCB7IHJldHVybiBpbml0aWFs
aXplZCgpOyB9CisKKyAgY29uc3RleHByIFQgY29uc3QqIG9wZXJhdG9yIC0+KCkgY29uc3Qgewor
ICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihpbml0aWFsaXplZCgp
LCBkYXRhcHRyKCkpOworICB9CisKKyMgaWYgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTID09
IDEKKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUKiBvcGVyYXRvciAtPigpIHsKKyAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0
IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIENPTlNURVhQ
Ul9BU1NFUlQoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGRhdGFwdHIoKTsKKyAgfQorCisg
IGNvbnN0ZXhwciBUIGNvbnN0JiBvcGVyYXRvciAqKCkgY29uc3QmIHsKKyAgICByZXR1cm4gVFIy
X09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oaW5pdGlhbGl6ZWQoKSwgY29udGFpbmVkX3Zh
bCgpKTsKKyAgfQorCisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQmIG9wZXJhdG9yICoo
KSAmIHsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5j
dGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8v
IENPTlNURVhQUl9BU1NFUlQoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92
YWwoKTsKKyAgfQorCisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQmJiBvcGVyYXRvciAq
KCkgJiYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1
bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAg
Ly8gQ09OU1RFWFBSX0FTU0VSVChpbml0aWFsaXplZCgpKTsKKyAgICByZXR1cm4gY29uc3RleHBy
X21vdmUoY29udGFpbmVkX3ZhbCgpKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0JiB2YWx1
ZSgpIGNvbnN0JiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3Nl
cnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4K
KyAgICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBi
YWRfb3B0aW9uYWxfYWNjZXNzKCJiYWQgT3B0aW9uYWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwo
KSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQorCisgIE9QVElPTkFMX01VVEFC
TEVfQ09OU1RFWFBSIFQmIHZhbHVlKCkgJiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2Zm
ZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29u
dGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IGNvbnRhaW5lZF92
YWwoKSA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCJiYWQgT3B0aW9uYWwgYWNjZXNzIiks
IGNvbnRhaW5lZF92YWwoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQorCisg
IE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQmJiB2YWx1ZSgpICYmIHsKKyAgICAvLyBGSVhN
RTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1
c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIGlmICghaW5pdGlhbGl6ZWQo
KSkgX19USFJPV19FWENFUFRJT04oYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIE9wdGlvbmFsIGFj
Y2VzcyIpKTsKKyAgICByZXR1cm4gc3RkOjptb3ZlKGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKwor
IyBlbHNlCisKKyAgVCogb3BlcmF0b3IgLT4oKSB7CisgICAgYXNzZXJ0IChpbml0aWFsaXplZCgp
KTsKKyAgICByZXR1cm4gZGF0YXB0cigpOworICB9CisKKyAgY29uc3RleHByIFQgY29uc3QmIG9w
ZXJhdG9yICooKSBjb25zdCB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBS
RVNTSU9OKGluaXRpYWxpemVkKCksIGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKworICBUJiBvcGVy
YXRvciAqKCkgeworICAgIGFzc2VydCAoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGNvbnRh
aW5lZF92YWwoKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0JiB2YWx1ZSgpIGNvbnN0IHsK
KyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0
aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIHJldHVy
biBpbml0aWFsaXplZCgpID8gY29udGFpbmVkX3ZhbCgpIDogKHRocm93IGJhZF9vcHRpb25hbF9h
Y2Nlc3MoImJhZCBPcHRpb25hbCBhY2Nlc3MiKSwgY29udGFpbmVkX3ZhbCgpKTsKKyAgICByZXR1
cm4gY29udGFpbmVkX3ZhbCgpOworICB9CisKKyAgVCYgdmFsdWUoKSB7CisgICAgLy8gRklYTUU6
IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNl
ZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQo
KSA/IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCJiYWQgT3B0
aW9uYWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92
YWwoKTsKKyAgfQorCisjIGVuZGlmCisKKyMgaWYgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JF
RlMgPT0gMQorCisgIHRlbXBsYXRlIDxjbGFzcyBWPgorICBjb25zdGV4cHIgVCB2YWx1ZV9vcihW
JiYgdikgY29uc3QmCisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpj
b252ZXJ0PFQ+KGNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorCisjICAgaWYgT1BUSU9O
QUxfSEFTX01PVkVfQUNDRVNTT1JTID09IDEKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KKyAgT1BU
SU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCB2YWx1ZV9vcihWJiYgdikgJiYKKyAgeworICAgIHJl
dHVybiAqdGhpcyA/IGNvbnN0ZXhwcl9tb3ZlKGNvbnN0X2Nhc3Q8T3B0aW9uYWw8VD4mPigqdGhp
cykuY29udGFpbmVkX3ZhbCgpKSA6IGRldGFpbF86OmNvbnZlcnQ8VD4oY29uc3RleHByX2Zvcndh
cmQ8Vj4odikpOworICB9CisKKyMgICBlbHNlCisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+CisgIFQg
dmFsdWVfb3IoViYmIHYpICYmCisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyBjb25zdGV4cHJfbW92
ZShjb25zdF9jYXN0PE9wdGlvbmFsPFQ+Jj4oKnRoaXMpLmNvbnRhaW5lZF92YWwoKSkgOiBkZXRh
aWxfOjpjb252ZXJ0PFQ+KGNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorCisjICAgZW5k
aWYKKworIyBlbHNlCisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+CisgIGNvbnN0ZXhwciBUIHZhbHVl
X29yKFYmJiB2KSBjb25zdAorICB7CisgICAgcmV0dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWls
Xzo6Y29udmVydDxUPihjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyBlbmRpZgog
Ci0gICAgYm9vbCBtX2lzRW5nYWdlZDsKLSAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFn
ZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgbV92YWx1ZTsK
IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCisKK3RlbXBsYXRl
IDxjbGFzcyBUPgorY2xhc3MgT3B0aW9uYWw8VCY+CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGJvb2w+KGxocykgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4ocmhzKSAmJiAoIXN0YXRpY19jYXN0PGJv
b2w+KGxocykgfHwgbGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCkpOworICBzdGF0aWNfYXNzZXJ0
KCAhc3RkOjppc19zYW1lPFQsIG51bGxvcHRfdD46OnZhbHVlLCAiYmFkIFQiICk7CisgIHN0YXRp
Y19hc3NlcnQoICFzdGQ6OmlzX3NhbWU8VCwgSW5QbGFjZVRhZz46OnZhbHVlLCAiYmFkIFQiICk7
CisgIFQqIHJlZjsKKworcHVibGljOgorCisgIC8vIDIwLjUuNS4xLCBjb25zdHJ1Y3Rpb24vZGVz
dHJ1Y3Rpb24KKyAgY29uc3RleHByIE9wdGlvbmFsKCkgX19OT0VYQ0VQVCA6IHJlZihudWxscHRy
KSB7fQorCisgIGNvbnN0ZXhwciBPcHRpb25hbChudWxsb3B0X3QpIF9fTk9FWENFUFQgOiByZWYo
bnVsbHB0cikge30KKworICBjb25zdGV4cHIgT3B0aW9uYWwoVCYgdikgX19OT0VYQ0VQVCA6IHJl
ZihkZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKHYpKSB7fQorCisgIE9wdGlvbmFsKFQmJikgPSBk
ZWxldGU7CisKKyAgY29uc3RleHByIE9wdGlvbmFsKGNvbnN0IE9wdGlvbmFsJiByaHMpIF9fTk9F
WENFUFQgOiByZWYocmhzLnJlZikge30KKworICBleHBsaWNpdCBjb25zdGV4cHIgT3B0aW9uYWwo
SW5QbGFjZVRhZywgVCYgdikgX19OT0VYQ0VQVCA6IHJlZihkZXRhaWxfOjpzdGF0aWNfYWRkcmVz
c29mKHYpKSB7fQorCisgIGV4cGxpY2l0IE9wdGlvbmFsKEluUGxhY2VUYWcsIFQmJikgPSBkZWxl
dGU7CisKKyAgfk9wdGlvbmFsKCkgPSBkZWZhdWx0OworCisgIC8vIDIwLjUuNS4yLCBtdXRhdGlv
bgorICBPcHRpb25hbCYgb3BlcmF0b3I9KG51bGxvcHRfdCkgX19OT0VYQ0VQVCB7CisgICAgcmVm
ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLyBPcHRpb25hbCYgb3Bl
cmF0b3I9KGNvbnN0IE9wdGlvbmFsJiByaHMpIF9fTk9FWENFUFQgeworICAgIC8vIHJlZiA9IHJo
cy5yZWY7CisgICAgLy8gcmV0dXJuICp0aGlzOworICAvLyB9CisKKyAgLy8gT3B0aW9uYWwmIG9w
ZXJhdG9yPShPcHRpb25hbCYmIHJocykgX19OT0VYQ0VQVCB7CisgICAgLy8gcmVmID0gcmhzLnJl
ZjsKKyAgICAvLyByZXR1cm4gKnRoaXM7CisgIC8vIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VT4KKyAgYXV0byBvcGVyYXRvcj0oVSYmIHJocykgX19OT0VYQ0VQVAorICAtPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZgorICA8CisgICAgc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8
VT46OnR5cGUsIE9wdGlvbmFsPFQmPj46OnZhbHVlLAorICAgIE9wdGlvbmFsJgorICA+Ojp0eXBl
CisgIHsKKyAgICByZWYgPSByaHMucmVmOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVPgorICBhdXRvIG9wZXJhdG9yPShVJiYgcmhzKSBfX05PRVhDRVBU
CisgIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgIDwKKyAgICAhc3RkOjppc19zYW1lPHR5
cGVuYW1lIHN0ZDo6ZGVjYXk8VT46OnR5cGUsIE9wdGlvbmFsPFQmPj46OnZhbHVlLAorICAgIE9w
dGlvbmFsJgorICA+Ojp0eXBlCisgID0gZGVsZXRlOworCisgIHZvaWQgZW1wbGFjZShUJiB2KSBf
X05PRVhDRVBUIHsKKyAgICByZWYgPSBkZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKHYpOworICB9
CisKKyAgdm9pZCBlbXBsYWNlKFQmJikgPSBkZWxldGU7CisKKworICB2b2lkIHN3YXAoT3B0aW9u
YWw8VCY+JiByaHMpIF9fTk9FWENFUFQKKyAgeworICAgIHN0ZDo6c3dhcChyZWYsIHJocy5yZWYp
OworICB9CisKKyAgLy8gMjAuNS41LjMsIG9ic2VydmVycworICBjb25zdGV4cHIgVCogb3BlcmF0
b3ItPigpIGNvbnN0IHsKKyAgICByZXR1cm4gVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJ
T04ocmVmLCByZWYpOworICB9CisKKyAgY29uc3RleHByIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsK
KyAgICByZXR1cm4gVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04ocmVmLCAqcmVmKTsK
KyAgfQorCisgIGNvbnN0ZXhwciBUJiB2YWx1ZSgpIGNvbnN0IHsKKyAgICAvLyBGSVhNRTogV2Ug
bmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVu
ZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIHJldHVybiByZWYgPyAqcmVmIDogKHRo
cm93IGJhZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBPcHRpb25hbCBhY2Nlc3MiKSwgKnJlZik7Cisg
ICAgcmV0dXJuICpyZWY7CisgIH0KKworICBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IF9fTk9FWENFUFQgeworICAgIHJldHVybiByZWYgIT0gbnVsbHB0cjsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcyBWPgorICBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjpkZWNheTxU
Pjo6dHlwZSB2YWx1ZV9vcihWJiYgdikgY29uc3QKKyAgeworICAgIHJldHVybiAqdGhpcyA/ICoq
dGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4oY29u
c3RleHByX2ZvcndhcmQ8Vj4odikpOworICB9Cit9OworCisKK3RlbXBsYXRlIDxjbGFzcyBUPgor
Y2xhc3MgT3B0aW9uYWw8VCYmPgoreworICBzdGF0aWNfYXNzZXJ0KCBzaXplb2YoVCkgPT0gMCwg
Ik9wdGlvbmFsIHJ2YWx1ZSByZWZlcmVuY2VzIGRpc2FsbG93ZWQiICk7Cit9OworCisKKy8vIDIw
LjUuOCwgUmVsYXRpb25hbCBvcGVyYXRvcnMKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25hbDxUPiYg
eSkKK3sKKyAgcmV0dXJuIGJvb2woeCkgIT0gYm9vbCh5KSA/IGZhbHNlIDogYm9vbCh4KSA9PSBm
YWxzZSA/IHRydWUgOiAqeCA9PSAqeTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+
JiB5KQoreworICByZXR1cm4gISh4ID09IHkpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25h
bDxUPiYgeSkKK3sKKyAgcmV0dXJuICgheSkgPyBmYWxzZSA6ICgheCkgPyB0cnVlIDogKnggPCAq
eTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25z
dCBPcHRpb25hbDxUPiYgeCwgY29uc3QgT3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAoeSA8
IHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgT3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAh
KHkgPCB4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
Pj0oY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1
cm4gISh4IDwgeSk7Cit9CisKKworLy8gMjAuNS45LCBDb21wYXJpc29uIHdpdGggbnVsbG9wdAor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9u
YWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0obnVsbG9wdF90LCBj
b25zdCBPcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9u
YWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0obnVsbG9wdF90
LCBjb25zdCBPcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBP
cHRpb25hbDxUPiYsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gZmFsc2U7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwobnVsbG9wdF90
LCBjb25zdCBPcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qg
T3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0obnVsbG9w
dF90LCBjb25zdCBPcHRpb25hbDxUPiYpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIHRydWU7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgT3B0
aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihudWxsb3B0
X3QsIGNvbnN0IE9wdGlvbmFsPFQ+JikgX19OT0VYQ0VQVAoreworICByZXR1cm4gZmFsc2U7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IE9w
dGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBfX05PRVhDRVBUCit7CisgIHJldHVybiB0cnVlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShudWxsb3B0X3Qs
IGNvbnN0IE9wdGlvbmFsPFQ+JiB4KSBfX05PRVhDRVBUCit7CisgIHJldHVybiAoIXgpOworfQor
CisKKworLy8gMjAuNS4xMCwgQ29tcGFyaXNvbiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2
KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ID09IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3QgT3B0
aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA9PSAqeCA6IGZhbHNlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRp
b25hbDxUPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2IDog
dHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8g
diAhPSAqeCA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBi
b29sKHgpID8gKnggPCB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPihjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUPiYgeCkKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyB2ID4gKnggOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2
KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ID4gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlv
bmFsPFQ+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPCAqeCA6IGZhbHNlOworfQorCit0
ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBPcHRpb25h
bDxUPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+PSB2IDogZmFs
c2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYg
PD0gKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPD0oY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBi
b29sKHgpID8gKnggPD0gdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KQorewor
ICByZXR1cm4gYm9vbCh4KSA/IHYgPj0gKnggOiB0cnVlOworfQorCisKKy8vIENvbXBhcmlzb24g
b2YgT3B0aW9uYWw8VCY+IHdpdGggVAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1
cm4gYm9vbCh4KSA/ICp4ID09IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4
KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPT0gKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VCY+JiB4
LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ICE9IHYgOiB0cnVlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2
LCBjb25zdCBPcHRpb25hbDxUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6
IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPFQm
PiYgeCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKKyAgcmV0dXJu
IGJvb2woeCkgPyAqeCA8IHYgOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgb3B0LCBOdWxsb3B0VGFn
KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBUJiB2
LCBjb25zdCBPcHRpb25hbDxUJj4mIHgpCiB7Ci0gICAgcmV0dXJuICFvcHQ7CisgIHJldHVybiBi
b29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwgTnVsbG9wdFRhZykK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgT3B0aW9u
YWw8VCY+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihv
cHQpOworICByZXR1cm4gYm9vbCh4KSA/ICp4ID4gdiA6IGZhbHNlOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShOdWxsb3B0VGFnLCBjb25zdCBP
cHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPChjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUJj4mIHgpCiB7Ci0gICAgcmV0dXJuICFv
cHQ7CisgIHJldHVybiBib29sKHgpID8gdiA8ICp4IDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KE51bGxvcHRUYWcsIGNvbnN0IE9w
dGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBPcHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGJvb2w+KG9wdCk7CisgIHJldHVybiBib29sKHgpID8gKnggPj0gdiA6IGZhbHNl
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBPcHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQm
PiYgeCkKIHsKLSAgICByZXR1cm4gb3B0ICYmIG9wdC52YWx1ZSgpID09IHZhbHVlOworICByZXR1
cm4gYm9vbCh4KSA/IHYgPD0gKnggOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwgY29uc3Qg
VCYgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBPcHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJuICEob3B0ID09
IHZhbHVlKTsKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8PSB2IDogdHJ1ZTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdmFsdWUs
IGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUJj4mIHgpCiB7Ci0gICAg
cmV0dXJuIG9wdCAmJiBvcHQudmFsdWUoKSA9PSB2YWx1ZTsKKyAgcmV0dXJuIGJvb2woeCkgPyB2
ID49ICp4IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgVCYgdmFsdWUsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCisvLyBD
b21wYXJpc29uIG9mIE9wdGlvbmFsPFQgY29uc3QmPiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCwg
Y29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gISh2YWx1ZSA9PSBvcHQpOworICByZXR1cm4gYm9v
bCh4KSA/ICp4ID09IHYgOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLU9wdGlv
bmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+Ci1tYWtlT3B0aW9uYWwoVCYmIHZhbHVl
KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYg
diwgY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQogewotICAgIHJldHVybiBPcHRpb25hbDx0
eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKTsKKyAg
cmV0dXJuIGJvb2woeCkgPyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCwg
Y29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2IDogdHJ1ZTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgdiwg
Y29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgIT0g
KnggOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJu
IGJvb2woeCkgPyAqeCA8IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYg
eCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID4gKnggOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQm
PiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+IHYgOiBmYWxzZTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBU
JiB2LCBjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8g
diA8ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyAqeCA+PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNv
bnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDw9ICp4IDogZmFsc2U7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9wdGlv
bmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8
PSB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPj0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1
cm4gYm9vbCh4KSA/IHYgPj0gKnggOiB0cnVlOworfQorCisKKy8vIDIwLjUuMTIsIFNwZWNpYWxp
emVkIGFsZ29yaXRobXMKK3RlbXBsYXRlIDxjbGFzcyBUPgordm9pZCBzd2FwKE9wdGlvbmFsPFQ+
JiB4LCBPcHRpb25hbDxUPiYgeSkgX19OT0VYQ0VQVF8oX19OT0VYQ0VQVF8oeC5zd2FwKHkpKSkK
K3sKKyAgeC5zd2FwKHkpOworfQorCisKK3RlbXBsYXRlIDxjbGFzcyBUPgorY29uc3RleHByIE9w
dGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+IG1ha2VPcHRpb25hbChUJiYgdikK
K3sKKyAgcmV0dXJuIE9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+KGNvbnN0
ZXhwcl9mb3J3YXJkPFQ+KHYpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFg+Citjb25zdGV4cHIg
T3B0aW9uYWw8WCY+IG1ha2VPcHRpb25hbChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFg+IHYpCit7
CisgIHJldHVybiBPcHRpb25hbDxYJj4odi5nZXQoKSk7Cit9CisKKy8vIC0tIFdlYktpdCBBZGRp
dGlvbnMgLS0KK3RlbXBsYXRlIDxjbGFzcyBPcHRpb25hbFR5cGUsIGNsYXNzIENhbGxiYWNrPgor
QUxXQVlTX0lOTElORQorYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25hbFR5cGUgT3B0aW9uYWws
IENhbGxiYWNrIGNhbGxiYWNrKSAtPiB0eXBlbmFtZSBPcHRpb25hbFR5cGU6OnZhbHVlX3R5cGUK
K3sKKyAgICBpZiAoT3B0aW9uYWwpCisgICAgICAgIHJldHVybiAqT3B0aW9uYWw7CisgICAgcmV0
dXJuIGNhbGxiYWNrKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCituYW1lc3BhY2Ugc3Rk
Cit7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdHJ1Y3QgaGFzaDxXVEY6Ok9wdGlvbmFs
PFQ+PgorICB7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBoYXNoPFQ+OjpyZXN1bHRfdHlwZSByZXN1
bHRfdHlwZTsKKyAgICB0eXBlZGVmIFdURjo6T3B0aW9uYWw8VD4gYXJndW1lbnRfdHlwZTsKKwor
ICAgIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGFyZ3VtZW50X3R5cGUgY29uc3Qm
IGFyZykgY29uc3QgeworICAgICAgcmV0dXJuIGFyZyA/IHN0ZDo6aGFzaDxUPnt9KCphcmcpIDog
cmVzdWx0X3R5cGV7fTsKKyAgICB9CisgIH07CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
IHN0cnVjdCBoYXNoPFdURjo6T3B0aW9uYWw8VCY+PgorICB7CisgICAgdHlwZWRlZiB0eXBlbmFt
ZSBoYXNoPFQ+OjpyZXN1bHRfdHlwZSByZXN1bHRfdHlwZTsKKyAgICB0eXBlZGVmIFdURjo6T3B0
aW9uYWw8VCY+IGFyZ3VtZW50X3R5cGU7CisKKyAgICBjb25zdGV4cHIgcmVzdWx0X3R5cGUgb3Bl
cmF0b3IoKShhcmd1bWVudF90eXBlIGNvbnN0JiBhcmcpIGNvbnN0IHsKKyAgICAgIHJldHVybiBh
cmcgPyBzdGQ6Omhhc2g8VD57fSgqYXJnKSA6IHJlc3VsdF90eXBle307CisgICAgfQorICB9Owor
fQorCisjIHVuZGVmIFRSMl9PUFRJT05BTF9SRVFVSVJFUworIyB1bmRlZiBUUjJfT1BUSU9OQUxf
QVNTRVJURURfRVhQUkVTU0lPTgorCiB1c2luZyBXVEY6OkluUGxhY2U7CiB1c2luZyBXVEY6Ok51
bGxvcHQ7CiB1c2luZyBXVEY6Ok9wdGlvbmFsOwogdXNpbmcgV1RGOjptYWtlT3B0aW9uYWw7Ci0K
LSNlbmRpZiAvLyBPcHRpb25hbF9oCit1c2luZyBXVEY6OnZhbHVlT3JDb21wdXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCA4YmY4
MjlkZjBlNDk5ZWZlZGNhNzE4ZDcxNzQ0NWRmMGRlYTYyYjE3Li4yMThkZTE2YTY2YzA5YTE1YTQz
ZWIzNDJjNzM2ODFjY2Y4NGI3Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgRmV0Y2hCb2R5
T3duZXI6OmxvYWRCbG9iKGNvbnN0IEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25z
dW1lcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmxvYkxvYWRlciA9IHsgKnRo
aXMgfTsKKyAgICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7CiAgICAgbV9ibG9iTG9hZGVy
LT5sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBj
b25zdW1lcik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmgKaW5kZXggYTEzODY5NzgyMTQwMDcyMmQ3ZWNhMmM3MjZkNTgwMWE4MzQx
Zjk4OC4uZTM4MDVlOGUxMjc5YWI1MTJhYWIyMzgwYjRlMGQ5MTI4ZDhjZGE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtODQsNiArODQs
OCBAQCBjbGFzcyBGZXRjaEJvZHlPd25lciA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoQm9keU93
bmVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdAogICAgIHN0cnVjdCBCbG9iTG9hZGVyIGZpbmFs
IDogRmV0Y2hMb2FkZXJDbGllbnQgewogICAgICAgICBCbG9iTG9hZGVyKEZldGNoQm9keU93bmVy
Jik7CiAKKyAgICAgICAgdm9pZCBzd2FwKEJsb2JMb2FkZXImKTsKKwogICAgICAgICAvLyBGZXRj
aExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhkYXRh
LCBzaXplKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAKaW5kZXggMDJlMzEzNTBmMjZlMGM5YjE4NTI0Y2Q0MjQ5ZGJiODY3MjQyNzY5Ny4uODZl
MjRhZDk0NGQ1ODMxZDRmMjcyODVkZTE0MGIzNzNmODA1NTFmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAg
dm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QKICAgICAvLyBTZXR0aW5nIHBlbmRpbmcgYWN0aXZpdHkg
dW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJhY2sgaXMgY2FsbGVk
LgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2UucHRyKCkpOwogCi0g
ICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IEJvZHlMb2FkZXIocmVzcG9uc2UuZ2V0KCksIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIuZW1wbGFjZShyZXNw
b25zZS5nZXQoKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9ib2R5
TG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1ZXN0KSkKICAgICAgICAgcmVzcG9uc2UtPm1fYm9k
eUxvYWRlciA9IE51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDljZmY3YTJjZWRkN2E2
ZDc4OTg0OWFjZTJiMThiN2Q0NmRlMzE5MDYuLmRkOWYxNGZmYTE0OTM2MTFkMDE2NjFiY2E3YTdm
ODg5Mjk3YWJkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElE
QkRhdGFiYXNlSWRlbnRpZmllciB7CiAgICAgICAgIHVuc2lnbmVkIG1haW5GcmFtZVByb3RvY29s
SGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmlnaW4ucHJvdG9jb2wpOwogICAg
ICAgICB1bnNpZ25lZCBtYWluRnJhbWVIb3N0SGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWlu
RnJhbWVPcmlnaW4uaG9zdCk7CiAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNb
N10gPSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1f
b3BlbmluZ09yaWdpbi5wb3J0LnZhbHVlT3IoMCksIG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFp
bkZyYW1lSG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQudmFsdWVPcigwKSB9OworICAg
ICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xI
YXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3BlbmluZ09yaWdpbi5wb3J0LnZhbHVlX29yKDApLCBt
YWluRnJhbWVQcm90b2NvbEhhc2gsIG1haW5GcmFtZUhvc3RIYXNoLCBtX21haW5GcmFtZU9yaWdp
bi5wb3J0LnZhbHVlX29yKDApIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hN
ZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDFjNDQwYjhh
NjZjYTZkYzA1MGQxMmNjMTE5NjVhNjgxMDYyNjhlOTkuLmY2MmFkYmJmY2QzNTM3NDQ4MzQ0MmVk
YWMzZDgyMTFlMGI1NzRkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJP
cGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250CiAgICAgaWYgKHZlcnNpb24gJiYgIXZlcnNpb24udmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5Lm9wZW4oKSBj
YWxsZWQgd2l0aCBhIHZlcnNpb24gb2YgMCIpIH07CiAKLSAgICByZXR1cm4gb3BlbkludGVybmFs
KGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVPcigwKSk7CisgICAgcmV0dXJuIG9wZW5JbnRl
cm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLnZhbHVlX29yKDApKTsKIH0KIAogRXhjZXB0aW9u
T3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBs
b25nIGxvbmcgdmVyc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCmluZGV4IGY3YmM3ZDM5Y2RjZWE0ZTY0YzQ1ZGI4NDNi
YTVkMzkwMWE1MzUyYzMuLmNjMTI5N2E3NWY0MmIwM2NlMTAzYTcyN2Q2ZTc0YjBmOWU4NjkzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNl
bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcApAQCAtOTcsOCArOTcsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENEVE1GU2Vu
ZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIE9wdGlvbmFsPGludD4gZAogICAg
IGlmIChpbnRlclRvbmVHYXAgJiYgaW50ZXJUb25lR2FwLnZhbHVlKCkgPCBtaW5JbnRlclRvbmVH
YXBNcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAotICAgIG1f
ZHVyYXRpb24gPSBkdXJhdGlvbi52YWx1ZU9yKGRlZmF1bHRUb25lRHVyYXRpb25Ncyk7Ci0gICAg
bV9pbnRlclRvbmVHYXAgPSBpbnRlclRvbmVHYXAudmFsdWVPcihkZWZhdWx0SW50ZXJUb25lR2Fw
TXMpOworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbi52YWx1ZV9vcihkZWZhdWx0VG9uZUR1cmF0
aW9uTXMpOworICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2FwLnZhbHVlX29yKGRlZmF1
bHRJbnRlclRvbmVHYXBNcyk7CiAKICAgICBpZiAoIW1faGFuZGxlci0+aW5zZXJ0RFRNRih0b25l
cywgbV9kdXJhdGlvbiwgbV9pbnRlclRvbmVHYXApKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU1lOVEFYX0VSUiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAppbmRleCAyNDEyNzFmNjY4YjVkZmQ4Y2Y4ZjAwZWFjNzU1YmM4M2UyYjc3ZTVhLi5mN2Y2YmZk
ZmY1Y2NmODJkZWRlZGY3ODdjNjZlNDA0ZDUyODkzOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMjAyLDExICsyMDIsMTcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFZhbHVlPgogY2xhc3MgRE9NUHJvbWlzZSB7CiBwdWJsaWM6CiAgICAgRE9NUHJvbWlz
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIGdlbmVyaWNQcm9taXNlKSA6IG1fcHJvbWlzZURlZmVy
cmVkKFdURk1vdmUoZ2VuZXJpY1Byb21pc2UpKSB7IH0KKyAgICBET01Qcm9taXNlKGNvbnN0IERP
TVByb21pc2UmIG90aGVyKQorICAgICAgICA6IG1fcHJvbWlzZURlZmVycmVkKG90aGVyLm1fcHJv
bWlzZURlZmVycmVkLmNvcHlSZWYoKSkKKyAgICB7CisgICAgfQorICAgIERPTVByb21pc2UoRE9N
UHJvbWlzZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBET01Qcm9taXNlKERPTVByb21pc2UmJiBwcm9t
aXNlKSA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUocHJvbWlzZS5tX3Byb21pc2VEZWZlcnJl
ZCkpIHsgfQotCi0gICAgRE9NUHJvbWlzZShjb25zdCBET01Qcm9taXNlJikgPSBkZWZhdWx0Owot
ICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlIGNvbnN0JikgPSBkZWZhdWx0Owor
ICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlIG90aGVyKQorICAgIHsKKyAgICAg
ICAgc3dhcChvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKICAgICB2b2lk
IHJlc29sdmUodHlwZW5hbWUgUHJvbWlzZVJlc3VsdEluc3BlY3RvcjxWYWx1ZT46OlR5cGUgdmFs
dWUpIHsgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUodmFsdWUpOyB9CiAKQEAgLTIxNSw2ICsy
MjEsMTEgQEAgY2xhc3MgRE9NUHJvbWlzZSB7CiAgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBj
b25zdCB7IHJldHVybiBtX3Byb21pc2VEZWZlcnJlZC0+cHJvbWlzZSgpOyB9OwogCiBwcml2YXRl
OgorICAgIHZvaWQgc3dhcChET01Qcm9taXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIHN0ZDo6
c3dhcChtX3Byb21pc2VEZWZlcnJlZCwgb3RoZXIubV9wcm9taXNlRGVmZXJyZWQpOworICAgIH0K
KwogICAgIFJlZjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZURlZmVycmVkOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcAppbmRleCBlZDE4NmQ3MjI3ZWNlMDdiNzMyZTIxNTdlMGMxMTY3MzhmMmY3NmJm
Li4yYTY2ZDE5NDdhZGVjNmVhMWQ2ZjdkMGRjODhmZjI3YWFjMzRiZDM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFD
LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRl
S2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0
ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVPcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElk
ZW50aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRv
S2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFj
UGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApp
bmRleCA0OTJjNzU0N2U4ODI5MmFkNGQ5MWE4MGQ2MmM5MGVlOWI5M2ExYmQzLi5mN2Q1OWY3ZmFh
ZTc0MWFmYmU5NGIzNWRhYjY4ODlhM2RmZmQ0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKQEAgLTgzNiw3ICs4MzYsNyBAQCBFeGNlcHRpb25PcjxmbG9hdD4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmdldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUp
IGNvbgogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKFVuaXRUeXBlcyB1
bml0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRlcm5hbCh1bml0VHlw
ZSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRlcm5hbCh1bml0VHlwZSku
dmFsdWVfb3IoMCk7CiB9CiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGFmYTM2NjY0YjI0
NjQxYTc2M2U0OGYyZDI4N2NjMWY1YWQxOGM1Y2UuLmI2YmEyMjFkMjZkYmY3NzFkNDUyNTMxOGUz
ZDIwMzJkM2ZhN2UzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMz
NCw3ICszMzQsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdAogICAgIGlmICghc3R5bGUuaXNF
bXB0eSgpKQogICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwogICAgIHRleHQuYXBwZW5kKCd9Jyk7
Ci0gICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LnRvU3RyaW5nKCks
IGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBp
bnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVfb3IobGVuZ3RoKCkpKTsKICAg
ICBpZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGlu
c2VydFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCmluZGV4IDNjN2M4ZDE1YjRkMTNkNTE4Y2IzOGRmYjljZWI0MTUyY2U2NmU3NmEuLjM1ZDJj
ZjY1MTJiNmFiY2Q1N2NhYTdkZTcwMGU3ZDg5NjdlZjg0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RW
aXNpYmxlKGJvb2wgY2VudGVySWZOb3RWaXNpYmxlKQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEJ5
KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gc2Nyb2xsQnko
b3B0aW9ucy5sZWZ0LnZhbHVlT3IoMCksIG9wdGlvbnMudG9wLnZhbHVlT3IoMCkpOworICAgIHJl
dHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVfb3IoMCksIG9wdGlvbnMudG9wLnZhbHVl
X29yKDApKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgbm9ybWFsaXplTm9uRmluaXRlVmFs
dWUoZG91YmxlIGYpCkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBVUkwgRWxlbWVudDo6Z2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIAogaW50IEVs
ZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2Vy
KGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQgRWxl
bWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgaW50IHZhbHVlKQpAQCAtMzAzOCw3ICszMDM4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQg
dmFsdWUKIAogdW5zaWduZWQgRWxlbWVudDo6Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBw
YXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52
YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBFbGVtZW50Ojpz
ZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIHVuc2lnbmVkIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwCmluZGV4IGYxNzAwMWZiMjY5YmJjMTliYzg2Mjc0ZTU3ZjJkNTVhZjFjNmRmNGQuLjMyNTU3
OWRjYzQzMGY3ZmFmZDcwMTk4YzJkZThjN2U3MTBjNmRiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTgwLDkgKzgwLDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0JiBpbml0KQog
ICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAgICBpZiAoaW5pdC5zdWJ0cmVlKQogICAg
ICAgICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUu
dmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUudmFsdWVfb3Io
ZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZU9sZFZhbHVlOwotICAgIGlmIChp
bml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKKyAgICBpZiAoaW5pdC5j
aGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9
IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBhdHRy
aWJ1dGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKaW5kZXggZWM3Y2M0
MTA0MTIzNWFmNWZjYjk5NjE4NDc3NjlkM2U1N2Y4YTExNC4uYTQyN2QwYjMwNGZmNjQ2Y2UyYjE5
ZTBhNGEzZDFhOGQ0NmJiYjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01U
b2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcApA
QCAtMTQyLDcgKzE0Miw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IERPTVRva2VuTGlzdDo6dG9nZ2xl
KGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIE9wdGlvbmFsPGJvb2w+CiAgICAgYXV0byYgdG9r
ZW5zID0gdGhpcy0+dG9rZW5zKCk7CiAKICAgICBpZiAodG9rZW5zLmNvbnRhaW5zKHRva2VuKSkg
ewotICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3IoZmFsc2UpKSB7CisgICAgICAgIGlmICghZm9y
Y2UudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICB0b2tlbnMucmVtb3ZlRmlyc3QodG9r
ZW4pOwogICAgICAgICAgICAgdXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGY0MDNmMjMwNTFiMDIwNmEyM2UzYjg2NTdjNzUzZTA3MGI3MmE5N2Uu
LmI1ZDFiYzMzZWMxYWViMzc2NWI1M2UxNzc0ZDU2YzU4ZWMzNTRhNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTc2NSw3ICsxNzY1LDcgQEAgYm9vbCBI
VE1MSW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpCiB7CiAgICAgdW5zaWduZWQgb2xkRWZmZWN0aXZlTWF4TGVuZ3RoID0gZWZmZWN0aXZlTWF4
TGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgo
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAg
IGlmIChvbGRFZmZlY3RpdmVNYXhMZW5ndGggIT0gZWZmZWN0aXZlTWF4TGVuZ3RoKCkpCiAgICAg
ICAgIHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3VmFsdWUpCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpbnQgb2xkTWlu
TGVuZ3RoID0gbWluTGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxT
ZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9v
cigtMSkpOwogICAgIGlmIChvbGRNaW5MZW5ndGggIT0gbWluTGVuZ3RoKCkpCiAgICAgICAgIHVw
ZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKaW5kZXggMWZkYmM1MTg0YWI2NzZjNTM1ZDUyZTQyZDBlYzMwOTY0MDUyZTQ2
NC4uYmNlYjU5YTZmODU5ZTVlMGE2NGI2MzliZjVhMTMyMjljNTJlOWFiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yMDUsMTMgKzIwNSwxMyBA
QCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1h
eExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsK
LSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3
VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFs
aWRpdHkoKTsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxT
ZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9y
KC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCmluZGV4IDI1ZDliMmJlNmY5ZjM1M2YwOTM5ZmVlYzhmMmEyYjlhMzBiOWRm
NTEuLjdhN2U3MTg1ZWJhNjI3Y2JhYzY4MWNiMWZmOTY3Yjk0YmE5YjRkMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcApAQCAtMTExNSw3ICsxMTE1LDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4LAogICAgIGlm
ICghc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4
LCB5KSk7CisgICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50cmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBv
aW50KHgsIHkpKTsKIAogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50Lngo
KSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgeAog
ICAgIGlmICghc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQ
b2ludCh4LCB5KSk7CisgICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChG
bG9hdFBvaW50KHgsIHkpKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2lu
dC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmgKaW5kZXggM2U3OTg5ZDdjYWNmMWJkYjE3MzY3YzhkYTg3ZGJlYzNiMTBmN2FhZi4u
MGJjOGIwNzljNDhjZmE3ZDZkMmUwYjEwMTllNTY4Mjc3NTllZGNkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMTU0LDcgKzE1NCw3IEBA
IGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSh1bnNpZ25lZCB2YWx1
ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlCiBpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1M
Tm9uTmVnYXRpdmUoU3RyaW5nVmlldyBzdHJpbmdWYWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVl
ID0gMCkKIHsKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIpOwotICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KHN0cmluZ1ZhbHVlKS52YWx1ZU9yKGRlZmF1bHRWYWx1ZSk7CisgICAgdW5zaWduZWQgdmFsdWUg
PSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZhbHVlX29yKGRlZmF1
bHRWYWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIp
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMTFhNDhkNzNjYTM3OGZiNTRhOGVlZGQ4
OGU2Yzc2OGEyM2Y5MGUxMi4uYmFlMWZiMjk2YTgyY2E0MDdkYzJkMmYxNWQxMjYwZWIzNDJlN2Jm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlcwogdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RX
aXRoUHJlZmxpZ2h0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fYXN5
bmMpIHsKLSAgICAgICAgbV9wcmVmbGlnaHRDaGVja2VyID0gQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgbV9wcmVmbGlnaHRDaGVj
a2VyLmVtcGxhY2UoKnRoaXMsIFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICBtX3ByZWZsaWdo
dENoZWNrZXItPnN0YXJ0UHJlZmxpZ2h0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiOWVmNmUwOWU3YjM4MDA3OWNlOGU3
YzcxZmE2ZGZjZTFkMzAzNjBmLi5hOThhZGJmZDQyMmUzOTk2Yjg4MWNkNGUzYjcwNjc0MjFmYTQz
ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM0Niw3ICszNDYs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiByZXF1ZXN0KQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQs
IExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9y
d2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9u
YWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRvbWljU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSkKIHsKLSAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFt
ZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZU9yKHNob3VsZFNlbmRSZWZlcnJlciA9
PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CisgICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3
RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVfb3Ioc2hvdWxkU2VuZFJlZmVy
cmVyID09IE5ldmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNz
IDogTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxv
YWRSZXF1ZXN0KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VS
ZXF1ZXN0KHVybCksIHBhc3NlZFRhcmdldCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExp
c3QsIHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMs
IG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgZG93bmxvYWRBdHRyaWJ1dGUpLCB0cmln
Z2VyaW5nRXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggM2EyZjc1
OTAzNzU5NjdmZGJlZDcxZDBlNDIzYjJkNzI3ODMyZDJhYy4uOTEwYTUwYjc3YWYwM2RlMjczYzMx
OTBjZTY3ODM3Y2JlNzdjOTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ5
NSw3ICsxNDk1LDcgQEAgZG91YmxlIERPTVdpbmRvdzo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0
CiAKIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlv
bnMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZU9yKDAp
LCBvcHRpb25zLnRvcC52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5s
ZWZ0LnZhbHVlX29yKDApLCBvcHRpb25zLnRvcC52YWx1ZV9vcigwKSk7CiB9CiAKIHZvaWQgRE9N
V2luZG93OjpzY3JvbGxCeShkb3VibGUgeCwgZG91YmxlIHkpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGUzNWEyMzdlNGQ4MzNjNTJjNTAwZWY2NWQ4ZjUw
Y2YyNTA0ZmQyNDMuLjFjYzc4ZTZmNWNhNWFlNjZmNDVmYmNkMzE1YWIzM2U5M2Y0OTJjOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC01NzIsNyArNTcyLDcgQEAg
U3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdAogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoZW5jb2RlRm9yRmlsZU5hbWUobV9ob3N0KSk7CiAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJl
cihtX3BvcnQudmFsdWVPcigwKSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIobV9w
b3J0LnZhbHVlX29yKDApKTsKIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggYjVk
ODk5YmVhMWViODE1Y2IwMzBlYTBjMjA0OTE3MmVhNzkzNDZlMi4uMTk4N2JjYjA5NmVjNzhkYzZi
ZGNmYjk1YTMwZTdlOGMzZjFjNGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcApAQCAtNDksNyArNDksNyBAQCBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mCiAj
aWYgIUxPR19ESVNBQkxFRAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmco
KSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwg
IjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlT3IoMCkpKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1
ZV9vcigwKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
SGFzaC5oCmluZGV4IDUwZWIyOTU2ZjIzYjdjZjEyZWNiOTBjZjc2ZmQ4Yjk4MWVhM2I1NWEuLmI3
YTVhZWZlZGExYjZkZWZkNzJhOWJlN2M2YmEyMDYyZTFiZDJkOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5IYXNoIHsKICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewogICAgICAg
ICAgICAgb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKSA/IG9yaWdpbi0+cHJvdG9jb2woKS5pbXBs
KCktPmhhc2goKSA6IDAsCiAgICAgICAgICAgICBvcmlnaW4tPmhvc3QoKS5pbXBsKCkgPyBvcmln
aW4tPmhvc3QoKS5pbXBsKCktPmhhc2goKSA6IDAsCi0gICAgICAgICAgICBvcmlnaW4tPnBvcnQo
KS52YWx1ZU9yKDApCisgICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKQogICAg
ICAgICB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZiho
YXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAKaW5kZXggN2M3NmFlMTI4MjA4Zjg0M2NlNzI3ZDRjNmUxYjRhNmUzNmI5NWY1My4u
ZTZkODY4YzBkYzA2OTZjZTk1ZTg1Mjg4MGEzNjdjNDg2MDFiZGMzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTE1OCw4ICsxNTgsOCBAQCBXaW5kb3dGZWF0dXJl
cyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcs
IGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSA9IGZhbHNlOwogICAg
IGZlYXR1cmVzLmRpYWxvZyA9IHRydWU7CiAKLSAgICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVy
ZShmZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRoIiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0Lndp
ZHRoKCkpLnZhbHVlT3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXpl
IG9mIGRpYWxvZyBpbiBNYWNJRQotICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0
dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQo
KSkudmFsdWVPcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2Yg
ZGlhbG9nIGluIE1hY0lFCisgICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNN
YXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1
ZV9vcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9n
IGluIE1hY0lFCisgICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAi
ZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZV9v
cig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGlu
IE1hY0lFCiAKICAgICBmZWF0dXJlcy53aWR0aCA9IHdpZHRoOwogICAgIGZlYXR1cmVzLmhlaWdo
dCA9IGhlaWdodDsKQEAgLTE2NywxNiArMTY3LDE2IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlh
bG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxv
CiAgICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2xlZnQi
LCBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhYKCkgLSB3
aWR0aCk7CiAgICAgZmVhdHVyZXMueSA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxv
Z3RvcCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFko
KSAtIGhlaWdodCk7CiAKLSAgICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIi
KS52YWx1ZU9yKHRydWUpKSB7CisgICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAiY2Vu
dGVyIikudmFsdWVfb3IodHJ1ZSkpIHsKICAgICAgICAgaWYgKCFmZWF0dXJlcy54KQogICAgICAg
ICAgICAgZmVhdHVyZXMueCA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpICsgKHNjcmVlbkF2YWls
YWJsZVJlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDI7CiAgICAgICAgIGlmICghZmVhdHVyZXMueSkK
ICAgICAgICAgICAgIGZlYXR1cmVzLnkgPSBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIChzY3Jl
ZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDI7CiAgICAgfQogCi0gICAgZmVh
dHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52
YWx1ZU9yKGZhbHNlKTsKLSAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0
dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVPcih0cnVlKTsKLSAgICBmZWF0dXJlcy5z
dGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1
ZU9yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5yZXNpemFibGUgPSBib29sRmVhdHVyZShmZWF0dXJl
c01hcCwgInJlc2l6YWJsZSIpLnZhbHVlX29yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5zY3JvbGxi
YXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVfb3Io
dHJ1ZSk7CisgICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1
cmVzTWFwLCAic3RhdHVzIikudmFsdWVfb3IoZmFsc2UpOwogCiAgICAgcmV0dXJuIGZlYXR1cmVz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCmluZGV4IGFlOTc1MThiMTY5ZTEwMWM3YmZlYzE4MzAyODgzMTAzMGE4MmU2YjguLjFhM2I2
M2Y1NTM4MDQ0YmZjOTNlY2QxZDAzZTFiNmI0ZjhiZWUyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTMwOSw3ICszMDksNyBA
QCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkg
JiYgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID09IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVl
T3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29y
KHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgo
cnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRs
ZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dl
YmtpdC5vcmcvYi8xMDAwNTAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1bgogICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAg
ICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAg
ICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTog
VXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgg
a2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAg
LTQ5Miw3ICs0OTIsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElm
QXZhaWxhYmxlKGZsb2F0JiB3aWR0aCkgY29uc3QKIAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0
U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxl
Y3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7
Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7Cisg
ICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogCiAg
ICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6
IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRo
IGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4
IDg5OGQ2NWJkNTI0ZWU2MzU2ZjI5YTAzMDVjODhmZTEwMTBjNmM3YmMuLmZmMDk1YjUyMTlmYWEz
M2MxYjYyMjFkZmFkNWNlNTBjZWQwYzAwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgSW50UmVjdCBT
aGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEYKICAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAgICBGbG9hdFF1YWQgdHJhbnNmb3JtZWRQb2x5
Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRRdWFkKHNoYWRvd2VkUmVjdCkpOwogICAgICAg
ICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNldCk7Ci0gICAgICAgIGxheWVyUmVjdCA9
IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0
cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7CisgICAgICAgIGxheWVyUmVjdCA9IHRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJh
bnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxh
eWVyUmVjdCA9IHNoYWRvd2VkUmVjdDsKICAgICAgICAgbGF5ZXJSZWN0Lm1vdmUobV9vZmZzZXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTMyNGMyMDhjYjE4ZGE4N2QxZTI4YTA0MDhl
MTk4NmY5MTUxODJmYS4uYmMxZDAwZjQ1ZjM2YzIxNzU5NTIwODg3NmVlNjk5OWQ5ODA4NGFkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzUyLDcgKzIzNTIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBo
aWNzQ29udGV4dCYgYwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aCht
X2xhc3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9sYXN0SW1hZ2UuZ2V0KCkpKTsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSBbZmlyc3RFbmFibGVkVmlkZW9U
cmFjayBwcmVmZXJyZWRUcmFuc2Zvcm1dOwotICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91dHB1
dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUmVjdChvdXRwdXRSZWN0KTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRwdXRS
ZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBSZWN0KG91dHB1dFJlY3QpOwogCiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFu
c2Zvcm0pOwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBp
bWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
CmluZGV4IGZhN2NiNzFmNDFhOGEyNThlZjBlNGQ2MDA5YzJjZDc2Y2IzZWMwZDguLmEwMWJkZTk1
MjIwMGZiNTg5MmQwNjRiNzA5Y2EzYzBhY2VhMGEwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0xMDAyLDcgKzEw
MDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZWVrVG9UaW1lKE1lZGlh
VGltZSB0aW1lKQogCiBGbG9hdFNpemUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVy
YWxTaXplKCkKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlT3IoRmxvYXRTaXplKCkp
OworICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVfb3IoRmxvYXRTaXplKCkpOwogfQogCiB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1w
bGVzKGludCB0cmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggMjVhNWRiYjEyNjE4MzQ3NTNkNTQ3Njg4OTA4NDA1YmZm
NzAyMDk4Yy4uM2FmZmQ0MjFlMGUzZDczMTg3ZjJlMzQyN2ZiNmQ0ZjEzZWI1ODViOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlcj4g
ewogICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoZmxvYXQgc2NhbGUpIHsgbV9maWx0ZXJTY2FsZSA9
IHNjYWxlOyB9CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybTsgfQotICAgIEZsb2F0UG9pbnQg
bWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29u
c3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOyB9CisgICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0
ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVy
biBtX2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUG9pbnQocG9pbnQpOyB9CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmlu
Z01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJl
bmRlcmluZ01vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggODk1ZDM3ZjM5
Y2YwNTcyZjVkNDk2ZTBlYjYwYWJiMWYyOTA2ZmE1Yy4uNDkxMGNmMGFjN2UyZDg3NjAwMTk4Yjg0
OTVlNThkNzNmOGExNTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIxMSw3
ICsyMTEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5X
aXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogICAgICAgICBUZXh0dXJlTWFwcGVy
UGFpbnRPcHRpb25zIHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwogICAgICAgICByZXBsaWNhT3B0
aW9ucy50cmFuc2Zvcm0KICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXll
ci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpCi0gICAgICAgICAgICAubXVsdGlwbHko
bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSkpOworICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9y
bS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7
CiAgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxpY2FPcHRpb25zKTsKICAgICB9CiAK
QEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRP
cGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBw
ZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCiB7Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9u
TWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQo
KSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVl
T3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkp
Lm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9v
cihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKQEAg
LTczMSw3ICs3MzEsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6
ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYQogRmxvYXRTaXplIFRleHR1
cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQog
ewogICAgIGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNldFk7Ci0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCku
aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgIHRyYW5zZm9ybS5t
YXAoMCwgMCwgemVyb1gsIHplcm9ZKTsKICAgICB0cmFuc2Zvcm0ubWFwKG9mZnNldC53aWR0aCgp
LCBvZmZzZXQuaGVpZ2h0KCksIG9mZnNldFgsIG9mZnNldFkpOwogICAgIHJldHVybiBGbG9hdFNp
emUob2Zmc2V0WCAtIHplcm9YLCBvZmZzZXRZIC0gemVyb1kpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA3NDhhZDhl
OWUzODBhM2VlNzJhNmEwMjE1ODI0ZWY4ZDQxN2VjMzEwLi40NjJiNjJlZDQ3NzdiZjYzNTdkNTQ0
MzRhODFlZTVmZmE4MzI5YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTQ3LDcgKzk0Nyw3IEBAIEludFJlY3Qg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICAv
LyBSZXR1cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxlIHJlY3QgKHN1cmZhY2UgY29vcmRp
bmF0ZXMpIG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVyIGNvb3JkaW5hdGVzKS4KICAgICAv
LyBUaGUgcmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQgdGhlIHZpc2libGUgcmVj
dCBpcyB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAvLyBzbyBpdCBtaWdodCBz
cHJlYWQgZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAoYW5kIHRoZW4gZXZlbiBt
b3JlIGFtcGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVyKS4KLSAgICBBU1NFUlQo
bV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgQVNTRVJUKG1f
Y2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICBGbG9hdFJlY3Qg
cmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRR
dWFkKEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVudHNSZWN0KCkpKTsKICAg
ICBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShyZWN0LCBzaXplKCkpOwogICAg
IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0
KCkKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJh
bnNmb3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50
KCkgPyBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpwYXJlbnQoKSkubV9sYXll
clRyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KTsKIAotICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29t
YmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBt
X2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgLy8gVGhlIGNv
bWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxl
UmVjdC4KICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybVN0YXRlLmNwcAppbmRleCBlNzYzY2MxMzkzZGJjZGU2MTEzMjExOGZmYjQzMTkxYzY0OGU0
NWU0Li5mMGUyZGEzMTkzYzRlODk5MTFmZjdmY2I2ZGI4ZWE4NDY0ODc5MGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIEZsb2F0UG9pbnQgVHJhbnNm
b3JtU3RhdGU6Om1hcHBlZFBvaW50KGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiAgICAgaWYgKG1f
ZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybS0+bWFwUG9pbnQocG9pbnQpOwogCi0gICAgcmV0dXJuIG1fYWNj
dW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CisgICAgcmV0dXJuIG1fYWNjdW11
bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOwogfQogCiBGbG9hdFF1YWQgVHJhbnNm
b3JtU3RhdGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJh
bnNmb3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbAogICAgIGlmIChkaXJlY3Rpb24gPT0gQXBw
bHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNm
b3JtLT5tYXBRdWFkKHF1YWQpOwogCi0gICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0t
PmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1
YWQsIHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZl
cnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwg
d2FzQ2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3YXNDbGFtcGVkKQpAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3CiAgICAgICAgIH0KIAogICAg
IH0gZWxzZSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0g
PSB0LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVf
b3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIGlmIChtX21hcFBvaW50KQogICAg
ICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlVHJhbnNmb3JtLnByb2plY3RQb2lu
dChtX2xhc3RQbGFuYXJQb2ludCk7CiAgICAgICAgIGlmIChtX21hcFF1YWQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAppbmRl
eCAxZjFjMzgwNTU1MTExZjQ0YTFmMWU3ZTZlMDMyYTI3MzBkZDk0YmZkLi5iMzhlNzA3MjAyMzhl
MGM4ZWU3ZWNiMGRlYjkwNmMyYTFiMjU2NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAg
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgc3QKICAgICAvLyBObyBjb21wZW5zYXRpb24gZm9yIGxhdGVu
Y3kgYXMgdGhhdCBpcyBub3QgdGVycmlibHkgaW1wb3J0YW50IGluIHByYWN0aWNlLgogICAgIGF1
dG8gZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOwogICAgIGF1dG8gYXBwYXJlbnRBZ2UgPSBk
YXRlVmFsdWUgPyBzdGQ6Om1heCgwdXMsIGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihyZXNw
b25zZVRpbWUgLSAqZGF0ZVZhbHVlKSkgOiAwdXM7Ci0gICAgYXV0byBhZ2VWYWx1ZSA9IHJlc3Bv
bnNlLmFnZSgpLnZhbHVlT3IoMHVzKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdl
KCkudmFsdWVfb3IoMHVzKTsKICAgICBhdXRvIGNvcnJlY3RlZEluaXRpYWxBZ2UgPSBzdGQ6Om1h
eChhcHBhcmVudEFnZSwgYWdlVmFsdWUpOwogICAgIGF1dG8gcmVzaWRlbnRUaW1lID0gZHVyYXRp
b25fY2FzdDxtaWNyb3NlY29uZHM+KHN5c3RlbV9jbG9jazo6bm93KCkgLSByZXNwb25zZVRpbWUp
OwogICAgIHJldHVybiBjb3JyZWN0ZWRJbml0aWFsQWdlICsgcmVzaWRlbnRUaW1lOwpAQCAtMTIy
LDcgKzEyMiw3IEBAIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY29tcHV0ZUZyZXNobmVzc0xp
ZmV0aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIHJldHVybiAqbWF4
QWdlOwogCiAgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOwotICAgIGF1dG8gZWZmZWN0
aXZlRGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRpbWUpOworICAgIGF1dG8gZWZmZWN0aXZl
RGF0ZSA9IGRhdGUudmFsdWVfb3IocmVzcG9uc2VUaW1lKTsKICAgICBpZiAoYXV0byBleHBpcmVz
ID0gcmVzcG9uc2UuZXhwaXJlcygpKQogICAgICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNy
b3NlY29uZHM+KCpleHBpcmVzIC0gZWZmZWN0aXZlRGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyM2FkY2QzNDMxNzIxZDA2NWJiMjIzZTI2
NjhkOGEwNWY1MjAyNTU3Li5mN2FlYTg0MjZmMmExMzYwYTdlM2NhNzhiOTAyZjk0ZTA4YzQwNDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMDE3
LDcgKzEwMTcsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldCh1bnNp
Z25lZCBvZmZzZXQpIGNvbnN0CiAKIFN0cmluZ1ZpZXcgSW5saW5lVGV4dEJveDo6c3Vic3RyaW5n
VG9SZW5kZXIoT3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRpbmdMZW5ndGgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhzdGFydCgp
LCBvdmVycmlkaW5nTGVuZ3RoLnZhbHVlT3IobGVuKCkpKTsKKyAgICByZXR1cm4gU3RyaW5nVmll
dyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0KCksIG92ZXJyaWRpbmdMZW5ndGgu
dmFsdWVfb3IobGVuKCkpKTsKIH0KIAogU3RyaW5nIElubGluZVRleHRCb3g6Omh5cGhlbmF0ZWRT
dHJpbmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGFsdGVybmF0ZUxlbmd0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8u
aAppbmRleCA1MTFhNmJjYzU0ZmE4MTQ5NzRjMjBlNmNmODhkMTMxYzJlYjg0NjRmLi40YWIzODkz
NWU5NGI4ZjMwNjJlZTA5ZDNhMjIyN2QyYTg4OTQwZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1BhaW50SW5mby5oCkBAIC0xMDksNyArMTA5LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAg
ICAgIGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3QpKTsKKyAgICAgICAg
RmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOwogICAgICAgICBy
ZWN0LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5mb3JtZWRSZWN0LmxvY2F0aW9uKCkpKTsK
ICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUodHJhbmZvcm1lZFJlY3Quc2l6ZSgpKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAwNjZjZmI4
ZmJiZGU1NzVkZjc0ZDhhM2U5YzI4NWRkMzNiY2FjNTU5Li40ZDRkZTgxNzk2YTlhN2JiMDA5ZDlk
OWUwNGQxY2NiMTA4ZmUyNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cApAQCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICAgICAg
TGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAgICAgIGlmIChjaGVja01pbk1heEhlaWdodCkg
ewogICAgICAgICAgICAgTGF5b3V0VW5pdCBpbnRyaW5zaWNIZWlnaHQgPSBjb21wdXRlZFZhbHVl
cy5tX2V4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAg
ICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJl
ZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBpbnRyaW5zaWNIZWlnaHQpLnZhbHVlT3Io
Y29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29t
cHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZV9vcihjb21wdXRlZFZhbHVlcy5tX2V4
dGVudCk7CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0
QnlNaW5NYXgoaGVpZ2h0UmVzdWx0LCBpbnRyaW5zaWNIZWlnaHQpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gVGhlIG9ubHkgdGltZXMgd2UgZG9uJ3QgY2hlY2sgbWluL21heCBo
ZWlnaHQgYXJlIHdoZW4gYSBmaXhlZCBsZW5ndGggaGFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDgy
YWRiY2Q0MWYwOTg4YThiNDllZGYwOWVmOTIxZTA3YmY5Y2QyZDQuLjU2M2U1MzZkNmExNjYwMmY0
Y2U5NDUwMzk2NDBmNDEwZjJlOWM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC00MzMsNyArNDMz
LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxC
b3goYm9vbCByZWxheW91dENoaWxkcmVuKQogCiAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhl
aWdodCBhbmQgb3ZlcmZsb3cgaGVpZ2h0LgogICAgICAgICAgICAgaWYgKHN0eWxlKCkuYm94QWxp
Z24oKSA9PSBCQkFTRUxJTkUpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9
IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hp
bGQtPm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9
IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWlnaHQoKSArIGNo
aWxkLT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5t
YXJnaW5Ub3AoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGRlc2NlbnQgPSAoY2hpbGQt
PmhlaWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpIC0gYXNjZW50OwogCkBA
IC01MDgsNyArNTA4LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91
dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgICAg
ICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwg
KGNvbnRlbnRIZWlnaHQoKSAtIChjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJn
aW5FeHRlbnQoKSkpIC8gMik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIGNhc2UgQkJBU0VMSU5FOiB7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQg
YXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0
KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOworICAgICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5o
ZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAgICAgICAgIGFz
Y2VudCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSAr
PSBjaGlsZC0+bWFyZ2luVG9wKCkgKyAobWF4QXNjZW50IC0gYXNjZW50KTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAppbmRleCA0OWNhMmFjZDI4NGFmMWNkMWYyYTc5ZWMwMmI3NmEwMzg5NDMzZGUy
Li40NGYyN2EzZDIyNDAxOGNmYTllNDljMWRkNDk2MWI5NDhhZjIzZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE3NSw3ICsxNzUs
NyBAQCBzdGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveChjb25zdCBS
ZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbgogCiBpbnQgUmVuZGVyRmxleGlibGVCb3g6OmJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7Ci0gICAgaW50IGJhc2VsaW5lID0gZmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJv
eCgqdGhpcywgZGlyZWN0aW9uKSk7CisgICAgaW50IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxp
bmUoKS52YWx1ZV9vcihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRp
cmVjdGlvbikpOwogCiAgICAgaW50IG1hcmdpbkFzY2VudCA9IGRpcmVjdGlvbiA9PSBIb3Jpem9u
dGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKTsKICAgICByZXR1cm4gYmFzZWxp
bmUgKyBtYXJnaW5Bc2NlbnQ7CkBAIC02ODUsNyArNjg1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQoUmVuZGVy
Qm94JgogICAgICAgICBBU1NFUlQobWFpbkF4aXNFeHRlbnQgLSBtYWluQXhpc0JvcmRlckFuZFBh
ZGRpbmdFeHRlbnRGb3JDaGlsZChjaGlsZCkgPj0gMCk7CiAgICAgICAgIHJldHVybiBtYWluQXhp
c0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNoaWxkKGNoaWxkKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBN
YWluT3JQcmVmZXJyZWRTaXplLCBmbGV4QmFzaXMpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIGNv
bXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBm
bGV4QmFzaXMpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlv
dXRGbGV4SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVuLCBWZWN0b3I8TGluZUNvbnRleHQ+JiBs
aW5lQ29udGV4dHMpCkBAIC04MjUsNyArODI1LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6
dXBkYXRlQXV0b01hcmdpbnNJbkNyb3NzQXhpcyhSZW5kZXJCb3gmIGNoaWxkLCBMYXlvdXRVbmkK
IAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQo
UmVuZGVyQm94JiBjaGlsZCkKIHsKLSAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0
TGluZUJhc2VsaW5lKCkudmFsdWVPcihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOwor
ICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9v
cihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOwogICAgIHJldHVybiBhc2NlbnQgKyBm
bG93QXdhcmVNYXJnaW5CZWZvcmVGb3JDaGlsZChjaGlsZCk7CiB9CiAKQEAgLTkzMCwxMiArOTMw
LDEyIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1p
bkFuZE1heChjb25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
bWF4RXh0ZW50ID0gTnVsbG9wdDsKICAgICBpZiAobWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMo
KSkgewogICAgICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChj
aGlsZCwgTWF4U2l6ZSwgbWF4KTsKLSAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRT
aXplLCBtYXhFeHRlbnQudmFsdWVPcihjaGlsZFNpemUpKTsKKyAgICAgICAgY2hpbGRTaXplID0g
c3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRTaXplKSk7CiAgICAg
fQogICAgIAogICAgIExlbmd0aCBtaW4gPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHls
ZSgpLm1pbldpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLm1pbkhlaWdodCgpOwogICAgIGlmIChtaW4u
aXNTcGVjaWZpZWRPckludHJpbnNpYygpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRT
aXplLCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52
YWx1ZU9yKGNoaWxkU2l6ZSkpOworICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBj
b21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52YWx1ZV9v
cihjaGlsZFNpemUpKTsKICAgICAKICAgICBpZiAoIWlzRmxleGlibGVCb3hJbXBsKCkgJiYgbWlu
LmlzQXV0bygpICYmIG1haW5BeGlzT3ZlcmZsb3dGb3JDaGlsZChjaGlsZCkgPT0gT1ZJU0lCTEUg
JiYgIShpc0NvbHVtbkZsb3coKSAmJiBpczxSZW5kZXJGbGV4aWJsZUJveD4oY2hpbGQpKSkgewog
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDU1MgZmxleGJveCBzZWN0
aW9uIDQuNSB3aGljaCBkZWZpbmVzIHRoZSBtaW5pbXVtIHNpemUgb2YgInB1cmUiIGZsZXgKQEAg
LTk0NywxMyArOTQ3LDEzIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENo
aWxkU2l6ZUZvck1pbkFuZE1heChjb25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAgICAgIEFTU0VS
VChjb250ZW50U2l6ZSA+PSAwKTsKICAgICAgICAgaWYgKGNoaWxkLmhhc0FzcGVjdFJhdGlvKCkg
JiYgY2hpbGQuaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpID4gMCkKICAgICAgICAgICAgIGNvbnRl
bnRTaXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgo
Y2hpbGQsIGNvbnRlbnRTaXplKTsKLSAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250
ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY29udGVudFNpemUpKTsKKyAgICAgICAgY29udGVu
dFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNvbnRlbnRT
aXplKSk7CiAgICAgICAgIAogICAgICAgICBMZW5ndGggbWFpblNpemUgPSBpc0hvcml6b250YWxG
bG93KCkgPyBjaGlsZC5zdHlsZSgpLndpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLmhlaWdodCgpOwog
ICAgICAgICBpZiAobWFpbkF4aXNMZW5ndGhJc0RlZmluaXRlKGNoaWxkLCBtYWluU2l6ZSkpIHsK
ICAgICAgICAgICAgIExheW91dFVuaXQgcmVzb2x2ZWRNYWluU2l6ZSA9IGNvbXB1dGVNYWluQXhp
c0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBtYWluU2l6ZSkudmFs
dWUoKTsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlZE1haW5TaXplID49IDApOwotICAgICAg
ICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6
ZSwgbWF4RXh0ZW50LnZhbHVlT3IocmVzb2x2ZWRNYWluU2l6ZSkpOworICAgICAgICAgICAgTGF5
b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0
ZW50LnZhbHVlX29yKHJlc29sdmVkTWFpblNpemUpKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1heChjaGlsZFNpemUsIHN0ZDo6bWluKHNwZWNpZmllZFNpemUsIGNvbnRlbnRTaXplKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAodXNlQ2hpbGRBc3BlY3RSYXRpbyhjaGlsZCkpIHsKICAgICAgICAg
ICAgIExlbmd0aCBjcm9zc1NpemVMZW5ndGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5z
dHlsZSgpLmhlaWdodCgpIDogY2hpbGQuc3R5bGUoKS53aWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDVmMGRkMDQ3YmE5MDc5MmUzMWM0NWZmZWE4MDJm
Nzk2NzQwY2ZlYTQuLmI2MDAyZDJiMTMyNTU4NjcyYWIzN2E3ODliMGYzODAyM2Q0ZDg3YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
Y2xhc3MgR3JpZFRyYWNrIHsKIAogICAgIHZvaWQgc2V0R3Jvd3RoTGltaXQoTGF5b3V0VW5pdCBn
cm93dGhMaW1pdCkKICAgICB7Ci0gICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9
PSBpbmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3Ro
TGltaXRDYXAudmFsdWVPcihncm93dGhMaW1pdCkpOworICAgICAgICBtX2dyb3d0aExpbWl0ID0g
Z3Jvd3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExp
bWl0LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlX29yKGdyb3d0aExpbWl0KSk7CiAgICAgICAgIGVu
c3VyZUdyb3d0aExpbWl0SXNCaWdnZXJUaGFuQmFzZVNpemUoKTsKICAgICB9CiAKQEAgLTY4Niw3
ICs2ODYsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndAogCiAgICAgaWYgKGxvZ2ljYWxIZWln
aHRMZW5ndGguaXNGaXRDb250ZW50KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBmaWxsQXZhaWxh
YmxlRXh0ZW50ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoRXhj
bHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAgICAgICByZXR1cm4gc3RkOjptaW4obV9tYXhD
b250ZW50SGVpZ2h0LnZhbHVlT3IoMCksIHN0ZDo6bWF4KG1fbWluQ29udGVudEhlaWdodC52YWx1
ZU9yKDApLCBmaWxsQXZhaWxhYmxlRXh0ZW50KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1pbiht
X21heENvbnRlbnRIZWlnaHQudmFsdWVfb3IoMCksIHN0ZDo6bWF4KG1fbWluQ29udGVudEhlaWdo
dC52YWx1ZV9vcigwKSwgZmlsbEF2YWlsYWJsZUV4dGVudCkpOwogICAgIH0KIAogICAgIGlmIChs
b2dpY2FsSGVpZ2h0TGVuZ3RoLmlzRmlsbEF2YWlsYWJsZSgpKQpAQCAtNzA5LDcgKzcwOSw3IEBA
IHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpCiAKICAgICAvLyBHcmlkIGd1dHRlcnMgd2VyZSByZW1v
dmVkIGZyb20gZnJlZVNwYWNlIGJ5IHRoZSBjYWxsZXIgKGlmIGZyZWVTcGFjZSBpcyBkZWZpbml0
ZSksCiAgICAgLy8gYnV0IHdlIG11c3QgdXNlIHRoZW0gdG8gY29tcHV0ZSByZWxhdGl2ZSAoaS5l
LiBwZXJjZW50YWdlcykgc2l6ZXMuCi0gICAgTGF5b3V0VW5pdCBtYXhTaXplID0gc3RkOjptYXgo
TGF5b3V0VW5pdCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcihMYXlvdXRV
bml0KCkpKTsKKyAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heChMYXlvdXRVbml0KCks
IHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsKICAg
ICBjb25zdCBib29sIGhhc0RlZmluaXRlRnJlZVNwYWNlID0gc2l6aW5nRGF0YS5zaXppbmdPcGVy
YXRpb24gPT0gVHJhY2tTaXppbmc7CiAKICAgICAvLyAxLiBJbml0aWFsaXplIHBlciBHcmlkIHRy
YWNrIHZhcmlhYmxlcy4KQEAgLTEwMjksMTMgKzEwMjksMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJH
cmlkOjptaW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW8KICAgICBib29sIG92ZXJyaWRlU2l6ZUhhc0NoYW5nZWQgPSB1cGRhdGVPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0
aW9uLCBzaXppbmdEYXRhKTsKICAgICBpZiAoaXNSb3dBeGlzKSB7CiAgICAgICAgIExheW91dFVu
aXQgbWFyZ2luTG9naWNhbFdpZHRoID0gc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gPT0gVHJh
Y2tTaXppbmcgPyBjb21wdXRlTWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjaGlsZElubGluZURp
cmVjdGlvbiwgY2hpbGQpIDogbWFyZ2luSW50cmluc2ljTG9naWNhbFdpZHRoRm9yQ2hpbGQoY2hp
bGQpOwotICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNp
bmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRT
aXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uKS52YWx1ZU9yKDApLCAqdGhp
cywgbnVsbHB0cikgKyBtYXJnaW5Mb2dpY2FsV2lkdGg7CisgICAgICAgIHJldHVybiBjaGlsZC5j
b21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIG92
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxp
bmVEaXJlY3Rpb24pLnZhbHVlX29yKDApLCAqdGhpcywgbnVsbHB0cikgKyBtYXJnaW5Mb2dpY2Fs
V2lkdGg7CiAgICAgfQogCiAgICAgaWYgKG92ZXJyaWRlU2l6ZUhhc0NoYW5nZWQgJiYgKGRpcmVj
dGlvbiAhPSBGb3JDb2x1bW5zIHx8IHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uICE9IEludHJp
bnNpY1NpemVDb21wdXRhdGlvbikpCiAgICAgICAgIGNoaWxkLnNldE5lZWRzTGF5b3V0KE1hcmtP
bmx5VGhpcyk7CiAgICAgY2hpbGQubGF5b3V0SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gY2hpbGQu
Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIE51bGxvcHQp
LnZhbHVlT3IoMCkgKyBjaGlsZC5tYXJnaW5Mb2dpY2FsSGVpZ2h0KCkgKyBjaGlsZC5zY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0
VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBOdWxsb3B0KS52YWx1ZV9vcigwKSArIGNoaWxk
Lm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsK
IH0KIAogYm9vbCBSZW5kZXJHcmlkOjp1cGRhdGVPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpIGNvbnN0CkBAIC0xMTk5LDcg
KzExOTksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1Npemlu
Z0Z1bmN0aW9uc0Zvck5vblNwYW5uaW5nSXRlbXMoR3JpZAogICAgIH0gZWxzZSBpZiAodHJhY2tT
aXplLmhhc01heENvbnRlbnRPckF1dG9NYXhUcmFja0JyZWFkdGgoKSkgewogICAgICAgICBMYXlv
dXRVbml0IGdyb3d0aExpbWl0ID0gbWF4Q29udGVudEZvckNoaWxkKGdyaWRJdGVtLCBkaXJlY3Rp
b24sIHNpemluZ0RhdGEpOwogICAgICAgICBpZiAodHJhY2tTaXplLmlzRml0Q29udGVudCgpKQot
ICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JM
ZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgc2l6aW5n
RGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgIGdyb3d0aExp
bWl0ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQsIHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5maXRD
b250ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2Uo
KS52YWx1ZV9vcigwKSkpOwogICAgICAgICB0cmFjay5zZXRHcm93dGhMaW1pdChzdGQ6Om1heCh0
cmFjay5ncm93dGhMaW1pdCgpLCBncm93dGhMaW1pdCkpOwogICAgIH0KIH0KQEAgLTEzODcsOCAr
MTM4Nyw4IEBAIHN0YXRpYyBib29sIHNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbChjb25z
dCBHcmlkVHJhY2sqIHRyYWNrMSwgY29uc3QgR3JpZFRyCiAgICAgaWYgKHRyYWNrMUhhc0luZmlu
aXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcCB8fCB0cmFjazJIYXNJbmZpbml0ZUdyb3d0aFBv
dGVudGlhbFdpdGhvdXRDYXApCiAgICAgICAgIHJldHVybiB0cmFjazJIYXNJbmZpbml0ZUdyb3d0
aFBvdGVudGlhbFdpdGhvdXRDYXA7CiAKLSAgICBMYXlvdXRVbml0IHRyYWNrMUxpbWl0ID0gdHJh
Y2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlT3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKLSAg
ICBMYXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVl
T3IodHJhY2syLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlvdXRVbml0IHRyYWNrMUxpbWl0ID0g
dHJhY2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMS0+Z3Jvd3RoTGltaXQoKSk7
CisgICAgTGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGltaXRDYXAoKS52
YWx1ZV9vcih0cmFjazItPmdyb3d0aExpbWl0KCkpOwogICAgIHJldHVybiAodHJhY2sxTGltaXQg
LSB0cmFjazEtPmJhc2VTaXplKCkpIDwgKHRyYWNrMkxpbWl0IC0gdHJhY2syLT5iYXNlU2l6ZSgp
KTsKIH0KIApAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpkaXN0cmlidXRl
U3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9yPEdyaWQKIGJv
b2wgUmVuZGVyR3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQog
ewogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MgPSAoZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMpID8gc2l6aW5nRGF0YS5jb2x1bW5UcmFja3MgOiBzaXppbmdEYXRhLnJvd1RyYWNr
czsKLSAgICBjb25zdCBMYXlvdXRVbml0IG1heFNpemUgPSBzaXppbmdEYXRhLmF2YWlsYWJsZVNw
YWNlKCkudmFsdWVPcigwKTsKKyAgICBjb25zdCBMYXlvdXRVbml0IG1heFNpemUgPSBzaXppbmdE
YXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXpl
JiB0cmFja1NpemUgPSBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgaSwgc2l6aW5nRGF0YS5zaXpp
bmdPcGVyYXRpb24pOwogICAgICAgICBpZiAoY29tcHV0ZVVzZWRCcmVhZHRoT2ZNaW5MZW5ndGgo
dHJhY2tTaXplLCBtYXhTaXplKSA+IHRyYWNrc1tpXS5iYXNlU2l6ZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjU5NWMzNDMxMjQxMmQ1MDg3Y2IwY2My
MmM2MjAxYjBkODk2NjQxYS4uZmM5OGEzOWIyY2UwZmNkMTU5ZDEyNGU1MTE2MjI4YjdlZjQ4MjEx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00NDYzLDcg
KzQ0NjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9y
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBOb3cgZG8gYSBwYWlu
dCB3aXRoIHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUgdXMuCiAgICAgTGF5b3V0U2l6ZSBh
ZGp1c3RlZFN1YnBpeGVsT2Zmc2V0ID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6ZShk
ZXZpY2VQaXhlbFNuYXBwZWRPZmZzZXRGb3JUaGlzTGF5ZXIpOwotICAgIExheWVyUGFpbnRpbmdJ
bmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zZVJlY3RU
b0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0
b3IpKSwKKyAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyh0aGlz
LCBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnRE
aXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAogICAgICAgICBwYWludGluZ0luZm8ucGFp
bnRCZWhhdmlvciwgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCwgcGFpbnRpbmdJbmZvLnN1YnRyZWVQ
YWludFJvb3QsIHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzKTsKICAgICBwYWludExh
eWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZv
LCBwYWludEZsYWdzKTsKICAgICBjb250ZXh0LnNldENUTShvbGRUcmFuc2Zyb20pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGI3MTYzZTY2YjNjNmZm
MTE4NzcxYWM5ODkwOTc2YzNiM2JlNDY2ZmIuLjMwNmM1YTM5NDZlNDNlMjY4MGIwNGNlOWZjMzc2
ZDFjMzllNWMzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpc3RCb3g6Oml0ZW1Cb3Vu
ZGluZ0JveFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZQogdm9pZCBSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW0oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwgUGFpbnRGdW5jdGlvbiBwYWludEZ1bmN0aW9uKQogewogICAgIGlu
dCBsaXN0SXRlbXNTaXplID0gbnVtSXRlbXMoKTsKLSAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9
IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZU9yKG1f
aW5kZXhPZmZzZXQpOworICAgIGludCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RW
aXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhPZmZzZXQpOwog
ICAgIGludCBlbmRJbmRleCA9IGZpcnN0VmlzaWJsZUl0ZW0gKyBudW1WaXNpYmxlSXRlbXMoQ29u
c2lkZXJQYWRkaW5nOjpZZXMpOwogICAgIGZvciAoaW50IGkgPSBmaXJzdFZpc2libGVJdGVtOyBp
IDwgbGlzdEl0ZW1zU2l6ZSAmJiBpIDwgZW5kSW5kZXg7ICsraSkKICAgICAgICAgcGFpbnRGdW5j
dGlvbihwYWludEluZm8sIHBhaW50T2Zmc2V0LCBpKTsKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29s
IFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KGludCBpbmRl
eCkKIAogYm9vbCBSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUoaW50IGluZGV4KQog
ewotICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBh
ZGRpbmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9mZnNldCk7CisgICAgaW50IGZpcnN0SW5kZXgg
PSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3Io
bV9pbmRleE9mZnNldCk7CiAgICAgaW50IGVuZEluZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxl
SXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhCiAgICAgICAgID8gbV9pbmRleE9mRmlyc3RWaXNp
YmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhLnZhbHVlKCkgKyBudW1iZXJPZlZpc2libGVJ
dGVtc0luUGFkZGluZ0JvdHRvbSgpCiAgICAgICAgIDogbV9pbmRleE9mZnNldCArIG51bVZpc2li
bGVJdGVtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtblNldC5jcHAKaW5kZXggN2QyZmI0MzYyODE1NGI5NDI1NjZmOTk3ODljZjUwOGY1MmI0OTdh
ZC4uMjBjZjllYzAzZjJlNmJjOTJlMTc1YjkyZDIyZDNiNGVlZmEwYWZlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MTUs
NyArNDE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4
Q29sdW1uSGVpZ2h0KCkgY29uc3QKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUhlaWdodCA9IG11
bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5jb2x1bW5IZWlnaHRBdmFpbGFibGUoKTsKICAgICBMYXlv
dXRVbml0IG1heENvbHVtbkhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCA/IGF2YWlsYWJsZUhlaWdo
dCA6IFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQoKTsKICAgICBpZiAoIW11bHRp
Y29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG1heENv
bHVtbkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29t
cHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1h
eEhlaWdodCgpLCBOdWxsb3B0KS52YWx1ZU9yKG1heENvbHVtbkhlaWdodCkpOworICAgICAgICBt
YXhDb2x1bW5IZWlnaHQgPSBzdGQ6Om1pbihtYXhDb2x1bW5IZWlnaHQsIG11bHRpY29sQmxvY2st
PmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBtdWx0aWNvbFN0eWxlLmxvZ2lj
YWxNYXhIZWlnaHQoKSwgTnVsbG9wdCkudmFsdWVfb3IobWF4Q29sdW1uSGVpZ2h0KSk7CiAgICAg
cmV0dXJuIGhlaWdodEFkanVzdGVkRm9yU2V0T2Zmc2V0KG1heENvbHVtbkhlaWdodCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDRjMGI3YjM1M2Ix
ZGJlNDRlNzk1NzkyZDg2YWJlYzRmNzBjNDIwZWQuLjIwNjg2NDA2MmQzNjM1YWY4NDZkYWFkNDU0
NDVhMDRjMGJiNTM3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cApAQCAtMzczLDkgKzM3Myw5IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGU6OmNvbnZlcnRTdHls
ZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KGNvbnN0IExlbmd0aCYKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gc3R5bGVMb2dpY2FsSGVpZ2h0LnZhbHVlKCkgLSBib3JkZXJzOwogICAg
IH0gZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQot
ICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNh
bEhlaWdodCkudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9n
aWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpLnZhbHVlX29yKDApOwogICAgIGVsc2UgaWYg
KHN0eWxlTG9naWNhbEhlaWdodC5pc0ludHJpbnNpYygpKQotICAgICAgICByZXR1cm4gY29tcHV0
ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBs
b2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1
ZU9yKDApOworICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVp
Z2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQ
YWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1ZV9vcigwKTsKICAgICBlbHNlCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBMYXlvdXRVbml0KCk7CkBAIC0xNDY0
LDcgKzE0NjQsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjp1cGRhdGVGaXJzdExldHRlcihSZW5kZXJU
cmVlTXV0YXRpb25Jc0FsbG93ZWQpCiAKIGludCBSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPckNvbXB1dGUoWyZdIHsK
KyAgICByZXR1cm4gdmFsdWVPckNvbXB1dGUoZmlyc3RMaW5lQmFzZWxpbmUoKSwgWyZdIHsKICAg
ICAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYzAwY2JjYzk5
MTNkMTNkNzZmMTdhZmQ4MzJjODY4ZjJhYjc4ZWI5ZC4uZTFhN2VhYTc1OWFkMzMxNjliYTExMWEz
NWY5MTVhNGMxZThjNzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2Vs
bDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAgIC8vIDxodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxlcy5odG1sI2hlaWdodC1sYXlvdXQ+OiBU
aGUgYmFzZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNlbGluZSBvZgogICAgIC8vIHRoZSBmaXJz
dCBpbi1mbG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBvciB0aGUgZmlyc3QgaW4tZmxvdyB0YWJs
ZS1yb3cgaW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gSWYgdGhlcmUKICAgICAv
LyBpcyBubyBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJvdywgdGhlIGJhc2VsaW5lIGlzIHRoZSBi
b3R0b20gb2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxsIGJveC4KLSAgICByZXR1cm4gZmlyc3RM
aW5lQmFzZWxpbmUoKS52YWx1ZU9yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRM
b2dpY2FsSGVpZ2h0KCkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29y
KGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOwogfQog
CiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0NlbGxEaXJ0eVdoZW5Db2xsYXBzZWRCb3JkZXJDaGFu
Z2VzKFJlbmRlclRhYmxlQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZDg4NWU4ZTJjNjI1YzZkYzBiNWYyZGZmMTU3
OTM0M2VlNWVlNTEwZi4uODZmZmYxYjc1NDk2ZTAwNDQ4MzZmMDY2NDFmZWI2MWEzMzFhOGJiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAK
QEAgLTkzNCw3ICs5MzQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICAvLyBPbmx5IGNlbGxzIHdpdGggY29udGVu
dCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwgJiYgY2VsbC0+Y29udGVudExvZ2lj
YWxIZWlnaHQoKSkgewogICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHJvdW5kVG9JbnQoY2Vs
bC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+
Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChy
ZXN1bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5kaWRhdGUpOworICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlX29yKGNhbmRpZGF0ZSksIGNhbmRpZGF0ZSk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRl
eCA0NGExYzUyMDM5YjVkNDdmZmNkMmExYTdlMTZjNTU4MDE5MDFmZDA5Li42NTZiNzM0Nzg3Mzg3
YTgwM2I0MzIzNDEyZjI1N2MzMjQwM2Y5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8K
ICAgICAgICAgfQogICAgIH0KIAotICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhM
ZWZ0T3ZlcmZsb3cudmFsdWVPcihnbHlwaE92ZXJmbG93LmxlZnQpOworICAgIGdseXBoT3ZlcmZs
b3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVfb3IoZ2x5cGhPdmVyZmxvdy5s
ZWZ0KTsKIAogICAgIGlmICgobmVlZHNXb3JkU3BhY2luZyAmJiBsZW4gPiAxKSB8fCAoaWdub3Jp
bmdTcGFjZXMgJiYgIWZpcnN0V29yZCkpCiAgICAgICAgIGN1cnJNYXhXaWR0aCArPSB3b3JkU3Bh
Y2luZzsKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlS
ZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAKIFN0
cmluZ1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCwgT3B0aW9uYWw8
dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9w
LnZhbHVlT3IodGV4dExlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0b3Au
dmFsdWVfb3IodGV4dExlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQgPD0gbGVuZ3RoKCkpOwog
ICAgIEFTU0VSVChkZXN0aW5hdGlvbiA8PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9
IGRlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBlYzAyODY1MDcwNjZiMzE5YmM3N2YxNmQ1
OGY4MzBjZDk5ZmYzNGQ2Li41YTJhZDcyYmRmN2Q1ZDQzMTM5MWE0OThlYTY1ODVlNGI1YTdlNGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFp
CiAgICAgaWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgIT0gVGV4dERlY29yYXRp
b25Ob25lKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclRleHQqIHRleHRSZW5kZXJlciA9IGNoaWxk
cmVuT2ZUeXBlPFJlbmRlclRleHQ+KGZsb3cpLmZpcnN0KCk7CiAgICAgICAgIGlmICh0ZXh0UmVu
ZGVyZXIpIHsKLSAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlciA9IFRleHREZWNvcmF0
aW9uUGFpbnRlcihwYWludEluZm8uY29udGV4dCgpLCBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCgpLCAqdGV4dFJlbmRlcmVyLCBmYWxzZSk7CisgICAgICAgICAgICB0ZXh0RGVjb3JhdGlv
blBhaW50ZXIuZW1wbGFjZShwYWludEluZm8uY29udGV4dCgpLCBzdHlsZS50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpLCAqdGV4dFJlbmRlcmVyLCBmYWxzZSk7CiAgICAgICAgICAgICB0ZXh0RGVj
b3JhdGlvblBhaW50ZXItPnNldEZvbnQoc3R5bGUuZm9udENhc2NhZGUoKSk7CiAgICAgICAgICAg
ICB0ZXh0RGVjb3JhdGlvblBhaW50ZXItPnNldEJhc2VsaW5lKHN0eWxlLmZvbnRNZXRyaWNzKCku
YXNjZW50KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IDViMjExMmYzNWE0NmQzYjViNzEy
OWM5NTZlYWQyODg4NzkxYWJmNTkuLmE2NjZjOWI4NDllNTNkOTQ2MmQ2M2I4MDRjOTI3MGViOWIy
N2I1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgaW50IFJlbmRlck1hdGhNTEJs
b2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmly
c3RMaW4KICAgICBpZiAobGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JMaW5l
Qm94ZXMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5l
KCkudmFsdWVPcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CisgICAgcmV0dXJuIGZpcnN0
TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFz
ZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOwogfQog
CiAjaWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IDBlNzMzYjllYjEzNjQy
YTgxZjNiZmU0YTRkMmE3OThiMmFiNzAxZGQuLjk0YzJmNzEyNGUwNGJiMmM5YTY0ZThlY2M0MDkz
N2NjNmM4ZGYxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1M
QmxvY2sgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogCiAgICAgc3RhdGljIExheW91dFVuaXQgYXNj
ZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQubG9naWNhbEhlaWdodCgp
KTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hp
bGQubG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCmluZGV4IGVlYTRmMGQ4MzIwNmYzNDdiMTc3ZjczZjA3MjY1OGQwMTY2ZTY0MDMu
LmNjZGYyNGY5YzYxZTYyZDU5YTViYjg1YjdlY2FhYjdjYTlhZTc0NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTE3
Myw3ICsxNzMsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdAogICAgIGlmICghcG9pbnRJc0lu
c2lkZVZpZXdwb3J0Q2xpcChwb2ludEluUGFyZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50
KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCku
aW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFy
ZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgq
dGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmlu
ZGV4IDJiZjA4NmZjMWYzMDc5ODM1OWJkNjc2OGE2Mzg0YWYwOTlkNTczZDAuLjEwOTVkMjRlMTEy
MTliNjIyN2M4YzJkNjllMTZmMzE3NGM1YTEwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAtMTgzLDcg
KzE4Myw3IEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0RmxvYXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24g
IT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0
UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIC8vIEVhcmx5IGV4aXQg
aWYgbG9jYWwgcG9pbnQgaXMgbm90IGNvbnRhaW5lZCBpbiBjbGlwcGVkIHZpZXdwb3J0IGFyZWEK
ICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykgJiYgIW1f
dmlld3BvcnQuY29udGFpbnMobG9jYWxQb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDE1ODQ3NjE5YTcxM2FkZTUwMDBmNGJl
YzY3ZTU4Y2NkMzdjMDExZjYuLjBkY2I5MTgwNzFkODExYTk1MmI2N2Y4MTMxMzY4YzViOTM4NGIw
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBQb2lu
dGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfSU1B
R0VfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJv
b2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpOwogICAgIGlm
IChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7Ci0gICAgICAgIEZsb2F0
UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFs
dWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwog
ICAgICAgICAgICAgCiAgICAgICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBw
aW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHAKaW5kZXggYjVjYmRlNmE4ZTE1ZDhiMjkyMWJmYzFiZDhkZjlmMGNhZDRj
YWEzNi4uNWQ4MzVmZTE3MDZkODkzMDBkZWFjYWU3MjVhMWYxMDEwZGRkOGI1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcApAQCAtMjY3LDEwICsyNjcsMTAgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4K
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC54KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7CiAg
ICAgICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgo
KSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBwb2ludCA9IHRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOwor
ICAgICAgICBwb2ludCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KHBvaW50KTsKICAgICB9CiAKLSAgICBwb2ludCA9IGNsaXBQYXRoRWxl
bWVudCgpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOworICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50
KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOwogCiAgICAgZm9yIChOb2RlKiBjaGlsZE5vZGUgPSBj
bGlwUGF0aEVsZW1lbnQoKS5maXJzdENoaWxkKCk7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hp
bGROb2RlLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBjaGlsZE5vZGUtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGE0OTA0NjRiNzll
YTJmZDkzMDcwNTg1NGY5NWQzMDZkZDhhNWEwNmUuLmNkNWJmNzVmNmEwMDU5ODk0NmNhYzM2ZGU4
YmQxNTg4OTlmODkzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIEdyYXBoaWMKIAogICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBsYXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkg
ewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFi
c29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1
dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKICAg
ICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS0+ZmlsdGVy
LT5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+Zmls
dGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1h
Z2VCdWZmZXIoKnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4
IDFhY2E0ZTUwY2UxYjgzYTM3YTcyYWEzN2UwYWU1NTNiZDllNGY0ZjAuLjM1OWZkNGJhY2JjZDg3
NTYyOWU3MWE5ZjI2MjlhZmEwZmUzNjU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgUmVuZGVy
U1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bHQmIHJlCiAgICAgLy8gT25seSB0ZXN0IFNWRyBjb250ZW50IGlmIHRoZSBwb2ludCBp
cyBpbiBvdXIgY29udGVudCBib3guCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGlu
dGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRlc3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9k
ZUF0RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJveFJlY3QoKS5jb250YWlucyhwb2ludElu
Qm9yZGVyQm94KSkgewotICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFy
ZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOworICAgICAgICBGbG9hdFBvaW50IGxvY2Fs
UG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsKIAogICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbm9k
ZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQgaGl0IHRlc3RzIHlldC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5k
ZXggZmU5MTIyNjRiMjM4ZmQ3MzI4NzM1Y2E3ZGNiZWJiMjY1NmRlYTUxMy4uNzUwMjQwZTUzNTg0
ZGU3YWYwOGRhOTJkY2RlMjY2NmI3OGUzODUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCBib29sIFJl
bmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdQogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3Jv
dW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQg
PSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xv
Y2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQocG9pbnRJblBhcmVudCk7CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5D
bGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCAy
YmFiN2E3ZmMwYTI0MzBjMzBlODZkMjU2MDEwYzAzN2MwNDgyY2JjLi44NzA4ZjRiMzk3ZjE1MjFi
ODQyMzA5YmRkMGQ2YTAxNDUzOGVhNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFJlbmRlclNW
R1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bAogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxl
KSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2Z1N0
eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAg
ICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNGaWxs
KCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSkpIHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgICAgICBG
bG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAog
ICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0
aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAK
aW5kZXggNGM3ZGNjMmM3NzkzN2UyNzhmZTM5NDlkYzc2NjBiZTljNTE1YjFmZC4uYWY4MTBmZGVk
MjY1ODM3OTllNDI2YWY2YjA4OTE2OWJjOGJiNjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAg
dm9pZCBTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhTaGFkb3dzKGNv
bnN0IFJlbmRlckVsZW1lbnQmIHJlbmQKICAgICBpZiAobG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaXNJ
ZGVudGl0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gcm9vdFRv
TG9jYWxUcmFuc2Zvcm0gPSBsb2NhbFRvUm9vdFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHJvb3RUb0xvY2FsVHJhbnNm
b3JtID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKTsKICAgICByZXBhaW50UmVjdCA9IHJvb3RUb0xvY2FsVHJhbnNmb3JtLm1hcFJlY3Qo
cmVwYWludFJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0ZjM1ZWQ5ZWFhMDM5MTM0ZTcwYzhjZTIz
MTk1ODVjY2RmOWQ5Njk1Li5jNGIzYWFjNWJmZDFjZThjYzU2NjFjOGRiYmJlNGM1MzI0NjdlZGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQog
CiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUg
Y29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAg
IC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBh
YnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4dC5jb25jYXRDVE0o
YWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsK
KyAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKICAgICBjb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCpp
bWFnZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKICAgICBjb250ZXh0LmNvbmNhdENUTShh
YnNvbHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRD
b252ZXJzaW9uLmNwcAppbmRleCBhZWU5NDdjMDEzNmQ5YzYwY2UwMjVjYjkzNzE3ZjM0YTFmOTI4
NTkxLi5kMjM3MmZmYmFmMDA2MTUxYzBkMDY0MDFiZmVjZmJmOTIyZDQwOWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCkBAIC0xMzExLDcgKzEz
MTEsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChj
b25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZwogICAgIGlmIChnbHlwaEJvdW5kaW5nQm94
KQogICAgICAgICBtX21pblJpZ2h0U2lkZUJlYXJpbmcgPSBzdGQ6Om1pbihtX21pblJpZ2h0U2lk
ZUJlYXJpbmcsIGhvcml6b250YWxBZHZhbmNlIC0gZ2x5cGhCb3VuZGluZ0JveC52YWx1ZSgpLm1h
eFgoKSk7CiAKLSAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCksIGds
eXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3Vu
ZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOworICAgIG1fZ2x5cGhz
LmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFs
QWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlX29yKEZsb2F0
UmVjdCgpKSwgY29kZXBvaW50cykpOwogfQogCiB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6
YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQpAQCAtMTQzNSw3ICsxNDM1LDcgQEAgU1ZHVG9PVEZGb250
Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZv
bnRFbGVtZW50KQogICAgICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudChnbHlwaEVsZW1lbnQs
ICZnbHlwaEVsZW1lbnQsIGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZGVmYXVsdFZlcnRpY2Fs
QWR2YW5jZSwgdW5pY29kZUF0dHJpYnV0ZSwgYm91bmRpbmdCb3gpOwogICAgIH0KIAotICAgIG1f
Ym91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKTsKKyAgICBtX2Jv
dW5kaW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVfb3IoRmxvYXRSZWN0KCkpOwogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwMTAwMAog
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8yMDA4NjIyMz4gQ29jb2EgaGFzIGEgYnVnIHdoZXJlIGds
eXBoIGJvdW5kaW5nIGJveGVzIGFyZSBub3QgY29ycmVjdGx5IHJlc3BlY3RlZCBmb3IgZnJ1c3R1
bSBjdWxsaW5nLiBXb3JrIGFyb3VuZCB0aGlzIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDQ4YmJkMzBkNzc2
N2JjYTU1MmZhMDgxMDUyZTAyMGYxZTAxYzNjMTQuLmM3NjdkOWJlMDQ1MDEyMDZkNDAyZjZmYThm
OTllYTg0YWY2YzE3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC05MCw3ICs5MCw3IEBAIC0gKE5TU3RyaW5n
ICopc3RyaW5nVmFsdWUKIAogLSAodW5zaWduZWQgc2hvcnQpcG9ydAogewotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCkudmFsdWVP
cigwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2
YXRlKS0+cG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBGSVhNRTogT3ZlcnJpZGluZyBpc0Vx
dWFsOiB3aXRob3V0IG92ZXJyaWRpbmcgaGFzaCB3aWxsIGNhdXNlIHRyb3VibGUgaWYgdGhpcyBl
dmVyIGdvZXMgaW50byBhbiBOU1NldCBvciBpcyB0aGUga2V5IGluIGFuIE5TRGljdGlvbmFyeSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA3ODRhYWNkZTA0ZTRi
NzYwZGM5ZmVlOWFmYzkxYmY2YjA3MDczMzM4Li4yNzgzOGNjYjM5ODM5ZGYyYTE5ZWRhNGM3Mjdj
YjE4YjZlNzhlN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9y
aWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6cG9ydChfT3V0XyB1
bnNpZ25lZCBzaG9ydCogcmVzdWx0KQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1
ZU9yKDApOworICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5T3JpZ2luLT5wb3J0KCkudmFsdWVfb3Io
MCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCBkNGFhMDEzYTM4OWE5ZDQxNzQ2
NDE1NTlmM2FlNzFlNWZhYTA3MDY3Li44ZGY4ZmZhYWI3YzRmYTc4ODY0NWUxNzdmZWI2YzE1MWI3
YTMzYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0
eU9yaWdpblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW5SZWYuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlP
cmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogCiB1bnNp
Z25lZCBzaG9ydCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChXS1NlY3VyaXR5T3JpZ2luUmVmIHNl
Y3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiB0b0ltcGwoc2VjdXJp
dHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogLy8g
Rm9yIGJhY2t3YXJkcyBBQkkgY29tcGF0aWJpbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKaW5k
ZXggN2VhNmE5OGU2NDAxMTc0MWM0ZTNjNGY5ZGM2ZmE3ODM1ZGMzZmIzMC4uNTkwNjkxYjhjYzNi
Mzk0ZGZiNmNmMTAwMjNjYTE2ZGU5Y2EzY2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTEwMSw5ICsxMDEsOSBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VE
ZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUgogCiAgICAgICAgICAgICBk
ZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0T3JpZ2luS2V5
KCkpLT5zdHJpbmcoKSwgb3JpZ2luKTsKICAgICAgICAgICAgIGlmIChvcmlnaW5EZXRhaWxzLmNy
ZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpE
b3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZS52YWx1ZU9yKDApKSk7Cisg
ICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUo
b3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVfb3IoMCkpKTsKICAgICAgICAgICAgIGlm
IChvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWls
c01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRp
bWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMubW9k
aWZpY2F0aW9uVGltZS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5z
ZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXko
KSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMubW9kaWZpY2F0
aW9uVGltZS52YWx1ZV9vcigwKSkpOwogCiAgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBw
ZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUoZGV0YWlsc01hcCkpKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nl
Y3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nl
Y3VyaXR5T3JpZ2luLm1tCmluZGV4IGM1NTQzYTIwYjcxZThjOTc2ZTIxMjJiOWI0YmVhNDhiMzc1
MWZjNzAuLmI3MTEyY2VlMTdiZGNjMjY5YmM5ZjllMjcxZDI0MDJkYTIxNjY4MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmln
aW4ubW0KQEAgLTU4LDcgKzU4LDcgQEAgLSAoTlNTdHJpbmcgKilob3N0CiAKIC0gKE5TSW50ZWdl
cilwb3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5w
b3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9y
aWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCmluZGV4IDU3OWFmYWZhOGIyNjZkNTcyZmRkNmU4NDE2ZmJhZjJjMzMy
OTFkZjAuLjc0MWM2YzEzY2UwN2E4NmYzYWVlYWEzNmM5NWUxMmE5YzJkM2M0ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RlY2ltYWxOdW1iZXI+IHRvRGVjaW1hbE51bWJl
cihpbnQ2NF90IHZhbHVlKQogCiBzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVt
PiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpM
aW5lSXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRl
bUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVj
aW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFsdWVPcigwKSkuZ2V0KCkgdHlwZTp0b1BLUGF5
bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CisgICAgcmV0dXJuIFtnZXRQS1Bh
eW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFi
ZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFsdWVfb3IoMCkpLmdl
dCgpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwogfQog
CiBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01lcmNoYW50Q2FwYWJpbGl0aWVzKGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYgbWVyY2hh
bnRDYXBhYmlsaXRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMjdiMWYxNjBkOGY3
OGY3ZWFmNTVkZDFkODMzYTdkMTJlZDk3OTZhMS4uMjIzZjBjYjJlN2RhZGNhOTM4ZDU1MzUzMTUy
ZGY3YTU0MDQ2ODlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNDcsNyArNDcsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVy
cm9yTmFtZUFuZERldGFpbHNTZXBhcmF0b3IgPSAiOyI7CiAKIC8vIE1ha2Ugc3VyZSB0aGUgcHJl
ZGVmaW5lZCBlcnJvciBuYW1lIGlzIHZhbGlkLCBvdGhlcndpc2UgdXNlIEludGVybmFsRXJyb3Iu
Ci0jZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJpbmcp
LnZhbHVlT3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJ
bnRlcm5hbEVycm9yKQorI2RlZmluZSBWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmlu
ZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+
KGVycm9yU3RyaW5nKS52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpF
cnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpCiAKIC8vIElmIHRoZSBlcnJvciBuYW1lIGlzIGlu
Y29ycmVjdCBmb3IgdGhlc2UgbWFjcm9zLCBpdCB3aWxsIGJlIGEgY29tcGlsZS10aW1lIGVycm9y
LgogI2RlZmluZSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShlcnJvck5hbWUpIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OmVycm9yTmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAK
aW5kZXggZjJhMjg5ODliMjIzNzhkMDJlYzliNjU5YTI0NmVhNzVjNmZlYjA0Ni4uMTlhYTc0OTky
NDdiMTc0OThiNGUxODMxMWY5ZGFkZjVhMzdmMjQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0
ZSBiYWNrRm9yd2FyZExpc3RTdAogICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
KSwgbV9wYWdlLT5wYWdlSUQoKSkpOwogICAgIH0KICAgICBtX2hhc0N1cnJlbnRJbmRleCA9ICEh
YmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4OwotICAgIG1fY3VycmVudEluZGV4ID0g
YmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZhbHVlT3IoMCk7CisgICAgbV9jdXJy
ZW50SW5kZXggPSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWVfb3IoMCk7
CiAgICAgbV9lbnRyaWVzID0gV1RGTW92ZShpdGVtcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IGQ3ZjdiNDcwYTQ3MTFiNTdhYmRhNzc3ZjQzZTNl
ZWFmNGRiZTQ1MTcuLjdmZGIzM2I1MzYzNjllYTQ2YWQ3MDdiN2M1OWYwMzYxM2ExYmZkYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtMzQ4LDcgKzM0OCw3
IEBAIHZvaWQgV2ViVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlCiAKIEFmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0
cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAogewotICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5l
KCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIHJldHVybiB0cmFu
c2Zvcm1Ub1NjZW5lKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKIH0K
IAogQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmcuY3BwCmluZGV4IDAxNmM2YjkzMzQ2NTNjZmVhMjI5MGIyMTY1MDBhYjAwOTIxYmRl
NmYuLjY3ZWFhMGQ1NGQyZDM3N2Q0MDM5MmNmZjVjM2NkMzQ4YTI2ZGUxZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5jcHAKQEAgLTI4Miw4ICsyODIsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVGb3JtRGF0YUVs
ZW1lbnQoSGlzdG9yeUVudHJ5RGF0YUVuY29kZXImIGVuY29kZXIsIGNvbnN0IEhUVFBCbwogICAg
ICAgICBlbmNvZGVyIDw8IGZhbHNlOwogCiAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxl
U3RhcnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoLTEp
OwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOworICAg
ICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcigtMSk7CisgICAgICAg
IGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29y
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVn
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQ
REZQbHVnaW4ubW0KaW5kZXggNWVkZTU2ZWVlNDBhY2ZkYjk5MDExOWRlN2FjZTkxOGU2NzhiYzY2
Ni4uZjk2MWEzNTkxNTQxMTU3MTQ3OGQ0MDc0NDQyMTM0NGFmOWEwOGM1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRl
ZFBERlBsdWdpbi5tbQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgSW50UG9pbnQgUERGUGx1Z2luOjpj
b252ZXJ0RnJvbVJvb3RWaWV3VG9QbHVnaW4oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAog
SW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IElu
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludEluUGx1Z2luQ29vcmRp
bmF0ZXMocG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkpOwotICAgIHJldHVy
biBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0dXJu
IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiB9CiAKIEZsb2F0
UmVjdCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKQEAgLTEyMDcsNyArMTIwNyw3IEBAIEZsb2F0UmVjdCBQREZQbHVnaW46
OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCiAgICAgRmxvYXRQb2ludCBvcmlnaW5JblBs
dWdpbkNvb3JkaW5hdGVzKHJlY3QueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSByZWN0LnkoKSAtIHJl
Y3QuaGVpZ2h0KCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0g
bV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBSZWN0KEZsb2F0UmVjdChvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0
LnNpemUoKSkpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9y
b290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcywgcmVjdC5z
aXplKCkpKTsKIAogICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5jbG9z
aW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CkBAIC0xMjIwLDcgKzEy
MjAsNyBAQCBJbnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUoKSk7Ci0gICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoYm91bmRzKTsKKyAgICBGbG9hdFJlY3QgcmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoYm91bmRzKTsKICAgICByZXR1cm4g
ZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QocmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcykpOwogfQogCkBAIC0xMjMwLDcgKzEyMzAsNyBAQCB2b2lkIFBERlBsdWdp
bjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50
UmVjdCYsIGNvbgogICAgICAgICByZXR1cm47CiAKICAgICBtX3NpemUgPSBwbHVnaW5TaXplOwot
ICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIG1fcm9vdFZpZXdU
b1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0
RnJhbWVTaXplOnBsdWdpblNpemVdOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpp
bmRleCBkYjRlYzNlNDEyOTlmNjkyOTYxZjc0ZGQyMTZjOTdjNmRhNDYxMjM1Li43ZWZhMDc0MzQ0
MzU2MTk4MjI0MTAyMDAxZjk3OTU4MDRmYTJmM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTMyLDcgKzkzMiw3IEBA
IEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiB2b2lkIFBERlBsdWdp
bjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkK
IHsKICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtOwotICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZp
ZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIG1f
cm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICBtX3NpemUgPSBwbHVnaW5T
aXplOwogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUo
KS0+dmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggMWNh
N2Y0NDk3YTc5OGIzZTVkZWQ0YWVlYjE4ZWFjYzJmMTlhYTc3MS4uMjhmNzU3ZmZlMGI0MzQ2ZjI2
Mzc5OWYwNDdmNzYxNDdiNjg0NGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNp
b24uY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHRv
Rm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6RmlsZToKLSAgICAgICAgICAg
IGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxl
U3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZU9yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZp
bGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVPcihpbnZhbGlk
RmlsZVRpbWUoKSkpOworICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVt
ZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVl
X29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUudmFsdWVfb3IoaW52YWxpZEZpbGVUaW1lKCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGI4ZWQ5ZWIyYTIwZjU1MGUzOGY2NDg4
YTQ5MDZkYzUyM2JjMjI0NDcuLmJkZTY2MmI2NDU1NDk4MDkwMWVlZjM1YzgyMWFiYjc1ZmI3Njky
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlv
bmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGEKICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0ZW5zaW9u
VHJhY2tlcigpLmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChtX2ZyYW1lKTsKIAogICAgIC8vIE5v
dGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRM
b2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2Fk
ZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVy
biBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgp
LT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5u
YXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2Zy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29tcHV0ZShkb2N1
bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBDZXJ0
aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1Bs
dWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZTliYmIy
YmE3OTk0MTBiM2IwNjQ2NDhjMTQ5ODU5OWEzZGUxMTlmMy4uZTE4YTk3ODlmMWFkMzY4N2ExYWM5
YmMxMDRiNDRkYmQyYjUwYjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC00MjAsNyArNDIwLDcgQEAgQ2VydGlmaWNhdGVJbmZvIFdl
YkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogICAgIGlmICghZG9jdW1lbnRMb2FkZXIp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuY2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2VydGlm
aWNhdGVJbmZvKCk7IH0pOworICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJ
bmZvKCk7IH0pOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTVmMGJlMDlh
YjRmZmZjYjcxYTAxODNjMTg5YWY4MThjZWEzNTNkZS4uZTRlY2E1M2QzMDcxZmViYmYwMGE3Nzlk
OWNkOTkzM2NjMjRhNGEzOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTEwLTMxICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlv
bmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxOTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6
dmFsdWVfb3IuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp0ZXN0UGFyc2VIVE1MSW50ZWdlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0
ZXN0UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOgorCiAyMDE2LTEwLTMwICBT
YW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dlYklETF0gUmVzdHJ1Y3R1
cmUgSURMUGFyc2VyIHN0cnVjdHMgdG8gYmV0dGVyIG1hdGNoIG1vZGVybiBXZWJJREwgY29uY2Vw
dHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcAppbmRleCBhMDcx
NWZkNjJmZTc2YzEwMmM0NDNhMWM3NzQ2ZjZkNGI4OGM3NGJiLi4wNzU3NWIxNjkwYmM4YWI0YmVm
NzQyM2IzOTc1MzI0OTU0ODczZGZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9PcHRpb25hbC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
T3B0aW9uYWwuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFj
aykKIHsKICAgICBib29sIGNhbGxlZCA9IGZhbHNlOwogICAgIE9wdGlvbmFsPGludD4gYTsKLSAg
ICBpbnQgcmVzdWx0ID0gYS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgIGludCByZXN1bHQgPSB2
YWx1ZU9yQ29tcHV0ZShhLCBbJl0gewogICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAgICAgICBy
ZXR1cm4gMzAwOwogICAgIH0pOwpAQCAtODUsNyArODUsNyBAQCBURVNUKFdURl9PcHRpb25hbCwg
Q2FsbGJhY2spCiAKICAgICBhID0gMjUwOwogICAgIGNhbGxlZCA9IGZhbHNlOwotICAgIHJlc3Vs
dCA9IGEudmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICByZXN1bHQgPSB2YWx1ZU9yQ29tcHV0ZShh
LCBbJl0gewogICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMzAwOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwCmluZGV4IDBmMWMwMmQ5ZTZjYTg1YzA5Y2I0OTZjYjM3ZjEyYzI5OWY1
OGZlZjguLjZlOWU3MzhhYjViY2UxZGZhYmZiNDJmNjBlYjdiMmYyYjY0NWNiNGYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9t
cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGludCB0ZXN0UGFyc2VIVE1MSW50ZWdlcihj
b25zdCBTdHJpbmcmIGlucHV0KQogewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhU
TUxJbnRlZ2VyKGlucHV0KTsKICAgICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAg
ICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxS
ZXN1bHQudmFsdWVfb3IoMCk7CiB9CiAKIHN0YXRpYyBib29sIHBhcnNlSFRNTEludGVnZXJGYWls
cyhjb25zdCBTdHJpbmcmIGlucHV0KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyB1bnNpZ25l
ZCB0ZXN0UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7
CiAgICAgYXV0byBvcHRpb25hbFJlc3VsdCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihp
bnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7Ci0gICAgcmV0dXJuIG9w
dGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVl
X29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXJGYWls
cyhjb25zdCBTdHJpbmcmIGlucHV0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyLmNwcAppbmRleCA0N2NkMDcyOTdiNDlkZDg2ZjQ4ZTA1YzZmMmU1NWE3
NTcxZWI1ZDhiLi4xMWFhYzY4NDRlZmViM2ZiNjdhNzU4NTNiMDA1NThmN2Y5MTZkOGI2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcApAQCAt
OTgsNyArOTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNz
d29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5o
b3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDAp
KTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTEwOCw3ICsxMDgs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
RXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwg
b2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIG9sZFVSTC5o
b3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9y
KDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigw
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsK
QEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3Qs
IHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1
ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigw
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTM2NCw3
ICszNjQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNz
d29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIG9s
ZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52
YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1
ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgb2xkVVJMLnBhdGgoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2Vz
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9y
dCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwg
dXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0
aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwu
cXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBh
cnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnVzZXIsIG9sZFVSTC51c2VyKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAg
ICBFWFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAg
ICBFWFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzT2xkLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzT2xkLmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkp
KTsKQEAgLTUyNSw3ICs1MjUsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVy
ZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwg
dXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJs
LnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwg
dXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVl
cnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpKTsKQEAgLTUzNSw3ICs1MzUsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1Jl
bGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBF
WFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBF
WFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzT2xkLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzT2xkLmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsK
QEAgLTExODcsNyArMTE4Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zCiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9z
dCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZh
bHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29y
KDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTIx
Myw3ICsxMjEzLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigw
KSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293406</attachid>
            <date>2016-10-31 01:53:20 -0700</date>
            <delta_ts>2016-10-31 10:55:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031014925.patch</filename>
            <type>text/plain</type>
            <size>159596</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi45ZDcyODM1ZjA5OTY3ZDI4
MDU5OWJlZjViY2EyM2FhYjNiNzFlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1w
bGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgUHJldmlvdXMgV1RGOjpPcHRpb25hbDo6b3BlcmF0b3I9IGlzIG5vdCBjb21wYXRpYmxl
IHRvIHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yPS4KKyAgICAgICAgc3RkOjpvcHRpb25hbDo6ZW1w
bGFjZSBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91cyBvbmUuCisgICAgICAg
IFNvIHdlIGNoYW5nZSB0aGUgY29kZSB0byB1c2UgaXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIFVzZSB2YWx1ZV9vciBp
bnN0ZWFkIG9mIHZhbHVlT3IuCisKIDIwMTYtMTAtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJpbmdpZnkgc2hvdWxkIGhh
bmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJheSBpcyB0cnVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAuLjU5NDQzYWQ0OTY4YThi
NjU4YjdhNmY4MmQ0NTEyZThlZjRjN2JkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTYtMTAt
MzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dU
Rl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6
T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZmZlcmVkIGJ5
IHRoZSBDKysxNworICAgICAgICBvcmlnaW5hbCBwcm9wb3NhbCBwYXBlci4gSXQgaGFzIHRoZSBz
YW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eQorICAgICAgICB0byB0aGUgQysrMTcncyBv
bmUuIFByZXZpb3VzIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFsaXRpZXMu
CisgICAgICAgIFRoZSBsYXJnZXN0IG9uZSBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIgY29uc3Ry
dWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBPcHRpb25h
bDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluIFdlYktpdC4KKworICAgICAg
ICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3RydWN0b3JzLiBTbyBvbmx5
IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhlIHdheSB0byB1c2UgV1RG
OjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGdsb2JhbCB2YXJpYWJsZXMu
IFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBhbmQKKyAgICAgICAgd2Ug
d291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFyaWFibGVzIHRoYXQgaW5j
bHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBpcyB0aGUgbWFpbiBtb3Rp
dmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGFsbG93cyB0
aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAgICAgIHNpZ25hdHVyZXMg
YXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAgICAgV2UgaW1wb3J0IHRo
ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIGluc3RlYWQgb2YgTExWTSBsaWJjKysncyBv
bmUuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBMTFZNIGxpYmMrKydzIG9uZSBkZXBlbmRzIG9u
IG1hbnkgbWFjcm8gYW5kIHR5cGVfdHJhaXRzCisgICAgICAgIG9mZmVyZWQgYnkgbGliYysrIGlt
cGxlbWVudGF0aW9uLiBBbmQgYWRvcHRpbmcgaXQgdG8gV2ViS2l0IHJlcXVpcmVzCisgICAgICAg
IGxhcmdlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGlzIHJlZmVyZW5jZSBpbXBsZW1lbnRh
dGlvbiBvbmUuCisgICAgICAgIFRvIGtlZXAgdGhlIHRoaW5nIHNpbXBsZSwgd2UgaW1wb3J0IHRo
ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIG5vdy4KKyAgICAgICAgT25jZSBDKysxNyBp
cyByZWxlYXNlZCBhbmQgd2UgdXBkYXRlIHRoZSBjb21waWxlciBiYXNlbGluZSwgd2UgY2FuIHNt
b290aGx5CisgICAgICAgIHN3aXRjaCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIHN0ZDo6b3B0
aW9uYWwuCisKKyAgICAgICAgQW5kIHdlIGFsc28gYWRkIHZhbHVlT3JDb21wdXRlIGhlbHBlciBm
dW5jdGlvbi4gVGhhdCBrZWVwcyB0aGUgZXh0ZW5kZWQKKyAgICAgICAgZnVuY3Rpb25hbGl0eSB0
aGF0IHByZXZpb3VzIFdURjo6T3B0aW9uYWwgaGFzLgorCisgICAgICAgICogd3RmL09wdGlvbmFs
Lmg6CisgICAgICAgIChXVEY6OmlzX2Fzc2lnbmFibGU6Omhhc19hc3NpZ24pOgorICAgICAgICAo
V1RGOjpkZXRhaWxfOjpoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y6Omhhc19vdmVybG9hZCk6Cisg
ICAgICAgIChXVEY6OmRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YpOgorICAgICAgICAoV1RGOjpk
ZXRhaWxfOjpjb252ZXJ0KToKKyAgICAgICAgKFdURjo6bnVsbG9wdF90OjpudWxsb3B0X3QpOgor
ICAgICAgICAoV1RGOjpiYWRfb3B0aW9uYWxfYWNjZXNzOjpiYWRfb3B0aW9uYWxfYWNjZXNzKToK
KyAgICAgICAgKFdURjo6b3B0aW9uYWxfYmFzZTo6b3B0aW9uYWxfYmFzZSk6CisgICAgICAgIChX
VEY6Om9wdGlvbmFsX2Jhc2U6On5vcHRpb25hbF9iYXNlKToKKyAgICAgICAgKFdURjo6Y29uc3Rl
eHByX29wdGlvbmFsX2Jhc2U6OmNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKToKKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6OmRhdGFwdHIpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6Y29udGFpbmVk
X3ZhbCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpfX05PRVhDRVBUXyk6CisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRv
cj0pOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZW1wbGFjZSk6CisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpvcGVyYXRvciAtPik6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvciAq
KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6OnZhbHVlKToKKyAgICAgICAgKFdURjo6T3B0aW9u
YWw6OnZhbHVlX29yKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6
Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjwpOgorICAgICAgICAoV1RGOjpv
cGVyYXRvcj4pOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I+PSk6CisgICAgICAgIChXVEY6Ol9fTk9FWENFUFRfKToKKyAgICAgICAgKFdURjo6bWFr
ZU9wdGlvbmFsKToKKyAgICAgICAgKHN0ZDo6aGFzaDxXVEY6Ok9wdGlvbmFsPFQ+Pjo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChXVEY6Ok51bGxvcHRUYWc6Ok51bGxvcHRUYWcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6fk9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6Om9wZXJhdG9yIGJvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRp
b25hbDo6b3BlcmF0b3ItPik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVy
YXRvciopOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9yQ29tcHV0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6Ok9wdGlvbmFsOjphc1B0cik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpkZXN0cm95KTogRGVsZXRlZC4KKwogMjAxNi0xMC0zMCAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIEhhcmZCdXp6IG90LW1hdGggQVBJIHRv
IHBhcnNlIHRoZSBPcGVuVHlwZSBNQVRIIHRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ExMWNjOGMzOGQ4
Yzk4MGI2ZDhmZjc4MTkwMzc2Mzk3MTU4NTNiNS4uOTYzOTY3ZGYxODgwZjk2M2IyYTBiNmFjODc0
MWE0M2EzODEyNWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAxNi0xMC0zMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJ
bXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRp
b25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHZhbHVlT3IgdG8gdmFsdWVfb3IuIFRoaXMgaXMgc3BlY2lmaWVkIGluIEMrKzE3IHByb3Bv
c2FsLgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6ZW1wbGFjZS4gQysrMTcgT3B0aW9uYWw6Om9w
ZXJhdG9yPShPcHRpb25hbCYmKSByZXF1aXJlcworICAgICAgICBlaXRoZXIgY29weSBhc3NpZ25t
ZW50IG9wZXJhdG9yIG9yIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4gQnV0CisgICAgICAgIERG
Rzo6SlNWYWx1ZU9wZXJhbmQgZXRjLiBvbmx5IGRlZmluZXMgbW92ZSBjb25zdHJ1Y3RvcnMgYW5k
IGRyb3AKKyAgICAgICAgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKworICAg
ICAgICBJdCB3YXMgT0sgaW4gdGhlIHByZXZpb3VzIFdURjo6T3B0aW9uYWwgc2luY2UgaXQgYWx3
YXlzIHVzZXMgbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMuIEJ1dCBpdCBpcyBub3QgdmFsaWQg
aW4gQysrMTcgT3B0aW9uYWwuIFdlIHVzZSBPcHRpb25hbDo6ZW1wbGFjZQorICAgICAgICBpbnN0
ZWFkLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHByZXZpb3Vz
IFdURjo6T3B0aW9uYWwncworICAgICAgICBvcGVyYXRvcj0uCisKKyAgICAgICAgTm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0
Y2gpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnREVE1G
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlz
ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnN3YXApOgorICAg
ICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkpOgorICAgICAgICAq
IGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6ZG91YmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
T2JzZXJ2ZXI6Om9ic2VydmUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4
dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2VJbnRl
cm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZs
aWdodCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6ZGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmRlYnVnU3RyaW5n
KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVz
dFNlbGVjdGlvblJlY3RGb3JUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVy
Qm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9P
dXRwdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjptYXBBYnNv
bHV0ZVBvaW50VG9Mb2NhbFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFu
c2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybVN0YXRlOjptYXBRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFuc2Zv
cm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNp
emVGb3JNaW5BbmRNYXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0R3Jvd3RoTGltaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZH
cmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pblNpemVGb3JDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJh
Y2tTaXppbmdGdW5jdGlvbnNGb3JOb25TcGFubmluZ0l0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6
OnNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmll
dyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxCbG9jazo6YXNjZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRh
aW5lcjo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25P
YmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0
VGVzdENsaXBDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
Ojpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
VGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmludGVy
c2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250
ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9j
ZXNzR2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRl
cjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKwogMjAxNi0xMC0zMCAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGZpeDogQ29ycmVjdCBD
aGFuZ2VMb2cgYWZ0ZXIgbXkgYmFkIG1lcmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGNmNmFlNjFk
OTk0NTRiYzBiOTkwMTgxZWI0NGIyYjMzMzQyNWRjMzUuLmFmOGI3ZTk1ZDRiNWZhOGYwOTczNjVm
NmQ5YjliN2Y4MTZjZDJmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ni0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2lu
IHBvcnRdKToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAsIGFuZCBET01TdHJpbmdNYXAgZnJv
bSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDFhNjZhZjcw
NWYwZjZlMDgyN2M3ZDA4N2E2YTlkYjU3ODYzZWYyMDcuLjFkNTJlNmM1ZjI4YzVkOWY1MTRjYTlh
ZTRlMDc4NTBhMTU1YzhlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Ni0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogV2ViU2VjdXJp
dHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQpOgorCiAyMDE2
LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVs
ZW1lbnQsIE5hbWVkTm9kZU1hcCwgYW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUg
dG8gRXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTY3NmVhOTQxNTIxOWE1NjUwOGIwMTQ3MGU4YmU5
NTYwZGZkZGExZi4uOWRiYTdiODU2OTBkMDcwNDUzYTA2NGJmZjA3ZjQxOTJlNjY3MDcxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE2LTEwLTMxICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFs
IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6dmFs
dWVfb3IgYW5kIFdURjo6dmFsdWVPckNvbXB1dGUuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tTZWN1cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luR2V0UG9y
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5
T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4u
bW06CisgICAgICAgICgtW1dLU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5l
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcpOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKToKKyAgICAgICAg
KFdlYktpdDo6UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5
RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0
TG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisKIDIwMTYtMTAtMzAgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFt
ZWROb2RlTWFwLCBhbmQgRE9NU3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggN2I1N2IxODkyOTM3MDYxMGI3M2EwMGNlNWM1MDlkMzFjZmI1NTYxZi4uMTE5ZDZkYmVj
MjI1NWMyNGQ3NGY2NzI5YmY2NmYwYjM3YzRiYzViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyNTIsMTEgKzMyNTIsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAgIFJF
TEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0Nv
bnN0KCkpOwogCiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgbGVm
dCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFj
ZSh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgfQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBy
aWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5l
bXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNW
YWx1ZVJlZ3MoKTsKICAgICB9CiAKQEAgLTM0MDUsMTEgKzM0MDUsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxF
QVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25z
dCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQg
PSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2Uo
dGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygp
OwogICAgIH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmln
aHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1w
bGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFs
dWVSZWdzKCk7CiAgICAgfQogCkBAIC0zNTQ2LDcgKzM1NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+
KiBtYXRoSQogCiAgICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlm
IChuZWVkc1NjcmF0Y2hGUFJSZWcpIHsKLSAgICAgICAgZnByU2NyYXRjaCA9IEZQUlRlbXBvcmFy
eSh0aGlzKTsKKyAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3Jh
dGNoRlBSID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQogCkBAIC0zNTgwLDExICszNTgwLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmlu
YXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgQVNTRVJUKCEoR2VuZXJhdG9yOjppc0xl
ZnRPcGVyYW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJhdG9yOjppc1JpZ2h0
T3BlcmFuZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVyYW5kKSkpOwogCiAgICAgaWYgKCFHZW5lcmF0
b3I6OmlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAgICAgICBs
ZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBs
YWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJl
Z3MoKTsKICAgICB9CiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25z
dGFudChyaWdodE9wZXJhbmQpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhp
cywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7
CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAt
MzY0OSwxMCArMzY0OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5v
ZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9KTsK
ICAgICB9IGVsc2UgewogICAgICAgICBpZiAoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRD
b25zdGFudChsZWZ0T3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFu
ZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRD
aGlsZCk7CiAgICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmln
aHRPcGVyYW5kKSkgewotICAgICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBy
aWdodENoaWxkKTsKKyAgICAgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7
CiAgICAgICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAg
fQogCkBAIC00NzY2LDExICs0NzY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aERpdihOb2RlKiBub2RlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQu
aXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgICAgICBpZiAoIWxl
ZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5k
KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENo
aWxkKTsKICAgICAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAg
IHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgICAgICBy
aWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgcmlnaHRSZWdzID0g
cmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KIApAQCAtNzI3Nyw3ICs3Mjc3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAg
ICBPcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlmIChw
YXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9i
amVjdEVkZ2UgPSBub2RlLT5jaGlsZDIoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0ID0gU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CisgICAgICAgIGdsb2JhbE9i
amVjdC5lbXBsYWNlKHRoaXMsIGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAgICByZWdzLmFwcGVu
ZChET01KSVQ6OlZhbHVlKGdsb2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUuZm9yTm9kZShnbG9i
YWxPYmplY3RFZGdlKS52YWx1ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4ZjcyYjFlOGRi
NjFkN2YzM2UzMDNkM2I3M2Q1YjNmNTJiZWNlOGY4Li5mOThlMTQ1ZGY0NWIwYWM5NTcyZDNmNThk
YzE5ZWIzMzIzMDJiZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTUwNDUsMTEgKzUwNDUsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBPcHRpb25hbDxKU1Zh
bHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsKICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAg
ICAgICAgICBrZXlBc1ZhbHVlID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAga2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgIGtleVJlZ3MgPSBrZXlBc1ZhbHVlLT5qc1ZhbHVlUmVncygpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBTdHJpbmdVc2UgfHwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0g
ICAgICAgICAgICBrZXlBc0NlbGwgPSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICBrZXlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGtl
eUFzQ2VsbC0+Z3ByKCkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGY4OWMxZTY5NzU2OWIzMjhjMWIy
ZGQ0MjVkZTM1ZTRmNDJhMzc0ODYuLjVmMTczYjYwOTQ1OGYwMDg2NTc4N2YyYmMwYWQ3N2NjMzNj
YzEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtNTE5NSwxMSArNTE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlB
c1ZhbHVlOwogICAgICAgICBHUFJSZWcga2V5R1BSOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtleUFzVmFsdWUgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc1Zh
bHVlLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5R1BSID0g
a2V5QXNWYWx1ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0
ZUNlbGxPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzQ2Vs
bC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtl
eUFzQ2VsbC0+Z3ByKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Lm1tCmluZGV4IDEyZjk1NGMwMzQ5YzFiZmM3MzMwM2Q2MjlmZGYxZmViYTU2MjU1N2MuLjA0
ODJjNzhhNThmYjU4MDJjZDE4NzcxMmViYWUyYTYwOWU0NDJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIFJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0
b21hdGljYQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9j
ayhtX3RhcmdldE11dGV4KTsKICAgICAgICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0
LT5yZW1vdGVDb250cm9sQWxsb3dlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVj
dG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigw
KSk7CisgICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZh
aWxlZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIG1f
dGFyZ2V0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlSW5zcGVj
dGlvblRhcmdldD4obV90YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjYXN0ZWRUYXJn
ZXQgPSBkb3duY2FzdDxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwu
aAppbmRleCA0Y2I1M2JmNTdmODI5ZTQ0ZGE5ZmJkNDlkNmZkOWM4Yzk4Yzk0NGQ0Li4zMjBlM2Q3
YmQwOTFjMzhlMjg2ZDZjYzhmYjljNjFjNjUyM2VlOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTEsMjcz
ICsxLDExMTEgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE9wdGlvbmFsX2gKLSNkZWZpbmUgT3B0
aW9uYWxfaAotCi0jaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLS8vIFdURjo6T3B0aW9uYWwg
aXMgYSBjbGFzcyBiYXNlZCBvbiBzdGQ6Om9wdGlvbmFsLCBkZXNjcmliZWQgaGVyZToKLS8vIGh0
dHA6Ly93d3cub3Blbi1zdGQub3JnL0pUQzEvU0MyMi9XRzIxL2RvY3MvcGFwZXJzLzIwMTMvbjM1
MjcuaHRtbAotLy8gSWYgdGhpcyBlbmRzIHVwIGluIGEgQysrIHN0YW5kYXJkLCB3ZSBzaG91bGQg
cmVwbGFjZSBvdXIgaW1wbGVtZW50YXRpb24gd2l0aCBpdC4KKy8vIENvcHlyaWdodCAoQykgMjAx
MSAtIDIwMTIgQW5kcnplaiBLcnplbWllbnNraS4KKy8vCisvLyBVc2UsIG1vZGlmaWNhdGlvbiwg
YW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQorLy8gTGlj
ZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0
IG9yIGNvcHkgYXQKKy8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKKy8v
CisvLyBUaGUgaWRlYSBhbmQgaW50ZXJmYWNlIGlzIGJhc2VkIG9uIEJvb3N0Lk9wdGlvbmFsIGxp
YnJhcnkKKy8vIGF1dGhvcmVkIGJ5IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsCisv
LworLy8gQm9vc3QgU29mdHdhcmUgTGljZW5zZSAtIFZlcnNpb24gMS4wIC0gQXVndXN0IDE3dGgs
IDIwMDMKKy8vCisvLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvciBvcmdhbml6YXRpb24KKy8vIG9idGFpbmluZyBhIGNvcHkgb2Yg
dGhlIHNvZnR3YXJlIGFuZCBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBjb3ZlcmVkIGJ5Cisv
LyB0aGlzIGxpY2Vuc2UgKHRoZSAiU29mdHdhcmUiKSB0byB1c2UsIHJlcHJvZHVjZSwgZGlzcGxh
eSwgZGlzdHJpYnV0ZSwKKy8vIGV4ZWN1dGUsIGFuZCB0cmFuc21pdCB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlCisvLyBTb2Z0d2FyZSwgYW5kIHRv
IHBlcm1pdCB0aGlyZC1wYXJ0aWVzIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0
bworLy8gZG8gc28sIGFsbCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmc6CisvLworLy8gVGhlIGNv
cHlyaWdodCBub3RpY2VzIGluIHRoZSBTb2Z0d2FyZSBhbmQgdGhpcyBlbnRpcmUgc3RhdGVtZW50
LCBpbmNsdWRpbmcKKy8vIHRoZSBhYm92ZSBsaWNlbnNlIGdyYW50LCB0aGlzIHJlc3RyaWN0aW9u
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIsCisvLyBtdXN0IGJlIGluY2x1ZGVkIGluIGFs
bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBpbiB3aG9sZSBvciBpbiBwYXJ0LCBhbmQKKy8vIGFs
bCBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTb2Z0d2FyZSwgdW5sZXNzIHN1Y2ggY29waWVzIG9y
IGRlcml2YXRpdmUKKy8vIHdvcmtzIGFyZSBzb2xlbHkgaW4gdGhlIGZvcm0gb2YgbWFjaGluZS1l
eGVjdXRhYmxlIG9iamVjdCBjb2RlIGdlbmVyYXRlZCBieQorLy8gYSBzb3VyY2UgbGFuZ3VhZ2Ug
cHJvY2Vzc29yLgorLy8KKy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
Ky8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBUSVRMRSBBTkQgTk9OLUlORlJJ
TkdFTUVOVC4gSU4gTk8gRVZFTlQKKy8vIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBB
TllPTkUgRElTVFJJQlVUSU5HIFRIRSBTT0ZUV0FSRSBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgREFN
QUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFRPUlQgT1IgT1RI
RVJXSVNFLAorLy8gQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI
RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisvLyBERUFMSU5HUyBJTiBUSEUgU09GVFdB
UkUuCisKKy8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6ZW1pMS9PcHRpb25h
bCAoNzI3YzcyOWRkMWQ5ZjA2ZjIyNTg2ODI4MGU1MDE1NDU5NGQ3ZTU5ZCkKKworLy8gTW9kaWZp
ZWQgdG8gbWFrZSBpdCBjb21waWxlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKworI3ByYWdt
YSBvbmNlCisKKyMgaW5jbHVkZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8dHlwZV90cmFpdHM+Cisj
IGluY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjIGluY2x1ZGUgPGNhc3NlcnQ+CisjIGluY2x1
ZGUgPGZ1bmN0aW9uYWw+CisjIGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0
PgorIyBpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorIyBpbmNsdWRlIDx3dGYvQ29tcGlsZXIu
aD4KKyMgaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjIGRlZmluZSBUUjJfT1BUSU9O
QUxfUkVRVUlSRVMoLi4uKSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxfX1ZBX0FSR1NfXzo6dmFs
dWUsIGJvb2w+Ojp0eXBlID0gZmFsc2UKKworIyBpZiBkZWZpbmVkIF9fR05VQ19fIC8vIE5PVEU6
IEdOVUMgaXMgYWxzbyBkZWZpbmVkIGZvciBDbGFuZworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAm
JiAoX19HTlVDX01JTk9SX18gPj0gOCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRf
OF9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQorIyAgICAgZGVmaW5lIFRS
Ml9PUFRJT05BTF9HQ0NfNF84X0FORF9ISUdIRVJfX18KKyMgICBlbmRpZgorIworIyAgIGlmIChf
X0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNykKKyMgICAgIGRlZmluZSBUUjJf
T1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQor
IyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF83X0FORF9ISUdIRVJfX18KKyMgICBlbmRp
ZgorIworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPT0gOCkgJiYg
KF9fR05VQ19QQVRDSExFVkVMX18gPj0gMSkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0ND
XzRfOF8xX0FORF9ISUdIRVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVD
X01JTk9SX18gPj0gOSkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9I
SUdIRVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA+IDQpCisjICAgICBkZWZpbmUgVFIyX09QVElP
TkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMgZW5kaWYKKyMKKyMgaWYg
ZGVmaW5lZCBfX2NsYW5nX21ham9yX18KKyMgICBpZiAoX19jbGFuZ19tYWpvcl9fID09IDMgJiYg
X19jbGFuZ19taW5vcl9fID49IDUpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0NMQU5HXzNf
NV9BTkRfSElHSFRFUl8KKyMgICBlbGlmIChfX2NsYW5nX21ham9yX18gPiAzKQorIyAgICAgZGVm
aW5lIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgZW5kaWYKKyMgICBp
ZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgICBkZWZp
bmUgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisjICAgZWxpZiAoX19jbGFu
Z19tYWpvcl9fID09IDMgJiYgX19jbGFuZ19taW5vcl9fID09IDQgJiYgX19jbGFuZ19wYXRjaGxl
dmVsX18gPj0gMikKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdfM180XzJfQU5EX0hJ
R0hFUl8KKyMgICBlbmRpZgorIyBlbmRpZgorIworIyBpZiBkZWZpbmVkIF9NU0NfVkVSCisjICAg
aWYgKF9NU0NfVkVSID49IDE5MDApCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX01TVkNfMjAx
NV9BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMgZW5kaWYKKworIyBpZiBkZWZpbmVkIF9fY2xh
bmdfXworIyAgIGlmIChfX2NsYW5nX21ham9yX18gPiAyKSB8fCAoX19jbGFuZ19tYWpvcl9fID09
IDIpICYmIChfX2NsYW5nX21pbm9yX18gPj0gOSkKKyMgICAgIGRlZmluZSBPUFRJT05BTF9IQVNf
VEhJU19SVkFMVUVfUkVGUyAxCisjICAgZWxzZQorIyAgICAgZGVmaW5lIE9QVElPTkFMX0hBU19U
SElTX1JWQUxVRV9SRUZTIDAKKyMgICBlbmRpZgorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFM
X0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JW
QUxVRV9SRUZTIDEKKyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9NU1ZDXzIwMTVfQU5EX0hJ
R0hFUl9fXworIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAxCisjIGVs
c2UKKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgMAorIyBlbmRpZgor
CisKKyMgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9ISUdIRVJfX18KKyMg
ICBkZWZpbmUgT1BUSU9OQUxfSEFTX0NPTlNURVhQUl9JTklUX0xJU1QgMQorIyAgIGRlZmluZSBP
UFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGNvbnN0ZXhwcgorIyBlbHNlCisjICAgZGVmaW5l
IE9QVElPTkFMX0hBU19DT05TVEVYUFJfSU5JVF9MSVNUIDAKKyMgICBkZWZpbmUgT1BUSU9OQUxf
Q09OU1RFWFBSX0lOSVRfTElTVAorIyBlbmRpZgorCisvLyBGSVhNRTogVG8gbWFrZSB0aGUgcmVz
dWx0IG9mIHZhbHVlKCkgdHlwZSBjb25zaXN0ZW50IGFtb25nIHRoZSBjb21waWxlcnMsIHdlIG5v
dyBpbnRlbnRpb25hbGx5IGRpc2FibGVzIG1vdmUgYWNjZXNzb3JzLgorIyAgIGRlZmluZSBPUFRJ
T05BTF9IQVNfTU9WRV9BQ0NFU1NPUlMgMAorLy8gIyBpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9D
TEFOR18zXzVfQU5EX0hJR0hURVJfICYmIChkZWZpbmVkIF9fY3BsdXNwbHVzKSAmJiAoX19jcGx1
c3BsdXMgIT0gMjAxMTAzTCkKKy8vICMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNT
T1JTIDEKKy8vICMgZWxzZQorLy8gIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfTU9WRV9BQ0NFU1NP
UlMgMAorLy8gIyBlbmRpZgorCisjIC8vIEluIEMrKzExIGNvbnN0ZXhwciBpbXBsaWVzIGNvbnN0
LCBzbyB3ZSBuZWVkIHRvIG1ha2Ugbm9uLWNvbnN0IG1lbWJlcnMgYWxzbyBub24tY29uc3RleHBy
CisjIGlmIChkZWZpbmVkIF9fY3BsdXNwbHVzKSAmJiAoX19jcGx1c3BsdXMgPT0gMjAxMTAzTCkK
KyMgICBkZWZpbmUgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIKKyMgZWxzZQorIyAgIGRlZmlu
ZSBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBjb25zdGV4cHIKKyMgZW5kaWYKKworI2lmIENP
TVBJTEVSX1NVUFBPUlRTKEVYQ0VQVElPTlMpCisjZGVmaW5lIF9fVEhST1dfRVhDRVBUSU9OKF9f
ZXhjZXB0aW9uKSB0aHJvdyBfX2V4Y2VwdGlvbjsKKyNkZWZpbmUgX19OT0VYQ0VQVCBub2V4Y2Vw
dAorI2RlZmluZSBfX05PRVhDRVBUXyhfX2V4Y2VwdGlvbikgbm9leGNlcHQoX19leGNlcHRpb24p
CisjZWxzZQorI2RlZmluZSBfX1RIUk9XX0VYQ0VQVElPTihfX2V4Y2VwdGlvbikgZG8geyAodm9p
ZClfX2V4Y2VwdGlvbjsgQ1JBU0goKTsgfSB3aGlsZSAoMCk7CisjZGVmaW5lIF9fTk9FWENFUFQK
KyNkZWZpbmUgX19OT0VYQ0VQVF8oLi4uKQorI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgewogCi1z
dHJ1Y3QgSW5QbGFjZVRhZyB7IH07Ci1jb25zdGV4cHIgSW5QbGFjZVRhZyBJblBsYWNlIHsgfTsK
Ky8vIEFsbCBvdXIgdGFyZ2V0IGNvbXBpbGVycyBzdXBwb3J0IGlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGUuCisjaWYgMAorLy8gQkVHSU4gd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBpc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlCisjIGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0dDQ180XzhfQU5EX0hJ
R0hFUl9fXworICAgIC8vIGxlYXZlIGl0OiBpdCBpcyBhbHJlYWR5IHRoZXJlCisjIGVsaWYgZGVm
aW5lZCBUUjJfT1BUSU9OQUxfQ0xBTkdfM180XzJfQU5EX0hJR0hFUl8KKyAgICAvLyBsZWF2ZSBp
dDogaXQgaXMgYWxyZWFkeSB0aGVyZQorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX01TVkNf
MjAxNV9BTkRfSElHSEVSX19fCisgICAgLy8gbGVhdmUgaXQ6IGl0IGlzIGFscmVhZHkgdGhlcmUK
KyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9ESVNBQkxFX0VNVUxBVElPTl9PRl9UWVBFX1RS
QUlUUworICAgIC8vIGxlYXZlIGl0OiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgaXQKKyMgZWxzZQor
CXRlbXBsYXRlIDx0eXBlbmFtZSBUPgorCXVzaW5nIGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGUg
PSBzdGQ6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD47CisjIGVuZGlmCisvLyBFTkQgd29ya2Fy
b3VuZCBmb3IgbWlzc2luZyBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlCisjZW5kaWYKKworIyBp
ZiAoZGVmaW5lZCBUUjJfT1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fKQorICAgIC8vIGxl
YXZlIGl0OyBvdXIgbWV0YWZ1bmN0aW9ucyBhcmUgYWxyZWFkeSBkZWZpbmVkLgorIyBlbGlmIGRl
ZmluZWQgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisgICAgLy8gbGVhdmUg
aXQ7IG91ciBtZXRhZnVuY3Rpb25zIGFyZSBhbHJlYWR5IGRlZmluZWQuCisjIGVsaWYgZGVmaW5l
ZCBUUjJfT1BUSU9OQUxfTVNWQ18yMDE1X0FORF9ISUdIRVJfX18KKyAgICAvLyBsZWF2ZSBpdDog
aXQgaXMgYWxyZWFkeSB0aGVyZQorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0RJU0FCTEVf
RU1VTEFUSU9OX09GX1RZUEVfVFJBSVRTCisgICAgLy8gbGVhdmUgaXQ6IHRoZSB1c2VyIGRvZXNu
J3Qgd2FudCBpdAorIyBlbHNlCisKKworLy8gd29ya2Fyb3VuZCBmb3IgbWlzc2luZyB0cmFpdHMg
aW4gR0NDIGFuZCBDTEFORwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgaXNfbm90aHJvd19t
b3ZlX2NvbnN0cnVjdGlibGUKK3sKKyAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gc3Rk
Ojppc19ub3Rocm93X2NvbnN0cnVjdGlibGU8VCwgVCYmPjo6dmFsdWU7Cit9OworCisKK3RlbXBs
YXRlIDxjbGFzcyBULCBjbGFzcyBVPgorc3RydWN0IGlzX2Fzc2lnbmFibGUKK3sKKyAgdGVtcGxh
dGUgPGNsYXNzIFgsIGNsYXNzIFk+CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfYXNzaWdu
KC4uLikgeyByZXR1cm4gZmFsc2U7IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWSwg
c2l6ZV90IFMgPSBzaXplb2YoKHN0ZDo6ZGVjbHZhbDxYPigpID0gc3RkOjpkZWNsdmFsPFk+KCks
IHRydWUpKSA+CisgIC8vIHRoZSBjb21tYSBvcGVyYXRvciBpcyBuZWNlc3NhcnkgZm9yIHRoZSBj
YXNlcyB3aGVyZSBvcGVyYXRvcj0gcmV0dXJucyB2b2lkCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9v
bCBoYXNfYXNzaWduKGJvb2wpIHsgcmV0dXJuIHRydWU7IH0KKworICBjb25zdGV4cHIgc3RhdGlj
IGJvb2wgdmFsdWUgPSBoYXNfYXNzaWduPFQsIFU+KHRydWUpOworfTsKKworCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4KK3N0cnVjdCBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZQoreworICB0ZW1wbGF0
ZSA8Y2xhc3MgWCwgYm9vbCBoYXNfYW55X21vdmVfYXNzaWduPgorICBzdHJ1Y3QgaGFzX25vdGhy
b3dfbW92ZV9hc3NpZ24geworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IGZhbHNl
OworICB9OworCisgIHRlbXBsYXRlIDxjbGFzcyBYPgorICBzdHJ1Y3QgaGFzX25vdGhyb3dfbW92
ZV9hc3NpZ248WCwgdHJ1ZT4geworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IF9f
Tk9FWENFUFRfKCBzdGQ6OmRlY2x2YWw8WCY+KCkgPSBzdGQ6OmRlY2x2YWw8WCYmPigpICk7Cisg
IH07CisKKyAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gaGFzX25vdGhyb3dfbW92ZV9h
c3NpZ248VCwgaXNfYXNzaWduYWJsZTxUJiwgVCYmPjo6dmFsdWU+Ojp2YWx1ZTsKK307CisvLyBl
bmQgd29ya2Fyb3VuZAorCisKKyMgZW5kaWYKKworCisKKy8vIDIwLjUuNCwgb3B0aW9uYWwgZm9y
IG9iamVjdCB0eXBlcwordGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIE9wdGlvbmFsOworCisvLyAy
MC41LjUsIG9wdGlvbmFsIGZvciBsdmFsdWUgcmVmZXJlbmNlIHR5cGVzCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY2xhc3MgT3B0aW9uYWw8VCY+OworCisKKy8vIHdvcmthcm91bmQ6IHN0ZCB1dGlsaXR5
IGZ1bmN0aW9ucyBhcmVuJ3QgY29uc3RleHByIHlldAordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSBjb25zdGV4cHIgVCYmIGNvbnN0ZXhwcl9mb3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Jl
ZmVyZW5jZTxUPjo6dHlwZSYgdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gc3RhdGljX2Nhc3Q8
VCYmPih0KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgVCYmIGNv
bnN0ZXhwcl9mb3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYm
IHQpIF9fTk9FWENFUFQKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2x2YWx1ZV9yZWZl
cmVuY2U8VD46OnZhbHVlLCAiISEiKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCYmPih0KTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgY29uc3RleHByX21vdmUoVCYmIHQpIF9fTk9FWENF
UFQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJl
bmNlPFQ+Ojp0eXBlJiY+KHQpOworfQorCisKKyNpZiBkZWZpbmVkIE5ERUJVRworIyBkZWZpbmUg
VFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oQ0hFQ0ssIEVYUFIpIChFWFBSKQorI2Vs
c2UKKyMgZGVmaW5lIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKENIRUNLLCBFWFBS
KSAoKENIRUNLKSA/IChFWFBSKSA6IChbXXthc3NlcnQoISNDSEVDSyk7fSgpLCAoRVhQUikpKQor
I2VuZGlmCisKKworbmFtZXNwYWNlIGRldGFpbF8KK3sKKworLy8gc3RhdGljX2FkZHJlc3NvZjog
YSBjb25zdGV4cHIgdmVyc2lvbiBvZiBhZGRyZXNzb2YKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
c3RydWN0IGhhc19vdmVybG9hZGVkX2FkZHJlc3NvZgoreworICB0ZW1wbGF0ZSA8Y2xhc3MgWD4K
KyAgY29uc3RleHByIHN0YXRpYyBib29sIGhhc19vdmVybG9hZCguLi4pIHsgcmV0dXJuIGZhbHNl
OyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIHNpemVfdCBTID0gc2l6ZW9mKHN0ZDo6ZGVjbHZh
bDxYJj4oKS5vcGVyYXRvciYoKSkgPgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX292ZXJs
b2FkKGJvb2wpIHsgcmV0dXJuIHRydWU7IH0KKworICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFs
dWUgPSBoYXNfb3ZlcmxvYWQ8VD4odHJ1ZSk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
VFIyX09QVElPTkFMX1JFUVVJUkVTKCFoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4pPgorY29u
c3RleHByIFQqIHN0YXRpY19hZGRyZXNzb2YoVCYgcmVmKQoreworICByZXR1cm4gJnJlZjsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhoYXNfb3Zlcmxv
YWRlZF9hZGRyZXNzb2Y8VD4pPgorVCogc3RhdGljX2FkZHJlc3NvZihUJiByZWYpCit7CisgIHJl
dHVybiBzdGQ6OmFkZHJlc3NvZihyZWYpOworfQorCisKKy8vIHRoZSBjYWxsIHRvIGNvbnZlcnQ8
QT4oYikgaGFzIHJldHVybiB0eXBlIEEgYW5kIGNvbnZlcnRzIGIgdG8gdHlwZSBBIGlmZiBiIGRl
Y2x0eXBlKGIpIGlzIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQQordGVtcGxhdGUgPGNsYXNz
IFU+Citjb25zdGV4cHIgVSBjb252ZXJ0KFUgdikgeyByZXR1cm4gdjsgfQorCit9IC8vIG5hbWVz
cGFjZSBkZXRhaWwKKworCitjb25zdGV4cHIgc3RydWN0IHRyaXZpYWxfaW5pdF90e30gdHJpdmlh
bF9pbml0e307CiAKLXN0cnVjdCBOdWxsb3B0VGFnIHsgZXhwbGljaXQgY29uc3RleHByIE51bGxv
cHRUYWcoaW50KSB7IH0gfTsKLWNvbnN0ZXhwciBOdWxsb3B0VGFnIE51bGxvcHQgeyAwIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBPcHRpb25hbCB7CisvLyAyMC41LjYsIEluLXBs
YWNlIGNvbnN0cnVjdGlvbgorY29uc3RleHByIHN0cnVjdCBJblBsYWNlVGFne30gSW5QbGFjZXt9
OworCisKKy8vIDIwLjUuNywgRGlzZW5nYWdlZCBzdGF0ZSBpbmRpY2F0b3IKK3N0cnVjdCBudWxs
b3B0X3QKK3sKKyAgc3RydWN0IGluaXR7fTsKKyAgY29uc3RleHByIGV4cGxpY2l0IG51bGxvcHRf
dChpbml0KXt9Cit9OworY29uc3RleHByIG51bGxvcHRfdCBOdWxsb3B0e251bGxvcHRfdDo6aW5p
dCgpfTsKKworCisvLyAyMC41LjgsIGNsYXNzIGJhZF9vcHRpb25hbF9hY2Nlc3MKK2NsYXNzIGJh
ZF9vcHRpb25hbF9hY2Nlc3MgOiBwdWJsaWMgc3RkOjpsb2dpY19lcnJvciB7CiBwdWJsaWM6Ci0g
ICAgT3B0aW9uYWwoKQotICAgICAgICA6IG1faXNFbmdhZ2VkKGZhbHNlKQotICAgIHsKLSAgICB9
CisgIGV4cGxpY2l0IGJhZF9vcHRpb25hbF9hY2Nlc3MoY29uc3Qgc3RkOjpzdHJpbmcmIHdoYXRf
YXJnKSA6IHN0ZDo6bG9naWNfZXJyb3J7d2hhdF9hcmd9IHt9CisgIGV4cGxpY2l0IGJhZF9vcHRp
b25hbF9hY2Nlc3MoY29uc3QgY2hhciogd2hhdF9hcmcpIDogc3RkOjpsb2dpY19lcnJvcnt3aGF0
X2FyZ30ge30KK307CiAKLSAgICBPcHRpb25hbChOdWxsb3B0VGFnKQotICAgICAgICA6IG1faXNF
bmdhZ2VkKGZhbHNlKQotICAgIHsKLSAgICB9CiAKLSAgICBPcHRpb25hbChjb25zdCBUJiB2YWx1
ZSkKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAgIHsKLSAgICAgICAgbmV3IChOb3RO
dWxsLCAmbV92YWx1ZSkgVCh2YWx1ZSk7Ci0gICAgfQordGVtcGxhdGUgPGNsYXNzIFQ+Cit1bmlv
biBzdG9yYWdlX3QKK3sKKyAgdW5zaWduZWQgY2hhciBkdW1teV87CisgIFQgdmFsdWVfOwogCi0g
ICAgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmIG90aGVyKQotICAgICAgICA6IG1faXNFbmdhZ2Vk
KG90aGVyLm1faXNFbmdhZ2VkKQotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAg
ICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0gICAg
fQorICBjb25zdGV4cHIgc3RvcmFnZV90KCB0cml2aWFsX2luaXRfdCApIF9fTk9FWENFUFQgOiBk
dW1teV8oKSB7fTsKIAotICAgIE9wdGlvbmFsKE9wdGlvbmFsJiYgb3RoZXIpCi0gICAgICAgIDog
bV9pc0VuZ2FnZWQob3RoZXIubV9pc0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0Vu
Z2FnZWQpCi0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUoKm90
aGVyLmFzUHRyKCkpKTsKLSAgICB9CisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBjb25z
dGV4cHIgc3RvcmFnZV90KCBBcmdzJiYuLi4gYXJncyApIDogdmFsdWVfKGNvbnN0ZXhwcl9mb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgT3B0aW9uYWwoVCYmIHZhbHVlKQotICAgICAg
ICA6IG1faXNFbmdhZ2VkKHRydWUpCi0gICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3Zh
bHVlKSBUKFdURk1vdmUodmFsdWUpKTsKLSAgICB9CisgIH5zdG9yYWdlX3QoKXt9Cit9OwogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBPcHRpb25hbChJblBsYWNlVGFnLCBB
cmdzJiYuLi4gYXJncykKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAgIHsKLSAgICAg
ICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwotICAgIH0KIAotICAgIH5PcHRpb25hbCgpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0g
ICAgfQordGVtcGxhdGUgPGNsYXNzIFQ+Cit1bmlvbiBjb25zdGV4cHJfc3RvcmFnZV90Cit7Cisg
ICAgdW5zaWduZWQgY2hhciBkdW1teV87CisgICAgVCB2YWx1ZV87CiAKLSAgICBPcHRpb25hbCYg
b3BlcmF0b3I9KE51bGxvcHRUYWcpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAg
IHJldHVybiAqdGhpczsKLSAgICB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlX3Qo
IHRyaXZpYWxfaW5pdF90ICkgX19OT0VYQ0VQVCA6IGR1bW15XygpIHt9OwogCi0gICAgT3B0aW9u
YWwmIG9wZXJhdG9yPShjb25zdCBPcHRpb25hbCYgb3RoZXIpCi0gICAgewotICAgICAgICBpZiAo
dGhpcyA9PSAmb3RoZXIpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgZGVz
dHJveSgpOwotICAgICAgICBpZiAob3RoZXIubV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG5l
dyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoKm90aGVyLmFzUHRyKCkpOwotICAgICAgICAgICAgbV9p
c0VuZ2FnZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
CisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9z
dG9yYWdlX3QoIEFyZ3MmJi4uLiBhcmdzICkgOiB2YWx1ZV8oY29uc3RleHByX2ZvcndhcmQ8QXJn
cz4oYXJncykuLi4pIHt9CiAKLSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFsJiYgb3Ro
ZXIpCi0gICAgewotICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgICAgICByZXR1
cm4gKnRoaXM7Ci0KLSAgICAgICAgZGVzdHJveSgpOwotICAgICAgICBpZiAob3RoZXIubV9pc0Vu
Z2FnZWQpIHsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSgq
b3RoZXIuYXNQdHIoKSkpOwotICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9CisgICAgfmNvbnN0ZXhwcl9zdG9yYWdl
X3QoKSA9IGRlZmF1bHQ7Cit9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cmVmZXJlbmNlPFU+Ojp0eXBlLCBUPjo6dmFsdWU+Ojp0eXBlPgotICAgIE9wdGlvbmFsJiBvcGVy
YXRvcj0oVSYmIHUpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIG5ldyAoTm90
TnVsbCwgJm1fdmFsdWUpIFQoc3RkOjpmb3J3YXJkPFU+KHUpKTsKLSAgICAgICAgbV9pc0VuZ2Fn
ZWQgPSB0cnVlOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmdhZ2VkOyB9Cit0ZW1wbGF0ZSA8
Y2xhc3MgVD4KK3N0cnVjdCBvcHRpb25hbF9iYXNlCit7CisgICAgYm9vbCBpbml0XzsKKyAgICBz
dG9yYWdlX3Q8VD4gc3RvcmFnZV87CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiBhc1B0
cigpOwotICAgIH0KKyAgICBjb25zdGV4cHIgb3B0aW9uYWxfYmFzZSgpIF9fTk9FWENFUFQgOiBp
bml0XyhmYWxzZSksIHN0b3JhZ2VfKHRyaXZpYWxfaW5pdCkge307CiAKLSAgICBUKiBvcGVyYXRv
ci0+KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVy
biBhc1B0cigpOwotICAgIH0KKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWxfYmFzZShj
b25zdCBUJiB2KSA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyh2KSB7fQogCi0gICAgY29uc3QgVCYg
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFQmIG9wZXJhdG9yKigp
IHsgcmV0dXJuIHZhbHVlKCk7IH0KKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWxfYmFz
ZShUJiYgdikgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oY29uc3RleHByX21vdmUodikpIHt9CiAK
LSAgICBUJiB2YWx1ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2FnZWQpOwotICAg
ICAgICByZXR1cm4gKmFzUHRyKCk7Ci0gICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdz
PiBleHBsaWNpdCBvcHRpb25hbF9iYXNlKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQorICAg
ICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdz
KS4uLikge30KIAotICAgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiAqYXNQdHIoKTsKLSAgICB9CisgICAg
dGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhz
dGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+CisgICAg
ZXhwbGljaXQgb3B0aW9uYWxfYmFzZShJblBsYWNlVGFnLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhp
bCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4KLSAgICBUIHZhbHVlT3IoVSYmIHZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgIH5vcHRpb25h
bF9iYXNlKCkgeyBpZiAoaW5pdF8pIHN0b3JhZ2VfLnZhbHVlXy5UOjp+VCgpOyB9Cit9OwogCi0g
ICAgICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpOwotICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25zdAot
ICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICphc1B0
cigpOwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgY29uc3RleHByX29wdGlvbmFsX2Jhc2UK
K3sKKyAgICBib29sIGluaXRfOworICAgIGNvbnN0ZXhwcl9zdG9yYWdlX3Q8VD4gc3RvcmFnZV87
CisKKyAgICBjb25zdGV4cHIgY29uc3RleHByX29wdGlvbmFsX2Jhc2UoKSBfX05PRVhDRVBUIDog
aW5pdF8oZmFsc2UpLCBzdG9yYWdlXyh0cml2aWFsX2luaXQpIHt9OworCisgICAgZXhwbGljaXQg
Y29uc3RleHByIGNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKGNvbnN0IFQmIHYpIDogaW5pdF8odHJ1
ZSksIHN0b3JhZ2VfKHYpIHt9CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHByX29w
dGlvbmFsX2Jhc2UoVCYmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGNvbnN0ZXhwcl9tb3Zl
KHYpKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxpY2l0IGNvbnN0ZXhw
ciBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZShJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJncykKKyAg
ICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJ
T05BTF9SRVFVSVJFUyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9s
aXN0PFU+Pik+CisgICAgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVCBleHBsaWNpdCBjb25z
dGV4cHJfb3B0aW9uYWxfYmFzZShJblBsYWNlVGFnLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4g
aWwsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oaWwsIHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKworICAgIH5jb25zdGV4cHJfb3B0aW9uYWxf
YmFzZSgpID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgT3B0aW9u
YWxCYXNlID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKKyAgICBzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
cG9zc2libGUKKyAgICBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jb25zdDxUPjo6dHlwZT4sIC8vIHVzZSBiYXNlIHdpdGggdHJpdmlhbCBkZXN0cnVjdG9yCisg
ICAgb3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZT4KKz46
OnR5cGU7CisKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIE9wdGlvbmFsIDogcHJpdmF0
ZSBPcHRpb25hbEJhc2U8VD4KK3sKKyAgc3RhdGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTx0eXBl
bmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlLCBudWxsb3B0X3Q+Ojp2YWx1ZSwgImJhZCBUIiApOwor
ICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5
cGUsIEluUGxhY2VUYWc+Ojp2YWx1ZSwgImJhZCBUIiApOworCiAKLSAgICAgICAgcmV0dXJuIGNh
bGxiYWNrKCk7CisgIGNvbnN0ZXhwciBib29sIGluaXRpYWxpemVkKCkgY29uc3QgX19OT0VYQ0VQ
VCB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OmluaXRfOyB9CisgIHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2NvbnN0PFQ+Ojp0eXBlKiBkYXRhcHRyKCkgeyAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKE9w
dGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQorICBjb25zdGV4cHIgY29uc3QgVCog
ZGF0YXB0cigpIGNvbnN0IHsgcmV0dXJuIGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YoT3B0aW9u
YWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV8pOyB9CisKKyMgaWYgT1BUSU9OQUxfSEFTX1RISVNf
UlZBTFVFX1JFRlMgPT0gMQorICBjb25zdGV4cHIgY29uc3QgVCYgY29udGFpbmVkX3ZhbCgpIGNv
bnN0JiB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorIyAgIGlm
IE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisgIE9QVElPTkFMX01VVEFCTEVfQ09O
U1RFWFBSIFQmJiBjb250YWluZWRfdmFsKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKE9wdGlvbmFs
QmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQorICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQ
UiBUJiBjb250YWluZWRfdmFsKCkgJiB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2Vf
LnZhbHVlXzsgfQorIyAgIGVsc2UKKyAgVCYgY29udGFpbmVkX3ZhbCgpICYgeyByZXR1cm4gT3B0
aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyAgVCYmIGNvbnRhaW5lZF92YWwoKSAm
JiB7IHJldHVybiBzdGQ6Om1vdmUoT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV8pOyB9
CisjICAgZW5kaWYKKyMgZWxzZQorICBjb25zdGV4cHIgY29uc3QgVCYgY29udGFpbmVkX3ZhbCgp
IGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisgIFQm
IGNvbnRhaW5lZF92YWwoKSB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVl
XzsgfQorIyBlbmRpZgorCisgIHZvaWQgY2xlYXIoKSBfX05PRVhDRVBUIHsKKyAgICBpZiAoaW5p
dGlhbGl6ZWQoKSkgZGF0YXB0cigpLT5UOjp+VCgpOworICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5p
dF8gPSBmYWxzZTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICB2b2lkIGlu
aXRpYWxpemUoQXJncyYmLi4uIGFyZ3MpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKFQoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpCisgIHsKKyAgICBBU1NFUlQoIU9wdGlvbmFsQmFzZTxU
Pjo6aW5pdF8pOworICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8g
PSB0cnVlOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisgIHZv
aWQgaW5pdGlhbGl6ZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdz
KSBfX05PRVhDRVBUXyhfX05PRVhDRVBUXyhUKGlsLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKSkKKyAgeworICAgIEFTU0VSVCghT3B0aW9uYWxCYXNlPFQ+Ojppbml0Xyk7CisgICAgOjpu
ZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKGlsLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSB0cnVlOworICB9CisK
K3B1YmxpYzoKKyAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisKKyAgLy8gMjAuNS41LjEsIGNvbnN0
cnVjdG9ycworICBjb25zdGV4cHIgT3B0aW9uYWwoKSBfX05PRVhDRVBUIDogT3B0aW9uYWxCYXNl
PFQ+KCkgIHt9OworICBjb25zdGV4cHIgT3B0aW9uYWwobnVsbG9wdF90KSBfX05PRVhDRVBUIDog
T3B0aW9uYWxCYXNlPFQ+KCkge307CisKKyAgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmIHJocykK
KyAgOiBPcHRpb25hbEJhc2U8VD4oKQorICB7CisgICAgaWYgKHJocy5pbml0aWFsaXplZCgpKSB7
CisgICAgICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVCgqcmhzKTsK
KyAgICAgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7CiAgICAgfQorICB9CiAKLXBy
aXZhdGU6Ci0gICAgY29uc3QgVCogYXNQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IFQqPigmbV92YWx1ZSk7IH0KLSAgICBUKiBhc1B0cigpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VCo+KCZtX3ZhbHVlKTsgfQotICAgIHZvaWQgZGVzdHJveSgpCi0gICAgewot
ICAgICAgICBpZiAobV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIGFzUHRyKCktPn5UKCk7Ci0g
ICAgICAgICAgICBtX2lzRW5nYWdlZCA9IGZhbHNlOwotICAgICAgICB9CisgIE9wdGlvbmFsKE9w
dGlvbmFsJiYgcmhzKSBfX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxU
Pjo6dmFsdWUpCisgIDogT3B0aW9uYWxCYXNlPFQ+KCkKKyAgeworICAgIGlmIChyaHMuaW5pdGlh
bGl6ZWQoKSkgeworICAgICAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIoKSkp
IFQoc3RkOjptb3ZlKCpyaHMpKTsKKyAgICAgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRy
dWU7CiAgICAgfQorICB9CisKKyAgY29uc3RleHByIE9wdGlvbmFsKGNvbnN0IFQmIHYpIDogT3B0
aW9uYWxCYXNlPFQ+KHYpIHt9CisKKyAgY29uc3RleHByIE9wdGlvbmFsKFQmJiB2KSA6IE9wdGlv
bmFsQmFzZTxUPihjb25zdGV4cHJfbW92ZSh2KSkge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4g
QXJncz4KKyAgZXhwbGljaXQgY29uc3RleHByIE9wdGlvbmFsKEluUGxhY2VUYWcsIEFyZ3MmJi4u
LiBhcmdzKQorICA6IE9wdGlvbmFsQmFzZTxUPihJblBsYWNlVGFne30sIGNvbnN0ZXhwcl9mb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBB
cmdzLCBUUjJfT1BUSU9OQUxfUkVRVUlSRVMoc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxVPj4pPgorICBPUFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGV4
cGxpY2l0IE9wdGlvbmFsKEluUGxhY2VUYWcsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwg
QXJncyYmLi4uIGFyZ3MpCisgIDogT3B0aW9uYWxCYXNlPFQ+KEluUGxhY2VUYWd7fSwgaWwsIGNv
bnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgIC8vIDIwLjUuNC4yLCBEZXN0
cnVjdG9yCisgIH5PcHRpb25hbCgpID0gZGVmYXVsdDsKKworICAvLyAyMC41LjQuMywgYXNzaWdu
bWVudAorICBPcHRpb25hbCYgb3BlcmF0b3I9KG51bGxvcHRfdCkgX19OT0VYQ0VQVAorICB7Cisg
ICAgY2xlYXIoKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBPcHRpb25hbCYgb3BlcmF0
b3I9KGNvbnN0IE9wdGlvbmFsJiByaHMpCisgIHsKKyAgICBpZiAgICAgIChpbml0aWFsaXplZCgp
ID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IGZhbHNlKSBjbGVhcigpOworICAgIGVs
c2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1
ZSkgIGluaXRpYWxpemUoKnJocyk7CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVl
ICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgY29udGFpbmVkX3ZhbCgpID0gKnJoczsK
KyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFs
JiYgcmhzKQorICBfX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxUPjo6dmFs
dWUgJiYgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlKQorICB7CisgICAg
aWYgICAgICAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSBm
YWxzZSkgY2xlYXIoKTsKKyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IGZhbHNlICYmIHJo
cy5pbml0aWFsaXplZCgpID09IHRydWUpICBpbml0aWFsaXplKHN0ZDo6bW92ZSgqcmhzKSk7Cisg
ICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9
PSB0cnVlKSAgY29udGFpbmVkX3ZhbCgpID0gc3RkOjptb3ZlKCpyaHMpOworICAgIHJldHVybiAq
dGhpczsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBVPgorICBhdXRvIG9wZXJhdG9yPShVJiYg
dikKKyAgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgPAorICAgIHN0ZDo6aXNfc2FtZTx0
eXBlbmFtZSBzdGQ6OmRlY2F5PFU+Ojp0eXBlLCBUPjo6dmFsdWUsCisgICAgT3B0aW9uYWwmCisg
ID46OnR5cGUKKyAgeworICAgIGlmIChpbml0aWFsaXplZCgpKSB7IGNvbnRhaW5lZF92YWwoKSA9
IHN0ZDo6Zm9yd2FyZDxVPih2KTsgfQorICAgIGVsc2UgICAgICAgICAgICAgICB7IGluaXRpYWxp
emUoc3RkOjpmb3J3YXJkPFU+KHYpKTsgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworCisg
IHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICB2b2lkIGVtcGxhY2UoQXJncyYmLi4uIGFyZ3Mp
CisgIHsKKyAgICBjbGVhcigpOworICAgIGluaXRpYWxpemUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgorICB2
b2lkIGVtcGxhY2Uoc3RkOjppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYuLi4gYXJncykK
KyAgeworICAgIGNsZWFyKCk7CisgICAgaW5pdGlhbGl6ZTxVLCBBcmdzLi4uPihpbCwgc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIC8vIDIwLjUuNC40LCBTd2FwCisgIHZv
aWQgc3dhcChPcHRpb25hbDxUPiYgcmhzKSBfX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVfY29u
c3RydWN0aWJsZTxUPjo6dmFsdWUgJiYgX19OT0VYQ0VQVF8oc3dhcChkZWNsdmFsPFQmPigpLCBk
ZWNsdmFsPFQmPigpKSkpCisgIHsKKyAgICBpZiAgICAgIChpbml0aWFsaXplZCgpID09IHRydWUg
ICYmIHJocy5pbml0aWFsaXplZCgpID09IGZhbHNlKSB7IHJocy5pbml0aWFsaXplKHN0ZDo6bW92
ZSgqKnRoaXMpKTsgY2xlYXIoKTsgfQorICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFs
c2UgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIHsgaW5pdGlhbGl6ZShzdGQ6Om1vdmUo
KnJocykpOyByaHMuY2xlYXIoKTsgfQorICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gdHJ1
ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIHsgdXNpbmcgc3RkOjpzd2FwOyBzd2Fw
KCoqdGhpcywgKnJocyk7IH0KKyAgfQorCisgIC8vIDIwLjUuNC41LCBPYnNlcnZlcnMKKworICBl
eHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IF9fTk9FWENFUFQgeyByZXR1
cm4gaW5pdGlhbGl6ZWQoKTsgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0KiBvcGVyYXRvciAtPigp
IGNvbnN0IHsKKyAgICByZXR1cm4gVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oaW5p
dGlhbGl6ZWQoKSwgZGF0YXB0cigpKTsKKyAgfQorCisjIGlmIE9QVElPTkFMX0hBU19NT1ZFX0FD
Q0VTU09SUyA9PSAxCisKKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCogb3BlcmF0b3Ig
LT4oKSB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVu
Y3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAv
LyBDT05TVEVYUFJfQVNTRVJUKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBkYXRhcHRyKCk7
CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgb3BlcmF0b3IgKigpIGNvbnN0JiB7CisgICAg
cmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKGluaXRpYWxpemVkKCksIGNv
bnRhaW5lZF92YWwoKSk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiBv
cGVyYXRvciAqKCkgJiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBh
c3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4
dC4KKyAgICAvLyBDT05TVEVYUFJfQVNTRVJUKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBj
b250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiYg
b3BlcmF0b3IgKigpICYmIHsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFs
IGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250
ZXh0LgorICAgIC8vIENPTlNURVhQUl9BU1NFUlQoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJu
IGNvbnN0ZXhwcl9tb3ZlKGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKworICBjb25zdGV4cHIgVCBj
b25zdCYgdmFsdWUoKSBjb25zdCYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNw
ZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHBy
IGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkg
OiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIE9wdGlvbmFsIGFjY2VzcyIpLCBjb250
YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJ
T05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiB2YWx1ZSgpICYgeworICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5k
ZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBj
b250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIE9wdGlvbmFs
IGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7
CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiYgdmFsdWUoKSAmJiB7Cisg
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhh
dCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBpZiAoIWlu
aXRpYWxpemVkKCkpIF9fVEhST1dfRVhDRVBUSU9OKGJhZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBP
cHRpb25hbCBhY2Nlc3MiKSk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShjb250YWluZWRfdmFsKCkp
OworICB9CisKKyMgZWxzZQorCisgIFQqIG9wZXJhdG9yIC0+KCkgeworICAgIGFzc2VydCAoaW5p
dGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGRhdGFwdHIoKTsKKyAgfQorCisgIGNvbnN0ZXhwciBU
IGNvbnN0JiBvcGVyYXRvciAqKCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNT
RVJURURfRVhQUkVTU0lPTihpbml0aWFsaXplZCgpLCBjb250YWluZWRfdmFsKCkpOworICB9CisK
KyAgVCYgb3BlcmF0b3IgKigpIHsKKyAgICBhc3NlcnQgKGluaXRpYWxpemVkKCkpOworICAgIHJl
dHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUo
KSBjb25zdCB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQg
ZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAg
ICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBiYWRf
b3B0aW9uYWxfYWNjZXNzKCJiYWQgT3B0aW9uYWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7
CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQorCisgIFQmIHZhbHVlKCkgeworICAg
IC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQg
Y2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2Vz
cygiYmFkIE9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBj
b250YWluZWRfdmFsKCk7CisgIH0KKworIyBlbmRpZgorCisjIGlmIE9QVElPTkFMX0hBU19USElT
X1JWQUxVRV9SRUZTID09IDEKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KKyAgY29uc3RleHByIFQg
dmFsdWVfb3IoViYmIHYpIGNvbnN0JgorICB7CisgICAgcmV0dXJuICp0aGlzID8gKip0aGlzIDog
ZGV0YWlsXzo6Y29udmVydDxUPihjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyAg
IGlmIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisKKyAgdGVtcGxhdGUgPGNsYXNz
IFY+CisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQgdmFsdWVfb3IoViYmIHYpICYmCisg
IHsKKyAgICByZXR1cm4gKnRoaXMgPyBjb25zdGV4cHJfbW92ZShjb25zdF9jYXN0PE9wdGlvbmFs
PFQ+Jj4oKnRoaXMpLmNvbnRhaW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGNvbnN0
ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorCisjICAgZWxzZQorCisgIHRlbXBsYXRlIDxjbGFz
cyBWPgorICBUIHZhbHVlX29yKFYmJiB2KSAmJgorICB7CisgICAgcmV0dXJuICp0aGlzID8gY29u
c3RleHByX21vdmUoY29uc3RfY2FzdDxPcHRpb25hbDxUPiY+KCp0aGlzKS5jb250YWluZWRfdmFs
KCkpIDogZGV0YWlsXzo6Y29udmVydDxUPihjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0K
KworIyAgIGVuZGlmCisKKyMgZWxzZQorCisgIHRlbXBsYXRlIDxjbGFzcyBWPgorICBjb25zdGV4
cHIgVCB2YWx1ZV9vcihWJiYgdikgY29uc3QKKyAgeworICAgIHJldHVybiAqdGhpcyA/ICoqdGhp
cyA6IGRldGFpbF86OmNvbnZlcnQ8VD4oY29uc3RleHByX2ZvcndhcmQ8Vj4odikpOworICB9CisK
KyMgZW5kaWYKIAotICAgIGJvb2wgbV9pc0VuZ2FnZWQ7Ci0gICAgdHlwZW5hbWUgc3RkOjphbGln
bmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBl
IG1fdmFsdWU7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgbGhzLCBjb25zdCBPcHRpb25hbDxUPiYgcmhzKQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIE9wdGlvbmFsPFQmPgogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxib29sPihsaHMpID09IHN0YXRpY19jYXN0PGJvb2w+KHJocykgJiYgKCFzdGF0
aWNfY2FzdDxib29sPihsaHMpIHx8IGxocy52YWx1ZSgpID09IHJocy52YWx1ZSgpKTsKKyAgc3Rh
dGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTxULCBudWxsb3B0X3Q+Ojp2YWx1ZSwgImJhZCBUIiAp
OworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPFQsIEluUGxhY2VUYWc+Ojp2YWx1ZSwg
ImJhZCBUIiApOworICBUKiByZWY7CisKK3B1YmxpYzoKKworICAvLyAyMC41LjUuMSwgY29uc3Ry
dWN0aW9uL2Rlc3RydWN0aW9uCisgIGNvbnN0ZXhwciBPcHRpb25hbCgpIF9fTk9FWENFUFQgOiBy
ZWYobnVsbHB0cikge30KKworICBjb25zdGV4cHIgT3B0aW9uYWwobnVsbG9wdF90KSBfX05PRVhD
RVBUIDogcmVmKG51bGxwdHIpIHt9CisKKyAgY29uc3RleHByIE9wdGlvbmFsKFQmIHYpIF9fTk9F
WENFUFQgOiByZWYoZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZih2KSkge30KKworICBPcHRpb25h
bChUJiYpID0gZGVsZXRlOworCisgIGNvbnN0ZXhwciBPcHRpb25hbChjb25zdCBPcHRpb25hbCYg
cmhzKSBfX05PRVhDRVBUIDogcmVmKHJocy5yZWYpIHt9CisKKyAgZXhwbGljaXQgY29uc3RleHBy
IE9wdGlvbmFsKEluUGxhY2VUYWcsIFQmIHYpIF9fTk9FWENFUFQgOiByZWYoZGV0YWlsXzo6c3Rh
dGljX2FkZHJlc3NvZih2KSkge30KKworICBleHBsaWNpdCBPcHRpb25hbChJblBsYWNlVGFnLCBU
JiYpID0gZGVsZXRlOworCisgIH5PcHRpb25hbCgpID0gZGVmYXVsdDsKKworICAvLyAyMC41LjUu
MiwgbXV0YXRpb24KKyAgT3B0aW9uYWwmIG9wZXJhdG9yPShudWxsb3B0X3QpIF9fTk9FWENFUFQg
eworICAgIHJlZiA9IG51bGxwdHI7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgLy8gT3B0
aW9uYWwmIG9wZXJhdG9yPShjb25zdCBPcHRpb25hbCYgcmhzKSBfX05PRVhDRVBUIHsKKyAgICAv
LyByZWYgPSByaHMucmVmOworICAgIC8vIHJldHVybiAqdGhpczsKKyAgLy8gfQorCisgIC8vIE9w
dGlvbmFsJiBvcGVyYXRvcj0oT3B0aW9uYWwmJiByaHMpIF9fTk9FWENFUFQgeworICAgIC8vIHJl
ZiA9IHJocy5yZWY7CisgICAgLy8gcmV0dXJuICp0aGlzOworICAvLyB9CisKKyAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+CisgIGF1dG8gb3BlcmF0b3I9KFUmJiByaHMpIF9fTk9FWENFUFQKKyAgLT4g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgPAorICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBz
dGQ6OmRlY2F5PFU+Ojp0eXBlLCBPcHRpb25hbDxUJj4+Ojp2YWx1ZSwKKyAgICBPcHRpb25hbCYK
KyAgPjo6dHlwZQorICB7CisgICAgcmVmID0gcmhzLnJlZjsKKyAgICByZXR1cm4gKnRoaXM7Cisg
IH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgYXV0byBvcGVyYXRvcj0oVSYmIHJocykg
X19OT0VYQ0VQVAorICAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZgorICA8CisgICAgIXN0ZDo6
aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFU+Ojp0eXBlLCBPcHRpb25hbDxUJj4+Ojp2YWx1
ZSwKKyAgICBPcHRpb25hbCYKKyAgPjo6dHlwZQorICA9IGRlbGV0ZTsKKworICB2b2lkIGVtcGxh
Y2UoVCYgdikgX19OT0VYQ0VQVCB7CisgICAgcmVmID0gZGV0YWlsXzo6c3RhdGljX2FkZHJlc3Nv
Zih2KTsKKyAgfQorCisgIHZvaWQgZW1wbGFjZShUJiYpID0gZGVsZXRlOworCisKKyAgdm9pZCBz
d2FwKE9wdGlvbmFsPFQmPiYgcmhzKSBfX05PRVhDRVBUCisgIHsKKyAgICBzdGQ6OnN3YXAocmVm
LCByaHMucmVmKTsKKyAgfQorCisgIC8vIDIwLjUuNS4zLCBvYnNlcnZlcnMKKyAgY29uc3RleHBy
IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRF
RF9FWFBSRVNTSU9OKHJlZiwgcmVmKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUJiBvcGVyYXRvcioo
KSBjb25zdCB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKHJl
ZiwgKnJlZik7CisgIH0KKworICBjb25zdGV4cHIgVCYgdmFsdWUoKSBjb25zdCB7CisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4g
YmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gcmVmID8g
KnJlZiA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCJiYWQgT3B0aW9uYWwgYWNjZXNzIiks
ICpyZWYpOworICAgIHJldHVybiAqcmVmOworICB9CisKKyAgZXhwbGljaXQgY29uc3RleHByIG9w
ZXJhdG9yIGJvb2woKSBjb25zdCBfX05PRVhDRVBUIHsKKyAgICByZXR1cm4gcmVmICE9IG51bGxw
dHI7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KKyAgY29uc3RleHByIHR5cGVuYW1lIHN0
ZDo6ZGVjYXk8VD46OnR5cGUgdmFsdWVfb3IoViYmIHYpIGNvbnN0CisgIHsKKyAgICByZXR1cm4g
KnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpjb252ZXJ0PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46
OnR5cGU+KGNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorfTsKKworCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4KK2NsYXNzIE9wdGlvbmFsPFQmJj4KK3sKKyAgc3RhdGljX2Fzc2VydCggc2l6ZW9m
KFQpID09IDAsICJPcHRpb25hbCBydmFsdWUgcmVmZXJlbmNlcyBkaXNhbGxvd2VkIiApOworfTsK
KworCisvLyAyMC41LjgsIFJlbGF0aW9uYWwgb3BlcmF0b3JzCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgT3B0
aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiBib29sKHgpICE9IGJvb2woeSkgPyBmYWxzZSA6IGJv
b2woeCkgPT0gZmFsc2UgPyB0cnVlIDogKnggPT0gKnk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBP
cHRpb25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuICEoeCA9PSB5KTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBPcHRpb25hbDxUPiYgeCwgY29u
c3QgT3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAoIXkpID8gZmFsc2UgOiAoIXgpID8gdHJ1
ZSA6ICp4IDwgKnk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj4oY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQoreworICBy
ZXR1cm4gKHkgPCB4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPD0oY29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQorewor
ICByZXR1cm4gISh5IDwgeCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25hbDxUPiYgeSkK
K3sKKyAgcmV0dXJuICEoeCA8IHkpOworfQorCisKKy8vIDIwLjUuOSwgQ29tcGFyaXNvbiB3aXRo
IG51bGxvcHQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE9wdGlvbmFsPFQ+JiB4LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgh
eCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KG51
bGxvcHRfdCwgY29uc3QgT3B0aW9uYWw8VD4mIHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgh
eCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IE9wdGlvbmFsPFQ+JiB4LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIGJv
b2woeCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KG51bGxvcHRfdCwgY29uc3QgT3B0aW9uYWw8VD4mIHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJu
IGJvb2woeCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoY29uc3QgT3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJu
IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KG51bGxvcHRfdCwgY29uc3QgT3B0aW9uYWw8VD4mIHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJu
IGJvb2woeCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0
dXJuICgheCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjw9KG51bGxvcHRfdCwgY29uc3QgT3B0aW9uYWw8VD4mKSBfX05PRVhDRVBUCit7CisgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJu
IGJvb2woeCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj4obnVsbG9wdF90LCBjb25zdCBPcHRpb25hbDxUPiYpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJu
IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBPcHRpb25hbDxUPiYsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4g
dHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0o
bnVsbG9wdF90LCBjb25zdCBPcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4g
KCF4KTsKK30KKworCisKKy8vIDIwLjUuMTAsIENvbXBhcmlzb24gd2l0aCBUCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgeCwg
Y29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA9PSB2IDogZmFsc2U7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYs
IGNvbnN0IE9wdGlvbmFsPFQ+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPT0gKnggOiBm
YWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8g
KnggIT0gdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KQoreworICByZXR1cm4g
Ym9vbCh4KSA/IHYgIT0gKnggOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQorewor
ICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VD4m
IHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBPcHRpb25hbDxUPiYgeCwg
Y29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+IHYgOiBmYWxzZTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBUJiB2LCBj
b25zdCBPcHRpb25hbDxUPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxz
ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29u
c3QgT3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKngg
Pj0gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUPiYgeCkKK3sKKyAgcmV0dXJuIGJv
b2woeCkgPyB2IDw9ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQorewor
ICByZXR1cm4gYm9vbCh4KSA/ICp4IDw9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxU
PiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID49ICp4IDogdHJ1ZTsKK30KKworCisvLyBD
b21wYXJpc29uIG9mIE9wdGlvbmFsPFQmPiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikK
K3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA9PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlv
bmFsPFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID09ICp4IDogZmFsc2U7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlv
bmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2IDog
dHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/
IHYgIT0gKnggOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxUPiYgbGhzLCBjb25zdCBPcHRpb25hbDxUPiYg
cmhzKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBP
cHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7
CisgIHJldHVybiBib29sKHgpID8gKnggPCB2IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwg
TnVsbG9wdFRhZykKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4o
Y29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQogewotICAgIHJldHVybiAhb3B0Owor
ICByZXR1cm4gYm9vbCh4KSA/IHYgPiAqeCA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIE51
bGxvcHRUYWcpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNv
bnN0IE9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4ob3B0KTsKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+IHYgOiBmYWxzZTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oTnVsbG9wdFRh
ZywgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQogewotICAg
IHJldHVybiAhb3B0OworICByZXR1cm4gYm9vbCh4KSA/IHYgPCAqeCA6IGZhbHNlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShOdWxsb3B0VGFn
LCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQogewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihvcHQpOworICByZXR1cm4gYm9vbCh4KSA/ICp4ID49
IHYgOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwgY29uc3QgVCYgdmFsdWUpCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB2LCBjb25zdCBP
cHRpb25hbDxUJj4mIHgpCiB7Ci0gICAgcmV0dXJuIG9wdCAmJiBvcHQudmFsdWUoKSA9PSB2YWx1
ZTsKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDw9ICp4IDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBv
cHQsIGNvbnN0IFQmIHZhbHVlKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPD0oY29uc3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVy
biAhKG9wdCA9PSB2YWx1ZSk7CisgIHJldHVybiBib29sKHgpID8gKnggPD0gdiA6IHRydWU7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFQmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4
KQogewotICAgIHJldHVybiBvcHQgJiYgb3B0LnZhbHVlKCkgPT0gdmFsdWU7CisgIHJldHVybiBi
b29sKHgpID8gdiA+PSAqeCA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxUPiYg
b3B0KQorLy8gQ29tcGFyaXNvbiBvZiBPcHRpb25hbDxUIGNvbnN0Jj4gd2l0aCBUCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxjb25z
dCBUJj4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJuICEodmFsdWUgPT0gb3B0KTsKKyAg
cmV0dXJuIGJvb2woeCkgPyAqeCA9PSB2IDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1PcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPgotbWFrZU9wdGlvbmFs
KFQmJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKIHsKLSAgICByZXR1cm4g
T3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZh
bHVlKSk7CisgIHJldHVybiBib29sKHgpID8gdiA9PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxjb25z
dCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggIT0gdiA6IHRy
dWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2wo
eCkgPyB2ICE9ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPChjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7
CisgIHJldHVybiBib29sKHgpID8gKnggPCB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxj
b25zdCBUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBPcHRpb25h
bDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPiB2
IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4g
Ym9vbCh4KSA/IHYgPCAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQm
IHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPj0gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB2LCBjb25zdCBP
cHRpb25hbDxjb25zdCBUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZh
bHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29s
KHgpID8gKnggPD0gdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCkK
K3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID49ICp4IDogdHJ1ZTsKK30KKworCisvLyAyMC41LjEy
LCBTcGVjaWFsaXplZCBhbGdvcml0aG1zCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3ZvaWQgc3dhcChP
cHRpb25hbDxUPiYgeCwgT3B0aW9uYWw8VD4mIHkpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKHgu
c3dhcCh5KSkpCit7CisgIHguc3dhcCh5KTsKK30KKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2Nv
bnN0ZXhwciBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPiBtYWtlT3B0aW9u
YWwoVCYmIHYpCit7CisgIHJldHVybiBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0
eXBlPihjb25zdGV4cHJfZm9yd2FyZDxUPih2KSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBYPgor
Y29uc3RleHByIE9wdGlvbmFsPFgmPiBtYWtlT3B0aW9uYWwoc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxYPiB2KQoreworICByZXR1cm4gT3B0aW9uYWw8WCY+KHYuZ2V0KCkpOworfQorCisvLyAtLSBX
ZWJLaXQgQWRkaXRpb25zIC0tCit0ZW1wbGF0ZSA8Y2xhc3MgT3B0aW9uYWxUeXBlLCBjbGFzcyBD
YWxsYmFjaz4KK0FMV0FZU19JTkxJTkUKK2F1dG8gdmFsdWVPckNvbXB1dGUoT3B0aW9uYWxUeXBl
IE9wdGlvbmFsLCBDYWxsYmFjayBjYWxsYmFjaykgLT4gdHlwZW5hbWUgT3B0aW9uYWxUeXBlOjp2
YWx1ZV90eXBlCit7CisgICAgaWYgKE9wdGlvbmFsKQorICAgICAgICByZXR1cm4gKk9wdGlvbmFs
OworICAgIHJldHVybiBjYWxsYmFjaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAorbmFt
ZXNwYWNlIHN0ZAoreworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RydWN0IGhhc2g8V1RG
OjpPcHRpb25hbDxUPj4KKyAgeworICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFzaDxUPjo6cmVzdWx0
X3R5cGUgcmVzdWx0X3R5cGU7CisgICAgdHlwZWRlZiBXVEY6Ok9wdGlvbmFsPFQ+IGFyZ3VtZW50
X3R5cGU7CisKKyAgICBjb25zdGV4cHIgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShhcmd1bWVudF90
eXBlIGNvbnN0JiBhcmcpIGNvbnN0IHsKKyAgICAgIHJldHVybiBhcmcgPyBzdGQ6Omhhc2g8VD57
fSgqYXJnKSA6IHJlc3VsdF90eXBle307CisgICAgfQorICB9OworCisgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgorICBzdHJ1Y3QgaGFzaDxXVEY6Ok9wdGlvbmFsPFQmPj4KKyAgeworICAgIHR5cGVk
ZWYgdHlwZW5hbWUgaGFzaDxUPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7CisgICAgdHlwZWRl
ZiBXVEY6Ok9wdGlvbmFsPFQmPiBhcmd1bWVudF90eXBlOworCisgICAgY29uc3RleHByIHJlc3Vs
dF90eXBlIG9wZXJhdG9yKCkoYXJndW1lbnRfdHlwZSBjb25zdCYgYXJnKSBjb25zdCB7CisgICAg
ICByZXR1cm4gYXJnID8gc3RkOjpoYXNoPFQ+e30oKmFyZykgOiByZXN1bHRfdHlwZXt9OworICAg
IH0KKyAgfTsKK30KKworIyB1bmRlZiBUUjJfT1BUSU9OQUxfUkVRVUlSRVMKKyMgdW5kZWYgVFIy
X09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04KKwogdXNpbmcgV1RGOjpJblBsYWNlOwogdXNp
bmcgV1RGOjpOdWxsb3B0OwogdXNpbmcgV1RGOjpPcHRpb25hbDsKIHVzaW5nIFdURjo6bWFrZU9w
dGlvbmFsOwotCi0jZW5kaWYgLy8gT3B0aW9uYWxfaAordXNpbmcgV1RGOjp2YWx1ZU9yQ29tcHV0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAK
aW5kZXggOGJmODI5ZGYwZTQ5OWVmZWRjYTcxOGQ3MTc0NDVkZjBkZWE2MmIxNy4uMjE4ZGUxNmE2
NmMwOWExNWE0M2ViMzQyYzczNjgxY2NmODRiNzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lk
IEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25z
dW1lciogY29uc3VtZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Jsb2JMb2Fk
ZXIgPSB7ICp0aGlzIH07CisgICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRoaXMpOwogICAgIG1f
YmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxv
YkxvYWRlciwgY29uc3VtZXIpOwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IGExMzg2OTc4MjE0MDA3MjJkN2VjYTJjNzI2
ZDU4MDFhODM0MWY5ODguLmUzODA1ZThlMTI3OWFiNTEyYWFiMjM4MGI0ZTBkOTEyOGQ4Y2RhNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAg
LTg0LDYgKzg0LDggQEAgY2xhc3MgRmV0Y2hCb2R5T3duZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxG
ZXRjaEJvZHlPd25lcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QKICAgICBzdHJ1Y3QgQmxvYkxv
YWRlciBmaW5hbCA6IEZldGNoTG9hZGVyQ2xpZW50IHsKICAgICAgICAgQmxvYkxvYWRlcihGZXRj
aEJvZHlPd25lciYpOwogCisgICAgICAgIHZvaWQgc3dhcChCbG9iTG9hZGVyJik7CisKICAgICAg
ICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5ibG9i
Q2h1bmsoZGF0YSwgc2l6ZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDAyZTMxMzUwZjI2ZTBjOWIxODUyNGNkNDI0OWRiYjg2NzI0
Mjc2OTcuLjg2ZTI0YWQ5NDRkNTgzMWQ0ZjI3Mjg1ZGUxNDBiMzczZjgwNTUxZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTA1LDcg
KzEwNSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0CiAgICAgLy8gU2V0dGluZyBwZW5kaW5n
IGFjdGl2aXR5IHVudGlsIEJvZHlMb2FkZXIgZGlkRmFpbCBvciBkaWRTdWNjZWVkIGNhbGxiYWNr
IGlzIGNhbGxlZC4KICAgICByZXNwb25zZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHJlc3BvbnNlLnB0
cigpKTsKIAotICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBCb2R5TG9hZGVyKHJlc3BvbnNl
LmdldCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyLmVt
cGxhY2UocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocHJvbWlzZSkpOwogICAgIGlmICghcmVzcG9u
c2UtPm1fYm9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXIgPSBOdWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA5Y2Zm
N2EyY2VkZDdhNmQ3ODk4NDlhY2UyYjE4YjdkNDZkZTMxOTA2Li5kZDlmMTRmZmExNDkzNjExZDAx
NjYxYmNhN2E3Zjg4OTI5N2FiZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtNTksNyArNTksNyBA
QCBjbGFzcyBJREJEYXRhYmFzZUlkZW50aWZpZXIgewogICAgICAgICB1bnNpZ25lZCBtYWluRnJh
bWVQcm90b2NvbEhhc2ggPSBTdHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1lT3JpZ2luLnByb3Rv
Y29sKTsKICAgICAgICAgdW5zaWduZWQgbWFpbkZyYW1lSG9zdEhhc2ggPSBTdHJpbmdIYXNoOjpo
YXNoKG1fbWFpbkZyYW1lT3JpZ2luLmhvc3QpOwogICAgICAgICAKLSAgICAgICAgdW5zaWduZWQg
aGFzaENvZGVzWzddID0geyBuYW1lSGFzaCwgb3BlbmluZ1Byb3RvY29sSGFzaCwgb3BlbmluZ0hv
c3RIYXNoLCBtX29wZW5pbmdPcmlnaW4ucG9ydC52YWx1ZU9yKDApLCBtYWluRnJhbWVQcm90b2Nv
bEhhc2gsIG1haW5GcmFtZUhvc3RIYXNoLCBtX21haW5GcmFtZU9yaWdpbi5wb3J0LnZhbHVlT3Io
MCkgfTsKKyAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzddID0geyBuYW1lSGFzaCwgb3Blbmlu
Z1Byb3RvY29sSGFzaCwgb3BlbmluZ0hvc3RIYXNoLCBtX29wZW5pbmdPcmlnaW4ucG9ydC52YWx1
ZV9vcigwKSwgbWFpbkZyYW1lUHJvdG9jb2xIYXNoLCBtYWluRnJhbWVIb3N0SGFzaCwgbV9tYWlu
RnJhbWVPcmlnaW4ucG9ydC52YWx1ZV9vcigwKSB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFz
aGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRl
eCAxYzQ0MGI4YTY2Y2E2ZGMwNTBkMTJjYzExOTY1YTY4MTA2MjY4ZTk5Li5mNjJhZGJiZmNkMzUz
NzQ0ODM0NDJlZGFjM2Q4MjExZTBiNTc0ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udAogICAgIGlmICh2ZXJzaW9uICYmICF2ZXJzaW9uLnZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9y
eS5vcGVuKCkgY2FsbGVkIHdpdGggYSB2ZXJzaW9uIG9mIDAiKSB9OwogCi0gICAgcmV0dXJuIG9w
ZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLnZhbHVlT3IoMCkpOworICAgIHJldHVy
biBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZV9vcigwKSk7CiB9CiAK
IEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
dW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAppbmRleCBmN2JjN2QzOWNkY2VhNGU2
NGM0NWRiODQzYmE1ZDM5MDFhNTM1MmMzLi5jYzEyOTdhNzVmNDJiMDNjZTEwM2E3MjdkNmU3NGIw
ZjllODY5MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBPcHRpb25hbDxp
bnQ+IGQKICAgICBpZiAoaW50ZXJUb25lR2FwICYmIGludGVyVG9uZUdhcC52YWx1ZSgpIDwgbWlu
SW50ZXJUb25lR2FwTXMpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07
CiAKLSAgICBtX2R1cmF0aW9uID0gZHVyYXRpb24udmFsdWVPcihkZWZhdWx0VG9uZUR1cmF0aW9u
TXMpOwotICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2FwLnZhbHVlT3IoZGVmYXVsdElu
dGVyVG9uZUdhcE1zKTsKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb24udmFsdWVfb3IoZGVmYXVs
dFRvbmVEdXJhdGlvbk1zKTsKKyAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1
ZV9vcihkZWZhdWx0SW50ZXJUb25lR2FwTXMpOwogCiAgICAgaWYgKCFtX2hhbmRsZXItPmluc2Vy
dERUTUYodG9uZXMsIG1fZHVyYXRpb24sIG1faW50ZXJUb25lR2FwKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmgKaW5kZXggMjQxMjcxZjY2OGI1ZGZkOGNmOGYwMGVhYzc1NWJjODNlMmI3N2U1
YS4uZjdmNmJmZGZmNWNjZjgyZGVkZWRmNzg3YzY2ZTQwNGQ1Mjg5MzliNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTIwMiwxMSArMjAyLDE3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBWYWx1ZT4KIGNsYXNzIERPTVByb21pc2UgewogcHVibGljOgogICAg
IERPTVByb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBnZW5lcmljUHJvbWlzZSkgOiBtX3By
b21pc2VEZWZlcnJlZChXVEZNb3ZlKGdlbmVyaWNQcm9taXNlKSkgeyB9CisgICAgRE9NUHJvbWlz
ZShjb25zdCBET01Qcm9taXNlJiBvdGhlcikKKyAgICAgICAgOiBtX3Byb21pc2VEZWZlcnJlZChv
dGhlci5tX3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCkpCisgICAgeworICAgIH0KKyAgICBET01Q
cm9taXNlKERPTVByb21pc2UmJikgPSBkZWZhdWx0OwogCi0gICAgRE9NUHJvbWlzZShET01Qcm9t
aXNlJiYgcHJvbWlzZSkgOiBtX3Byb21pc2VEZWZlcnJlZChXVEZNb3ZlKHByb21pc2UubV9wcm9t
aXNlRGVmZXJyZWQpKSB7IH0KLQotICAgIERPTVByb21pc2UoY29uc3QgRE9NUHJvbWlzZSYpID0g
ZGVmYXVsdDsKLSAgICBET01Qcm9taXNlJiBvcGVyYXRvcj0oRE9NUHJvbWlzZSBjb25zdCYpID0g
ZGVmYXVsdDsKKyAgICBET01Qcm9taXNlJiBvcGVyYXRvcj0oRE9NUHJvbWlzZSBvdGhlcikKKyAg
ICB7CisgICAgICAgIHN3YXAob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQog
CiAgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIFByb21pc2VSZXN1bHRJbnNwZWN0b3I8VmFsdWU+
OjpUeXBlIHZhbHVlKSB7IG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKHZhbHVlKTsgfQogCkBA
IC0yMTUsNiArMjIxLDExIEBAIGNsYXNzIERPTVByb21pc2UgewogICAgIEpTQzo6SlNWYWx1ZSBw
cm9taXNlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9taXNlRGVmZXJyZWQtPnByb21pc2UoKTsgfTsK
IAogcHJpdmF0ZToKKyAgICB2b2lkIHN3YXAoRE9NUHJvbWlzZSYgb3RoZXIpCisgICAgeworICAg
ICAgICBzdGQ6OnN3YXAobV9wcm9taXNlRGVmZXJyZWQsIG90aGVyLm1fcHJvbWlzZURlZmVycmVk
KTsKKyAgICB9CisKICAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBtX3Byb21pc2VEZWZlcnJlZDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtSE1BQy5jcHAKaW5kZXggZWQxODZkNzIyN2VjZTA3YjczMmUyMTU3ZTBjMTE2
NzM4ZjJmNzZiZi4uMmE2NmQxOTQ3YWRlYzZlYTFkNmY3ZDBkYzg4ZmYyN2FhYzM0YmQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtSE1BQy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFD
OjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1B
Qzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlT3IoMCksIGhtYWNQYXJhbWV0
ZXJzLmhhc2hJZGVudGlmaWVyLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZV9v
cigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKaW5kZXggNDkyYzc1NDdlODgyOTJhZDRkOTFhODBkNjJjOTBlZTliOTNhMWJkMy4u
ZjdkNTlmN2ZhYWU3NDFhZmJlOTRiMzVkYWI2ODg5YTNkZmZkNDQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC04MzYsNyArODM2LDcgQEAgRXhjZXB0aW9u
T3I8ZmxvYXQ+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlKSBjb24KIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZShV
bml0VHlwZXMgdW5pdFR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50ZXJu
YWwodW5pdFR5cGUpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50ZXJuYWwo
dW5pdFR5cGUpLnZhbHVlX29yKDApOwogfQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRv
dWJsZVZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCBh
ZmEzNjY2NGIyNDY0MWE3NjNlNDhmMmQyODdjYzFmNWFkMThjNWNlLi5iNmJhMjIxZDI2ZGJmNzcx
ZDQ1MjUzMThlM2QyMDMyZDNmYTdlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0Ojph
ZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3QKICAgICBpZiAo
IXN0eWxlLmlzRW1wdHkoKSkKICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKICAgICB0ZXh0LmFw
cGVuZCgnfScpOwotICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dC50
b1N0cmluZygpLCBpbmRleC52YWx1ZU9yKGxlbmd0aCgpKSk7CisgICAgYXV0byBpbnNlcnRSdWxl
UmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGluZGV4LnZhbHVlX29yKGxlbmd0
aCgpKSk7CiAgICAgaWYgKGluc2VydFJ1bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBpbnNlcnRSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCAzYzdjOGQxNWI0ZDEzZDUxOGNiMzhkZmI5Y2ViNDE1MmNlNjZl
NzZhLi4zNWQyY2Y2NTEyYjZhYmNkNTdjYWE3ZGU3MDBlN2Q4OTY3ZWY4NDVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC02ODcsNyArNjg3LDcgQEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRv
Vmlld0lmTm90VmlzaWJsZShib29sIGNlbnRlcklmTm90VmlzaWJsZSkKIAogdm9pZCBFbGVtZW50
OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJu
IHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZU9yKDApLCBvcHRpb25zLnRvcC52YWx1ZU9yKDAp
KTsKKyAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlX29yKDApLCBvcHRpb25z
LnRvcC52YWx1ZV9vcigwKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZU5v
bkZpbml0ZVZhbHVlKGRvdWJsZSBmKQpAQCAtMzAyOCw3ICszMDI4LDcgQEAgVVJMIEVsZW1lbnQ6
OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiAKIGludCBFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2VyKGdl
dEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFyc2VI
VE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlX29yKDApOwogfQog
CiB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZSkKQEAgLTMwMzgsNyArMzAzOCw3IEBAIHZvaWQgRWxl
bWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgaW50IHZhbHVlCiAKIHVuc2lnbmVkIEVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQg
RWxlbWVudDo6c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCB1bnNpZ25lZCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmNwcAppbmRleCBmMTcwMDFmYjI2OWJiYzE5YmM4NjI3NGU1N2YyZDU1YWYxYzZk
ZjRkLi4zMjU1NzlkY2M0MzBmN2ZhZmQ3MDE5OGMyZGU4YzdlNzEwYzZkYjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC04MCw5ICs4MCw5IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5p
dCYgaW5pdCkKICAgICAgICAgb3B0aW9ucyB8PSBDaGlsZExpc3Q7CiAgICAgaWYgKGluaXQuc3Vi
dHJlZSkKICAgICAgICAgb3B0aW9ucyB8PSBTdWJ0cmVlOwotICAgIGlmIChpbml0LmF0dHJpYnV0
ZU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQorICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVl
LnZhbHVlX29yKGZhbHNlKSkKICAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRWYWx1ZTsK
LSAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCisgICAg
aWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVlX29yKGZhbHNlKSkKICAgICAgICAg
b3B0aW9ucyB8PSBDaGFyYWN0ZXJEYXRhT2xkVmFsdWU7CiAKICAgICBIYXNoU2V0PEF0b21pY1N0
cmluZz4gYXR0cmlidXRlRmlsdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Ub2tlbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCmlu
ZGV4IGVjN2NjNDEwNDEyMzVhZjVmY2I5OTYxODQ3NzY5ZDNlNTdmOGExMTQuLmE0MjdkMGIzMDRm
ZjY0NmNlMmIxOWUwYTRhM2QxYThkNDZiYmIwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxp
c3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29sPgogICAg
IGF1dG8mIHRva2VucyA9IHRoaXMtPnRva2VucygpOwogCiAgICAgaWYgKHRva2Vucy5jb250YWlu
cyh0b2tlbikpIHsKLSAgICAgICAgaWYgKCFmb3JjZS52YWx1ZU9yKGZhbHNlKSkgeworICAgICAg
ICBpZiAoIWZvcmNlLnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAgICAgdG9rZW5zLnJlbW92
ZUZpcnN0KHRva2VuKTsKICAgICAgICAgICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9t
VG9rZW5zKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBmNDAzZjIzMDUxYjAyMDZhMjNlM2I4NjU3Yzc1M2Uw
NzBiNzJhOTdlLi5iNWQxYmMzM2VjMWFlYjM3NjViNTNlMTc3NGQ1NmM1OGVjMzU0YTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE3NjUsNyArMTc2NSw3
IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJp
bmcmIG5ld1ZhbHVlKQogewogICAgIHVuc2lnbmVkIG9sZEVmZmVjdGl2ZU1heExlbmd0aCA9IGVm
ZmVjdGl2ZU1heExlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5v
bk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0
TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3Io
LTEpKTsKICAgICBpZiAob2xkRWZmZWN0aXZlTWF4TGVuZ3RoICE9IGVmZmVjdGl2ZU1heExlbmd0
aCgpKQogICAgICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKQEAgLTE3NzcsNyArMTc3Nyw3
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5n
dGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAg
aW50IG9sZE1pbkxlbmd0aCA9IG1pbkxlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWluTGVuZ3Ro
KHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAg
IGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1
ZSkudmFsdWVfb3IoLTEpKTsKICAgICBpZiAob2xkTWluTGVuZ3RoICE9IG1pbkxlbmd0aCgpKQog
ICAgICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDFmZGJjNTE4NGFiNjc2YzUzNWQ1MmU0MmQwZWMz
MDk2NDA1MmU0NjQuLmJjZWI1OWE2Zjg1OWU1ZTBhNjRiNjM5YmY1YTEzMjI5YzUyZTlhYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMjA1LDEz
ICsyMDUsMTMgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWMKIAogdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgo
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAg
IHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWluTGVu
Z3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewotICAg
IGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1
ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0
eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAyNWQ5YjJiZTZmOWYzNTNmMDkzOWZlZWM4ZjJh
MmI5YTMwYjlkZjUxLi43YTdlNzE4NWViYTYyN2NiYWM2ODFjYjFmZjk2N2I5NGJhOWI0ZDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQg
eCwKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZs
b2F0UG9pbnQoeCwgeSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRl
KCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQoRmxvYXRQb2ludCh4LCB5KSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3Jt
ZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgs
IGZsb2F0IHgKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3Rh
dGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9
IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5z
Zm9ybWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDNlNzk4OWQ3Y2FjZjFiZGIxNzM2N2M4ZGE4N2RiZWMz
YjEwZjdhYWYuLjBiYzhiMDc5YzQ4Y2ZhN2Q2ZDJlMGIxMDE5ZTU2ODI3NzU5ZWRjZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTE1NCw3
ICsxNTQsNyBAQCBpbmxpbmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUodW5z
aWduZWQgdmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZQogaW5saW5lIHVuc2lnbmVkIGxpbWl0
VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKFN0cmluZ1ZpZXcgc3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRl
ZmF1bHRWYWx1ZSA9IDApCiB7CiAgICAgQVNTRVJUKGRlZmF1bHRWYWx1ZSA8PSBtYXhIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKTsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSkudmFsdWVPcihkZWZhdWx0VmFsdWUpOworICAgIHVuc2ln
bmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0cmluZ1ZhbHVlKS52YWx1
ZV9vcihkZWZhdWx0VmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRp
dmVJbnRlZ2VyKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDExYTQ4ZDczY2EzNzhm
YjU0YThlZWRkODhlNmM3NjhhMjNmOTBlMTIuLmJhZTFmYjI5NmE4MmNhNDA3ZGMyZDJmMTVkMTI2
MGViMzQyZTdiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXMKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nl
c3NSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAg
IGlmIChtX2FzeW5jKSB7Ci0gICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IENyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlcigqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1fcHJl
ZmxpZ2h0Q2hlY2tlci5lbXBsYWNlKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAg
bV9wcmVmbGlnaHRDaGVja2VyLT5zdGFydFByZWZsaWdodCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjllZjZlMDllN2Iz
ODAwNzljZThlN2M3MWZhNmRmY2UxZDMwMzYwZi4uYTk4YWRiZmQ0MjJlMzk5NmI4ODFjZDRlM2I3
MDY3NDIxZmE0M2QyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0z
NDYsNyArMzQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dl
cmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVy
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0
b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCiB7Ci0gICAgTmV3RnJhbWVPcGVuZXJQb2xp
Y3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVPcihzaG91bGRTZW5k
UmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3Vw
cHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOworICAgIE5ld0ZyYW1lT3BlbmVy
UG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gb3BlbmVyUG9saWN5LnZhbHVlX29yKHNob3Vs
ZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5
OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAgICAgdXJsU2VsZWN0
ZWQoRnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IFJlc291cmNlUmVxdWVzdCh1cmwpLCBwYXNzZWRUYXJnZXQsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxp
ZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5lclBvbGljeSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkph
dmFTY3JpcHRVUkwsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGRvd25sb2FkQXR0cmli
dXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IDNhMmY3NTkwMzc1OTY3ZmRiZWQ3MWQwZTQyM2IyZDcyNzgzMmQyYWMuLjkxMGE1MGI3N2Fm
MDNkZTI3M2MzMTkwY2U2NzgzN2NiZTc3Yzk4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTE0OTUsNyArMTQ5NSw3IEBAIGRvdWJsZSBET01XaW5kb3c6OmRldmljZVBpeGVsUmF0
aW8oKSBjb25zdAogCiB2b2lkIERPTVdpbmRvdzo6c2Nyb2xsQnkoY29uc3QgU2Nyb2xsVG9PcHRp
b25zJiBvcHRpb25zKSBjb25zdAogewotICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQu
dmFsdWVPcigwKSwgb3B0aW9ucy50b3AudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHNjcm9sbEJ5
KG9wdGlvbnMubGVmdC52YWx1ZV9vcigwKSwgb3B0aW9ucy50b3AudmFsdWVfb3IoMCkpOwogfQog
CiB2b2lkIERPTVdpbmRvdzo6c2Nyb2xsQnkoZG91YmxlIHgsIGRvdWJsZSB5KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBlMzVhMjM3ZTRkODMzYzUyYzUw
MGVmNjVkOGY1MGNmMjUwNGZkMjQzLi4xY2M3OGU2ZjVjYTVhZTY2ZjQ1ZmJjZDMxNWFiMzNlOTNm
NDkyYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNTcyLDcg
KzU3Miw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29u
c3QKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGVuY29kZUZvckZpbGVOYW1lKG1faG9zdCkpOwogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmROdW1iZXIobV9wb3J0LnZhbHVlT3IoMCkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TnVtYmVyKG1fcG9ydC52YWx1ZV9vcigwKSk7CiAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
CmluZGV4IGI1ZDg5OWJlYTFlYjgxNWNiMDMwZWEwYzIwNDkxNzJlYTc5MzQ2ZTIuLjE5ODdiY2Iw
OTZlYzc4ZGM2YmRjZmI5NWEzMGU3ZThjM2YxYzRhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgU2VjdXJpdHlPcmlnaW5E
YXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJgogI2lmICFMT0dfRElTQUJMRUQKIFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRl
YnVnU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjov
LyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZU9yKDApKSk7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAiOiIsIFN0cmluZzo6bnVtYmVy
KHBvcnQudmFsdWVfb3IoMCkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkhhc2guaAppbmRleCA1MGViMjk1NmYyM2I3Y2YxMmVjYjkwY2Y3NmZkOGI5ODFl
YTNiNTVhLi5iN2E1YWVmZWRhMWI2ZGVmZDcyYTliZTdjNmJhMjA2MmUxYmQyZDk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKQEAgLTQwLDcgKzQwLDcgQEAgc3Ry
dWN0IFNlY3VyaXR5T3JpZ2luSGFzaCB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9
IHsKICAgICAgICAgICAgIG9yaWdpbi0+cHJvdG9jb2woKS5pbXBsKCkgPyBvcmlnaW4tPnByb3Rv
Y29sKCkuaW1wbCgpLT5oYXNoKCkgOiAwLAogICAgICAgICAgICAgb3JpZ2luLT5ob3N0KCkuaW1w
bCgpID8gb3JpZ2luLT5ob3N0KCkuaW1wbCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgb3Jp
Z2luLT5wb3J0KCkudmFsdWVPcigwKQorICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVf
b3IoMCkKICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9y
eTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDdjNzZhZTEyODIwOGY4NDNjZTcyN2Q0YzZlMWI0YTZl
MzZiOTVmNTMuLmU2ZDg2OGMwZGMwNjk2Y2U5NWU4NTI4ODBhMzY3YzQ4NjAxYmRjMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCkBAIC0xNTgsOCArMTU4LDggQEAgV2lu
ZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1
cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUgPSBm
YWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0cnVlOwogCi0gICAgZmxvYXQgd2lkdGggPSBm
bG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxh
YmxlUmVjdC53aWR0aCgpKS52YWx1ZU9yKDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20g
ZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKLSAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZl
YXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJl
Y3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFt
ZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJl
KGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lk
dGgoKSkudmFsdWVfb3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXpl
IG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0
dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQo
KSkudmFsdWVfb3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9m
IGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMud2lkdGggPSB3aWR0aDsKICAgICBmZWF0
dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBAIC0xNjcsMTYgKzE2NywxNiBAQCBXaW5kb3dGZWF0dXJl
cyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcs
IGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLnggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJk
aWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxhYmxlUmVjdC54KCksIHNjcmVlbkF2YWlsYWJsZVJlY3Qu
bWF4WCgpIC0gd2lkdGgpOwogICAgIGZlYXR1cmVzLnkgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNN
YXAsICJkaWFsb2d0b3AiLCBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSwgc2NyZWVuQXZhaWxhYmxl
UmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFw
LCAiY2VudGVyIikudmFsdWVPcih0cnVlKSkgeworICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJl
c01hcCwgImNlbnRlciIpLnZhbHVlX29yKHRydWUpKSB7CiAgICAgICAgIGlmICghZmVhdHVyZXMu
eCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSArIChz
Y3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyOwogICAgICAgICBpZiAoIWZl
YXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC55
KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtIGhlaWdodCkgLyAyOwogICAgIH0K
IAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVz
aXphYmxlIikudmFsdWVPcihmYWxzZSk7Ci0gICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUg
PSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlT3IodHJ1ZSk7Ci0gICAg
ZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic3Rh
dHVzIikudmFsdWVPcihmYWxzZSk7CisgICAgZmVhdHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1
cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZV9vcihmYWxzZSk7CisgICAgZmVhdHVy
ZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIp
LnZhbHVlX29yKHRydWUpOworICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29sRmVh
dHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlX29yKGZhbHNlKTsKIAogICAgIHJldHVy
biBmZWF0dXJlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcAppbmRleCBhZTk3NTE4YjE2OWUxMDFjN2JmZWMxODMwMjg4MzEwMzBhODJl
NmI4Li4xYTNiNjNmNTUzODA0NGJmYzkzZWNkMWQwM2UxYjZiNGY4YmVlMmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0zMDks
NyArMzA5LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIGlmIChpc0xvYWRpbmdDdXN0
b21Gb250cygpICYmIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9PSBEb05vdFBhaW50SWZGb250
Tm90UmVhZHkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb24g
PSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0
by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9
IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25j
ZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2Vl
IGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4KICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5n
dGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3Ro
KCkpOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAg
Ly8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwg
cnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTAwMDUwCkBAIC00OTIsNyArNDkyLDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VD
aGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCYgd2lkdGgpIGNvbnN0CiAKIHZvaWQgRm9udENhc2Nh
ZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRv
KSBjb25zdAogewotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVu
Z3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0
aCgpKTsKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAg
IC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFs
IHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9i
LzEwMDA1MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcAppbmRleCA4OThkNjViZDUyNGVlNjM1NmYyOWEwMzA1Yzg4ZmUxMDEwYzZjN2JjLi5mZjA5
NWI1MjE5ZmFhMzNjMWI2MjIxZGZhZDVjZTUwY2VkMGMwMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNDAwLDcgKzQwMCw3IEBA
IEludFJlY3QgU2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5z
Zm9ybWVkUG9seWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3Qp
KTsKICAgICAgICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwotICAgICAgICBs
YXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOworICAgICAgICBsYXll
clJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBRdWFkKHRyYW5zZm9ybWVkUG9seWdvbikuYm91bmRpbmdCb3goKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBsYXllclJlY3QgPSBzaGFkb3dlZFJlY3Q7CiAgICAgICAgIGxheWVyUmVjdC5tb3Zl
KG1fb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDUzMjRjMjA4Y2IxOGRhODdk
MWUyOGEwNDA4ZTE5ODZmOTE1MTgyZmEuLmJjMWQwMGY0NWYzNmMyMTc1OTUyMDg4NzZlZTY5OTlk
OTgwODRhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM1Miw3ICsyMzUyLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091
dHB1dChHcmFwaGljc0NvbnRleHQmIGMKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdl
R2V0V2lkdGgobV9sYXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdl
LmdldCgpKSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gW2ZpcnN0RW5h
YmxlZFZpZGVvVHJhY2sgcHJlZmVycmVkVHJhbnNmb3JtXTsKLSAgICBGbG9hdFJlY3QgdHJhbnNm
b3JtZWRPdXRwdXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUmVjdChvdXRwdXRSZWN0KTsKIAogICAgIGNvbnRleHQuY29uY2F0Q1RN
KHZpZGVvVHJhbnNmb3JtKTsKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFn
ZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBpbWFnZVJl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQppbmRleCBmYTdjYjcxZjQxYThhMjU4ZWYwZTRkNjAwOWMyY2Q3NmNiM2VjMGQ4
Li5hMDFiZGU5NTIyMDBmYjU4OTJkMDY0YjcwOWNhM2MwYWNlYTBhMGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAt
MTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2Vla1Rv
VGltZShNZWRpYVRpbWUgdGltZSkKIAogRmxvYXRTaXplIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpuYXR1cmFsU2l6ZSgpCiB7Ci0gICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZU9yKEZs
b2F0U2l6ZSgpKTsKKyAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlX29yKEZsb2F0U2l6ZSgp
KTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlG
b3JNb3JlU2FtcGxlcyhpbnQgdHJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4IDI1YTVkYmIxMjYxODM0NzUzZDU0NzY4
ODkwODQwNWJmZjcwMjA5OGMuLjNhZmZkNDIxZTBlM2Q3MzE4N2YyZTM0MjdmYjZkNGYxM2ViNTg1
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXIuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGaWx0ZXI+IHsKICAgICB2b2lkIHNldEZpbHRlclNjYWxlKGZsb2F0IHNjYWxlKSB7IG1fZmls
dGVyU2NhbGUgPSBzY2FsZTsgfQogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0
ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0KLSAgICBG
bG9hdFBvaW50IG1hcEFic29sdXRlUG9pbnRUb0xvY2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
T3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsgfQorICAgIEZsb2F0UG9pbnQg
bWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29u
c3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsgfQogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBz
ZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmlu
Z01vZGUgPSByZW5kZXJpbmdNb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4
IDg5NWQzN2YzOWNmMDU3MmY1ZDQ5NmUwZWI2MGFiYjFmMjkwNmZhNWMuLjQ5MTBjZjBhYzdlMmQ4
NzYwMDE5OGI4NDk1ZTU4ZDczZjhhMTUyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFu
ZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3QgVGV4dHVyZU1hcHBlclBhaW4KICAgICAgICAgVGV4
dHVyZU1hcHBlclBhaW50T3B0aW9ucyByZXBsaWNhT3B0aW9ucyhvcHRpb25zKTsKICAgICAgICAg
cmVwbGljYU9wdGlvbnMudHJhbnNmb3JtCiAgICAgICAgICAgICAubXVsdGlwbHkobV9zdGF0ZS5y
ZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKQotICAgICAgICAgICAg
Lm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJl
bnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkpOwogICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJlbihyZXBsaWNhT3B0aW9ucyk7
CiAgICAgfQogCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dEFuaW1hdGVkT3BhY2l0eShmbG9hdCBvcGFjaXR5KQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0oKQogewotICAgIHJldHVybiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3Jt
LmNvbWJpbmVkKCkpLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVy
c2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICByZXR1cm4gVHJhbnNm
b3JtYXRpb25NYXRyaXgobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5j
b21iaW5lZCgpKS5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogfQogCiB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCkBAIC03MzEsNyArNzMxLDcgQEAgVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFw
cGVyTGF5ZXI6OmZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNvbnN0IEZsb2EKIEZsb2F0
U2l6ZSBUZXh0dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9sbE9mZnNldChjb25zdCBGbG9hdFNpemUm
IG9mZnNldCkKIHsKICAgICBkb3VibGUgemVyb1gsIHplcm9ZLCBvZmZzZXRYLCBvZmZzZXRZOwot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IG1fY3VycmVudFRyYW5zZm9ybS5j
b21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IG1fY3VycmVudFRyYW5zZm9ybS5jb21i
aW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKICAgICB0
cmFuc2Zvcm0ubWFwKDAsIDAsIHplcm9YLCB6ZXJvWSk7CiAgICAgdHJhbnNmb3JtLm1hcChvZmZz
ZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpLCBvZmZzZXRYLCBvZmZzZXRZKTsKICAgICByZXR1
cm4gRmxvYXRTaXplKG9mZnNldFggLSB6ZXJvWCwgb2Zmc2V0WSAtIHplcm9ZKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5k
ZXggNzQ4YWQ4ZTllMzgwYTNlZTcyYTZhMDIxNTgyNGVmOGQ0MTdlYzMxMC4uNDYyYjYyZWQ0Nzc3
YmY2MzU3ZDU0NDM0YTgxZWU1ZmZhODMyOWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTk0Nyw3ICs5NDcsNyBA
QCBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVj
dCgpCiAgICAgLy8gUmV0dXJuIGEgcHJvamVjdGlvbiBvZiB0aGUgdmlzaWJsZSByZWN0IChzdXJm
YWNlIGNvb3JkaW5hdGVzKSBvbnRvIHRoZSBsYXllcidzIHBsYW5lIChsYXllciBjb29yZGluYXRl
cykuCiAgICAgLy8gVGhlIHJlc3VsdGluZyBxdWFkIG1pZ2h0IGJlIHNxdWV3ZWQgYW5kIHRoZSB2
aXNpYmxlIHJlY3QgaXMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIHF1YWQsCiAgICAgLy8gc28g
aXQgbWlnaHQgc3ByZWFkIGZ1cnRoZXIgdGhhbiB0aGUgcmVhbCB2aXNpYmxlIGFyZWEgKGFuZCB0
aGVuIGV2ZW4gbW9yZSBhbXBsaWZpZWQgYnkgdGhlIGNvdmVyIHJlY3QgbXVsdGlwbGllcikuCi0g
ICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNv
bWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAg
IEFTU0VSVChtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21i
aW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAgICAg
RmxvYXRSZWN0IHJlY3QgPSBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0uY2xhbXBlZEJvdW5kc09m
UHJvamVjdGVkUXVhZChGbG9hdFF1YWQobV9jb29yZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVj
dCgpKSk7CiAgICAgY2xhbXBUb0NvbnRlbnRzUmVjdElmUmVjdElzSW5maW5pdGUocmVjdCwgc2l6
ZSgpKTsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChyZWN0KTsKQEAgLTExMzksNyArMTEz
OSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRW
aXNpYmxlUmVjdCgpCiAgICAgbV9sYXllclRyYW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShj
aGlsZHJlblRyYW5zZm9ybSgpKTsKICAgICBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVUcmFuc2Zv
cm1zKHBhcmVudCgpID8gZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqcGFyZW50
KCkpLm1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWRGb3JDaGlsZHJlbigpIDogVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSk7CiAKLSAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSk7CisgICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21i
aW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKIAogICAg
IC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0
b3JlVmlzaWJsZVJlY3QuCiAgICAgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggZTc2M2NjMTM5M2RiY2RlNjExMzIxMThmZmI0
MzE5MWM2NDhlNDVlNC4uZjBlMmRhMzE5M2M0ZTg5OTExZmY3ZmNiNmRiOGVhODQ2NDg3OTBlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBGbG9hdFBv
aW50IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRQb2ludChib29sKiB3YXNDbGFtcGVkKSBjb25zdAog
ICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVjdGlvbikKICAgICAgICAg
cmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm1hcFBvaW50KHBvaW50KTsKIAotICAgIHJl
dHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOworICAgIHJldHVy
biBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFtcGVkKTsKIH0KIAogRmxvYXRR
dWFkIFRyYW5zZm9ybVN0YXRlOjptYXBwZWRRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CkBA
IC0yMTgsNyArMjE4LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQm
IHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wKICAgICBpZiAoZGlyZWN0
aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQogICAgICAgICBxdWFkID0gbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybS0+bWFwUXVhZChxdWFkKTsKIAotICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9q
ZWN0UXVhZChxdWFkLCB3YXNDbGFtcGVkKTsKKyAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybS0+aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RR
dWFkKHF1YWQsIHdhc0NsYW1wZWQpOwogfQogCiB2b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVu
V2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwgYm9vbCogd2FzQ2xh
bXBlZCkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0
aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwgYm9vbCogdwogICAgICAg
ICB9CiAKICAgICB9IGVsc2UgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNl
VHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsK
KyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJz
ZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgICAgICBpZiAobV9tYXBQ
b2ludCkKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclBvaW50ID0gaW52ZXJzZVRyYW5zZm9ybS5w
cm9qZWN0UG9pbnQobV9sYXN0UGxhbmFyUG9pbnQpOwogICAgICAgICBpZiAobV9tYXBRdWFkKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHAKaW5kZXggMWYxYzM4MDU1NTExMWY0NGExZjFlN2U2ZTAzMmEyNzMwZGQ5NGJmZC4uYjM4
ZTcwNzIwMjM4ZTBjOGVlN2VjYjBkZWI5MDZjMmExYjI1NjU4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY29tcHV0ZUN1cnJlbnRBZ2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0CiAgICAgLy8gTm8gY29tcGVuc2F0aW9u
IGZvciBsYXRlbmN5IGFzIHRoYXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGlj
ZS4KICAgICBhdXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKICAgICBhdXRvIGFwcGFy
ZW50QWdlID0gZGF0ZVZhbHVlID8gc3RkOjptYXgoMHVzLCBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vj
b25kcz4ocmVzcG9uc2VUaW1lIC0gKmRhdGVWYWx1ZSkpIDogMHVzOwotICAgIGF1dG8gYWdlVmFs
dWUgPSByZXNwb25zZS5hZ2UoKS52YWx1ZU9yKDB1cyk7CisgICAgYXV0byBhZ2VWYWx1ZSA9IHJl
c3BvbnNlLmFnZSgpLnZhbHVlX29yKDB1cyk7CiAgICAgYXV0byBjb3JyZWN0ZWRJbml0aWFsQWdl
ID0gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKTsKICAgICBhdXRvIHJlc2lkZW50VGlt
ZSA9IGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihzeXN0ZW1fY2xvY2s6Om5vdygpIC0gcmVz
cG9uc2VUaW1lKTsKICAgICByZXR1cm4gY29ycmVjdGVkSW5pdGlhbEFnZSArIHJlc2lkZW50VGlt
ZTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVG
cmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBy
ZXR1cm4gKm1heEFnZTsKIAogICAgIGF1dG8gZGF0ZSA9IHJlc3BvbnNlLmRhdGUoKTsKLSAgICBh
dXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZhbHVlT3IocmVzcG9uc2VUaW1lKTsKKyAgICBhdXRv
IGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZhbHVlX29yKHJlc3BvbnNlVGltZSk7CiAgICAgaWYgKGF1
dG8gZXhwaXJlcyA9IHJlc3BvbnNlLmV4cGlyZXMoKSkKICAgICAgICAgcmV0dXJuIGR1cmF0aW9u
X2Nhc3Q8bWljcm9zZWNvbmRzPigqZXhwaXJlcyAtIGVmZmVjdGl2ZURhdGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMjNhZGNkMzQzMTcyMWQw
NjViYjIyM2UyNjY4ZDhhMDVmNTIwMjU1Ny4uZjdhZWE4NDI2ZjJhMTM2MGE3ZTNjYTc4YjkwMmY5
NGUwOGM0MDQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cApAQCAtMTAxNyw3ICsxMDE3LDcgQEAgZmxvYXQgSW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JP
ZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogCiBTdHJpbmdWaWV3IElubGluZVRleHRCb3g6
OnN1YnN0cmluZ1RvUmVuZGVyKE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVycmlkaW5nTGVuZ3RoKSBj
b25zdAogewotICAgIHJldHVybiBTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJp
bmcoc3RhcnQoKSwgb3ZlcnJpZGluZ0xlbmd0aC52YWx1ZU9yKGxlbigpKSk7CisgICAgcmV0dXJu
IFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhzdGFydCgpLCBvdmVycmlk
aW5nTGVuZ3RoLnZhbHVlX29yKGxlbigpKSk7CiB9CiAKIFN0cmluZyBJbmxpbmVUZXh0Qm94Ojpo
eXBoZW5hdGVkU3RyaW5nRm9yVGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlv
bmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVMZW5ndGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRJbmZvLmgKaW5kZXggNTExYTZiY2M1NGZhODE0OTc0YzIwZTZjZjg4ZDEzMWMyZWI4NDY0
Zi4uNGFiMzg5MzVlOTRiOGYzMDYyZWUwOWQzYTIyMjdkMmE4ODk0MGZkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludEluZm8uaApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0cnVjdCBQYWludElu
Zm8gewogICAgICAgICBpZiAocmVjdC5pc0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3RvclRyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7
CisgICAgICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3QpKTsK
ICAgICAgICAgcmVjdC5zZXRMb2NhdGlvbihMYXlvdXRQb2ludCh0cmFuZm9ybWVkUmVjdC5sb2Nh
dGlvbigpKSk7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShMYXlvdXRTaXplKHRyYW5mb3JtZWRSZWN0
LnNpemUoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5k
ZXggMDY2Y2ZiOGZiYmRlNTc1ZGY3NGQ4YTNlOWMyODVkZDMzYmNhYzU1OS4uNGQ0ZGU4MTc5NmE5
YTdiYjAwOWQ5ZDllMDRkMWNjYjEwOGZlMjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNh
CiAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVzdWx0OwogICAgICAgICBpZiAoY2hlY2tNaW5N
YXhIZWlnaHQpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgaW50cmluc2ljSGVpZ2h0ID0gY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpOwot
ICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWlu
T3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0
KS52YWx1ZU9yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKKyAgICAgICAgICAgIGhlaWdodFJl
c3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFsdWVfb3IoY29tcHV0ZWRW
YWx1ZXMubV9leHRlbnQpOwogICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29uc3RyYWluTG9n
aWNhbEhlaWdodEJ5TWluTWF4KGhlaWdodFJlc3VsdCwgaW50cmluc2ljSGVpZ2h0KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBvbmx5IHRpbWVzIHdlIGRvbid0IGNoZWNr
IG1pbi9tYXggaGVpZ2h0IGFyZSB3aGVuIGEgZml4ZWQgbGVuZ3RoIGhhcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cAppbmRleCA4MmFkYmNkNDFmMDk4OGE4YjQ5ZWRmMDllZjkyMWUwN2JmOWNkMmQ0Li41NjNlNTM2
ZDZhMTY2MDJmNGNlOTQ1MDM5NjQwZjQxMGYyZTljNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAt
NDMzLDcgKzQzMyw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRI
b3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIAogICAgICAgICAgICAgLy8gVXBk
YXRlIG91ciBoZWlnaHQgYW5kIG92ZXJmbG93IGhlaWdodC4KICAgICAgICAgICAgIGlmIChzdHls
ZSgpLmJveEFsaWduKCkgPT0gQkJBU0VMSU5FKSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWln
aHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVp
Z2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwogICAgICAgICAgICAgICAgIGFzY2VudCAr
PSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50
ID0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSAtIGFz
Y2VudDsKIApAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAg
ICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIHN0ZDo6bWF4PExheW91
dFVuaXQ+KDAsIChjb250ZW50SGVpZ2h0KCkgLSAoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPnZl
cnRpY2FsTWFyZ2luRXh0ZW50KCkpKSAvIDIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBjYXNlIEJCQVNFTElORTogewotICAgICAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hp
bGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9v
cihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwogICAgICAgICAgICAg
ICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwogICAgICAgICAgICAgICAgICAg
ICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgKG1heEFzY2VudCAtIGFzY2VudCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNDljYTJhY2QyODRhZjFjZDFmMmE3OWVjMDJiNzZh
MDM4OTQzM2RlMi4uNDRmMjdhM2QyMjQwMThjZmE5ZTQ5YzFkZDQ5NjFiOTQ4YWYyM2UyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0x
NzUsNyArMTc1LDcgQEAgc3RhdGljIGludCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRC
b3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb24KIAogaW50IFJlbmRlckZsZXhp
YmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewotICAgIGludCBiYXNl
bGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihzeW50aGVzaXplZEJhc2VsaW5lRnJv
bUNvbnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOworICAgIGludCBiYXNlbGluZSA9IGZpcnN0
TGluZUJhc2VsaW5lKCkudmFsdWVfb3Ioc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94
KCp0aGlzLCBkaXJlY3Rpb24pKTsKIAogICAgIGludCBtYXJnaW5Bc2NlbnQgPSBkaXJlY3Rpb24g
PT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCk7CiAgICAgcmV0
dXJuIGJhc2VsaW5lICsgbWFyZ2luQXNjZW50OwpAQCAtNjg1LDcgKzY4NSw3IEBAIExheW91dFVu
aXQgUmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNo
aWxkKFJlbmRlckJveCYKICAgICAgICAgQVNTRVJUKG1haW5BeGlzRXh0ZW50IC0gbWFpbkF4aXNC
b3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpID49IDApOwogICAgICAgICByZXR1
cm4gbWFpbkF4aXNFeHRlbnQgLSBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGls
ZChjaGlsZCk7CiAgICAgfQotICAgIHJldHVybiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGls
ZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgZmxleEJhc2lzKS52YWx1ZU9yKDApOworICAg
IHJldHVybiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVy
cmVkU2l6ZSwgZmxleEJhc2lzKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJs
ZUJveDo6bGF5b3V0RmxleEl0ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVmVjdG9yPExpbmVD
b250ZXh0PiYgbGluZUNvbnRleHRzKQpAQCAtODI1LDcgKzgyNSw3IEBAIGJvb2wgUmVuZGVyRmxl
eGlibGVCb3g6OnVwZGF0ZUF1dG9NYXJnaW5zSW5Dcm9zc0F4aXMoUmVuZGVyQm94JiBjaGlsZCwg
TGF5b3V0VW5pCiAKIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2Vu
dEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpCiB7Ci0gICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBj
aGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQo
Y2hpbGQpKTsKKyAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5l
KCkudmFsdWVfb3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKICAgICByZXR1cm4g
YXNjZW50ICsgZmxvd0F3YXJlTWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpOwogfQogCkBAIC05
MzAsMTIgKzkzMCwxMiBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGls
ZFNpemVGb3JNaW5BbmRNYXgoY29uc3QgUmVuZGVyQm94JiBjaGlsZAogICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IG1heEV4dGVudCA9IE51bGxvcHQ7CiAgICAgaWYgKG1heC5pc1NwZWNpZmllZE9y
SW50cmluc2ljKCkpIHsKICAgICAgICAgbWF4RXh0ZW50ID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50
Rm9yQ2hpbGQoY2hpbGQsIE1heFNpemUsIG1heCk7Ci0gICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6
bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY2hpbGRTaXplKSk7CisgICAgICAgIGNo
aWxkU2l6ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNoaWxkU2l6
ZSkpOwogICAgIH0KICAgICAKICAgICBMZW5ndGggbWluID0gaXNIb3Jpem9udGFsRmxvdygpID8g
Y2hpbGQuc3R5bGUoKS5taW5XaWR0aCgpIDogY2hpbGQuc3R5bGUoKS5taW5IZWlnaHQoKTsKICAg
ICBpZiAobWluLmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4KGNoaWxkU2l6ZSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNp
emUsIG1pbikudmFsdWVPcihjaGlsZFNpemUpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNo
aWxkU2l6ZSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIG1p
bikudmFsdWVfb3IoY2hpbGRTaXplKSk7CiAgICAgCiAgICAgaWYgKCFpc0ZsZXhpYmxlQm94SW1w
bCgpICYmIG1pbi5pc0F1dG8oKSAmJiBtYWluQXhpc092ZXJmbG93Rm9yQ2hpbGQoY2hpbGQpID09
IE9WSVNJQkxFICYmICEoaXNDb2x1bW5GbG93KCkgJiYgaXM8UmVuZGVyRmxleGlibGVCb3g+KGNo
aWxkKSkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ1NTIGZs
ZXhib3ggc2VjdGlvbiA0LjUgd2hpY2ggZGVmaW5lcyB0aGUgbWluaW11bSBzaXplIG9mICJwdXJl
IiBmbGV4CkBAIC05NDcsMTMgKzk0NywxMyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94
OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY29uc3QgUmVuZGVyQm94JiBjaGlsZAogICAg
ICAgICBBU1NFUlQoY29udGVudFNpemUgPj0gMCk7CiAgICAgICAgIGlmIChjaGlsZC5oYXNBc3Bl
Y3RSYXRpbygpICYmIGNoaWxkLmludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA+IDApCiAgICAgICAg
ICAgICBjb250ZW50U2l6ZSA9IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlz
TWluQW5kTWF4KGNoaWxkLCBjb250ZW50U2l6ZSk7Ci0gICAgICAgIGNvbnRlbnRTaXplID0gc3Rk
OjptaW4oY29udGVudFNpemUsIG1heEV4dGVudC52YWx1ZU9yKGNvbnRlbnRTaXplKSk7CisgICAg
ICAgIGNvbnRlbnRTaXplID0gc3RkOjptaW4oY29udGVudFNpemUsIG1heEV4dGVudC52YWx1ZV9v
cihjb250ZW50U2l6ZSkpOwogICAgICAgICAKICAgICAgICAgTGVuZ3RoIG1haW5TaXplID0gaXNI
b3Jpem9udGFsRmxvdygpID8gY2hpbGQuc3R5bGUoKS53aWR0aCgpIDogY2hpbGQuc3R5bGUoKS5o
ZWlnaHQoKTsKICAgICAgICAgaWYgKG1haW5BeGlzTGVuZ3RoSXNEZWZpbml0ZShjaGlsZCwgbWFp
blNpemUpKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHJlc29sdmVkTWFpblNpemUgPSBjb21w
dXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgbWFp
blNpemUpLnZhbHVlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZWRNYWluU2l6ZSA+PSAw
KTsKLSAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29s
dmVkTWFpblNpemUsIG1heEV4dGVudC52YWx1ZU9yKHJlc29sdmVkTWFpblNpemUpKTsKKyAgICAg
ICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFpblNp
emUsIG1heEV4dGVudC52YWx1ZV9vcihyZXNvbHZlZE1haW5TaXplKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBzdGQ6Om1pbihzcGVjaWZpZWRTaXplLCBjb250ZW50
U2l6ZSkpOwogICAgICAgICB9IGVsc2UgaWYgKHVzZUNoaWxkQXNwZWN0UmF0aW8oY2hpbGQpKSB7
CiAgICAgICAgICAgICBMZW5ndGggY3Jvc3NTaXplTGVuZ3RoID0gaXNIb3Jpem9udGFsRmxvdygp
ID8gY2hpbGQuc3R5bGUoKS5oZWlnaHQoKSA6IGNoaWxkLnN0eWxlKCkud2lkdGgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA1ZjBkZDA0N2JhOTA3OTJlMzFj
NDVmZmVhODAyZjc5Njc0MGNmZWE0Li5iNjAwMmQyYjEzMjU1ODY3MmFiMzdhNzg5YjBmMzgwMjNk
NGQ4N2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC03MSw3
ICs3MSw3IEBAIGNsYXNzIEdyaWRUcmFjayB7CiAKICAgICB2b2lkIHNldEdyb3d0aExpbWl0KExh
eW91dFVuaXQgZ3Jvd3RoTGltaXQpCiAgICAgewotICAgICAgICBtX2dyb3d0aExpbWl0ID0gZ3Jv
d3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0
LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlT3IoZ3Jvd3RoTGltaXQpKTsKKyAgICAgICAgbV9ncm93
dGhMaW1pdCA9IGdyb3d0aExpbWl0ID09IGluZmluaXR5ID8gZ3Jvd3RoTGltaXQgOiBzdGQ6Om1p
bihncm93dGhMaW1pdCwgbV9ncm93dGhMaW1pdENhcC52YWx1ZV9vcihncm93dGhMaW1pdCkpOwog
ICAgICAgICBlbnN1cmVHcm93dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VTaXplKCk7CiAgICAgfQog
CkBAIC02ODYsNyArNjg2LDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3QKIAogICAgIGlmIChs
b2dpY2FsSGVpZ2h0TGVuZ3RoLmlzRml0Q29udGVudCgpKSB7CiAgICAgICAgIExheW91dFVuaXQg
ZmlsbEF2YWlsYWJsZUV4dGVudCA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2Fs
SGVpZ2h0KEV4Y2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWluKG1fbWF4Q29udGVudEhlaWdodC52YWx1ZU9yKDApLCBzdGQ6Om1heChtX21pbkNvbnRlbnRI
ZWlnaHQudmFsdWVPcigwKSwgZmlsbEF2YWlsYWJsZUV4dGVudCkpOworICAgICAgICByZXR1cm4g
c3RkOjptaW4obV9tYXhDb250ZW50SGVpZ2h0LnZhbHVlX29yKDApLCBzdGQ6Om1heChtX21pbkNv
bnRlbnRIZWlnaHQudmFsdWVfb3IoMCksIGZpbGxBdmFpbGFibGVFeHRlbnQpKTsKICAgICB9CiAK
ICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc0ZpbGxBdmFpbGFibGUoKSkKQEAgLTcwOSw3
ICs3MDksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNr
cyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aQogCiAgICAgLy8gR3JpZCBndXR0ZXJz
IHdlcmUgcmVtb3ZlZCBmcm9tIGZyZWVTcGFjZSBieSB0aGUgY2FsbGVyIChpZiBmcmVlU3BhY2Ug
aXMgZGVmaW5pdGUpLAogICAgIC8vIGJ1dCB3ZSBtdXN0IHVzZSB0aGVtIHRvIGNvbXB1dGUgcmVs
YXRpdmUgKGkuZS4gcGVyY2VudGFnZXMpIHNpemVzLgotICAgIExheW91dFVuaXQgbWF4U2l6ZSA9
IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVl
T3IoTGF5b3V0VW5pdCgpKSk7CisgICAgTGF5b3V0VW5pdCBtYXhTaXplID0gc3RkOjptYXgoTGF5
b3V0VW5pdCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoTGF5b3V0VW5p
dCgpKSk7CiAgICAgY29uc3QgYm9vbCBoYXNEZWZpbml0ZUZyZWVTcGFjZSA9IHNpemluZ0RhdGEu
c2l6aW5nT3BlcmF0aW9uID09IFRyYWNrU2l6aW5nOwogCiAgICAgLy8gMS4gSW5pdGlhbGl6ZSBw
ZXIgR3JpZCB0cmFjayB2YXJpYWJsZXMuCkBAIC0xMDI5LDEzICsxMDI5LDEzIEBAIExheW91dFVu
aXQgUmVuZGVyR3JpZDo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvCiAgICAgYm9vbCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkID0gdXBkYXRl
T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElu
bGluZURpcmVjdGlvbiwgc2l6aW5nRGF0YSk7CiAgICAgaWYgKGlzUm93QXhpcykgewogICAgICAg
ICBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxXaWR0aCA9IHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0
aW9uID09IFRyYWNrU2l6aW5nID8gY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hp
bGRJbmxpbmVEaXJlY3Rpb24sIGNoaWxkKSA6IG1hcmdpbkludHJpbnNpY0xvZ2ljYWxXaWR0aEZv
ckNoaWxkKGNoaWxkKTsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsV2lkdGhJ
blJlZ2lvblVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgb3ZlcnJpZGVDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbikudmFsdWVP
cigwKSwgKnRoaXMsIG51bGxwdHIpICsgbWFyZ2luTG9naWNhbFdpZHRoOworICAgICAgICByZXR1
cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgY2hpbGRN
aW5TaXplLCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQs
IGNoaWxkSW5saW5lRGlyZWN0aW9uKS52YWx1ZV9vcigwKSwgKnRoaXMsIG51bGxwdHIpICsgbWFy
Z2luTG9naWNhbFdpZHRoOwogICAgIH0KIAogICAgIGlmIChvdmVycmlkZVNpemVIYXNDaGFuZ2Vk
ICYmIChkaXJlY3Rpb24gIT0gRm9yQ29sdW1ucyB8fCBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlv
biAhPSBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24pKQogICAgICAgICBjaGlsZC5zZXROZWVkc0xh
eW91dChNYXJrT25seVRoaXMpOwogICAgIGNoaWxkLmxheW91dElmTmVlZGVkKCk7Ci0gICAgcmV0
dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXpl
LCBOdWxsb3B0KS52YWx1ZU9yKDApICsgY2hpbGQubWFyZ2luTG9naWNhbEhlaWdodCgpICsgY2hp
bGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOworICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9n
aWNhbEhlaWdodFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgTnVsbG9wdCkudmFsdWVfb3Io
MCkgKyBjaGlsZC5tYXJnaW5Mb2dpY2FsSGVpZ2h0KCkgKyBjaGlsZC5zY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0KCk7CiB9CiAKIGJvb2wgUmVuZGVyR3JpZDo6dXBkYXRlT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKSBjb25zdApA
QCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2Vk
VHJhY2tTaXppbmdGdW5jdGlvbnNGb3JOb25TcGFubmluZ0l0ZW1zKEdyaWQKICAgICB9IGVsc2Ug
aWYgKHRyYWNrU2l6ZS5oYXNNYXhDb250ZW50T3JBdXRvTWF4VHJhY2tCcmVhZHRoKCkpIHsKICAg
ICAgICAgTGF5b3V0VW5pdCBncm93dGhMaW1pdCA9IG1heENvbnRlbnRGb3JDaGlsZChncmlkSXRl
bSwgZGlyZWN0aW9uLCBzaXppbmdEYXRhKTsKICAgICAgICAgaWYgKHRyYWNrU2l6ZS5pc0ZpdENv
bnRlbnQoKSkKLSAgICAgICAgICAgIGdyb3d0aExpbWl0ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQs
IHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5maXRDb250ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3Ro
KCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApKSk7CisgICAgICAgICAg
ICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFj
a1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2YWls
YWJsZVNwYWNlKCkudmFsdWVfb3IoMCkpKTsKICAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQo
c3RkOjptYXgodHJhY2suZ3Jvd3RoTGltaXQoKSwgZ3Jvd3RoTGltaXQpKTsKICAgICB9CiB9CkBA
IC0xMzg3LDggKzEzODcsOCBAQCBzdGF0aWMgYm9vbCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3Rl
bnRpYWwoY29uc3QgR3JpZFRyYWNrKiB0cmFjazEsIGNvbnN0IEdyaWRUcgogICAgIGlmICh0cmFj
azFIYXNJbmZpbml0ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXAgfHwgdHJhY2sySGFzSW5maW5p
dGVHcm93dGhQb3RlbnRpYWxXaXRob3V0Q2FwKQogICAgICAgICByZXR1cm4gdHJhY2sySGFzSW5m
aW5pdGVHcm93dGhQb3RlbnRpYWxXaXRob3V0Q2FwOwogCi0gICAgTGF5b3V0VW5pdCB0cmFjazFM
aW1pdCA9IHRyYWNrMS0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZU9yKHRyYWNrMS0+Z3Jvd3RoTGlt
aXQoKSk7Ci0gICAgTGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGltaXRD
YXAoKS52YWx1ZU9yKHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CisgICAgTGF5b3V0VW5pdCB0cmFj
azFMaW1pdCA9IHRyYWNrMS0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZV9vcih0cmFjazEtPmdyb3d0
aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExp
bWl0Q2FwKCkudmFsdWVfb3IodHJhY2syLT5ncm93dGhMaW1pdCgpKTsKICAgICByZXR1cm4gKHRy
YWNrMUxpbWl0IC0gdHJhY2sxLT5iYXNlU2l6ZSgpKSA8ICh0cmFjazJMaW1pdCAtIHRyYWNrMi0+
YmFzZVNpemUoKSk7CiB9CiAKQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6
ZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVjdG9yPEdyaWRUcmFjayo+JiB0cmFja3MsIFZlY3Rv
cjxHcmlkCiBib29sIFJlbmRlckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0
aChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6
aW5nRGF0YSkKIHsKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzID0gKGRpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zKSA/IHNpemluZ0RhdGEuY29sdW1uVHJhY2tzIDogc2l6aW5nRGF0
YS5yb3dUcmFja3M7Ci0gICAgY29uc3QgTGF5b3V0VW5pdCBtYXhTaXplID0gc2l6aW5nRGF0YS5h
dmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCk7CisgICAgY29uc3QgTGF5b3V0VW5pdCBtYXhTaXpl
ID0gc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDApOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0cmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgR3Jp
ZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIGksIHNpemlu
Z0RhdGEuc2l6aW5nT3BlcmF0aW9uKTsKICAgICAgICAgaWYgKGNvbXB1dGVVc2VkQnJlYWR0aE9m
TWluTGVuZ3RoKHRyYWNrU2l6ZSwgbWF4U2l6ZSkgPiB0cmFja3NbaV0uYmFzZVNpemUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDI1OTVjMzQzMTI0MTJk
NTA4N2NiMGNjMjJjNjIwMWIwZDg5NjY0MWEuLmZjOThhMzliMmNlMGZjZDE1OWQxMjRlNTExNjIy
OGI3ZWY0ODIxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtNDQ2Myw3ICs0NDYzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlp
bmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgLy8gTm93
IGRvIGEgcGFpbnQgd2l0aCB0aGUgcm9vdCBsYXllciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIExh
eW91dFNpemUgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCA9IG9mZnNldEZvclRoaXNMYXllciAtIExh
eW91dFNpemUoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsKLSAgICBMYXll
clBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyh0aGlzLCBMYXlvdXRSZWN0KGVu
Y2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmlj
ZVNjYWxlRmFjdG9yKSksCisgICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGlu
Z0luZm8odGhpcywgTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJ
bmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKSwKICAgICAgICAgcGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IsIGFkanVzdGVkU3VicGl4ZWxPZmZzZXQsIHBhaW50aW5nSW5m
by5zdWJ0cmVlUGFpbnRSb290LCBwYWludGluZ0luZm8ub3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CiAg
ICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBh
aW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAgICAgY29udGV4dC5zZXRDVE0ob2xkVHJhbnNmcm9t
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBiNzE2
M2U2NmIzYzZmZjExODc3MWFjOTg5MDk3NmMzYjNiZTQ2NmZiLi4zMDZjNWEzOTQ2ZTQzZTI2ODBi
MDRjZTlmYzM3NmQxYzM5ZTVjMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaXN0Qm94
OjppdGVtQm91bmRpbmdCb3hSZWN0KGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2UK
IHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50RnVuY3Rpb24gcGFpbnRGdW5jdGlvbikK
IHsKICAgICBpbnQgbGlzdEl0ZW1zU2l6ZSA9IG51bUl0ZW1zKCk7Ci0gICAgaW50IGZpcnN0Vmlz
aWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEu
dmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5k
ZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4
T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBmaXJzdFZpc2libGVJdGVtICsgbnVtVmlzaWJs
ZUl0ZW1zKENvbnNpZGVyUGFkZGluZzo6WWVzKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RWaXNp
YmxlSXRlbTsgaSA8IGxpc3RJdGVtc1NpemUgJiYgaSA8IGVuZEluZGV4OyArK2kpCiAgICAgICAg
IHBhaW50RnVuY3Rpb24ocGFpbnRJbmZvLCBwYWludE9mZnNldCwgaSk7CkBAIC01OTcsNyArNTk3
LDcgQEAgYm9vbCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRl
eChpbnQgaW5kZXgpCiAKIGJvb2wgUmVuZGVyTGlzdEJveDo6bGlzdEluZGV4SXNWaXNpYmxlKGlu
dCBpbmRleCkKIHsKLSAgICBpbnQgZmlyc3RJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0
ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZU9yKG1faW5kZXhPZmZzZXQpOworICAgIGludCBm
aXJzdEluZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVh
LnZhbHVlX29yKG1faW5kZXhPZmZzZXQpOwogICAgIGludCBlbmRJbmRleCA9IG1faW5kZXhPZkZp
cnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90dG9tQXJlYQogICAgICAgICA/IG1faW5kZXhP
ZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90dG9tQXJlYS52YWx1ZSgpICsgbnVtYmVy
T2ZWaXNpYmxlSXRlbXNJblBhZGRpbmdCb3R0b20oKQogICAgICAgICA6IG1faW5kZXhPZmZzZXQg
KyBudW1WaXNpYmxlSXRlbXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IDdkMmZiNDM2MjgxNTRiOTQyNTY2Zjk5Nzg5Y2Y1
MDhmNTJiNDk3YWQuLjIwY2Y5ZWMwM2YyZTZiYzkyZTE3NWI5MmQyMmQzYjRlZWZhMGFmZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNw
cApAQCAtNDE1LDcgKzQxNSw3IEBAIExheW91dFVuaXQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNh
bGN1bGF0ZU1heENvbHVtbkhlaWdodCgpIGNvbnN0CiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVI
ZWlnaHQgPSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+Y29sdW1uSGVpZ2h0QXZhaWxhYmxlKCk7
CiAgICAgTGF5b3V0VW5pdCBtYXhDb2x1bW5IZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQgPyBhdmFp
bGFibGVIZWlnaHQgOiBSZW5kZXJGbG93VGhyZWFkOjptYXhMb2dpY2FsSGVpZ2h0KCk7CiAgICAg
aWYgKCFtdWx0aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpKQotICAg
ICAgICBtYXhDb2x1bW5IZWlnaHQgPSBzdGQ6Om1pbihtYXhDb2x1bW5IZWlnaHQsIG11bHRpY29s
QmxvY2stPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBtdWx0aWNvbFN0eWxl
LmxvZ2ljYWxNYXhIZWlnaHQoKSwgTnVsbG9wdCkudmFsdWVPcihtYXhDb2x1bW5IZWlnaHQpKTsK
KyAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4obWF4Q29sdW1uSGVpZ2h0LCBtdWx0
aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbXVsdGljb2xT
dHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIE51bGxvcHQpLnZhbHVlX29yKG1heENvbHVtbkhlaWdo
dCkpOwogICAgIHJldHVybiBoZWlnaHRBZGp1c3RlZEZvclNldE9mZnNldChtYXhDb2x1bW5IZWln
aHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCA0
YzBiN2IzNTNiMWRiZTQ0ZTc5NTc5MmQ4NmFiZWM0ZjcwYzQyMGVkLi4yMDY4NjQwNjJkMzYzNWFm
ODQ2ZGFhZDQ1NDQ1YTA0YzBiYjUzN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAKQEAgLTM3Myw5ICszNzMsOSBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpj
b252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmCiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHN0eWxlTG9naWNhbEhlaWdodC52YWx1ZSgpIC0gYm9y
ZGVyczsKICAgICB9IGVsc2UgaWYgKHN0eWxlTG9naWNhbEhlaWdodC5pc1BlcmNlbnRPckNhbGN1
bGF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChz
dHlsZUxvZ2ljYWxIZWlnaHQpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBjb21wdXRlUGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZV9vcigwKTsKICAg
ICBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgcmV0
dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKHN0eWxlTG9naWNh
bEhlaWdodCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZywgYm9yZGVyQW5kUGFk
ZGluZykudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
Q29udGVudEhlaWdodFVzaW5nKHN0eWxlTG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdodCgpIC0g
Ym9yZGVyQW5kUGFkZGluZywgYm9yZGVyQW5kUGFkZGluZykudmFsdWVfb3IoMCk7CiAgICAgZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTGF5b3V0VW5pdCgp
OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlRmlyc3RMZXR0
ZXIoUmVuZGVyVHJlZU11dGF0aW9uSXNBbGxvd2VkKQogCiBpbnQgUmVuZGVyVGFibGU6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25N
b2RlKSBjb25zdAogewotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3JDb21w
dXRlKFsmXSB7CisgICAgcmV0dXJuIHZhbHVlT3JDb21wdXRlKGZpcnN0TGluZUJhc2VsaW5lKCks
IFsmXSB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxp
bmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4
IGMwMGNiY2M5OTEzZDEzZDc2ZjE3YWZkODMyYzg2OGYyYWI3OGViOWQuLmUxYTdlYWE3NTlhZDMz
MTY5YmExMTFhMzVmOTE1YTRjMWU4Yzc1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKICAgICAvLyA8aHR0cDov
L3d3dy53My5vcmcvVFIvMjAwNy9DUi1DU1MyMS0yMDA3MDcxOS90YWJsZXMuaHRtbCNoZWlnaHQt
bGF5b3V0PjogVGhlIGJhc2VsaW5lIG9mIGEgY2VsbCBpcyB0aGUgYmFzZWxpbmUgb2YKICAgICAv
LyB0aGUgZmlyc3QgaW4tZmxvdyBsaW5lIGJveCBpbiB0aGUgY2VsbCwgb3IgdGhlIGZpcnN0IGlu
LWZsb3cgdGFibGUtcm93IGluIHRoZSBjZWxsLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuIElmIHRo
ZXJlCiAgICAgLy8gaXMgbm8gc3VjaCBsaW5lIGJveCBvciB0YWJsZS1yb3csIHRoZSBiYXNlbGlu
ZSBpcyB0aGUgYm90dG9tIG9mIGNvbnRlbnQgZWRnZSBvZiB0aGUgY2VsbCBib3guCi0gICAgcmV0
dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkg
KyBjb250ZW50TG9naWNhbEhlaWdodCgpKTsKKyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUo
KS52YWx1ZV9vcihib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjb250ZW50TG9naWNhbEhlaWdo
dCgpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIG1hcmtDZWxsRGlydHlXaGVuQ29sbGFwc2Vk
Qm9yZGVyQ2hhbmdlcyhSZW5kZXJUYWJsZUNlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGQ4ODVlOGUyYzYyNWM2ZGMw
YjVmMmRmZjE1NzkzNDNlZTVlZTUxMGYuLjg2ZmZmMWI3NTQ5NmUwMDQ0ODM2ZjA2NjQxZmViNjFh
MzMxYThiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCkBAIC05MzQsNyArOTM0LDcgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJUYWJsZVNl
Y3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAgICAgLy8gT25seSBjZWxscyB3
aXRoIGNvbnRlbnQgaGF2ZSBhIGJhc2VsaW5lCiAgICAgICAgIGlmIChjZWxsICYmIGNlbGwtPmNv
bnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIGludCBjYW5kaWRhdGUgPSByb3Vu
ZFRvSW50KGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNlbGwtPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUo
KSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYXgocmVzdWx0LnZhbHVlT3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZV9vcihjYW5kaWRhdGUpLCBjYW5kaWRh
dGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKaW5kZXggNDRhMWM1MjAzOWI1ZDQ3ZmZjZDJhMWE3ZTE2YzU1ODAxOTAxZmQwOS4uNjU2
YjczNDc4NzM4N2E4MDNiNDMyMzQxMmYyNTdjMzI0MDNmOTYzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgUmVuZGVyVGV4
dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0
PGNvbnN0IEZvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBm
aXJzdEdseXBoTGVmdE92ZXJmbG93LnZhbHVlT3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKKyAgICBn
bHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93LnZhbHVlX29yKGdseXBo
T3ZlcmZsb3cubGVmdCk7CiAKICAgICBpZiAoKG5lZWRzV29yZFNwYWNpbmcgJiYgbGVuID4gMSkg
fHwgKGlnbm9yaW5nU3BhY2VzICYmICFmaXJzdFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lkdGgg
Kz0gd29yZFNwYWNpbmc7CkBAIC0xNjc3LDcgKzE2NzcsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1v
bWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFz
dFR5cAogCiBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQs
IE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAogewotICAgIHVuc2lnbmVkIGRlc3RpbmF0
aW9uID0gc3RvcC52YWx1ZU9yKHRleHRMZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRp
b24gPSBzdG9wLnZhbHVlX29yKHRleHRMZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxl
bmd0aCgpKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb24gPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VS
VChzdGFydCA8PSBkZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggZWMwMjg2NTA3MDY2YjMx
OWJjNzdmMTZkNThmODMwY2Q5OWZmMzRkNi4uNWEyYWQ3MmJkZjdkNWQ0MzEzOTFhNDk4ZWE2NTg1
ZTRiNWE3ZTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIHBhaW50Rmxv
dyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWlu
dEluZm8mIHBhaQogICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICE9IFRl
eHREZWNvcmF0aW9uTm9uZSkgewogICAgICAgICBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVy
ZXIgPSBjaGlsZHJlbk9mVHlwZTxSZW5kZXJUZXh0PihmbG93KS5maXJzdCgpOwogICAgICAgICBp
ZiAodGV4dFJlbmRlcmVyKSB7Ci0gICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblBhaW50ZXIgPSBU
ZXh0RGVjb3JhdGlvblBhaW50ZXIocGFpbnRJbmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKSwgKnRleHRSZW5kZXJlciwgZmFsc2UpOworICAgICAgICAgICAgdGV4
dERlY29yYXRpb25QYWludGVyLmVtcGxhY2UocGFpbnRJbmZvLmNvbnRleHQoKSwgc3R5bGUudGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRSZW5kZXJlciwgZmFsc2UpOwogICAgICAgICAg
ICAgdGV4dERlY29yYXRpb25QYWludGVyLT5zZXRGb250KHN0eWxlLmZvbnRDYXNjYWRlKCkpOwog
ICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLT5zZXRCYXNlbGluZShzdHlsZS5mb250
TWV0cmljcygpLmFzY2VudCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCA1YjIxMTJmMzVh
NDZkM2I1YjcxMjljOTU2ZWFkMjg4ODc5MWFiZjU5Li5hNjY2YzliODQ5ZTUzZDk0NjJkNjNiODA0
YzkyNzBlYjliMjdiNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGludCBSZW5k
ZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBl
LCBib29sIGZpcnN0TGluCiAgICAgaWYgKGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PZklu
dGVyaW9yTGluZUJveGVzKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBmaXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlT3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxp
bmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOworICAgIHJl
dHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKFJlbmRlckJsb2NrOjpiYXNlbGluZVBv
c2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1v
ZGUpKTsKIH0KIAogI2lmIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCAwZTcz
M2I5ZWIxMzY0MmE4MWYzYmZlNGE0ZDJhNzk4YjJhYjcwMWRkLi45NGMyZjcxMjRlMDRiYjJjOWE2
NGU4ZWNjNDA5MzdjYzZjOGRmMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFJl
bmRlck1hdGhNTEJsb2NrIDogcHVibGljIFJlbmRlckJsb2NrIHsKIAogICAgIHN0YXRpYyBMYXlv
dXRVbml0IGFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgewotICAg
ICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLmxvZ2lj
YWxIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZh
bHVlX29yKGNoaWxkLmxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQg
PSAwKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCBlZWE0ZjBkODMyMDZmMzQ3YjE3N2Y3M2YwNzI2NThk
MDE2NmU2NDAzLi5jY2RmMjRmOWM2MWU2MmQ1OWE1YmI4NWI3ZWNhYWI3Y2E5YWU3NDc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
Y3BwCkBAIC0xNzMsNyArMTczLDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICBpZiAo
IXBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAocG9pbnRJblBhcmVudCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9p
bnRJblBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRy
YW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQo
cG9pbnRJblBhcmVudCk7CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlw
cGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcAppbmRleCAyYmYwODZmYzFmMzA3OTgzNTliZDY3NjhhNjM4NGFmMDk5ZDU3M2QwLi4x
MDk1ZDI0ZTExMjE5YjYyMjdjOGMyZDY5ZTE2ZjMxNzRjNWExMGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
QEAgLTE4Myw3ICsxODMsNyBAQCBib29sIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZs
b2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdAogICAgIGlmIChoaXRU
ZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBG
bG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAvLyBF
YXJseSBleGl0IGlmIGxvY2FsIHBvaW50IGlzIG5vdCBjb250YWluZWQgaW4gY2xpcHBlZCB2aWV3
cG9ydCBhcmVhCiAgICAgaWYgKFNWR1JlbmRlclN1cHBvcnQ6OmlzT3ZlcmZsb3dIaWRkZW4oKnRo
aXMpICYmICFtX3ZpZXdwb3J0LmNvbnRhaW5zKGxvY2FsUG9pbnQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAxNTg0NzYxOWE3MTNh
ZGU1MDAwZjRiZWM2N2U1OGNjZDM3YzAxMWY2Li4wZGNiOTE4MDcxZDgxMWE5NTJiNjdmODEzMTM2
OGM1YjkzODRiMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5v
ZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
CiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxl
czo6U1ZHX0lNQUdFX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygp
KTsKICAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
KTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewotICAg
ICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52
ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQp
OworICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludElu
UGFyZW50KTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBv
aW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IGI1Y2JkZTZhOGUxNWQ4YjI5MjFiZmMxYmQ4
ZGY5ZjBjYWQ0Y2FhMzYuLjVkODM1ZmUxNzA2ZDg5MzAwZGVhY2FlNzI1YTFmMTAxMGRkZDhiNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTI2NywxMCArMjY3LDEwIEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiBvYmpl
Y3RCb3VuZGluCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0Jv
eC55KCkpOwogICAgICAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5n
Qm94LndpZHRoKCksIG9iamVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICAgICAgcG9pbnQg
PSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50
KHBvaW50KTsKKyAgICAgICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CiAgICAgfQogCi0gICAgcG9pbnQgPSBj
bGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVl
T3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICBwb2ludCA9IGNsaXBQ
YXRoRWxlbWVudCgpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKIAogICAgIGZvciAoTm9kZSogY2hp
bGROb2RlID0gY2xpcFBhdGhFbGVtZW50KCkuZmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxk
Tm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gY2hpbGROb2RlLT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBh
NDkwNDY0Yjc5ZWEyZmQ5MzA3MDU4NTRmOTVkMzA2ZGQ4YTVhMDZlLi5jZDViZjc1ZjZhMDA1OTg5
NDZjYWMzNmRlOGJkMTU4ODk5Zjg5MzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjY4LDcgKzI2
OCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAKICAgICAgICAgSW1hZ2VCdWZmZXIqIHJl
c3VsdEltYWdlID0gbGFzdEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVz
dWx0SW1hZ2UpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5z
aGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zv
cm0oKSkpOworICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFy
RnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0o
KSkpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRh
dGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5m
aWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWlu
dFJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcAppbmRleCAxYWNhNGU1MGNlMWI4M2EzN2E3MmFhMzdlMGFlNTUzYmQ5ZTRmNGYwLi4zNTlm
ZDRiYWNiY2Q4NzU2MjllNzFhOWYyNjI5YWZhMGZlMzY1ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBi
b29sIFJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIC8vIE9ubHkgdGVzdCBTVkcgY29udGVudCBpZiB0
aGUgcG9pbnQgaXMgaW4gb3VyIGNvbnRlbnQgYm94LgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBhbiBpbnRlcnNlY3Rpb24gd2hlbiByZWN0LWJhc2VkIGhpdCB0ZXN0cyBhcmUgc3VwcG9y
dGVkIGJ5IG5vZGVBdEZsb2F0UG9pbnQuCiAgICAgaWYgKGNvbnRlbnRCb3hSZWN0KCkuY29udGFp
bnMocG9pbnRJbkJvcmRlckJveCkpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0g
bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsKKyAgICAgICAgRmxvYXRQ
b2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50
KSk7CiAKICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IG5vZGVBdEZsb2F0UG9pbnQoKSBkb2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIGhpdCB0
ZXN0cyB5ZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCmluZGV4IGZlOTEyMjY0YjIzOGZkNzMyODczNWNhN2RjYmViYjI2NTZkZWE1MTMuLjc1
MDI0MGU1MzU4NGRlN2FmMDhkYTkyZGNkZTI2NjZiNzhlMzg1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0zMzksNyArMzM5LDcg
QEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRU
ZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBs
b2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBv
aW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0
Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAKaW5kZXggMmJhYjdhN2ZjMGEyNDMwYzMwZTg2ZDI1NjAxMGMwMzdjMDQ4MmNiYy4uODcwOGY0
YjM5N2YxNTIxYjg0MjMwOWJkZDBkNmEwMTQ1MzhlYTYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgYm9v
bCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWwKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1
aXJlVmlzaWJsZSkgewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3R5
bGUoKS5zdmdTdHlsZSgpLmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkK
ICAgICAgICAgICAgIHx8IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLnN2Z1N0eWxl
KCkuaGFzRmlsbCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7Ci0gICAgICAgICAgICBG
bG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAg
ICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
LmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBh
cmVudCk7CiAKICAgICAgICAgICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBw
aW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1
cHBvcnQuY3BwCmluZGV4IDRjN2RjYzJjNzc5MzdlMjc4ZmUzOTQ5ZGM3NjYwYmU5YzUxNWIxZmQu
LmFmODEwZmRlZDI2NTgzNzk5ZTQyNmFmNmIwODkxNjliYzhiYjY1MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMzcwLDcg
KzM3MCw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVwYWludFJlY3RXaXRo
U2hhZG93cyhjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kCiAgICAgaWYgKGxvY2FsVG9Sb290VHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHJvb3RUb0xvY2FsVHJhbnNmb3JtID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIEFmZmluZVRyYW5zZm9ybSByb290VG9M
b2NhbFRyYW5zZm9ybSA9IGxvY2FsVG9Sb290VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihB
ZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgcmVwYWludFJlY3QgPSByb290VG9Mb2NhbFRyYW5zZm9y
bS5tYXBSZWN0KHJlcGFpbnRSZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNGYzNWVkOWVhYTAzOTEz
NGU3MGM4Y2UyMzE5NTg1Y2NkZjlkOTY5NS4uYzRiM2FhYzViZmQxY2U4Y2M1NjYxYzhkYmJiZTRj
NTMyNDY3ZWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEFmZmkKIAogICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhl
IGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNj
YWxlZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9u
ZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgotICAgIGNvbnRleHQu
Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5z
Zm9ybSgpKSk7CisgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFn
ZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5j
b25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggYWVlOTQ3YzAxMzZkOWM2MGNlMDI1Y2I5Mzcx
N2YzNGExZjkyODU5MS4uZDIzNzJmZmJhZjAwNjE1MWMwZDA2NDAxYmZlY2ZiZjkyMmQ0MDlmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAt
MTMxMSw3ICsxMzExLDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlw
aEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmcKICAgICBpZiAoZ2x5cGhC
b3VuZGluZ0JveCkKICAgICAgICAgbV9taW5SaWdodFNpZGVCZWFyaW5nID0gc3RkOjptaW4obV9t
aW5SaWdodFNpZGVCZWFyaW5nLCBob3Jpem9udGFsQWR2YW5jZSAtIGdseXBoQm91bmRpbmdCb3gu
dmFsdWUoKS5tYXhYKCkpOwogCi0gICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShXVEZNb3Zl
KHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFuY2Us
IGdseXBoQm91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSksIGNvZGVwb2ludHMpKTsKKyAg
ICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCksIGdseXBoRWxlbWVudCwg
aG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGluZ0JveC52YWx1
ZV9vcihGbG9hdFJlY3QoKSksIGNvZGVwb2ludHMpKTsKIH0KIAogdm9pZCBTVkdUb09URkZvbnRD
b252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJlR2x5cGhzKCkKQEAgLTE0MzUsNyArMTQzNSw3IEBAIFNW
R1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRF
bGVtZW50JiBmb250RWxlbWVudCkKICAgICAgICAgICAgIHByb2Nlc3NHbHlwaEVsZW1lbnQoZ2x5
cGhFbGVtZW50LCAmZ2x5cGhFbGVtZW50LCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1
bHRWZXJ0aWNhbEFkdmFuY2UsIHVuaWNvZGVBdHRyaWJ1dGUsIGJvdW5kaW5nQm94KTsKICAgICB9
CiAKLSAgICBtX2JvdW5kaW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSk7
CisgICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlX29yKEZsb2F0UmVjdCgpKTsK
IAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8
PSAxMDEwMDAKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMjAwODYyMjM+IENvY29hIGhhcyBhIGJ1
ZyB3aGVyZSBnbHlwaCBib3VuZGluZyBib3hlcyBhcmUgbm90IGNvcnJlY3RseSByZXNwZWN0ZWQg
Zm9yIGZydXN0dW0gY3VsbGluZy4gV29yayBhcm91bmQgdGhpcyBieQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCA0
OGJiZDMwZDc3NjdiY2E1NTJmYTA4MTA1MmUwMjBmMWUwMWMzYzE0Li5jNzY3ZDliZTA0NTAxMjA2
ZDQwMmY2ZmE4Zjk5ZWE4NGFmNmMxN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtOTAsNyArOTAsNyBAQCAt
IChOU1N0cmluZyAqKXN0cmluZ1ZhbHVlCiAKIC0gKHVuc2lnbmVkIHNob3J0KXBvcnQKIHsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9y
dCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmln
aW4qPihfcHJpdmF0ZSktPnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogLy8gRklYTUU6IE92ZXJy
aWRpbmcgaXNFcXVhbDogd2l0aG91dCBvdmVycmlkaW5nIGhhc2ggd2lsbCBjYXVzZSB0cm91Ymxl
IGlmIHRoaXMgZXZlciBnb2VzIGludG8gYW4gTlNTZXQgb3IgaXMgdGhlIGtleSBpbiBhbiBOU0Rp
Y3Rpb25hcnksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNzg0
YWFjZGUwNGU0Yjc2MGRjOWZlZTlhZmM5MWJmNmIwNzA3MzMzOC4uMjc4MzhjY2IzOTgzOWRmMmEx
OWVkYTRjNzI3Y2IxOGI2ZTc4ZTdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnBv
cnQoX091dF8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5T3JpZ2luLT5w
b3J0KCkudmFsdWVPcigwKTsKKyAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgp
LnZhbHVlX29yKDApOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggZDRhYTAxM2Ez
ODlhOWQ0MTc0NjQxNTU5ZjNhZTcxZTVmYWEwNzA2Ny4uOGRmOGZmYWFiN2M0ZmE3ODg2NDVlMTc3
ZmViNmMxNTFiN2EzM2I3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNzQsNyArNzQsNyBAQCBXS1N0cmluZ1JlZiBX
S1NlY3VyaXR5T3JpZ2luQ29weUhvc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
bikKIAogdW5zaWduZWQgc2hvcnQgV0tTZWN1cml0eU9yaWdpbkdldFBvcnQoV0tTZWN1cml0eU9y
aWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHNlY3VyaXR5T3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gdG9J
bXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7
CiB9CiAKIC8vIEZvciBiYWNrd2FyZHMgQUJJIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwCmluZGV4IDdlYTZhOThlNjQwMTE3NDFjNGUzYzRmOWRjNmZhNzgzNWRjM2ZiMzAuLjU5
MDY5MWI4Y2MzYjM5NGRmYjZjZjEwMDIzY2ExNmRlOWNhM2NlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwCkBAIC0xMDEsOSArMTAxLDkgQEAgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclIKIAogICAg
ICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7CiAgICAgICAgICAgICBpZiAob3JpZ2lu
RGV0YWlscy5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9J
bXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5n
KCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVP
cigwKSkpOworICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJs
ZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1lLnZhbHVlX29yKDApKSk7CiAgICAg
ICAgICAgICBpZiAob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAg
ICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2Rp
ZmljYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5E
ZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUudmFsdWVPcigwKSkpOworICAgICAgICAgICAgICAgIGRl
dGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRp
b25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxz
Lm1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoMCkpKTsKIAogICAgICAgICAgICAgcmVzdWx0LnVu
Y2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKGRldGFpbHNNYXAp
KSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbQppbmRleCBjNTU0M2EyMGI3MWU4Yzk3NmUyMTIyYjli
NGJlYTQ4YjM3NTFmYzcwLi5iNzExMmNlZTE3YmRjYzI2OWJjOWY5ZTI3MWQyNDAyZGEyMTY2ODIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJp
dHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nl
Y3VyaXR5T3JpZ2luLm1tCkBAIC01OCw3ICs1OCw3IEBAIC0gKE5TU3RyaW5nICopaG9zdAogCiAt
IChOU0ludGVnZXIpcG9ydAogewotICAgIHJldHVybiBfc2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5
T3JpZ2luKCkucG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+
c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CiAKICNwcmFnbWEgbWFyayBX
S09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCA1NzlhZmFmYThiMjY2ZDU3MmZkZDZlODQx
NmZiYWYyYzMzMjkxZGYwLi43NDFjNmMxM2NlMDdhODZmM2FlZWFhMzZjOTVlMTJhOWMyZDNjNGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpA
QCAtMjc1LDcgKzI3NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEZWNpbWFsTnVtYmVyPiB0b0Rl
Y2ltYWxOdW1iZXIoaW50NjRfdCB2YWx1ZSkKIAogc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRT
dW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpQYXltZW50
UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQogewotICAgIHJldHVybiBbZ2V0UEtQYXltZW50
U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFt
b3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50LnZhbHVlT3IoMCkpLmdldCgpIHR5
cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOworICAgIHJldHVy
biBbZ2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxp
bmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50LnZhbHVl
X29yKDApKS5nZXQoKSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5
cGUpXTsKIH0KIAogc3RhdGljIFBLTWVyY2hhbnRDYXBhYmlsaXR5IHRvUEtNZXJjaGFudENhcGFi
aWxpdGllcyhjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRp
ZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDI3
YjFmMTYwZDhmNzhmN2VhZjU1ZGQxZDgzM2E3ZDEyZWQ5Nzk2YTEuLjIyM2YwY2IyZTdkYWRjYTkz
OGQ1NTM1MzE1MmRmN2E1NDA0Njg5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBlcnJvck5hbWVBbmREZXRhaWxzU2VwYXJhdG9yID0gIjsiOwogCiAvLyBNYWtlIHN1
cmUgdGhlIHByZWRlZmluZWQgZXJyb3IgbmFtZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIHVzZSBJbnRl
cm5hbEVycm9yLgotI2RlZmluZSBWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVy
cm9yU3RyaW5nKS52YWx1ZU9yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZTo6SW50ZXJuYWxFcnJvcikKKyNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0Uo
ZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlPihlcnJvclN0cmluZykudmFsdWVfb3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKQogCiAvLyBJZiB0aGUgZXJyb3Ig
bmFtZSBpcyBpbmNvcnJlY3QgZm9yIHRoZXNlIG1hY3JvcywgaXQgd2lsbCBiZSBhIGNvbXBpbGUt
dGltZSBlcnJvci4KICNkZWZpbmUgU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUoZXJy
b3JOYW1lKSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNv
bnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjplcnJvck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCmluZGV4IGYyYTI4OTg5YjIyMzc4ZDAyZWM5YjY1OWEyNDZlYTc1YzZmZWIwNDYu
LjE5YWE3NDk5MjQ3YjE3NDk4YjRlMTgzMTFmOWRhZGY1YTM3ZjI0OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC00MzIsNyArNDMy
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUoQmFja0Zvcndh
cmRMaXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3QKICAgICAgICAgaXRlbXMudW5jaGVja2VkQXBw
ZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpKTsKICAgICB9CiAgICAgbV9oYXNDdXJyZW50
SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleDsKLSAgICBtX2N1cnJl
bnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZU9yKDApOwor
ICAgIG1fY3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZh
bHVlX29yKDApOwogICAgIG1fZW50cmllcyA9IFdURk1vdmUoaXRlbXMpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAppbmRleCBkN2Y3YjQ3MGE0NzExYjU3YWJk
YTc3N2Y0M2UzZWVhZjRkYmU0NTE3Li43ZmRiMzNiNTM2MzY5ZWE0NmFkNzA3YjdjNTlmMDM2MTNh
MWJmZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTM0
OCw3ICszNDgsNyBAQCB2b2lkIFdlYlZpZXc6OmRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHRhcmdldCwgY29uc3QgV2ViQ29yZQogCiBBZmZpbmVUcmFuc2Zvcm0g
V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJhbnNm
b3JtVG9TY2VuZSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSk7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Ub1NjZW5lKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vz
c2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAppbmRleCAwMTZjNmI5MzM0NjUzY2ZlYTIyOTBiMjE2NTAw
YWIwMDkyMWJkZTZmLi42N2VhYTBkNTRkMmQzNzdkNDAzOTJjZmY1YzNjZDM0OGEyNmRlMWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0
ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0yODIsOCArMjgyLDggQEAgc3RhdGljIHZvaWQgZW5jb2Rl
Rm9ybURhdGFFbGVtZW50KEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBI
VFRQQm8KICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKIAogICAgICAgICBlbmNvZGVyIDw8IGVs
ZW1lbnQuZmlsZVN0YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52
YWx1ZU9yKC0xKTsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUudmFsdWVPcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoLTEp
OworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZS52YWx1ZV9vcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNh
dGVkUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9E
ZXByZWNhdGVkUERGUGx1Z2luLm1tCmluZGV4IDVlZGU1NmVlZTQwYWNmZGI5OTAxMTlkZTdhY2U5
MThlNjc4YmM2NjYuLmY5NjFhMzU5MTU0MTE1NzE0NzhkNDA3NDQ0MjEzNDRhZjlhMDhjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRl
ZFBERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KQEAgLTExOTYsNyArMTE5Niw3IEBAIEludFBvaW50IFBE
RlBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlld1RvUGx1Z2luKGNvbnN0IEludFBvaW50JiBwb2lu
dCkgY29uc3QKIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmll
dyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnRJblBs
dWdpbkNvb3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsK
LSAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOwor
ICAgIHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOwog
fQogCiBGbG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25z
dCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBGbG9hdFJlY3Qg
UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIEZsb2F0UG9pbnQg
b3JpZ2luSW5QbHVnaW5Db29yZGluYXRlcyhyZWN0LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcmVj
dC55KCkgLSByZWN0LmhlaWdodCgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGlu
YXRlcywgcmVjdC5zaXplKCkpKTsKKyAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoRmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0
ZXMsIHJlY3Quc2l6ZSgpKSk7CiAKICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvU2Ny
ZWVuKGVuY2xvc2luZ0ludFJlY3QocmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpOwogfQpAQCAt
MTIyMCw3ICsxMjIwLDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CisgICAgRmxvYXRSZWN0
IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CiAg
ICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIApAQCAtMTIzMCw3ICsxMjMwLDcgQEAgdm9p
ZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
IGNvbnN0IEludFJlY3QmLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gcGx1
Z2luU2l6ZTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RW
aWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBt
X3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgW21fcGRmTGF5ZXJDb250
cm9sbGVyIHNldEZyYW1lU2l6ZTpwbHVnaW5TaXplXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJl
Z2luXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KaW5kZXggZGI0ZWMzZTQxMjk5ZjY5Mjk2MWY3NGRkMjE2Yzk3YzZkYTQ2MTIzNS4u
N2VmYTA3NDM0NDM1NjE5ODIyNDEwMjAwMWY5Nzk1ODA0ZmEyZjNmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkzMiw3
ICs5MzIsNyBAQCBJbnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogdm9p
ZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
IGNvbnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0pCiB7CiAgICAgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9S
b290Vmlld1RyYW5zZm9ybTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVn
aW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KTsKKyAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgbV9zaXpl
ID0gcGx1Z2luU2l6ZTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gd2ViRnJhbWUoKS0+
Y29yZUZyYW1lKCktPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
CmluZGV4IDFjYTdmNDQ5N2E3OThiM2U1ZGVkNGFlZWIxOGVhY2MyZjE5YWE3NzEuLjI4Zjc1N2Zm
ZTBiNDM0NmYyNjM3OTlmMDQ3Zjc2MTQ3YjY4NDRjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3Rh
dGVDb252ZXJzaW9uLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEZv
cm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6Ci0g
ICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVs
ZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcihCbG9iRGF0YUl0ZW06
OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVl
T3IoaW52YWxpZEZpbGVUaW1lKCkpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxl
UmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxl
bmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29yKGludmFsaWRGaWxlVGltZSgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpC
bG9iOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBiOGVkOWViMmEyMGY1
NTBlMzhmNjQ4OGE0OTA2ZGM1MjNiYzIyNDQ3Li5iZGU2NjJiNjQ1NTQ5ODA5MDFlZWYzNWM4MjFh
YmI3NWZiNzY5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDU0
LDcgKzQ1NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0
TG9hZChPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhCiAgICAgd2ViUGFnZS0+c2FuZGJv
eEV4dGVuc2lvblRyYWNrZXIoKS5kaWRDb21taXRQcm92aXNpb25hbExvYWQobV9mcmFtZSk7CiAK
ICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgp
Lm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0
PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIGRv
Y3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNvbXB1dGUo
W10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1l
bnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgdmFsdWVPckNv
bXB1dGUoZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSwgW10geyBy
ZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1l
bnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpLCBoYXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEu
Z2V0KCkpLmdldCgpKSkpOwogICAgIHdlYlBhZ2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IGU5YmJiMmJhNzk5NDEwYjNiMDY0NjQ4YzE0OTg1OTlhM2RlMTE5ZjMuLmUxOGE5Nzg5ZjFh
ZDM2ODdhMWFjOWJjMTA0YjQ0ZGJkMmI1MGI4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIENlcnRpZmlj
YXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9h
ZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0
dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KTsKKyAgICByZXR1cm4gdmFsdWVPckNvbXB1dGUoZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENl
cnRpZmljYXRlSW5mbygpOyB9KTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGU1ZjBiZTA5YWI0ZmZmY2I3MWEwMTgzYzE4OWFmODE4Y2VhMzUzZGUuLmU0ZWNhNTNkMzA3MWZl
YmJmMDBhNzc5ZDljZDk5MzNjYzI0YTRhMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMC0zMSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQg
c3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6
T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
T3B0aW9uYWwuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdFBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6dGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZl
VVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKwogMjAx
Ni0xMC0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJRExd
IFJlc3RydWN0dXJlIElETFBhcnNlciBzdHJ1Y3RzIHRvIGJldHRlciBtYXRjaCBtb2Rlcm4gV2Vi
SURMIGNvbmNlcHRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9P
cHRpb25hbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAK
aW5kZXggYTA3MTVmZDYyZmU3NmMxMDJjNDQzYTFjNzc0NmY2ZDRiODhjNzRiYi4uMDc1NzViMTY5
MGJjOGFiNGJlZjc0MjNiMzk3NTMyNDk1NDg3M2RmZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL09wdGlvbmFsLmNwcApAQCAtNzYsNyArNzYsNyBAQCBURVNUKFdURl9PcHRpb25h
bCwgQ2FsbGJhY2spCiB7CiAgICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKICAgICBPcHRpb25hbDxp
bnQ+IGE7Ci0gICAgaW50IHJlc3VsdCA9IGEudmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICBpbnQg
cmVzdWx0ID0gdmFsdWVPckNvbXB1dGUoYSwgWyZdIHsKICAgICAgICAgY2FsbGVkID0gdHJ1ZTsK
ICAgICAgICAgcmV0dXJuIDMwMDsKICAgICB9KTsKQEAgLTg1LDcgKzg1LDcgQEAgVEVTVChXVEZf
T3B0aW9uYWwsIENhbGxiYWNrKQogCiAgICAgYSA9IDI1MDsKICAgICBjYWxsZWQgPSBmYWxzZTsK
LSAgICByZXN1bHQgPSBhLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgcmVzdWx0ID0gdmFsdWVP
ckNvbXB1dGUoYSwgWyZdIHsKICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IDMwMDsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAwZjFjMDJkOWU2Y2E4NWMwOWNiNDk2Y2Iz
N2YxMmMyOTlmNThmZWY4Li42ZTllNzM4YWI1YmNlMWRmYWJmYjQyZjYwZWI3YjJmMmI2NDVjYjRm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNl
cklkaW9tcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBpbnQgdGVzdFBhcnNlSFRN
TEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0
ID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJl
c3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJu
IG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJ
bnRlZ2VyRmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0
aWMgdW5zaWduZWQgdGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcm
IGlucHV0KQogewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2
ZUludGVnZXIoaW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAg
IHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJl
c3VsdC52YWx1ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyRmFpbHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5kZXggNDdjZDA3Mjk3YjQ5ZGQ4NmY0OGUw
NWM2ZjJlNTVhNzU3MWViNWQ4Yi4uMTFhYWM2ODQ0ZWZlYjNmYjY3YTc1ODUzYjAwNTU4ZjdmOTE2
ZDhiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBh
cnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNl
ci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5o
b3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCku
dmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVf
b3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0x
MDgsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy51c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0
LCBvbGRVUkwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0
KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCku
dmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVSTC5wYXRo
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRp
ZmllcigpKSk7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVS
TChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5w
b3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCku
dmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7
CkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy51c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVS
TC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5w
b3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVS
TC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50
SWRlbnRpZmllcigpKSk7CkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxE
aWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYg
cGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBh
cnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRz
TmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5x
dWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVu
dCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC00OTAsNyArNDkwLDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
RXhwZWN0ZWRQYXJ0cyYgcGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRV
UkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVS
TC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9z
dCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVP
cigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVf
b3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRl
bnRpZmllcigpKSk7CkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2
ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRz
TmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3
LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVy
eSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwg
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC01MzUsNyArNTM1LDcgQEAgc3RhdGljIHZv
aWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRVUkwu
dXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVSTC5w
YXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9zdCgp
KSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigw
KSk7CisgICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRp
ZmllcigpKSk7CkBAIC0xMTg3LDcgKzExODcsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29ucwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJs
LnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQo
KS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkp
KTsKQEAgLTEyMTMsNyArMTIxMyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
aG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgp
LnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVl
X29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>293414</attachid>
            <date>2016-10-31 03:19:53 -0700</date>
            <delta_ts>2016-10-31 11:14:43 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews107 for mac-yosemite-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1607137</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
VOQ+OooFlaOtIDWAj1ipRlZ+SxKzbnOjIcboGvfodhmy7jgOOdsuVwp61W8eAKxzY3zggJKFRZnO
B9A4DADAVO5kG1ZAFdnCENqm3FwBTwwDJAoJoAq+KxhM94iO60t+Z44rji64rcK8XZ5clnwUa0t+
SW4KinyAADQDqgMZTu7MkZiS3y4lGA+T08BMQk4AviK4HeijeesLS5fD63APHUzQHcghZgYzZud8
pYAw4wplK7wmkF7l1kF4Q1OgDe5ddNzSMCQYMNWu/MWPH9Wb3WoQDUbNWjPwRtHtayVuNsPXaxB4
y8PMOzV9b9YM/cauF3tKPRju6sNmoof9yA9Or17sK+f61Zv6s+7Y9+I42mSrymShnpJ6TZmu3Usy
VJXpe1dJr56snZRzdxmd4mt06oX9Uxz64u9v5/jqff9WeeT1sVNkOWyewv6k1d5Om/Nj2vWQWcXv
e+FsFr14IQ70twHefa/1ZFqvp4/zOTm89CaL58Nb2kh3yvt7fPwYyl3w4h/M1ejY+JzElf5T+BZ2
XsTHfphuRGrvwku8bmudWXic+sZ+1jWPVk1TGvnb9EXNGu/ZS8vvTLWofCuS2lP4Xmk5/qW4NrNJ
rT107IHjymVjsbRD0ZqKeTztlZc4WD/VervLzh9vU6efdESjH/fn69K/vh/zSnkd14/FZTj2l0Yn
vepvG9UIaovl/nMymNeP5lN9thtMzItznqxXl2CwmeLzrvHSFXF+kZpZmTx92p/1rG5u2sKOjvno
5K2t/aSr1gPtKQmeDzvpb/Ji9jSqJav+0F/0ToPxx/pD9QOrFmpqRUSnk10Yz1m7vRtmZihPvcga
9HxHV1vWaawMfPv5o/XWiO0i8E6R54mev74G/jrEWKBzlcYgjvyRF3r9xjNaWvfU1yyc9d98vx/2
V/J41aRnl93+Stn7wfT9mrS7y+HVb7BxYxhHlX7oPc1+d9iK5p++c2qMoiT2PzhA5J1Ow0wbLzrv
flGZvA/Wid4qO++DVaoPrrNZHMmtcQpOk3A8UF58DyFmzSj241t2rX4/jr1tPQiKutd/rVX8E356
MPeegb3oewO/JWcv9XF30UyW5/XLx2q6d2uD5nB5OQ/D5lipdDLj+twapd540HWsnSHbzYuRP08H
i7Hav+R9pVznq/NWtl3RPRYN23i+1Nv+MbJGm0Z9uBGV0trsxCauP09ly61109neK5JO2DP9ojdc
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
dIikmsZf4T/J7PP7T1dvvs3oy3+/++Htd6v3333/byG+eS3G6/l6+ean6GY5+vbPCbtKx/N/T4Ps
vcr45zcf/vXn2z++tl0CYy1mZR9EscuVKGnCCies7jIA1AebopqD8TCN59oytvvXeMC1n9bB8a0i
rbvvh8fSiPS0wNzR49tAF1LxlBll2AGbtKwYNmQ1DG2wrAPJ1VO9AIbw8Pspuvn3T5/V4j75j/zw
859fq4+fr9+++v6bu8/3WlPz+M+3wVdXv+I34uPn29v1D99/9xov34Nm/hi9u/v2ehH//tPNH1Gy
vP7vr5+mdzfLD++/+nm8/Hg7gaXtyoSJoJMLurJeEA9ID4Z78YlzsADcZfWXpZzfquhm2IRqWBcm
CKkyQbxc+36u5wt9RF8UV/PFixdfXGA+ySr8359H62D6UZsj7OP3eDn6+OHuz/Sn5ArP5+/XPwff
66t+dffxdsUWfPrv/9iOXvEBk7x7w6PiIpBZvU1xYW/4xTDNmT6ZG39NLiSz3fe/SZKQ8b9+x/IX
Kn54P9VC/Md4MX3z8yfymr25Hn3/0+uPf97Sf/1HfPr5rfW+qeP4HPcTtwlmsIjw0z/u1Wo8Db5/
PaP8jz++vrteLD4H8n4Mp776PP0pxv+6ecPffFj/+B0J/vO+8rhZq8c9shw308eNupCflVxL5ZO5
3bf4QtKLl6+64SfW8Cw8qxbPGLF4FU/YCcf/kl68o7az/1cgF/NvP2a//nr/u+TzxdXn2eLrV99e
/fR2kYaf//h19N80vPoj/fSv+aiCtThpNUpOKgZsw8SxoJNEgD7O4dV1vAhn9mx7gCAK/PSv+mf6
+d/fXE9ufvxPlH4d/fQLir5a8Gvy4Xq9yL4WS/rf3z9E34br15BRrpSjkp3F0q+P0augoWFhF72j
aWTw8DWtxDf24VZUaaHPn6qP0Vqg2G/Ix+M4g/F6Pr+3Bjm4bFWwVUW/EdX/8cery2tPcKwdo4rz
85LXj+CVWsuekKA3+iFYsKcdzW8rY9VWlbjJ097G2RQm3kV3+njSClQEFShtC/KnHGhqTQ+IVm1B
aq+YgOniiD7xiomfogx/vAn57W26uJd391cf9Mnqf3j1fTgLvsqug3e//izefvvTH39M9A++XoRV
R85opxbZcjnT9nG4Gk21DWQGyYKFZK2N5nzAkPifVslSaRKR/4EnUSWWGTtDBY132by1cgYgHVXQ
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
kYWxZayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAAAINX0kAAAAAAAAA
AAAAAAASABwAYWNjZXNzaWJpbGl0eS9tYWMvVVQJAANkAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBL
AwQUAAIACAAXEl9J4k2doGoAAABsAAAAYQAcAGFjY2Vzc2liaWxpdHkvbWFjL2NoZWNrYm94LXBv
c3RzLXZhbHVlLWNoYW5nZS1ub3RpZmljYXRpb24tYWZ0ZXItYWN0aXZhdGlvbi13aXRoLXNwYWNl
LXN0ZGVyci50eHRVVAkAA/4LF1hkAxdYdXgLAAEE9QEAAARQAAAAMzIwNNM1NNA1NlQwMLIyNLMy
MdMzMzBSSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tJmJuaWplaGxqZGFiVms
gl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQUAAIACADJDV9J56SD8T9KAABZFAEA
OAAcAGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudC00Nzc2MC1zYW1wbGUu
dHh0VVQJAAPaBBdY2gQXWHV4CwABBPUBAAAEUAAAAOxcaXPbRpr+rl+B+bIlxwHVJ7qb5bULp+NZ
2VEsTZKqlIsFAk0JY5BgeCjW/Pp9G+CBizIVSanNJkqKkhvo572vJkh3Fud3y2xpFRNrGU/neTa7
tpJiOojn81wPftLj/8lW5pdfzFZ6thoE+lbnxXwKf1un8yy1mBAOemHB8uLOwsiaZnmeLXVSzNLl
ycWiSPRyObS2P8dC/1LCfjq5iFc3+93wc/Zjka+nenkWxKv4LPzp8qwC2vzy1lmenn3UuY6XerM2
mCziqf6tWHw++1EvllkxW565Zz9f+Jd6cZsBf2f3cfVlnpxt/l6evY+T7y/PjhTi5LyIU8tN08VW
BegLRsiZOAihk3cp3JJNMr0YflU1Jxu+95pwEH1pncLrAA8wfvnixC9SbV3dzfX2np+lYzsMFLgw
+twb4s2bN9Yv+NPJCShQn11l090OgrBjY2RTbCE8ZHxIyABJbNlIAL/fX1pNLkAXFiz+DEYfwP/c
OsUswgqpFycf9bxYrGr3ixN362hXRZEbhLP1cnE2zmZnpdvpExt+Tk78OM+t60U8vxmeGCJKCuvq
ZqHjdISJUAxTWAyy5TxeJTc/rPVaj/CwprppnM3sVbnBsk6XepHF+YsS6WWJtVzFwJh1ms2sPBun
d3k6gJds/AKuY8v6BX0Rk8lEMUcrnqhPm50VHwa72nqkAxhQRkgJWxpeaI73mBUq+NdojwyswMKe
J6bQnis01gRRVEeoMEYGpBj/+z4koWgDCSkim0gV1odLFyTLkngFpnu/g4NFELRUk6RkjyToRBPG
2kgVlv1LA81arGef2nBcsRoakzie0C5aP95Mf1mFt6Dp98YdIHW9j5efh2uIq9x49zCbvYewGKb6
V+Mpww5typwG7bHmso/2RsvBxeWHLcU2lBKyAZXIeNwPtQHz8iL5/C/D6oe2FOfZcvWuZP2nbHUT
ZflKLyp6370z4TMuvpQW3TusTAXDmBykWNH8qBOd3eodPb+YTotZDzKjLWii48PQG/D1zF8vTLIp
sc+LYl7J0INPKG/ic2dyH35FwY+AhsGFX5dznUDyTCpwv1joqFjP0tItSgqqZlnlSDJO5f0UNmYZ
1akcQse0pnsDT6kYfw2+Q2BTfiCP3lwU26zUIwomTVp6zL5Oa5uykpvRdHm9SwnLu+VKT0ef9WKm
831y4DV7TMZaOmxyDIkmkdEK8vbXKGHUoKRYqj/1Z3rZyfSknulN+t5ctafxLL4uY6Sb8Ufbu0bT
68VoVxo2BWBzraaJurK5VsTRzSrwWRv3dtgDBZ0QSvoFpbTGbcXfqFmmNhTm1cUaiVpGd4hSVKdN
XrdbjsUTTgNwPElFu1ztIMdFencEh7iBmCAe95SvD5dlzriqGadWb6ioZVbOGXfGfYXr6dPDMySE
504BzxT0zxfmlP3Vvf+2yNJvoDFNh8MRNLPwsqExXxRf7l7tL6zWkPdemdut029enI6n0CsXyXDo
Lu9myRV0Pq92S9/peP6tVd3aWBwOYeeL19+8+NZ61P7X1uvTkvEXlRb+Gd/Gl8kim6+M95YNEd30
vQRraH5TaL5Go8l6lhinjvPRGAa0IVT+nkh+DGegplJ74Wy1uLsostnqkYo6KN9ePJRyBeLt4Ac3
Q4ycTihJhp9EtE3uOD3IGt5EdsWcluNPZrqcpZlR/eg2hhI5zvWQINbh8R8llyUPe8fr7h3Fs7vh
8Lc4W9X8cz3LoM8emb52L9T79Up/Md5y1H3/dVgmJGsyTVDSLxNWvEemSvf3CVQJc4DJ/eq0wSWE
efLyJUzg+3FtX6qkjhVNFP/Uy0/F0Wg0N25wM0puDfkHJlWNqdNFxzDT/CFepkTdyWCwbUUAwT3F
pMFdRRWMkVSDw2USQxtwrQ/TdPZOkE4cyYCmARkk8zmEnOitXrgedhXJ5ZbQV5zycgUlONm45rd1
B7pZFLNiOEzXi7JIv8qL2bVlXup3ldde4fxbsBxCOUTBQcGog2uSKWzySWWHIQxjvXINS8lq5eEm
W25KB0iYaz0fTYrF6eOYrn4M6ybalqvDri943fVTkpIDA9dwY5PRaKmnxu1Hy+waKsJDvZ/JAzMp
+79vbiJozdwywQ1HxvyA4hg0YeltttQPHT4oOqCrP0FoEK7quhrTpq7YgZYVP1pXrVaVC1afPz9c
/uvjuV/MZrrsaMxZr1785Sc5GOU2KiuPIkejCrg9LbF9slBSyQTm7L6R7uUvLS2fVmp+YY0Welms
F4k2C6ZObQ/3/OiDXpmz/uocq3a2OJZqwgjqH/Oe42zpWc6Tnv8M6dnOjZ5tiOQSDa3yCH6hhxZk
jyI372P91YPxp6sI2trV5Ko9EN0/uOH98JAinU4gsCoEUOlFxcmyyr0O64nZkurqgSRFra9DcUKA
5n5UHGKhaG/Ubm0+3Nn8atP/ZDPo7+M8+49u9bGbLVVh2RZhKihXEzOitoAgrgbT6ZCTA+F9THCr
2vGVEjR2BD4c2s91xv1sZ9t/zJn2s55lP1NekpjLxnuTCahhqtMsHiyTG52ucwiuLNdZ8VdPVJNs
F25ZzS/fG12VZRzXQkgmY6onvK9diLLry61mI9Dsu+/rJ8oNSDOA1CBjmbADB8AGVE/j+Q1s/wmm
lY86Bze+1b2gqsknEeJQY2Cgvp/524MI8z58eh80cprQijn3NQhPc67Q9GclnMY7MH50CSOBXg3m
i+w2Xum/m9+lzqFPfai66STuVbdCpJ0+4nWaFQP3Bz/PzGMhf3GF++7Ftt6XrcbpbmHbarhGX7U3
njGqRShUTDUei75M8lbP9CJLNkWtSaTeynTw6w8zGPyUxH8PHP/PBg5FmOL9hX1WzZ7j9WQC/vP3
CPKElb3CeZsX4zjfjPjeVs3gmzn4Zg8B0izzCeFHHAA8spN/vj7+mbr4P6KHf8YO/nnCnCKKHNof
5rHprv7u258qus0jqeXucueunFq5eX42rp6ftbaOpsvHZwEBfaEokeOaD06IAwuPb+O5027j9ZFt
fB8aboKx+8b/52jcKcijVPsZ2NFvv7aehTraW9O2t45MMv615G6hV+vF7KF8Kxb38a0EZ38OvqVo
8s22b0WaC0/Jt8F7Ur5pjW/MGNvxTZ+Yb/SUfBtIus9pR/MohWpmyjFtPGxcw9RfsiMybz3DGTzm
tPqLGuJqmY6SXMez9fzrwJI0gYVS7bRBa882Qmtzozvo3ccbCWo83hgjpLrZiD76rTOqcCMenOr8
trrwNLVyi/ZktbIH8pG1soG5M5UJAn3Ek6iYtB5FxWPZxDXIqIa83Ba4UfW2el78dh8+ow38VIxR
G/8fJYU97socU5Xgv6fP4ttHYOvv0v5u9iVrsZ+CK59cFas4t2br6VgvLNgLXpF8tk4XOlkvlqbe
J9DErnRqTdf5KoO27lvrtxs9s17/N38x3DFnOC9/ntIVuqBP4bI71KcLK2fz+2mGmDrio4eXA2CP
HlnquI8eU/rAjgqYzlwC3J1cGoHGd9YKBlzzKT3j0N+aD+sZX87zeL4Ebz7dOLFV9+IH0N78cEXI
bvtD6/U2J4nNk18VxgMa2u3n0OTmAZgK4JhD1X0Lvdt43HP6PRt/X7bbJ+QG68c/4LR/Wq1mvyOq
8Pbh0pMTL5vFizvr3TS+1sudF9Q+c2jZVnMxnkzG937wsPyI4UvYt/+kofXKDykOXQfZLKLcpo4v
bUk8ajMWShaEkodEvv5TfVCzrhWBxl1VCaQhKK2XsH/zScrLm2xamcA6RaCUEBGXhT6xVYQimzIp
bc+JIjtCgUNBYdh1+RMqJdouLs/6eGpKhNOuRLHCkwntGr/X4hHxGI48EI64yKY+cW2JsGsLSrjv
R1Jw139C4aprdRkwMNuRAVNNex34XF/HyV2vJCGOKAqwbzsyojaNfM92I5eBrZD5j1Dh/D4zVTTv
k6e6oyGVw7u+RohALcs0H5jolUtx5oYh9e1QUAYxybnt+ci3Ix56IoSoVBQ9UK4m1X7JmvfUZSMS
xR3ZaMITE0dNix0UCrk+dWDBDmgIMUVpYEsGxsIOkQFyHc8X6OHGOizN5mJdDMlEN3OaxYmGdJDk
m2S8tE7fvHkDLDPhISXc0HYc7NkM+iBbCoiUIKQ0YjQQCJHX1n5fk5bUPbQkpB7dR4tHjBHuSRtR
B9tMCWRLX4R2wDyJvIiRKBCHaYFDdGkpNZmIunku76bzVTGtPtANHfUpHphNGMjDXIdDqrgN1gCX
83lke4FLbM9DDvYjhDyOwTqXZdE6O8/GC6hOZxfVe8W1/LUhsazZpHt1y0DtptaVpnRpn3SpbEn3
8cqvtptvPTh1BrjcU/4GAaGhYzLwINcJBu7nY8f2OAlA0yoEjTPOfecYAetUavzXlxvM87ib6yRP
cCtyftPjpKplk/ITwnto65QPMOyHV5MaBORo4UK2C6AoUYS5rUz1JkJESknue5QeI8a+dm4/y18T
pnuxLlKSlI+RN0VKElra42UVp1d6uYJufqYX72b/hoZPpx607rmuyqvCke9yFNjUE/DiRtx2IVGC
6wcRjhRl1GO/K28fIjsYl7/aHcX9m5oyx91oTlIiTHJ/CTV6k20M1uV6bhyh3k9waBugUEHJDSOw
mgNW8wSStlIkUH4goal4qMD30KwzPkk16zAOi7Llf5tnEczf3wXud+75Rb6+fjezTokgAywHFBC2
f4JAAUOQFCS2FffBFz2QxWM0sqUrmceFwop7XTcMv4D2N/l5Q2nwWX9Z7e1SUd1f3jFywIKd+2qy
G6t1jAaLWpeJAxR1EUQf310M3K2phATpBtx0FkHgoVBGdkAcU4F9H7ol6DEY5U7o+ZL5iHflq8WX
Mcxb880XWbLsr08fN888L886nNSFgPG5k/1gMWYtA8Lg/Hk9j/ZZA5dZA5uvc3kViciV0vGgtQ98
ECdywHAQfywUBKoOFcJXx2SNikhNnmqhwa/uZgdMCI1b/Lrvg49xqovZz8Y/354HQKwqSZQMCDes
gy2IKU0IEw6c2owIyNwRJbYbOGZMob7jBRwRJ7zf13pJHfKo3pvrEk5S1HWrSTphpouw1rNiMZWj
8fUi3roVGbDSqSA/Q3HnoR25QWScyrOVAM8CAyAP8oHnSvdep/p+rmf+eb87Vbdn4E7lyBgBFzEI
1WGnJgnBSSzbkhCc8nGrsm7eod+ptN44eNh3HRfaVK7C0KYigvbb9zxoXQPpMiSFJ6N7hWqD18Rr
X6rznqTjziBEUiT6E1tSpBoC0S+m82JmrG2qKiqrqomPwBMcUerZjseZcTFqewBlg4d5CjGOZNlw
t4TYo52Vjw75FZFku9xxrf1NdUlSrMZdSehYtgaHSpL1LFs1BYFAJ2W4YBMtro+ZG/jC5tJESwjz
qyIQPCqQPhKCw7xH7hXFZC53o7QDguxuaYghEOmKISAwWoFvXt/+6NZSlTQBAhvlNlAIYSETxIap
ikCvxgRUF+hNGYPejQYuJZgfk662pGoutV06qTg0p3McvL02FuwW40QR4Nx8rRBU8dJbqlYdKndI
JcQxR75jUwLdmJIwrTESKuGFIaPMtJLmK5Eg4M4MQI2cTB2WtsnBIkctRd3ofF7mw7L4Mscc1riM
w+zObD+EnolCz2pL6Jjs0HV44GMPUtb9webHi3EjxPpPIb4D0v03mStNYTjuE4a0hLlarJer8DbO
1+X5rXtdnkeRUqvE2JwEDnYJNBO+pJBHXNNMhD62BXUCL/QJR653jM37CPWL0ndnSzTaJ5ratg+b
E7zNY2J6l8A2aR87YsBQ2S55LpceJHlbQqk17RKMIW4I7UQkGSI4UAELax5TAZ99jUST2UT0MDsh
rVQeZNXnMBZ322M442ImfxCiygnDIaFPQ5h3uUugVyUculYURbYP3g0/PnGJ+9XWZwv+VU/r8tO/
pXtfU/pJj6nKc77KVP7H6HKdrfTWNpSZrO8wyYgX2sILIOsHCJo8WLBxQBCJBEhazrxbq3RgTprE
Jl0OYsxaSXz3zUnG+asWTXA5EGUlxVIGYWDzUGCIAI/BuMCF7QjwEh9jJ/TDJwnuLQsHInx7uSFe
TGWPeAy13CtL8mKdDqJslr6/C7QxVL1ZUH5opOE2gV4HplcFmVPATI6EF3EfMRcGpWOCvI5/QN7a
HQ1BxrLHU8aqna/O49n17lvuQAJRyWB+G8/BIScihDzMHTAVJ1BkGZgqlD60o5QIRf17TVX73rOj
Q6XO0oEesHZHU2jVJ3ScbsMj/880HvDdGAQS4gDRUAoYzIWPwFKQCiRmvjkuFpHwYFGoZmzUMZrE
66PzdjHpZKYfrsoDawEqLodNqdBAlV0zdSMYn20YPz0IixBmF+FyULjjMyIpk/z+fFQC9yusvHTS
5KurKc250wrj+nhn3AP6h9JB9hMkc0UUuK5vu8xEMw6oDQ0ZeD70ydJRBNhWj5wg63ecNPkVfUKI
dicG83GuFxBag1udnJd5cYDNvs0/zb9MYlJEQmZCdhhQ824I2EJG1LWdkDtRgB2fR/h+b98T+pqT
V5T7b6uutSTtpiXt6EpScMS35xeLAmaf6TQeZ3m2utsVZ8i9A9NScRcmeqgDUO6UgtIcQKuswOU9
c77LIuIr7H91KHv71aHsMC8NeZwJ78ojJd3K4527l3sRiDSOpoTCBDolV0lonIjEtheCFKHyBccc
cpPzh1inwd1Jk3/WJ9T/8nYtzW3kSPquXzHHvkCB9+OIZ6832rOeVnTv3Db4KNqMkUgPRfeu59dP
ZhVZJKpAmbOhmIspqWAgE5XI/PIF6jNT8fePTxi92e4mobPxJRXLQ7FREsbhHInsE/E5AQAXwkcK
UCpI/z4v6QYtFT9u2dARbi0mx+vD6qLc//STNL2xxw+ML1mRSkaHE/A8eM0ClJoGr5nrFFWiAKnL
XeH26zXa3F2PqLlYN96K6xYTdLt4fR7jGBotQ2EKNl0FQhVgJYyHEWsj+MrUax69oTLzt7DsOGFN
TbdsUdNN9hQvQR3LQ/CawOHq4gvC8E55piKGljlaZiaIL8UCpjMpixSKZ/xNSZnN3t7W2bAJN5sG
Nxt6lvjTVrx2K2xtHsUdj7OyLPkEXrsOGkTdS0w9g6A4Znwxzvng/VvbW81ZE7VhLaJYM2AyhBl6
J/+33fY4jTJkOHlKOk5MLqB0WPagdMBhlx4gXtY2Kfs2Vh1nbm/v+LjiYGEb2nFhR23/92+Lw2J3
3O5GnG/0I6f9iYPdc5TCYeNGA/Q01hPHlSfJCqaZ1ULLtthOJ51QZFsULaeq4L+evh02CwTDDpxC
GI8fKK6ZsVhCJDJJDTCrCNjHDL9GywQDjCXc28p7nPnG6T8/nlC9alDdjeJ5dRkQvHiOGIAFB95w
SeAhOUBhzEgSAoskpMiUU5QZRms8eDVJvXjXEMPFRk/gICBkjDotYN8PoD2HQIGw+DpRALn3PBfp
iCsCXicrmljMQtgYwXHTRZki7gwRjcvcEMWrERUjK95AWSuAtd2gQFfP69XXb93u85U8nkPBMTJA
0AmkkWWKAXnMSyaPCisYbwMzxb1DKLhJRc2EoA0mNJ/g3XGd1x76pkX3MoSBxRCoR5Z0CtRTQ4oF
x0hYYUiI3hHOVZGa5uTtXSbtMn+Lu3D1vGZEixYjU6OMp/n4j811mmTINfQxKB2dxXAeL5jVKgpg
IBCP6XCpogg+Mvq2q9HPfsPX6J/VNG8aZmLt5OQoxP3z/vD0fbfCc+D6k9B/9plURSMPhvAMdlgo
CgdCgzI2QRSnXKHS5Xd3REd6brklp8cPNVsN3b1eDI7VxXxhW9bx+XWM0ygMoaH+BiSbPEV5oqgp
Bc8EjLkgyTgjvWLFCPaWXawmrilbNM7xesVbcevfP/kqxSZP0jOcaoAchklQkqIAeUInzPDCe8nR
SG10cUKUu+PWsNRNhdQ/rZlYNcR/vZkW6Pjt4dPz4vsJ244BWKYee/DhTZ9sBK9foValGb1+gHqm
vzEL/KFo78oT1svcYKMaUzOzmQfIu47Svj4MQfrPf8UvR2glbuGMgul0jFAjFXAgwe3WBg6EztmB
lQDMmt8zcTsh5aGmuGHpOkFnx/sSL/2wO3YHrC79iXMMNg2B2f6n3hEXSRqjCJMO07gOsKGwkbio
qDbwTKl4r4qdrng7xDAdWfOoG4enW9q5NQeZvT476pE+iqGuBX/AE26iUCh3YMAD+kQghiwIkq20
JudEtbb3n543D099djZMz3nYGDU9O/lPP2k72Av8RGcI3FLhYNsJiwmOveORWC4BWjrDow6sBGXe
L1ju8w2mcs2PaZiVzYpegiK/zTxsGaJWxoFfrRMAEs8ceHUUVBd3xWcPopbNe4VBfmuclc2KtWhm
Y4Ry8W13bhgB4VHubBdksSx6AUCeR9C5VFDiLfAhOWYKkwm+zz/P7cL1jBNSeIuUqSv6+rXr4P+/
ft8dv3RVSBaFWzyyQbjxB4wYl2hKsooUFvBLWQwICjqnBuCRoTHYEty7G+qnnsSnOYWVJ1sPmmxF
S5LWbHK6X7EfZ3v8/mUL/s2QVgdjr3urnYR1DFGJM0RkeE8hBkdkFtywEHk075LTeDpR8B8fbrnr
5+c1f60YyKaTZ6lbvr6AdrrOGYGk8ax0JDxosC8mYmoauPKsOK4z8zSE2g+6mqNeu1OttadB2lw+
/LIH8D7aaqyIAaEWBtGFxDQwlxRMQDEkS5oit9RKeVca5Tx3e8/OT6+p3vQ5/gnV8EczkYivX7Bw
oO/bGioUhmIkqnqfV7igSyZUeXQlMWAZuAcXWFFwfUCJFn4P9Z9wjT8Pa7Q5uB4x4cK2uFieNeTT
6tB1u187vJ5yfP0OvxkJZcBgCKGkQFSimJFgBuPhjGivCuh9AKK51DIwn68mR+oGORj1rZyw5f4F
v5ZpiHU50ettETMoQ5FICpitDeihS5GJ5hqbQorn7q7NDLBKcw/hQU1rI5gLfzQtgz+s+mG32feZ
hd5y9p+IZSIGDuAMGasdERLcLEdRUSTqJUtJ+3I/Vr4s9IbVvwyaMNSSBbuahXDGOPkey9SUfmQG
X0T/Qx+jNornqElmADpBWiLxWWFdJCoGSR2czbtCutcL3YrqXA2ZMDNHzhtwSsbIzuH71+Me9JF7
tKMx5WdbmhgXJWIek+eAtUMWHAEWiI5gsDLonBzUJMgzm++hXnluSjd8qcY46N+ft8dOXCom7IBz
IyAnYzLhmJgROUrQrwlAls8OpIMaz0VNRzXRQ72abpGwGEn4ut2tv718vQRheR+Zc9wBtIVtkA7j
sPAv8YlLYoOiWVgQmj7Fe01DNVNNxFo1iFivz0T03xV1CblxJCA6hm4XoEoRORHWg7oPADIZ6JrA
ZdYlpJqAapZ6/UZ0fSPstDQrPH/rjvv98QsGGkC/9IEG+NxgfIeBBacJbHegGBJxFiyfUYxEayhn
jGZw8H8QqhznvyXW44CHmtCuQT12N5yEuv/mqziI4mkL4aVr9igGuc7G4rd4JVKcBxQSSwG/CbQ2
HMkipA0MaG9ixPnMNWFuMSdMzjp+0vb1b0Mf33Xs4PQ9e6ARHbrewnDHtGaIj+B1F6dAc0hNVFYp
sMSwHu4e9XFZ7FYhzfn5Q001a7EyzQbt9sft5pJEFX17DxYNMSYN6FFSBAd4m7wHeAsaMHjYYWGV
Kty9WeB0Ne+ErmWLrvXE3Ky3i8+7/esR608+YyPtcMN0v829uaR9EwhLgarEPNFCe3CgDcftBpUt
jHJW8aLynZt8Xg4QUhyXu7XjzcETNhsirqhphQq+vyz345fmoV1FvI3Fl73uLMkXa4smJjHMLIaI
x9QSGaxQxYOTF/zdMYLrpd4IEFwPe6g5aNhWxflZqmY1c0oNJd8hABaInjDn8D1hGYXnnDAZlOYM
BEpODNEbpXGwoGhQIbtzOGlxWH3Z/tE98hHqwcEcNEdkYG20KETBsQZNTEFgwC4SDWYRaHGC5okS
nkxWEyLn7tRG08WsRu919Wu32h/WfSfT4FE5+J+Pst8dqZWC1S0BxtKpIgZbOa20GnYJSw3Dm5q4
WuCmmrgMeajpbZxIjWW+w27+38szv2wl14P/652E4xUtSQL7fljf0lgoyVmBYga0x+PkjV7PUxFg
2Dx7hX9sxGsnDjOYNYs2rc+zhmIcA/wexQCcAal5WQjgaR6UkTFT9j4OeWNgzY9r8bOeOoJ/SSiY
eNjhXxRNmbhPVBA42A5D/+CE+oKFK57aYrEGxLx7ROEv6UZyI9UsrRvn3q251IPFxm83vURvtUT8
DBo4Y5Af5ALrCpLMBDwDAJ9FGYx6MmMmgOt6lod6JdFaXp5F9NC97P/o8LrmS54BtY60qs/36JhB
JKLmxCZwqKwROiedrbqRYpjONyGmgf0WYjU59OO29kr+v7dli7qd9q+b9oiUgR/hIkskBw4v3Eqw
saIIUPQp5WCSSz7dq9lx/tsKHZ8+1OQ23IpFN+1B+pRKX8M32CQx+BSS0diXsXJusA7OYsrWYfId
/AkFLpO3/++c2nU0oF/7Rhygf1Zz1Ii+bJZiWgyBWaPn/dnWMlCwJ69PM7BU+Fas5QpMAieZKixN
ogzcPsGIcUJK4TRPVP8wAvzL/kc29jzioaa34V4trTrLuf+9DJ0cY7TX9kEDLsHDlpGRZEtAtIZu
Nxa+MZmpkGBf7dtFMjDxeBXLHUmSmo6aBdtwz5Zumj/oEWtcfD1+w+7yk0XsM6CmBK1SkkTpgC0R
4CtazSMBHzHl5BxA53dpibim4Ib7cjWi5rGlDZcbNakGur4JBPsuwRFVw8lPXGMBqSUxZThD3oLx
5GCruIxU8BwZZ2+WXF3PXFO2aez+ik0T0KdbG5f7/d8e/4D9Wp9fAVPG9aYophRtQMmHd+ACNudR
TLqJ7CIAbuPkPZqpn/tG7Sc+eqjJVC3al5NdPR6wOOacJ+TnciAraVFgSElQChAmNns5Cs5tyaUk
HZOR7M0yq6tpa6qWjfjoaqUuqcs+jYYlOWOSmzs5pLi99j4BmqMuR6BJgSir4kjWXmhqcvCGvlsl
Zy+t9xREzgiu+V21JGgzlmQdt+vvF0uPeebe0poSnZSJcLxOQQBsJc4n8M+9ED5JW5yewOrreWoC
No3DtTZT8/r7tvvfcNiuP2M/AlXncPTQU2+zMwJAPjZiw75HLC3gCvbdaBuN8IXfVblyWaO9r5fn
DzWx6xYH3TSiOhzCgIewL0haHV+xUXxyFktxEZRFImaAhQVPpdaEM5+LFmh0y30o4bLELbN0GTFh
qOHmrBdmcjK3GK49CYa8JPR4ZjrKIIgXCBgcQAcXJQPfTzjGnHGevdkrdZm2Jqp1MDEAdnJFV98O
z+BfneixAsnp+ylBNnJimXhlsZ8SELbNFvyYFDWIKnUh5klM9GqmioSqM3r8I586LhckOLwkv37Z
7ravx8MZhZxaUfr6n2IANxsMtIDSFSDAJPTN6jopmawD1ZHvu7ZjvtKNTFpjZM1l1xDnbmbtvj4v
jpv9Ybx2SWOMUcsswOF2JBls/Ewgty4CtpIMbLr02CJE33r39aQ1WS1Tt+ns+f1vV/vdHxe/VQ5F
hlQnyguxwWhUU6CQk9MEyCzggdMQ9cQlqWZ5qJdy0/XhD0pNYoUfP8anc10dyH+fKgFd6Sz4TgSc
EAxCgN502UkiFcB/leHAm7sKI3Du9kvFJw8VYc40qF24RjwqfeuOQz3ep8P+uF/tn6/rsWN2xYcg
CQMcgGHNQFzA0EWMikZwALK4vypwttJtvDwfW/O31g3+1mNDFLY+gzt3+J9LM0LvIoZiS2RCkJxZ
H+cEAQ2OgjdDhcvcanOj2mA24YScrkHO7JIOsMTPnw7dpjt0uz6cwU+a/1TiDMeESoCJllo4PXCQ
SBAGHERvrHPJBBrvim5OlrmBdutBFTuLzWLOzpJOnas/d8fyhDf1DBWNqM8iIN1oiyWlv4aIoTcV
gRnvjLfMME21+NFtAuWGkPePKjqXy1WDztXY4Lv8B/ZoXgoAet8pFfC6QwQJpqBxXWZDFj7Cy1fC
OBbUJPlbzVKvv2rt04afVSV2O8wrXhRsCMgbByWPVYZGDkkpQim4CDFaME+yKYPjdBURq3l8wmFr
0WZVHfUBMGKvPu079fFtCRGyCejs8gR+pAD9CAKXMaTG0XpLG9W/A7AOzx5qBlyLqyks/LjYfT7s
/6iaVLXgmnJQsrDRqLKUw15DC4IIyIMyvKfsrkTuee4bKvf0dEL1ukG1mAaIh5IdDM9+3vU31Q+X
rqGY9QWD+ImCohi8CDCfkWFFtgAfx3MGZ0to7ixo3izuYqS53FvFRJOhNYvSNFic1Tx/PWyvW28e
P+HvA5uMDhciqCH1lLJzXBpJqMVWKuvBp5NFE6kTHMgsAQepd4+DjuTcCDidH9esu9ZJc9O323/Z
AJ6M19ft0Ch4lk6N/FLqRaZBE0DC4CVaOG+Bo4r0qYSkDOfl7YDTfP4bEjobN+FmOedGWj65xLEq
cBxiLafXyKjtU8zDD+iTOwX+Cc3gugDoB+WCTIFOAfCD1/uCevtBqPBfKqa80HIDRYzPH2oORYPt
5bTj51eAHscOPb5L8mGw1q6PmDivuXYgqjRh9UvAZDrDZmGLEegUlbqrfWW+zK1w3HRcxZRayjlT
aj1NP27Xr5sx7jfNrRqXvFdw8DIGLkSMbkiya0Wl9E4Fpc1d6CM9/Si4WA2pGZmH2hyz6+nVuD93
++vrLwYujAEj3ZfB8wA4L4BdTX1XlhSc2Ah4BDSK95TKyO+7ZO9qmTYjVwMqNuB0zdlwops4CwMB
4Idvtp9PX9D9mP0nSzn761ApNrA2YCutpUvceaKxYFA46ohVwhGZhBLJJeru8xXPK9yoGjw9rfkR
mwY/ckzIfOm2L+vFM1m87til3s6eEY9JPGSRMtG0YPxTgzfuAPskT8H7SUIyM/HB5xPW9MiGJnZq
dQZ+v2x33eLgnz93y8s1Xqd+62wAZAXvgYS+YVwrvKjGEXAVA1NZmyjMv6nfukFmzaZqwAmHPVHV
sb7cyTx6FBj48OBwCycIK+i5SeDTw0YTKpkMTqVI1V3exGX2H90IXdOuGypp4XTLWGIk6rB/fup2
a2wWnDS1WGu45koTbxjgZTAixGMFrw+eU7A5LN5XIjlf6g27WY17qHloAKDFYnodRjwsXr+cr0Md
+3X6qiFEAmJIAUuuEAVQD7ZD5KiIw18BdwfFqTfU3ZcRbKx1wyg2RtbcLUSLuzH293XxclUc0N+1
bSmIGSBtB2caOznRf6VwqFJk1oZkg54c7qs5Jms3lP9iSRt3d4xquTzlP07XqHHYXMwOoPyff+4z
BQVMm8BbghSIT4QTYaXB0Kpx0ovCuMrvh0rO9NwYeHpas71sGIslmyKS7ctt222xW8IBpqQB3AUR
MErDtCYJzqBg0dI7+74+fPyh6f54w3KvbUMld1x2fF5X/J+f8s+Vx6Y5JsEd8Ra70QEsAiTGVgPt
wd55AdrE311LjJO/UUWMjx9qGluEY/1wBTmA5cW6O3ar4/7wuhouyR7S+06f/LWsPHhH/XXTmMpM
4Fh7nilJovhg0cixu0L3GJBP56VuA9zZsJot27Adm+W09eOXvovmAqa0lI8KUf3wA4Ip6n3fKu4E
g1OTwbH24F4TxQD7JlVi+kG10r90fmp6bl2TdD3mmmtB9ZxrQWd3JHzqDhhmXuz+yduVbcdxI9n3
+heosS+PWD08bY01ltT9XKxF5hElakjJ7Z6vnwhkVVYiE7V0N49fbJIJAYFMIHAjEHFjs5uSRB3X
I3WAA3DKKWI0JGgyYmH2hGk4PAOV1sWboHBnmDP25rJhO609X06Lyc3iY3799GP9aff2abt7rLFn
E2KN6J0osBoBcwmkb8942wsTw9CTrNCncNPinI9xnslq2mrVCt75SEyxBSPup4evH+8Ga1NUz8hA
KAs7ySkJhyXTBvYZw8hqjfkbYKJk1BfZidvYcOsAt5R1mMhyZsKnBu1cVe/LKXFMmx6EfBNObA1M
1HQ+LoMKmUhVkKRF4QWrUKDQhfWK6cTkjK6h7aiVYSM7MmzGLCnYTaerbPQ7Ya6zyZ5Ehjy33BUw
c6nGDD1BOYf1Yvq3OGNH7fD7pZdWcDv66qt+AB2G7sHj7Y0ZY79dcgAvQATmI+ZKqUKwAhHRmQmf
nMtSzhK2Fv010vB152XwtR5fxveHMYZDVH4mw3xC1t9gMUU/YtiWDwl/1crzELOYOYxPXcxGNr2R
xxusp+1+eyKaqA5AnqgPMZEiK4s1ZqciOwB6MqmD7ayUnoXUnfpox77fd8bezjFGrbRdz/b14+EV
jnCcuiES1JViE8Ymc7ybFlQagOMBCfRgWQMIETnH24zrxVjnjOxFw3Zu2876kgcOl59+zpU6Y5Iq
a31iPBmAqQrpX4OLWCXBE+RFAiQitFf6306VPcVNHUc+8lQff1+1YnZlXzgK1vv188PyVEQcqOkQ
CwH/fyNruJHlVKvkC9jXYO8JieTuljrCmJYiRQfW7m21IM6M2jiMmzazuXXWnNzen27sv71MLmzp
kDuU8fPY4oiuTm+DPjYrKUEvlLaRq8Wan/bTCtBdGPvFHQLWnvv+9AMgxdx0wvhnWZ2c9f81IVa4
gmw1WmBpF1MEZu9zQnkuJRRphbrJZLswaGOLzpu1E9x3DlK1uKf7EGNzpRu95DnXG0ZAN1JK2LsY
eBClklnT5ORN0V7Q7Rli3hhXrUS8J6aY5abcPz5tPo9BVboSSWumEoO9WSIm/gRYEd4z2KqBOVjh
MTN/kTRk2mUjktksTU1hdnPanI/3D//74+DArzf69XBORWlMxCAx4omAJpfVnhLDCjWMG8PlTRrw
2Hv/LR6ftnLvRE/ukSf38x+P214EIqUFY+IwfR0LCOAln0c4H8A0Lo6zUEw/AvHUYSOH7eFsa/gJ
Uvzj4et2wgJTWZSzyYrBiwp4iAmvYOHBYkRqc1u0Be2b9BlcceqtFcN2VtaEbvGUuvN29/KCSVPx
8QE54Y5oq1rPsBlslkITFfHlyOqGUY6ogNdtSVFTZhDjcr8zEWVPxFPc0svk1J/gHq854PNkSeYe
TikGsAPUiyKWok0fMvVxRuA66amVwNGOBJU2fXY5MHcrBJg4vAiL2g2wl2Ro+qERWMAohI/Jgkw3
XgmcvQhoRN3wzvfc8DlMSQ8v35B65nDqlL8jSHG4P7HCSS05kTUzsL4S8roLgbkVoNmQb7JwE3Io
Rd2YjDcd6GyqzbTRbEKdI2izmx9B9+tNU5ejUtIeqIl0jSGyWjhNkdRH4N5BDiVXsOSOE14kLalJ
NyntMBupSRWvz1r5d9ue/PvZB3m/22BdhL8/w69dureoI+O6ULDRMPk0c0e8C4aY4JNNzOQsb7I+
24HOckVM2jTT2bplVIHYrtVxM/707uPhnH27e978eF7SzUqekKWBERoBjYskC2wJDScSN8JhOoRw
N62s00i3UK70xWqntl5GRIndIk2l8nt/Bos34g8124Nb8UYPrIbHHxGHeZ3BCo1wTnhM4QP1CEhZ
kKIZFoArwfIrbp/DAGcc0Yenq1bc5WqT9H5ezuTX9T8idPm8PkDr6omTAxd7zcWF/1qPliKoTtBW
jGXiuMtYsykBBoYvVWSvhsbJT/WX+RjzEhrj81Ur63K7S7abB0eg+/DHQw34qPlBw/W5yzS7CGtJ
W2QFwfwOjzwzTnOuk6QsyZvzgz7enQ+t+3jXyMzF0v0Mh+EcRH68K1P384gmpdYhFQ9nRAAjXfhA
kWISU7WNgc654/om3+20/zOA6K7vepYAPJYz0Pdj7vOX3WY9uQfUWlfuJ5qT9RkMewP2K7xvOGY9
QAHCg1UcTovMGiLceUerdrT7jgg7dbBBf63XSLvn8vi0/j7RJjkwoTATH14eck4IMKOZcCR6OHp1
ySFcYbu91RRtBDhZpM2f2wntdG9CY2gdFkU5wTvxZiBd4Byr0AJ+0jWRpBI/YHQzWJ/SxQymRmWh
WiK8U3czKZYBdoCRxgC7M9W/AOyWRA2GqiIPBhL9Ww42W1E2JpatNvJVq3/NS3+NktrOqsCc/Fk4
2G+g6dFbK7gd0tOGHxAFJpU58hMBUIfdlWBOYLgEWKjROc9iybfxTB+GOHNgDg9b0Zfh9mAksrlj
4r+Ge/rxxK+BCnCga21iIUliJEmm6CGymWB6KMZXeqduClQ4dH6ukE192AjtOse7XN/3Qpo+7P74
jmkLcuD5Gn7AoyMrzpEO26KBJ4KOJAiPMUzwBTzgLpavV0/Bzs/rX3y6aiUUPbHnCcSxklm8Ww9V
RxlsOXRMuMqv7nKMFj0+mHQvwLgmvgS8o2ECcZZ1Xr1GEt1UhHMTPLWYTbKzlXcbM4Zs+Hc+/nUW
qwGmKWVgaZBABUNCzoBZ55Y4w7JzMhcT/yxu/Kl8q3YOtjexzchust78Nhp4Gv3rUmXna00vF9Gt
GziSRguAlDIzprH+V9+rMelqJkIHN+3Fbrbue4GS/sN7DIyuF5lGDe5DsMYzDYxYUOVgauBP1Cei
qNbRJ/gUWr56QCbIcebS9kNjIsK09p25ru/PJuHUhOif/X+PFeMofSMGmgqYCawk6Q7sjxx5ZZTG
XAeWC3ykrKK4utmx7wup2PC0lX+9hIiKs3lczANGRA/wHCxAVFFW1SAwBiYyKwBaNFaLGGpCwtox
YAIKGwAlcvoa6dh3h/EvpMrO0DtMwnRmJueFI2t4TZ0Z07V60sCNyh3j8L45oVZhlUh0qinY9Bx0
cLZOBlrozVE+ZwU/Pm0F3+06gvcYzR937399d1xINXLBFhqVMSRjXpGQhaORwUjMgnIhtLkRsx/7
vkR/9uu7Vup973Xv7S2B2KOjh1c3qwhRlmwKMRYrymO2vy0yEsVpNrkk5Dd/jePjXSvLIuK6mZ+g
S8eZEmY70rPD7to0nFHwwo/eM/gkrhSYjExIQOOThO8CH0czy7nRnKVoz+T5tL22IpldT6T9UdU/
rr9+etiezrBaFUxJLz1IAqtbIGURw3JsCqtaGMYizcHNwqOmvbTD2yUmU3o3V31/e9junsYqZQdL
TWn+hsvq1Msh5WAFvgvYaDagXewNUZk6HSS36crHnvZ/LlH21GLVCttRfmYR6nTkI304Zi6P61Up
qmqELyvCgr4hPCGFTsFK5xSTrsHmtNwXr7K8UiZkGGJMjr7MOzo2a6ZjlsRE+Ec1u9jANfVyPAgP
i6PiABYMKA9LlMelwQB1eqcLiQYwM5y71Al7jRK97beVruNNUUaaZXFY/wMp41QNsRhORh5CMhK2
js3MEoF17W2WKB8VEkBXjP6mCJhD52cTuvBhK7S0HaHNvJbqT+/ftzaHg93tscqZlGB4CGbxzlML
UmTOQbgYUkgXFwT0eOb6+f37VsIlF1/943gFs/vnl08j62iFsSC/VFiZMGVkoYpgIIeEp4RITII+
ijn1+eumfTVC2PXS0oE/zskTNk1o+YhB3TE5WuniZIqZwNvJQ11zONAMyKm5ockhDdHlFbjofyZm
Z7/bhUPvw9PX3eGTTF1LzLhokob3FCzy+QDMcYVq0OmaJibgib7pnm3S/ZkLy1ODVvz7nvi7zewt
fznxjiG/DEqeGfdBKqIrLEBKbs+5JoXDeVQwZ+TMTVfbYytMxxWvHJ1XM/2yfnx8OqUdjidiSt46
bgOJEQm8OBJ4JesRaXnqLA/WXUzNnva7akVYd+RS8+ul6vBNT5sx0E5wNpSn83AkY7ofvCKPlMza
IJ+wBkGV8ZFZgFC3seIfR7jgccbHrfRKd6Q385yuQ9mRh8fvR0Lkw0VZ/aFyf2RFi/SEwssEIIg2
K+YgJjBRg5PUiCvFP2/E5UOzMghyqVDJoUk7WdNRXc6xTlb4kDwG2vlpcE3xejg4VQMIRDaVfggA
GmYWFA/7MoOVGLWNFCbqtLvVUd2Oc96Oats1s9q6zgLcbtSkGtL6/uEUYFev0yzsR08LsQZjgCjy
ApaAkVW0IAF3sMEtyiGNvbTDLxlUnGZ7PcM0vz9UdsMCGOIY0ciqA0ccfMFRBMvxriVyrElqkkAq
uEiicvBGARxweZOr7zjCmaV0eLpqpV0eupprs7jlQ3LEwXR7c6CxfjPkJsErsyIkUNUO3iKiMNjN
NBNp6gmTrPPu9YKER0HOgbbD42aS3LLOJO2ciRQ96unhuUZV//OUsMFsLRfBS5GGM0LxZh4QaCDe
A5TmgcJB5Wg05nqVhbH3vvRNk3YGrveZ1mzOzPH9t+fd+mSG0LEGj4eFBCAfrNWIRSK4Qq4zpEjW
LIuoJZPFXKTnmPbcirbmPdHmNXgGOxF5hOTAeIPILRTFkMmVaaQMKAmpWmAHFFj4nlvk6rD/tvE5
PGtF3S+hkxacHyNy/3h5/D6pniaGgnnMBZ4c4KMUkbyvGEecUZokAwYcVQx5p2b8l5N+Vu1YoiOA
mKe5HHkvwo/9Hu/UWS0lY98Mn1JI7nKgGAVAsXCUKiQ4H0gx3BrHjBHuJk6RdpRztvm0TTuXzuWh
FnIO8P66e77fPT+9HCkRq6fdaJpp5IiMOKgM6uDE9Mh/4+BNUxpzuOzbPXbaF/r4tBV3WWTdablI
ivifHw+bzz8/PX3+eNdWvMG8CPSSYjQTZQzsaOkILQGJAzGMLjlHUNelBGsXcP7rnPijMOfO+7HB
qp1XZ08qOsZdf7gr5XQqVg5PiYHZ1sChjtk4wiBfusTKx9lEnot2WVzei9UxePfLDXdmp9FXrXy7
jtDSzlzZaXf/49PAW4xwjNVQmUpNpgsFCMkSMVHASRQtJRYvD7xnkflkoqE31daYjnAm7mfSop2D
7GgYc78/4+XAmtl04IAWDFV1vfkIXNhSCsgtsEYFLDFLiyUcYDzyxnp2pWr20XNx2a/RyG02tCP3
5nTbugYM9vXExndYNELzbDXgP6+R6B6sG+JkKCQBZgHtrZn15pUWTSvBTPiOVoUjv5M8WLHk3S9I
Mj+YIoBSEMQoqQMVILnX1oDVhlPyAG4VmCCBeSN4kldBzKHzK0j27pdVKyfrCT8mJXxZb34b3ZxW
1wOJ6+h5BgsDwCEgWAtY1mIpFpd8jnCai9A3MSd9zWTo6EZn5pdIQ3nZ7wf3X6UFnfgapzVmFZIp
xcpzhWTtBY8o7zxhNAedJcAZZ67XmL3oaJy2WLVy7zuTOQWG4of429s2GNS4gb+OMtB0qRBFDfIg
BEO8QETubCwOTFJ+5frr9lrVCyHaOXQiR7Xbz1XhUY1Ms0P1wVkKi6RiBSkpKwrsNaaRbzyAsZPA
ssg2K1j0Sbhyky65FqGzbNdOqIe81guH5JSHNR4SLTH4WtcgYqOColJE4pDKT8TEwYZTiTDA96JQ
2KVJXNc2k+6vk8Eu7KV1x0mp13o8WWsKaqskY5HRFYnxPQxLkwL+th42btSquBCKl8K9kpI8jd4K
3bkv0pVseD9XkO9SOXpXB+JqEB40I2HWYYV6A6Z+MWAsm0RTEGBVyJvtfej6vGqEh6tWuo5pvVtw
7uE/PbBbIbfQEAKEoUjK60OlCCNhzUsdCROZaq3gvODqBnR2wZBu53WB3Wp8vGqn0Zub3c2Mua+7
7/Xa7hggzioDbuVaBMMuMiEJTAWO3YgxzjJmojLsepZ5ZjFeLNkx7bkVrZO4o3frXWelIE3f1GUL
L9u7khTh2mJqpkwkIK2YgAWurU1Wh/Sv0AVeJghspV73pN7M70NjuWjhF2apQsdQUjGCXYW5pQJB
vuQJcABomUD/Uwt/Os9yQ/tZo3bWm45O3W3H2Mf/O5myanB8RYDAYGNTLEAhmK7kmJL4mFwRKTPf
ZNRMe5iOa8R+6Uo0+wVtr//2rfqLdA3Ph9V6iGvL0qqkNBgaWHW+8ic5UIN4LuXMMXavXCX9OuP/
iYdnjbh7t+2I67adJT3JhUcwo4fwdUBVAGNJUAKv+REjYrAmmBSGZh41rI3/0L01bTEV3Tq5tIjs
xsytidIc/26wh2S16XIGGM6IK3jLqBJDlipGwJ7L3FgXuLqMZy6f+vEv/dPebjq31XbLTOeVV0jc
uaqO0RerYDMGjgUdClhCDuAu4QF0uZNU5FRuA+RX4PhUcKc6OVZOn+zm7cPLt1qp66iTJT+Wm/Gg
eMGKi8RgdYehwG+tEqoSqA7vk059ndz22YijO7aBc10q1+4aEAOLDtJdOh4wVR7tBckAinCDocbC
G4n+Ck+vvstrALBts2olXnemsSg0/ASa7tPjMUS6zuDgH0/BFRAY6Q9BdiFUJg7riTvHwdL3Jscr
7HKXcPnwrBH4vsPl6O5PIO+nn4czf54hAt84Rcok4RHtB2TCdgYOZ64LZ6wUo3N5rUq8Ewla2Ttx
FqABxTF25vf0/t14LLAqdckpcEaJdAlZGAHt4R0J4FOWgvZSRZH+pEjLk3CrVnzZm9P8nuURiRhe
Rr6lEZkk2H2Gwl70DGvyWazsCB8DzGeWfNEaTaRbkMnj+YKr81YvlxJ8pi1m8zSdefK5SxWDUb4/
fBkDQOa5e5n7YAAbEMUAr8PJTkF3wrnFY2QSDMMg6U15GeXDlWuZD71Ty207oe9uR+fUZR0GvOpG
kDUdCX9AUJlKSQa+VUgcbScZ8XIJVJf0NDlXtDKXTb4ez94FcvSm4aqdQGcN7hZVZ6phjzFQOBdb
GfyGSgXMpkANfIrgkBufa7z0RggvQDk4gJeOXS83Xns+r3/r41bqZZkZ+ON+DFP6/e3Dy6ZVB5xJ
Zzy3yOKFlUTh3AjJIwdQdEJYHqj3f5Y6OEnXzmpJCO/WYqd74abno+GM0gAisCJcQttWIhFrlvgr
z9obgP2FXWdjveikmrZYtcIud/pastFJ9bL+usVeT5SKqiZUVje3xhrkmJhAMcIEv03QFEM2TdY6
FTgZZ2GFs95W7aCyIwkf/Y8v65dpUTh2KHgilDDwLzXgm1wwKRVMUGrgvFM6AjozQik1F+KlWxUO
R+u8DKfo4mpmMMu/fHt6wVuxoRKIEEPer5bCOdDthBqNYWsOy6mBaCwkWqwXKgbxelEYRykuhWEc
26zaabHeXPUyzfmzf75/GCtHDBkfvMIMCkpRJhcI9xGUYoCFGzDzStACMwZNma4UpJ/1fr7a6KTR
bBa9L/b/xV1ZbxtHEn7Xfxmh7+OxT8eAFzFW6yCvw0OOYVsSJDnY/Put6uEx3ewhaUTY5CGiOYPp
Kk4fdX6faQPGH6L7OMuiMSRBLHsiTCKcyWDje7BJ4Z0RsPS5SA5Z2+CfYB4qy2zoNhDOsZlggAVr
Ca7UInciG6MdyaFU5PvTwayfmhtTgBkFVkLBDjQuDR7+g1nOpZPCRR4aGKbjE+qBx94b3x66X/Lj
w+u/t5+RkWPGzjqtspAEjSaUJhEst5EBoTrgp9JahkBUUJr9//oxqlDjqdiV1kXpVuuVaL3uk9Am
pol3ieIpegq/PvbvmyFRhMPyBvxv5BWJsH27QMBCtX8jL7m7WIm+6mB9jxvRhh6PUcKpKAz3IgUf
bIEDxNCMc0MMnGDJANqeYFcTOHmkVsHKCzhDl0KQx+s3tZSdg3GjDgWqHx8+N8FprSOhKZIhM46J
L6oGz2EJKp5Z9sxS4/wbBacPg89FXvEOncdKrlZHcpcfWOx87PWUnN6WfpgAnh9MBYK5DZgZDgx8
o5CYykvlBRhbLMeW4qV61k095KnftFJk1XFS1992e1nZkSdiV3jhkmA5XJIRSxpgzVrqNGxlWWbC
bbaaXnT9whkXNVQu6kp1UnbwZRuo3Ud6X15hD0DQkhpBqqgwkUB7Tim4fzpTpOIrOecoMDJnPDK3
h2ivLPrGD3ed4Zry7/q2Rrf7jm6sJaHaPLy8HEqdYFVhJIaVZvogXbawRRB8FVjebJlXQwSrBHk2
lAxna+tnz63FYqYn1tiItTe2Tg03jo1lmmOVP0G4XDSqkeSZyCwDBSPA8LNh++rJtWhCdERbszMx
zttf7+bQn6R4XeVvQd6jcMBELMvRcNpIZgfDlB3AvDRY9SYNe0Pg3KMkC9P/rudngn68p/ThYH33
vq1x0XByMwqbnQ8YR0I8JBeYh4kCp4j2nieV32izOwzeiNyZQpqPix2M73/dNQKSaakSSfa4KsQG
IqmBOUQQqjGDKWhVxBB15DJrFsyFYFN59sKx+GsTRV9p3ZG8lCk0LtfruCnMdpTcTrUt4NfeFvod
QoIIXsYhafTlFWzaRuD2jXj2hlsWYny7SbWXZMkxm67e1Op09lSDSeqTnKP7LfwS0QXRBapHagTb
mhyjJCkzOgyw1DHYhOhqSDqHMFcajn9itLo2DVZGWXb3y+VaA9F7S4Y2GlSAxvvqNoYNDJhdzCwF
ouEYoGDkDhyRX7ACElv6OVdBc5/DT2MZX4FjXGvSgfdaGSs7oW//7cf29fER+5iOMT8TtXdYkJw8
pm2Idph+twPxPMIezMAEu9zfe3jy8js43FJLbztGzTiqk4Tk7iBEelM4I24RAGL3CVMKQkcd4QwD
4wJfBBYORKYH6XRiEbSJ5kJR0v75S8nF3eWbWszOKljZ8VjhwNoCh+gSwbKGFEQhK4INNkpRnBai
LU02+DcrcOgEEEC604jjak3Xncny6fXLBKFAJ/qaac0aYoJHVOGYMQLO6ADHXBqkBvM9iiyp8FfD
7+AAZxB48PJNLeemIzw70M6uH5/+mvOdIxP0BDpOgjKRI3ZN6WFPCEgJRucQgmGBM+cNVwudrvNH
1tJ0YjGrDVftDrJ9+fr6+DSLQN/aUqlT/uImkhIFLxbmrkegA+wyhdPCDhFpchLV3gZ7XS1mGWi/
7eMNSyWZJzdWim1kx1rYqHWjGNr3L+vnL0+vOxBtNYWjMWpYSAS1ZQgvE7TC5LWKsLFjMVKMIYVg
k03sLdql0eK/24ux7BQcbqlV7SA0rjZa7Q3Vd/l3xH3Zbk4SWKFgT0eYQh7hYx3xg8X8MdhNJjpw
ZvOFVsrrE1i1DLX8ujcHT8qVeqy68zRoxa3LRYoWofMIRXAXRJW2GqYny4FFMD8SV+ZnuHUvp0Pb
+2oVV6e1G6vtSXjky8PXGvG3ZHYnnHCTCLOKEwQvhgmouRicAAUp55JnksA3fhPgl/cPX5doJOuD
Y9upVsAv99OumrCfZljb+8UVlWOMwpJy0TNEmgSNIuiWVQSziYEnLZqY8sIjG7E63uT2BHL++/i8
fmwzadkgEZ+Sg1SIv4hxBg8nBfxPO0OUlcldyScID18iE4RLtcAd3Hj4sp0b7unpbnIIO6CLPmVX
UA88NRamO/WTDZdz5ikxr7VXV4JT7AZZhKfYXW9U6EyFe8nmMc+P4zMG0OcRz4JyErLgwmH4BPGM
hMbcX2ID2BqSmBQdkfEfDHnOpZ6rXOrnW5XhyxMQxgKShDDxX16/4ME5kXLaKXErE8GS+SF7xC7V
+CtoODSFddkFY3NMV25SOMin/SDn4JoONzXKbHrK3C+UAZZ2iA+Pnz83xBPWqSQ1BcPQId+WUsjO
LsgA38sUqBfK/RyD8GycC/zBsztrzcbT4O6anZQSjH/Oa6onGHxj7C0rc5QRyhlimymHZ782CNIG
c1QqhezdPBh9PgHjfrt0fszvuKll1R0FlGgUOHQGLXcxSaKiIl7gHoEE5ARdJAQkFEQ4RcB7IpeC
1LsxLjQn1fKr3gtQB/628C78666H7AdWuOUhiSEgDRhPGsnlvYUTXDIuONi6hLwlsl8lSKNCZ3Uw
zdpA4Ov4+nI840o7Pu7NytmUo/EDVR4zS2CKOI4AGzxYQ6XEdMHZMODxubVYHXrLNVu358Yv7+f8
iawAfzCcD9a66DiDww4mMKxWg92YGds3LMVie9iA3ZvvvEdpFrD+3vdif2u+Pj3U14q2aKtzE3Fm
R1WWIYKhSwXOn8MMApdJDR5ewoDYphxZ2ik5HynoDlKt5eMNlRJq7MwjtVrfb/gJ+FS+w3QyPmYq
8TMF3KE4XMVQCdoJYpDk3pfIZkRIBQHHR9bUOicy41eDUVVjnYGlqu6rNVt1NLO855DHKVpYoBgl
mxo9pGM6kWgGmWTBNPSYlFIDU4QGcB31RVCq3YPPHBJN8G9tbU/kTpnw+nHEEktTDPGClhxIckhP
GNAl9AyhcgT4TLDEaUJIs0tNzPjIJUnhUiPmtiPmqi0JHZ+qRI+Y8bSDvCaAXTVIiXjcaF9Yixw3
VBBMTML+o66eKh9/vPxxliKyvatWpgMMuR5Jiwk19Z2ViCd+QnX4TiE+QRAk5RJn2BHNEyIAgd2L
NT0Z6Rooo9gScXG+lGefCbbi5Zta0HVHemb3gRtYGI/f/ry1xxQVmg7KcxCXDswiAgs2qhoWKMwb
meAbxHxt0Cfqx9QSsN7vxw+Jsv+Oz8cKIlaaAHSIynovMfPkplpI4+AsYrjXUWaTqmB664fUg3PT
G7zNQL4UWvHb5yOv+HxigklSXNryF/0WcFIkpsiII4iEgWcjQ0ELQUkMHjaKt3BqT8jOr+REb36B
ziE0ihZA5tC9sV8oufLo5x0o0nPisJFHYw82xXoYlmF9mky19EzrSC8U9jRDLVT21HfVSolVRyl1
33+tH0ZERr/bfh8fkBEDroHBXZX8ULqrXKJTiEk6LMvCaYew7NyAU2qTgO0HLAzYLIPQF3rnu0Mu
UdF1bq203XR6ztcbxlsanceH7Q78ZO/bMBlJhu0F+ZWQps2CHsHRAcx/koWxcHzpaxGqFvNwu4u1
yEz0RN6cZKnQvZvg3Sq0NCeMSGDkwEM4dpcjEAhSGTgpuPc+S56v9zGXEd6O1xvpez+4Igdkgucf
2//89bS9W4/fOtEBFzwJLPrBUYUYzdIOXoDPIrMGS02g4fBPRQd6kteqK9pR3Zx0xfzx4+ErzNMD
KtpEFYAORCnPtVGA2yMHwbDwUgQ1mOnA8yprDyaHvq4jsx5m4SXWN9XqmM7+v7GHEtZ3H07Cy9yA
GZetQ0eZYON6KUw3Aw0ukWRC1Bc6YX+iP6L3Amxn5WwZud/WyHlH+BwhEJSBF6IgpTkiuqWJ/At7
jznHch8Nrqf3juuz+DmdMmYYujMhtnLdYi8VnIndpC34S3hgKiJkiZkKqSksYiEMn7BzfYSl4cBn
Q8p1q9lV21A1yFKF/OyWWpEOWTlsoqL0nDSJ808BZnSZERPTd/k0gRoIqZgdElES8+bgfSKXLrHC
lao5E9LVefNP4Ywh96miKAM5ZUf4k4rcY01GMWlh0weXpTQdl3AxeGN6l0MhjsI8BgcgGOSWgHfj
o4BVCq9KOA9HeyJX29dlmDOWdbleq9MpzcUv2+jxoUj/UL04+2oHz5ept8qBsaqTAFWoB6+yOGNO
p0wzVSmLv9UKcLxe66B6r2Q81ASOP47Iv9Tgj+7ANcSGxiGKWHpb3WCFJQOTQivtjZO56W09PqMe
ugNbCYdrCxWGuEhgQ203BVrwwJc5C31GcFKRATowtPOjD7gk85CMNsbAfPDXYVp3B1rGajq59eZ/
UEsDBBQAAgAIALMTX0lpyzNFLU8AAHtXAQA7ABwAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LkRldmVsb3BtZW50LTY0Nzk1LWNyYXNoLWxvZy50eHRVVAkAAwIPF1gCDxdYdXgLAAEE9QEAAARQ
AAAA7F1rc5tIl/68/Ao+bE3JSZDpC9CovJ5CSEqc+LaWnKRqakrFpbF5IwkNIMfeX7+nGyShi52Q
8bwbb9BM2TI05zzn9Ln1oVN9mSYBz7KOuvkJkmnbm88nvP2J+x/iXPxyk1nOZ3m7x+/4JJlP4bv6
h0kt2/hTufTy220a8Dn8mEwWU54dfrw4vT7rH746LMlFqTflX5P0y+FHnmZxMssOncPPl+6Qp3cx
ADp8CsD9PDgsv2eHZ15wMTz8TrzKSQg/4yjmaec7xVVKgNvSmTp5rbbgZxu1EXp9oLhJyNXRw5xv
jvzMTM2kauvcy+M7fgCaSoXiLrf0/vvvv6t/oD+VK57NQRuxP9mgU3c+rjOeqie9bdCGjhSl5+X8
cBRPt4BiHZka0jWCVB13EOvoetumhqrplq4rF0N1nyJA+yrc+qwivQ3/G2oL0QGydfsAJJknab7z
FEKKM0tmD9NkkanX1xWMXeL0iY2QZliWq/WwaWiu3qOaZVFmGdQxddtQFEUgV52v3heuDuNZwNVu
kuQd1dbho2Y8SGZhpihu6mW3PFRHtyn3whUPXVV7cTb38uBW/WvBF6CDtWqnXjzTcvmAovTvAz7P
AfnmnPY/u+Ou0xs7rtsfDtXW8OTtsP/240FlvDCE1cR+6F+dj0/OPzqnJ/BQr3clnvJyVb/XNz5I
V5SPZ+oVvxHOoJ5zL4UxSO8omnasKoLUeDzqfx7t+NiKgBlaIXzRKhcYFkr5Q87uhz/VVLs/TL/e
q8Oz/3IvPv2E7qk4MCgOPKnH4ZwH4KqBejKLknQqL3YU98oZvjs5f6uO+sNRR428LD+c8jCG3zBx
00PB5kEDK4C/YT7zTPPCOw/sJGzf5tMJ2I+cYLCE0kQ6ne80CX3bD90k5RtT8R+rWUW67cF/EBHK
cZ3OmQA5lCBHqRd86XQkVHeNtPVpNOh0rnh0tPlQZcjxb7+9WZPsXZxBHJnGGT/KchBktphM5nk6
zmHYgfpaBUdUUD3UFqeRRdcs3g+/A/f7odvp9O95MMwhtkjWhkkVXMa1xz8la8pwiDED/pjBxLxW
LZsYzGS2QU24rJANGd57d94wSON5vhalKgMzDI9bXJ1MANwYzCp9AJLYFNqg9SlF+g4lolPFqEuJ
mjRU76Z9QWWUrB8QFG1bMevRI15kQOyTmn9/MhIxp9PhMAWLnBfz8fHs1ZviPthInrjeZDIQbv2q
tAy1VT7XDubzDsMHilUPAo4MnZcQTsCX03nK4ecKhuC4ZRpLRO+HF/6/eJAv/xZDRZit/AlZylOl
G/+2euijN1ksxzjpzWmc5eUQaXIIZKoAkXLZlB0orJZgFufIIKVgwVNCVPE8iwgmVlvLJyV8AonU
rjct1I5se2kZwzI+dDrxLM5jbxL/D39UnLeTxPcmmzNTIhbgMGFqq8Tcvu0Y6EABjdeExm1UKlbG
j0WQlwi3UUkrtSyw0qUM7vKJpJhahAQCVNMNCfVZgeD0FIyl08l4fj1/wlZPSq6QfVbmCl4js5PQ
p8xLH+JZuHeOJRNB/TSefRGJTApGKFSE8tZwknwVxXNWiIQNAjLhmjL5GBnbQcqCYK4g8lzhDtFn
o2Q8b+BE5v954ETW/9PAiVjdwGlauGAzT5MonvDwCWEu5ZB4dnPFvSyZ/XNhFVlsT1xFdr3gZdqc
mkuG7xP/LA7APrwMKqJ0MdsXvygz1dbHMwiWpmkeKFivVYqZNjVDVC3FoN77BIEm+bpiLYTyZVEm
E5UUFtsKRnU4MR7gKIjWnJxArFWB25L8lqhSNkvBuF5B7HuebVcK4iXR/5ZVd2fOU1Hnr2W75cGX
eQIRpJBLNxRM6mnQR6ZvVzXYv4NgJKyDz4TD3XqzcMLlxdZqVGEFfemLENrlOuVeeNxqhHygCAeY
IgXTWqgwNT0z2qI28tIbDtkoilO+ATJrbQ4U9b9YJnzkIhEeLZcMl3m6XjWIVSQ8nfJwg9TxGxUt
JuXzcvVzMbu4A61DDoJb5mJyXMwsGJBRVyTTQz8skqwuMEyvWY8r9kOyrchyupZze5qAY8gbe7jK
CAG8bWBt1WQdUOpvsV4uI4VlheX3Lds6h7SxY0lSfmYBCFYLBOEU+0ExnYPFTJYoR3dJHKqtg+Mi
Vnr+hH9KgR6vmMe70dmpXNX1J1wsuzudifeQLPIhFIcuqO2Gh62DTuc/x+i4EldsrGC7Hj5sWpG3
FnYETr3W0RqP6OikwCq79cBk5V8DsJlQsiUmVki9wBlFxPMrdlGs+CXdbJeLTHwzrwyeMAsE1Qtr
KAqq7pyv8Y/H7uBqMTtNkrnkBzMvpqcoAZFCNuKneHqQLGZh0f2oMrKiCGp6M2CYU1USvT4/vbi4
HJ8Mx64DdeT52/HF9Wg8uhg749HJWf9KXu467ofx4PrcHZ1cnI/HwslgLU1qMrUii6gVSXqJlKWI
yLZCaC16FvENEu6hlwmd6KAUox4+RkydVenBLykppgoxa9KCgMLUKqVVD0rUmqZCNqLEu5NRkkz8
5H7XNARBFloUGWAaQMddpKLtW4RBIH0yOxPtYrGoAoNjdali7qlXPOCQpc8h2JWBbzpNhOhUmJZd
lyTCvjruTpLgy/UsjycrsmfCW6FGE8G7QP0pzm8H8SSXNmAhhW54pzOff4jzvW0eqWWLsoB5wKt3
OVwxEeHFYgpFNSn53GCq9sf5sNo3nG1DPxOFy0JIJVrfsBIWUnRCXnT7/pTrMVOhuCZz5EVkhzmU
R4KgYVOFkloEScQxLAs3yJ15sZhRxAhW4J46if37edAOH+DLo900SU73OWQpcAwYP078fwXjaUHL
solCjZqksA4hWFAqiVDRSjOffC2xFSbNEFYHBlKXBDAIZEkUgCB8BEYVBTW5bQS2muVeKuwFrTq5
6MkOruBQ3tSm3sy74ans5ML17AHqken4C4R/PtmEUPWOyOcRhlj9hQujMqmMfLKvWqG9R4KN2GJw
G5tcHS/Hj6c36bhoLAtzwStpcKc+PG5TD0KgaNj/JcfDMm6RzjaAltTmBc8NclWgJiypSRgWah5/
/WsFEZEVRPIDEG0K4W7qCcGzm3EOJck+dN9BiJk0WhESqjNkn7leyuA+raaM8rXGGVC9TKR1YYS3
us7fQ5ZY/m4mQkTESPWZM9Fm+/mbwcUwqGECuPNiBTRaz6olO8+1DCTQDTC3cuDYT8IHSQnJBnIt
Sn4UWmtKK9e2TNmyrWm1PFS3Ca1tlv6IW1Em3Crj069enI+z+AbKxA2zDV6/bqP9watKCwDgEIKx
fEkzHkPAym/jrHR/qEgnnM/HsPZtrQcEt2kyS2AdsUilkRxNktmNKn68qZCR944QrOnQ6k3i5Fg9
rvQ+rG3/+Gajg0FBRXzVn0LlnwSwXODeHEAGHljODa9gXMxiCLdjUTMcrUaL7kccnC1gEXb8WxXr
j0gkZJFluWGoUE1PBdWx72W8g2zroO57IRDMtOi2YKCqoKjOhksRZSuebXMk6KDu+yNmIg5FzYqj
kz3MArEMOtoAUSwL1NYWslcHch1XmEkZCYqlmKW2VqTatx2EAZpRG1pI7WeBJjuzl7JR83fIyWVR
7RdhIEcUhcW6qmJH49K7xvM0uX84qnjeAsiWq2Rg+/cAv/lb+nsF1t1aLQhtoramfJqkDx1sGtZB
/Wj6aFxmzxeX7WeOy0anWqydD6+vTqGAnHHZzDhNvPBHyrWm2Pgniw13cM5zUWs+Umz4zI4o1tXX
f2xNZ6uYzwN1nPIsWaQBFxcES7kIo4RuOf827G1OzGYB1NWghvNhYU9juUKRvQ5EqPFr+JAJPrRs
P6kQLBPx2u2mcZufzG2+3RrzTAupW9Bsa8spvtmQDD1usVCtvs8oLKLcC1fZClAtKrBB6u4AYQby
fFw0oHdKgVVik2/forI/7U06yKK47p4MwYqLV1SC1dc8Gj3OzdhKo/azhQCx2+GZQoDYtvCcIcD6
+bsG7OeHaP/8EMWO0J8eo+jISU91FnkiNm4Go/UWynrIETEB+VwU17fj4E4sxH9sBQ6oMa8uR5NZ
GIuINL7z0li8JxM3wmQs3t+EY8HokaXu+ur08VWuoDKWL6+Pdm+W8geC3N9dIlcW/cVSGZu1F/wk
jCC2VXDciRiTL7Jv6Eu2RWRjfZ+QOcz4w/ML+c/Nyj8EuLoRBW93FQhj9fsYJLAsu/CwSy/9It7O
JHmnM4fv7nKaYLn5cDKdT2RmLCC8Kl/9D4NkzsNTb+qH3pGfJBPxvni1o2Z3yPKV8mrIT6JYWbVY
Yo/ghkoxteo3ajC1dapKZRTbI5Z67AqS0tIHSTos/nmB0Gux8+IURDpurb6CbsJkAb5RbPLT1dZ6
ftq3HYvUb9PQgEXeRmNjWUotvx/tC7VC6xCh19B4ukYsZFqZpXjRr1cVLhsV3mpzyd8jfLxsgIh2
EdhUKgi3DsqKExS0Rb7YBmmCU5j/vlrU+nfVouzZalH7+Zajtcvab9SiCDfpv0n/Tfpv0n+T/pv0
36T/Xy39kxfQoaAvAKPxAjCaLwDjC+iNohfQHEUvoDuKX0B3FKMXgPEF7ELELyDP4BeQZ/ALyDP4
BeQZ/ALyDP6RPGMbBKsZn3rzWyiIiwaJXPrv7BD4/s3QoeXrlc3Qa+rFTstJ8lUQpkT2Mupts0Y+
q1AWmuWVndYIF5sGnqcMp89XhhvPvCkEv4B0TV5AuiYvIF0TSNer76Tpvjbd16b72nRfm+5r031t
uq+/WPeV0Cb9N+m/Sf9N+m/Sf5P+m/T/q6V/o0n/Tfpv0n+T/pv036T/Jv3/aunfbNJ/k/6b9N+k
/yb9N+m/Sf+/Wvq3mvTfpP8m/Tfpv0n/Tfpv0v+vlv5Zk/6b9N+k/yb9N+m/Sf9N+v/F0r+uBuWh
x1/j/FYcPF2efqzKE8nUlkk1P84POoqqpt59Z30GMcJRCEhNUFPqr24ItgbjFo9CcSOoPrH6wI1w
3w0kmITxFhOP2OKwkzSLH2Hiz3dvBIJJtueGp4tzkVO2yR5ZgcSlpvb2DT+SgJFehaUzGwehLrgj
VH0ikh87EJIgvCmJ52GTSVqkegNxi5lBQYvuEVE+YWw8IbQCXwSTeL6Ba3mCsJpGky0NIx3r4riS
FHf2nSStqsppchMH3kR1L6875fHeSj9Nk1QeT12eTr16lCoj8W+5zhdTf3kyOqKKonTjmZc+qCdT
74ZnHWV54vT96rBpVVM3LjIURf7T54K05Mnpmro+Ol09cvsE9R1T1+iAGBoxXaYx3CUapX1Ge31m
9DE7/vmOq94Une/Rhw36iNTX8Hx54PvwNp6WPt7SQfK+jh3ad7FmD/SBRihjWtccDLSB3jMJaAU5
jlFX8sHyYna4j/EmbA/twLYQApu1dqdx79yBJQ5wn9mag92+RhiimtPvIw0xhzqubdBel9SVoLhX
BWoxpu8C9UxT6HcH6Cm/8YKHvXAd1GXOAJBisw+mZtkDjQ2Yq2HMiNHFXdZj3cfhFoSfAl2M2IAe
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
Jv036b9J/036b9J/k/6b9P+rpX/SpP8m/Tfpv0n/Tfpv0n+T/n+19E+b9N+k/yb9N+m/Sf9N+m/S
/6+W/q0m/Tfpv0n/Tfpv0n+T/pv0/6ulf7tJ/036b9J/k/6b9N+k/yb9/2rpnzXpv0n/Tfpv0n+T
/pv036T/Xy398yb9N+m/Sf9N+m/Sf5P+m/T/i6V/U4+Wj+L6kha38nFoy2dy6eqn8vWWTY0wLY46
mq7nwX1n82QshE2GRAJmoefh+oRka5k4ZEkM+suj6ozVC9SRx4dOBJJJnO4xMQPJZJ4+wiSc7Z+I
1IwDJwJTPq0r5wfYS8vKnUdERGZ1BsE2ZphKSRCqnkjUy4mkJAhXaSHB4iBRkiCydSJMQsZNKQmi
B0RUM6wdWHGCEi6ZpLMtWqtHW+l5Mt4REZnYlL+jm+POoeeb6bp2lt2kUTDWvasP5QPSuObneZar
Z6YtH5m2nkm1ofyBl4vFJFw9rg9RTdO66TTIH/TTSXAj5h1t9Ri0+/UT0HRD3z7IkyR8+vdqW+px
foa+eZ6ffuL5BPmubRq0TyyD2B43OO4Sg1Kf057PLR/z1z/fM9S2RLfsA/qwHFh7/SXMXz6FcHCb
TpYu3jJBct/ELvU9bDh9s28QyrnRtft9o2/2bAJaQa5r1ZW8vzo4Pz7EeBu2fWAZIzDuhO0v48G1
A0PsY587hos93yAcUcP1fWQg7lLXcyza65K6EpTnKkCRSSnfBYpMGwup3z2gZ+ImiB4OwnVRl7t9
QIptH0yNOX2D97lnYMyJ1cVd3uPdx+GWhJ8CXY7Ygs6DPR1DLgtBx089NugQeNpl2O2SrsGdvg3W
QqnBwUMMihzTQz2KrZ55CPw26cPwt8dUBUABFXsCYOFY+77+KHLTdxH3TMdwsAvITZ8a3T61DO45
fUr6pkN98xG1Pw55ebKKNeSOs4c15DGSBv2yXKKhmBfXi+lU5KdT+ZAfEXcX8hkWpUc6qO+5ltkz
SJfBH7dvgWUz0zBJr4/6DqGkSx83kMdot0P1thtpnp5UFSwqI/W2YJHJygADbr1UhqQ1WMzkA0Gr
caZPUK8rI6zdQx6YPeoajtd1Dc/rmtQE5eO+d0iqJwhX0QmS7KODg3THPYNFnGbyJ2rH4m3Pfeue
XY0XN6dTvQUZuI14mwCF1UdA3aOm1zc5MhzLI7AgJkRHsBaDu5x2LeYgx5LOOlAV1PFZGuaQro79
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
13B8UqZXzmfP6Et3y3rDfZ+QJaz4w8sL+fetyt8EuH6nmmw3m1SIw9tbijh3Kw+7CouP6q5NXnY6
U3jvL5cJupCH0/F0pANmBeHH19WcQZxPZXIWjqMkPInyfGRCj7K65b47pGpsakO+EcXqZMbVl4g2
VEoYP7x/x8JFzNTK0ApY6bGrSGpL7+fFoPrysdLriR52BiK9aa3egm6SfA6+UX0LCJmt9fpA+87p
4d07QyINN/rdZYZdvj/ZF2qV1iFCr6HJYo1YybQyy07nP4eornDdv4ZlXrwE4TfLvljtIoBNFYpw
62hRiICCtshX35NywCmcf65E4f9UiSJerERxX65LObjaea5EIU36b9J/k/6b9N+k/yb9N+n/e0v/
tEn/Tfpv0n+T/pv036T/Jv1/b+mfNem/Sf9N+m/Sf5P+m/TfpP/vLf3bTfpv0n+T/pv036T/Jv03
6f97S/9Ok/6b9N+k/yb9N+m/Sf9N+v/e0j9v0n+T/pv036T/Jv036b9J/99b+hf/B/5zovvtYySo
KaOaMqopo5oyqimjmjKqKaO+szKK4I1nJcWgRH3+TXsW38lkPpKJevR6lr90NbD5CBN9MMwjT/4R
cUQZx+avMP9ysnJ1RQrveQLMc6QIl2Y/ux3IcTi9g/GK7LUc6fO0tBU4e57/8jTRUMRMaKJLnfVB
Z6eX6wcisn0PgnkOqUxtM80WD1hZPLWXYa6D0svYpfNydslf+PFD5GueTevalJiz5cpWxaEue3Ye
O/Tlj9JNeIRqj9JdU68e3zjKP+sFptoUD3tIL45EjbIq+GXtOb2YVE8iepmlZi+31PYLLzUy48Xx
ap+z8k4dcbc4Z83Uxx+YLYdZUVYedQzTLML7zvq0M0yQ7cZYHS1RRKsLiq2NUuEyqS7E9RmrF1xI
9l3AikmSbTGJkshRtGbZI0yi6e6FRDGZ7bkQIXUCWyH2sFduVLiPiIjR7gx1wEuBcf1Cql9urCTB
pE4LJ24iEnV2RIHpxoUI22mMNBO2R0Q9w96YkYaE2UxJAsl348ryuDKzSEdbgDEiSD1FviCdfWfW
maZxlt9mcTgy/av31aF34AVBUeSFPghvcQ7eaiozbpRnX8zH0fIMRswMw+hmk7B4ME/H4a2cdYzl
2Xb3q2PtTMvc/BCEjZ5+9nhLn9FometDGs0TP6A48BxksT61Ler4whKkSy3GAsF6gbADIt58ewfj
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
R0JekCzVRgEldCc+7cLe5cQdHkGPB2q4HJT2NFJdtNqPQ4Rav4abIxOcaLVHqkNAz+Sz4dvGb34y
v/n6/m1gM6TvQHPYjld8ddecCsx4rFcfupUWsXxhs/K+SrXwwRap+5pSwu0gxOVTkr1yZZ181SPi
ZPkQJRh3EKO49otDwErI56iS1ZciGT7OzdpJ9c6zxQD5Ss4zxQD5bs2zxgC5I6eU4y6KTL7QGQ03
r1bWqwAQscFDZrLmuhtFn2V/9n2NGWR/LKpdSjaNU2kEo89BnsrnZ/JGnI3kc514JBk90gFtrk4e
b34klZF6qH2yf3MpfyTJ/WjnVOkFyw4K27X7QIYTMKcKjs9yWYvF/Cv6Ut2y2nA/JGQBK/7w/EL+
favyNwGuvqCCd5tNwnn99pYhxpzSw66D/JN8apMVnc4MPnurZYIu5OFsMhurYFRCeLF8JWAQZTMR
nweTMA5Owiwby+fI6zdt9oesHjWvh/wkilWJgsl3B7dUiimr379bjmNSXSmjfG1ipceuJKksvZ/l
g/J/O5B6Ld/IOAeRTlvrj6CbOFuAb5Qv/5l6a7M+0L4zUr9754gnwVa/u8peq88nh0Kt1DoE5g00
kW8QS5nWZilfADCrClf9a7B+6eTHCJ+u+mK5iwA2lUvCraNlkgcF7ZAvX4+0wSns/1z6Z/+p9M+f
Lf07z9cC1K4kvpb+cZP+m/TfpP8m/Tfpv0n/Tfr/1dI/adJ/k/6b9N+k/yb9N+m/Sf+/WvqnTfpv
0n+T/pv036T/Jv036f9XS/9Wk/6b9N+k/yb9N+m/Sf9N+v/V0r/dpP8m/Tfpv0n/Tfpv0n+T/n+1
9M+a9N+k/yb9N+m/Sf9N+m/S/6+W/nmT/pv036T/Jv036b9J/036/8XSv6lHy9O4vqTFnTzqbHks
l66+Kl9v2dQI0+Koo+l6Htx3NodjIYQJEqE8hiAP1zckW0swiySxvBFVZ6x+IOPl8aEbRDKJ0x0m
lMQMpM7n6SNMwtn+jUjNOHAjMOWBXTk/wF5aVu48IiIyqzOIZVk0sam8gao3EvXjRFIShLdomSQO
EvmFvDki1Rtm7ISMm4oJPSCimmHtwBIUJVwySWdbtFZHW+l5Mt4REZxBqj7KcefQEWe6rp1nt2kU
jHXv+l15RhrV/DzPcnVs2vLUtPVMqg3lF7xcLibh6ig+RDVN66bTIH/QzybBrZh3tNVJaPfrQ9B0
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
Qfw9dXlTbPydxYbXvxCFrDUfKTZC7iQUm/rLTzvb2Sr380gf5WKeLfJIyAuSperCKaE7zr8Le5cT
d3gEDRSo4WJQ2tNItajqsAsRav0aPuSAD63OH3UIlpm873rTuM1P5jZfPxsNbIb0HWgO23GKr55I
x3bMeKxXb2iVFrF8ErLyLEi1qMAWqfsIEEdWEOLyDsReKbBObOr2a7K8QRGMO4hRXPehHMlKyHuU
ktWXIhk+zs3aSaPOs4UA+bjLM4UA+dzKc4YA+Zjoz35sgOSJnNpAd1Fk8mnOaLh5tLIeckRsQD6T
NdftKLqT/dn3NWaAGotql5JN41Qa6uguyFN5/0wOxNlI3teJR5LRIx3Q5urk8eZHUhmpm9on+4NL
+SNJ7kc7p0ovWHZQ2K7dB5ooAZOv4LiTplcs5l/Rl+qW1YH7ISEL2PGH5xfy79uVvwlw9QEVvNts
Es7rt7dg1MwpPewqyD/LuzZZ0enM4LO32iboQh5OJ7OxCpglhBfLRwIGUTYT8VkwCePgJMyysbyP
vH7SZn/K6lbzespPoliVzJh8dnBLpZiy2v07E9wxqa6UUT42sdJjV5JUlt7P8kH5/xxIvZZPZJyB
SK9a64+gmzhbgG+UD/+ZemuzP9C+M1K/e0cmT4KtfneVYVefTw6FWql1iNAbaCLfIJYyrc1SPgBg
VhWu+tdg/dDJjxF+teqL5SkC2FQuCbeOloUIKGiHfPl4pA1OYf/nShT2nypR+LOVKM7zdSm1q52v
lSi4Sf9N+m/Sf5P+m/TfpP8m/f9q6Z806b9J/036b9J/k/6b9N+k/18t/dMm/Tfpv0n/Tfpv0n+T
/pv0/6ulf6tJ/036b9J/k/6b9N+k/yb9/2rp327Sf5P+m/TfpP8m/Tfpv0n/v1r6Z036b9J/k/6b
9N+k/yb9N+n/V0v/vEn/Tfpv0n+T/pv036T/Jv3/Yunf1KPlq7i+pMWtfM/Z8p1cuvqqfL1lUyNM
i6OOput5cN/ZvBkLoSjElDigpjxcD0i2FhEhT2I5EFVXrH5AHXl8aCCQTOJ0jwkKJa15+giTcLY/
EJlyxYGBwJRv68r5AfbSsnLnERGRWV0RMi4ES4gcQNWBRP04kZQE4S1aAYRnYC8HyNYAJwGEH8WE
HhBRrbB2YMUCJVwySWfVkfWrrfQ8Ge+IiExsyu/RzXHn0PvNdF07y27SKBjr3tX78gVpiGt+nme5
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
AAEE9QEAAARQAAAAUEsDBBQAAgAIABoSX0nn7WAtagAAAGwAAAA9ABwAY29tcG9zaXRpbmcvb3Zl
cmZsb3cvdGhlbWUtYWZmZWN0cy12aXN1YWwtb3ZlcmZsb3ctc3RkZXJyLnR4dFVUCQADBAwXWGwD
F1h1eAsAAQT1AQAABFAAAAAzMjA00zU00DU2VDAwsjI0szI10jM1N1FIzs/VSywoyEnVC09N8s4s
AVHO+XklqXklei6pZak5+QW5QHa0mYmlkamVobGpqbGFWayCX7BTaUlJfp5jXmZuYklmfl6xa15i
Uk5qiq2fPxcAUEsDBAoAAAAAAAUNX0kAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvcmVnaW9u
cy9VVAkAA2kDF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIABkSX0n70toKwAAAAPIGAABF
ABwAY29tcG9zaXRpbmcvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1jb21wb3Np
dGluZy1zdGRlcnIudHh0VVQJAAMBDBdYaQMXWHV4CwABBPUBAAAEUAAAAO3PvQrCMBQF4N2nyKhD
mzb1pxUctCg4iIKjSLmmF43GptxGIW9vxUEHVwch2znTOd8uEuN4OO5noRDZnimLV2hcJYst2g2Z
Gsk61qhjBVpjyZBoEsRilA5Y97JQxxk0uD6cUdo5kaFiWd1BqxIslj3WVZ8NLONbcyOJOcgT8twQ
rrBU8E5BPBiKUPQj3k5bY12NDd9ocEi8HXulYvr8F0qmVYWsfZ10dh7hET9BJOITkZva/YUiSlOv
8Aqv+KJ4AFBLAwQUAAIACAAdEl9JcQjSGb4AAADyBgAAPAAcAGNvbXBvc2l0aW5nL3Nob3ctY29t
cG9zaXRlZC1pZnJhbWUtb24tYmFjay1idXR0b24tc3RkZXJyLnR4dFVUCQADCgwXWHUDF1h1eAsA
AQT1AQAABFAAAADtzzELwjAUBODdX5FRB00braaCgxYFB1FwFCnP9KHR2JTXKOTfW3HQwdVByHY3
3X27SIzj4TiRPTGQe6YdXqH2pcq36DZkKyTnWa2PJRiDBUOiSTcWI5mw9mWhjzOocX04o3JzIkv5
sryD0QU4LDqsrT8bOMa39kYKM1An5JklXGGh4Z26cTIUzZGIN9POOl9hzTcGPBJvxl4pnz7/9RQz
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
AAAAAAYNX0kAAAAAAAAAAAAAAAAHABwAY3J5cHRvL1VUCQADawMXWAQPF1h1eAsAAQT1AQAABFAA
AABQSwMECgAAAAAABQ1fSQAAAAAAAAAAAAAAAA4AHABjcnlwdG8vc3VidGxlL1VUCQADaQMXWAQP
F1h1eAsAAQT1AQAABFAAAABQSwMECgACAAAAGBJfSSXg0wgsAAAALAAAAD4AHABjcnlwdG8vc3Vi
dGxlL3JzYS1nZW5lcmF0ZS1rZXktbWFsZm9ybWVkLXBhcmFtZXRlcnMtc3RkZXJyLnR4dFVUCQAD
AAwXWGkDF1h1eAsAAQT1AQAABFAAAABDb3VsZCBub3QgZ2VuZXJhdGUgYSBrZXkgcGFpciwgc3Rh
dHVzIC00MzA0ClBLAwQKAAAAAAAGDV9JAAAAAAAAAAAAAAAADwAcAGNyeXB0by93b3JrZXJzL1VU
CQADawMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMECgAAAAAABg1fSQAAAAAAAAAAAAAAABYAHABj
cnlwdG8vd29ya2Vycy9zdWJ0bGUvVVQJAANrAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAIA
AAAZEl9JJeDTCCwAAAAsAAAAMQAcAGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtZ2VuZXJhdGUt
a2V5LXN0ZGVyci50eHRVVAkAAwIMF1hrAxdYdXgLAAEE9QEAAARQAAAAQ291bGQgbm90IGdlbmVy
YXRlIGEga2V5IHBhaXIsIHN0YXR1cyAtNDMwNApQSwMECgAAAAAAIBJfSQAAAAAAAAAAAAAAAAUA
HABjc3MzL1VUCQADDAwXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMECgAAAAAABQ1fSQAAAAAAAAAA
AAAAAA4AHABjc3MzL2JsZW5kaW5nL1VUCQADaQMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAAC
AAgAGhJfSaJummnBAAAA8gYAAEsAHABjc3MzL2JsZW5kaW5nL2JhY2tncm91bmQtYmxlbmQtbW9k
ZS1iYWNrZ3JvdW5kLWF0dGFjaGVtZW50LWZpeGVkLXN0ZGVyci50eHRVVAkAAwMMF1hpAxdYdXgL
AAEE9QEAAARQAAAA7c/BDsFAFAXQva+YJQud6dBqJRY0JBZCYinSPNMXhtFpXodk/h6xYOEDkO7u
Xd17NkIOw3gYhYGI0y3TDs9Q+1Lla3QrshWS86zW+xKMwYIh0agbykESsfZppvcTqHG5O6JyUyJL
+by8gtEFOCw6rK3fGzjG1/ZCCjNQB+SZJVxgoeGVumEUy0D2Bb9PO+t8hTVfGfBI/D72TPn48S9Q
zOgSmZRpr7X5M8RANIgvQch3RGYr/xMKkSSNolE0ig+KG1BLAwQKAAAAAAAIDV9JAAAAAAAAAAAA
AAAAEAAcAGNzczMvc2VsZWN0b3JzMy9VVAkAA3ADF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoA
AAAAAAgNX0kAAAAAAAAAAAAAAAAVABwAY3NzMy9zZWxlY3RvcnMzL2h0bWwvVVQJAANvAxdYBA8X
WHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAdEl9J4k1oymoAAABsAAAALgAcAGNzczMvc2VsZWN0
b3JzMy9odG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVyci50eHRVVAkAAwkMF1hvAxdYdXgLAAEE9QEA
AARQAAAAMzIwNNM1NNA1NlQwMLIyNLMyNdOzNDdRSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXou
qWWpOfkFuUB2tJmJhYm5laGxqbGJhXGsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBL
AwQKAAAAAAAIDV9JAAAAAAAAAAAAAAAAFgAcAGNzczMvc2VsZWN0b3JzMy94aHRtbC9VVAkAA3AD
F1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAB0SX0lYzv/8agAAAGwAAAAvABwAY3NzMy9z
ZWxlY3RvcnMzL3hodG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVyci50eHRVVAkAAwkMF1hwAxdYdXgL
AAEE9QEAAARQAAAAMzIwNNM1NNA1NlQwMLIyNLMyNdezNDRXSM7P1UssKMhJ1QtPTfLOLAFRzvl5
Jal5JXouqWWpOfkFuUB2tJmJhbGhlaGxqbGRhVmsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqt
nz8XAFBLAwQKAAAAAAAIDV9JAAAAAAAAAAAAAAAAFAAcAGNzczMvc2VsZWN0b3JzMy94bWwvVVQJ
AANwAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAdEl9JRZNUjGoAAABsAAAALQAcAGNz
czMvc2VsZWN0b3JzMy94bWwvY3NzMy1tb2RzZWwtMjUtc3RkZXJyLnR4dFVUCQADCgwXWHADF1h1
eAsAAQT1AQAABFAAAAAzMjA00zU00DU2VDAwsjI0szK10LMwMlNIzs/VSywoyEnVC09N8s4sAVHO
+XklqXklei6pZak5+QW5QHa0mYmFqamVobGpsZmxQayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5q
iq2fPxcAUEsDBAoAAAAAACASX0kAAAAAAAAAAAAAAAAMABwAY3NzMy9zaGFwZXMvVVQJAAMMDBdY
BA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAAgEl9JAAAAAAAAAAAAAAAAGgAcAGNzczMvc2hh
cGVzL3NoYXBlLW91dHNpZGUvVVQJAAMMDBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAAg
El9JAAAAAAAAAAAAAAAAKwAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3VwcG9ydGVkLXNo
YXBlcy9VVAkAAwwMF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAACASX0kAAAAAAAAAAAAA
AAAzABwAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS9zdXBwb3J0ZWQtc2hhcGVzL2VsbGlwc2Uv
VVQJAAMMDBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAgEl9JpRDrbsIAAADyBgAAVwAc
AGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvc3VwcG9ydGVkLXNoYXBlcy9lbGxpcHNlL3NoYXBl
LW91dHNpZGUtZWxsaXBzZS0wMTMtc3RkZXJyLnR4dFVUCQADDAwXWAwMF1h1eAsAAQT1AQAABFAA
AADtz70KwjAUBeDdp8iog00af1oFBy0KDqLgKFKu6UWjsSm3Ucjb+zeoD+AgZDtnOufbCDmMk6EQ
UT8RW6YdnqH2pcrX6FZkKyTnWa33JRiDBUOiUTuWSdpjzdNM7ydQ43J3ROWmRJbyeXkFowtwWLRY
U382cIyv7YUUZqAOyDNLuMBCwzu1415fRrIr+H3aWecrrPnKgEfi97FXysePf5FiRpfIpBx0GpuA
CIifINL4E5HZyv+FQqTpl0IGRVAExVNxA1BLAwQKAAAAAAALDV9JAAAAAAAAAAAAAAAADQAcAGRp
c3BsYXlsaXN0cy9VVAkAA3UDF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIACESX0mjV/3o
UAAAAI4AAAAyABwAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVy
ci50eHRVVAkAAw4MF1h1AxdYdXgLAAEE9QEAAARQAAAAcy9KLMjITC52zs8rSa0osbJKTy1xDvHV
0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAoSk3OL0rJzEsHyoC1FetxuaMbVIxmEDGGAABQ
SwMEFAACAAgAIRJfSfKWldVHAAAASQAAACkAHABkaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxp
c3Qtc3RkZXJyLnR4dFVUCQADDgwXWHUDF1h1eAsAAQT1AQAABFAAAABzL0osyMhMLnbOzytJrSix
skpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4vSsnMSwfKgLUV63EBAFBL
AwQKAAAAAAAsEl9JAAAAAAAAAAAAAAAABAAcAGRvbS9VVAkAAyMMF1gEDxdYdXgLAAEE9QEAAARQ
AAAAUEsDBAoAAAAAACwSX0kAAAAAAAAAAAAAAAAJABwAZG9tL2h0bWwvVVQJAAMjDBdYBA8XWHV4
CwABBPUBAAAEUAAAAFBLAwQKAAAAAAAsEl9JAAAAAAAAAAAAAAAAEAAcAGRvbS9odG1sL2xldmVs
Mi9VVAkAAyMMF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAACwSX0kAAAAAAAAAAAAAAAAV
ABwAZG9tL2h0bWwvbGV2ZWwyL2h0bWwvVVQJAAMjDBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQU
AAIACAAsEl9J5u1L+WoAAABsAAAAMgAcAGRvbS9odG1sL2xldmVsMi9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQyMC1zdGRlcnIudHh0VVQJAAMjDBdYIwwXWHV4CwABBPUBAAAEUAAAADMyMDTTNTTQNTZU
MDCyMjS3MjLWM7QwUkjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSZibmlhZWh
samRhaVFrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMECgAAAAAADw1fSQAAAAAA
AAAAAAAAAAoAHABkb20veGh0bWwvVVQJAAN+AxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAA
AAAPDV9JAAAAAAAAAAAAAAAAEQAcAGRvbS94aHRtbC9sZXZlbDIvVVQJAAN+AxdYBA8XWHV4CwAB
BPUBAAAEUAAAAFBLAwQKAAAAAAAPDV9JAAAAAAAAAAAAAAAAFgAcAGRvbS94aHRtbC9sZXZlbDIv
aHRtbC9VVAkAA34DF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIACwSX0lzNbFNaAAAAGwA
AAAzABwAZG9tL3hodG1sL2xldmVsMi9odG1sL0hUTUxJbnB1dEVsZW1lbnQyMC1zdGRlcnIudHh0
VVQJAAMkDBdYfgMXWHV4CwABBPUBAAAEUAAAADMyMDTTNTTQNTZUMDCyMjS3MjLWs7Q0UEjOz9VL
LCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSZiQVIn7GpkaWxQayCX7BTaUlJfp5jXmZu
Yklmfl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAAA0NX0kAAAAAAAAAAAAAAAAIABwAZWRpdGluZy9V
VAkAA3oDF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAA0NX0kAAAAAAAAAAAAAAAAUABwA
ZWRpdGluZy9leGVjQ29tbWFuZC9VVAkAA3oDF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAI
ACYSX0ndIcPtQgAAAIYAAABBABwAZWRpdGluZy9leGVjQ29tbWFuZC9jbGlwYm9hcmQtYWNjZXNz
LXdpdGgtdXNlci1nZXN0dXJlLXN0ZGVyci50eHRVVAkAAxgMF1h6AxdYdXgLAAEE9QEAAARQAAAA
y80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFIyN9AzAQEfX0NDcFMrh
yiXBCLguVCMAUEsDBBQAAgAIAIATX0kCo3cvyw0AAD5zAAANABwAZXJyb3JfbG9nLnR4dFVUCQAD
nw4XWF0DF1h1eAsAAQT1AQAABFAAAADtXHtv28gR/7+fYhH07mwgJHe5Ly6BoEgd9+JeHq7tNAWC
IKDJlcSEInUk5cRX9Lt3lrSsh7myJNuJzxYCSJZCzs78ZnZey9GH10WO3sY1ogRhElIVculyEWCf
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
USjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQK
AAAAAAA2El9JAAAAAAAAAAAAAAAACQAcAGZhc3QvZG9tL1VUCQADNwwXWAQPF1h1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgANhJfSQfggzJqAAAAbAAAADYAHABmYXN0L2RvbS9jbG9uZS1ub2RlLWZv
cm0tZWxlbWVudHMtd2l0aC1hdHRyLXN0ZGVyci50eHRVVAkAAzcMF1g3DBdYdXgLAAEE9QEAAARQ
AAAAMzIwNNM1NNA1NlQwMLIyNLcyMdYzNzJQSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWp
OfkFuUB2tJmJhaWBlaGxqYmxpWWsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQK
AAAAAAAYDV9JAAAAAAAAAAAAAAAAGQAcAGZhc3QvZG9tL0hUTUxGb3JtRWxlbWVudC9VVAkAA48D
F1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIABgNX0k1du8fagAAAGwAAABHABwAZmFzdC9k
b20vSFRNTEZvcm1FbGVtZW50L25hbWVkLXByb3BlcnR5LWdldHRlci1yYWRpb25vZGVsaXN0LXN0
ZGVyci50eHRVVAkAA48DF1iPAxdYdXgLAAEE9QEAAARQAAAAMzIwNNM1NNA1NlQwMLQyMbAyMdez
sLBQSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tIm5ubmxlaGRuaWpuWWsgl+w
U2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAAAAAoDV9JAAAAAAAAAAAAAAAADAAc
AGZhc3QvZXZlbnRzL1VUCQADqwMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAPRJfSVgq
Z3U5AAAAQwAAADIAHABmYXN0L2V2ZW50cy9kaXNwbGF5LW5vbmUtb24tZm9jdXMtY3Jhc2gtc3Rk
ZXJyLnR4dFVUCQADRgwXWJ0DF1h1eAsAAQT1AQAABFAAAADLzS8tTvXNL0sNyVdIS8zMSU1RKAGy
MvNSFBIVShKL0lNLFMoyU8sVEksUDA0MDPQMwEDHFM7kAgBQSwMEFAACAAgAPRJfSaJCTndqAAAA
bAAAAEkAHABmYXN0L2V2ZW50cy9kb21hY3RpdmF0ZS1zZXRzLXVuZGVybHlpbmctY2xpY2stZXZl
bnQtYXMtaGFuZGxlZC1zdGRlcnIudHh0VVQJAANGDBdYnQMXWHV4CwABBPUBAAAEUAAAADMyMDTT
NTTQNTZUMDCyMjS3MrXQMzaxUEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSZ
iYWhgZWhsamxgZF5rIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMEFAACAAgASRJf
STC1beM5AAAAQwAAACsAHABmYXN0L2V2ZW50cy9tb3VzZS1mb2N1cy1pbWFnZW1hcC1zdGRlcnIu
dHh0VVQJAANZDBdYqgMXWHV4CwABBPUBAAAEUAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy81IU
EhVKEovSU0sUyjJTyxUSSxTMDQz0DMBAR9cQzuYCAFBLAwQUAAIACABKEl9J5669XzsAAABDAAAA
LwAcAGZhc3QvZXZlbnRzL21vdXNldXAtb3V0c2lkZS1kb2N1bWVudC1zdGRlcnIudHh0VVQJAANb
DBdYqwMXWHV4CwABBPUBAAAEUAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy81IUEhVKEovSU0sU
yjJTyxUSSxRMDAwM9AzAQMfYwhTK5AIAUEsDBAoAAAAAACINX0kAAAAAAAAAAAAAAAALABwAZmFz
dC9mb3Jtcy9VVAkAA58DF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAD0SX0nPTinSkAAA
AL0AAAAzABwAZmFzdC9mb3Jtcy9mb3JtLWFzc29jaWF0ZWQtZWxlbWVudC1jcmFzaC1zdGRlcnIu
dHh0VVQJAANGDBdYnwMXWHV4CwABBPUBAAAEUAAAAG2OQQ6CMBQF957iX0BQoi7YVhESSQjCAZr2
RZtgP7a/JN5eXblxNbOYxeRXTsFAaXNHrjighXX6Z+vt/lBkxW6Td4GF5TUj5pW71cPQfakmBy+1
9naCVSkKP8b+8mkXZxEyQ+ZvoAK0oEec2UccnZGKwxnS45kQpSTFabLkWciwXxCExqEhYWqb9kTf
jZJWb1BLAwQUAAIACAA5El9JgZheDmoAAABsAAAANAAcAGZhc3QvZm9ybXMvVmFsaWRpdHlTdGF0
ZS12YWx1ZU1pc3NpbmctMDA2LXN0ZGVyci50eHRVVAkAAz4MF1iYAxdYdXgLAAEE9QEAAARQAAAA
MzIwNNM1NNA1NlQwMLIyNLcysdSzNDNRSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkF
uUB2tJmJhbGplaGxqbGxiXmsgl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAA
AAAhDV9JAAAAAAAAAAAAAAAADAAcAGZhc3QvZnJhbWVzL1VUCQADnQMXWAQPF1h1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgAPBJfSdsI00I7AAAAPwAAAC8AHABmYXN0L2ZyYW1lcy9mcmFtZS1kaXNw
bGF5LW5vbmUtZm9jdXMtc3RkZXJyLnR4dFVUCQADRAwXWJ0DF1h1eAsAAQT1AQAABFAAAABzLClJ
zS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBL
AwQKAAAAAAAdDV9JAAAAAAAAAAAAAAAADQAcAGZhc3QvaGFybmVzcy9VVAkAA5kDF1gEDxdYdXgL
AAEE9QEAAARQAAAAUEsDBBQAAgAIAB0NX0nuvKXKaQAAAGwAAAArABwAZmFzdC9oYXJuZXNzL2lt
YWdlLWRpZmYtdGVtcGxhdGUtc3RkZXJyLnR4dFVUCQADmQMXWJkDF1h1eAsAAQT1AQAABFAAAAAz
MjA00zU00DU2VDAwtDIxsDI11zMwslRIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5
QHa0iTkQWBkamVuaGRnGKvgFO5WWlOTnOeZl5iaWZObnFbvmJSblpKbY+vlzAQBQSwMECgAAAAAA
Kg1fSQAAAAAAAAAAAAAAAAwAHABmYXN0L2ltYWdlcy9VVAkAA68DF1gEDxdYdXgLAAEE9QEAAARQ
AAAAUEsDBAoAAgAAAEUSX0lRp4IYMQAAADEAAAAtABwAZmFzdC9pbWFnZXMvbGFyZ2Utc2l6ZS1p
bWFnZS1jcmFzaC1zdGRlcnIudHh0VVQJAANRDBdYrgMXWHV4CwABBPUBAAAEUAAAAGluaXRJbWFn
ZUFwcGxlSlBFRzoxNDE2OiBmYWxsaW5nIGJhY2sgdG8gbGliSlBFRwpQSwMEFAACAAgARhJfSSGP
vTgyAAAAMwAAACwAHABmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3RkZXJyLnR4
dFVUCQADUwwXWK8DF1h1eAsAAQT1AQAABFAAAABzy0ksSXVJTc5PSbVSSAHRmXnpCqlFRflFVgqZ
ecn5RUWpySUKKYkliQrJGanJ2XpcAFBLAwQKAAAAAAAmDV9JAAAAAAAAAAAAAAAADAAcAGZhc3Qv
bG9hZGVyL1VUCQADqAMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAOxJfSdsI00I7AAAA
PwAAAFIAHABmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1h
bmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQJAANCDBdYnQMXWHV4CwABBPUBAAAE
UAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OL
i1NT9LgAUEsDBBQAAgAIAD0SX0nbCNNCOwAAAD8AAABTABwAZmFzdC9sb2FkZXIvaW1hZ2VzLWVu
YWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVy
ci50eHRVVAkAA0UMF1ieAxdYdXgLAAEE9QEAAARQAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8v
ylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMEFAACAAgARRJfSdsI00I7AAAA
PwAAAC0AHABmYXN0L2xvYWRlci9yZWxvYWQtcG9saWN5LWRlbGVnYXRlLXN0ZGVyci50eHRVVAkA
A1EMF1ioAxdYdXgLAAEE9QEAAARQAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk
5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMECgAAAAAAdBJfSQAAAAAAAAAAAAAAABEAHABm
YXN0L21lZGlhc3RyZWFtL1VUCQADqwwXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAsxNf
SW+fL1XdPwAAjRYBADkAHABmYXN0L21lZGlhc3RyZWFtL2FwcGx5LWNvbnN0cmFpbnRzLWFkdmFu
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
AZpVG1pMnWeBprbmr9VO3Y+QU31x7SehIEeSxGVjXbGj0dK7RrM8u384qXjeAsgut0mA7Y8B/v2H
9PcCrLu13hFwiN6aiEmWP3SwbbGj+tH00bjMny8uO88cl/nPX+44nWrjcDl4d3MOTc5UqA238yyI
v6d1aOqhv7Me8vqXopD28Ug9FHInodjUX37cWc5WuZ5H+igX82yRR0JekCzVRgEldCc+7cLe5cQd
HkGPB2q4HJT2NFJdtNqPQ4Rav4abIxOcaLVHqkNAz+Sz4dvGb34yv/n6/m1gM6TvQHPYjld8ddec
Csx4rFcfupUWsXxhs/K+SrXwwRap+5pSwu0gxOVTkr1yZZ181SPiZPkQJRh3EKO49otDwErI56iS
1ZciGT7OzdpJ9c6zxQD5Ss4zxQD5bs2zxgC5I6eU4y6KTL7QGQ03r1bWqwAQscFDZrLmuhtFn2V/
9n2NGWR/LKpdSjaNU2kEo89BnsrnZ/JGnI3kc514JBk90gFtrk4eb34klZF6qH2yf3MpfyTJ/Wjn
VOkFyw4K27X7QIYTMKcKjs9yWYvF/Cv6Ut2y2nA/JGQBK/7w/EL+favyNwGuvqCCd5tNwnn99pYh
xpzSw66D/JN8apMVnc4MPnurZYIu5OFsMhurYFRCeLF8JWAQZTMRnweTMA5Owiwby+fI6zdt9oes
HjWvh/wkilWJgsl3B7dUiimr379bjmNSXSmjfG1ipceuJKksvZ/lg/J/O5B6Ld/IOAeRTlvrj6Cb
OFuAb5Qv/5l6a7M+0L4zUr9754gnwVa/u8peq88nh0Kt1DoE5g00kW8QS5nWZilfADCrClf9a7B+
6eTHCJ+u+mK5iwA2lUvCraNlkgcF7ZAvX4+0wSns/1z6Z/+p9M+fLf07z9cC1K4kvpb+cZP+m/Tf
pP8m/Tfpv0n/Tfr/1dI/adJ/k/6b9N+k/yb9N+m/Sf+/WvqnTfpv0n+T/pv036T/Jv036f9XS/9W
k/6b9N+k/yb9N+m/Sf9N+v/V0r/dpP8m/Tfpv0n/Tfpv0n+T/n+19M+a9N+k/yb9N+m/Sf9N+m/S
/6+W/nmT/pv036T/Jv036b9J/036/8XSv6lHy9O4vqTFnTzqbHksl66+Kl9v2dQI0+Koo+l6Htx3
NodjIYQJEqE8hiAP1zckW0swiySxvBFVZ6x+IOPl8aEbRDKJ0x0mlMQMpM7n6SNMwtn+jUjNOHAj
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
iJj6Cyw7pcAqsen7MOl8omNAOOpgzsiBd+c1K6luVihWn8v05nFu9lYadV8sBGD0YiFA3cB+yRCg
vi/2rW8bYLUjpxfQm5e5+lpXfLP+jtVhyDF1APlU1Vx3w/iT6s++rjED1ETWu5R8kmTKUIefwiIL
1bcx4UKSD9V9nWSoGD3SAa0/HT/e/CgqQ31362T34kL+WJH7q51TrResOijiHNwHUpyCyddwfFKm
V85nz+hLd8t6w32fkCWs+MPLC/n3rcrfBLh+p5psN5tUiMPbW4o4dysPuwqLj+quTV52OlN47y+X
CbqQh9PxdKQDZgXhx9fVnEGcT2VyFo6jJDyJ8nxkQo+yuuW+O6RqbGpDvhHF6mTG1ZeINlRKGD+8
f8fCRczUytAKWOmxq0hqS+/nxaD68rHS64kedgYivWmt3oJuknwOvlF9CwiZrfX6QPvO6eHdO0Mi
DTf63WWGXb4/2RdqldYhQq+hyWKNWMm0MstO5z+HqK5w3b+GZV68BOE3y75Y7SKATRWKcOtoUYiA
grbIV9+TcsApnH+uROH/VIkiXqxEcV+uSzm42nmuRCFN+m/Sf5P+m/TfpP8m/Tfp/3tL/7RJ/036
b9J/k/6b9N+k/yb9f2/pnzXpv0n/Tfpv0n+T/pv036T/7y392036b9J/k/6b9N+k/yb9N+n/e0v/
TpP+m/TfpP8m/Tfpv0n/Tfr/3tI/b9J/k/6b9N+k/yb9N+m/Sf/fW/oX/wf+c6L77WMkqCmjmjKq
KaOaMqopo5oyqimjvrMyiuCNZyXFoER9/k17Ft/JZD6SiXr0epa/dDWw+QgTfTDMI0/+EXFEGcfm
rzD/crJydUUK73kCzHOkCJdmP7sdyHE4vYPxiuy1HOnztLQVOHue//I00VDETGiiS531QWenl+sH
IrJ9D4J5DqlMbTPNFg9YWTy1l2Gug9LL2KXzcnbJX/jxQ+Rrnk3r2pSYs+XKVsWhLnt2Hjv05Y/S
TXiEao/SXVOvHt84yj/rBabaFA97SC+ORI2yKvhl7Tm9mFRPInqZpWYvt9T2Cy81MuPF8Wqfs/JO
HXG3OGfN1McfmC2HWVFWHnUM0yzC+876tDNMkO3GWB0tUUSrC4qtjVLhMqkuxPUZqxdcSPZdwIpJ
km0xiZLIUbRm2SNMounuhUQxme25ECF1Alsh9rBXblS4j4iI0e4MdcBLgXH9QqpfbqwkwaROCydu
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
z0Olaj8hHrcIaugkwPbBbRFgy4viGG8LwErQyTwHxmsxTxwgCxblwDRb1CnZ9JhvTSZT+3K9xEFf
/hYqRXGaZK1adFdFqjylEKYgegZVU+sJI3QeWLYHoztr5tRLgApTfDYvo8VrkxEUHb0EXTMU0lqB
ewFqoIOwB/5I1vWF/mrboUzQMHSswGoSoN/pEnTsWyO3AdtT0QRhOBnfeq6DbeGiCWSiGri/gyYF
6Ni7IPTudmxPncsi9HpoglR0BUB/yeqRfaHXjR+mlX0vuIL3lb4gmAbWpNG9cMA1qqA/AFvgujjy
h8oPKlHRWigrMPYPUEsDBBQAAgAIACQNX0l5vKWBngAAALUAAAAqABwAZmFzdC9tZWRpYXN0cmVh
bS9hcmd1bWVudC10eXBlcy1zdGRlcnIudHh0VVQJAAOjAxdYowMXWHV4CwABBPUBAAAEUAAAABWN
QQ7CIBRE957iX8AGamub7tRujO40ujAuPvS3klAgQDV4enE2M3nJy5SMb9ecrTccGO8q3rGmqFsG
0s4FOqepuJM4qfivgzWRTCx6epO2bs77UTU5HS/buqnKJxwnY70yU/ZN9FZf1UwCA0GgCCKB1Cpb
IEjikunudsE5n+yXcSTfq+A0pjMm8vDBADgMNEC0gBCSkS9vjfqSX/0AUEsDBBQAAgAIAD0SX0mV
BuG1nQAAALUAAABAABwAZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50
LXRyYWNrLXN0b3Atc3RkZXJyLnR4dFVUCQADRQwXWJ8DF1h1eAsAAQT1AQAABFAAAAAVjTsOwjAQ
RHtOsRfAivNV0gFpEHQgKBDFJtkES/7JdkDm9JhqRqP3NHnG6y3PtgWHLO9401U1q8sGRqMYWiuJ
3Wk4ifCPg9GBdGA9vUkaq1J/JLatOl5UbVNWTzgu2jihl+Tr4Iy8CkUDegJPAYYIoxTJgoFGXNO6
u11QpZP9Os/keuGtxHjGSA4+6AGniSYIBhB81OPLGS2+5DY/UEsDBBQAAgAIAD0SX0koDt5XnwAA
ALUAAABLABwAZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVv
LXRyYWNrcy1kaXNhYmxlZC1zdGRlcnIudHh0VVQJAANFDBdYoAMXWHV4CwABBPUBAAAEUAAAABWN
Ow7CMBAFe06xF8CK8086IA2CDgQFolgnm2DJsSPbAZnTY6o3Gmn00oSXW55sMw5J2vKqLSqWFTX0
Zma4LIrYncRJ+v8cjPakPevoTcosc+RHmVdN0fKsaKq8fsJx0sZKPcVee2vUVc4k0BE48iAC9ErG
CgT1uEa7u11wjif7dRzJdtItCsMZA1n4oAMcBhrAG0BwQfcva7T8kt38AFBLAwQUAAIACAA9El9J
cGSo0p4AAAC1AAAAWAAcAGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tdmlkZW8tZWxlbWVu
dC12aWRlby10cmFja3MtZGlzYWJsZWQtdGhlbi1lbmFibGVkLXN0ZGVyci50eHRVVAkAA0UMF1ig
AxdYdXgLAAEE9QEAAARQAAAAFY29DoIwFEZ3n+K+AISChcCmshjdNDoYh1u4YJP+kLZo6tNbp+/k
JCdfWbA6Y0VWMSjKjjUdr/OWlzBYneOyKMrvJE4y/OdgTSAT8p7epOyiEz/qbdPyjlW8bTh7wnE2
1kkzp94EZ9VVahLoCTwFEBEGJVMFggZck93dLqjTyX6dJnK99IvCeMZIDj7oAceRRggWEHw0w8tZ
I7/kNj9QSwMEFAACAAgAPRJfScA2D1SeAAAAtQAAADIAHABmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29uc3RydWN0b3Itc3RkZXJyLnR4dFVUCQADRgwXWKADF1h1eAsAAQT1AQAABFAAAAAV
jTsOwjAQBXtOsRcgivOznA5Ig6ADQYEoNskmWPJPtgMKp8dUbzTS6BU5a7Ys35YM8qJlvK15JkoB
g9UZOqcou1N/kvE/B2simZh19CZlnU78aCou6paVteBV9YTjbKyXZk69id6qq9TUYyAIFKFfYVAy
VdDTgEuyu9sFdTrZL9NEvpPBKVzPuJKHDwbAcaQRogWEsJrh5a2RX/KbH1BLAwQKAAAAAAAkDV9J
AAAAAAAAAAAAAAAADAAcAGZhc3QvcGFyc2VyL1VUCQADpAMXWAQPF1h1eAsAAQT1AQAABFAAAABQ
SwMEFAACAAgAJA1fSdAmNkdqAAAAbAAAACQAHABmYXN0L3BhcnNlci9iYWQteG1sLXNsYXNoLXN0
ZGVyci50eHRVVAkAA6QDF1ikAxdYdXgLAAEE9QEAAARQAAAAMzIwNNM1NNA1NlQwMLQyMbQysNAz
NjBSSM7P1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tIm5pYGJlaGRhbGFkXGsgl+w
U2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQKAAAAAAArDV9JAAAAAAAAAAAAAAAADQAc
AGZhc3QvcmVnaW9ucy9VVAkAA7EDF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAACsNX0kA
AAAAAAAAAAAAAAAXABwAZmFzdC9yZWdpb25zL3Njcm9sbGluZy9VVAkAA7IDF1gEDxdYdXgLAAEE
9QEAAARQAAAAUEsDBBQAAgAIAEoSX0k5AcvdQAAAAHoAAAA1ABwAZmFzdC9yZWdpb25zL3Njcm9s
bGluZy93aGVlbC1zY3JvbGwtYWJzcG9zLXN0ZGVyci50eHRVVAkAA1wMF1ixAxdYdXgLAAEE9QEA
AARQAAAAcy1LzSsJTs1LSS0KKMqvqLSySs7PK8nMK80vLfYF4tTg5KL8nBynSoXMYoW8/BKFzNyC
nNRcoKbUFC5XSjQDAFBLAwQUAAIACABKEl9JOQHL3UAAAAB6AAAALgAcAGZhc3QvcmVnaW9ucy9z
Y3JvbGxpbmcvd2hlZWwtc2Nyb2xsLXN0ZGVyci50eHRVVAkAA1wMF1ixAxdYdXgLAAEE9QEAAARQ
AAAAcy1LzSsJTs1LSS0KKMqvqLSySs7PK8nMK80vLfYF4tTg5KL8nBynSoXMYoW8/BKFzNyCnNRc
oKbUFC5XSjQDAFBLAwQUAAIACABKEl9J5IrHQzwAAAA9AAAAQAAcAGZhc3QvcmVnaW9ucy9zY3Jv
bGxpbmcvd2hlZWwtc2Nyb2xsYWJsZS1zaW5nbGUtcmVnaW9uLXN0ZGVyci50eHRVVAkAA1wMF1iy
AxdYdXgLAAEE9QEAAARQAAAAcy1LzSsJTs1LSS0KKMqvqLSySs7PK8nMK80vLfYF4tTg5KL8nByn
SoXMYoW8/BKFzNyCnNRcoKbUFC4AUEsDBAoAAAAAADANX0kAAAAAAAAAAAAAAAAJABwAZmFzdC94
c2wvVVQJAAO7AxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACABQEl9Jcv1l8oUAAADpAAAA
JQAcAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAkAA2cMF1i6AxdYdXgL
AAEE9QEAAARQAAAArU4xDsJADNv7inygZGC7GSbYQHRO21SclLtUuZzU/p6DfoHFsmzL9qRpjUIe
NQObqQVYovAPAiK+VGrighdywuvwwIHHW3S8067Vn1y84ELFcSuCxkWrTS2+va2fdTo1FSRmhjOw
cOLsENOq5l1zwkEhQM00tlFXEKX5T+P9Uc/z90X3AVBLAwQUAAIACABQEl9JzgkoAo0AAADwAAAA
JwAcAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUCQADZwwXWLoDF1h1
eAsAAQT1AQAABFAAAACljjEOwjAMRfeewhcoHtgywwQbiM5O64pITlw5jgS3J9AjsHz5/2dbf9a8
JSFPWoDN1AKsSfgnAREfKi1zxRM54Xm64cTxkhyv9Nbmd65ecaXq+KqCxlWbzX29Ox8jLWPKm5qP
zdKhZyCpMByBhTMXh50OnYR9hACtUOwFXEGUln+LFK1tfn6f9DuR4QNQSwMEFAACAAgAUBJfSc+P
Zg5QAAAAoAAAACQAHABmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAkAA2gM
F1i6AxdYdXgLAAEE9QEAAARQAAAArcyxDcAgDAXRnin+BlHabIPACEs2RpaJMn7IDmmuu1dMJ0sO
tgFyN7/QWAgQHoQTJKQ0ArZirkg87ixcsbsIzRxK0a3uyyyVv7Cnh8rxkS9QSwMEFAACAAgAURJf
SYFKd61LAAAArAAAADQAHABmYXN0L3hzbC94c2x0LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFz
aC1zdGRlcnIudHh0VVQJAANpDBdYuwMXWHV4CwABBPUBAAAEUAAAALXMsQ2AMAxE0T5T3Aq0bOPA
BVlybGQs5keiYAPqr/e3mKealIaDmZErhhoBUycW0DjphVtSpRtbcudQ11fEwGHRxb6O4lVt++X6
AFBLAwQUAAIACAC0E19JCm+6Hb0CAAARBwAAEQAcAGZ1bGxfcmVzdWx0cy5qc29uVVQJAAMDDxdY
BA8XWHV4CwABBPUBAAAEUAAAALVUYU/bMBD9K5U/bVKclrYU6MSHjnYMAWOiZWyapsiJL61VJ7Zs
J7RD/PednVJNDKGNqZ9iX+x3z+/d3Wg8Tq4n05uL2fTNPXFgnSXDe1IAF8wvnGHZcrugoqQpKzm1
bi0hXrhC+n8GtDKODMmHi9H5NxIRWGnIHHAMfR5NpxhhmasYHiazs8vJ1c2stYkvmE2s42AMGTpT
wcNDRAqF+5IGDjRTpTNKBla1klUB1Fa6yfc0QjMpsuVuaHlitp573DuR8SAJqkWNmC+cFT9FOadp
vHpV7snXWevscnQ6wago2BwSLvI80WAyKBGkF3cPAwFReFQI2e96WfhASrVkLlemoFv/zkoOK+Dj
937DUq8NWidK4QSTtNJzwziUABx4/GrKIRh4bdNRbUTNHNDUqDuLmnhgwdMcbyqzTpSG8mhHBkUk
laIMxWoxGcoYkjfUeOo3qVQprZkUnKaAigGWV1EIt6uSQU45s27bUdYZYEXwRGu59sWNISZKZynj
NSuz5/y4npxii07Prj69TOjkejT9SDDnM+AVF2onyLXg8P/IXim0QiuLFdpUTQD2Cww6MNsUL4CF
Hnr04w8rnxrkj+S+YxK31lgr38nxMfnxfAd24s7eZgYshdY+e6+7341IWRWJgbkBawWqguGIKLcA
k2SG2QWEbsSXxV45iG8hPcdyw88JzjWEjsdQg1S6wDUdDPr7A7zQiPHXV3r/fKV/6K/4gYK/jal0
0DNn0kLzpELYpns7EZFsrSoUyc8WlAXVI+0vYe7a9pg51p7cTttNyvZFODsLYygiNRivChn2G1TN
rPWK9LsHfdRJixXIDS6ULJW/keA4RDBRpzvsHo0uW6psXeEEScG0entRq9vZG2wc1QacWyO0yxaP
vuZi5dG8R4ONR7lkyzUZHkSkQgpJU0TMec+SXPizoWffvvsFUEsDBAoAAAAAADMNX0kAAAAAAAAA
AAAAAAAFABwAaHR0cC9VVAkAA8EDF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAFgSX0kA
AAAAAAAAAAAAAAALABwAaHR0cC90ZXN0cy9VVAkAA3cMF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsD
BAoAAAAAADUNX0kAAAAAAAAAAAAAAAARABwAaHR0cC90ZXN0cy9jYWNoZS9VVAkAA8YDF1gEDxdY
dXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFUSX0kxfRp3fgAAABEBAAAwABwAaHR0cC90ZXN0cy9j
YWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy1zdGRlcnIudHh0VVQJAANxDBdYxgMXWHV4CwABBPUB
AAAEUAAAAL3NMQrCQBBG4d5T/AeQJavBxEVstLGKYKEgFjGO68AyI7sjXt94BBvbV3yvGwxzj2oW
fBtqD3oXXzUu6dAnZBsyPTUbSzwv6mXbXLDayV3XAUljHDOK9dmKc27S/Uxt6fqKo8XCdmR7HKgU
VvkeAk77DUQNJMaW6DaF/8fiA1BLAwQKAAAAAAAzDV9JAAAAAAAAAAAAAAAAEgAcAGh0dHAvdGVz
dHMvY2FudmFzL1VUCQADwQMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAMw1fSQAAAAAA
AAAAAAAAABgAHABodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9VVAkAA8EDF1gEDxdYdXgLAAEE9QEA
AARQAAAAUEsDBBQAAgAIAFMSX0mYRVQ1ewAAAK4AAAA7ABwAaHR0cC90ZXN0cy9jYW52YXMvd2Vi
Z2wvb3JpZ2luLWNsZWFuLWNvbmZvcm1hbmNlLXN0ZGVyci50eHRVVAkAA20MF1jBAxdYdXgLAAEE
9QEAAARQAAAAlc0xCsJAEEbhPqf4DyBL1gSji9hoYxXBQkEsYhzXgWVGdke8vvEItq/4Xj8aGo96
HvwyNB3oU3zduaTjkJBtzPTSbCzxsmhXrb9ivZeHbgKSxjhlFBuyFedc1f9N7ej2jpPFwnZiex6p
FFb5HQLOhy1EDSTGlug+g6++UEsDBAoAAAAAADUNX0kAAAAAAAAAAAAAAAAVABwAaHR0cC90ZXN0
cy9pbnNwZWN0b3IvVVQJAAPFAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAA1DV9JAAAA
AAAAAAAAAAAAHQAcAGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvVVQJAAPFAxdYBA8XWHV4
CwABBPUBAAAEUAAAAFBLAwQUAAIACABWEl9JFtFPJZsHAACsKgAANwAcAGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtdGltaW5nLXN0ZGVyci50eHRVVAkAA3MMF1jFAxdYdXgL
AAEE9QEAAARQAAAAxVprb9s2FP3eX0EIGJBstky9JQ/54CVpGzQvxC46YB0GWqJtLRKlUlKarsh/
36Uetmx5QVfKKZqmFEldnnN4eXlZ8RWnnwqa5WP0VQkDZaxbAyWm+SqBsnJXsDyMqUofSFSQnCoD
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
bncs6VLfZgq6RR4039OWp63ZmKtVOCaLbgMZ1lxS0Yf4ORIJ+bcjL1BLAwQUAAIACABZEl9JJ45L
crIAAACVAQAAMAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy12aWRlby1yZXNpemUtc3RkZXJy
LnR4dFVUCQADeQwXWMoDF1h1eAsAAQT1AQAABFAAAAC1j9EKgkAURN/7ivmAiNQo3UKIiujBEiQK
pAfTWy3Zruxe8fczI6gP6HmGc2bSoSscX4z8QeC5J8yS1TreR3GIOTM9Kt4SN9rcI60ka5MQ15WA
0gxLzFJdUVdQ7w4e79IUWVEYshbSotR5VvbSL4v3N8suZ3gOPi5QY53hZNCFMJwbqrR54dLxyHcn
7Y4lnetrKCBb5EHyLWl5UquNumiBY7zoNpBiySUVfTg/R4K/HXkCUEsDBBQAAgAIAFkSX0mYXlTP
uQAAACoDAAA9ABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbGxlci1nZXRTdGFy
dERhdGUtc3RkZXJyLnR4dFVUCQADeQwXWMoDF1h1eAsAAQT1AQAABFAAAADdj8EOwUAYhO+eYh5A
pFultUQiiDigSSMkjQPtrzZqt9n9G6+viMQLuDjPZL75Us+XIpLBoCPC3gGjZL6It6t4jAkz3Spe
E9+Nva6MVmxsQlxXEtowHDErXaCuoN8d3N6lIY55bsk5KIfSZMeylf4ppf8zyiZjdAU+LNDdCS/s
vEJYzixVxj7n0n4Q+WHzY0anuhhLqGZyp/iSNHvK6KU+G4l9PH19IM2KS8rbEN8iUfc/RPwg+JnI
A1BLAwQUAAIACABZEl9JkcblVPoAAACHAwAAOgAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVv
LWNvbnRyb2xzLWxpdmUtc3RyZWFtLXN0ZGVyci50eHRVVAkAA3oMF1jLAxdYdXgLAAEE9QEAAARQ
AAAA7Y/BSsNAGITvPsU8gJRs0iZplIJYkR6qC1EqBA/p5k+6NNkNu3/o65u2CAVPgnryPMM33xRB
mIk0m84n8Vy84zZ/eJSva7nAHTN1PT8RH6zbr63RbF1OPPQZjGV4YtamwdDDnDvozqUblFXlyHto
j9aqsr0q/mTlWTEigc8t0MGLIJmcQjhWjnrrjrginqZhMnosaTs0iwx6RG407/KRp61ZmdpmeJP3
JwcyrLml6hri4kgS/N6Rrqcm7EvnyUGSl86qMX/xstxnUArknHWjNORqCRGE8Ds7tBW2BBEdMQFq
3RJsXY+7iJL4u0hxgZx9Jc7SMP23/EHLD1BLAwQUAAIACABaEl9JVNirNv4BAADrJAAAPAAcAGh0
dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWR1cmF0aW9uLWFjY2Vzc2liaWxpdHktc3RkZXJyLnR4
dFVUCQADewwXWM0DF1h1eAsAAQT1AQAABFAAAADt019v0zAQAPB3PsV9ANr86fpHAYaqdrBJG0Rt
J5CqPbjxNbHm2MZ2Nu3bc13KNARC8LAXdMpLbJ/vfj4n2zQvslkxTofZOL+B882mXOG3DkOEvarP
Y3TH4VLJFVao7nCFwVkTcCG03onqtgBjobImoolwiaaODfg+VMIA0PuFlQgqQJ6mr7Z/LkjDZde6
D8oIfb26nBuq2tqIcyk9hlCA6F8gy6fDlJ6MtlEsdF5DQ9wiSZ6WilmapkmLUomENtnOVxiSRoek
RoNeRBzcWTl0jXsvOxoqa94dtvwF8jhceKQsZ95bOmTbUgcKQFPZjrrh6fjCHM5vfQG7h4jghamR
JuXzlum+ZYM+kqZ/36zRDbxdn30sr6/KU5jHiK2LnzDeW397ZY2K1q8xdu5wGxECxqhMDZ0D08dA
2we9eeog1dC2EvqnKicvVuVzFWGUwY9agPchS6fDx0XwsfLorD+k205OZvmUHEvcdfVpAYpSflGx
WVM+uqILs7cFfC0XjwbqoIoa5WvInh9k8nLtah3WuRM+oIcSQ+ktfVVhE0pBv0JVHa9RGSgvlpCl
OYTGdlrCDiEbHdKk9BFpBLvfU10YTSf/mjJ7lnL8a8bxLJ+xkpWsZCUrWclKVrKSlaxkJStZyUpW
spKVrGQlK1nJSlaykpWsZCUrWclKVv6Hyu9QSwMEFAACAAgAVhJfSavEZ7HKAAAANwEAADIAHABo
dHRwL3Rlc3RzL21lZGlhL21lZGlhLWRvY3VtZW50LXJlZmVyZXItc3RkZXJyLnR4dFVUCQADdAwX
WMcDF1h1eAsAAQT1AQAABFAAAACdjsFKAzEQhu99iv8BJGx03a5LXKSKIAgV96BQPKTZaRpMMyUZ
Ed/e2JNencMcPr755zfGGNwHv/oSmiSTPWCs8xdNYqU8sl8neiY7D/hl1zWDd+ixrbDgBg2E+R2N
6rtuqTsUcqoiOD4cIwmdQZ+uCsbral2ehMXaCS40mvNB90Pbgj6LbpYqsrMRWVymI2cJyW+6ttdX
bzAPacfjgMjeV4wiNktR6j9Rd7T98DUrpCAvQfYTlRI4/XwY8Pp0i8QCShIk0lz7L74BUEsDBAoA
AgAAAFcSX0lMFVKNYwAAAGMAAAAqABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1kb2N1bWVudC1z
dGRlcnIudHh0VVQJAAN2DBdYxwMXWHV4CwABBPUBAAAEUAAAAE9jdCAzMSAwMjoxODo0NiBld3Mx
MDcubG9jYWwgcnRjcmVwb3J0aW5nWzY0ODE5XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZv
OiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAIAAABYEl9JzcnThmMAAABjAAAAOQAcAGh0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtcGxheS1zdHJlYW0tY2h1bmtlZC1pY3ktc3RkZXJyLnR4dFVUCQAD
eAwXWMoDF1h1eAsAAQT1AQAABFAAAABPY3QgMzEgMDI6MTg6NDcgZXdzMTA3LmxvY2FsIHJ0Y3Jl
cG9ydGluZ1s2NDgxOV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRp
dGxlZCwgMQpQSwMECgAAAAAANg1fSQAAAAAAAAAAAAAAACcAHABodHRwL3Rlc3RzL21lZGlhL21v
ZGVybi1tZWRpYS1jb250cm9scy9VVAkAA8gDF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAA
ADYNX0kAAAAAAAAAAAAAAAA5ABwAaHR0cC90ZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvc2tpcC1iYWNrLXN1cHBvcnQvVVQJAAPIAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIA
CABYEl9JM7dEhMsBAAAlBQAAYgAcAGh0dHAvdGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRy
b2xzL3NraXAtYmFjay1zdXBwb3J0L3NraXAtYmFjay1zdXBwb3J0LWJ1dHRvbi1jbGljay1zdGRl
cnIudHh0VVQJAAN3DBdYyAMXWHV4CwABBPUBAAAEUAAAAO1T224TMRB95yvmA0jWu7myhaIoKbRS
C6skFUhRH5z1ZNeq1zb2bKv+PZNuWgWBEEj0DfnFY8+cc+aMvRFZnk7z4bgvhuIGztfrYonfWowE
O12dE/lDuNBqiSXqO1xi9M5GnEtjtrK8zcE6KJ0ltASXaCuqIXSpCnqAIcydQtARMiFebX5PyOGi
bfwHbaW5Xl7OLLM2jnCmVMAYc5DdBtJs0he8Ui7jXGiDgZrl5knyfJVPhRBJg0rLhItcG0qMSW1i
UqHFIAl7d071fe3fq5ZD7ey7fckfiDyE84CMchaC4yabhh3IAW3pWnYjcPvS7vt3IYftAyEEaSvk
Q3Vsmeks63WZfPxrs7IbeLs6+1hcXxWnMCPCxtMnpHsXbq+c1eTCCqn1+2kQRCTStoLWg+1yoOmS
Tp4dZA7jSml+YBm8GMvnkmCQwhMX4H1MxaT/eAmByoDehT3cZjx8M52wjgVu2+o0B82QXzTVK8bj
EV3YncvhazF/1MAOajKoXkN63Mho/GKNNB6rzMsQMUCBsQiOX1Vcx0LyVyjLwxi1heJiAanIINau
NQq2COlgDyP4ERkEt9sxLwwm47+FTI8gRz8jjqbZ9L/Kf6jyO1BLAwQUAAIACABYEl9J5VuTf+0A
AABfAQAALQAcAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVU
CQADeAwXWMoDF1h1eAsAAQT1AQAABFAAAACFj09rwzAMxe/9FDr1ljhJC0kNYZSuY4cdRuhOZQc3
VhOD/82WB/32c9ja66TLe/yehHSuGl53fNuVXbv5hNfT6X3Ar4SR4KqmxT4n41+UFfpjeNtbOaBx
hHspA8bIQfwKqJu2rHLXeSxnIQUNM5HnjD0Q76qqYgalEuxbSXQFzcERaZSFdkKW46SerDDY55Uu
hREjo3xJ6eV1fY/2u6XWdPPYC++1GgUpZ1nOrM7/PvNnDwEF4TEEFw7OGLTEAe3okiUMKEFYwAVy
uNwIIQg7IWi0E81gVDSCxhkKiLNLWsLlwRpQ8a7bXbdd/QBQSwMECgACAAAAWRJfScPm2eNjAAAA
YwAAAC8AHABodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVU
CQADeQwXWMsDF1h1eAsAAQT1AQAABFAAAABPY3QgMzEgMDI6MTg6NDkgZXdzMTA3LmxvY2FsIHJ0
Y3JlcG9ydGluZ1s2NDgxOV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBl
bnRpdGxlZCwgMQpQSwMEFAACAAgAWRJfScpAuKXqAAAAWgEAAC8AHABodHRwL3Rlc3RzL21lZGlh
L3RleHQtc2VydmVkLWFzLXRleHQtc3RkZXJyLnR4dFVUCQADegwXWMsDF1h1eAsAAQT1AQAABFAA
AACFjz9PwzAQxfd+ipu6xXZCEcFShKoCYmBAUZkqBjc+Ykv+E+wzar89iaBduek9/d493R1EI+tW
3gommvYDXvb7tx6/CmaCTzsu9rH46dkG5d77123QPfpIuNU6Yc4S1K+Aurljcwer57U5CyU5MEST
5PyKZCuE4B61VfzbaowVmRSJHOrKRaXZMNqHoDx2c2UsacDMab6E0YnWl2h3v8yazhN2hCfik1M2
rA7//vFndwkV4VNKMe2i9xhIAoYhlkCYUIMKgAuUcDwTQlJhRHAYRjLgbfaKBgMVZBOL03C8sgZs
vujNRtysfgBQSwMECgAAAAAANg1fSQAAAAAAAAAAAAAAABcAHABodHRwL3Rlc3RzL21lZGlhL3Ry
YWNrL1VUCQADxwMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgANg1fSVdndK+eAAAAtQAA
AD0AHABodHRwL3Rlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbG93LWxvYWRpbmctMi1z
dGRlcnIudHh0VVQJAAPHAxdYxwMXWHV4CwABBPUBAAAEUAAAABWNywrCMBRE937F/YGGJi2t7U7t
RnSn6EJc3Ka3NZBHSVKlfr0RBmY4cBiR8yrjeVZwyHlbpghWigakMwznWRO7U39S8V8HZyPZyDp6
k3azSftR1nVdtFxsq5I3TzhO1nllp+Tb6J2+KkM9BoJAEfoVpFbJgp4kLonubhc06WS/jCP5ToVZ
43rGlTx8MAAOAw0QHSCE1cqXd1Z9yW9+UEsDBBQAAgAIAFkSX0mEYKqoBAEAAPYDAAAmABwAaHR0
cC90ZXN0cy9tZWRpYS92aWRlby1hdXRoLXN0ZGVyci50eHRVVAkAA3oMF1jMAxdYdXgLAAEE9QEA
AARQAAAA3ZFBS8NAEIXv/RVztGA2u0k3iYsIkiKIoMUcKkgPyTo2q5vdsJm04q83UlAPngV7mjcw
w7xvXsJFFgkepQJ4okShJGfJQoL2Hav73iJbY3Nj6LOU3hE6YkvcofV9N+nHbFGIMyVSmYos38Ch
hfLqFmnvwyuYaSW42gKG4AOc8DfNRa3iyo9BY1nrFuOv6W8V5QlnkuXxKvgX1HQ/OjIdxhUGU1vz
XjcWL4NuzQ6Z7nslMz6fJcfBIrJ0PrvTBD84APeD4DmzXk/3A+mAvQ9k3PbgegPnS2zG7YWaXBpa
G2orHAbj3bV79goeViU4TzBhGrL4dAri13fJIjua6P8hy19F/wFQSwMECgACAAAAWhJfSaEwYyVj
AAAAYwAAAC0AHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWFib3J0LXN0ZGVyci50eHRV
VAkAA3sMF1jYAxdYdXgLAAEE9QEAAARQAAAAT2N0IDMxIDAyOjE4OjUxIGV3czEwNy5sb2NhbCBy
dGNyZXBvcnRpbmdbNjQ4MTldIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3Qg
ZW50aXRsZWQsIDEKUEsDBBQAAgAIAFoSX0miacFVswAAACMBAAA2ABwAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1lcnJvci1kb2VzLW5vdC1leGlzdC1zdGRlcnIudHh0VVQJAAN7DBdY2AMXWHV4CwAB
BPUBAAAEUAAAAJWOMQ+CMBCFd3/FjToALWLEbkRiGBwMwck4ID2wESi2xfjzPYNxNDG3vJf3Xu47
sVDwWKy4H0fsDFlRHHK8j2gd1KrJnBs+NlUyxwrVA3O0g+4tbsu2vZTVTYCZAglX6pObcohYBHM0
RhvweLhZxguoSb9LIgh4uPYZHRcxYyyQGq3Xa+fhU1nndwM2s9NvOLLp2A071ZftMd8nPRF22mEi
JTFYAeUk4PuKZtSF0bR/ULwAUEsDBBQAAgAIAFoSX0lz3KtXaAAAAMYAAAAsABwAaHR0cC90ZXN0
cy9tZWRpYS92aWRlby1sb2FkLXR3aWNlLXN0ZGVyci50eHRVVAkAA3wMF1jZAxdYdXgLAAEE9QEA
AARQAAAA808uUTA2VDAwsjK0sDI1VEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOxMLSMVbBx
SU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9FQBQSwME
CgACAAAAXBJfSaVCZAtjAAAAYwAAAC8AHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJv
Z3Jlc3Mtc3RkZXJyLnR4dFVUCQADfwwXWNoDF1h1eAsAAQT1AQAABFAAAABPY3QgMzEgMDI6MTg6
NTUgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s2NDgxOV0gPERlYnVnPjogaW5pdFdpdGhTZXNz
aW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQSwMEFAACAAgAYhJfSeDxjvT5AAAAQQEAACoA
HABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRVVAkAA4cMF1jeAxdY
dXgLAAEE9QEAAARQAAAARY9BS8NAEIXv/RVzbMEm2SRtbVBBIwHBYmmQCqWHdTtJF5OdMjtR+u9d
i+jt4x2+994uSQu1LJI0ymeLPayRG+J+gw0yOoMr+rS4QU/dIJYceNs63XV4AGS+nap0maUwDjyB
cWXbh7NgLYy6r7QR4nMZ+C9i6l83z9BoGwQT0AJxTQMbLLU5YlwS4woPVv/TVM3maZTmSbxmEpLz
CX0ceu69R4mD7AJb4o9qcOZnoY8MdNYhqHyejV6MQKbg92MG+OVVsog6MroDFsN4Ihbr2t08v1bL
Pdw84vvQ3hVgnZWtlWON3gftk2uogLd1CY4E0ImV8OEK1OgbUEsDBAoAAgAAAGISX0k8J9fKYwAA
AGMAAAArABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby11c2VyYWdlbnQtc3RkZXJyLnR4dFVUCQAD
iAwXWN4DF1h1eAsAAQT1AQAABFAAAABPY3QgMzEgMDI6MTk6MDQgZXdzMTA3LmxvY2FsIHJ0Y3Jl
cG9ydGluZ1s2NDgxOV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRp
dGxlZCwgMQpQSwMECgAAAAAAYBJfSQAAAAAAAAAAAAAAABAAHABodHRwL3Rlc3RzL21pc2MvVVQJ
AAODDBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACABhEl9J46dKPtUAAAAYAQAAPwAcAGh0
dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFuZ2Utc3RkZXJy
LnR4dFVUCQADhQwXWNgDF1h1eAsAAQT1AQAABFAAAABNjkFLw0AQhe/9FXNUsGG32waziJfEXgxS
EPFQpKzJtA5uZpfNNKK/3g0o9MEwb+Ax71spXS61WhoNamV1ZZUuKrOBLgyFi9Fj8YrvjyTzqgML
shQNTuhDHLLfl+tbU1ltNmatyjfYpRAxyTd4GgWIJ+eph2NI8wxOLGil4CpexkboHHOQ3MniiOHp
pW2vF/sLnvz5Lgu2Tb07tDSQYA/3WbCl09/d0PhZu+4DM8NEPabDM8o/j4WHlDLFVyIhPkE457o5
DEfyeAOSztw5QZAAP5jC4hdQSwMEFAACAAgAYBJfSXx9p2DWAAAAGAEAAFsAHABodHRwL3Rlc3Rz
L21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2MtYWZ0ZXIt
dmlkZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQJAAODDBdYgwwXWHV4CwABBPUBAAAEUAAAAE2OQUvD
QBSE7/0Vc1SwYbdJQxLES2IvBimIeCilrMlrfZjshs1rSv31bkChA8O8BwPzrZROl1otYw21KnRW
rPMoTzI0ro/MMHQUfdDnC8scpbNCVqKKJurc0Id7lyZZnBc6XseJSvfYejeQlys6HgVsJ9Nxi6Pz
s3sjBbRSuBtuayMaY62TsGnFsMXre13fL3Y3PPkej0HYVOX2UHPPQi2egrDh099f8fhdmuaLAsPE
LfnDG8k/T4Fn7wPFxbOwPcGdw9xcxpE7eoD4s22MEMThh7xb/AJQSwMEFAACAAgAdBJfSRU1NZJ6
AAAAvAAAACoAHABodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAkA
A6wMF1j9AxdYdXgLAAEE9QEAAARQAAAAjY5BDsMgDATveYU/QCDtoRW/IcRVLBmMjJH6/BLlA9Ve
VjuH2SylEScjqYCqohE+xAinWYveb4/XGma2+A4h+EI9e8UuQzN2/+1sbk+Ho9JEzQ2ldW7AVBGe
gIwFq8FNl0niXSHCqGmfGhNgScd/uip95PO6lywxLz9QSwMECgAAAAAAVxJfSQAAAAAAAAAAAAAA
ABUAHABodHRwL3Rlc3RzL211bHRpcGFydC9VVAkAA3UMF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsD
BBQAAgAIAFcSX0mdQ+nIngAAALUAAAA9ABwAaHR0cC90ZXN0cy9tdWx0aXBhcnQvaW52YWxpZC1p
bWFnZS1kYXRhLXN0YW5kYWxvbmUtc3RkZXJyLnR4dFVUCQADdQwXWHUMF1h1eAsAAQT1AQAABFAA
AAAVjTsOwjAQBXtOsRfAivNxIB2QBkEHggJRbJJNsOSfbAcUTo+p3mik0cszLtY8Wxccsrzhm6as
WFFX0FvN0DlF7E7dScb/HKyJZCJr6U3KOp34IcptXjW8EIKL+gnHyVgvzZR6E71VV6mpw0AQKEK3
QK9kqqCjHudkd7cL6nSyn8eRfCuDU7iccSEPHwyAw0ADRAsIYTH9y1sjv+RXP1BLAwQKAAAAAAA4
DV9JAAAAAAAAAAAAAAAAFgAcAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9VVAkAA8sDF1gEDxdYdXgL
AAEE9QEAAARQAAAAUEsDBBQAAgAIAFoSX0nbCNNCOwAAAD8AAAA3ABwAaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL2ZhbGxiYWNrLWFuY2hvci1yZWxvYWQtc3RkZXJyLnR4dFVUCQADfAwXWMsDF1h1eAsA
AQT1AQAABFAAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PS
FQqK8pNTi4tTU/S4AFBLAwQKAAAAAAA3DV9JAAAAAAAAAAAAAAAAFwAcAGh0dHAvdGVzdHMvcGVy
Zm9ybWFuY2UvVVQJAAPJAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAA3DV9JRfZlq14A
AACmAAAATAAcAGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGlt
aW5nLWNhY2hlZC1lbnRyaWVzLXN0ZGVyci50eHRVVAkAA8kDF1jJAxdYdXgLAAEE9QEAAARQAAAA
lcwxEkAwEAXQ3in+ESQGGbVGl8IFIjZkhJhd7q81o/IO8PaTFn06FmJYEsvZk8go1m0dvAcxZ0Y8
YIceqtSQNd9pxkRQFaKgRIiJkEMQulC1TbH/K9WrrL9jbbQpHlBLAwQKAAAAAABYEl9JAAAAAAAA
AAAAAAAAEwAcAGh0dHAvdGVzdHMvcHJlbG9hZC9VVAkAA3cMF1gEDxdYdXgLAAEE9QEAAARQAAAA
UEsDBBQAAgAIAFgSX0kzPyOusgAAAK8BAABKABwAaHR0cC90ZXN0cy9wcmVsb2FkL2RlbGF5aW5n
X29ubG9hZF9saW5rX3ByZWxvYWRfYWZ0ZXJfZGlzY292ZXJ5LXN0ZGVyci50eHRVVAkAA3cMF1h3
DBdYdXgLAAEE9QEAAARQAAAAxZCxasMwGIT3PMU9QbGUpDamdEkIdBMkWylFtU/JT6RI6Hcb8vZ1
t0KnTP3m47vjUuHRFl+VFY7qah6oelDnzz2GAaw1V8gF7mUL01joKX/GER+EWUIUDYJEIoegnLBs
HxfpPqX5pVz/Na472y1eG9ubrl+1D7Y1b3iawU6O+6nSJxf9ba56nkEoQd/35Hkr4yanEjmxx8bH
yBFXmU7w+PJRRpTKQZQ/2YMk3rv6n474BlBLAwQKAAAAAABRDV9JAAAAAAAAAAAAAAAAFAAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvVVQJAAP6AxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACABc
El9JvK1qnsoAAAA2AQAAVQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1yZWFk
LXJlbW90ZS12aWRlby1ibG9ja2VkLW5vLWNyb3Nzb3JpZ2luLXN0ZGVyci50eHRVVAkAA4AMF1jU
AxdYdXgLAAEE9QEAAARQAAAAnY5BSwMxEIXv/RXvB0jYaN3uhnWRKoIgVNyDQvGQZqdpMM2UZET8
90ZPenUOj+GbN29mGIYBd8GvP4UmyWSPGGv9RZNYKQ/sN4meyM4Gv9xVZvAeHXYVFlyjgTC/Qatl
u9Jdj0KuqMrg+HiKJHQG/bNWMF7Vts7VYuMEFxrNudGduWxBH0U3KxXZ2YgsLtOJs4Tkt+2yb/pX
DPdpz6NBZO8rRhGbpSj1n6hb2r37mhVSkOcgh4lKCZy+Lxi8PN4gsYCSBIk01+8XX1BLAwQKAAIA
AABdEl9JAeHBP2MAAABjAAAASAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1y
ZWFkLXJlbW90ZS12aWRlby1sb2NhbGhvc3Qtc3RkZXJyLnR4dFVUCQADgQwXWNQDF1h1eAsAAQT1
AQAABFAAAABPY3QgMzEgMDI6MTg6NTcgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s2NDkwOV0g
PERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQSwMEFAAC
AAgAYRJfSey0fOWtAAAAzAAAAEcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUt
cmVhZC1yZW1vdGUtdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUCQADhQwXWNgDF1h1eAsAAQT1
AQAABFAAAAA1zrFqwzAUheE9T3EeoAlSFWwsSqB2lk4N8dCCyaAq17GIuArSNS19+mrpvx++M6ln
qzur9M6Y5oKXGobzaz/iUMMc17KciK+Bb2eK5AqNJBaT+mln553RjWmVuqCPyd+hsLgCTrz9pZyQ
aYZPKwv2m3cvMBr/HOi7aNXu6sxFZPGZHilLZaZm36muXjnS13o7WAQO8hFkGamUkPiN52TxeRqq
IyCWIJGuT9CbP1BLAwQKAAAAAABKDV9JAAAAAAAAAAAAAAAAKgAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUCQAD7AMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwME
CgACAAAAWBJfSZ+cF65jAAAAYwAAAEsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA3gMF1jKAxdY
dXgLAAEE9QEAAARQAAAAT2N0IDMxIDAyOjE4OjQ4IGV3czEwNy5sb2NhbCBydGNyZXBvcnRpbmdb
NjQ5NjVdIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQQyBub3QgZW50aXRsZWQsIDEK
UEsDBBQAAgAIAFgSX0nNPgQGfAAAAK4AAABMABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZDItc3RkZXJyLnR4dFVUCQADeAwX
WMoDF1h1eAsAAQT1AQAABFAAAACVzTEOwjAMQNG9p/ABUNRAKSVCLLAwFYkBJMRQghssRTaKjbg+
5Qisf3i/jwYLD/U8+C40HeBHfb1yWeKQoVgs+JJixOnaNut2eYPNgUfZBsiS0pRBbSimzrmq/5va
4/2dJouY7Ez2PKEqCf8OAS7HHbAYIBtZxscMfPUFUEsDBBQAAgAIAFgSX0lZRPukqAAAAIoBAABY
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYmxvYi11cmwtZG9l
cy1ub3QtbWF0Y2gtc291cmNlLXNlbGYtc3RkZXJyLnR4dFVUCQADeAwXWMoDF1h1eAsAAQT1AQAA
BFAAAADdj70OgjAURnefoiMOUCg/AomDEk0cjCSMxpBrucFqpeRSTXh7MQ76DG7nm875jr7IgzSP
Ui8JsxNTFu8wjJ2sK7QlmR7JjmxQbQdaY8OQaOkGYpHGzLltVbuGAQ/nK0q7ITJU77onaNWAxWbO
HPW7wDJemQdJLEBekBeGcI+Ngi+5QZwIT0Q+n9TW2LHHgZcaRiQ+yT5Ur959nmRadciEyMLZ8R9O
vABQSwMECgAAAAAAOA1fSQAAAAAAAAAAAAAAAEQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL1VUCQADywMXWAQPF1h1
eAsAAQT1AQAABFAAAABQSwMEFAACAAgAWRJfSWdBCfDuAAAAJgMAAHkAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL3Vw
Z3JhZGUtaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1zdGRlcnIudHh0VVQJAAN6
DBdYywMXWHV4CwABBPUBAAAEUAAAAM1RPU/DMBDd+RU3wkBih7SNvFUpiIEBRWWqGIxzLRaxHc42
A7+ea6kQQwGpQ4W83Me79578VqJSslETUUxk8wi3y+V9h68ZY4K13XxrW0Kd8JooUBucQ58UoDch
+4SEPWgPuF0qyJ7QhI237zx+TmkEwjgGHxFqIc5Wvysyft8ubN+hQfuG3f6+1cPwpM2LYsbd4gA/
nO9swKWsptPZBay53oJUWcpqVgh+UjV1fVXyVchkMJaJ1Qo31n9543aR3XhjvR4euru5Z4MuJJz3
PZNFBfqzgC8lPmMsZBqOMlGJU0dySPG/RPLDb5wgkg9QSwMECgAAAAAAOA1fSQAAAAAAAAAAAAAA
AD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRT
aGFkb3dET00vVVQJAAPLAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAIAAABZEl9JmJjXUGMA
AABjAAAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJB
Z2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0VVQJAAN5DBdYygMXWHV4CwABBPUB
AAAEUAAAAE9jdCAzMSAwMjoxODo0OSBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzY0OTg3XSA8
RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAIA
AABaEl9J+k5tlmMAAABjAAAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRlby1zdGRlcnIudHh0VVQJAAN7DBdY
ywMXWHV4CwABBPUBAAAEUAAAAE9jdCAzMSAwMjoxODo1MSBld3MxMDcubG9jYWwgcnRjcmVwb3J0
aW5nWzY0OTg3XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVk
LCAxClBLAwQKAAIAAABnEl9Ji7MsFmMAAABjAAAASwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUCQAD
kgwXWOUDF1h1eAsAAQT1AQAABFAAAABPY3QgMzEgMDI6MTk6MTQgZXdzMTA3LmxvY2FsIHJ0Y3Jl
cG9ydGluZ1s2NDk2NV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRp
dGxlZCwgMQpQSwMECgACAAAAZxJfSYuzLBZjAAAAYwAAAEwAHABodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0
VVQJAAOSDBdY5AMXWHV4CwABBPUBAAAEUAAAAE9jdCAzMSAwMjoxOToxNCBld3MxMDcubG9jYWwg
cnRjcmVwb3J0aW5nWzY0OTY1XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90
IGVudGl0bGVkLCAxClBLAwQKAAIAAABoEl9Ji7MsFmMAAABjAAAAZgAcAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11cmwtYWxsb3dlZC1i
eS1jc3AtbWVkaWEtc3JjLXN0YXItc3RkZXJyLnR4dFVUCQADkwwXWOcDF1h1eAsAAQT1AQAABFAA
AABPY3QgMzEgMDI6MTk6MTQgZXdzMTA3LmxvY2FsIHJ0Y3JlcG9ydGluZ1s2NDk2NV0gPERlYnVn
PjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBDIG5vdCBlbnRpdGxlZCwgMQpQSwMEFAACAAgAaBJf
SWOqrGyCAAAAqAAAAEAAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAOUDBdY7AMXWHV4CwABBPUBAAAEUAAAAC2NQQrD
MAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth0OHeUgjLbZ3jyJLu
McZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpDbVwnksqdljnSjs2v
MUSbguxqTdTxmr5QSwMEFAACAAgAaBJfSWOqrGyCAAAAqAAAAFIAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtdW5hZmZlY3RlZC1ieS1zdHlsZS1zcmMtMi1z
dGRlcnIudHh0VVQJAAOUDBdY7AMXWHV4CwABBPUBAAAEUAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+
ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth0OHeUgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtD
uOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpDbVwnksqdljnSjs2vMUSbguxqTdTxmr5QSwME
CgACAAAAZxJfSXcYQEFjAAAAYwAAAD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVv
LXNvdXJjZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQJAAORDBdY5AMXWHV4CwABBPUBAAAEUAAA
AE9jdCAzMSAwMjoxOToxMyBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzY0OTA5XSA8RGVidWc+
OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQUAAIACABsEl9J
DGZTh2wAAADGAAAAOQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWNh
Y2hpbmctc3RkZXJyLnR4dFVUCQADmwwXWO4DF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMrS0
MjJSSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482M7E0sIxVsHFJTSpNt7NSyMzLLAnPLMkITi0u
zszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyR7HCmBZWAABQSwMEFAACAAgAbBJfSaga0ai1
AAAAJwEAAD8AHABodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLXBvc3Rlci1jcm9zcy1vcmlnaW4t
Y3Jhc2gyLXN0ZGVyci50eHRVVAkAA5sMF1jvAxdYdXgLAAEE9QEAAARQAAAAlY47D4JAEIR7f8WW
WgjHQ4XriMRQWBiClbFAWOQiHHgPE/+9azCWJmabmcxM9jsxn3sx9wNnFa7PkBXFIce7RW2gEdfM
mPFjU1HnWKF4YI56HKTGbdl1l7K6cVBTUENLfXJTDiELYY5KDQqWnh8H0QIa0u8Sd13P3ziMzuMR
Y8zVWFklzNOVg0Rtq9bpx3B2+o1HNrX9uBOy7I75PpHE2A8Gk7omCs2hnAR8n9GMumBV9xfHC1BL
AwQUAAIACABuEl9JYEtmEJEAAAD7AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC14c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUCQADoAwXWPoDF1h1eAsA
AQT1AQAABFAAAADtjjEOgzAMRXdO4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJ
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
BA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACABiEl9JNnaYRr4AAADyBgAANQAcAGlldGVzdGNl
bnRlci9jc3MzL25hbWVzcGFjZXMvZGVjbGFyaW5nLTAwMS1zdGRlcnIudHh0VVQJAAOIDBdYiAwX
WHV4CwABBPUBAAAEUAAAAO3PMQvCMBQE4N1fkVEHmyZWbQUHLQoOouAoUp7pQ6OxKa9RyL9XcdDB
1UHIdjfdfdtYjkQ2ipMoEWLHtMMLNL5SxQbdmmyN5Dxr9KECY7BkSDTuCjlM+6x9nuvDFBpc7U+o
3IzIUrGobmB0CQ7LDmvrzwaO8Y29ksIc1BF5bgmXWGp4p67oD2Qkk5g/pp11vsaGrw14JP4Ye6Vi
8vwXKWZ0hUzKrNfafiBkQATEjxC5rf1fKOI0DYqgCIovijtQSwMECgAAAAAAUw1fSQAAAAAAAAAA
AAAAAAkAHABpbXBvcnRlZC9VVAkAA/0DF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAALES
X0kAAAAAAAAAAAAAAAAPABwAaW1wb3J0ZWQvYmxpbmsvVVQJAAMeDRdYBA8XWHV4CwABBPUBAAAE
UAAAAFBLAwQKAAAAAABEDV9JAAAAAAAAAAAAAAAAFAAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvVVQJ
AAPgAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABEDV9JAAAAAAAAAAAAAAAAGgAcAGlt
cG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvVVQJAAPgAxdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQK
AAAAAABEDV9JAAAAAAAAAAAAAAAAIQAcAGltcG9ydGVkL2JsaW5rL2Zhc3QvZm9ybXMvYnV0dG9u
L1VUCQAD4AMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAZxJfScch79s3AAAAQAAAAEcA
HABpbXBvcnRlZC9ibGluay9mYXN0L2Zvcm1zL2J1dHRvbi9idXR0b24tcmVzZXQtZm9jdXMtYnkt
bW91c2Utc3RkZXJyLnR4dFVUCQADkgwXWOADF1h1eAsAAQT1AQAABFAAAADLzS8tTvXNL0sNyVdI
S8zMSU1RKAGyMvNSFBIVShKL0lNLFMoyU8sVEksULAwM9AzAQAfG4AIAUEsDBAoAAAAAAEQNX0kA
AAAAAAAAAAAAAAAgABwAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9yYW5nZS9VVAkAA+ADF1gE
DxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAGgSX0nHIe/bNwAAAEAAAAA/ABwAaW1wb3J0ZWQv
YmxpbmsvZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS1mb2N1cy1ieS1tb3VzZS1zdGRlcnIudHh0VVQJ
AAOTDBdY4AMXWHV4CwABBPUBAAAEUAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy81IUEhVKEovS
U0sUyjJTyxUSSxQsDAz0DMBAB8bgAgBQSwMECgAAAAAARA1fSQAAAAAAAAAAAAAAACEAHABpbXBv
cnRlZC9ibGluay9mYXN0L2Zvcm1zL3N1Ym1pdC9VVAkAA+ADF1gEDxdYdXgLAAEE9QEAAARQAAAA
UEsDBBQAAgAIAGgSX0nHIe/bNwAAAEAAAABBABwAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9z
dWJtaXQvc3VibWl0LWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50eHRVVAkAA5MMF1jgAxdYdXgLAAEE
9QEAAARQAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFCwMDPQM
wEAHxuACAFBLAwQKAAAAAACxEl9JAAAAAAAAAAAAAAAAFwAcAGltcG9ydGVkL2JsaW5rL3N0b3Jh
Z2UvVVQJAAMeDRdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAACxEl9JAAAAAAAAAAAAAAAA
IQAcAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL1VUCQADHg0XWAQPF1h1eAsAAQT1
AQAABFAAAABQSwMEFAACAAgAsRJfSU3/2EJ+AAAAhwAAAEQAHABpbXBvcnRlZC9ibGluay9zdG9y
YWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWJlZm9yZS1jb21taXQtYWN0dWFsLnR4dFVUCQADHg0X
WB4NF1h1eAsAAQT1AQAABFAAAAAlxs0KgkAUhuG9V/GBm1rkpghpF42CFCrZz1qdYxyYmTPEqeju
K9q8z5u2lcG5PhZd29RddSmwwCg+62N0lF1p2LP+2ElQCpoZepKT6L+PWWSL9SrPl/Ok3FaHDU7s
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
htv/AFBLAwQUAAIACACxEl9JLZRA7lwAAABeAAAARAAcAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2Uv
aW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC1zdGRlcnIudHh0VVQJAAMeDRdYHg0X
WHV4CwABBPUBAAAEUAAAAAtPzCxRyM9TyMsvyUyrdMnPS1UoycxNTVHILy3RUSgoyk9OLS5WSM7P
1UssKMhJ1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUC2QkFmioKtgpmJhYWxsqu/GxcAUEsDBAoA
AAAAALESX0kAAAAAAAAAAAAAAAANABwAaW1wb3J0ZWQvdzNjL1VUCQADHg0XWAQPF1h1eAsAAQT1
AQAABFAAAABQSwMECgAAAAAAshJfSQAAAAAAAAAAAAAAACgAHABpbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvVVQJAAMfDRdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIA
CACxEl9JFGUYun4AAACHAAAAQwAcAGltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJmYWN0b3J5X29wZW45LWFjdHVhbC50eHRVVAkAAx4NF1geDRdYdXgLAAEE9QEAAARQ
AAAAJcbNCoJAFIbhvVfxgZtaJBER0S6aEaRQyX7W6hzjwDhniFPR3Ve0eZ83rQuDc3m0TV2VTXGx
mKGXMWtj9JRdqduz/thJUAqaGXqSlzh+H5PIDqvler6YJvm2OGxw4pEc5KF4tawcbhjkjiDKw9tI
IKigI/St9+SSJLVV/s8HUEsDBBQAAgAIALESX0kMd/0FnQEAAPkGAABBABwAaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjktZGlmZi50eHRVVAkA
Ax4NF1gfDRdYdXgLAAEE9QEAAARQAAAAxdRPT9swGAbwez7FK3ZpFZw/XQt0pwIJUrWpVITBcXLi
N9STY0f2m7b59nMBaZddEJZ2yRtLyS9PJPthjEH6ZNTQoUsLTjwtn6v0Gevvkt7HzSCVSB9QIXeY
Kj6agRihI2bRDYpcKrveWEKRHr426VoLPKIoblhv5Z4Tstqag5P6JZWibnlDxo6/TI96yfDYY+Nf
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
kDusz0Dj1pwz7ljfFwEvRDfuFx2Q5n7xTXrFN+gX3LRfcH3b7rJneLN+4b3rFd58MHg3nM9H08m7
yQCe/WKd9Yr1Ht33C2/eK7y7JCSJuoLoFeNw0G+peCWUw15R/vBnxuQyZEy/9Iy1X2qTZJT2DLBf
dhMiKnDPCPvlN8z7AsfSniFOXwPiG4F9lgRve8Z6+SpYZUR471D7pT/DPXmFc7nG+P9CNntNYjfs
DWa/pCdLAgyEAAd94Rv9L/jOsxcfr31xNzlycbf+5fYVb92m3yfZ91wpNR75LfGVq//G9L9QSwME
FAACAAgAsRJfSe8J8xZcAAAAXgAAAEMAHABpbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiZmFjdG9yeV9vcGVuOS1zdGRlcnIudHh0VVQJAAMeDRdYHg0XWHV4CwABBPUB
AAAEUAAAAAtPzCxRyM9TyMsvyUyrdMnPS1UoycxNTVHILy3RUSgoyk9OLS5WSM7P1UssKMhJ1QtP
TfLOLAFRzvl5Jal5JXouqWWpOfkFuUC2QkFmioKtgpmJhYGRsqu/GxcAUEsDBAoAAAAAAIISX0kA
AAAAAAAAAAAAAAAgABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9VVAkAA8MMF1gE
DxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAFUNX0kAAAAAAAAAAAAAAAAkABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vVVQJAAMBBBdYBA8XWHV4CwABBPUBAAAEUAAAAFBL
AwQKAAAAAABVDV9JAAAAAAAAAAAAAAAAKgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL25vZGVzL1VUCQADAQQXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAdxJfSbxL
YyppAAAAbAAAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9F
bGVtZW50LW1hdGNoZXMtc3RkZXJyLnR4dFVUCQADsQwXWAEEF1h1eAsAAQT1AQAABFAAAAAzMjA0
0zU00DU2VDAwsjK0tDIx1TMwNlVIzs/VSywoyEnVC09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0
mYkFUJOhsamxoal5rIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMECgAAAAAAUw1f
SQAAAAAAAAAAAAAAACYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL1VU
CQAD/QMXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAZQ1fSQAAAAAAAAAAAAAAACoAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9VVAkAAx4EF1gEDxdYdXgL
AAEE9QEAAARQAAAAUEsDBAoAAAAAAGUNX0kAAAAAAAAAAAAAAAAwABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvVVQJAAMeBBdYBA8XWHV4CwABBPUBAAAE
UAAAAFBLAwQUAAIACACJEl9JHJPL2I8AAAChAAAARwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL21vZGUtbm8tY29ycy1zdGRlcnIudHh0VVQJAAPRDBdY
HgQXWHV4CwABBPUBAAAEUAAAAFXLsQrCMBAA0N2vuFHBxqSxtXZtLYJFxFQcxCG2p4QmuRKC/r6u
jm94KRd5IngiBfC0THkpNkxmEnpyTE+TRXbFx8FEdsT4oTAa/2I1vtHS5NDHW74uZFGKX8l4foej
upzbirzHPhryq6r5M+y77gSW9ABPbSwOMB+rRsWA2u1CoFCT08Yr1S4h2RZCLmZfUEsDBBQAAgAI
AIkSX0kWHiGUjgAAAKEAAABOABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvYmFzaWMvbW9kZS1uby1jb3JzLXdvcmtlci1zdGRlcnIudHh0VVQJAAPRDBdYHgQXWHV4
CwABBPUBAAAEUAAAAFXHuwrCMBQA0N2vuKOCjXnYWLu2FsFSxFQcxCG2VwnNo4Sgv+/s2Q6nTGaM
ZoIB5SWnJdsRLjkMwRE9zxbJDZ8nk0iH6RviZPyb1PhBG2aHPt3lthBFyUQuciof0Knrpa2C9zgk
E/ymav4Ox74/gw16hJc2FkdYTlWjUkTtDjGGWAenjVeqXUO2L5hYLX5QSwMECgAAAAAAVQ1fSQAA
AAAAAAAAAAAAAC8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9j
b3JzL1VUCQADAgQXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAgRJfSUM5FGOsAAAAxgMA
AEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMt
YmFzaWMtc3RkZXJyLnR4dFVUCQADwQwXWP0DF1h1eAsAAQT1AQAABFAAAADNzjEKwjAUANDdU2RU
sPH/pIm1a6sIiohVHMQh6ldC26SEoNd3FjxAxrc9AagzhEwiA1EKKAE4qjm7+56bYeiIn+m2sZHv
KH58aK178Zre1PmhJxcvOl8UukSpcyXgynbN6bCtvHN0j9a7WbX6MVsfj3vWefNgT2M7erBxW62a
GMj0yxB8qH1vrGua7ZRliwLlZCT+BIWCtIMyL1IOIgel0w7iXKQdlKjSCX4BUEsDBBQAAgAIAIAS
X0m123XVrQAAAMYDAABLABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvY29ycy9jb3JzLWJhc2ljLXdvcmtlci1zdGRlcnIudHh0VVQJAAO/DBdY/QMXWHV4CwABBPUB
AAAEUAAAAM3QwQqCMByA8XtPsWNBrs3N6bxqEiQSaXSIDkv/xVA3GaNev3P0Ajt+tx9fTKiIKIkY
RSTOqcy5wJJQ1NsZq2WZAF/hcdQeN+A/1o3avHAJb5jsMoPxN8FlJnLKBE9ickdNeznXhTUGeq+t
2RXVT6ND153QZNWAnkpPMKD1WFStd6DmvXPWlXZW2rRtvUWRzCjbrOI/YIpJ8MBMBAxMJE4YDxso
eOAHU8HCAX4BUEsDBBQAAgAIAIMSX0monXD7mQAAAEIBAABLABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW5vLXByZWZsaWdodC1zdGRlcnIudHh0
VVQJAAPGDBdYAAQXWHV4CwABBPUBAAAEUAAAAM3OuwrCMBQA0N2vuKOCjXnU2HZtLYKliFUcxCG2
VwnNo4Sgv+8s+AGOZzucMpkwmggGlBecFlQSkTLovSVqmgySC973OpIW49uHUbsnqfCFxk8WXbzK
NM9kwYRM15zeoO3Ox6b0zmEftXersv4y7E6nAxivBngobXCA+VjWXQyo7DYEHypvlXZd1ywhyTMm
FjP+K7jJ/if4AVBLAwQUAAIACACDEl9Jl7rpFpgAAABCAQAAUgAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVmbGlnaHQtd29ya2VyLXN0
ZGVyci50eHRVVAkAA8YMF1gABBdYdXgLAAEE9QEAAARQAAAAzc7BCoIwGADge0+xY0GubeZQr5oE
iUQzOkSHpX8x3PbLGPX6nYMeoON3+wTjMuEsSTlhohSsZJIyVpABHdXzbIFe4H4wkXYQ3xgm45+0
hhdYnB34eJXbIpclT+U2E+xGOnU+tRV6D0M06DdV82Wy7/sjsahH8tDGwkiWU9WoGEC7XQgYanTa
eKXaNUmKnKerhfgVzPj/BD9QSwMEFAACAAgAhBJfSbF5kqejAAAAhAIAAEUAHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtb3JpZ2luLXN0ZGVyci50
eHRVVAkAA8cMF1gCBBdYdXgLAAEE9QEAAARQAAAAzdC9CsIwFEDh3afIqGDjTVpj27W1CJYiVnEQ
h9heJTQ/JQR9fV0FH6Dj2T4OByYiBlHMCPCcQw4bCqkgnTNUjqNGesH7XgXaYHg7Pyj7pCW+ULvR
oA1XkWSpyFkskjWHG2na87EunLXYBeXsqqh+muxOpwPRTvbkIZXGnsyHomqDR2m23jtfOiOVbdt6
SaIsZfFixv8A2TemDRQTP8gBpgP8AFBLAwQUAAIACACDEl9JVzanv6EAAACEAgAATAAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1vcmlnaW4td29y
a2VyLXN0ZGVyci50eHRVVAkAA8YMF1gBBBdYdXgLAAEE9QEAAARQAAAAzc7PCoIwHADge0+xY0Gu
/dE5vWoSJBLN6BAdlv6KoW4yRr1+56AH8PjdPkaoiCiJOEWE5YzkROCUxKhzE9bzPAK+wuNoAm4g
fJwfjH3hEt4wunkCG24izqTIKRdxwsgdNepyrgtnLXTBOLsrqh+jQ9ue0Oh0j57ajNCj9VBUKnjQ
095750s3aWOVqrcoyiTlmxX7F0zkwoNZuuyg5GI5wS9QSwMECgAAAAAAaQ1fSQAAAAAAAAAAAAAA
ACUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvVVQJAAMmBBdYBA8XWHV4
CwABBPUBAAAEUAAAAFBLAwQKAAAAAABjDV9JAAAAAAAAAAAAAAAAKQAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vVVQJAAMZBBdYBA8XWHV4CwABBPUBAAAEUAAAAFBL
AwQUAAIACACLEl9JKHxV/b0AAABOAgAARwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9kb20vcmVmbGVjdGlvbi1lbWJlZGRlZC1zdGRlcnIudHh0VVQJAAPWDBdYGQQXWHV4
CwABBPUBAAAEUAAAAO2QMQ+CMBCFd3/FjTpIC5IA3YjEOJhoiE7GodJDiIViW/z9nsHZydHc8l7e
u9yXO/NIRFyEWZDFyQW2x+OhxMeIzkPd3rbeDx9btKrECtsnlugG0ztcS62vsroLsFOgoKE+uSmH
mMcwR2uNhWUYZat0ATXpd0kwpk0ldWOcF2nKOWt8p5kyHfN0bPmUesR9PTt/xyNbjN2waXupT+Uu
74mxMx5zpYjCCZCTgDBKAk4T0hp1YbT6lxz/N00cL1BLAwQKAAAAAABoDV9JAAAAAAAAAAAAAAAA
NAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9pbmZyYXN0cnVjdHVyZS9V
VAkAAyQEF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAGgNX0kAAAAAAAAAAAAAAABKABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1v
bi1kb20taW50ZXJmYWNlcy9VVAkAAyQEF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAGgN
X0kAAAAAAAAAAAAAAABWABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2lu
ZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9VVAkAAyQEF1gE
DxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAJISX0lAgBQxagAAAGwAAABuABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50
ZXJmYWNlcy9jb2xsZWN0aW9ucy9yYWRpb25vZGVsaXN0LXN0ZGVyci50eHRVVAkAA+MMF1gkBBdY
dXgLAAEE9QEAAARQAAAAMzIwNNM1NNA1NlQwMLIyMrAyNtUzNLNQSM7P1UssKMhJ1QtPTfLOLAFR
zvl5Jal5JXouqWWpOfkFuUB2tJmJpbGZlaGxqbmxoWWsgl+wU2lJSX6eY15mbmJJZn5esWteYlJO
aoqtnz8XAFBLAwQKAAAAAABpDV9JAAAAAAAAAAAAAAAALwAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvVVQJAAMmBBdYBA8XWHV4CwABBPUBAAAEUAAAAFBL
AwQKAAAAAABrDV9JAAAAAAAAAAAAAAAAQAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9VVAkAAykEF1gEDxdYdXgLAAEE9QEA
AARQAAAAUEsDBAoAAAAAAHENX0kAAAAAAAAAAAAAAABPABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L1VUCQADNgQXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAkxJfSUDyL29oAAAAxgAAAGcA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheS1zdGRlcnIudHh0VVQJAAPlDBdY
JgQXWHV4CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAyNldILS82NDDXy8lPTsxRKCpJLkotyC8q
ycxLjzYzsTC2jFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN
0VEw5PKnvRUAUEsDBBQAAgAIAJMSX0lA8i9vaAAAAMYAAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPlDBdYJwQXWHV4CwAB
BPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAyNldILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzYzsTC2
jFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKnvRUA
UEsDBBQAAgAIAJMSX0m70WhnaAAAAMYAAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50
X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA+YMF1gnBBdYdXgLAAEE9QEAAARQAAAA808u
UTA2VDAwsjIysDK2UEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOxMLaMVbBxSU0qTbezUsjM
yywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9FQBQSwMEFAACAAgAkxJf
SbvRaGdoAAAAxgAAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91
Z2hfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPmDBdYJwQXWHV4CwABBPUBAAAEUAAAAPNPLlEw
NlQwMLIyMrAytlBILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzYzsTC2jFWwcUlNKk23s1LIzMss
Cc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKnvRUAUEsDBBQAAgAIAJQSX0m7
0WhnaAAAAMYAAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEtc3Rk
ZXJyLnR4dFVUCQAD5wwXWCgEF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMrZQSC0vNjQw
18vJT07MUSgqSS5KLcgvKsnMS482M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dS
iAhwVsjLL1FIzSvJLMlJTdFRMOTyp70VAFBLAwQUAAIACACUEl9Jv4ENmWgAAADGAAAAdQAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4
dFVUCQAD5wwXWCgEF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMrZUSC0vNjQw18vJT07M
USgqSS5KLcgvKsnMS482M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjL
L1FIzSvJLMlJTdFRMOTyp70VAFBLAwQUAAIACACUEl9Jv4ENmWgAAADGAAAAbgAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAAPnDBdYKQQX
WHV4CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAytlRILS82NDDXy8lPTsxRKCpJLkotyC8qycxL
jzYzsTC2jFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw
5PKnvRUAUEsDBBQAAgAIAJQSX0m/gQ2ZaAAAAMYAAAB5ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X2xvYWRlZG1ldGFkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD6AwXWCkEF1h1
eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMrZUSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482
M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTy
p70VAFBLAwQUAAIACACUEl9JYC5872gAAADGAAAAaQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQAD6AwXWCoEF1h1eAsAAQT1AQAABFAAAADzTy5R
MDZUMDCyMjKwMjFQSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482M7EwtoxVsHFJTSpNt7NSyMzL
LAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyp70VAFBLAwQUAAIACACUEl9J
YC5872gAAADGAAAAdAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnRfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQJAAPoDBdYKgQXWHV4CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIy
MrAyMVBILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzYzsTC2jFWwcUlNKk23s1LIzMssCc8syQhO
LS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKnvRUAUEsDBBQAAgAIAJUSX0lkfhkRaAAA
AMYAAAB8ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBsYXlfY2FucGxh
eXRocm91Z2gtc3RkZXJyLnR4dFVUCQAD6QwXWCsEF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCy
MjKwMjFUSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkI
Ti0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyp70VAFBLAwQUAAIACACVEl9JZH4ZEWgA
AADGAAAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X3BsYXlp
bmctc3RkZXJyLnR4dFVUCQAD6gwXWCsEF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMjFU
SC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP
88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyp70VAFBLAwQUAAIACACVEl9JKYjHyGgAAADGAAAA
fwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9sb2FkZWRtZXRhZGF0YV9sb2Fk
ZWRkYXRhLXN0ZGVyci50eHRVVAkAA+oMF1gsBBdYdXgLAAEE9QEAAARQAAAA808uUTA2VDAwsjIy
sDIxUkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOxMLaMVbBxSU0qTbezUsjMyywJzyzJCE4t
Ls7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9FQBQSwMEFAACAAgAlhJfSS3YojZoAAAA
xgAAAHgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZHN0YXJ0X3Byb2dy
ZXNzLXN0ZGVyci50eHRVVAkAA+sMF1gsBBdYdXgLAAEE9QEAAARQAAAA808uUTA2VDAwsjIysDIx
VkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOxMLaMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7M
z/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9FQBQSwMEFAACAAgAlhJfSS3YojZoAAAAxgAA
AGUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUCQAD6wwX
WC0EF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMjFWSC0vNjQw18vJT07MUSgqSS5KLcgv
KsnMS482M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJ
TdFRMOTyp70VAFBLAwQUAAIACACWEl9J8mILoGgAAADGAAAAcAAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9wYXVzZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA+wMF1gtBBdYdXgLAAEE
9QEAAARQAAAA808uUTA2VDAwsjIysDIxUUgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOxMLaM
VbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9FQBQ
SwMEFAACAAgAlhJfSfJiC6BoAAAAxgAAAGQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
cGxheS1zdGRlcnIudHh0VVQJAAPsDBdYLQQXWHV4CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAy
MVFILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzYzsTC2jFWwcUlNKk23s1LIzMssCc8syQhOLS7O
zM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKnvRUAUEsDBBQAAgAIAJcSX0n2Mm5eaAAAAMYA
AABvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAAPtDBdYLgQXWHV4CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAyMVVILS82NDDXy8lP
TsxRKCpJLkotyC8qycxLjzYzsTC2jFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBW
yMsvUUjNK8ksyUlN0VEw5PKnvRUAUEsDBBQAAgAIAJcSX0l1V+xCbAAAAMYAAABnABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmctc3RkZXJyLnR4dFVUCQAD7gwXWC8EF1h1eAsA
AQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMjFVSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482M7Ew
toxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyR7HC
jBZWAABQSwMEFAACAAgAlxJfSbvEsIdoAAAAxgAAAHIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfcGxheWluZ19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA+4MF1gvBBdYdXgLAAEE9QEA
AARQAAAA808uUTA2VDAwsjIysDIxU0gtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOxMLaMVbBx
SU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9FQBQSwME
FAACAAgAmBJfSb+U1XloAAAAxgAAAGgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJv
Z3Jlc3Mtc3RkZXJyLnR4dFVUCQAD7wwXWC8EF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKw
MjFXSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0u
zszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyp70VAFBLAwQUAAIACACYEl9Jv5TVeWgAAADG
AAAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzc19ub2F1dG9wbGF5LXN0
ZGVyci50eHRVVAkAA+8MF1gwBBdYdXgLAAEE9QEAAARQAAAA808uUTA2VDAwsjIysDIxV0gtLzY0
MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOxMLaMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3
UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9FQBQSwMEFAACAAgAmBJfSUS3knFoAAAAxgAAAGoAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0ZS1zdGRlcnIudHh0VVQJAAPwDBdY
MQQXWHV4CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAysVBILS82NDDXy8lPTsxRKCpJLkotyC8q
ycxLjzYzsTC2jFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN
0VEw5PKnvRUAUEsDBBQAAgAIAJkSX0lEt5JxaAAAAMYAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPxDBdYMQQXWHV4
CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAysVBILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzYz
sTC2jFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKn
vRUAUEsDBAoAAAAAAGoNX0kAAAAAAAAAAAAAAABaABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2lu
dGVyZmFjZXMvVVQJAAMnBBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABqDV9JAAAAAAAA
AAAAAAAAZAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9VVAkA
AycEF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAgAAAJMSX0mY8wSiYwAAAGMAAAB5ABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJy
LnR4dFVUCQAD5gwXWCcEF1h1eAsAAQT1AQAABFAAAABPY3QgMzEgMDI6MjA6MzggZXdzMTA3Lmxv
Y2FsIHJ0Y3JlcG9ydGluZ1s2NDk2NV0gPERlYnVnPjogaW5pdFdpdGhTZXNzaW9uSW5mbzogWFBD
IG5vdCBlbnRpdGxlZCwgMQpQSwMEFAACAAgAmRJfSUDn949oAAAAxgAAAHcAHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvbmV0d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQAD
8QwXWDIEF1h1eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMrFUSC0vNjQw18vJT07MUSgqSS5K
LcgvKsnMS482M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJ
LMlJTdFRMOTyp70VAFBLAwQUAAIACACZEl9JKY/v6GgAAADGAAAAcgAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJyLnR4dFVUCQAD8gwXWDMEF1h1
eAsAAQT1AQAABFAAAADzTy5RMDZUMDCyMjKwMjVQSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482
M7EwtoxVsHFJTSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTy
p70VAFBLAwQUAAIACACZEl9JKY/v6GgAAADGAAAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9w
YXVzZWRfdHJ1ZV9kdXJpbmdfcGF1c2Utc3RkZXJyLnR4dFVUCQAD8gwXWDMEF1h1eAsAAQT1AQAA
BFAAAADzTy5RMDZUMDCyMjKwMjVQSC0vNjQw18vJT07MUSgqSS5KLcgvKsnMS482M7EwtoxVsHFJ
TSpNt7NSyMzLLAnPLMkITi0uzszP88xLy7dSiAhwVsjLL1FIzSvJLMlJTdFRMOTyp70VAFBLAwQK
AAAAAABqDV9JAAAAAAAAAAAAAAAAagAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRo
ZS1tZWRpYS1yZXNvdXJjZS9VVAkAAygEF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAJQS
X0mMuIEirQAAAMwAAACRABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlh
LXJlc291cmNlL3BhdXNlLW1vdmUtdG8tb3RoZXItZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD5wwX
WCgEF1h1eAsAAQT1AQAABFAAAAA1zrFuwjAUheGdpzgPAMhOWoitCqnQpVMRGUCKGEK4JhbWdWXf
qBVPjxf+/eg7napspWxtlnXVnPFRwu7wuW2xKcGFKY974qvn24EC9ZlaEotO/a+dMa4x+l1V6oxt
iMMdCmOfwZEXD0oRiRyGOLFAz34GQa3x4kB/Wav1ssz6gCRDot+YpDDd6q3Rplz5ost021h49nL0
MraUs4/8zS5anPa74giIxUug67wQT1BLAwQUAAIACACUEl9J3DdbQa4AAADMAAAAjwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXdp
dGhpbi1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAPnDBdYKAQXWHV4CwABBPUBAAAEUAAAADXOzYrC
MBTF8b1PcR5AJbXxo2EQ/Ni4GrELheKi097YYLiR5JaRefrJxv/+8DuNWpiFMmU1X2p9x1cOh8tu
X2Obg/VjGs7EvePHhTy1iWoSg0a917aqbKmX1G/UHXsfuicUhjaBA8/+KAZEsujCyAI9+e4EZYEP
B/pNhVrP86z1iNJFeoUomWlWelNU+cqRfsbH1sCxk6uToaaUXOAT22BwOx+yIyAWJ576KYrJP1BL
AwQKAAIAAACUEl9JxInK72MAAABjAAAAjwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5n
LXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1yZW1vdmUtZnJvbS1kb2N1bWVudC1zdGRlcnIudHh0
VVQJAAPnDBdYKAQXWHV4CwABBPUBAAAEUAAAAE9jdCAzMSAwMjoyMDozOSBld3MxMDcubG9jYWwg
cnRjcmVwb3J0aW5nWzY0ODE5XSA8RGVidWc+OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90
IGVudGl0bGVkLCAxClBLAwQUAAIACACaEl9JqFNu42wAAADGAAAAcwAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5LXN0ZGVyci50eHRVVAkAA/MMF1gzBBdY
dXgLAAEE9QEAAARQAAAA808uUTA2VDAwsjIysDI1UEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuP
NjOxMLaMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk
8kexwpAWVgAAUEsDBBQAAgAIAJoSX0kt34oWaAAAAMYAAAB6ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA/MMF1g0
BBdYdXgLAAEE9QEAAARQAAAA808uUTA2VDAwsjIysDI1VEgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJ
zEuPNjOxMLaMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3R
UTDk8qe9FQBQSwMEFAACAAgAmhJfSS3fihZoAAAAxgAAAHYAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvcmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQJAAP0DBdYNAQXWHV4
CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrAyNVRILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzYz
sTC2jFWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKn
vRUAUEsDBBQAAgAIAJoSX0lgKVTPaAAAAMYAAAB6ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3Jl
YWR5U3RhdGVfZHVyaW5nX2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAkAA/QMF1g1BBdYdXgL
AAEE9QEAAARQAAAA808uUTA2VDAwsjIysDI1UkgtLzY0MNfLyU9OzFEoKkkuSi3ILyrJzEuPNjOx
MLaMVbBxSU0qTbezUsjMyywJzyzJCE4tLs7Mz/PMS8u3UogIcFbIyy9RSM0rySzJSU3RUTDk8qe9
FQBQSwMEFAACAAgAmhJfSWApVM9oAAAAxgAAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVh
ZHlTdGF0ZV9kdXJpbmdfcGxheWluZy1zdGRlcnIudHh0VVQJAAP0DBdYNQQXWHV4CwABBPUBAAAE
UAAAAPNPLlEwNlQwMLIyMrAyNVJILS82NDDXy8lPTsxRKCpJLkotyC8qycxLjzYzsTC2jFWwcUlN
Kk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ksyUlN0VEw5PKnvRUAUEsDBBQA
AgAIAJsSX0kb+yWW1QAAAMICAACEABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3NyY19yZWZsZWN0
c19hdHRyaWJ1dGVfbm90X3NvdXJjZV9lbGVtZW50cy1zdGRlcnIudHh0VVQJAAP1DBdYNgQXWHV4
CwABBPUBAAAEUAAAANWQP0/DMBDFdz7FjTCkduxWpN4qKtSBAUXtVDG49qWx6j/Bdvj8HAozGxLo
lvfTeye9uzMXSnC1kSsp+BscjsfXHt9nLBUGdz3UOn3j3tkeDboP7LFMKRZ80t5ftLkpyIthYaQ8
0eLDmq/hHnNOGZpWbGX3AAPpr5BizCej/ZhKVV3HORtr8Kxg0LE6UxiGC1qLtjEpVoyVBbRON+gx
EBU2pHR3/rk74X4O07OL2p/6l12kA0KquLOWKhYFehHQiscVp2lpjbIwZ/87JeU/frD8qw/+BFBL
AwQKAAAAAABqDV9JAAAAAAAAAAAAAAAAVQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay9V
VAkAAygEF1gEDxdYdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAGoNX0kAAAAAAAAAAAAAAABjABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvVVQJAAMoBBdYBA8XWHV4
CwABBPUBAAAEUAAAAFBLAwQKAAIAAACUEl9JGS+FqWMAAABjAAAAggAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L3RyYWNrLWFwaS10ZXh0dHJhY2tzLXN0ZGVyci50
eHRVVAkAA+cMF1goBBdYdXgLAAEE9QEAAARQAAAAT2N0IDMxIDAyOjIwOjM5IGV3czEwNy5sb2Nh
bCBydGNyZXBvcnRpbmdbNjQ5NjVdIDxEZWJ1Zz46IGluaXRXaXRoU2Vzc2lvbkluZm86IFhQQyBu
b3QgZW50aXRsZWQsIDEKUEsDBAoAAgAAAJsSX0lcJtZOYwAAAGMAAABjABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3ZpZGVvXzAwOC1zdGRlcnIudHh0VVQJAAP1DBdYNgQXWHV4CwABBPUBAAAEUAAA
AE9jdCAzMSAwMjoyMDo1MyBld3MxMDcubG9jYWwgcnRjcmVwb3J0aW5nWzY0ODM5XSA8RGVidWc+
OiBpbml0V2l0aFNlc3Npb25JbmZvOiBYUEMgbm90IGVudGl0bGVkLCAxClBLAwQKAAAAAACUEl9J
AAAAAAAAAAAAAAAAUgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9VVAkAA+cMF1gEDxdYdXgL
AAEE9QEAAARQAAAAUEsDBBQAAgAIAJQSX0lb2RE1vQAAAGgFAABmABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRp
by1lbGVtZW50L2F1ZGlvXzAwMS1zdGRlcnIudHh0VVQJAAPnDBdY5wwXWHV4CwABBPUBAAAEUAAA
AO3PsQ6CMBQF0N2v6KgDFIsImjgo0cTBSOJIDHmWF61WSh7VpH+vxkEGf0DDdu9078kDMRXBNJz4
0TjaM2XxCo2rZLFDm5GpkaxjjTpWoDWWDIlm3lDEScT6l5U6LqDB7eGM0i6JDBXr6g5alWCxHLC+
ajewjO/MjSSmIE/IU0O4wVLBJ3nDaCx8MQr4c9oa62pseKbBIfHn2DsV89c/XzKtKmRCTMJe/meI
WLQRqandTyiCJOkUnaJTfFE8AFBLAwQUAAIACACUEl9Jn6QCVd0AAADQAgAAbgAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90
aGUtYXVkaW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIudHh0VVQJAAPoDBdYKQQX
WHV4CwABBPUBAAAEUAAAANWQMU/EMAyFd36FRxjapKXietlOnNANDKg6phNDLvHRCCcpicvvJ1WZ
YUKCzc/v2frsk2xVK1Una9ndvcDheHwa8H3GzHBxrwfm6UvunR3QoPvAAfMUQ8Z7TXTW5k1BWg0L
Y8kXtfrQyQ6uMaWYoGra7W1/A5dSLyElBEWjaYyZVd9LKUb2JDJ6HdiZLNCf0Vq0lYmBMbDgESs9
WxcrJPRLJ8xEV6fv+Yvcz356cEHT8/C4C+UIHxl31hbMrECvBTTtpi476qaMlSzMiX4PdPO/Hp2T
+Qn/T/x54fwEUEsDBAoAAAAAAIISX0kAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvVVQJAAPDDBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQU
AAIACACCEl9JdfwGTmsAAAB6AAAAUwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
SW5kZXhlZERCL2Fib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1hY3R1YWwudHh0VVQJAAPD
DBdYwwwXWHV4CwABBPUBAAAEUAAAAA3IMQ7CMAwF0N2n+CNIDFyAsVIZaCWUHsBtrBIRHGS7nJ9M
T3o0sqm4YzBrhlO6P4Z5SecLPn15F9ygR61E05yey4QkHogXB1jBa7NA0R7SKVG44vjuxllUJEuG
Szh+Yl6aYuXtjWi4gugPUEsDBBQAAgAIAIISX0lNrV0e9QAAABECAABRABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVl
ZGVkLWRpZmYudHh0VVQJAAPDDBdYwwwXWHV4CwABBPUBAAAEUAAAAM2QwWrDMBBE7/6KPbbIqhpC
jwUnxNBQmpTYac5ra5uKypKRVo379xUml957KAwsDMObYaWUoN68TQNFtUFGVZ8adaLu2fD1rJOx
Wh3IEkZSFr99YskUWQaKyXJUZhh9YNLqsuzVhTo5WuR3H4Y5FtXWaZpIb9YKuxyUxmUZNmhlGs8B
NTkiTVrSNFKfQXc8cSGE+EfTsOeEdh5WVSAX5RLEonyAqiqgkK+rpoE2E4E/kAEdzDgwLhsEVyT8
QkIkjvBFIRrvoMP+E9jDPRTiCYOjGKEOwQe4abcv9f7Y3paQPxHxTPAILlmbi8Vu3x6Ou7+rLn4A
UEsDBBQAAgAIAIISX0niBstUSQAAAE8AAABVABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9JbmRleGVkREIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4
dFVUCQADwwwXWMMMF1h1eAsAAQT1AQAABFAAAAANyNEJgDAMBcD/TvFGcAU3EOoCqX1oqKTSROe3
XweXtjVn7PRAXBIQg5Q+AmozONFQufE+55BKIysrnOH4OFy7ocjREB0LUvoBUEsDBBQAAgAIAIIS
X0myn0hKFggAAOUbAABZABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLXByZXR0eS1kaWZmLmh0bWxVVAkAA8MM
F1jDDBdYdXgLAAEE9QEAAARQAAAAzVlrc+O2Ff3uX4GxJ3WaMUnJsja2vFYn68ck02aTiZ3mYwck
QRFrkFAA0JY37X/vxYsCKVJ2Z9qdrneXxPs+zr3ngn5fqootD96XBOfwqIjCKCuxkERdHTeqiM6P
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
oM1QB3Q6eUvkYsjkF53KJ8iteM1dXYNDznvd2m7SXlPvMSN/g0+sqYFcl99jAYbSb6YJLBS00K0Q
QZOHDfT1ww8/3v7068OfT8JeW9uEO6IrFDTrJmgw5hpfEvT/rUCfvcH6s/+TQP/yuDsb1/zjTw+/
/PoRPUBQB5Fsapza1Egu+b81Drt2/II6zv833u09DD8D35nf7v0bUEsDBAoAAAAAAH0NX0kAAAAA
AAAAAAAAAAAtABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
VVQJAANNBBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAChEl9JrEPJeq4AAABqAQAAVwAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWFjdGl2ZXNvdXJjZWJ1ZmZlcnMtc3RkZXJyLnR4dFVUCQAD/gwXWDsEF1h1eAsAAQT1AQAABFAA
AAC9jr0OgjAUhXef4r6AhLYEgU1lMbppdDAOF7hgk/6Qtmjw6a27i4vTOTnJl/PxlOVLli4Fg5RX
nFUpTwTPoLU6wXFUlFyo2cvwia01gUxIanqQsqOO/ZpnhSgrJkrGeHGD3WCsk2aIvAnOqpPU1KAn
8BSgmaFVMlLQUItTXNfnI+p4spn6nlwt/ahwPuBMDp7oAbuOOggWEPxs2ruzRr7ILfg3afG7dLEq
hfiX9BtQSwMEFAACAAgAohJfSXwO23y8AAAAiQMAAFgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hZGRzb3VyY2VidWZmZXItbW9kZS1z
dGRlcnIudHh0VVQJAAP/DBdYOwQXWHV4CwABBPUBAAAEUAAAANXSsQ6CMBAG4N2nuBeQ0FZA2VQW
o5tGB+NwwIFNSkvaosGnt+5OLup0l0v+/N9wPGbplMVTwSDmOWd5zKOEJVCZLsK+VxSdqNxK/xpr
oz1pHxV0I2X6LuzndDYXi5yJebYQ4gKbVhsrdRvy2lujDrKjEh2BIw/lCJWSIQUlVTiE6/K4xy6U
rIamIVtI1yscdziShTs6wLqmGrwBBDfq6mqNlg+yE/4WnX6E5t9FZx+h2VfRnP8jOv3tn34CUEsD
BBQAAgAIAKISX0nOFcJcngAAALUAAABkABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYXR0YWNoLXN0b3BzLWRlbGF5aW5nLWxvYWQtZXZl
bnQtc3RkZXJyLnR4dFVUCQAD/wwXWDwEF1h1eAsAAQT1AQAABFAAAAAVjbEOgjAURXe/4v0AhFIk
wKayGN00OhiH1/LAJqUlbdHUr7dO9+QkJ7csWJ2xIuMMirIrWVfwvKq2IO2c47Joyu8kTir852BN
IBPynt6k7TInftRVw9uO8ZaxsnnCcTLWKTOl3gRn9VXNJNATeAogIkitUgWCJK7J7m4XnNPJfh1H
cr3yi8Z4xkgOPugBh4EGCBYQfDTy5axRX3KbH1BLAwQUAAIACACiEl9Jgr8WbiIBAADcAgAATAAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LWF2dHJhY2tzLXN0ZGVyci50eHRVVAkAA/8MF1g8BBdYdXgLAAEE9QEAAARQAAAA1Y/dTsJAEIXv
eYp5AfqLBXqniwgREoJFL4wX290BNml36u4UU5/e1piYGB9Ar87J5JzMd5IozsZxNE5jiJI8ifMo
DbJpAorqQDZNhcETlveGBxFkGS0HC7xgRU3d++dsMkvneZzOpvM0fYH1yZIz9tT3LTuqClNjKT2C
R4ayA1WZvgUlKtn21+vHB1n3T27a4xHdwvimkt1GdujgTXqQWqMGJpDgO6vOjqx5RzdKfoXO/iP0
7G9Dhw/UOoVCqjOGghxuURv57cbxVZYEySQKd46YuGvQh0tzWhXFblDxSbGSVleoReuZ6sN+02cv
RqML1Bfmz4BwKBn36BuyHhdG8ZLcHfIeX1v0nIOgttJgiYf5F3QMh2I98G/X21sYMHIYfQBQSwME
FAACAAgAohJfSV34+YKeAAAAtQAAAEwAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1idWZmZXJlZC1zdGRlcnIudHh0VVQJAAP/DBdYPAQX
WHV4CwABBPUBAAAEUAAAABWNvQ6CMBRGd5/ivgANpYrAprIY3TQ6GIcLXLBJ/9IWDT69dfpOTnLy
FTkvM55ngkNeNAVvcsHKegO91QydU8Tu1J1k/M/BmkgmspbepKzTiR/luhJ1w0W1rYV4wnEy1ksz
pd5Eb9VVauowEASK0C3QK5kq6KjHOdnd7YI6nezncSTfyuAULmdcyMMHA+Aw0ADRAkJYTP/y1sgv
+dUPUEsDBBQAAgAIAKISX0mJAPUlxAAAAIkDAABKABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2xvc2VkLXN0ZGVyci50eHRVVAkAAwAN
F1g8BBdYdXgLAAEE9QEAAARQAAAA1dCxboMwEAbgvU9xLxCEbbCBrQ1LlGyp2qHqcMCFWDI2sk0i
+vR19y4srTLd6aRf9+nnOZM7lu8Eg5w3nDW5yCpZQO+mDOfZUPZO3VHHn7F3NpKNWUs3Mm6e0v4h
i0rUDROVZGXxCYfROq/tmPI2emde9UQdBoJAEboVeqNTCjrqcUnX57czTunJy3K5kG91mA2uJ1zJ
wx0D4DDQANEBQlhtf/XO6i/yT/xXtNyOLpVQ/4tWD9i0Yg/YtOLb0aoW/K/Q31BLAwQUAAIACACj
El9JgHaYhisBAADIAwAAXwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LWEtYml0cmF0ZS1zdGRlcnIudHh0
VVQJAAMCDRdYPgQXWHV4CwABBPUBAAAEUAAAAOWRzWrCQBDH7z7F3IwHzYcxpUIvpkp7CAjSk4is
uxNd3OyEyaatb98NYhUpfQFP8z38fzPrKJkm8TRKR3HyvIGSxb4QVpdk1HbZNofZyWEDjd5bYQwq
QOaXYZxFaQbBcaF/m+fMxNsPi981Sofq3Wr3KpwYQLBCSVZBv3Snug/CUQVoJbXWIaMa+AyEK2pZ
Yi7kAcOcGAtUWly9YTzJklGSRuGSyZFfhE24IK6EexNWGeQmLOhTY9hJ6pyFB6nQuou+kQSjLUKc
jaPe+gqdJo8I/fSA0BP/6bxYiao2OGvLEjn3oH713Gs5p+/oYwi88VxrsSN22u7BENWAgs0JVIvg
qGsk9tf0rNKP7oQ8bv4h3fq7V/hFfGz+gj7PnEsd4a3c+/gCOs6yce8HUEsDBBQAAgAIAKQSX0nH
YSwcLQEAAMgDAABmABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYXYtYXVkaW8tYml0cmF0ZS1zdGRlcnIu
dHh0VVQJAAMEDRdYQQQXWHV4CwABBPUBAAAEUAAAAOXQzW7CMAwA4DtP4dvgAP2hZBPSLnSg7VAJ
Ce2EEAqJCxFpXLnpNt5+qRBjQtNegFMcx7b8ZR2n0zSZxmKUZU8bKFnuC+lMSVZvl21zmJ08NtCY
vZPWogZkfh4mIs4E9I8L81M8Zybevjv8qlF51G/O+Bfp5QD6K1TkNDyU/lQ/gPRUATpFrfPIqAch
A9GKWlaYS3XAKCfGArWR12iYTEQ6SrM4WjJ5CoOwiRbElfSv0mmL3EQFfRiMupW6YBEgFTp/2W+k
wBqHkIhx3Ftf0RNxh2iR3SH6Md1AXqxkVVuctWWJnAdoGD0Pu5zTN/oE+uEIrrXcEXvj9mCJakDJ
9gS6RfDUFRKH3wxWFVp3Uh03/0i34d8r/CQ+Nn+hzz3np074e93b+wU6FmLc+wZQSwMEFAACAAgA
phJfSYO8J0+jAQAAfQQAAGYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlh
LXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC1hdi12aWRlby1iaXRyYXRlLXN0
ZGVyci50eHRVVAkAAwcNF1hDBBdYdXgLAAEE9QEAAARQAAAA5ZPPbtswDMbvfQremh7iv4niBdhh
TRqs2AIUyNodgiCgZToRIouGJLfznn4ygnZBMewFeiJFidT3+wBmSSrGaTLOU0iyeZbOkyISxQwk
NxG2raboJ5XflB/Cgo0n46MlPZPmtgn5VkyK/NM8zQuRTic7uD8YtsocQr/xlvUP1VCJjsCRh7IH
qVXogpIkdqH65WmDTfjktqtrskvlWo39d+zJwgs6wKqiCjwDguuNPFo26jfZq+2b1GI620Ft8bBG
o2rW1f6hc8fb3pMDpw4GtQ4TyNrP41QkEwGj00q9Pb6zlu3+0dCvlqSn6t4ov0SPNzDaUCCo4Lr2
fXsN6LkBMpK74ICl6iZUIN5wZyUtUB4pXrClNVUK/2bjdCqyKJsk8YNlz2EQuXjFtkH/FU2lybp4
zc+K4kHSkKwCyODqq75IglaGIBV5cgktph8QepZ/QOgi28FifbkkiwAaRt8FLefyO/oURiEEri2W
bP2wi5q5BUKre6g6GvaJBjuCm4FVhtYS5Wn3H9J98L2hF7Yn9y/oc8/5aiC8lPv+/AqaC5Ff/QFQ
SwMEFAACAAgApxJfSewPwkdOAQAAlAMAAF8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUt
c3RkZXJyLnR4dFVUCQADCQ0XWEUEF1h1eAsAAQT1AQAABFAAAADlkMFu2zAMhu97Ct7aHmJLtmuk
AXpokwUrtgAFsrWHoigYiU6EyaJByW29p69yWLd3yIk/CP7k/7FSup1pNas1qGpR6YXWhZo3YLgv
cBg8FY+0++7SsSw5JAqpWNEreR76rJ/aZl5fLXQ9b/Vl8wx3+8Diwj77QxL2P11PO4wEkRLsJjDe
ZRfsyOCYuzcPW+zzkdux60hWLg4epx84kcAbRkBryUJiQIhTMAfh4P6QfHn6jKrn7TN0gvsNBtex
ty/3YzzcTokiRLcP6H3eQCLXM92qpoXz32v3OfxVhOXlV6D3gUwiexdcWmHCCzjfUiawcNalaTgD
TNwDBcNj/oCQvcgdKLc8iqElmgOVSxbakHX4T830ZVsVVaPKe+HEeRHFcs3SY/qGwXqSWG741VF5
jHQU6wxy/OrffIUB7wKBbmv1P/RVfXrQlVKnAv0BUEsDBBQAAgAIAKgSX0kryDEoSAEAAJQDAABh
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3Vy
Y2UtY29uZmlnLWNoYW5nZS1tcDQtdi1mcmFtZXJhdGUtc3RkZXJyLnR4dFVUCQADCw0XWEcEF1h1
eAsAAQT1AQAABFAAAADlkM9OwzAMxu88hW+ww9qmHdVA4gAbEwgmIY0/B4SQl7hbRBpXTgqUpyc7
MHgHTv5k+bO/n8tC1WNVjCsFRXlaqlNVZWpSg+Y2w65zlD3R+sbGXZmxj+RjNqd3cty1ST/Xk2l1
kkzTWh1PXuB641ms3yS/j8Lu3ra0xkAQKMJ6AO1scsGaNPape/64wjYdueibhmRuQ+dwuMWBBD4w
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
dhIH8TgKN46YuGvQh3NzXBTFZtD8h2Ihra5Q561nqvfbVZ89G40uUBfMv4HcoWTcom/IepwZxXNy
T8hb/GjRcwY5tZUGSzzMP6Nj2BfLgX+9XD/CgJHBFf4K/x/4b1BLAwQUAAIACACqEl9JxKLKJiMB
AACHAgAASgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21l
ZGlhc291cmNlLXJlbW92ZS1zdGRlcnIudHh0VVQJAAMQDRdYTQQXWHV4CwABBPUBAAAEUAAAAOVP
zU7CQBC++xRzhAOl20KlJB60SGKUE0YPhJjpdlo2bHeaaSupT+8STCS+gqeZ+Wa+n4lClUxUOIkV
hNEyUkuVBoskBs11gE1jKXin/Nl055Kx68h1wYo+yXJT+36XzBZxulRxOk8W6R6eKsdiXOX5rhO2
r6amHFuCljrIB9DWeBbkpLH36P3bFmtv8tCXJcnKtI3F4QUHEjhhC1gUVEDHgNAOTh+Enfkiudld
okZhEKnbPWSba5UMrV2zPKI+XGBoTeU86KVI5E7ByJcxjHaYs3TnsJa5AUKxAxQ9nQ39BQuUwjVo
T81RH/djwA6mW+5FU+bVaZqx0IYKgx+lYE0nlmP7C07UPImCaBb+cC6r6dpU13H/zoEGaxxBnCTx
/3n0G1BLAwQUAAIACACqEl9JTJYq2MkAAAA+BAAAVAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJjZWJ1ZmZlcmxpc3Qtc3RkZXJy
LnR4dFVUCQADEA0XWE0EF1h1eAsAAQT1AQAABFAAAADVkrtuwzAMRfd+BX/Ahh5+xN7SeAmSLUE7
FBlom3YFyJIhKQncr6+6d2kWNxMJAhf3gDiC8SLhLJEcmKgFrwVLhSigs1OK86wpfaf2oMLP2FkT
yIS0oRtpO09x/yiyjaxqLqu8KvML7EdjnTJjzJvgrD6riVr0BJ4CtAt0WsUUtNThNV63byecYsnr
dRjINcrPGpcjLuTgjh6w76mHYAHBL6b7dNaoL3Iv4jdoyf4MvclLWa4LnT30abEudPWEemTZE+qR
/3OnvwFQSwMECgAAAAAAVQ1fSQAAAAAAAAAAAAAAABoAHABpbXBvcnRlZC93M2MvV2ViQ3J5cHRv
QVBJL1VUCQADAQQXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAXA1fSQAAAAAAAAAAAAAA
ACYAHABpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L1VUCQADEAQXWAQPF1h1
eAsAAQT1AQAABFAAAABQSwMEFAACAAgAdxJfSeGChuhJAAAAYAwAAD4AHABpbXBvcnRlZC93M2Mv
V2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXMtc3RkZXJyLnR4dFVUCQADsgwX
WAEEF1h1eAsAAQT1AQAABFAAAADtysEJgDAQRcG7VfwCFATTQSpZcBFREkk2B7u3Ayt4c55cx72r
1NDhxZuFy3T5q8fONquHxeha0ramKXO5XC6Xy+VyuVzuz/0AUEsDBBQAAgAIAIASX0mPNBpwRAAA
AKAJAABHABwAaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1
cmVzX1JTQS1PQUVQLXN0ZGVyci50eHRVVAkAA8AMF1gMBBdYdXgLAAEE9QEAAARQAAAAc84vzUlR
yMsvUUhPzUstSixJVUhUyE6tVChIzCzSUSguSSwpLVbQNTE2MOFyHlU7qnZU7ajaUbWjakfVjqod
VUtztQBQSwMEFAACAAgAhBJfSVQCybI2AAAAwAIAAFAAHABpbXBvcnRlZC93M2MvV2ViQ3J5cHRv
QVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBU1NBLVBLQ1MxLXYxXzUtc3RkZXJyLnR4
dFVUCQADyAwXWBAEF1h1eAsAAQT1AQAABFAAAABzzi/NSVHIyy9RSE/NSy1KLElVSFTITq1UKEjM
LNJRKC5JLCktVtA1MTYw4XIeVTuqdpCpBQBQSwMECgAAAAAAqhJfSQAAAAAAAAAAAAAAAAoAHABp
bnNwZWN0b3IvVVQJAAMQDRdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAACqEl9JAAAAAAAA
AAAAAAAAGgAcAGluc3BlY3Rvci9zY3JpcHQtcHJvZmlsZXIvVVQJAAMQDRdYBA8XWHV4CwABBPUB
AAAEUAAAAFBLAwQUAAIACACqEl9JwUgQnbAAAABqAQAAMwAcAGluc3BlY3Rvci9zY3JpcHQtcHJv
ZmlsZXIvZXZlbnQtdHlwZS1BUEktc3RkZXJyLnR4dFVUCQADEA0XWBANF1h1eAsAAQT1AQAABFAA
AAC9jr0OgjAUhXef4r6ADW0FhM2fxeim0cE4XOCCTUpL2qLBp7fuLi5O5+QkX84nEp7NeTKXHBJR
Cl6KhOVpAbXtGQ6DJnahaq/CJzbWBDKBbelB2g597NdssZRFyeUyzWV+g11nrFOmi7wJzuqT6qlC
T+ApQDVBrVWkoKIax7iuzkfs48l6bFtyW+UHjdMBJ3LwRA/YNNRAsIDgJ1PfnTXqRW4mvklni9+l
80IW/5J+A1BLAwQKAAAAAAB9DV9JAAAAAAAAAAAAAAAAEQAcAGluc3BlY3Rvci9zdHlsZXMvVVQJ
AANOBBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAB9DV9JpIjKla4AAABqAQAANAAcAGlu
c3BlY3Rvci9zdHlsZXMvYmFja2dyb3VuZC1wYXJzaW5nLWNyYXNoLXN0ZGVyci50eHRVVAkAA04E
F1hOBBdYdXgLAAEE9QEAAARQAAAAvY69DoIwFIV3n+K+AKQ/CJFNZTG6aXQwDhe4YJPSkrZo8Omt
u4uL0zk5yZfzCcbzhLNEcmC8zGS5LNJccGjskOI4akovVO9V+MTWmkAmpBU9SNtxiP2aFUWelVwy
JgS/wa431inTR94EZ/VJDVSjJ/AUoJ6h0SpSUFODU1zX5yMO8WQzdR25SvlR43zAmRw80QO2LbUQ
LCD42TR3Z416kVuIr9L5z9KcSbb6l/QbUEsDBAoAAAAAAIANX0kAAAAAAAAAAAAAAAAHABwAanF1
ZXJ5L1VUCQADTwQXWAQPF1h1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAgA1fSdKxLCdqAAAAbAAA
ABwAHABqcXVlcnkvYXR0cmlidXRlcy1zdGRlcnIudHh0VVQJAANPBBdYTwQXWHV4CwABBPUBAAAE
UAAAADMyMDTTNTTQNTZUMDC0MjG2MrXQM7Q0VEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6Lqll
qTn5BblAdrSJubmFoZWhkbmlmZllrIJfsFNpSUl+nmNeZm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwME
CgAAAAAA+RJfSQAAAAAAAAAAAAAAAAYAHABtZWRpYS9VVAkAA6UNF1gEDxdYdXgLAAEE9QEAAARQ
AAAAUEsDBBQAAgAIALMSX0kl7DD/fAAAAK4AAAAfABwAbWVkaWEvYXVkaW8tZGF0YS11cmwtc3Rk
ZXJyLnR4dFVUCQADIg0XWFsEF1h1eAsAAQT1AQAABFAAAACVzTEKwkAQQNE+p5gDyJJNjIZFbLSx
imChIBZxnawDy4zsjHh94xFsf/H+EA1aD3UTGh/aHvCjvl67LHHMUCwWfEkx4nRdLfuuu8HmwJNs
A2RJac6gNhZT51w1/E3t8f5Os0VMdiZ7nlCVhH+HAJfjDlgMkI0s42MBvvoCUEsDBAoAAAAAALUS
X0kAAAAAAAAAAAAAAAAKABwAbWVkaWEvbWFjL1VUCQADJg0XWAQPF1h1eAsAAQT1AQAABFAAAABQ
SwMEFAACAAgAtRJfSXMO852/AAAA8gYAADMAHABtZWRpYS9tYWMvY29udHJvbHMtcGFuZWwtbm90
LWNsaXBwZWQtb3V0LXN0ZGVyci50eHRVVAkAAyYNF1gmDRdYdXgLAAEE9QEAAARQAAAA7c8xC8Iw
FATg3V+RUQdNG1utBQctCg6i0FGkPNOHRmNTXqOQf2/FQQdXByHb3XT37QKRijCNxEDE4z1TFq/Q
uEoWOdotmRrJOtaoYwVaY8mQaNoPxTiJWfeyVMc5NLg5nFHaBZGhYlXdQasSLJY91lWfDSzjubmR
xAzkCXlmCNdYKninfhiP2iNRwNtpa6yrseFbDQ6Jt2OvVMye/waSaVUhE2Iy7Ow8wiN+ghiFn4jM
1O4vFEGSeIVXeMUXxQNQSwMECgAAAAAAiw1fSQAAAAAAAAAAAAAAABMAHABtZWRpYS9tZWRpYS1z
b3VyY2UvVVQJAANmBBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAC2El9J1YTVWMYAAAD1
AAAAPgAcAG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWJvcnQtcmVzZXRzLXBhcnNl
ci1zdGRlcnIudHh0VVQJAAMnDRdYYAQXWHV4CwABBPUBAAAEUAAAAEWPQWvCQBCF7/0Vc1MPZjcx
piD0UjW0h4AgPZUiy+5El25mZHZS6r9vPLS9fTwej++922pTlZt6Vdj14wf04s6do9hzCqfDmC/P
N8UMOZ7JpYQBUORpWTa2bmD+2ca/8l6E5fRG+H1FrxheKerOqVvA/IieKcCs19t1Bk55ACTPIykK
hsWUgDnyKB63zl/QbFmwwxDdPy3LdVMVVW3NQVh5GsJsWpbB6YujkFCy6fgrorkr3aGdjgxI+utX
eEiREMpmZR9+AFBLAwQUAAIACAC2El9JAAwoRJ8AAAC1AAAAOgAcAG1lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLXN0ZGVyci50eHRVVAkAAycNF1hgBBdYdXgL
AAEE9QEAAARQAAAAFY29DoIwFEZ3n+K+AIQCAWFTWYxuGh2Mw225YJP+kLZo6tNbp+/kJCdfWbAm
Y0VWMSjKvmR9XeVF24CwOsdlUZTfiZ9k+M/BmkAm5AO9SdlFJ340ddtte1Z1TdvVTzjOxjpp5tSb
4Ky6Sk0cPYGnADyCUDJVwEngmuzudkGdTvbrNJEbpF8UxjNGcvBBDziONEKwgOCjES9njfyS2/wA
UEsDBBQAAgAIALcSX0nHJMjdnwAAALUAAAA3ABwAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS1yZW1vdmUtY3Jhc2gtc3RkZXJyLnR4dFVUCQADKQ0XWGIEF1h1eAsAAQT1AQAABFAAAAAV
jb0OwiAURnef4r6ApNAfbTe1i9FNo4NxuLS3lYRCA1SDTy9O38lJTj6R8WrNs3XOIRON4E1RMlFy
6OzEcJ41sTvJkwr/OVgTyATW0pu0nafEj6rY1NuG57WohHjCcTTWKTOm3gRn9VVNJNETeAogI3Ra
pQokdbgku7tdcEon+2UYyLXKzxrjGSM5+KAH7HvqIVhA8NF0L2eN+pJb/QBQSwMEFAACAAgAtxJf
SbpC3NufAAAAtQAAAEAAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNhbXBsZS13
cm9uZy10cmFjay1pZC1zdGRlcnIudHh0VVQJAAMpDRdYYgQXWHV4CwABBPUBAAAEUAAAABWNvQ7C
IBRGd5/ivoAE6I+2m9rF6KbRwTjctreVhAIBqqlPL07fyUlOPslFuRZ8nQngspaizgtWyBw6OzF0
ThO7U3tS8T8HayKZyBp6k7ZuSvwo8021rUVWSV7mTziOxnplxtSb6K2+qolaDASBIrQLdFqlClrq
cE52d7vglE728zCQb1RwGpczLuThgwGw76mHaAEhLKZ7eWvUl/zqB1BLAwQUAAIACAC3El9J5Sq9
8DwBAACqAQAAPAAcAG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc2Vlay1kZXRhY2gt
Y3Jhc2gtc3RkZXJyLnR4dFVUCQADKg0XWGIEF1h1eAsAAQT1AQAABFAAAABNUMtOAzEMvPMVvkEP
3Ue6LFCJA22pQFAJqTwOCCE38bYR2XjlZIHl60kPPE4ejTzjGT8XaqrKaXWcnariBRrB7Qq9bdiZ
17s+7GZDpADBbj06RwZI5Hxc1kVVw9Hb0v4uX4qwvD54+uxIRzLX3sYFRhzB0Zo0ewOHTRy6Q8DI
LZDX3PtIQmaUGMjX3IumOeod5XMWWpGx+IfG5XGtMlUV+Z1w5GREIV+ytBiv0BtHEvIVv1vK95H2
YJmKtOTjT75Mg7OeoKwnxYEqynpcFuNJCf/qV6C5zbDrHGVPtLmxcT/mnHL6mC3onRx3e8/nujo5
O52WkzNVK/UC11vPYv026X0Udve2pQ0GgkARNgNoZ5MKNqSxT+zF4xrbdGTWNw3JwobO4XCLAwl8
YAA0Jv05MiCEweudsLdfJAffUEsDBBQAAgAIALkSX0ntalmangAAALUAAAA1ABwAbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS1zdHBwLWNyYXNoLXN0ZGVyci50eHRVVAkAAy0NF1hmBBdY
dXgLAAEE9QEAAARQAAAAFY29DoIwFEZ3n+K+AKQFUoFNZTG6aXQwDhe4YJP+kLZo6tNbp+/kJCdf
wbjIOMtKDqxoC95WTV4zAYPVOS6LovxO/UmG/xysCWRC3tGblF104oeotk3d8rIpmKifcJyNddLM
qTfBWXWVmnr0BJ4C9BEGJVMFPQ24Jru7XVCnk/06TeQ66ReF8YyRHHzQA44jjRAsIPhohpezRn7J
bX5QSwMECgAAAAAA+RJfSQAAAAAAAAAAAAAAABwAHABtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvVVQJAAOlDRdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAD5El9JAAAAAAAAAAAAAAAA
KwAcAG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy92b2x1bWUtc3VwcG9ydC9VVAkAA6UNF1gE
DxdYdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAPkSX0nveXH+fQAAAIcAAABKABwAbWVkaWEvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zdXBwb3J0L3ZvbHVtZS1zdXBwb3J0LWNsaWNrLWFj
dHVhbC50eHRVVAkAA6UNF1ilDRdYdXgLAAEE9QEAAARQAAAAJca9CsIwFIbhvVfxQRcdzFLo4CY2
haC0xfozp81pCaQ5QY6Kd6/i8j5v3pkKl+ak+65tenPV2GDkRdmUAqkbDQcvP/YchaKoip4UOC3f
xyp5h7IsimKd1Ttz3OLsF3Lgh+Blvfg4Y+I7Iouf3hVHgjAGwmhDIJdluW7rfz5QSwMEFAACAAgA
+RJfSfwuTx12AQAAqwIAAEgAHABtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXN1
cHBvcnQvdm9sdW1lLXN1cHBvcnQtY2xpY2stZGlmZi50eHRVVAkAA6UNF1ilDRdYdXgLAAEE9QEA
AARQAAAAxZHNTsMwDMfvfQprXEBdGqYJDpw2tiJNfKxaC5yz1GURblM1zsbenqwrB3gBFMmJE9v/
nx0hBMg3S75GJ5eKlUzfc/mO20fDw3bvDZVyg4TKoSR1tJ4Fo2PRofPETtZYGiVrW2LXiN4R2jbc
WXJy39cWzret7fiPKzQZ/Snwq0XNWCb8xVEcx/9PpDR7RT3PbAZiMp5cQzwZ38BsFokiKJnmA3iH
cAbNz8mwxZ3aG9vBYYcN9KV+As8y4MgEpiSKL7LVEl5fNmmerV/y1VsKArStE9W2hMm5z9O2CNjY
cLLEPZJt63CGy9aUcHs7nU6vovhhvnq6g8KELiHMAQ7K9HRVwGgsm+q4tA0C20AHWhFhGUEk1g04
rzU6N4YwPzgYInCIoILtDDqwFYyyeZ6PIPyEUx8YIitLZA9BaXuEUZHmBSzWz9lTWqSjJBKndcqA
fuLJ0LJxcJ3cTIanQbTyRMdMdS7UCgHceTxl/yoZLuKLdP0w2G9QSwMEFAACAAgA+RJfSXcclDej
AAAA5AAAAEwAHABtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXN1cHBvcnQvdm9s
dW1lLXN1cHBvcnQtY2xpY2stZXhwZWN0ZWQudHh0VVQJAAOlDRdYpQ0XWHV4CwABBPUBAAAEUAAA
AFXNsQ6CMBgE4L1PcWE2RAcfwBg2DSQl7gV+oPGHkv4UwttbFQeXW+7LXUky27HD3BMejsNAOkyT
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
aA4+LcK3x4mUuZj2evgL3vhLzpewKKdCha4e6zEaiN6XP1ak2PYG/sg/ty8+tJb+F3F8Bfvq/a5Q
feeQR8RTPiRrkPsbeFo58+3osrIEQNkPhQGPtvAD+QC4sRBvT91NQH0vTAZXvd/An8BZvRsscW/+
+6L3Own+QaX9eb+iLOr9CnUXC9KDSAFzepIAw8L1fcWk6KUkoriXAqoi8/SLp+K/4Ez0HvXeno3y
xqsXApk9eNDerDDz5UYC6EEda+VT0en+jL7Cd42rqz0yt5eGiLrXoPonoZ0c8E3mBPU3gV2jcXo1
AAPD/FVNClK/KvNDFoh81ioINfz06h5sp+JN0YUxvbsYBSSBUIQb0DohahEYxwkawyEBWQMNu90c
nAxauZ9uI0AqPm0BK3RQ/QOq8WfYSat/cvfhBv3z06/zxd3nT4sPv82Rp66BPs5zRnwTc+rn2lCo
f0MeCeO5pvsfcyCNi4vhcPjXpgn+ROXOu5W7fffh4xTdU8gCRTtojan2tbryZlzSeHsDLKuKRQBF
AniNRE/6ssI/p1d2el/p56WDSODq+XQwPGmr82eYadhtpj9V5xemgOELUMDnDOp+GEJPcIaAT6Hm
MwZdBIHGWbWCRCAeox/+WHE5u3u3WJgnZPtKWBNzdSOCGAu2Vux+vrhH159/ufs4v5+bIf/bUuSZ
6o9eQP1XATb+XoFdvAAwFQVIl1bfVgIq1O1r8CqIf34pxDbI4xVj2zv1R5WRwi2LFXkV3JffawhM
XqJtqGb4q6Ac9F/Bft9dazI60JrMP9/+H/uK8bch+5ai2fjRdwJotvXfKPgfUEsDBBQAAgAIAPkS
X0kH9NufWQAAAF4AAABKABwAbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3ZvbHVtZS1zdXBw
b3J0L3ZvbHVtZS1zdXBwb3J0LWNsaWNrLXN0ZGVyci50eHRVVAkAA6UNF1ilDRdYdXgLAAEE9QEA
AARQAAAAFcY7CoBADAXA3lM8sJVtFuys/DQWltZ+IgTcJGgUvL1azYwTO1Qg6rw9jQrBOdEKvbyA
HbrQeWLRFCazncJIc8/+U6s4iYeGbtrV0ncYr6hQljHGvB267AVQSwMEFAACAAgAxxJfSRGz/tpo
AAAAxgAAACgAHABtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0VVQJAANF
DRdYfwQXWHV4CwABBPUBAAAEUAAAAPNPLlEwNlQwMLIyMrIyNFZILS82NDDXy8lPTsxRKCpJLkot
yC8qycxLjzYzsTA1jVWwcUlNKk23s1LIzMssCc8syQhOLS7OzM/zzEvLt1KICHBWyMsvUUjNK8ks
yUlN0VEw5PKnvRUAUEsDBAoAAAAAANsNX0kAAAAAAAAAAAAAAAAMABwAbWVkaWEvdHJhY2svVVQJ
AAP9BBdYBA8XWHV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAALE19Jx7TUzn4AAACHAAAAKgAcAG1l
ZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtYWN0dWFsLnR4dFVUCQADxg0XWPwEF1h1eAsA
AQT1AQAABFAAAAAlxrsKwkAQRuE+T/FDGi1MIaJiJ+4GgpIE46VOshMZ2OwsMiq+vYrN+U5aFwbn
8mibuiqb4mIxQy9j1sboKbtSt2f9sZOgFDQz9CQvcfw+JpEdlov1fDVN8m1x2ODEIznIQ/FqWTnc
MMgdQZSHt5FAUEFH6FvvySVJaqv8nw9QSwMEFAACAAgACxNfSQH1T1cBAgAAwwMAACgAHABtZWRp
YS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWRpZmYudHh0VVQJAAPGDRdYxg0XWHV4CwABBPUB
AAAEUAAAALVSXWvbQBB8169YyIOlyCfFoe4XGNxaMpgU2dhKUih9OEsb6fDpTuhWif3ve5Id46al
bwWxK27nZmdnjzEG4YOWbYUmjDjxMH7chI+4vRN0Sl9bIfNwjRK5wVDyg26JERpiDZpWkgkrzAUP
qeHZ7hiZUGzLVc4MHSQy3NeYEeYB7cnxff//d+QZtVz2/aZTYKPh6BP4o+EYplPHv1otIrhP1vFm
tUw2i4cYGGS6CnhdSwyOEro004pQURDhM0pdV/Yf3Frk8P7dx9sPnuPPvyy+fYZUWDVgJcILFyRU
AU+6AaVJPB0irRBIwxYh41Ji7oDDUjsJUMkJerFd3dYga9GAMNDJEJYx001jbZOHwGHxQ5ykbsZV
bd2gstFtUXoOc9j1NcxKzHYglO3NJZx8gN4V24Bb3xy2vk9cobpC2p2PYALPIkcdEO6pPzI/bn5a
xvj7Kp6lcQTu23ogURVUwmQCg9HAg+XdJfqSPJBcFS0vsMei+jd4J6zaDpjxmoRW5gR/KzmodG4Z
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
0mZ/yupW83rKT6JYlcyYfHZwS6WYstr9OxPcMamulFE+NrHSY1eSVJbez/JB+f8cSL2WT2ScgUiv
WuuPoJs4W4BvlA//mXprsz/QvjNSv3tHJk+CrX53lWFXn08OhVqpdYjQG2gi3yCWMq3NUj4AYFYV
rvrXYP3QyY8RfrXqi+UpAthULgm3jpaFCChoh3z5eKQNTmH/50oU9p8qUfizlSjO83Uptaudr5Uo
uEn/Tfpv0n+T/pv036T/Jv3/aumfNOm/Sf9N+m/Sf5P+m/TfpP9fLf3TJv036b9J/036b9J/k/6b
9P+rpX+rSf9N+m/Sf5P+m/TfpP8m/f9q6d9u0n+T/pv036T/Jv036b9J/79a+mdN+m/Sf5P+m/Tf
pP8m/Tfp/1dL/7xJ/036b9J/k/6b9N+k/yb9/2Lp39Sj5au4vqTFrXzP2fKdXLr6qny9ZVMjTIuj
jqbreXDf2bwZC6EoxJQ4oKY8XA9IthYRIU9iORBVV6x+QB15fGggkEzidI8JCiWtefoIk3C2PxCZ
csWBgcCUb+vK+QH20rJy5xERkVldETIuBEuIHEDVgUT9OJGUBOEtWgGEZ2AvB8jWACcBhB/FhB4Q
Ua2wdmDFAiVcMkln1ZH1q630PBnviIhMbMrv0c1x59D7zXRdO8tu0igY697V+/IFaYhrfp5nuXpp
2vKdaeulVBvKb6G5WEzC1Yv4ENU0rZtOg/xBP50EN2Le0VbvQbtfvwJNN/TtiyBs+PQX1rbUi/oM
ffOmPv3E8wnyXds0aJ9YBrE9bnDcJQalPqc9n1s+5q9+vpeobYlu4QP6sCzYfP0lrF++X3Bwm06W
Pt4yQXLfxC71PWw4fbNvEMq50bX7faNv9mwCWkGua9WVvL+6OD8+xHgbto32YEeQl5OE7W/jwb0D
S+xjnzuGiz3fIBxRw/V9ZCDuUtdzLNrrkroSlGNVoBE/YG9RgB2p3z2gZ+ImiB4OwnVRl7t9QIpt
H0yNOX2D97lnYMyJ1cVd3uPdx+GWhJ8CXc7Ygh45yR70mIdgGk+9N+gQeNpl2O2SrsGdvg3WQqnB
wUMMihzTQz2KrZ55CPw26cPwt+dUBYgFdfYESLBj7vv6o8hN30XcMx3DwS4gN31qdPvUMrjn9Cnp
mw71zUfU/jjk5WAFK2IRYrtY4SJNpEG/LLdoKObF9WI6FfnpVL7lR8TdhXyJRemRDup7rmX2DNJl
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
bKQhLw8abse3Ma5nDzj/FjJxCtMpd9RkYgGKvB7Zm3PFebTXeVvZ9xVwcmeKzOFVnz+ftkv76KbO
67mpXn5DuiQfDxlbdqY9/oPOp1LeAvM14U7UpINNXv9MDd/rhtnxU36v+35pv9E3nXJHuYyHmDDZ
O9WYX0/H7ANOqWvyduJU89hGz+IUbV7GN0xWwTwNpRFN/h5M/BuhT5U4H9fBvBlWNeXvWz9mzqca
87K3zcQ28uczcZ/W+TL0Fjpl37jt3zPbv1Vs/2opd7w+zcddePwNO68RatDk4wfjwPegirATk9dZ
nrb6KTZo8jbFVPdL+5p8jLwOHttmqRt9fEfxt9m+wbuoCbtu8vdgHNhb4G1Jqry/MDbD0u4l+Tbk
/WAeG4T9qKkwppry59NzPccoOqq8LhnrPmOL5WM1U1Uv9QLJRCWOxOLXdTfEva7ycfKRxdKE/VYp
sQAeTwS54+OwJm/HjwO7byPW/ZMtpsQTq2oZt6S3nY9bDsy2NA4e5WOD+bn1Q9o/rTrF12zSb7sa
8r/T8W8YLUBl8neH22I8VlMpcWXub3Oe12rMv9Mutwd5u8pT+brzGWJHlyr/5qgjHv2OQeVAbyH/
trl/yjulGCVmN7K3DbqoDva14m/zuXUx4V3l/Z9h4nvNemCYJu9nsXhiDXGxevR2lZIv4fFrEynC
qkbJz7G30PSxtr/Kx2pGZoeIxp6VIuN5PJGnLKsh/zsdt6vAJicbqRqV+/bk03r7TdELJi0PTK/4
9TzfiDlZkvFKborHE0XcslfeQrXUP6RPO8VOZN+QQ0N6Lm8jNSl5IJtb+sLFbFp6iIB8ofeekuT5
xHbH0uxMKjmgKtRI7GeoaQVIj0/nl2pTOrqlAajOonEEAghDrUi9M8g856jdPW7380dcJfES737s
jvnBBoafd4KuTg62KKLZ7nbzTVkswxdwl5l3vsKGOfkRGNqBO7bLeXkIqQJl9JPw94ISZXz3V+Ev
DLsYJqZbHSum/RzoGfP4oo6s+LDZfWSi2349H/bUFmTP9hy6zOaXxK7BNESXgu+xW15+CPOHDt8X
TRe2nD0kgjnmmJTjlUW2S4VNuZX9iiR6m2OOSsTME6t/6KdAkULQVl+z9Nydg/2I1iOb94btQmEQ
K4rDPo9EvKKV3GHRgFx1PxUQ50ZDnEsSVUrDARceG4DaOCgk/R3vyRi5t3kxt2x/oXCUdqIHII0U
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
vmQOxBKLItU4pQro380nK5b4lgWCHTcMZwugGQhkLuqCwd57iy2AWhQHzdu2h9ECqFm2F5ok8wXQ
FAUyGFbTKQpshYAWcKxf95Z1zxdA5xiU1H5/YYOyAiJBPEMCND8gGDbdlt6yt+8j9OkoDl7MtoJb
iD5tuK4Pu9ezr0c+foG02d6/DpE342EsSyGy+/zvkO5kiorIu6jFePC80Xvqd44J13XrN6EHh8Ck
yXxq+pNSHYITzZGJgeZih1Ygg42XEKfvCA+PnAxOiayv+XrkEHPSHD9JKguN6whhfOw75ZCokbb0
5e4Ze9QRMB0Qodehrwv4r9cvl7f774+/1CK1j+v7x93j8+vPj7v3t/vhesvG/RaujYz179/f714v
3653bz+frnf3b5f37+ISbov6RHYbfnq5PGyTmQoy61/crViOt1hmZqwvf5Z31B4tcvf+88sN/OXn
2/317vnn09Pdj8cf1zIaCixv2vJhv83+uDw+j5cC+18X1G3B1kv7l8eH68vtCO7ayaA13L5GiSNX
hvrvyy+X9/u3x9ePu59vT3ePX98uP07go/a1SiynqpT7y/336931t9fHt+sDJRxYaQ1+2jWkFmIN
MdWjeHz+693b9YmdwZfr15fb391OCbCcafwS9/eUyrA/vkF2ddtbTGRT5wvsx+XLjVe/XO7/+u3t
5eczQsAznl9DIWWRh5+vT4/3l48b569begfIxH0d26r8GnG+v12/Aix0I0MbFXN5eLkd9uXj4+3x
y88bGu8fvz/djuv55eE6Y6SCU2oEKpaFyE5hnvfrB9hQaij5Pd2oovT4fNvTH8cnN/1S8lN8w2dR
Mo8/Xl/eEEaBEWn1Sgr4bz+eKjbv36+3Tf0mkZkckt8TcwQyf3l5+P0cmRulyPDETStdf7x+/F7p
fffw8gNsTzNO9GR7BZUT3Oxy4+Ylx2IVicdvzzdBvJ3Tqj4ev97VnxbteX1eZAWt6Rpeem91UsXs
4ZyMBbaztUPsRqBfHz++3/18vj4vkeqHRbcBXAwXeSJl696wgSNbacnLBfylTPW4e7h8XAC8PSiL
Yi6uP17efi8Q9ce71+X69vNG8/fHHz+fSrMpMetCkwymkkGvt3XvX54/rs8fXx+fPq77ZMMvTy/3
f727fL391Y10N9P0fn1+uGmo//Xztg3RV7DkStBeYy5PTy+/3v24Pjxebrx5/3PpjCW7G/RyWW4l
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
GAAYAAAAAAABAAAApIF8JAAAX3dwdF9jZXJ0cy9sb2NhbGhvc3Qua2V5VVQFAANhAxdYdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAAQ1fSWsuE4bkCQAAOxIAABgAGAAAAAAAAQAAAKSB1ykAAF93
cHRfY2VydHMvbG9jYWxob3N0LnBlbVVUBQADYQMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAA
AJQTX0n84R9jBgAAAAYAAAARABgAAAAAAAEAAACkgQ00AABfd3B0X2NlcnRzL3NlcmlhbFVUBQAD
yA4XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAAANX0ns0cP2BwAAAAcAAAAVABgAAAAAAAEA
AACkgV40AABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUAA2ADF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACADmEl9JmlvuH/8AAwCVIR0ADgAYAAAAAAABAAAApIG0NAAAYWNjZXNzX2xvZy50eHRV
VAUAA38NF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAACDV9JAAAAAAAAAAAAAAAADgAYAAAA
AAAAABAA7UH7NQMAYWNjZXNzaWJpbGl0eS9VVAUAA2QDF1h1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAAWEl9J9Rx/ZmkAAABsAAAALgAYAAAAAAABAAAApIFDNgMAYWNjZXNzaWJpbGl0eS9hcmlh
LWNoZWNrYm94LWNoZWNrZWQtc3RkZXJyLnR4dFVUBQAD+wsXWHV4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAAINX0kAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQRQ3AwBhY2Nlc3NpYmlsaXR5L21h
Yy9VVAUAA2QDF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAXEl9J4k2doGoAAABsAAAAYQAY
AAAAAAABAAAApIFgNwMAYWNjZXNzaWJpbGl0eS9tYWMvY2hlY2tib3gtcG9zdHMtdmFsdWUtY2hh
bmdlLW5vdGlmaWNhdGlvbi1hZnRlci1hY3RpdmF0aW9uLXdpdGgtc3BhY2Utc3RkZXJyLnR4dFVU
BQAD/gsXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAMkNX0nnpIPxP0oAAFkUAQA4ABgAAAAA
AAEAAACkgWU4AwBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtNDc3NjAt
c2FtcGxlLnR4dFVUBQAD2gQXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMTX0lpyzNFLU8A
AHtXAQA7ABgAAAAAAAEAAACkgRaDAwBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxv
cG1lbnQtNjQ3OTUtY3Jhc2gtbG9nLnR4dFVUBQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAJkSX0lkxLEQSEAAAGMcAQA4ABgAAAAAAAEAAACkgbjSAwBjb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuRGV2ZWxvcG1lbnQtNjQ4MDItc2FtcGxlLnR4dFVUBQAD8gwXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAPgSX0noqK6Cm0EAANUhAQA4ABgAAAAAAAEAAACkgXITBABjb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtNjQ4Mjctc2FtcGxlLnR4dFVUBQADow0X
WHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJkSX0nl1jVAHDwAAB7ZAAA4ABgAAAAAAAEAAACk
gX9VBABjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtNjQ4ODMtc2FtcGxl
LnR4dFVUBQAD8QwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMTX0l+9PggyD4AAJQSAQA7
ABgAAAAAAAEAAACkgQ2SBABjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQt
NjUwMDAtY3Jhc2gtbG9nLnR4dFVUBQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMT
X0l/4aJ11T8AALIWAQA7ABgAAAAAAAEAAACkgUrRBABjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuRGV2ZWxvcG1lbnQtNjU4MDQtY3Jhc2gtbG9nLnR4dFVUBQADAg8XWHV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAOISX0m8077YyUgAAEyBAQA4ABgAAAAAAAEAAACkgZQRBQBjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtNjYzMzMtc2FtcGxlLnR4dFVUBQADdw0XWHV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMTX0mpUqrFiz8AALEYAQA7ABgAAAAAAAEAAACkgc9a
BQBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtNjY0NDgtY3Jhc2gtbG9n
LnR4dFVUBQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMTX0lvny9V3T8AAI0WAQA7
ABgAAAAAAAEAAACkgc+aBQBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQt
NjY0NTMtY3Jhc2gtbG9nLnR4dFVUBQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMT
X0mV11+N0T8AAIsWAQA7ABgAAAAAAAEAAACkgSHbBQBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuRGV2ZWxvcG1lbnQtNjY0NTYtY3Jhc2gtbG9nLnR4dFVUBQADAg8XWHV4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAAsNX0kAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQWcbBgBjb21wb3NpdGlu
Zy9VVAUAA3UDF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAGDV9JAAAAAAAAAAAAAAAAFQAY
AAAAAAAAABAA7UGtGwYAY29tcG9zaXRpbmcvb3ZlcmZsb3cvVVQFAANsAxdYdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAGhJfSeftYC1qAAAAbAAAAD0AGAAAAAAAAQAAAKSB/BsGAGNvbXBvc2l0
aW5nL292ZXJmbG93L3RoZW1lLWFmZmVjdHMtdmlzdWFsLW92ZXJmbG93LXN0ZGVyci50eHRVVAUA
AwQMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAFDV9JAAAAAAAAAAAAAAAAFAAYAAAAAAAA
ABAA7UHdHAYAY29tcG9zaXRpbmcvcmVnaW9ucy9VVAUAA2kDF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAAZEl9J+9LaCsAAAADyBgAARQAYAAAAAAABAAAApIErHQYAY29tcG9zaXRpbmcvcmVn
aW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1jb21wb3NpdGluZy1zdGRlcnIudHh0VVQF
AAMBDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAHRJfSXEI0hm+AAAA8gYAADwAGAAAAAAA
AQAAAKSBah4GAGNvbXBvc2l0aW5nL3Nob3ctY29tcG9zaXRlZC1pZnJhbWUtb24tYmFjay1idXR0
b24tc3RkZXJyLnR4dFVUBQADCgwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAQNX0kAAAAA
AAAAAAAAAAASABgAAAAAAAAAEADtQZ4fBgBjb21wb3NpdGluZy92aWRlby9VVAUAA2gDF1h1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAAXEl9JeAgUJ40AAQBgIAEAIwAYAAAAAAAAAAAApIHqHwYA
Y29tcG9zaXRpbmcvdmlkZW8vcG9zdGVyLWFjdHVhbC5wbmdVVAUAA/4LF1h1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACAAXEl9J6hh6xHkAAACHCAAAIQAYAAAAAAAAAAAApIHUIAcAY29tcG9zaXRp
bmcvdmlkZW8vcG9zdGVyLWRpZmYucG5nVVQFAAP+CxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAGBJfSWfEJAiJBQAADhIAACMAGAAAAAAAAQAAAKSBqCEHAGNvbXBvc2l0aW5nL3ZpZGVvL3Bv
c3Rlci1kaWZmcy5odG1sVVQFAAP/CxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGBJfSazC
T1wMAQAA/QEAACYAGAAAAAAAAQAAAKSBjicHAGNvbXBvc2l0aW5nL3ZpZGVvL3Bvc3Rlci1leHBl
Y3RlZC5odG1sVVQFAAP/CxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAFxJfSTpsObqmAAEA
gCABACUAGAAAAAAAAAAAAKSB+igHAGNvbXBvc2l0aW5nL3ZpZGVvL3Bvc3Rlci1leHBlY3RlZC5w
bmdVVAUAA/4LF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAYEl9Jt5s40L8AAADyBgAAMgAY
AAAAAAABAAAApIH/KQgAY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tY2xpcC1jaGFuZ2Utc3JjLXN0
ZGVyci50eHRVVAUAAwAMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAGDV9JAAAAAAAAAAAA
AAAABwAYAAAAAAAAABAA7UEqKwgAY3J5cHRvL1VUBQADawMXWHV4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAAUNX0kAAAAAAAAAAAAAAAAOABgAAAAAAAAAEADtQWsrCABjcnlwdG8vc3VidGxlL1VU
BQADaQMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAABgSX0kl4NMILAAAACwAAAA+ABgAAAAA
AAEAAACkgbMrCABjcnlwdG8vc3VidGxlL3JzYS1nZW5lcmF0ZS1rZXktbWFsZm9ybWVkLXBhcmFt
ZXRlcnMtc3RkZXJyLnR4dFVUBQADAAwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAYNX0kA
AAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQVcsCABjcnlwdG8vd29ya2Vycy9VVAUAA2sDF1h1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAAGDV9JAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UGgLAgA
Y3J5cHRvL3dvcmtlcnMvc3VidGxlL1VUBQADawMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAA
ABkSX0kl4NMILAAAACwAAAAxABgAAAAAAAEAAACkgfAsCABjcnlwdG8vd29ya2Vycy9zdWJ0bGUv
cnNhLWdlbmVyYXRlLWtleS1zdGRlcnIudHh0VVQFAAMCDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAIBJfSQAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1Bhy0IAGNzczMvVVQFAAMMDBdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAABQ1fSQAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1Bxi0I
AGNzczMvYmxlbmRpbmcvVVQFAANpAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAGhJfSaJu
mmnBAAAA8gYAAEsAGAAAAAAAAQAAAKSBDi4IAGNzczMvYmxlbmRpbmcvYmFja2dyb3VuZC1ibGVu
ZC1tb2RlLWJhY2tncm91bmQtYXR0YWNoZW1lbnQtZml4ZWQtc3RkZXJyLnR4dFVUBQADAwwXWHV4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAgNX0kAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQVQv
CABjc3MzL3NlbGVjdG9yczMvVVQFAANwAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAACA1f
SQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1Bni8IAGNzczMvc2VsZWN0b3JzMy9odG1sL1VUBQAD
bwMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAB0SX0niTWjKagAAAGwAAAAuABgAAAAAAAEA
AACkge0vCABjc3MzL3NlbGVjdG9yczMvaHRtbC9jc3MzLW1vZHNlbC0yNS1zdGRlcnIudHh0VVQF
AAMJDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAACA1fSQAAAAAAAAAAAAAAABYAGAAAAAAA
AAAQAO1BvzAIAGNzczMvc2VsZWN0b3JzMy94aHRtbC9VVAUAA3ADF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAAdEl9JWM7//GoAAABsAAAALwAYAAAAAAABAAAApIEPMQgAY3NzMy9zZWxlY3Rv
cnMzL3hodG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVyci50eHRVVAUAAwkMF1h1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAAIDV9JAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UHiMQgAY3NzMy9zZWxl
Y3RvcnMzL3htbC9VVAUAA3ADF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAdEl9JRZNUjGoA
AABsAAAALQAYAAAAAAABAAAApIEwMggAY3NzMy9zZWxlY3RvcnMzL3htbC9jc3MzLW1vZHNlbC0y
NS1zdGRlcnIudHh0VVQFAAMKDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAIBJfSQAAAAAA
AAAAAAAAAAwAGAAAAAAAAAAQAO1BATMIAGNzczMvc2hhcGVzL1VUBQADDAwXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAACASX0kAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQUczCABjc3MzL3No
YXBlcy9zaGFwZS1vdXRzaWRlL1VUBQADDAwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACAS
X0kAAAAAAAAAAAAAAAArABgAAAAAAAAAEADtQZszCABjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRl
L3N1cHBvcnRlZC1zaGFwZXMvVVQFAAMMDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAIBJf
SQAAAAAAAAAAAAAAADMAGAAAAAAAAAAQAO1BADQIAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUv
c3VwcG9ydGVkLXNoYXBlcy9lbGxpcHNlL1VUBQADDAwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIACASX0mlEOtuwgAAAPIGAABXABgAAAAAAAEAAACkgW00CABjc3MzL3NoYXBlcy9zaGFwZS1v
dXRzaWRlL3N1cHBvcnRlZC1zaGFwZXMvZWxsaXBzZS9zaGFwZS1vdXRzaWRlLWVsbGlwc2UtMDEz
LXN0ZGVyci50eHRVVAUAAwwMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAALDV9JAAAAAAAA
AAAAAAAADQAYAAAAAAAAABAA7UHANQgAZGlzcGxheWxpc3RzL1VUBQADdQMXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIACESX0mjV/3oUAAAAI4AAAAyABgAAAAAAAEAAACkgQc2CABkaXNwbGF5
bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4dFVUBQADDgwXWHV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIACESX0nylpXVRwAAAEkAAAApABgAAAAAAAEAAACkgcM2CABk
aXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVUBQADDgwXWHV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAACwSX0kAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQW03CABkb20v
VVQFAAMjDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAALBJfSQAAAAAAAAAAAAAAAAkAGAAA
AAAAAAAQAO1BqzcIAGRvbS9odG1sL1VUBQADIwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
ACwSX0kAAAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQe43CABkb20vaHRtbC9sZXZlbDIvVVQFAAMj
DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAALBJfSQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQ
AO1BODgIAGRvbS9odG1sL2xldmVsMi9odG1sL1VUBQADIwwXWHV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIACwSX0nm7Uv5agAAAGwAAAAyABgAAAAAAAEAAACkgYc4CABkb20vaHRtbC9sZXZlbDIv
aHRtbC9IVE1MSW5wdXRFbGVtZW50MjAtc3RkZXJyLnR4dFVUBQADIwwXWHV4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAA8NX0kAAAAAAAAAAAAAAAAKABgAAAAAAAAAEADtQV05CABkb20veGh0bWwv
VVQFAAN+AxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAADw1fSQAAAAAAAAAAAAAAABEAGAAA
AAAAAAAQAO1BoTkIAGRvbS94aHRtbC9sZXZlbDIvVVQFAAN+AxdYdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAADw1fSQAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1B7DkIAGRvbS94aHRtbC9sZXZl
bDIvaHRtbC9VVAUAA34DF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAsEl9JczWxTWgAAABs
AAAAMwAYAAAAAAABAAAApIE8OggAZG9tL3hodG1sL2xldmVsMi9odG1sL0hUTUxJbnB1dEVsZW1l
bnQyMC1zdGRlcnIudHh0VVQFAAMkDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAADQ1fSQAA
AAAAAAAAAAAAAAgAGAAAAAAAAAAQAO1BETsIAGVkaXRpbmcvVVQFAAN6AxdYdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAADQ1fSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BUzsIAGVkaXRpbmcv
ZXhlY0NvbW1hbmQvVVQFAAN6AxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAJhJfSd0hw+1C
AAAAhgAAAEEAGAAAAAAAAQAAAKSBoTsIAGVkaXRpbmcvZXhlY0NvbW1hbmQvY2xpcGJvYXJkLWFj
Y2Vzcy13aXRoLXVzZXItZ2VzdHVyZS1zdGRlcnIudHh0VVQFAAMYDBdYdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAgBNfSQKjdy/LDQAAPnMAAA0AGAAAAAAAAQAAAKSBXjwIAGVycm9yX2xvZy50
eHRVVAUAA58OF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAvDV9JAAAAAAAAAAAAAAAABQAY
AAAAAAAAABAA7UFwSggAZmFzdC9VVAUAA7oDF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAS
DV9JAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UGvSggAZmFzdC9ibG9jay9VVAUAA4QDF1h1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAASDV9JAAAAAAAAAAAAAAAAGwAYAAAAAAAAABAA7UH0SggA
ZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvVVQFAAOEAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgALhJfSToPCuRqAAAAbAAAACkAGAAAAAAAAQAAAKSBSUsIAGZhc3QvYmxvY2svbWFyZ2lu
LWNvbGxhcHNlLzEwMy1zdGRlcnIudHh0VVQFAAMnDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAGw1fSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BFkwIAGZhc3QvY2FudmFzL1VUBQADlQMX
WHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADYSX0mrns92mAAAAEwBAAAmABgAAAAAAAEAAACk
gVxMCABmYXN0L2NhbnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUBQADOAwXWHV4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAABoNX0kAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQVRNCABm
YXN0L2Nzcy9VVAUAA5MDF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAZDV9JaiacBGoAAABs
AAAAKwAYAAAAAAABAAAApIGXTQgAZmFzdC9jc3MvY2hlY2tlZC1wc2V1ZG8tc2VsZWN0b3Itc3Rk
ZXJyLnR4dFVUBQADkgMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADYSX0nbCNNCOwAAAD8A
AAApABgAAAAAAAEAAACkgWZOCABmYXN0L2Nzcy9jb21wYXJlLWNvbnRlbnQtc3R5bGUtc3RkZXJy
LnR4dFVUBQADNwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADYSX0kAAAAAAAAAAAAAAAAJ
ABgAAAAAAAAAEADtQQRPCABmYXN0L2RvbS9VVAUAAzcMF1h1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAA2El9JB+CDMmoAAABsAAAANgAYAAAAAAABAAAApIFHTwgAZmFzdC9kb20vY2xvbmUtbm9k
ZS1mb3JtLWVsZW1lbnRzLXdpdGgtYXR0ci1zdGRlcnIudHh0VVQFAAM3DBdYdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAGA1fSQAAAAAAAAAAAAAAABkAGAAAAAAAAAAQAO1BIVAIAGZhc3QvZG9t
L0hUTUxGb3JtRWxlbWVudC9VVAUAA48DF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAYDV9J
NXbvH2oAAABsAAAARwAYAAAAAAABAAAApIF0UAgAZmFzdC9kb20vSFRNTEZvcm1FbGVtZW50L25h
bWVkLXByb3BlcnR5LWdldHRlci1yYWRpb25vZGVsaXN0LXN0ZGVyci50eHRVVAUAA48DF1h1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAAoDV9JAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UFfUQgA
ZmFzdC9ldmVudHMvVVQFAAOrAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAPRJfSVgqZ3U5
AAAAQwAAADIAGAAAAAAAAQAAAKSBpVEIAGZhc3QvZXZlbnRzL2Rpc3BsYXktbm9uZS1vbi1mb2N1
cy1jcmFzaC1zdGRlcnIudHh0VVQFAANGDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAPRJf
SaJCTndqAAAAbAAAAEkAGAAAAAAAAQAAAKSBSlIIAGZhc3QvZXZlbnRzL2RvbWFjdGl2YXRlLXNl
dHMtdW5kZXJseWluZy1jbGljay1ldmVudC1hcy1oYW5kbGVkLXN0ZGVyci50eHRVVAUAA0YMF1h1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABJEl9JMLVt4zkAAABDAAAAKwAYAAAAAAABAAAApIE3
UwgAZmFzdC9ldmVudHMvbW91c2UtZm9jdXMtaW1hZ2VtYXAtc3RkZXJyLnR4dFVUBQADWQwXWHV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEoSX0nnrr1fOwAAAEMAAAAvABgAAAAAAAEAAACkgdVT
CABmYXN0L2V2ZW50cy9tb3VzZXVwLW91dHNpZGUtZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADWwwX
WHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACINX0kAAAAAAAAAAAAAAAALABgAAAAAAAAAEADt
QXlUCABmYXN0L2Zvcm1zL1VUBQADnwMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAD0SX0nP
TinSkAAAAL0AAAAzABgAAAAAAAEAAACkgb5UCABmYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1l
bGVtZW50LWNyYXNoLXN0ZGVyci50eHRVVAUAA0YMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CAA5El9JgZheDmoAAABsAAAANAAYAAAAAAABAAAApIG7VQgAZmFzdC9mb3Jtcy9WYWxpZGl0eVN0
YXRlLXZhbHVlTWlzc2luZy0wMDYtc3RkZXJyLnR4dFVUBQADPgwXWHV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAACENX0kAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQZNWCABmYXN0L2ZyYW1lcy9V
VAUAA50DF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA8El9J2wjTQjsAAAA/AAAALwAYAAAA
AAABAAAApIHZVggAZmFzdC9mcmFtZXMvZnJhbWUtZGlzcGxheS1ub25lLWZvY3VzLXN0ZGVyci50
eHRVVAUAA0QMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAdDV9JAAAAAAAAAAAAAAAADQAY
AAAAAAAAABAA7UF9VwgAZmFzdC9oYXJuZXNzL1VUBQADmQMXWHV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAB0NX0nuvKXKaQAAAGwAAAArABgAAAAAAAEAAACkgcRXCABmYXN0L2hhcm5lc3MvaW1h
Z2UtZGlmZi10ZW1wbGF0ZS1zdGRlcnIudHh0VVQFAAOZAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAKg1fSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BklgIAGZhc3QvaW1hZ2VzL1VUBQAD
rwMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAEUSX0lRp4IYMQAAADEAAAAtABgAAAAAAAEA
AACkgdhYCABmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLXN0ZGVyci50eHRVVAUA
A1EMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABGEl9JIY+9ODIAAAAzAAAALAAYAAAAAAAB
AAAApIFwWQgAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAUA
A1MMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAmDV9JAAAAAAAAAAAAAAAADAAYAAAAAAAA
ABAA7UEIWggAZmFzdC9sb2FkZXIvVVQFAAOoAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
OxJfSdsI00I7AAAAPwAAAFIAGAAAAAAAAQAAAKSBTloIAGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1h
Z2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVyci50
eHRVVAUAA0IMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA9El9J2wjTQjsAAAA/AAAAUwAY
AAAAAAABAAAApIEVWwgAZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2Nr
LWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVyci50eHRVVAUAA0UMF1h1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACABFEl9J2wjTQjsAAAA/AAAALQAYAAAAAAABAAAApIHdWwgAZmFz
dC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS1zdGRlcnIudHh0VVQFAANRDBdYdXgLAAEE
9QEAAARQAAAAUEsBAh4DCgAAAAAAdBJfSQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1Bf1wIAGZh
c3QvbWVkaWFzdHJlYW0vVVQFAAOrDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsxNfSW+f
L1XdPwAAjRYBADkAGAAAAAAAAQAAAKSBylwIAGZhc3QvbWVkaWFzdHJlYW0vYXBwbHktY29uc3Ry
YWludHMtYWR2YW5jZWQtY3Jhc2gtbG9nLnR4dFVUBQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIALMTX0mpUqrFiz8AALEYAQA2ABgAAAAAAAEAAACkgRqdCABmYXN0L21lZGlhc3RyZWFt
L2FwcGx5LWNvbnN0cmFpbnRzLWF1ZGlvLWNyYXNoLWxvZy50eHRVVAUAAwIPF1h1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAAkDV9JpbYVTJ0AAAC1AAAAMwAYAAAAAAABAAAApIEV3QgAZmFzdC9t
ZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50cy1hdWRpby1zdGRlcnIudHh0VVQFAAOjAxdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsxNfSZXXX43RPwAAixYBADYAGAAAAAAAAQAAAKSBH94I
AGZhc3QvbWVkaWFzdHJlYW0vYXBwbHktY29uc3RyYWludHMtdmlkZW8tY3Jhc2gtbG9nLnR4dFVU
BQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACQNX0l5vKWBngAAALUAAAAqABgAAAAA
AAEAAACkgWAeCQBmYXN0L21lZGlhc3RyZWFtL2FyZ3VtZW50LXR5cGVzLXN0ZGVyci50eHRVVAUA
A6MDF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA9El9JlQbhtZ0AAAC1AAAAQAAYAAAAAAAB
AAAApIFiHwkAZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXRyYWNr
LXN0b3Atc3RkZXJyLnR4dFVUBQADRQwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAD0SX0ko
Dt5XnwAAALUAAABLABgAAAAAAAEAAACkgXkgCQBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LXZpZGVvLWVsZW1lbnQtdmlkZW8tdHJhY2tzLWRpc2FibGVkLXN0ZGVyci50eHRVVAUAA0UMF1h1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA9El9JcGSo0p4AAAC1AAAAWAAYAAAAAAABAAAApIGd
IQkAZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS12aWRlby1lbGVtZW50LXZpZGVvLXRyYWNr
cy1kaXNhYmxlZC10aGVuLWVuYWJsZWQtc3RkZXJyLnR4dFVUBQADRQwXWHV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAD0SX0nANg9UngAAALUAAAAyABgAAAAAAAEAAACkgc0iCQBmYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3Itc3RkZXJyLnR4dFVUBQADRgwXWHV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAACQNX0kAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQdcjCQBmYXN0
L3BhcnNlci9VVAUAA6QDF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAkDV9J0CY2R2oAAABs
AAAAJAAYAAAAAAABAAAApIEdJAkAZmFzdC9wYXJzZXIvYmFkLXhtbC1zbGFzaC1zdGRlcnIudHh0
VVQFAAOkAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAKw1fSQAAAAAAAAAAAAAAAA0AGAAA
AAAAAAAQAO1B5SQJAGZhc3QvcmVnaW9ucy9VVAUAA7EDF1h1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAAArDV9JAAAAAAAAAAAAAAAAFwAYAAAAAAAAABAA7UEsJQkAZmFzdC9yZWdpb25zL3Njcm9s
bGluZy9VVAUAA7IDF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABKEl9JOQHL3UAAAAB6AAAA
NQAYAAAAAAABAAAApIF9JQkAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3JvbGwtYWJz
cG9zLXN0ZGVyci50eHRVVAUAA1wMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABKEl9JOQHL
3UAAAAB6AAAALgAYAAAAAAABAAAApIEsJgkAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1z
Y3JvbGwtc3RkZXJyLnR4dFVUBQADXAwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEoSX0nk
isdDPAAAAD0AAABAABgAAAAAAAEAAACkgdQmCQBmYXN0L3JlZ2lvbnMvc2Nyb2xsaW5nL3doZWVs
LXNjcm9sbGFibGUtc2luZ2xlLXJlZ2lvbi1zdGRlcnIudHh0VVQFAANcDBdYdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAMA1fSQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BiicJAGZhc3QveHNs
L1VUBQADuwMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFASX0ly/WXyhQAAAOkAAAAlABgA
AAAAAAEAAACkgc0nCQBmYXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQFAANn
DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAUBJfSc4JKAKNAAAA8AAAACcAGAAAAAAAAQAA
AKSBsSgJAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUBQADZwwXWHV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFASX0nPj2YOUAAAAKAAAAAkABgAAAAAAAEAAACkgZ8p
CQBmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAUAA2gMF1h1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABREl9JgUp3rUsAAACsAAAANAAYAAAAAAABAAAApIFNKgkAZmFzdC94
c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUBQADaQwXWHV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALQTX0kKb7odvQIAABEHAAARABgAAAAAAAEAAACkgQYr
CQBmdWxsX3Jlc3VsdHMuanNvblVUBQADAw8XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADMN
X0kAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQQ4uCQBodHRwL1VUBQADwQMXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAFgSX0kAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQU0uCQBodHRwL3Rl
c3RzL1VUBQADdwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADUNX0kAAAAAAAAAAAAAAAAR
ABgAAAAAAAAAEADtQZIuCQBodHRwL3Rlc3RzL2NhY2hlL1VUBQADxgMXWHV4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAFUSX0kxfRp3fgAAABEBAAAwABgAAAAAAAEAAACkgd0uCQBodHRwL3Rlc3Rz
L2NhY2hlL21lbW9yeS1jYWNoZS1wcnVuaW5nLXN0ZGVyci50eHRVVAUAA3EMF1h1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAAAzDV9JAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UHFLwkAaHR0cC90
ZXN0cy9jYW52YXMvVVQFAAPBAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAMw1fSQAAAAAA
AAAAAAAAABgAGAAAAAAAAAAQAO1BETAJAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL1VUBQADwQMX
WHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFMSX0mYRVQ1ewAAAK4AAAA7ABgAAAAAAAEAAACk
gWMwCQBodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2Utc3Rk
ZXJyLnR4dFVUBQADbQwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADUNX0kAAAAAAAAAAAAA
AAAVABgAAAAAAAAAEADtQVMxCQBodHRwL3Rlc3RzL2luc3BlY3Rvci9VVAUAA8UDF1h1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAAA1DV9JAAAAAAAAAAAAAAAAHQAYAAAAAAAAABAA7UGiMQkAaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9VVAUAA8UDF1h1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACABWEl9JFtFPJZsHAACsKgAANwAYAAAAAAABAAAApIH5MQkAaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZS10aW1pbmctc3RkZXJyLnR4dFVUBQADcwwXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAEMNX0kAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQQU6CQBodHRwL3Rl
c3RzL21lZGlhL1VUBQAD3gMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADUNX0kAAAAAAAAA
AAAAAAAaABgAAAAAAAAAEADtQVA6CQBodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5L1VUBQADxgMX
WHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFYSX0nyMG/NBQEAAFACAAA5ABgAAAAAAAEAAACk
gaQ6CQBodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5L2NsZWFyLWtleS1obHMtYWVzMTI4LXN0ZGVy
ci50eHRVVAUAA3MMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA5DV9JAAAAAAAAAAAAAAAA
FQAYAAAAAAAAABAA7UEcPAkAaHR0cC90ZXN0cy9tZWRpYS9obHMvVVQFAAPNAxdYdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAVxJfSdkh1k1sAQAARwMAAEAAGAAAAAAAAQAAAKSBazwJAGh0dHAv
dGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLXN0ZGVyci50
eHRVVAUAA3YMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABYEl9JzDfYY1sBAAD8AgAAOgAY
AAAAAAABAAAApIFRPgkAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1ZGlvLXRyYWNrcy1oYXMt
YXVkaW8tc3RkZXJyLnR4dFVUBQADdwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFgSX0kj
+p8yVgEAAPwCAABBABgAAAAAAAEAAACkgSBACQBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYXVk
aW8tdHJhY2tzLWxvY2FsZS1zZWxlY3Rpb24tc3RkZXJyLnR4dFVUBQADeAwXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAFgSX0nJ88yCVQEAAPwCAAAwABgAAAAAAAEAAACkgfFBCQBodHRwL3Rl
c3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLXN0ZGVyci50eHRVVAUAA3gMF1h1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACABYEl9JpRs3z7IAAACVAQAALAAYAAAAAAABAAAApIGwQwkAaHR0
cC90ZXN0cy9tZWRpYS9obHMvaGxzLXByb2dyZXNzLXN0ZGVyci50eHRVVAUAA3gMF1h1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACABZEl9JJ45LcrIAAACVAQAAMAAYAAAAAAABAAAApIHIRAkAaHR0
cC90ZXN0cy9tZWRpYS9obHMvaGxzLXZpZGVvLXJlc2l6ZS1zdGRlcnIudHh0VVQFAAN5DBdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWRJfSZheVM+5AAAAKgMAAD0AGAAAAAAAAQAAAKSB5EUJ
AGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xsZXItZ2V0U3RhcnREYXRlLXN0ZGVy
ci50eHRVVAUAA3kMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABZEl9JkcblVPoAAACHAwAA
OgAYAAAAAAABAAAApIEURwkAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2
ZS1zdHJlYW0tc3RkZXJyLnR4dFVUBQADegwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFoS
X0lU2Ks2/gEAAOskAAA8ABgAAAAAAAEAAACkgYJICQBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRl
by1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LXN0ZGVyci50eHRVVAUAA3sMF1h1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACABWEl9Jq8RnscoAAAA3AQAAMgAYAAAAAAABAAAApIH2SgkAaHR0cC90ZXN0
cy9tZWRpYS9tZWRpYS1kb2N1bWVudC1yZWZlcmVyLXN0ZGVyci50eHRVVAUAA3QMF1h1eAsAAQT1
AQAABFAAAABQSwECHgMKAAIAAABXEl9JTBVSjWMAAABjAAAAKgAYAAAAAAABAAAApIEsTAkAaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1kb2N1bWVudC1zdGRlcnIudHh0VVQFAAN2DBdYdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgACAAAAWBJfSc3J04ZjAAAAYwAAADkAGAAAAAAAAQAAAKSB80wJAGh0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtcGxheS1zdHJlYW0tY2h1bmtlZC1pY3ktc3RkZXJyLnR4dFVUBQAD
eAwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADYNX0kAAAAAAAAAAAAAAAAnABgAAAAAAAAA
EADtQclNCQBodHRwL3Rlc3RzL21lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9VVAUAA8gDF1h1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA2DV9JAAAAAAAAAAAAAAAAOQAYAAAAAAAAABAA7UEq
TgkAaHR0cC90ZXN0cy9tZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvc2tpcC1iYWNrLXN1cHBv
cnQvVVQFAAPIAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWBJfSTO3RITLAQAAJQUAAGIA
GAAAAAAAAQAAAKSBnU4JAGh0dHAvdGVzdHMvbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3Nr
aXAtYmFjay1zdXBwb3J0L3NraXAtYmFjay1zdXBwb3J0LWJ1dHRvbi1jbGljay1zdGRlcnIudHh0
VVQFAAN3DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWBJfSeVbk3/tAAAAXwEAAC0AGAAA
AAAAAQAAAKSBBFEJAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4
dFVUBQADeAwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAFkSX0nD5tnjYwAAAGMAAAAvABgA
AAAAAAEAAACkgVhSCQBodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ctc3RkZXJy
LnR4dFVUBQADeQwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFkSX0nKQLil6gAAAFoBAAAv
ABgAAAAAAAEAAACkgSRTCQBodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVkLWFzLXRleHQtc3Rk
ZXJyLnR4dFVUBQADegwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADYNX0kAAAAAAAAAAAAA
AAAXABgAAAAAAAAAEADtQXdUCQBodHRwL3Rlc3RzL21lZGlhL3RyYWNrL1VUBQADxwMXWHV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIADYNX0lXZ3SvngAAALUAAAA9ABgAAAAAAAEAAACkgchUCQBo
dHRwL3Rlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbG93LWxvYWRpbmctMi1zdGRlcnIu
dHh0VVQFAAPHAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWRJfSYRgqqgEAQAA9gMAACYA
GAAAAAAAAQAAAKSB3VUJAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYXV0aC1zdGRlcnIudHh0VVQF
AAN6DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAWhJfSaEwYyVjAAAAYwAAAC0AGAAAAAAA
AQAAAKSBQVcJAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJyb3ItYWJvcnQtc3RkZXJyLnR4dFVU
BQADewwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFoSX0miacFVswAAACMBAAA2ABgAAAAA
AAEAAACkgQtYCQBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LXN0
ZGVyci50eHRVVAUAA3sMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABaEl9Jc9yrV2gAAADG
AAAALAAYAAAAAAABAAAApIEuWQkAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1sb2FkLXR3aWNlLXN0
ZGVyci50eHRVVAUAA3wMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAABcEl9JpUJkC2MAAABj
AAAALwAYAAAAAAABAAAApIH8WQkAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNz
LXN0ZGVyci50eHRVVAUAA38MF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABiEl9J4PGO9PkA
AABBAQAAKgAYAAAAAAABAAAApIHIWgkAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWRpcmVjdC1z
dGRlcnIudHh0VVQFAAOHDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAYhJfSTwn18pjAAAA
YwAAACsAGAAAAAAAAQAAAKSBJVwJAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50LXN0
ZGVyci50eHRVVAUAA4gMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABgEl9JAAAAAAAAAAAA
AAAAEAAYAAAAAAAAABAA7UHtXAkAaHR0cC90ZXN0cy9taXNjL1VUBQADgwwXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAGESX0njp0o+1QAAABgBAAA/ABgAAAAAAAEAAACkgTddCQBodHRwL3Rl
c3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXN0ZGVyci50eHRV
VAUAA4UMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABgEl9JfH2nYNYAAAAYAQAAWwAYAAAA
AAABAAAApIGFXgkAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0
ZWNoYW5nZS13aXRoLWdjLWFmdGVyLXZpZGVvLXJlbW92YWwtc3RkZXJyLnR4dFVUBQADgwwXWHV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHQSX0kVNTWSegAAALwAAAAqABgAAAAAAAEAAACkgfBf
CQBodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAUAA6wMF1h1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAABXEl9JAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UHOYAkA
aHR0cC90ZXN0cy9tdWx0aXBhcnQvVVQFAAN1DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
VxJfSZ1D6cieAAAAtQAAAD0AGAAAAAAAAQAAAKSBHWEJAGh0dHAvdGVzdHMvbXVsdGlwYXJ0L2lu
dmFsaWQtaW1hZ2UtZGF0YS1zdGFuZGFsb25lLXN0ZGVyci50eHRVVAUAA3UMF1h1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAAA4DV9JAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UEyYgkAaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL1VUBQADywMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFoSX0nb
CNNCOwAAAD8AAAA3ABgAAAAAAAEAAACkgYJiCQBodHRwL3Rlc3RzL25hdmlnYXRpb24vZmFsbGJh
Y2stYW5jaG9yLXJlbG9hZC1zdGRlcnIudHh0VVQFAAN8DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAANw1fSQAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1BLmMJAGh0dHAvdGVzdHMvcGVyZm9y
bWFuY2UvVVQFAAPJAxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgANw1fSUX2ZateAAAApgAA
AEwAGAAAAAAAAQAAAKSBf2MJAGh0dHAvdGVzdHMvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcmVz
b3VyY2UtdGltaW5nLWNhY2hlZC1lbnRyaWVzLXN0ZGVyci50eHRVVAUAA8kDF1h1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAABYEl9JAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UFjZAkAaHR0cC90
ZXN0cy9wcmVsb2FkL1VUBQADdwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFgSX0kzPyOu
sgAAAK8BAABKABgAAAAAAAEAAACkgbBkCQBodHRwL3Rlc3RzL3ByZWxvYWQvZGVsYXlpbmdfb25s
b2FkX2xpbmtfcHJlbG9hZF9hZnRlcl9kaXNjb3Zlcnktc3RkZXJyLnR4dFVUBQADdwwXWHV4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAFENX0kAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQeZlCQBo
dHRwL3Rlc3RzL3NlY3VyaXR5L1VUBQAD+gMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFwS
X0m8rWqeygAAADYBAABVABgAAAAAAAEAAACkgTRmCQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZh
cy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tYmxvY2tlZC1uby1jcm9zc29yaWdpbi1zdGRlcnIu
dHh0VVQFAAOADBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAXRJfSQHhwT9jAAAAYwAAAEgA
GAAAAAAAAQAAAKSBjWcJAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1yZWFkLXJl
bW90ZS12aWRlby1sb2NhbGhvc3Qtc3RkZXJyLnR4dFVUBQADgQwXWHV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAGESX0nstHzlrQAAAMwAAABHABgAAAAAAAEAAACkgXJoCQBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4
dFVUBQADhQwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEoNX0kAAAAAAAAAAAAAAAAqABgA
AAAAAAAAEADtQaBpCQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9V
VAUAA+wDF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAABYEl9Jn5wXrmMAAABjAAAASwAYAAAA
AAABAAAApIEEagkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYXVk
aW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAN4DBdYdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAWBJfSc0+BAZ8AAAArgAAAEwAGAAAAAAAAQAAAKSB7GoJAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVy
ci50eHRVVAUAA3gMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABYEl9JWUT7pKgAAACKAQAA
WAAYAAAAAAABAAAApIHuawkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvYmxvYi11cmwtZG9lcy1ub3QtbWF0Y2gtc291cmNlLXNlbGYtc3RkZXJyLnR4dFVUBQADeAwX
WHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADgNX0kAAAAAAAAAAAAAAABEABgAAAAAAAAAEADt
QShtCQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWlu
c2VjdXJlLXJlcXVlc3RzL1VUBQADywMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFkSX0ln
QQnw7gAAACYDAAB5ABgAAAAAAAEAAACkgaZtCQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL3VwZ3JhZGUtaW5zZWN1cmUt
YXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1zdGRlcnIudHh0VVQFAAN6DBdYdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAOA1fSQAAAAAAAAAAAAAAAD0AGAAAAAAAAAAQAO1BR28JAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9VVAUA
A8sDF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAABZEl9JmJjXUGMAAABjAAAAUwAYAAAAAAAB
AAAApIG+bwkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFn
ZW50U2hhZG93RE9NL2FsbG93LWF1ZGlvLXN0ZGVyci50eHRVVAUAA3kMF1h1eAsAAQT1AQAABFAA
AABQSwECHgMKAAIAAABaEl9J+k5tlmMAAABjAAAAUwAYAAAAAAABAAAApIGucAkAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93
LXZpZGVvLXN0ZGVyci50eHRVVAUAA3sMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAABnEl9J
i7MsFmMAAABjAAAASwAYAAAAAAABAAAApIGecQkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAOSDBdY
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAZxJfSYuzLBZjAAAAYwAAAEwAGAAAAAAAAQAAAKSB
hnIJAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGly
ZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAUAA5IMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAIA
AABoEl9Ji7MsFmMAAABjAAAAZgAYAAAAAAABAAAApIFvcwkAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1odHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1t
ZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQFAAOTDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAaBJfSWOqrGyCAAAAqAAAAEAAGAAAAAAAAQAAAKSBcnQJAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA5QMF1h1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACABoEl9JY6qsbIIAAACoAAAAUgAYAAAAAAABAAAApIFudQkA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQt
Ynktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUBQADlAwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AgAAAGcSX0l3GEBBYwAAAGMAAAA9ABgAAAAAAAEAAACkgXx2CQBodHRwL3Rlc3RzL3NlY3VyaXR5
L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQFAAORDBdYdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAbBJfSQxmU4dsAAAAxgAAADkAGAAAAAAAAQAAAKSBVncJAGh0
dHAvdGVzdHMvc2VjdXJpdHkvdmlkZW8tY3Jvc3Mtb3JpZ2luLWNhY2hpbmctc3RkZXJyLnR4dFVU
BQADmwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGwSX0moGtGotQAAACcBAAA/ABgAAAAA
AAEAAACkgTV4CQBodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLXBvc3Rlci1jcm9zcy1vcmlnaW4t
Y3Jhc2gyLXN0ZGVyci50eHRVVAUAA5sMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABuEl9J
YEtmEJEAAAD7AQAARQAYAAAAAAABAAAApIFjeQkAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVO
SUVELXhzbC1kb2N1bWVudC1zZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQFAAOgDBdYdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAExJfSVsEWA6iBQAATRAAAAoAGAAAAAAAAQAAAKSBc3oJAGh0
dHBkLmNvbmZVVAUAA/ULF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABiEl9JAAAAAAAAAAAA
AAAADQAYAAAAAAAAABAA7UFZgAkAaWV0ZXN0Y2VudGVyL1VUBQADiAwXWHV4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAGISX0kAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQaCACQBpZXRlc3RjZW50
ZXIvY3NzMy9VVAUAA4gMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABiEl9JAAAAAAAAAAAA
AAAAHQAYAAAAAAAAABAA7UHsgAkAaWV0ZXN0Y2VudGVyL2NzczMvbmFtZXNwYWNlcy9VVAUAA4gM
F1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABiEl9JNnaYRr4AAADyBgAANQAYAAAAAAABAAAA
pIFDgQkAaWV0ZXN0Y2VudGVyL2NzczMvbmFtZXNwYWNlcy9kZWNsYXJpbmctMDAxLXN0ZGVyci50
eHRVVAUAA4gMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABTDV9JAAAAAAAAAAAAAAAACQAY
AAAAAAAAABAA7UFwggkAaW1wb3J0ZWQvVVQFAAP9AxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAsRJfSQAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1Bs4IJAGltcG9ydGVkL2JsaW5rL1VUBQAD
Hg0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEQNX0kAAAAAAAAAAAAAAAAUABgAAAAAAAAA
EADtQfyCCQBpbXBvcnRlZC9ibGluay9mYXN0L1VUBQAD4AMXWHV4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAEQNX0kAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQUqDCQBpbXBvcnRlZC9ibGluay9m
YXN0L2Zvcm1zL1VUBQAD4AMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEQNX0kAAAAAAAAA
AAAAAAAhABgAAAAAAAAAEADtQZ6DCQBpbXBvcnRlZC9ibGluay9mYXN0L2Zvcm1zL2J1dHRvbi9V
VAUAA+ADF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABnEl9JxyHv2zcAAABAAAAARwAYAAAA
AAABAAAApIH5gwkAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9idXR0b24vYnV0dG9uLXJlc2V0
LWZvY3VzLWJ5LW1vdXNlLXN0ZGVyci50eHRVVAUAA5IMF1h1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAABEDV9JAAAAAAAAAAAAAAAAIAAYAAAAAAAAABAA7UGxhAkAaW1wb3J0ZWQvYmxpbmsvZmFz
dC9mb3Jtcy9yYW5nZS9VVAUAA+ADF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABoEl9JxyHv
2zcAAABAAAAAPwAYAAAAAAABAAAApIELhQkAaW1wb3J0ZWQvYmxpbmsvZmFzdC9mb3Jtcy9yYW5n
ZS9yYW5nZS1mb2N1cy1ieS1tb3VzZS1zdGRlcnIudHh0VVQFAAOTDBdYdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAARA1fSQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1Bu4UJAGltcG9ydGVkL2Js
aW5rL2Zhc3QvZm9ybXMvc3VibWl0L1VUBQAD4AMXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AGgSX0nHIe/bNwAAAEAAAABBABgAAAAAAAEAAACkgRaGCQBpbXBvcnRlZC9ibGluay9mYXN0L2Zv
cm1zL3N1Ym1pdC9zdWJtaXQtZm9jdXMtYnktbW91c2Utc3RkZXJyLnR4dFVUBQADkwwXWHV4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAALESX0kAAAAAAAAAAAAAAAAXABgAAAAAAAAAEADtQciGCQBp
bXBvcnRlZC9ibGluay9zdG9yYWdlL1VUBQADHg0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
ALESX0kAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQRmHCQBpbXBvcnRlZC9ibGluay9zdG9yYWdl
L2luZGV4ZWRkYi9VVAUAAx4NF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACxEl9JTf/YQn4A
AACHAAAARAAYAAAAAAABAAAApIF0hwkAaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIv
YmxvYi12YWxpZC1iZWZvcmUtY29tbWl0LWFjdHVhbC50eHRVVAUAAx4NF1h1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACACxEl9JNd1H+Q8CAABLBAAAQgAYAAAAAAABAAAApIFwiAkAaW1wb3J0ZWQv
Ymxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi12YWxpZC1iZWZvcmUtY29tbWl0LWRpZmYudHh0
VVQFAAMeDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsRJfSaCNWbFCAQAAiAIAAEYAGAAA
AAAAAQAAAKSB+4oJAGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQt
YmVmb3JlLWNvbW1pdC1leHBlY3RlZC50eHRVVAUAAx4NF1h1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACACxEl9JHx70sVMJAADpJgAASgAYAAAAAAABAAAApIG9jAkAaW1wb3J0ZWQvYmxpbmsvc3Rv
cmFnZS9pbmRleGVkZGIvYmxvYi12YWxpZC1iZWZvcmUtY29tbWl0LXByZXR0eS1kaWZmLmh0bWxV
VAUAAx4NF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACxEl9JLZRA7lwAAABeAAAARAAYAAAA
AAABAAAApIGUlgkAaW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi12YWxpZC1i
ZWZvcmUtY29tbWl0LXN0ZGVyci50eHRVVAUAAx4NF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AACxEl9JAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UFulwkAaW1wb3J0ZWQvdzNjL1VUBQADHg0X
WHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAALISX0kAAAAAAAAAAAAAAAAoABgAAAAAAAAAEADt
QbWXCQBpbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvVVQFAAMfDRdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsRJfSRRlGLp+AAAAhwAAAEMAGAAAAAAAAQAAAKSBF5gJ
AGltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45
LWFjdHVhbC50eHRVVAUAAx4NF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACxEl9JDHf9BZ0B
AAD5BgAAQQAYAAAAAAABAAAApIESmQkAaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjktZGlmZi50eHRVVAUAAx4NF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACxEl9JkO4IK7oAAAA2BQAARQAYAAAAAAABAAAApIEqmwkAaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjktZXhwZWN0ZWQudHh0
VVQFAAMeDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAshJfSTNV713KCAAAayoAAEkAGAAA
AAAAAQAAAKSBY5wJAGltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJm
YWN0b3J5X29wZW45LXByZXR0eS1kaWZmLmh0bWxVVAUAAx8NF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACxEl9J7wnzFlwAAABeAAAAQwAYAAAAAAABAAAApIGwpQkAaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3Blbjktc3RkZXJyLnR4dFVUBQAD
Hg0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAIISX0kAAAAAAAAAAAAAAAAgABgAAAAAAAAA
EADtQYmmCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1VUBQADwwwXWHV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAFUNX0kAAAAAAAAAAAAAAAAkABgAAAAAAAAAEADtQeOmCQBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9VVAUAAwEEF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAABVDV9JAAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UFBpwkAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvVVQFAAMBBBdYdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAdxJfSbxLYyppAAAAbAAAAEQAGAAAAAAAAQAAAKSBpacJAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0VsZW1lbnQtbWF0Y2hlcy1zdGRlcnIudHh0VVQF
AAOxDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAUw1fSQAAAAAAAAAAAAAAACYAGAAAAAAA
AAAQAO1BjKgJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvVVQFAAP9AxdY
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAZQ1fSQAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1B
7KgJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL1VUBQADHgQXWHV4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGUNX0kAAAAAAAAAAAAAAAAwABgAAAAAAAAAEADtQVCp
CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9VVAUAAx4E
F1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACJEl9JHJPL2I8AAAChAAAARwAYAAAAAAABAAAA
pIG6qQkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvbW9k
ZS1uby1jb3JzLXN0ZGVyci50eHRVVAUAA9EMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACJ
El9JFh4hlI4AAAChAAAATgAYAAAAAAABAAAApIHKqgkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvbW9kZS1uby1jb3JzLXdvcmtlci1zdGRlcnIudHh0VVQF
AAPRDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAVQ1fSQAAAAAAAAAAAAAAAC8AGAAAAAAA
AAAQAO1B4KsJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMv
VVQFAAMCBBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAgRJfSUM5FGOsAAAAxgMAAEQAGAAA
AAAAAQAAAKSBSawJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Nv
cnMvY29ycy1iYXNpYy1zdGRlcnIudHh0VVQFAAPBDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAgBJfSbXbddWtAAAAxgMAAEsAGAAAAAAAAQAAAKSBc60JAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1iYXNpYy13b3JrZXItc3RkZXJyLnR4dFVU
BQADvwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIMSX0monXD7mQAAAEIBAABLABgAAAAA
AAEAAACkgaWuCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3Jz
L2NvcnMtbm8tcHJlZmxpZ2h0LXN0ZGVyci50eHRVVAUAA8YMF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACDEl9Jl7rpFpgAAABCAQAAUgAYAAAAAAABAAAApIHDrwkAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW5vLXByZWZsaWdodC13b3JrZXIt
c3RkZXJyLnR4dFVUBQADxgwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIQSX0mxeZKnowAA
AIQCAABFABgAAAAAAAEAAACkgeewCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9jb3JzL2NvcnMtb3JpZ2luLXN0ZGVyci50eHRVVAUAA8cMF1h1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACACDEl9JVzanv6EAAACEAgAATAAYAAAAAAABAAAApIEJsgkAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW9yaWdpbi13b3JrZXIt
c3RkZXJyLnR4dFVUBQADxgwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGkNX0kAAAAAAAAA
AAAAAAAlABgAAAAAAAAAEADtQTCzCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvVVQFAAMmBBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAYw1fSQAAAAAAAAAAAAAAACkA
GAAAAAAAAAAQAO1Bj7MJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20v
VVQFAAMZBBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAixJfSSh8Vf29AAAATgIAAEcAGAAA
AAAAAQAAAKSB8rMJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vcmVm
bGVjdGlvbi1lbWJlZGRlZC1zdGRlcnIudHh0VVQFAAPWDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAaA1fSQAAAAAAAAAAAAAAADQAGAAAAAAAAAAQAO1BMLUJAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9pbmZyYXN0cnVjdHVyZS9VVAUAAyQEF1h1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAABoDV9JAAAAAAAAAAAAAAAASgAYAAAAAAAAABAA7UGetQkAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50
ZXJmYWNlcy9VVAUAAyQEF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABoDV9JAAAAAAAAAAAA
AAAAVgAYAAAAAAAAABAA7UEitgkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9VVAUAAyQE
F1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACSEl9JQIAUMWoAAABsAAAAbgAYAAAAAAABAAAA
pIGytgkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2luZnJhc3RydWN0dXJl
L2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xsZWN0aW9ucy9yYWRpb25vZGVsaXN0LXN0ZGVyci50
eHRVVAUAA+MMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABpDV9JAAAAAAAAAAAAAAAALwAY
AAAAAAAAABAA7UHEtwkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9VVAUAAyYEF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABrDV9JAAAAAAAAAAAAAAAA
QAAYAAAAAAAAABAA7UEtuAkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L1VUBQADKQQXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAHENX0kAAAAAAAAAAAAAAABPABgAAAAAAAAAEADtQae4CQBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvVVQFAAM2BBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAkxJfSUDyL29oAAAAxgAAAGcA
GAAAAAAAAQAAAKSBMLkJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVy
ci50eHRVVAUAA+UMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACTEl9JQPIvb2gAAADGAAAA
cgAYAAAAAAABAAAApIE5ugkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQFAAPlDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAkxJf
SbvRaGdoAAAAxgAAAG4AGAAAAAAAAQAAAKSBTbsJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAPmDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAkxJfSbvRaGdoAAAAxgAAAHkAGAAAAAAAAQAAAKSBXbwJAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA+YMF1h1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACUEl9Ju9FoZ2gAAADGAAAAagAYAAAAAAABAAAApIF4
vQkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUBQAD
5wwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJQSX0m/gQ2ZaAAAAMYAAAB1ABgAAAAAAAEA
AACkgYS+CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0YV9ub2F1dG9wbGF5
LXN0ZGVyci50eHRVVAUAA+cMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACUEl9Jv4ENmWgA
AADGAAAAbgAYAAAAAAABAAAApIGbvwkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRl
ZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA+cMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACU
El9Jv4ENmWgAAADGAAAAeQAYAAAAAAABAAAApIGrwAkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X2xvYWRlZG1ldGFkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD6AwXWHV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAJQSX0lgLnzvaAAAAMYAAABpABgAAAAAAAEAAACkgcbBCQBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAUAA+gMF1h1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACACUEl9JYC5872gAAADGAAAAdAAYAAAAAAABAAAApIHRwgkA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVyci50
eHRVVAUAA+gMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACVEl9JZH4ZEWgAAADGAAAAfAAY
AAAAAAABAAAApIHnwwkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBsYXlf
Y2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVUBQAD6QwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAJUSX0lkfhkRaAAAAMYAAAB1ABgAAAAAAAEAAACkgQXFCQBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAUAA+oMF1h1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACACVEl9JKYjHyGgAAADGAAAAfwAYAAAAAAABAAAApIEcxgkAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEt
c3RkZXJyLnR4dFVUBQAD6gwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJYSX0kt2KI2aAAA
AMYAAAB4ABgAAAAAAAEAAACkgT3HCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJf
bG9hZHN0YXJ0X3Byb2dyZXNzLXN0ZGVyci50eHRVVAUAA+sMF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACWEl9JLdiiNmgAAADGAAAAZQAYAAAAAAABAAAApIFXyAkAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3BhdXNlLXN0ZGVyci50eHRVVAUAA+sMF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACWEl9J8mILoGgAAADGAAAAcAAYAAAAAAABAAAApIFeyQkAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD7AwXWHV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAJYSX0nyYgugaAAAAMYAAABkABgAAAAAAAEAAACkgXDKCQBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheS1zdGRlcnIudHh0VVQFAAPsDBdYdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAlxJfSfYybl5oAAAAxgAAAG8AGAAAAAAAAQAAAKSBdssJAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQAD7QwX
WHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJcSX0l1V+xCbAAAAMYAAABnABgAAAAAAAEAAACk
gYfMCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQFAAPu
DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlxJfSbvEsIdoAAAAxgAAAHIAGAAAAAAAAQAA
AKSBlM0JAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nX25vYXV0b3BsYXktc3Rk
ZXJyLnR4dFVUBQAD7gwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJgSX0m/lNV5aAAAAMYA
AABoABgAAAAAAAEAAACkgajOCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Mt
c3RkZXJyLnR4dFVUBQAD7wwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJgSX0m/lNV5aAAA
AMYAAABzABgAAAAAAAEAAACkgbLPCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jl
c3Nfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAPvDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAmBJfSUS3knFoAAAAxgAAAGoAGAAAAAAAAQAAAKSBx9AJAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF90aW1ldXBkYXRlLXN0ZGVyci50eHRVVAUAA/AMF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACZEl9JRLeScWgAAADGAAAAdQAYAAAAAAABAAAApIHT0QkAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAPxDBdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAag1fSQAAAAAAAAAAAAAAAFoAGAAAAAAAAAAQAO1B6tIJ
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1VUBQADJwQXWHV4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAGoNX0kAAAAAAAAAAAAAAABkABgAAAAAAAAAEADtQX7TCQBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svVVQFAAMnBBdYdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgACAAAAkxJfSZjzBKJjAAAAYwAAAHkAGAAAAAAAAQAAAKSBHNQJAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hY3RpdmVDdWVzLXN0ZGVyci50eHRVVAUA
A+YMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACZEl9JQOf3j2gAAADGAAAAdwAYAAAAAAAB
AAAApIEy1QkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdfbG9hZHN0
YXJ0LXN0ZGVyci50eHRVVAUAA/EMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACZEl9JKY/v
6GgAAADGAAAAcgAYAAAAAAABAAAApIFL1gkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF9m
YWxzZV9kdXJpbmdfcGxheS1zdGRlcnIudHh0VVQFAAPyDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAmRJfSSmP7+hoAAAAxgAAAHIAGAAAAAAAAQAAAKSBX9cJAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9wYXVzZWRfdHJ1ZV9kdXJpbmdfcGF1c2Utc3RkZXJyLnR4dFVUBQAD8gwXWHV4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAGoNX0kAAAAAAAAAAAAAAABqABgAAAAAAAAAEADtQXPYCQBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvVVQFAAMoBBdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlBJfSYy4gSKtAAAAzAAAAJEAGAAAAAAAAQAAAKSBF9kJ
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1t
b3ZlLXRvLW90aGVyLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA+cMF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACUEl9J3DdbQa4AAADMAAAAjwAYAAAAAAABAAAApIGP2gkAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtd2l0aGluLWRv
Y3VtZW50LXN0ZGVyci50eHRVVAUAA+cMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAACUEl9J
xInK72MAAABjAAAAjwAYAAAAAAABAAAApIEG3AkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlp
bmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLXJlbW92ZS1mcm9tLWRvY3VtZW50LXN0ZGVyci50
eHRVVAUAA+cMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACaEl9JqFNu42wAAADGAAAAcwAY
AAAAAAABAAAApIEy3QkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2Nh
bnBsYXktc3RkZXJyLnR4dFVUBQAD8wwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJoSX0kt
34oWaAAAAMYAAAB6ABgAAAAAAAEAAACkgUveCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlT
dGF0ZV9kdXJpbmdfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVUBQAD8wwXWHV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAJoSX0kt34oWaAAAAMYAAAB2ABgAAAAAAAEAAACkgWffCQBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQF
AAP0DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAmhJfSWApVM9oAAAAxgAAAHoAGAAAAAAA
AQAAAKSBf+AJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRt
ZXRhZGF0YS1zdGRlcnIudHh0VVQFAAP0DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAmhJf
SWApVM9oAAAAxgAAAHMAGAAAAAAAAQAAAKSBm+EJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFk
eVN0YXRlX2R1cmluZ19wbGF5aW5nLXN0ZGVyci50eHRVVAUAA/QMF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACbEl9JG/slltUAAADCAgAAhAAYAAAAAAABAAAApIGw4gkAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3NyY19yZWZsZWN0c19hdHRyaWJ1dGVfbm90X3NvdXJjZV9lbGVtZW50cy1zdGRl
cnIudHh0VVQFAAP1DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAag1fSQAAAAAAAAAAAAAA
AFUAGAAAAAAAAAAQAO1BQ+QJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay9VVAUAAygEF1h1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABqDV9JAAAAAAAAAAAAAAAAYwAYAAAAAAAAABAA7UHS
5AkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvVVQFAAMoBBdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgACAAAAlBJfSRkvhaljAAAAYwAAAIIAGAAAAAAAAQAAAKSBb+UJ
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L3RyYWNrLWFwaS10ZXh0
dHJhY2tzLXN0ZGVyci50eHRVVAUAA+cMF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAACbEl9J
XCbWTmMAAABjAAAAYwAYAAAAAAABAAAApIGO5gkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVv
XzAwOC1zdGRlcnIudHh0VVQFAAP1DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAlBJfSQAA
AAAAAAAAAAAAAFIAGAAAAAAAAAAQAO1BjucJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9VVAUA
A+cMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACUEl9JW9kRNb0AAABoBQAAZgAYAAAAAAAB
AAAApIEa6AkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50L2F1ZGlvXzAwMS1zdGRlcnIudHh0VVQF
AAPnDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlBJfSZ+kAlXdAAAA0AIAAG4AGAAAAAAA
AQAAAKSBd+kJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRl
cnIudHh0VVQFAAPoDBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAghJfSQAAAAAAAAAAAAAA
ACoAGAAAAAAAAAAQAO1B/OoJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhl
ZERCL1VUBQADwwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIISX0l1/AZOawAAAHoAAABT
ABgAAAAAAAEAAACkgWDrCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtYWN0dWFsLnR4dFVUBQADwwwXWHV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAIISX0lNrV0e9QAAABECAABRABgAAAAAAAEAAACkgVjsCQBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9hYm9ydC1pbi1pbml0aWFs
LXVwZ3JhZGVuZWVkZWQtZGlmZi50eHRVVAUAA8MMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CACCEl9J4gbLVEkAAABPAAAAVQAYAAAAAAABAAAApIHY7QkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIvYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVj
dGVkLnR4dFVUBQADwwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIISX0myn0hKFggAAOUb
AABZABgAAAAAAAEAAACkgbDuCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtcHJldHR5LWRpZmYuaHRtbFVUBQAD
wwwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAH0NX0kAAAAAAAAAAAAAAAAtABgAAAAAAAAA
EADtQVn3CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9VVAUA
A00EF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAChEl9JrEPJeq4AAABqAQAAVwAYAAAAAAAB
AAAApIHA9wkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVk
aWFzb3VyY2UtYWN0aXZlc291cmNlYnVmZmVycy1zdGRlcnIudHh0VVQFAAP+DBdYdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAohJfSXwO23y8AAAAiQMAAFgAGAAAAAAAAQAAAKSB//gJAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNv
dXJjZWJ1ZmZlci1tb2RlLXN0ZGVyci50eHRVVAUAA/8MF1h1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACACiEl9JzhXCXJ4AAAC1AAAAZAAYAAAAAAABAAAApIFN+gkAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYXR0YWNoLXN0b3BzLWRlbGF5
aW5nLWxvYWQtZXZlbnQtc3RkZXJyLnR4dFVUBQAD/wwXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAKISX0mCvxZuIgEAANwCAABMABgAAAAAAAEAAACkgYn7CQBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hdnRyYWNrcy1zdGRlcnIudHh0
VVQFAAP/DBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAohJfSV34+YKeAAAAtQAAAEwAGAAA
AAAAAQAAAKSBMf0JAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWJ1ZmZlcmVkLXN0ZGVyci50eHRVVAUAA/8MF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACiEl9JiQD1JcQAAACJAwAASgAYAAAAAAABAAAApIFV/gkAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY2xvc2VkLXN0ZGVy
ci50eHRVVAUAAwANF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACjEl9JgHaYhisBAADIAwAA
XwAYAAAAAAABAAAApIGd/wkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1z
b3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYS1iaXRyYXRlLXN0ZGVyci50eHRV
VAUAAwINF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACkEl9Jx2EsHC0BAADIAwAAZgAYAAAA
AAABAAAApIFhAQoAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2Uv
bWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtYXYtYXVkaW8tYml0cmF0ZS1zdGRlcnIudHh0
VVQFAAMEDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAphJfSYO8J0+jAQAAfQQAAGYAGAAA
AAAAAQAAAKSBLgMKAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LWF2LXZpZGVvLWJpdHJhdGUtc3RkZXJyLnR4
dFVUBQADBw0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKcSX0nsD8JHTgEAAJQDAABfABgA
AAAAAAEAAACkgXEFCgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJj
ZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUBQAD
CQ0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKgSX0kryDEoSAEAAJQDAABhABgAAAAAAAEA
AACkgVgHCgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQFAAMLDRdY
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAqRJfScUc8ZZNAQAAlAMAAGEAGAAAAAAAAQAAAKSB
OwkKAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291
cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LXYtZnJhbWVzaXplLXN0ZGVyci50eHRVVAUAAw0NF1h1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACACpEl9JYsNJqycBAADkAgAASgAYAAAAAAABAAAApIEjCwoA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Ut
ZGV0YWNoLXN0ZGVyci50eHRVVAUAAw0NF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACqEl9J
wXIlghwBAACeAQAASAAYAAAAAAABAAAApIHODAoAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcGxheS1zdGRlcnIudHh0VVQFAAMPDRdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAqhJfSairSUodAQAAqQMAAEsAGAAAAAAAAQAAAKSBbA4K
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZGlhc291cmNl
LXByZWxvYWQtc3RkZXJyLnR4dFVUBQADDw0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKoS
X0nEosomIwEAAIcCAABKABgAAAAAAAEAAACkgQ4QCgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQADEA0X
WHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAKoSX0lMlirYyQAAAD4EAABUABgAAAAAAAEAAACk
gbURCgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1zb3VyY2VidWZmZXJsaXN0LXN0ZGVyci50eHRVVAUAAxANF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAABVDV9JAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UEMEwoAaW1wb3J0ZWQvdzNj
L1dlYkNyeXB0b0FQSS9VVAUAAwEEF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABcDV9JAAAA
AAAAAAAAAAAAJgAYAAAAAAAAABAA7UFgEwoAaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9nZW5l
cmF0ZUtleS9VVAUAAxAEF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB3El9J4YKG6EkAAABg
DAAAPgAYAAAAAAABAAAApIHAEwoAaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtl
eS90ZXN0X2ZhaWx1cmVzLXN0ZGVyci50eHRVVAUAA7IMF1h1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACACAEl9JjzQacEQAAACgCQAARwAYAAAAAAABAAAApIGBFAoAaW1wb3J0ZWQvdzNjL1dlYkNy
eXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQS1PQUVQLXN0ZGVyci50eHRVVAUA
A8AMF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACEEl9JVALJsjYAAADAAgAAUAAYAAAAAAAB
AAAApIFGFQoAaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1
cmVzX1JTQVNTQS1QS0NTMS12MV81LXN0ZGVyci50eHRVVAUAA8gMF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAACqEl9JAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UEGFgoAaW5zcGVjdG9yL1VU
BQADEA0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAKoSX0kAAAAAAAAAAAAAAAAaABgAAAAA
AAAAEADtQUoWCgBpbnNwZWN0b3Ivc2NyaXB0LXByb2ZpbGVyL1VUBQADEA0XWHV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAKoSX0nBSBCdsAAAAGoBAAAzABgAAAAAAAEAAACkgZ4WCgBpbnNwZWN0
b3Ivc2NyaXB0LXByb2ZpbGVyL2V2ZW50LXR5cGUtQVBJLXN0ZGVyci50eHRVVAUAAxANF1h1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAAB9DV9JAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UG7FwoA
aW5zcGVjdG9yL3N0eWxlcy9VVAUAA04EF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAB9DV9J
pIjKla4AAABqAQAANAAYAAAAAAABAAAApIEGGAoAaW5zcGVjdG9yL3N0eWxlcy9iYWNrZ3JvdW5k
LXBhcnNpbmctY3Jhc2gtc3RkZXJyLnR4dFVUBQADTgQXWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAIANX0kAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQSIZCgBqcXVlcnkvVVQFAANPBBdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAgA1fSdKxLCdqAAAAbAAAABwAGAAAAAAAAQAAAKSBYxkK
AGpxdWVyeS9hdHRyaWJ1dGVzLXN0ZGVyci50eHRVVAUAA08EF1h1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAAD5El9JAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UEjGgoAbWVkaWEvVVQFAAOlDRdY
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsxJfSSXsMP98AAAArgAAAB8AGAAAAAAAAQAAAKSB
YxoKAG1lZGlhL2F1ZGlvLWRhdGEtdXJsLXN0ZGVyci50eHRVVAUAAyINF1h1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAC1El9JAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UE4GwoAbWVkaWEvbWFj
L1VUBQADJg0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALUSX0lzDvOdvwAAAPIGAAAzABgA
AAAAAAEAAACkgXwbCgBtZWRpYS9tYWMvY29udHJvbHMtcGFuZWwtbm90LWNsaXBwZWQtb3V0LXN0
ZGVyci50eHRVVAUAAyYNF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACLDV9JAAAAAAAAAAAA
AAAAEwAYAAAAAAAAABAA7UGoHAoAbWVkaWEvbWVkaWEtc291cmNlL1VUBQADZgQXWHV4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIALYSX0nVhNVYxgAAAPUAAAA+ABgAAAAAAAEAAACkgfUcCgBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFib3J0LXJlc2V0cy1wYXJzZXItc3RkZXJyLnR4
dFVUBQADJw0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALYSX0kADChEnwAAALUAAAA6ABgA
AAAAAAEAAACkgTMeCgBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1
ZmZlci1zdGRlcnIudHh0VVQFAAMnDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAtxJfScck
yN2fAAAAtQAAADcAGAAAAAAAAQAAAKSBRh8KAG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtcmVtb3ZlLWNyYXNoLXN0ZGVyci50eHRVVAUAAykNF1h1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAC3El9JukLc258AAAC1AAAAQAAYAAAAAAABAAAApIFWIAoAbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS1zYW1wbGUtd3JvbmctdHJhY2staWQtc3RkZXJyLnR4dFVUBQADKQ0XWHV4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALcSX0nlKr3wPAEAAKoBAAA8ABgAAAAAAAEAAACkgW8h
CgBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNlZWstZGV0YWNoLWNyYXNoLXN0ZGVy
ci50eHRVVAUAAyoNF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC5El9J7WpZmp4AAAC1AAAA
NQAYAAAAAAABAAAApIEhIwoAbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zdHBwLWNy
YXNoLXN0ZGVyci50eHRVVAUAAy0NF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAD5El9JAAAA
AAAAAAAAAAAAHAAYAAAAAAAAABAA7UEuJAoAbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL1VU
BQADpQ0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAPkSX0kAAAAAAAAAAAAAAAArABgAAAAA
AAAAEADtQYQkCgBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXN1cHBvcnQvVVQF
AAOlDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA+RJfSe95cf59AAAAhwAAAEoAGAAAAAAA
AQAAAKSB6SQKAG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy92b2x1bWUtc3VwcG9ydC92b2x1
bWUtc3VwcG9ydC1jbGljay1hY3R1YWwudHh0VVQFAAOlDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgA+RJfSfwuTx12AQAAqwIAAEgAGAAAAAAAAQAAAKSB6iUKAG1lZGlhL21vZGVybi1tZWRp
YS1jb250cm9scy92b2x1bWUtc3VwcG9ydC92b2x1bWUtc3VwcG9ydC1jbGljay1kaWZmLnR4dFVU
BQADpQ0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAPkSX0l3HJQ3owAAAOQAAABMABgAAAAA
AAEAAACkgeInCgBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdm9sdW1lLXN1cHBvcnQvdm9s
dW1lLXN1cHBvcnQtY2xpY2stZXhwZWN0ZWQudHh0VVQFAAOlDRdYdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgA+RJfSXqJXaCSCAAAWSAAAFAAGAAAAAAAAQAAAKSBCykKAG1lZGlhL21vZGVybi1t
ZWRpYS1jb250cm9scy92b2x1bWUtc3VwcG9ydC92b2x1bWUtc3VwcG9ydC1jbGljay1wcmV0dHkt
ZGlmZi5odG1sVVQFAAOlDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA+RJfSQf0259ZAAAA
XgAAAEoAGAAAAAAAAQAAAKSBJzIKAG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy92b2x1bWUt
c3VwcG9ydC92b2x1bWUtc3VwcG9ydC1jbGljay1zdGRlcnIudHh0VVQFAAOlDRdYdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAxxJfSRGz/tpoAAAAxgAAACgAGAAAAAAAAQAAAKSBBDMKAG1lZGlh
L3NvdXJjZXMtZmFsbGJhY2stY29kZWNzLXN0ZGVyci50eHRVVAUAA0UNF1h1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAADbDV9JAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UHOMwoAbWVkaWEvdHJh
Y2svVVQFAAP9BBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACxNfSce01M5+AAAAhwAAACoA
GAAAAAAAAQAAAKSBFDQKAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtYWN0dWFsLnR4
dFVUBQADxg0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAAsTX0kB9U9XAQIAAMMDAAAoABgA
AAAAAAEAAACkgfY0CgBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWRpZmYudHh0VVQF
AAPGDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACxNfSQz65Oo2AQAAMwIAACwAGAAAAAAA
AQAAAKSBWTcKAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtZXhwZWN0ZWQudHh0VVQF
AAPGDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACxNfSS5U4gU9CQAA3CYAADAAGAAAAAAA
AQAAAKSB9TgKAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtcHJldHR5LWRpZmYuaHRt
bFVUBQADxg0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAAsTX0l1iaHRXAAAAF4AAAAqABgA
AAAAAAEAAACkgZxCCgBtZWRpYS90cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLXN0ZGVyci50eHRV
VAUAA8YNF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADHEl9Jz04p0pAAAAC9AAAAIQAYAAAA
AAABAAAApIFcQwoAbWVkaWEvdW5zdXBwb3J0ZWQtcnRzcC1zdGRlcnIudHh0VVQFAANGDRdYdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgA4BJfScqhCErAAAAA8gYAACgAGAAAAAAAAQAAAKSBR0QK
AG1lZGlhL3ZpZGVvLXBvc3Rlci1iYWNrZ3JvdW5kLXN0ZGVyci50eHRVVAUAA3QNF1h1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAACNDV9JAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UFpRQoAcGx1
Z2lucy9VVAUAA2oEF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC8El9J7l1yRYYAAAD2AAAA
OwAYAAAAAAABAAAApIGrRQoAcGx1Z2lucy9ucHAtc2V0LXdpbmRvdy1jYWxsZWQtZHVyaW5nLWRl
c3RydWN0aW9uLXN0ZGVyci50eHRVVAUAAzMNF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABm
El9Jdnme068CAADqKQAAGgAYAAAAAAABAAAApIGmRgoAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50
eHRVVAUAA48MF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABmEl9JyDwG/wgBAACPAgAAGgAY
AAAAAAABAAAApIGpSQoAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAUAA48MF1h1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAAAUEl9JAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIEFSwoAcHl3
ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQFAAP3CxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAFBJfSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBWksKAHB5d2Vic29ja2V0Lndzcy5sb2ct
b3V0LnR4dFVUBQAD9wsXWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALQTX0lFJh050ScAAMuq
AAAMABgAAAAAAAEAAACkga9LCgByZXN1bHRzLmh0bWxVVAUAAwMPF1h1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAACzE19JAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UHGcwoAcmV0cmllcy9VVAUA
AwIPF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACgE19JAAAAAAAAAAAAAAAADQAYAAAAAAAA
ABAA7UEIdAoAcmV0cmllcy9mYXN0L1VUBQAD2w4XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
ALITX0kAAAAAAAAAAAAAAAAZABgAAAAAAAAAEADtQU90CgByZXRyaWVzL2Zhc3QvbWVkaWFzdHJl
YW0vVVQFAAP/DhdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAqRNfSW+fL1XdPwAAjRYBAEEA
GAAAAAAAAQAAAKSBonQKAHJldHJpZXMvZmFzdC9tZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50
cy1hZHZhbmNlZC1jcmFzaC1sb2cudHh0VVQFAAPtDhdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAoBNfSalSqsWLPwAAsRgBAD4AGAAAAAAAAQAAAKSB+rQKAHJldHJpZXMvZmFzdC9tZWRpYXN0
cmVhbS9hcHBseS1jb25zdHJhaW50cy1hdWRpby1jcmFzaC1sb2cudHh0VVQFAAPbDhdYdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAshNfSZXXX43RPwAAixYBAD4AGAAAAAAAAQAAAKSB/fQKAHJl
dHJpZXMvZmFzdC9tZWRpYXN0cmVhbS9hcHBseS1jb25zdHJhaW50cy12aWRlby1jcmFzaC1sb2cu
dHh0VVQFAAP/DhdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAsxNfSQAAAAAAAAAAAAAAAAwA
GAAAAAAAAAAQAO1BRjULAHJldHJpZXMvc3ZnL1VUBQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAALMTX0kAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQYw1CwByZXRyaWVzL3N2Zy93aWNk
L1VUBQADAg8XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMTX0n5M/kGoO4AAET9AAAuABgA
AAAAAAAAAACkgdc1CwByZXRyaWVzL3N2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi1hY3R1YWwu
cG5nVVQFAAMCDxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsxNfSSAzfW5VowAAzqQAACwA
GAAAAAAAAAAAAKSB3yQMAHJldHJpZXMvc3ZnL3dpY2QvdGVzdC1yaWdodHNpemluZy1iLWRpZmYu
cG5nVVQFAAMCDxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAsxNfSc1qVj+OBQAAHhIAAC4A
GAAAAAAAAQAAAKSBmsgMAHJldHJpZXMvc3ZnL3dpY2QvdGVzdC1yaWdodHNpemluZy1iLWRpZmZz
Lmh0bWxVVAUAAwIPF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACzE19JDBfyz8rFAAD40AAA
MAAYAAAAAAAAAAAApIGQzgwAcmV0cmllcy9zdmcvd2ljZC90ZXN0LXJpZ2h0c2l6aW5nLWItZXhw
ZWN0ZWQucG5nVVQFAAMCDxdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAjg1fSQAAAAAAAAAA
AAAAAAsAGAAAAAAAAAAQAO1BxJQNAHNjcm9sbGJhcnMvVVQFAANsBBdYdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAvRJfSW69I2E5AAAAQgAAADsAGAAAAAAAAQAAAKSBCZUNAHNjcm9sbGJhcnMv
c2Nyb2xsZXZlbnQtaWZyYW1lLW5vLXNjcm9sbGluZy13aGVlbC1zdGRlcnIudHh0VVQFAAM2DRdY
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAtBNfScvah4cz0AgA9KwuAAoAGAAAAAAAAQAAAKSB
t5UNAHN0YXRzLmpzb25VVAUAAwMPF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADbEl9JAAAA
AAAAAAAAAAAABAAYAAAAAAAAABAA7UEuZhYAc3ZnL1VUBQADbg0XWHV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAKINX0kAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQWxmFgBzdmcvYXMtaW1hZ2Uv
VVQFAAOQBBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA0xJfSdsI00I7AAAAPwAAAD8AGAAA
AAAAAQAAAKSBs2YWAHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMt
ZGlzYWJsZWQtc3RkZXJyLnR4dFVUBQADXQ0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAALcN
X0kAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQWdnFgBzdmcvY3VzdG9tL1VUBQADuQQXWHV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAOsSX0kh9PbwOgAAAEIAAAAwABgAAAAAAAEAAACkgaxnFgBz
dmcvY3VzdG9tL3VzZS1pbnZhbGlkYXRlLWNsaWNrLWNyYXNoLXN0ZGVyci50eHRVVAUAA4oNF1h1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADbEl9JAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UFQ
aBYAc3ZnL3dpY2QvVVQFAANuDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA2xJfSXQ8JOq2
BAAA3hkAACYAGAAAAAAAAQAAAKSBk2gWAHN2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi1hY3R1
YWwudHh0VVQFAANuDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA2xJfSS+VNQA7AgAAKAcA
ACQAGAAAAAAAAQAAAKSBqW0WAHN2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi1kaWZmLnR4dFVU
BQADbg0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIANsSX0l28f9OswQAANgZAAAoABgAAAAA
AAEAAACkgUJwFgBzdmcvd2ljZC90ZXN0LXJpZ2h0c2l6aW5nLWItZXhwZWN0ZWQudHh0VVQFAANu
DRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA2xJfSbxwsgGpCQAAYCoAACwAGAAAAAAAAQAA
AKSBV3UWAHN2Zy93aWNkL3Rlc3QtcmlnaHRzaXppbmctYi1wcmV0dHktZGlmZi5odG1sVVQFAANu
DRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAArQ1fSQAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQ
AO1BZn8WAHRhYmxlcy9VVAUAA6YEF1h1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACtDV9JAAAA
AAAAAAAAAAAADwAYAAAAAAAAABAA7UGnfxYAdGFibGVzL21vemlsbGEvVVQFAAOmBBdYdXgLAAEE
9QEAAARQAAAAUEsBAh4DCgAAAAAArQ1fSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1B8H8WAHRh
Ymxlcy9tb3ppbGxhL2J1Z3MvVVQFAAOmBBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgArQ1f
Sb7H8/xqAAAAbAAAACYAGAAAAAAAAQAAAKSBPoAWAHRhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNDUy
Ny1zdGRlcnIudHh0VVQFAAOmBBdYdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAsg1fSQAAAAAA
AAAAAAAAAAsAGAAAAAAAAAAQAO1BCIEWAHdlYmFyY2hpdmUvVVQFAAOvBBdYdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgA4xJfSdsI00I7AAAAPwAAADoAGAAAAAAAAQAAAKSBTYEWAHdlYmFyY2hp
dmUvdGVzdC1saW5rLXJlbC1zdWJyZXNvdXJjZS1iZWZvcmVsb2FkLXN0ZGVyci50eHRVVAUAA3kN
F1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADaDV9Jit+fipE+AAAi1AAAIQAYAAAAAAABAAAA
pIH8gRYAV2ViS2l0VGVzdFJ1bm5lci00Nzc1Ny1zYW1wbGUudHh0VVQFAAP8BBdYdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAsRJfSdeKyagoPgAAfdIAACEAGAAAAAAAAQAAAKSB6MAWAFdlYktp
dFRlc3RSdW5uZXItNjQ3OTktc2FtcGxlLnR4dFVUBQADHg0XWHV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIALESX0nP+QQsJj4AAH3SAAAhABgAAAAAAAEAAACkgWv/FgBXZWJLaXRUZXN0UnVubmVy
LTY0ODExLXNhbXBsZS50eHRVVAUAAx4NF1h1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAALE19J
gUYr6iM+AAB90gAAIQAYAAAAAAABAAAApIHsPRcAV2ViS2l0VGVzdFJ1bm5lci02NDgyMS1zYW1w
bGUudHh0VVQFAAPGDRdYdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA+RJfSc2+zHIpPgAAfdIA
ACEAGAAAAAAAAQAAAKSBanwXAFdlYktpdFRlc3RSdW5uZXItNjYzMzEtc2FtcGxlLnR4dFVUBQAD
pQ0XWHV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALMTX0kQ7QGZnQIAAJsSAAAZABgAAAAAAAEA
AACkge66FwB3cHR3a19wcm9jZXNzX2xvZy5vdXQudHh0VVQFAAMCDxdYdXgLAAEE9QEAAARQAAAA
UEsFBgAAAAChAaEB7ccAAN69FwAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293435</attachid>
            <date>2016-10-31 10:55:40 -0700</date>
            <delta_ts>2016-10-31 11:59:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031105145.patch</filename>
            <type>text/plain</type>
            <size>159462</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi45ZDcyODM1ZjA5OTY3ZDI4
MDU5OWJlZjViY2EyM2FhYjNiNzFlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1w
bGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgUHJldmlvdXMgV1RGOjpPcHRpb25hbDo6b3BlcmF0b3I9IGlzIG5vdCBjb21wYXRpYmxl
IHRvIHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yPS4KKyAgICAgICAgc3RkOjpvcHRpb25hbDo6ZW1w
bGFjZSBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91cyBvbmUuCisgICAgICAg
IFNvIHdlIGNoYW5nZSB0aGUgY29kZSB0byB1c2UgaXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIFVzZSB2YWx1ZV9vciBp
bnN0ZWFkIG9mIHZhbHVlT3IuCisKIDIwMTYtMTAtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJpbmdpZnkgc2hvdWxkIGhh
bmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJheSBpcyB0cnVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAuLjU5NDQzYWQ0OTY4YThi
NjU4YjdhNmY4MmQ0NTEyZThlZjRjN2JkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTYtMTAt
MzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dU
Rl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6
T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZmZlcmVkIGJ5
IHRoZSBDKysxNworICAgICAgICBvcmlnaW5hbCBwcm9wb3NhbCBwYXBlci4gSXQgaGFzIHRoZSBz
YW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eQorICAgICAgICB0byB0aGUgQysrMTcncyBv
bmUuIFByZXZpb3VzIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFsaXRpZXMu
CisgICAgICAgIFRoZSBsYXJnZXN0IG9uZSBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIgY29uc3Ry
dWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBPcHRpb25h
bDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluIFdlYktpdC4KKworICAgICAg
ICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3RydWN0b3JzLiBTbyBvbmx5
IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhlIHdheSB0byB1c2UgV1RG
OjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGdsb2JhbCB2YXJpYWJsZXMu
IFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBhbmQKKyAgICAgICAgd2Ug
d291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFyaWFibGVzIHRoYXQgaW5j
bHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBpcyB0aGUgbWFpbiBtb3Rp
dmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGFsbG93cyB0
aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAgICAgIHNpZ25hdHVyZXMg
YXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAgICAgV2UgaW1wb3J0IHRo
ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIGluc3RlYWQgb2YgTExWTSBsaWJjKysncyBv
bmUuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBMTFZNIGxpYmMrKydzIG9uZSBkZXBlbmRzIG9u
IG1hbnkgbWFjcm8gYW5kIHR5cGVfdHJhaXRzCisgICAgICAgIG9mZmVyZWQgYnkgbGliYysrIGlt
cGxlbWVudGF0aW9uLiBBbmQgYWRvcHRpbmcgaXQgdG8gV2ViS2l0IHJlcXVpcmVzCisgICAgICAg
IGxhcmdlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGlzIHJlZmVyZW5jZSBpbXBsZW1lbnRh
dGlvbiBvbmUuCisgICAgICAgIFRvIGtlZXAgdGhlIHRoaW5nIHNpbXBsZSwgd2UgaW1wb3J0IHRo
ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIG5vdy4KKyAgICAgICAgT25jZSBDKysxNyBp
cyByZWxlYXNlZCBhbmQgd2UgdXBkYXRlIHRoZSBjb21waWxlciBiYXNlbGluZSwgd2UgY2FuIHNt
b290aGx5CisgICAgICAgIHN3aXRjaCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIHN0ZDo6b3B0
aW9uYWwuCisKKyAgICAgICAgQW5kIHdlIGFsc28gYWRkIHZhbHVlT3JDb21wdXRlIGhlbHBlciBm
dW5jdGlvbi4gVGhhdCBrZWVwcyB0aGUgZXh0ZW5kZWQKKyAgICAgICAgZnVuY3Rpb25hbGl0eSB0
aGF0IHByZXZpb3VzIFdURjo6T3B0aW9uYWwgaGFzLgorCisgICAgICAgICogd3RmL09wdGlvbmFs
Lmg6CisgICAgICAgIChXVEY6OmlzX2Fzc2lnbmFibGU6Omhhc19hc3NpZ24pOgorICAgICAgICAo
V1RGOjpkZXRhaWxfOjpoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y6Omhhc19vdmVybG9hZCk6Cisg
ICAgICAgIChXVEY6OmRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YpOgorICAgICAgICAoV1RGOjpk
ZXRhaWxfOjpjb252ZXJ0KToKKyAgICAgICAgKFdURjo6bnVsbG9wdF90OjpudWxsb3B0X3QpOgor
ICAgICAgICAoV1RGOjpiYWRfb3B0aW9uYWxfYWNjZXNzOjpiYWRfb3B0aW9uYWxfYWNjZXNzKToK
KyAgICAgICAgKFdURjo6b3B0aW9uYWxfYmFzZTo6b3B0aW9uYWxfYmFzZSk6CisgICAgICAgIChX
VEY6Om9wdGlvbmFsX2Jhc2U6On5vcHRpb25hbF9iYXNlKToKKyAgICAgICAgKFdURjo6Y29uc3Rl
eHByX29wdGlvbmFsX2Jhc2U6OmNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKToKKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6OmRhdGFwdHIpOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6Y29udGFpbmVk
X3ZhbCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpfX05PRVhDRVBUXyk6CisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRv
cj0pOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6ZW1wbGFjZSk6CisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpvcGVyYXRvciAtPik6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvciAq
KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6OnZhbHVlKToKKyAgICAgICAgKFdURjo6T3B0aW9u
YWw6OnZhbHVlX29yKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6
Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjwpOgorICAgICAgICAoV1RGOjpv
cGVyYXRvcj4pOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw9KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3I+PSk6CisgICAgICAgIChXVEY6Ol9fTk9FWENFUFRfKToKKyAgICAgICAgKFdURjo6bWFr
ZU9wdGlvbmFsKToKKyAgICAgICAgKHN0ZDo6aGFzaDxXVEY6Ok9wdGlvbmFsPFQ+Pjo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChXVEY6Ok51bGxvcHRUYWc6Ok51bGxvcHRUYWcpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6fk9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6T3B0aW9uYWw6Om9wZXJhdG9yIGJvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRp
b25hbDo6b3BlcmF0b3ItPik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVy
YXRvciopOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9yQ29tcHV0ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6Ok9wdGlvbmFsOjphc1B0cik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjpkZXN0cm95KTogRGVsZXRlZC4KKwogMjAxNi0xMC0zMCAgRnJlZGVyaWMgV2FuZyAg
PGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIEhhcmZCdXp6IG90LW1hdGggQVBJIHRv
IHBhcnNlIHRoZSBPcGVuVHlwZSBNQVRIIHRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ExMWNjOGMzOGQ4
Yzk4MGI2ZDhmZjc4MTkwMzc2Mzk3MTU4NTNiNS4uNzhjOTcxNjQ2YTQzYjIyYzY1OGQxMWM1MjY4
NTc2MGI1M2RlMmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MyBAQAorMjAxNi0xMC0zMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJ
bXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRp
b25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHZhbHVlT3IgdG8gdmFsdWVfb3IuIFRoaXMgaXMgc3BlY2lmaWVkIGluIEMrKzE3IHByb3Bv
c2FsLgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6ZW1wbGFjZS4gQysrMTcgT3B0aW9uYWw6Om9w
ZXJhdG9yPShPcHRpb25hbCYmKSByZXF1aXJlcworICAgICAgICBlaXRoZXIgY29weSBhc3NpZ25t
ZW50IG9wZXJhdG9yIG9yIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4gQnV0CisgICAgICAgIERG
Rzo6SlNWYWx1ZU9wZXJhbmQgZXRjLiBvbmx5IGRlZmluZXMgbW92ZSBjb25zdHJ1Y3RvcnMgYW5k
IGRyb3AKKyAgICAgICAgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKworICAg
ICAgICBJdCB3YXMgT0sgaW4gdGhlIHByZXZpb3VzIFdURjo6T3B0aW9uYWwgc2luY2UgaXQgYWx3
YXlzIHVzZXMgbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMuIEJ1dCBpdCBpcyBub3QgdmFsaWQg
aW4gQysrMTcgT3B0aW9uYWwuIFdlIHVzZSBPcHRpb25hbDo6ZW1wbGFjZQorICAgICAgICBpbnN0
ZWFkLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHByZXZpb3Vz
IFdURjo6T3B0aW9uYWwncworICAgICAgICBvcGVyYXRvcj0uCisKKyAgICAgICAgTm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0
Y2gpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnREVE1G
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVByb21pc2U6OkRPTVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlz
ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgRE9NUHJvbWlzZSBpcyBleG50ZW5kZWQgdG8gaGF2ZSBj
b3B5ICYgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKworICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUp
OgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjptaW5M
ZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbCk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2ViQ29yZTo6bGltaXRU
b09ubHlIVE1MTm9uTmVnYXRpdmUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1
cmxTZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlm
aWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmRlYnVnU3RyaW5nKToKKyAgICAgICAgKiBwYWdl
L1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5I
YXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JU
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
Om5hdHVyYWxTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjptYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBv
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxm
QW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRy
YW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3Rh
dGU6Om1hcHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5z
Zm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgICogcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
c3Vic3RyaW5nVG9SZW5kZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludEluZm8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21w
dXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3g6OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YmFz
ZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cHJl
ZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRUcmFjazo6c2V0R3Jvd3RoTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pblNpemVGb3JDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNG
b3JOb25TcGFubmluZ0l0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OnNvcnRCeUdyaWRUcmFja0dy
b3d0aFBvdGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjp0cmFja3NBcmVX
aWRlclRoYW5NaW5UcmFja0JyZWFkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlp
bmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
dWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNv
bnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6
Y2VsbEJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExp
bmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmlldyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJs
b2NrOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YXNj
ZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQ
b2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZsb2F0
UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1No
YXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQ
b2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmludGVyc2VjdFJlcGFpbnRSZWN0V2l0
aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcik6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29u
dmVydGVyKToKKwogMjAxNi0xMC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGZpeDogQ29ycmVjdCBDaGFuZ2VMb2cgYWZ0ZXIgbXkg
YmFkIG1lcmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGNmNmFlNjFkOTk0NTRiYzBiOTkwMTgxZWI0
NGIyYjMzMzQyNWRjMzUuLmFmOGI3ZTk1ZDRiNWZhOGYwOTczNjVmNmQ5YjliN2Y4MTZjZDJmYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0xMC0zMSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3Rk
OjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6T3B0
aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIHBvcnRdKToKKwogMjAxNi0x
MC0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVt
ZW50LCBOYW1lZE5vZGVNYXAsIGFuZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRv
IEV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDFhNjZhZjcwNWYwZjZlMDgyN2M3ZDA4N2E2
YTlkYjU3ODYzZWYyMDcuLjFkNTJlNmM1ZjI4YzVkOWY1MTRjYTlhZTRlMDc4NTBhMTU1YzhlYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0xMC0zMSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3Rk
OjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6T3B0
aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAg
ICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQpOgorCiAyMDE2LTEwLTMwICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIEVsZW1lbnQsIE5hbWVkTm9kZU1h
cCwgYW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMTY3NmVhOTQxNTIxOWE1NjUwOGIwMTQ3MGU4YmU5NTYwZGZkZGExZi4uOWRiYTdi
ODU2OTBkMDcwNDUzYTA2NGJmZjA3ZjQxOTJlNjY3MDcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQxIEBACisyMDE2LTEwLTMxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1l
bnRhdGlvbiBhcyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6dmFsdWVfb3IgYW5kIFdURjo6dmFs
dWVPckNvbXB1dGUuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJl
Zi5jcHA6CisgICAgICAgIChXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dL
U2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp0
b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9y
ZUZyb21TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNv
bnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojpib3VuZHNPblNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlE
aWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWU6OmNlcnRpZmljYXRlSW5mbyk6CisKIDIwMTYtMTAtMzAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFtZWROb2RlTWFwLCBhbmQgRE9N
U3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2I1N2IxODkyOTM3
MDYxMGI3M2EwMGNlNWM1MDlkMzFjZmI1NTYxZi4uMTE5ZDZkYmVjMjI1NWMyNGQ3NGY2NzI5YmY2
NmYwYjM3YzRiYzViNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTMyNTIsMTEgKzMyNTIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0
T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCiAgICAgaWYg
KCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5k
KHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQp
OwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogICAgIGlm
ICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodCA9IEpTVmFsdWVPcGVy
YW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0
Q2hpbGQpOwogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9
CiAKQEAgLTM0MDUsMTEgKzM0MDUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlw
ZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9w
ZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICgh
bGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0
aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsK
ICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KICAgICBpZiAo
IXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFu
ZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENo
aWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQog
CkBAIC0zNTQ2LDcgKzM1NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElD
KE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogCiAgICAgT3B0
aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlmIChuZWVkc1NjcmF0Y2hGUFJS
ZWcpIHsKLSAgICAgICAgZnByU2NyYXRjaCA9IEZQUlRlbXBvcmFyeSh0aGlzKTsKKyAgICAgICAg
ZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3JhdGNoRlBSID0gZnByU2NyYXRj
aC0+ZnByKCk7CiAgICAgfQogCkBAIC0zNTgwLDExICszNTgwLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRv
cj4qIG1hdGhJCiAgICAgQVNTRVJUKCEoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25z
dGFudChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3Rh
bnQocmlnaHRPcGVyYW5kKSkpOwogCiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRW
YWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJh
bmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGls
ZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAgICAg
aWYgKCFHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChyaWdodE9wZXJhbmQp
KSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7Cisg
ICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVn
cyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzY0OSwxMCArMzY0OSwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9KTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpZiAoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFu
ZCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQp
OworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgICAg
ICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoR2Vu
ZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVyYW5kKSkgewotICAg
ICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAg
ICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgICAgICByaWdo
dFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQogCkBAIC00NzY2LDExICs0
NzY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdihOb2RlKiBub2Rl
KQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdo
dE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3Qo
KSkgewotICAgICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7
CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgICAg
IGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9w
ZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMs
IHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgICAgIH0KIApAQCAtNzI3Nyw3ICs3Mjc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICBPcHRpb25hbDxTcGVjdWxh
dGVDZWxsT3BlcmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJl
R2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9iamVjdEVkZ2UgPSBub2RlLT5j
aGlsZDIoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0ID0gU3BlY3VsYXRlQ2VsbE9wZXJhbmQodGhp
cywgZ2xvYmFsT2JqZWN0RWRnZSk7CisgICAgICAgIGdsb2JhbE9iamVjdC5lbXBsYWNlKHRoaXMs
IGdsb2JhbE9iamVjdEVkZ2UpOwogICAgICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGds
b2JhbE9iamVjdC0+Z3ByKCksIG1fc3RhdGUuZm9yTm9kZShnbG9iYWxPYmplY3RFZGdlKS52YWx1
ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4ZjcyYjFlOGRiNjFkN2YzM2UzMDNkM2I3M2Q1
YjNmNTJiZWNlOGY4Li5mOThlMTQ1ZGY0NWIwYWM5NTcyZDNmNThkYzE5ZWIzMzIzMDJiZjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTUwNDUsMTEgKzUwNDUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNW
YWx1ZTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsKICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICBrZXlBc1ZhbHVl
ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAga2V5
QXNWYWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleVJl
Z3MgPSBrZXlBc1ZhbHVlLT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UgfHwgbm9k
ZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgICAgICAgICBrZXlBc0Nl
bGwgPSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBrZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICBrZXlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGtleUFzQ2VsbC0+Z3ByKCkpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGY4OWMxZTY5NzU2OWIzMjhjMWIyZGQ0MjVkZTM1ZTRmNDJhMzc0
ODYuLjVmMTczYjYwOTQ1OGYwMDg2NTc4N2YyYmMwYWQ3N2NjMzNjYzEyMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTE5
NSwxMSArNTE5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVlOwogICAgICAgICBH
UFJSZWcga2V5R1BSOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtleUFzVmFsdWUgPSBKU1ZhbHVlT3BlcmFuZCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc1ZhbHVlLmVtcGxhY2UodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5R1BSID0ga2V5QXNWYWx1ZS0+Z3ByKCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQyKCkudXNl
S2luZCgpID09IFN0cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3ltYm9s
VXNlKTsKLSAgICAgICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzQ2VsbC5lbXBsYWNlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtleUFzQ2VsbC0+Z3ByKCk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCmluZGV4IDEyZjk1
NGMwMzQ5YzFiZmM3MzMwM2Q2MjlmZGYxZmViYTU2MjU1N2MuLjA0ODJjNzhhNThmYjU4MDJjZDE4
NzcxMmViYWUyYTYwOWU0NDJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
bW0KQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0
dXAoYm9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGljYQogICAgICAgICB7
CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3RhcmdldE11dGV4KTsK
ICAgICAgICAgICAgIGlmICghbV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1vdGVDb250cm9sQWxs
b3dlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5z
ZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigwKSk7CisgICAgICAgICAgICAg
ICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlm
aWVyKCkudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4obV90YXJn
ZXQpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjYXN0ZWRUYXJnZXQgPSBkb3duY2FzdDxSZW1v
dGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRleCA0Y2I1M2JmNTdm
ODI5ZTQ0ZGE5ZmJkNDlkNmZkOWM4Yzk4Yzk0NGQ0Li4zMjBlM2Q3YmQwOTFjMzhlMjg2ZDZjYzhm
YjljNjFjNjUyM2VlOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTEsMjczICsxLDExMTEgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIE9wdGlvbmFsX2gKLSNkZWZpbmUgT3B0aW9uYWxfaAotCi0jaW5jbHVk
ZSA8dHlwZV90cmFpdHM+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+Ci0KLS8vIFdURjo6T3B0aW9uYWwgaXMgYSBjbGFzcyBiYXNlZCBv
biBzdGQ6Om9wdGlvbmFsLCBkZXNjcmliZWQgaGVyZToKLS8vIGh0dHA6Ly93d3cub3Blbi1zdGQu
b3JnL0pUQzEvU0MyMi9XRzIxL2RvY3MvcGFwZXJzLzIwMTMvbjM1MjcuaHRtbAotLy8gSWYgdGhp
cyBlbmRzIHVwIGluIGEgQysrIHN0YW5kYXJkLCB3ZSBzaG91bGQgcmVwbGFjZSBvdXIgaW1wbGVt
ZW50YXRpb24gd2l0aCBpdC4KKy8vIENvcHlyaWdodCAoQykgMjAxMSAtIDIwMTIgQW5kcnplaiBL
cnplbWllbnNraS4KKy8vCisvLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBp
cyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQorLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAu
IChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKKy8vIGh0
dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKKy8vCisvLyBUaGUgaWRlYSBhbmQg
aW50ZXJmYWNlIGlzIGJhc2VkIG9uIEJvb3N0Lk9wdGlvbmFsIGxpYnJhcnkKKy8vIGF1dGhvcmVk
IGJ5IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsCisvLworLy8gQm9vc3QgU29mdHdh
cmUgTGljZW5zZSAtIFZlcnNpb24gMS4wIC0gQXVndXN0IDE3dGgsIDIwMDMKKy8vCisvLyBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
ciBvcmdhbml6YXRpb24KKy8vIG9idGFpbmluZyBhIGNvcHkgb2YgdGhlIHNvZnR3YXJlIGFuZCBh
Y2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBjb3ZlcmVkIGJ5CisvLyB0aGlzIGxpY2Vuc2UgKHRo
ZSAiU29mdHdhcmUiKSB0byB1c2UsIHJlcHJvZHVjZSwgZGlzcGxheSwgZGlzdHJpYnV0ZSwKKy8v
IGV4ZWN1dGUsIGFuZCB0cmFuc21pdCB0aGUgU29mdHdhcmUsIGFuZCB0byBwcmVwYXJlIGRlcml2
YXRpdmUgd29ya3Mgb2YgdGhlCisvLyBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCB0aGlyZC1wYXJ0
aWVzIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0bworLy8gZG8gc28sIGFsbCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmc6CisvLworLy8gVGhlIGNvcHlyaWdodCBub3RpY2VzIGlu
IHRoZSBTb2Z0d2FyZSBhbmQgdGhpcyBlbnRpcmUgc3RhdGVtZW50LCBpbmNsdWRpbmcKKy8vIHRo
ZSBhYm92ZSBsaWNlbnNlIGdyYW50LCB0aGlzIHJlc3RyaWN0aW9uIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIsCisvLyBtdXN0IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb2YgdGhlIFNv
ZnR3YXJlLCBpbiB3aG9sZSBvciBpbiBwYXJ0LCBhbmQKKy8vIGFsbCBkZXJpdmF0aXZlIHdvcmtz
IG9mIHRoZSBTb2Z0d2FyZSwgdW5sZXNzIHN1Y2ggY29waWVzIG9yIGRlcml2YXRpdmUKKy8vIHdv
cmtzIGFyZSBzb2xlbHkgaW4gdGhlIGZvcm0gb2YgbWFjaGluZS1leGVjdXRhYmxlIG9iamVjdCBj
b2RlIGdlbmVyYXRlZCBieQorLy8gYSBzb3VyY2UgbGFuZ3VhZ2UgcHJvY2Vzc29yLgorLy8KKy8v
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCisvLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy8vIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLCBUSVRMRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZF
TlQKKy8vIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBBTllPTkUgRElTVFJJQlVUSU5H
IFRIRSBTT0ZUV0FSRSBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgREFNQUdFUyBPUiBPVEhFUiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorLy8gQVJJU0lO
RyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg
VVNFIE9SIE9USEVSCisvLyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisKKy8vIENvcGllZCBm
cm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6ZW1pMS9PcHRpb25hbCAoNzI3YzcyOWRkMWQ5ZjA2
ZjIyNTg2ODI4MGU1MDE1NDU5NGQ3ZTU5ZCkKKworLy8gTW9kaWZpZWQgdG8gbWFrZSBpdCBjb21w
aWxlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxlZC4KKworI3ByYWdtYSBvbmNlCisKKyMgaW5jbHVk
ZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjIGluY2x1ZGUgPGluaXRpYWxp
emVyX2xpc3Q+CisjIGluY2x1ZGUgPGNhc3NlcnQ+CisjIGluY2x1ZGUgPGZ1bmN0aW9uYWw+Cisj
IGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVkZSA8c3RkZXhjZXB0PgorIyBpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorIyBpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KKyMgaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorCisjIGRlZmluZSBUUjJfT1BUSU9OQUxfUkVRVUlSRVMoLi4uKSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxfX1ZBX0FSR1NfXzo6dmFsdWUsIGJvb2w+Ojp0eXBlID0g
ZmFsc2UKKworIyBpZiBkZWZpbmVkIF9fR05VQ19fIC8vIE5PVEU6IEdOVUMgaXMgYWxzbyBkZWZp
bmVkIGZvciBDbGFuZworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18g
Pj0gOCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF9BTkRfSElHSEVSX19fCisj
ICAgZWxpZiAoX19HTlVDX18gPiA0KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF84
X0FORF9ISUdIRVJfX18KKyMgICBlbmRpZgorIworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAmJiAo
X19HTlVDX01JTk9SX18gPj0gNykKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfN19B
TkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQorIyAgICAgZGVmaW5lIFRSMl9P
UFRJT05BTF9HQ0NfNF83X0FORF9ISUdIRVJfX18KKyMgICBlbmRpZgorIworIyAgIGlmIChfX0dO
VUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPT0gOCkgJiYgKF9fR05VQ19QQVRDSExFVkVM
X18gPj0gMSkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9ISUdIRVJf
X18KKyMgICBlbGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gOSkKKyMg
ICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9ISUdIRVJfX18KKyMgICBlbGlm
IChfX0dOVUNfXyA+IDQpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRf
SElHSEVSX19fCisjICAgZW5kaWYKKyMgZW5kaWYKKyMKKyMgaWYgZGVmaW5lZCBfX2NsYW5nX21h
am9yX18KKyMgICBpZiAoX19jbGFuZ19tYWpvcl9fID09IDMgJiYgX19jbGFuZ19taW5vcl9fID49
IDUpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0NMQU5HXzNfNV9BTkRfSElHSFRFUl8KKyMg
ICBlbGlmIChfX2NsYW5nX21ham9yX18gPiAzKQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9D
TEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgZW5kaWYKKyMgICBpZiBkZWZpbmVkIFRSMl9PUFRJ
T05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0NM
QU5HXzNfNF8yX0FORF9ISUdIRVJfCisjICAgZWxpZiAoX19jbGFuZ19tYWpvcl9fID09IDMgJiYg
X19jbGFuZ19taW5vcl9fID09IDQgJiYgX19jbGFuZ19wYXRjaGxldmVsX18gPj0gMikKKyMgICAg
IGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdfM180XzJfQU5EX0hJR0hFUl8KKyMgICBlbmRpZgor
IyBlbmRpZgorIworIyBpZiBkZWZpbmVkIF9NU0NfVkVSCisjICAgaWYgKF9NU0NfVkVSID49IDE5
MDApCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX01TVkNfMjAxNV9BTkRfSElHSEVSX19fCisj
ICAgZW5kaWYKKyMgZW5kaWYKKworIyBpZiBkZWZpbmVkIF9fY2xhbmdfXworIyAgIGlmIChfX2Ns
YW5nX21ham9yX18gPiAyKSB8fCAoX19jbGFuZ19tYWpvcl9fID09IDIpICYmIChfX2NsYW5nX21p
bm9yX18gPj0gOSkKKyMgICAgIGRlZmluZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAx
CisjICAgZWxzZQorIyAgICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTIDAK
KyMgICBlbmRpZgorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRfSElH
SEVSX19fCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTIDEKKyMgZWxp
ZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9NU1ZDXzIwMTVfQU5EX0hJR0hFUl9fXworIyAgIGRlZmlu
ZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAxCisjIGVsc2UKKyMgICBkZWZpbmUgT1BU
SU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgMAorIyBlbmRpZgorCisKKyMgaWYgZGVmaW5lZCBU
UjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9ISUdIRVJfX18KKyMgICBkZWZpbmUgT1BUSU9OQUxf
SEFTX0NPTlNURVhQUl9JTklUX0xJU1QgMQorIyAgIGRlZmluZSBPUFRJT05BTF9DT05TVEVYUFJf
SU5JVF9MSVNUIGNvbnN0ZXhwcgorIyBlbHNlCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19DT05T
VEVYUFJfSU5JVF9MSVNUIDAKKyMgICBkZWZpbmUgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElT
VAorIyBlbmRpZgorCisvLyBGSVhNRTogVG8gbWFrZSB0aGUgcmVzdWx0IG9mIHZhbHVlKCkgdHlw
ZSBjb25zaXN0ZW50IGFtb25nIHRoZSBjb21waWxlcnMsIHdlIG5vdyBpbnRlbnRpb25hbGx5IGRp
c2FibGVzIG1vdmUgYWNjZXNzb3JzLgorIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfTU9WRV9BQ0NF
U1NPUlMgMAorLy8gIyBpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hU
RVJfICYmIChkZWZpbmVkIF9fY3BsdXNwbHVzKSAmJiAoX19jcGx1c3BsdXMgIT0gMjAxMTAzTCkK
Ky8vICMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTIDEKKy8vICMgZWxzZQor
Ly8gIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfTU9WRV9BQ0NFU1NPUlMgMAorLy8gIyBlbmRpZgor
CisjIC8vIEluIEMrKzExIGNvbnN0ZXhwciBpbXBsaWVzIGNvbnN0LCBzbyB3ZSBuZWVkIHRvIG1h
a2Ugbm9uLWNvbnN0IG1lbWJlcnMgYWxzbyBub24tY29uc3RleHByCisjIGlmIChkZWZpbmVkIF9f
Y3BsdXNwbHVzKSAmJiAoX19jcGx1c3BsdXMgPT0gMjAxMTAzTCkKKyMgICBkZWZpbmUgT1BUSU9O
QUxfTVVUQUJMRV9DT05TVEVYUFIKKyMgZWxzZQorIyAgIGRlZmluZSBPUFRJT05BTF9NVVRBQkxF
X0NPTlNURVhQUiBjb25zdGV4cHIKKyMgZW5kaWYKKworI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVY
Q0VQVElPTlMpCisjZGVmaW5lIF9fVEhST1dfRVhDRVBUSU9OKF9fZXhjZXB0aW9uKSB0aHJvdyBf
X2V4Y2VwdGlvbjsKKyNkZWZpbmUgX19OT0VYQ0VQVCBub2V4Y2VwdAorI2RlZmluZSBfX05PRVhD
RVBUXyhfX2V4Y2VwdGlvbikgbm9leGNlcHQoX19leGNlcHRpb24pCisjZWxzZQorI2RlZmluZSBf
X1RIUk9XX0VYQ0VQVElPTihfX2V4Y2VwdGlvbikgZG8geyAodm9pZClfX2V4Y2VwdGlvbjsgQ1JB
U0goKTsgfSB3aGlsZSAoMCk7CisjZGVmaW5lIF9fTk9FWENFUFQKKyNkZWZpbmUgX19OT0VYQ0VQ
VF8oLi4uKQorI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgewogCi1zdHJ1Y3QgSW5QbGFjZVRhZyB7
IH07Ci1jb25zdGV4cHIgSW5QbGFjZVRhZyBJblBsYWNlIHsgfTsKKy8vIEFsbCBvdXIgdGFyZ2V0
IGNvbXBpbGVycyBzdXBwb3J0IGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGUuCisjaWYgMAorLy8g
QkVHSU4gd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlCisj
IGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0dDQ180XzhfQU5EX0hJR0hFUl9fXworICAgIC8vIGxl
YXZlIGl0OiBpdCBpcyBhbHJlYWR5IHRoZXJlCisjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxf
Q0xBTkdfM180XzJfQU5EX0hJR0hFUl8KKyAgICAvLyBsZWF2ZSBpdDogaXQgaXMgYWxyZWFkeSB0
aGVyZQorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX01TVkNfMjAxNV9BTkRfSElHSEVSX19f
CisgICAgLy8gbGVhdmUgaXQ6IGl0IGlzIGFscmVhZHkgdGhlcmUKKyMgZWxpZiBkZWZpbmVkIFRS
Ml9PUFRJT05BTF9ESVNBQkxFX0VNVUxBVElPTl9PRl9UWVBFX1RSQUlUUworICAgIC8vIGxlYXZl
IGl0OiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgaXQKKyMgZWxzZQorCXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorCXVzaW5nIGlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGUgPSBzdGQ6Omhhc190cml2aWFs
X2Rlc3RydWN0b3I8VD47CisjIGVuZGlmCisvLyBFTkQgd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlCisjZW5kaWYKKworIyBpZiAoZGVmaW5lZCBUUjJfT1BU
SU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fKQorICAgIC8vIGxlYXZlIGl0OyBvdXIgbWV0YWZ1
bmN0aW9ucyBhcmUgYWxyZWFkeSBkZWZpbmVkLgorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFM
X0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisgICAgLy8gbGVhdmUgaXQ7IG91ciBtZXRhZnVuY3Rp
b25zIGFyZSBhbHJlYWR5IGRlZmluZWQuCisjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfTVNW
Q18yMDE1X0FORF9ISUdIRVJfX18KKyAgICAvLyBsZWF2ZSBpdDogaXQgaXMgYWxyZWFkeSB0aGVy
ZQorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0RJU0FCTEVfRU1VTEFUSU9OX09GX1RZUEVf
VFJBSVRTCisgICAgLy8gbGVhdmUgaXQ6IHRoZSB1c2VyIGRvZXNuJ3Qgd2FudCBpdAorIyBlbHNl
CisKKworLy8gd29ya2Fyb3VuZCBmb3IgbWlzc2luZyB0cmFpdHMgaW4gR0NDIGFuZCBDTEFORwor
dGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUK
K3sKKyAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gc3RkOjppc19ub3Rocm93X2NvbnN0
cnVjdGlibGU8VCwgVCYmPjo6dmFsdWU7Cit9OworCisKK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFz
cyBVPgorc3RydWN0IGlzX2Fzc2lnbmFibGUKK3sKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNz
IFk+CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfYXNzaWduKC4uLikgeyByZXR1cm4gZmFs
c2U7IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWSwgc2l6ZV90IFMgPSBzaXplb2Yo
KHN0ZDo6ZGVjbHZhbDxYPigpID0gc3RkOjpkZWNsdmFsPFk+KCksIHRydWUpKSA+CisgIC8vIHRo
ZSBjb21tYSBvcGVyYXRvciBpcyBuZWNlc3NhcnkgZm9yIHRoZSBjYXNlcyB3aGVyZSBvcGVyYXRv
cj0gcmV0dXJucyB2b2lkCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfYXNzaWduKGJvb2wp
IHsgcmV0dXJuIHRydWU7IH0KKworICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBoYXNf
YXNzaWduPFQsIFU+KHRydWUpOworfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBp
c19ub3Rocm93X21vdmVfYXNzaWduYWJsZQoreworICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgYm9vbCBo
YXNfYW55X21vdmVfYXNzaWduPgorICBzdHJ1Y3QgaGFzX25vdGhyb3dfbW92ZV9hc3NpZ24gewor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IGZhbHNlOworICB9OworCisgIHRlbXBs
YXRlIDxjbGFzcyBYPgorICBzdHJ1Y3QgaGFzX25vdGhyb3dfbW92ZV9hc3NpZ248WCwgdHJ1ZT4g
eworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IF9fTk9FWENFUFRfKCBzdGQ6OmRl
Y2x2YWw8WCY+KCkgPSBzdGQ6OmRlY2x2YWw8WCYmPigpICk7CisgIH07CisKKyAgY29uc3RleHBy
IHN0YXRpYyBib29sIHZhbHVlID0gaGFzX25vdGhyb3dfbW92ZV9hc3NpZ248VCwgaXNfYXNzaWdu
YWJsZTxUJiwgVCYmPjo6dmFsdWU+Ojp2YWx1ZTsKK307CisvLyBlbmQgd29ya2Fyb3VuZAorCisK
KyMgZW5kaWYKKworCisKKy8vIDIwLjUuNCwgb3B0aW9uYWwgZm9yIG9iamVjdCB0eXBlcwordGVt
cGxhdGUgPGNsYXNzIFQ+IGNsYXNzIE9wdGlvbmFsOworCisvLyAyMC41LjUsIG9wdGlvbmFsIGZv
ciBsdmFsdWUgcmVmZXJlbmNlIHR5cGVzCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgT3B0aW9u
YWw8VCY+OworCisKKy8vIHdvcmthcm91bmQ6IHN0ZCB1dGlsaXR5IGZ1bmN0aW9ucyBhcmVuJ3Qg
Y29uc3RleHByIHlldAordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgVCYmIGNv
bnN0ZXhwcl9mb3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYg
dCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gc3RhdGljX2Nhc3Q8VCYmPih0KTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgVCYmIGNvbnN0ZXhwcl9mb3J3YXJkKHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYmIHQpIF9fTk9FWENFUFQKK3sK
KyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlLCAi
ISEiKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCYmPih0KTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGlubGluZSBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+
Ojp0eXBlJiYgY29uc3RleHByX21vdmUoVCYmIHQpIF9fTk9FWENFUFQKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiY+KHQp
OworfQorCisKKyNpZiBkZWZpbmVkIE5ERUJVRworIyBkZWZpbmUgVFIyX09QVElPTkFMX0FTU0VS
VEVEX0VYUFJFU1NJT04oQ0hFQ0ssIEVYUFIpIChFWFBSKQorI2Vsc2UKKyMgZGVmaW5lIFRSMl9P
UFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKENIRUNLLCBFWFBSKSAoKENIRUNLKSA/IChFWFBS
KSA6IChbXXthc3NlcnQoISNDSEVDSyk7fSgpLCAoRVhQUikpKQorI2VuZGlmCisKKworbmFtZXNw
YWNlIGRldGFpbF8KK3sKKworLy8gc3RhdGljX2FkZHJlc3NvZjogYSBjb25zdGV4cHIgdmVyc2lv
biBvZiBhZGRyZXNzb2YKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGhhc19vdmVybG9h
ZGVkX2FkZHJlc3NvZgoreworICB0ZW1wbGF0ZSA8Y2xhc3MgWD4KKyAgY29uc3RleHByIHN0YXRp
YyBib29sIGhhc19vdmVybG9hZCguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgdGVtcGxhdGUg
PGNsYXNzIFgsIHNpemVfdCBTID0gc2l6ZW9mKHN0ZDo6ZGVjbHZhbDxYJj4oKS5vcGVyYXRvciYo
KSkgPgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX292ZXJsb2FkKGJvb2wpIHsgcmV0dXJu
IHRydWU7IH0KKworICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBoYXNfb3ZlcmxvYWQ8
VD4odHJ1ZSk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVFIyX09QVElPTkFMX1JFUVVJ
UkVTKCFoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4pPgorY29uc3RleHByIFQqIHN0YXRpY19h
ZGRyZXNzb2YoVCYgcmVmKQoreworICByZXR1cm4gJnJlZjsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4p
PgorVCogc3RhdGljX2FkZHJlc3NvZihUJiByZWYpCit7CisgIHJldHVybiBzdGQ6OmFkZHJlc3Nv
ZihyZWYpOworfQorCisKKy8vIHRoZSBjYWxsIHRvIGNvbnZlcnQ8QT4oYikgaGFzIHJldHVybiB0
eXBlIEEgYW5kIGNvbnZlcnRzIGIgdG8gdHlwZSBBIGlmZiBiIGRlY2x0eXBlKGIpIGlzIGltcGxp
Y2l0bHkgY29udmVydGlibGUgdG8gQQordGVtcGxhdGUgPGNsYXNzIFU+Citjb25zdGV4cHIgVSBj
b252ZXJ0KFUgdikgeyByZXR1cm4gdjsgfQorCit9IC8vIG5hbWVzcGFjZSBkZXRhaWwKKworCitj
b25zdGV4cHIgc3RydWN0IHRyaXZpYWxfaW5pdF90e30gdHJpdmlhbF9pbml0e307CiAKLXN0cnVj
dCBOdWxsb3B0VGFnIHsgZXhwbGljaXQgY29uc3RleHByIE51bGxvcHRUYWcoaW50KSB7IH0gfTsK
LWNvbnN0ZXhwciBOdWxsb3B0VGFnIE51bGxvcHQgeyAwIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBPcHRpb25hbCB7CisvLyAyMC41LjYsIEluLXBsYWNlIGNvbnN0cnVjdGlvbgor
Y29uc3RleHByIHN0cnVjdCBJblBsYWNlVGFne30gSW5QbGFjZXt9OworCisKKy8vIDIwLjUuNywg
RGlzZW5nYWdlZCBzdGF0ZSBpbmRpY2F0b3IKK3N0cnVjdCBudWxsb3B0X3QKK3sKKyAgc3RydWN0
IGluaXR7fTsKKyAgY29uc3RleHByIGV4cGxpY2l0IG51bGxvcHRfdChpbml0KXt9Cit9OworY29u
c3RleHByIG51bGxvcHRfdCBOdWxsb3B0e251bGxvcHRfdDo6aW5pdCgpfTsKKworCisvLyAyMC41
LjgsIGNsYXNzIGJhZF9vcHRpb25hbF9hY2Nlc3MKK2NsYXNzIGJhZF9vcHRpb25hbF9hY2Nlc3Mg
OiBwdWJsaWMgc3RkOjpsb2dpY19lcnJvciB7CiBwdWJsaWM6Ci0gICAgT3B0aW9uYWwoKQotICAg
ICAgICA6IG1faXNFbmdhZ2VkKGZhbHNlKQotICAgIHsKLSAgICB9CisgIGV4cGxpY2l0IGJhZF9v
cHRpb25hbF9hY2Nlc3MoY29uc3Qgc3RkOjpzdHJpbmcmIHdoYXRfYXJnKSA6IHN0ZDo6bG9naWNf
ZXJyb3J7d2hhdF9hcmd9IHt9CisgIGV4cGxpY2l0IGJhZF9vcHRpb25hbF9hY2Nlc3MoY29uc3Qg
Y2hhciogd2hhdF9hcmcpIDogc3RkOjpsb2dpY19lcnJvcnt3aGF0X2FyZ30ge30KK307CiAKLSAg
ICBPcHRpb25hbChOdWxsb3B0VGFnKQotICAgICAgICA6IG1faXNFbmdhZ2VkKGZhbHNlKQotICAg
IHsKLSAgICB9CiAKLSAgICBPcHRpb25hbChjb25zdCBUJiB2YWx1ZSkKLSAgICAgICAgOiBtX2lz
RW5nYWdlZCh0cnVlKQotICAgIHsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCh2
YWx1ZSk7Ci0gICAgfQordGVtcGxhdGUgPGNsYXNzIFQ+Cit1bmlvbiBzdG9yYWdlX3QKK3sKKyAg
dW5zaWduZWQgY2hhciBkdW1teV87CisgIFQgdmFsdWVfOwogCi0gICAgT3B0aW9uYWwoY29uc3Qg
T3B0aW9uYWwmIG90aGVyKQotICAgICAgICA6IG1faXNFbmdhZ2VkKG90aGVyLm1faXNFbmdhZ2Vk
KQotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgbmV3IChOb3RO
dWxsLCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0gICAgfQorICBjb25zdGV4cHIgc3Rv
cmFnZV90KCB0cml2aWFsX2luaXRfdCApIF9fTk9FWENFUFQgOiBkdW1teV8oKSB7fTsKIAotICAg
IE9wdGlvbmFsKE9wdGlvbmFsJiYgb3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQob3RoZXIu
bV9pc0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAg
ICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUoKm90aGVyLmFzUHRyKCkpKTsKLSAg
ICB9CisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBjb25zdGV4cHIgc3RvcmFnZV90KCBB
cmdzJiYuLi4gYXJncyApIDogdmFsdWVfKGNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSB7fQogCi0gICAgT3B0aW9uYWwoVCYmIHZhbHVlKQotICAgICAgICA6IG1faXNFbmdhZ2VkKHRy
dWUpCi0gICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUodmFs
dWUpKTsKLSAgICB9CisgIH5zdG9yYWdlX3QoKXt9Cit9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJncz4KLSAgICBPcHRpb25hbChJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJncykKLSAg
ICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAgIHsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAm
bV92YWx1ZSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIH0KIAotICAgIH5P
cHRpb25hbCgpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgfQordGVtcGxhdGUgPGNs
YXNzIFQ+Cit1bmlvbiBjb25zdGV4cHJfc3RvcmFnZV90Cit7CisgICAgdW5zaWduZWQgY2hhciBk
dW1teV87CisgICAgVCB2YWx1ZV87CiAKLSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE51bGxvcHRU
YWcpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlX3QoIHRyaXZpYWxfaW5pdF90ICkg
X19OT0VYQ0VQVCA6IGR1bW15XygpIHt9OwogCi0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShjb25z
dCBPcHRpb25hbCYgb3RoZXIpCi0gICAgewotICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0g
ICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgZGVzdHJveSgpOwotICAgICAgICBp
ZiAob3RoZXIubV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFs
dWUpIFQoKm90aGVyLmFzUHRyKCkpOwotICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9CisgICAgdGVtcGxhdGUgPGNs
YXNzLi4uIEFyZ3M+CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdlX3QoIEFyZ3MmJi4u
LiBhcmdzICkgOiB2YWx1ZV8oY29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CiAK
LSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFsJiYgb3RoZXIpCi0gICAgewotICAgICAg
ICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAg
ICAgZGVzdHJveSgpOwotICAgICAgICBpZiAob3RoZXIubV9pc0VuZ2FnZWQpIHsKLSAgICAgICAg
ICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSgqb3RoZXIuYXNQdHIoKSkpOwot
ICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biAqdGhpczsKLSAgICB9CisgICAgfmNvbnN0ZXhwcl9zdG9yYWdlX3QoKSA9IGRlZmF1bHQ7Cit9
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBl
LCBUPjo6dmFsdWU+Ojp0eXBlPgotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oVSYmIHUpCi0gICAg
ewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQo
c3RkOjpmb3J3YXJkPFU+KHUpKTsKLSAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOwotICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNFbmdhZ2VkOyB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBv
cHRpb25hbF9iYXNlCit7CisgICAgYm9vbCBpbml0XzsKKyAgICBzdG9yYWdlX3Q8VD4gc3RvcmFn
ZV87CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiBhc1B0cigpOwotICAgIH0KKyAgICBj
b25zdGV4cHIgb3B0aW9uYWxfYmFzZSgpIF9fTk9FWENFUFQgOiBpbml0XyhmYWxzZSksIHN0b3Jh
Z2VfKHRyaXZpYWxfaW5pdCkge307CiAKLSAgICBUKiBvcGVyYXRvci0+KCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiBhc1B0cigpOwotICAgIH0K
KyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWxfYmFzZShjb25zdCBUJiB2KSA6IGluaXRf
KHRydWUpLCBzdG9yYWdlXyh2KSB7fQogCi0gICAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFQmIG9wZXJhdG9yKigpIHsgcmV0dXJuIHZhbHVlKCk7
IH0KKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWxfYmFzZShUJiYgdikgOiBpbml0Xyh0
cnVlKSwgc3RvcmFnZV8oY29uc3RleHByX21vdmUodikpIHt9CiAKLSAgICBUJiB2YWx1ZSgpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2FnZWQpOwotICAgICAgICByZXR1cm4gKmFzUHRy
KCk7Ci0gICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPiBleHBsaWNpdCBvcHRpb25h
bF9iYXNlKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IGluaXRfKHRydWUp
LCBzdG9yYWdlXyhjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KIAotICAgIGNv
bnN0IFQmIHZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7
Ci0gICAgICAgIHJldHVybiAqYXNQdHIoKTsKLSAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIFUs
IGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhzdGQ6OmlzX2NvbnN0cnVjdGli
bGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+CisgICAgZXhwbGljaXQgb3B0aW9uYWxf
YmFzZShJblBsYWNlVGFnLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBh
cmdzKQorICAgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhpbCwgc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBUIHZhbHVl
T3IoVSYmIHZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAg
ICAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgIH5vcHRpb25hbF9iYXNlKCkgeyBpZiAoaW5p
dF8pIHN0b3JhZ2VfLnZhbHVlXy5UOjp+VCgpOyB9Cit9OwogCi0gICAgICAgIHJldHVybiBzdGQ6
OmZvcndhcmQ8VT4odmFsdWUpOwotICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0g
ICAgVCB2YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOwordGVtcGxhdGUgPGNs
YXNzIFQ+CitzdHJ1Y3QgY29uc3RleHByX29wdGlvbmFsX2Jhc2UKK3sKKyAgICBib29sIGluaXRf
OworICAgIGNvbnN0ZXhwcl9zdG9yYWdlX3Q8VD4gc3RvcmFnZV87CisKKyAgICBjb25zdGV4cHIg
Y29uc3RleHByX29wdGlvbmFsX2Jhc2UoKSBfX05PRVhDRVBUIDogaW5pdF8oZmFsc2UpLCBzdG9y
YWdlXyh0cml2aWFsX2luaXQpIHt9OworCisgICAgZXhwbGljaXQgY29uc3RleHByIGNvbnN0ZXhw
cl9vcHRpb25hbF9iYXNlKGNvbnN0IFQmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKHYpIHt9
CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHByX29wdGlvbmFsX2Jhc2UoVCYmIHYp
IDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQorCisgICAgdGVt
cGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxpY2l0IGNvbnN0ZXhwciBjb25zdGV4cHJfb3B0aW9u
YWxfYmFzZShJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJncykKKyAgICAgIDogaW5pdF8odHJ1ZSks
IHN0b3JhZ2VfKGNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgICAgdGVt
cGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhzdGQ6
OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+CisgICAgT1BU
SU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVCBleHBsaWNpdCBjb25zdGV4cHJfb3B0aW9uYWxfYmFz
ZShJblBsYWNlVGFnLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdz
KQorICAgICAgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikge30KKworICAgIH5jb25zdGV4cHJfb3B0aW9uYWxfYmFzZSgpID0gZGVmYXVsdDsK
K307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgT3B0aW9uYWxCYXNlID0gdHlwZW5hbWUg
c3RkOjpjb25kaXRpb25hbDwKKyAgICBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46
OnZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgcG9zc2libGUKKyAgICBjb25z
dGV4cHJfb3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZT4s
IC8vIHVzZSBiYXNlIHdpdGggdHJpdmlhbCBkZXN0cnVjdG9yCisgICAgb3B0aW9uYWxfYmFzZTx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZT4KKz46OnR5cGU7CisKKworCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIE9wdGlvbmFsIDogcHJpdmF0ZSBPcHRpb25hbEJhc2U8VD4K
K3sKKyAgc3RhdGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+
Ojp0eXBlLCBudWxsb3B0X3Q+Ojp2YWx1ZSwgImJhZCBUIiApOworICBzdGF0aWNfYXNzZXJ0KCAh
c3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUsIEluUGxhY2VUYWc+Ojp2
YWx1ZSwgImJhZCBUIiApOworCiAKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CisgIGNvbnN0
ZXhwciBib29sIGluaXRpYWxpemVkKCkgY29uc3QgX19OT0VYQ0VQVCB7IHJldHVybiBPcHRpb25h
bEJhc2U8VD46OmluaXRfOyB9CisgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBl
KiBkYXRhcHRyKCkgeyAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKE9wdGlvbmFsQmFzZTxUPjo6c3Rv
cmFnZV8udmFsdWVfKTsgfQorICBjb25zdGV4cHIgY29uc3QgVCogZGF0YXB0cigpIGNvbnN0IHsg
cmV0dXJuIGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YoT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdl
Xy52YWx1ZV8pOyB9CisKKyMgaWYgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgPT0gMQor
ICBjb25zdGV4cHIgY29uc3QgVCYgY29udGFpbmVkX3ZhbCgpIGNvbnN0JiB7IHJldHVybiBPcHRp
b25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorIyAgIGlmIE9QVElPTkFMX0hBU19NT1ZF
X0FDQ0VTU09SUyA9PSAxCisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQmJiBjb250YWlu
ZWRfdmFsKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8u
dmFsdWVfKTsgfQorICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiBjb250YWluZWRfdmFs
KCkgJiB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorIyAgIGVs
c2UKKyAgVCYgY29udGFpbmVkX3ZhbCgpICYgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9y
YWdlXy52YWx1ZV87IH0KKyAgVCYmIGNvbnRhaW5lZF92YWwoKSAmJiB7IHJldHVybiBzdGQ6Om1v
dmUoT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV8pOyB9CisjICAgZW5kaWYKKyMgZWxz
ZQorICBjb25zdGV4cHIgY29uc3QgVCYgY29udGFpbmVkX3ZhbCgpIGNvbnN0IHsgcmV0dXJuIE9w
dGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisgIFQmIGNvbnRhaW5lZF92YWwoKSB7
IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorIyBlbmRpZgorCisg
IHZvaWQgY2xlYXIoKSBfX05PRVhDRVBUIHsKKyAgICBpZiAoaW5pdGlhbGl6ZWQoKSkgZGF0YXB0
cigpLT5UOjp+VCgpOworICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSBmYWxzZTsKKyAgfQor
CisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICB2b2lkIGluaXRpYWxpemUoQXJncyYmLi4u
IGFyZ3MpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSkpCisgIHsKKyAgICBBU1NFUlQoIU9wdGlvbmFsQmFzZTxUPjo6aW5pdF8pOworICAgIDo6
bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSB0cnVlOworICB9CisKKyAg
dGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgaW5pdGlhbGl6ZShzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKSBfX05PRVhDRVBUXyhfX05P
RVhDRVBUXyhUKGlsLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSkKKyAgeworICAgIEFT
U0VSVCghT3B0aW9uYWxCYXNlPFQ+Ojppbml0Xyk7CisgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZv
aWQqPihkYXRhcHRyKCkpKSBUKGlsLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAg
IE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSB0cnVlOworICB9CisKK3B1YmxpYzoKKyAgdHlwZWRl
ZiBUIHZhbHVlX3R5cGU7CisKKyAgLy8gMjAuNS41LjEsIGNvbnN0cnVjdG9ycworICBjb25zdGV4
cHIgT3B0aW9uYWwoKSBfX05PRVhDRVBUIDogT3B0aW9uYWxCYXNlPFQ+KCkgIHt9OworICBjb25z
dGV4cHIgT3B0aW9uYWwobnVsbG9wdF90KSBfX05PRVhDRVBUIDogT3B0aW9uYWxCYXNlPFQ+KCkg
e307CisKKyAgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmIHJocykKKyAgOiBPcHRpb25hbEJhc2U8
VD4oKQorICB7CisgICAgaWYgKHJocy5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIDo6bmV3IChz
dGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVCgqcmhzKTsKKyAgICAgICAgT3B0aW9uYWxC
YXNlPFQ+Ojppbml0XyA9IHRydWU7CiAgICAgfQorICB9CiAKLXByaXZhdGU6Ci0gICAgY29uc3Qg
VCogYXNQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPigmbV92
YWx1ZSk7IH0KLSAgICBUKiBhc1B0cigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZt
X3ZhbHVlKTsgfQotICAgIHZvaWQgZGVzdHJveSgpCi0gICAgewotICAgICAgICBpZiAobV9pc0Vu
Z2FnZWQpIHsKLSAgICAgICAgICAgIGFzUHRyKCktPn5UKCk7Ci0gICAgICAgICAgICBtX2lzRW5n
YWdlZCA9IGZhbHNlOwotICAgICAgICB9CisgIE9wdGlvbmFsKE9wdGlvbmFsJiYgcmhzKSBfX05P
RVhDRVBUXyhpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUpCisgIDogT3B0
aW9uYWxCYXNlPFQ+KCkKKyAgeworICAgIGlmIChyaHMuaW5pdGlhbGl6ZWQoKSkgeworICAgICAg
ICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIoKSkpIFQoc3RkOjptb3ZlKCpyaHMp
KTsKKyAgICAgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7CiAgICAgfQorICB9CisK
KyAgY29uc3RleHByIE9wdGlvbmFsKGNvbnN0IFQmIHYpIDogT3B0aW9uYWxCYXNlPFQ+KHYpIHt9
CisKKyAgY29uc3RleHByIE9wdGlvbmFsKFQmJiB2KSA6IE9wdGlvbmFsQmFzZTxUPihjb25zdGV4
cHJfbW92ZSh2KSkge30KKworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgZXhwbGljaXQg
Y29uc3RleHByIE9wdGlvbmFsKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQorICA6IE9wdGlv
bmFsQmFzZTxUPihJblBsYWNlVGFne30sIGNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzLCBUUjJfT1BUSU9OQUxf
UkVRVUlSRVMoc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxV
Pj4pPgorICBPUFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGV4cGxpY2l0IE9wdGlvbmFsKElu
UGxhY2VUYWcsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYmLi4uIGFyZ3MpCisg
IDogT3B0aW9uYWxCYXNlPFQ+KEluUGxhY2VUYWd7fSwgaWwsIGNvbnN0ZXhwcl9mb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSB7fQorCisgIC8vIDIwLjUuNC4yLCBEZXN0cnVjdG9yCisgIH5PcHRpb25h
bCgpID0gZGVmYXVsdDsKKworICAvLyAyMC41LjQuMywgYXNzaWdubWVudAorICBPcHRpb25hbCYg
b3BlcmF0b3I9KG51bGxvcHRfdCkgX19OT0VYQ0VQVAorICB7CisgICAgY2xlYXIoKTsKKyAgICBy
ZXR1cm4gKnRoaXM7CisgIH0KKworICBPcHRpb25hbCYgb3BlcmF0b3I9KGNvbnN0IE9wdGlvbmFs
JiByaHMpCisgIHsKKyAgICBpZiAgICAgIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5p
bml0aWFsaXplZCgpID09IGZhbHNlKSBjbGVhcigpOworICAgIGVsc2UgaWYgKGluaXRpYWxpemVk
KCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIGluaXRpYWxpemUoKnJo
cyk7CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6
ZWQoKSA9PSB0cnVlKSAgY29udGFpbmVkX3ZhbCgpID0gKnJoczsKKyAgICByZXR1cm4gKnRoaXM7
CisgIH0KKworICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFsJiYgcmhzKQorICBfX05PRVhD
RVBUXyhpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxUPjo6dmFsdWUgJiYgaXNfbm90aHJvd19t
b3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlKQorICB7CisgICAgaWYgICAgICAoaW5pdGlhbGl6
ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSkgY2xlYXIoKTsKKyAg
ICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IGZhbHNlICYmIHJocy5pbml0aWFsaXplZCgpID09
IHRydWUpICBpbml0aWFsaXplKHN0ZDo6bW92ZSgqcmhzKSk7CisgICAgZWxzZSBpZiAoaW5pdGlh
bGl6ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgY29udGFpbmVk
X3ZhbCgpID0gc3RkOjptb3ZlKCpyaHMpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIHRl
bXBsYXRlIDxjbGFzcyBVPgorICBhdXRvIG9wZXJhdG9yPShVJiYgdikKKyAgLT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWYKKyAgPAorICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5
PFU+Ojp0eXBlLCBUPjo6dmFsdWUsCisgICAgT3B0aW9uYWwmCisgID46OnR5cGUKKyAgeworICAg
IGlmIChpbml0aWFsaXplZCgpKSB7IGNvbnRhaW5lZF92YWwoKSA9IHN0ZDo6Zm9yd2FyZDxVPih2
KTsgfQorICAgIGVsc2UgICAgICAgICAgICAgICB7IGluaXRpYWxpemUoc3RkOjpmb3J3YXJkPFU+
KHYpKTsgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworCisgIHRlbXBsYXRlIDxjbGFzcy4u
LiBBcmdzPgorICB2b2lkIGVtcGxhY2UoQXJncyYmLi4uIGFyZ3MpCisgIHsKKyAgICBjbGVhcigp
OworICAgIGluaXRpYWxpemUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisg
IHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgorICB2b2lkIGVtcGxhY2Uoc3RkOjpp
bml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYuLi4gYXJncykKKyAgeworICAgIGNsZWFyKCk7
CisgICAgaW5pdGlhbGl6ZTxVLCBBcmdzLi4uPihpbCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgfQorCisgIC8vIDIwLjUuNC40LCBTd2FwCisgIHZvaWQgc3dhcChPcHRpb25hbDxU
PiYgcmhzKSBfX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFs
dWUgJiYgX19OT0VYQ0VQVF8oc3dhcChkZWNsdmFsPFQmPigpLCBkZWNsdmFsPFQmPigpKSkpCisg
IHsKKyAgICBpZiAgICAgIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXpl
ZCgpID09IGZhbHNlKSB7IHJocy5pbml0aWFsaXplKHN0ZDo6bW92ZSgqKnRoaXMpKTsgY2xlYXIo
KTsgfQorICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxp
emVkKCkgPT0gdHJ1ZSkgIHsgaW5pdGlhbGl6ZShzdGQ6Om1vdmUoKnJocykpOyByaHMuY2xlYXIo
KTsgfQorICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxp
emVkKCkgPT0gdHJ1ZSkgIHsgdXNpbmcgc3RkOjpzd2FwOyBzd2FwKCoqdGhpcywgKnJocyk7IH0K
KyAgfQorCisgIC8vIDIwLjUuNC41LCBPYnNlcnZlcnMKKworICBleHBsaWNpdCBjb25zdGV4cHIg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IF9fTk9FWENFUFQgeyByZXR1cm4gaW5pdGlhbGl6ZWQoKTsg
fQorCisgIGNvbnN0ZXhwciBUIGNvbnN0KiBvcGVyYXRvciAtPigpIGNvbnN0IHsKKyAgICByZXR1
cm4gVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oaW5pdGlhbGl6ZWQoKSwgZGF0YXB0
cigpKTsKKyAgfQorCisjIGlmIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisKKyAg
T1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCogb3BlcmF0b3IgLT4oKSB7CisgICAgLy8gRklY
TUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUg
dXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05TVEVYUFJfQVNTRVJU
KGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBkYXRhcHRyKCk7CisgIH0KKworICBjb25zdGV4
cHIgVCBjb25zdCYgb3BlcmF0b3IgKigpIGNvbnN0JiB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05B
TF9BU1NFUlRFRF9FWFBSRVNTSU9OKGluaXRpYWxpemVkKCksIGNvbnRhaW5lZF92YWwoKSk7Cisg
IH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiBvcGVyYXRvciAqKCkgJiB7Cisg
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhh
dCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05TVEVY
UFJfQVNTRVJUKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7Cisg
IH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiYgb3BlcmF0b3IgKigpICYmIHsK
KyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0
aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIENPTlNU
RVhQUl9BU1NFUlQoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGNvbnN0ZXhwcl9tb3ZlKGNv
bnRhaW5lZF92YWwoKSk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25z
dCYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0
aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8g
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlv
bmFsX2FjY2VzcygiYmFkIE9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAg
IHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNU
RVhQUiBUJiB2YWx1ZSgpICYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNp
YWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNv
bnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAo
dGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIE9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWlu
ZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05B
TF9NVVRBQkxFX0NPTlNURVhQUiBUJiYgdmFsdWUoKSAmJiB7CisgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRl
ciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBpZiAoIWluaXRpYWxpemVkKCkpIF9fVEhS
T1dfRVhDRVBUSU9OKGJhZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBPcHRpb25hbCBhY2Nlc3MiKSk7
CisgICAgcmV0dXJuIHN0ZDo6bW92ZShjb250YWluZWRfdmFsKCkpOworICB9CisKKyMgZWxzZQor
CisgIFQqIG9wZXJhdG9yIC0+KCkgeworICAgIGFzc2VydCAoaW5pdGlhbGl6ZWQoKSk7CisgICAg
cmV0dXJuIGRhdGFwdHIoKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0JiBvcGVyYXRvciAq
KCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihp
bml0aWFsaXplZCgpLCBjb250YWluZWRfdmFsKCkpOworICB9CisKKyAgVCYgb3BlcmF0b3IgKigp
IHsKKyAgICBhc3NlcnQgKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFs
KCk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25zdCB7CisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4g
YmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gaW5pdGlh
bGl6ZWQoKSA/IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCJi
YWQgT3B0aW9uYWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7CisgICAgcmV0dXJuIGNvbnRh
aW5lZF92YWwoKTsKKyAgfQorCisgIFQmIHZhbHVlKCkgeworICAgIC8vIEZJWE1FOiBXZSBuZWVk
IHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIg
dGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250
YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIE9wdGlvbmFsIGFj
Y2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7Cisg
IH0KKworIyBlbmRpZgorCisjIGlmIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTID09IDEK
KworICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KKyAgY29uc3RleHByIFQgdmFsdWVfb3IoViYmIHYpIGNv
bnN0JgorICB7CisgICAgcmV0dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWlsXzo6Y29udmVydDxU
Pihjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyAgIGlmIE9QVElPTkFMX0hBU19N
T1ZFX0FDQ0VTU09SUyA9PSAxCisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+CisgIE9QVElPTkFMX01V
VEFCTEVfQ09OU1RFWFBSIFQgdmFsdWVfb3IoViYmIHYpICYmCisgIHsKKyAgICByZXR1cm4gKnRo
aXMgPyBjb25zdGV4cHJfbW92ZShjb25zdF9jYXN0PE9wdGlvbmFsPFQ+Jj4oKnRoaXMpLmNvbnRh
aW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYp
KTsKKyAgfQorCisjICAgZWxzZQorCisgIHRlbXBsYXRlIDxjbGFzcyBWPgorICBUIHZhbHVlX29y
KFYmJiB2KSAmJgorICB7CisgICAgcmV0dXJuICp0aGlzID8gY29uc3RleHByX21vdmUoY29uc3Rf
Y2FzdDxPcHRpb25hbDxUPiY+KCp0aGlzKS5jb250YWluZWRfdmFsKCkpIDogZGV0YWlsXzo6Y29u
dmVydDxUPihjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyAgIGVuZGlmCisKKyMg
ZWxzZQorCisgIHRlbXBsYXRlIDxjbGFzcyBWPgorICBjb25zdGV4cHIgVCB2YWx1ZV9vcihWJiYg
dikgY29uc3QKKyAgeworICAgIHJldHVybiAqdGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZl
cnQ8VD4oY29uc3RleHByX2ZvcndhcmQ8Vj4odikpOworICB9CisKKyMgZW5kaWYKIAotICAgIGJv
b2wgbV9pc0VuZ2FnZWQ7Ci0gICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9m
KFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1fdmFsdWU7CiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRp
b25hbDxUPiYgbGhzLCBjb25zdCBPcHRpb25hbDxUPiYgcmhzKQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK2NsYXNzIE9wdGlvbmFsPFQmPgogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihs
aHMpID09IHN0YXRpY19jYXN0PGJvb2w+KHJocykgJiYgKCFzdGF0aWNfY2FzdDxib29sPihsaHMp
IHx8IGxocy52YWx1ZSgpID09IHJocy52YWx1ZSgpKTsKKyAgc3RhdGljX2Fzc2VydCggIXN0ZDo6
aXNfc2FtZTxULCBudWxsb3B0X3Q+Ojp2YWx1ZSwgImJhZCBUIiApOworICBzdGF0aWNfYXNzZXJ0
KCAhc3RkOjppc19zYW1lPFQsIEluUGxhY2VUYWc+Ojp2YWx1ZSwgImJhZCBUIiApOworICBUKiBy
ZWY7CisKK3B1YmxpYzoKKworICAvLyAyMC41LjUuMSwgY29uc3RydWN0aW9uL2Rlc3RydWN0aW9u
CisgIGNvbnN0ZXhwciBPcHRpb25hbCgpIF9fTk9FWENFUFQgOiByZWYobnVsbHB0cikge30KKwor
ICBjb25zdGV4cHIgT3B0aW9uYWwobnVsbG9wdF90KSBfX05PRVhDRVBUIDogcmVmKG51bGxwdHIp
IHt9CisKKyAgY29uc3RleHByIE9wdGlvbmFsKFQmIHYpIF9fTk9FWENFUFQgOiByZWYoZGV0YWls
Xzo6c3RhdGljX2FkZHJlc3NvZih2KSkge30KKworICBPcHRpb25hbChUJiYpID0gZGVsZXRlOwor
CisgIGNvbnN0ZXhwciBPcHRpb25hbChjb25zdCBPcHRpb25hbCYgcmhzKSBfX05PRVhDRVBUIDog
cmVmKHJocy5yZWYpIHt9CisKKyAgZXhwbGljaXQgY29uc3RleHByIE9wdGlvbmFsKEluUGxhY2VU
YWcsIFQmIHYpIF9fTk9FWENFUFQgOiByZWYoZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZih2KSkg
e30KKworICBleHBsaWNpdCBPcHRpb25hbChJblBsYWNlVGFnLCBUJiYpID0gZGVsZXRlOworCisg
IH5PcHRpb25hbCgpID0gZGVmYXVsdDsKKworICAvLyAyMC41LjUuMiwgbXV0YXRpb24KKyAgT3B0
aW9uYWwmIG9wZXJhdG9yPShudWxsb3B0X3QpIF9fTk9FWENFUFQgeworICAgIHJlZiA9IG51bGxw
dHI7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgLy8gT3B0aW9uYWwmIG9wZXJhdG9yPShj
b25zdCBPcHRpb25hbCYgcmhzKSBfX05PRVhDRVBUIHsKKyAgICAvLyByZWYgPSByaHMucmVmOwor
ICAgIC8vIHJldHVybiAqdGhpczsKKyAgLy8gfQorCisgIC8vIE9wdGlvbmFsJiBvcGVyYXRvcj0o
T3B0aW9uYWwmJiByaHMpIF9fTk9FWENFUFQgeworICAgIC8vIHJlZiA9IHJocy5yZWY7CisgICAg
Ly8gcmV0dXJuICp0aGlzOworICAvLyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGF1
dG8gb3BlcmF0b3I9KFUmJiByaHMpIF9fTk9FWENFUFQKKyAgLT4gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWYKKyAgPAorICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFU+Ojp0eXBl
LCBPcHRpb25hbDxUJj4+Ojp2YWx1ZSwKKyAgICBPcHRpb25hbCYKKyAgPjo6dHlwZQorICB7Cisg
ICAgcmVmID0gcmhzLnJlZjsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4KKyAgYXV0byBvcGVyYXRvcj0oVSYmIHJocykgX19OT0VYQ0VQVAorICAtPiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZgorICA8CisgICAgIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBz
dGQ6OmRlY2F5PFU+Ojp0eXBlLCBPcHRpb25hbDxUJj4+Ojp2YWx1ZSwKKyAgICBPcHRpb25hbCYK
KyAgPjo6dHlwZQorICA9IGRlbGV0ZTsKKworICB2b2lkIGVtcGxhY2UoVCYgdikgX19OT0VYQ0VQ
VCB7CisgICAgcmVmID0gZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZih2KTsKKyAgfQorCisgIHZv
aWQgZW1wbGFjZShUJiYpID0gZGVsZXRlOworCisKKyAgdm9pZCBzd2FwKE9wdGlvbmFsPFQmPiYg
cmhzKSBfX05PRVhDRVBUCisgIHsKKyAgICBzdGQ6OnN3YXAocmVmLCByaHMucmVmKTsKKyAgfQor
CisgIC8vIDIwLjUuNS4zLCBvYnNlcnZlcnMKKyAgY29uc3RleHByIFQqIG9wZXJhdG9yLT4oKSBj
b25zdCB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKHJlZiwg
cmVmKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUJiBvcGVyYXRvciooKSBjb25zdCB7CisgICAgcmV0
dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKHJlZiwgKnJlZik7CisgIH0KKwor
ICBjb25zdGV4cHIgVCYgdmFsdWUoKSBjb25zdCB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
b2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUg
Y29udGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gcmVmID8gKnJlZiA6ICh0aHJvdyBiYWRf
b3B0aW9uYWxfYWNjZXNzKCJiYWQgT3B0aW9uYWwgYWNjZXNzIiksICpyZWYpOworICAgIHJldHVy
biAqcmVmOworICB9CisKKyAgZXhwbGljaXQgY29uc3RleHByIG9wZXJhdG9yIGJvb2woKSBjb25z
dCBfX05PRVhDRVBUIHsKKyAgICByZXR1cm4gcmVmICE9IG51bGxwdHI7CisgIH0KKworICB0ZW1w
bGF0ZSA8Y2xhc3MgVj4KKyAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUg
dmFsdWVfb3IoViYmIHYpIGNvbnN0CisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyAqKnRoaXMgOiBk
ZXRhaWxfOjpjb252ZXJ0PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+KGNvbnN0ZXhwcl9m
b3J3YXJkPFY+KHYpKTsKKyAgfQorfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIE9w
dGlvbmFsPFQmJj4KK3sKKyAgc3RhdGljX2Fzc2VydCggc2l6ZW9mKFQpID09IDAsICJPcHRpb25h
bCBydmFsdWUgcmVmZXJlbmNlcyBkaXNhbGxvd2VkIiApOworfTsKKworCisvLyAyMC41LjgsIFJl
bGF0aW9uYWwgb3BlcmF0b3JzCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgT3B0aW9uYWw8VD4mIHkpCit7Cisg
IHJldHVybiBib29sKHgpICE9IGJvb2woeSkgPyBmYWxzZSA6IGJvb2woeCkgPT0gZmFsc2UgPyB0
cnVlIDogKnggPT0gKnk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25hbDxUPiYgeSkKK3sK
KyAgcmV0dXJuICEoeCA9PSB5KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPChjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgT3B0aW9uYWw8VD4mIHkp
Cit7CisgIHJldHVybiAoIXkpID8gZmFsc2UgOiAoIXgpID8gdHJ1ZSA6ICp4IDwgKnk7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgT3B0aW9u
YWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gKHkgPCB4KTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgT3B0
aW9uYWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gISh5IDwgeCk7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuICEoeCA8
IHkpOworfQorCisKKy8vIDIwLjUuOSwgQ29tcGFyaXNvbiB3aXRoIG51bGxvcHQKK3RlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiB4
LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgheCk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KG51bGxvcHRfdCwgY29uc3QgT3B0
aW9uYWw8VD4mIHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgheCk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiB4
LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIGJvb2woeCk7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KG51bGxvcHRfdCwgY29uc3Qg
T3B0aW9uYWw8VD4mIHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIGJvb2woeCk7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8
VD4mLCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KG51bGxvcHRfdCwgY29uc3Qg
T3B0aW9uYWw8VD4mIHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIGJvb2woeCk7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9wdGlvbmFs
PFQ+JiB4LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgheCk7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KG51bGxvcHRfdCwgY29u
c3QgT3B0aW9uYWw8VD4mKSBfX05PRVhDRVBUCit7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9wdGlvbmFsPFQ+
JiB4LCBudWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIGJvb2woeCk7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4obnVsbG9wdF90LCBjb25z
dCBPcHRpb25hbDxUPiYpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIGZhbHNlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBPcHRpb25hbDxU
PiYsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0obnVsbG9wdF90LCBjb25zdCBP
cHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30KKworCisKKy8v
IDIwLjUuMTAsIENvbXBhcmlzb24gd2l0aCBUCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgVCYgdikKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyAqeCA9PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQ+
JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPT0gKnggOiBmYWxzZTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4m
IHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggIT0gdiA6IHRydWU7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQm
IHYsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgIT0gKngg
OiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/
ICp4IDwgdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj4oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBi
b29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPihjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgVCYgdikKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyAqeCA+IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUPiYg
eCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8VD4mIHgs
IGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPj0gdiA6IGZhbHNlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB2
LCBjb25zdCBPcHRpb25hbDxUPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDw9ICp4IDog
ZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/
ICp4IDw9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I+PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUPiYgeCkKK3sKKyAgcmV0dXJu
IGJvb2woeCkgPyB2ID49ICp4IDogdHJ1ZTsKK30KKworCisvLyBDb21wYXJpc29uIG9mIE9wdGlv
bmFsPFQmPiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2wo
eCkgPyAqeCA9PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQmPiYgeCkKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQmPiYgeCwgY29uc3Qg
VCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2IDogdHJ1ZTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgdiwgY29uc3Qg
T3B0aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgIT0gKnggOiB0cnVlOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBPcHRpb25hbDxUPiYgbGhzLCBjb25zdCBPcHRpb25hbDxUPiYgcmhzKQordGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBPcHRpb25hbDxUJj4mIHgsIGNv
bnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7CisgIHJldHVybiBib29sKHgp
ID8gKnggPCB2IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwgTnVsbG9wdFRhZykKK3RlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgdiwgY29uc3Qg
T3B0aW9uYWw8VCY+JiB4KQogewotICAgIHJldHVybiAhb3B0OworICByZXR1cm4gYm9vbCh4KSA/
IHYgPiAqeCA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcpCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9wdGlvbmFsPFQmPiYg
eCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0KTsKKyAg
cmV0dXJuIGJvb2woeCkgPyAqeCA+IHYgOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oTnVsbG9wdFRhZywgY29uc3QgT3B0aW9uYWw8
VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29u
c3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQogewotICAgIHJldHVybiAhb3B0OworICBy
ZXR1cm4gYm9vbCh4KSA/IHYgPCAqeCA6IGZhbHNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShOdWxsb3B0VGFnLCBjb25zdCBPcHRpb25hbDxU
PiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29u
c3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxib29sPihvcHQpOworICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0
aW9uYWw8VD4mIG9wdCwgY29uc3QgVCYgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUJj4mIHgpCiB7
Ci0gICAgcmV0dXJuIG9wdCAmJiBvcHQudmFsdWUoKSA9PSB2YWx1ZTsKKyAgcmV0dXJuIGJvb2wo
eCkgPyB2IDw9ICp4IDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIGNvbnN0IFQmIHZhbHVl
KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgT3B0
aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiAhKG9wdCA9PSB2YWx1ZSk7
CisgIHJldHVybiBib29sKHgpID8gKnggPD0gdiA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBP
cHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPj0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQogewotICAgIHJldHVybiBv
cHQgJiYgb3B0LnZhbHVlKCkgPT0gdmFsdWU7CisgIHJldHVybiBib29sKHgpID8gdiA+PSAqeCA6
IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQorLy8gQ29tcGFyaXNv
biBvZiBPcHRpb25hbDxUIGNvbnN0Jj4gd2l0aCBUCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQm
IHYpCiB7Ci0gICAgcmV0dXJuICEodmFsdWUgPT0gb3B0KTsKKyAgcmV0dXJuIGJvb2woeCkgPyAq
eCA9PSB2IDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1PcHRpb25hbDx0eXBl
bmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPgotbWFrZU9wdGlvbmFsKFQmJiB2YWx1ZSkKK3RlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0
IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKIHsKLSAgICByZXR1cm4gT3B0aW9uYWw8dHlwZW5hbWUg
c3RkOjpkZWNheTxUPjo6dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7CisgIHJldHVybiBi
b29sKHgpID8gdiA9PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQm
IHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggIT0gdiA6IHRydWU7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IE9w
dGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ICE9ICp4IDogdHJ1
ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25z
dCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgp
ID8gKnggPCB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPihjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgpCit7Cisg
IHJldHVybiBib29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNv
bnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPiB2IDogZmFsc2U7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgVCYgdiwgY29u
c3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPCAqeCA6
IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBi
b29sKHgpID8gKnggPj0gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxjb25zdCBUJj4m
IHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPcHRpb25hbDxjb25z
dCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPD0gdiA6IHRy
dWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNv
bnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2wo
eCkgPyB2ID49ICp4IDogdHJ1ZTsKK30KKworCisvLyAyMC41LjEyLCBTcGVjaWFsaXplZCBhbGdv
cml0aG1zCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3ZvaWQgc3dhcChPcHRpb25hbDxUPiYgeCwgT3B0
aW9uYWw8VD4mIHkpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKHguc3dhcCh5KSkpCit7CisgIHgu
c3dhcCh5KTsKK30KKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NvbnN0ZXhwciBPcHRpb25hbDx0
eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPiBtYWtlT3B0aW9uYWwoVCYmIHYpCit7CisgIHJl
dHVybiBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPihjb25zdGV4cHJfZm9y
d2FyZDxUPih2KSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBYPgorY29uc3RleHByIE9wdGlvbmFs
PFgmPiBtYWtlT3B0aW9uYWwoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxYPiB2KQoreworICByZXR1
cm4gT3B0aW9uYWw8WCY+KHYuZ2V0KCkpOworfQorCisvLyAtLSBXZWJLaXQgQWRkaXRpb25zIC0t
Cit0ZW1wbGF0ZSA8Y2xhc3MgT3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFjaz4KK0FMV0FZU19J
TkxJTkUKK2F1dG8gdmFsdWVPckNvbXB1dGUoT3B0aW9uYWxUeXBlIE9wdGlvbmFsLCBDYWxsYmFj
ayBjYWxsYmFjaykgLT4gdHlwZW5hbWUgT3B0aW9uYWxUeXBlOjp2YWx1ZV90eXBlCit7CisgICAg
aWYgKE9wdGlvbmFsKQorICAgICAgICByZXR1cm4gKk9wdGlvbmFsOworICAgIHJldHVybiBjYWxs
YmFjaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAorbmFtZXNwYWNlIHN0ZAoreworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RydWN0IGhhc2g8V1RGOjpPcHRpb25hbDxUPj4KKyAg
eworICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFzaDxUPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7
CisgICAgdHlwZWRlZiBXVEY6Ok9wdGlvbmFsPFQ+IGFyZ3VtZW50X3R5cGU7CisKKyAgICBjb25z
dGV4cHIgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShhcmd1bWVudF90eXBlIGNvbnN0JiBhcmcpIGNv
bnN0IHsKKyAgICAgIHJldHVybiBhcmcgPyBzdGQ6Omhhc2g8VD57fSgqYXJnKSA6IHJlc3VsdF90
eXBle307CisgICAgfQorICB9OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdHJ1Y3Qg
aGFzaDxXVEY6Ok9wdGlvbmFsPFQmPj4KKyAgeworICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFzaDxU
Pjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7CisgICAgdHlwZWRlZiBXVEY6Ok9wdGlvbmFsPFQm
PiBhcmd1bWVudF90eXBlOworCisgICAgY29uc3RleHByIHJlc3VsdF90eXBlIG9wZXJhdG9yKCko
YXJndW1lbnRfdHlwZSBjb25zdCYgYXJnKSBjb25zdCB7CisgICAgICByZXR1cm4gYXJnID8gc3Rk
OjpoYXNoPFQ+e30oKmFyZykgOiByZXN1bHRfdHlwZXt9OworICAgIH0KKyAgfTsKK30KKworIyB1
bmRlZiBUUjJfT1BUSU9OQUxfUkVRVUlSRVMKKyMgdW5kZWYgVFIyX09QVElPTkFMX0FTU0VSVEVE
X0VYUFJFU1NJT04KKwogdXNpbmcgV1RGOjpJblBsYWNlOwogdXNpbmcgV1RGOjpOdWxsb3B0Owog
dXNpbmcgV1RGOjpPcHRpb25hbDsKIHVzaW5nIFdURjo6bWFrZU9wdGlvbmFsOwotCi0jZW5kaWYg
Ly8gT3B0aW9uYWxfaAordXNpbmcgV1RGOjp2YWx1ZU9yQ29tcHV0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggOGJmODI5ZGYwZTQ5
OWVmZWRjYTcxOGQ3MTc0NDVkZjBkZWE2MmIxNy4uMjE4ZGUxNmE2NmMwOWExNWE0M2ViMzQyYzcz
NjgxY2NmODRiNzc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjps
b2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Jsb2JMb2FkZXIgPSB7ICp0aGlzIH07Cisg
ICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRoaXMpOwogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIp
OwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5oCmluZGV4IGExMzg2OTc4MjE0MDA3MjJkN2VjYTJjNzI2ZDU4MDFhODM0MWY5ODguLmUz
ODA1ZThlMTI3OWFiNTEyYWFiMjM4MGI0ZTBkOTEyOGQ4Y2RhNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTg0LDYgKzg0LDggQEAgY2xh
c3MgRmV0Y2hCb2R5T3duZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaEJvZHlPd25lcj4sIHB1
YmxpYyBBY3RpdmVET01PYmplY3QKICAgICBzdHJ1Y3QgQmxvYkxvYWRlciBmaW5hbCA6IEZldGNo
TG9hZGVyQ2xpZW50IHsKICAgICAgICAgQmxvYkxvYWRlcihGZXRjaEJvZHlPd25lciYpOwogCisg
ICAgICAgIHZvaWQgc3dhcChCbG9iTG9hZGVyJik7CisKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJD
bGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5ibG9iQ2h1bmsoZGF0YSwgc2l6ZSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDAyZTMxMzUwZjI2ZTBjOWIxODUyNGNkNDI0OWRiYjg2NzI0Mjc2OTcuLjg2ZTI0YWQ5NDRk
NTgzMWQ0ZjI3Mjg1ZGUxNDBiMzczZjgwNTUxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hS
ZXF1ZXN0JiByZXF1ZXN0CiAgICAgLy8gU2V0dGluZyBwZW5kaW5nIGFjdGl2aXR5IHVudGlsIEJv
ZHlMb2FkZXIgZGlkRmFpbCBvciBkaWRTdWNjZWVkIGNhbGxiYWNrIGlzIGNhbGxlZC4KICAgICBy
ZXNwb25zZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHJlc3BvbnNlLnB0cigpKTsKIAotICAgIHJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXIgPSBCb2R5TG9hZGVyKHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKHBy
b21pc2UpKTsKKyAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyLmVtcGxhY2UocmVzcG9uc2UuZ2V0
KCksIFdURk1vdmUocHJvbWlzZSkpOwogICAgIGlmICghcmVzcG9uc2UtPm1fYm9keUxvYWRlci0+
c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIg
PSBOdWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA5Y2ZmN2EyY2VkZDdhNmQ3ODk4NDlh
Y2UyYjE4YjdkNDZkZTMxOTA2Li5kZDlmMTRmZmExNDkzNjExZDAxNjYxYmNhN2E3Zjg4OTI5N2Fi
ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBJREJEYXRhYmFz
ZUlkZW50aWZpZXIgewogICAgICAgICB1bnNpZ25lZCBtYWluRnJhbWVQcm90b2NvbEhhc2ggPSBT
dHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1lT3JpZ2luLnByb3RvY29sKTsKICAgICAgICAgdW5z
aWduZWQgbWFpbkZyYW1lSG9zdEhhc2ggPSBTdHJpbmdIYXNoOjpoYXNoKG1fbWFpbkZyYW1lT3Jp
Z2luLmhvc3QpOwogICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzddID0geyBu
YW1lSGFzaCwgb3BlbmluZ1Byb3RvY29sSGFzaCwgb3BlbmluZ0hvc3RIYXNoLCBtX29wZW5pbmdP
cmlnaW4ucG9ydC52YWx1ZU9yKDApLCBtYWluRnJhbWVQcm90b2NvbEhhc2gsIG1haW5GcmFtZUhv
c3RIYXNoLCBtX21haW5GcmFtZU9yaWdpbi5wb3J0LnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdW5z
aWduZWQgaGFzaENvZGVzWzddID0geyBuYW1lSGFzaCwgb3BlbmluZ1Byb3RvY29sSGFzaCwgb3Bl
bmluZ0hvc3RIYXNoLCBtX29wZW5pbmdPcmlnaW4ucG9ydC52YWx1ZV9vcigwKSwgbWFpbkZyYW1l
UHJvdG9jb2xIYXNoLCBtYWluRnJhbWVIb3N0SGFzaCwgbV9tYWluRnJhbWVPcmlnaW4ucG9ydC52
YWx1ZV9vcigwKSB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNp
emVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCAxYzQ0MGI4YTY2Y2E2ZGMw
NTBkMTJjYzExOTY1YTY4MTA2MjY4ZTk5Li5mNjJhZGJiZmNkMzUzNzQ0ODM0NDJlZGFjM2Q4MjEx
ZTBiNTc0ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVx
dWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAg
IGlmICh2ZXJzaW9uICYmICF2ZXJzaW9uLnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdp
dGggYSB2ZXJzaW9uIG9mIDAiKSB9OwogCi0gICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0
LCBuYW1lLCB2ZXJzaW9uLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29u
dGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZV9vcigwKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJ
REJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25n
IHZlcnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmNwcAppbmRleCBmN2JjN2QzOWNkY2VhNGU2NGM0NWRiODQzYmE1ZDM5MDFh
NTM1MmMzLi5jYzEyOTdhNzVmNDJiMDNjZTEwM2E3MjdkNmU3NGIwZjllODY5MzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5j
cHAKQEAgLTk3LDggKzk3LDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDRFRNRlNlbmRlcjo6aW5z
ZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBPcHRpb25hbDxpbnQ+IGQKICAgICBpZiAoaW50
ZXJUb25lR2FwICYmIGludGVyVG9uZUdhcC52YWx1ZSgpIDwgbWluSW50ZXJUb25lR2FwTXMpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKLSAgICBtX2R1cmF0aW9u
ID0gZHVyYXRpb24udmFsdWVPcihkZWZhdWx0VG9uZUR1cmF0aW9uTXMpOwotICAgIG1faW50ZXJU
b25lR2FwID0gaW50ZXJUb25lR2FwLnZhbHVlT3IoZGVmYXVsdEludGVyVG9uZUdhcE1zKTsKKyAg
ICBtX2R1cmF0aW9uID0gZHVyYXRpb24udmFsdWVfb3IoZGVmYXVsdFRvbmVEdXJhdGlvbk1zKTsK
KyAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1ZV9vcihkZWZhdWx0SW50ZXJU
b25lR2FwTXMpOwogCiAgICAgaWYgKCFtX2hhbmRsZXItPmluc2VydERUTUYodG9uZXMsIG1fZHVy
YXRpb24sIG1faW50ZXJUb25lR2FwKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRB
WF9FUlIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXgg
MjQxMjcxZjY2OGI1ZGZkOGNmOGYwMGVhYzc1NWJjODNlMmI3N2U1YS4uYzdjYjlmYmE5NWI2ZjU3
YWM1ODRkYjY4M2Q4NDUxNTBmZWUyYzUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmgKQEAgLTIwMiwxMSArMjAyLDIwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBW
YWx1ZT4KIGNsYXNzIERPTVByb21pc2UgewogcHVibGljOgogICAgIERPTVByb21pc2UoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBnZW5lcmljUHJvbWlzZSkgOiBtX3Byb21pc2VEZWZlcnJlZChXVEZN
b3ZlKGdlbmVyaWNQcm9taXNlKSkgeyB9Ci0KICAgICBET01Qcm9taXNlKERPTVByb21pc2UmJiBw
cm9taXNlKSA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUocHJvbWlzZS5tX3Byb21pc2VEZWZl
cnJlZCkpIHsgfQorICAgIERPTVByb21pc2UoY29uc3QgRE9NUHJvbWlzZSYgb3RoZXIpIDogbV9w
cm9taXNlRGVmZXJyZWQob3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigpKSB7IH0KKwor
ICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlJiBvdGhlcikKKyAgICB7
CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gb3RoZXIuY29weVJlZigpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgRE9NUHJvbWlzZShjb25zdCBET01Qcm9taXNlJikg
PSBkZWZhdWx0OwotICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlIGNvbnN0Jikg
PSBkZWZhdWx0OworICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlJiYgb3RoZXIp
CisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9IFdURk1vdmUob3RoZXIubV9wcm9t
aXNlRGVmZXJyZWQpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgdm9pZCBy
ZXNvbHZlKHR5cGVuYW1lIFByb21pc2VSZXN1bHRJbnNwZWN0b3I8VmFsdWU+OjpUeXBlIHZhbHVl
KSB7IG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKHZhbHVlKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3Bw
CmluZGV4IGVkMTg2ZDcyMjdlY2UwN2I3MzJlMjE1N2UwYzExNjczOGYyZjc2YmYuLjJhNjZkMTk0
N2FkZWM2ZWExZDZmN2QwZGM4OGZmMjdhYWMzNGJkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJh
bWV0ZXJzLmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwg
ZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpn
ZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAoIXJlc3VsdCkg
ewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDQ5MmM3
NTQ3ZTg4MjkyYWQ0ZDkxYTgwZDYyYzkwZWU5YjkzYTFiZDMuLmY3ZDU5ZjdmYWFlNzQxYWZiZTk0
YjM1ZGFiNjg4OWEzZGZmZDQ0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uCiAKIGRv
dWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoVW5pdFR5cGVzIHVuaXRUeXBlKSBj
b25zdAogewotICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZU9y
KDApOworICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZV9vcigw
KTsKIH0KIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggYWZhMzY2NjRiMjQ2NDFhNzYzZTQ4
ZjJkMjg3Y2MxZjVhZDE4YzVjZS4uYjZiYTIyMWQyNmRiZjc3MWQ0NTI1MzE4ZTNkMjAzMmQzZmE3
ZTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMzM0LDcgKzMzNCw3
IEBAIEV4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcm
IHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CiAgICAgdGV4dC5hcHBlbmQoJ30nKTsKLSAgICBhdXRv
IGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFs
dWVPcihsZW5ndGgoKSkpOworICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUo
dGV4dC50b1N0cmluZygpLCBpbmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOwogICAgIGlmIChpbnNl
cnRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gaW5zZXJ0UnVsZVJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
M2M3YzhkMTViNGQxM2Q1MThjYjM4ZGZiOWNlYjQxNTJjZTY2ZTc2YS4uMzVkMmNmNjUxMmI2YWJj
ZDU3Y2FhN2RlNzAwZTdkODk2N2VmODQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjg3
LDcgKzY4Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9v
bCBjZW50ZXJJZk5vdFZpc2libGUpCiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsQnkoY29uc3QgU2Ny
b2xsVG9PcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxl
ZnQudmFsdWVPcigwKSwgb3B0aW9ucy50b3AudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHNjcm9s
bEJ5KG9wdGlvbnMubGVmdC52YWx1ZV9vcigwKSwgb3B0aW9ucy50b3AudmFsdWVfb3IoMCkpOwog
fQogCiBzdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxpemVOb25GaW5pdGVWYWx1ZShkb3VibGUg
ZikKQEAgLTMwMjgsNyArMzAyOCw3IEBAIFVSTCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiBpbnQgRWxlbWVudDo6Z2V0
SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSkpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQg
dmFsdWUpCkBAIC0zMDM4LDcgKzMwMzgsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZQogCiB1
bnNpZ25lZCBFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTE5v
bk5lZ2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7
CisgICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSkpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldFVuc2lnbmVk
SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgdW5z
aWduZWQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXgg
ZjE3MDAxZmIyNjliYmMxOWJjODYyNzRlNTdmMmQ1NWFmMWM2ZGY0ZC4uMzI1NTc5ZGNjNDMwZjdm
YWZkNzAxOThjMmRlOGM3ZTcxMGM2ZGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcApAQCAtODAsOSArODAsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNdXRhdGlvbk9i
c2VydmVyOjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IEluaXQmIGluaXQpCiAgICAgICAgIG9w
dGlvbnMgfD0gQ2hpbGRMaXN0OwogICAgIGlmIChpbml0LnN1YnRyZWUpCiAgICAgICAgIG9wdGlv
bnMgfD0gU3VidHJlZTsKLSAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZU9yKGZh
bHNlKSkKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAg
ICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlT2xkVmFsdWU7Ci0gICAgaWYgKGluaXQuY2hhcmFj
dGVyRGF0YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQorICAgIGlmIChpbml0LmNoYXJhY3RlckRh
dGFPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVy
RGF0YU9sZFZhbHVlOwogCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGF0dHJpYnV0ZUZpbHRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCBlYzdjYzQxMDQxMjM1YWY1
ZmNiOTk2MTg0Nzc2OWQzZTU3ZjhhMTE0Li5hNDI3ZDBiMzA0ZmY2NDZjZTJiMTllMGE0YTNkMWE4
ZDQ2YmJiMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBAIC0xNDIsNyAr
MTQyLDcgQEAgRXhjZXB0aW9uT3I8Ym9vbD4gRE9NVG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0b2tlbiwgT3B0aW9uYWw8Ym9vbD4KICAgICBhdXRvJiB0b2tlbnMgPSB0aGlz
LT50b2tlbnMoKTsKIAogICAgIGlmICh0b2tlbnMuY29udGFpbnModG9rZW4pKSB7Ci0gICAgICAg
IGlmICghZm9yY2UudmFsdWVPcihmYWxzZSkpIHsKKyAgICAgICAgaWYgKCFmb3JjZS52YWx1ZV9v
cihmYWxzZSkpIHsKICAgICAgICAgICAgIHRva2Vucy5yZW1vdmVGaXJzdCh0b2tlbik7CiAgICAg
ICAgICAgICB1cGRhdGVBc3NvY2lhdGVkQXR0cmlidXRlRnJvbVRva2VucygpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
aW5kZXggZjQwM2YyMzA1MWIwMjA2YTIzZTNiODY1N2M3NTNlMDcwYjcyYTk3ZS4uYjVkMWJjMzNl
YzFhZWIzNzY1YjUzZTE3NzRkNTZjNThlYzM1NGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6OmlzRW1wdHlWYWx1ZSgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1heExl
bmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAg
ICB1bnNpZ25lZCBvbGRFZmZlY3RpdmVNYXhMZW5ndGggPSBlZmZlY3RpdmVNYXhMZW5ndGgoKTsK
LSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3
VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgaWYgKG9sZEVm
ZmVjdGl2ZU1heExlbmd0aCAhPSBlZmZlY3RpdmVNYXhMZW5ndGgoKSkKICAgICAgICAgdXBkYXRl
VmFsdWVJZk5lZWRlZCgpOwogCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIGludCBvbGRNaW5MZW5ndGggPSBt
aW5MZW5ndGgoKTsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2
ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1pbkxlbmd0
aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAg
ICAgaWYgKG9sZE1pbkxlbmd0aCAhPSBtaW5MZW5ndGgoKSkKICAgICAgICAgdXBkYXRlVmFsdWVJ
Zk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cAppbmRleCAxZmRiYzUxODRhYjY3NmM1MzVkNTJlNDJkMGVjMzA5NjQwNTJlNDY0Li5iY2ViNTlh
NmY4NTllNWUwYTY0YjYzOWJmNWExMzIyOWM1MmU5YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTIwNSwxMyArMjA1LDEzIEBAIHZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljCiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewotICAgIGludGVy
bmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFs
dWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwog
fQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0
aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAg
ICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFs
dWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKaW5kZXggMjVkOWIyYmU2ZjlmMzUzZjA5MzlmZWVjOGYyYTJiOWEzMGI5ZGY1MS4uN2E3ZTcx
ODVlYmE2MjdjYmFjNjgxY2IxZmY5NjdiOTRiYTliNGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0x
MTE1LDcgKzExMTUsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludElu
UGF0aEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgsCiAgICAgaWYgKCFzdGF0ZSgp
Lmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZs
b2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAg
ICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkp
OwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhc3Rk
Ojppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTExMzEsNyArMTEzMSw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1Bv
aW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4CiAgICAgaWYgKCFz
dGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkp
KTsKKyAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQo
eCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwg
IXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApp
bmRleCAzZTc5ODlkN2NhY2YxYmRiMTczNjdjOGRhODdkYmVjM2IxMGY3YWFmLi4wYmM4YjA3OWM0
OGNmYTdkNmQyZTBiMTAxOWU1NjgyNzc1OWVkY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0xNTQsNyArMTU0LDcgQEAgaW5saW5lIHVu
c2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25l
ZCBkZWZhdWx0VmFsdWUKIGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2
ZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAwKQogewog
ICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7Ci0g
ICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFs
dWUpLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSkudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsK
ICAgICBBU1NFUlQodmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAppbmRleCAxMWE0OGQ3M2NhMzc4ZmI1NGE4ZWVkZDg4ZTZjNzY4YTIz
ZjkwZTEyLi5iYWUxZmIyOTZhODJjYTQwN2RjMmQyZjE1ZDEyNjBlYjM0MmU3YmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2lt
cGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KFJlc291cmNlUmVxdWVzCiB2b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGln
aHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBpZiAobV9hc3luYykgewotICAg
ICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIoKnRo
aXMsIFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIuZW1wbGFj
ZSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlci0+
c3RhcnRQcmVmbGlnaHQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGI5ZWY2ZTA5ZTdiMzgwMDc5Y2U4ZTdjNzFmYTZkZmNl
MWQzMDM2MGYuLmE5OGFkYmZkNDIyZTM5OTZiODgxY2Q0ZTNiNzA2NzQyMWZhNDNkMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVl
c3QpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgTG9ja0hpc3Rv
cnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwg
U2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBPcHRpb25hbDxOZXdGcmFt
ZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlKQogewotICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9s
aWN5ID0gb3BlbmVyUG9saWN5LnZhbHVlT3Ioc2hvdWxkU2VuZFJlZmVycmVyID09IE5ldmVyU2Vu
ZFJlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFtZU9wZW5l
clBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2
ZXJTZW5kUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MgOiBOZXdGcmFt
ZU9wZW5lclBvbGljeTo6QWxsb3cpOwogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qo
bV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJs
KSwgcGFzc2VkVGFyZ2V0LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxk
U2VuZFJlZmVycmVyLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6OlllcywgbmV3RnJhbWVP
cGVuZXJQb2xpY3ksIERvTm90UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMLCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBkb3dubG9hZEF0dHJpYnV0ZSksIHRyaWdnZXJpbmdFdmVu
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAzYTJmNzU5MDM3NTk2N2Zk
YmVkNzFkMGU0MjNiMmQ3Mjc4MzJkMmFjLi45MTBhNTBiNzdhZjAzZGUyNzNjMzE5MGNlNjc4Mzdj
YmU3N2M5ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNDk1LDcgKzE0OTUs
NyBAQCBkb3VibGUgRE9NV2luZG93OjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKIAogdm9pZCBE
T01XaW5kb3c6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucykgY29uc3QK
IHsKLSAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlT3IoMCksIG9wdGlvbnMu
dG9wLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVf
b3IoMCksIG9wdGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OnNj
cm9sbEJ5KGRvdWJsZSB4LCBkb3VibGUgeSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5jcHAKaW5kZXggZTM1YTIzN2U0ZDgzM2M1MmM1MDBlZjY1ZDhmNTBjZjI1MDRmZDI0
My4uMWNjNzhlNmY1Y2E1YWU2NmY0NWZiY2QzMTVhYjMzZTkzZjQ5MmM4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU3Miw3ICs1NzIsNyBAQCBTdHJpbmcgU2Vj
dXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChl
bmNvZGVGb3JGaWxlTmFtZShtX2hvc3QpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZXBh
cmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKG1fcG9ydC52
YWx1ZU9yKDApKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWVf
b3IoMCkpOwogCiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCBiNWQ4OTliZWExZWI4
MTVjYjAzMGVhMGMyMDQ5MTcyZWE3OTM0NmUyLi4xOTg3YmNiMDk2ZWM3OGRjNmJkY2ZiOTVhMzBl
N2U4YzNmMWM0YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYKICNpZiAhTE9HX0RJ
U0FCTEVECiBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmluZygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAiOiIsIFN0cmlu
Zzo6bnVtYmVyKHBvcnQudmFsdWVPcigwKSkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3Rv
Y29sLCAiOi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlX29yKDApKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5k
ZXggNTBlYjI5NTZmMjNiN2NmMTJlY2I5MGNmNzZmZDhiOTgxZWEzYjU1YS4uYjdhNWFlZmVkYTFi
NmRlZmQ3MmE5YmU3YzZiYTIwNjJlMWJkMmQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luSGFzaC5oCkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkhh
c2ggewogICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAgICAgICBvcmln
aW4tPnByb3RvY29sKCkuaW1wbCgpID8gb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKS0+aGFzaCgp
IDogMCwKICAgICAgICAgICAgIG9yaWdpbi0+aG9zdCgpLmltcGwoKSA/IG9yaWdpbi0+aG9zdCgp
LmltcGwoKS0+aGFzaCgpIDogMCwKLSAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlT3Io
MCkKKyAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApCiAgICAgICAgIH07CiAg
ICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+
KGhhc2hDb2Rlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5k
b3dGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcApp
bmRleCA3Yzc2YWUxMjgyMDhmODQzY2U3MjdkNGM2ZTFiNGE2ZTM2Yjk1ZjUzLi5lNmQ4NjhjMGRj
MDY5NmNlOTVlODUyODgwYTM2N2M0ODYwMWJkYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRv
d0ZlYXR1cmVzLmNwcApAQCAtMTU4LDggKzE1OCw4IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlh
bG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxv
CiAgICAgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgZmVhdHVyZXMu
ZGlhbG9nID0gdHJ1ZTsKIAotICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVz
TWFwLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSkudmFs
dWVPcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9n
IGluIE1hY0lFCi0gICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAi
ZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZU9y
KDQ1MCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4g
TWFjSUUKKyAgICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxv
Z3dpZHRoIiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlX29yKDYyMCk7
IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUK
KyAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWln
aHQiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlX29yKDQ1MCk7IC8v
IGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKIAog
ICAgIGZlYXR1cmVzLndpZHRoID0gd2lkdGg7CiAgICAgZmVhdHVyZXMuaGVpZ2h0ID0gaGVpZ2h0
OwpAQCAtMTY3LDE2ICsxNjcsMTYgQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJl
cyhjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0
dXJlcy54ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVmdCIsIHNjcmVlbkF2
YWlsYWJsZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFgoKSAtIHdpZHRoKTsKICAg
ICBmZWF0dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9ndG9wIiwgc2Ny
ZWVuQXZhaWxhYmxlUmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WSgpIC0gaGVpZ2h0
KTsKIAotICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRlciIpLnZhbHVlT3Io
dHJ1ZSkpIHsKKyAgICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1
ZV9vcih0cnVlKSkgewogICAgICAgICBpZiAoIWZlYXR1cmVzLngpCiAgICAgICAgICAgICBmZWF0
dXJlcy54ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC54KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC53
aWR0aCgpIC0gd2lkdGgpIC8gMjsKICAgICAgICAgaWYgKCFmZWF0dXJlcy55KQogICAgICAgICAg
ICAgZmVhdHVyZXMueSA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgKHNjcmVlbkF2YWlsYWJs
ZVJlY3QuaGVpZ2h0KCkgLSBoZWlnaHQpIC8gMjsKICAgICB9CiAKLSAgICBmZWF0dXJlcy5yZXNp
emFibGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIpLnZhbHVlT3IoZmFs
c2UpOwotICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJzY3JvbGwiKS52YWx1ZU9yKHRydWUpOwotICAgIGZlYXR1cmVzLnN0YXR1c0JhclZp
c2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlT3IoZmFsc2Up
OworICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVz
aXphYmxlIikudmFsdWVfb3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxl
ID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZV9vcih0cnVlKTsKKyAg
ICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJz
dGF0dXMiKS52YWx1ZV9vcihmYWxzZSk7CiAKICAgICByZXR1cm4gZmVhdHVyZXM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXgg
YWU5NzUxOGIxNjllMTAxYzdiZmVjMTgzMDI4ODMxMDMwYTgyZTZiOC4uMWEzYjYzZjU1MzgwNDRi
ZmM5M2VjZDFkMDNlMWI2YjRmOGJlZTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIGZsb2F0IEZv
bnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRS
dW4mIHJ1biwgY29uc3QKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSAmJiBjdXN0b21G
b250Tm90UmVhZHlBY3Rpb24gPT0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVu
Z3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0
aCgpKTsKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAg
IC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFs
IHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9i
LzEwMDA1MApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNp
c01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAg
aWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVk
IGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKIAogICAgIENvZGVQYXRo
IGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZh
c3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFu
ZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApAQCAtNDkyLDcgKzQ5
Miw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUo
ZmxvYXQmIHdpZHRoKSBjb25zdAogCiB2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25S
ZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICB1bnNp
Z25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25l
ZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0
aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBm
YXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBh
bmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggODk4ZDY1YmQ1
MjRlZTYzNTZmMjlhMDMwNWM4OGZlMTAxMGM2YzdiYy4uZmYwOTViNTIxOWZhYTMzYzFiNjIyMWRm
YWQ1Y2U1MGNlZDBjMDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCBJbnRSZWN0IFNoYWRvd0JsdXI6
OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRgogICAgIGlmIChtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJ
ZGVudGl0eSgpKSB7CiAgICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFu
c2Zvcm0ubWFwUXVhZChGbG9hdFF1YWQoc2hhZG93ZWRSZWN0KSk7CiAgICAgICAgIHRyYW5zZm9y
bWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0KTsKLSAgICAgICAgbGF5ZXJSZWN0ID0gdHJhbnNmb3Jt
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVk
UG9seWdvbikuYm91bmRpbmdCb3goKTsKKyAgICAgICAgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBv
bHlnb24pLmJvdW5kaW5nQm94KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5ZXJSZWN0ID0g
c2hhZG93ZWRSZWN0OwogICAgICAgICBsYXllclJlY3QubW92ZShtX29mZnNldCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQppbmRleCA1MzI0YzIwOGNiMThkYTg3ZDFlMjhhMDQwOGUxOTg2ZjkxNTE4
MmZhLi5iYzFkMDBmNDVmMzZjMjE3NTk1MjA4ODc2ZWU2OTk5ZDk4MDg0YWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTIzNTIsNyArMjM1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0
JiBjCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwog
ICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdEltYWdl
LmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwogICAgIEFmZmlu
ZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJsZWRWaWRlb1RyYWNrIHByZWZl
cnJlZFRyYW5zZm9ybV07Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0cHV0UmVjdCA9IHZp
ZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0
KG91dHB1dFJlY3QpOworICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QgPSB2aWRl
b1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qo
b3V0cHV0UmVjdCk7CiAKICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CiAg
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5z
aXplKCksIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZmE3
Y2I3MWY0MWE4YTI1OGVmMGU0ZDYwMDljMmNkNzZjYjNlYzBkOC4uYTAxYmRlOTUyMjAwZmI1ODky
ZDA2NGI3MDljYTNjMGFjZWEwYTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNlZWtUb1RpbWUoTWVkaWFUaW1lIHRpbWUp
CiAKIEZsb2F0U2l6ZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUoKQog
ewotICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVPcihGbG9hdFNpemUoKSk7CisgICAgcmV0
dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CiB9CiAKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMoaW50IHRy
YWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXIuaAppbmRleCAyNWE1ZGJiMTI2MTgzNDc1M2Q1NDc2ODg5MDg0MDViZmY3MDIwOThjLi4z
YWZmZDQyMWUwZTNkNzMxODdmMmUzNDI3ZmI2ZDRmMTNlYjU4NWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgY2xhc3MgRmlsdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyPiB7CiAgICAgdm9p
ZCBzZXRGaWx0ZXJTY2FsZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0K
IAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtOyB9Ci0gICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0
ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVy
biBtX2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludCk7IH0KKyAgICBGbG9hdFBvaW50IG1hcEFic29sdXRlUG9pbnRUb0xv
Y2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1
dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2lu
dChwb2ludCk7IH0KIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTW9k
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4OTVkMzdmMzljZjA1NzJmNWQ0
OTZlMGViNjBhYmIxZjI5MDZmYTVjLi40OTEwY2YwYWM3ZTJkODc2MDAxOThiODQ5NWU1OGQ3M2Y4
YTE1MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNh
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWluCiAgICAgICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMgcmVwbGljYU9wdGlvbnMob3B0aW9ucyk7CiAgICAgICAgIHJlcGxpY2FPcHRpb25zLnRyYW5z
Zm9ybQogICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJl
bnRUcmFuc2Zvcm0uY29tYmluZWQoKSkKLSAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRU
cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKSk7CisgICAgICAgICAgICAubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICAgICAg
cGFpbnRTZWxmQW5kQ2hpbGRyZW4ocmVwbGljYU9wdGlvbnMpOwogICAgIH0KIApAQCAtMjMwLDcg
KzIzMCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRlZE9wYWNpdHkoZmxv
YXQgb3BhY2l0eSkKIAogVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBlckxheWVyOjpy
ZXBsaWNhVHJhbnNmb3JtKCkKIHsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9z
dGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBs
eShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKSk7CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fc3Rh
dGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSkubXVsdGlwbHko
bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1h
dGVkRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQpAQCAtNzMxLDcgKzcz
MSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpmaW5kU2Nyb2xs
YWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hCiBGbG9hdFNpemUgVGV4dHVyZU1hcHBlckxh
eWVyOjptYXBTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCiB7CiAgICAgZG91
YmxlIHplcm9YLCB6ZXJvWSwgb2Zmc2V0WCwgb2Zmc2V0WTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCku
dmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFs
dWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgdHJhbnNmb3JtLm1hcCgwLCAwLCB6
ZXJvWCwgemVyb1kpOwogICAgIHRyYW5zZm9ybS5tYXAob2Zmc2V0LndpZHRoKCksIG9mZnNldC5o
ZWlnaHQoKSwgb2Zmc2V0WCwgb2Zmc2V0WSk7CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShvZmZzZXRY
IC0gemVyb1gsIG9mZnNldFkgLSB6ZXJvWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDc0OGFkOGU5ZTM4MGEzZWU3
MmE2YTAyMTU4MjRlZjhkNDE3ZWMzMTAuLjQ2MmI2MmVkNDc3N2JmNjM1N2Q1NDQzNGE4MWVlNWZm
YTgzMjlhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgSW50UmVjdCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIC8vIFJldHVybiBh
IHByb2plY3Rpb24gb2YgdGhlIHZpc2libGUgcmVjdCAoc3VyZmFjZSBjb29yZGluYXRlcykgb250
byB0aGUgbGF5ZXIncyBwbGFuZSAobGF5ZXIgY29vcmRpbmF0ZXMpLgogICAgIC8vIFRoZSByZXN1
bHRpbmcgcXVhZCBtaWdodCBiZSBzcXVld2VkIGFuZCB0aGUgdmlzaWJsZSByZWN0IGlzIHRoZSBi
b3VuZGluZyBib3ggb2YgdGhpcyBxdWFkLAogICAgIC8vIHNvIGl0IG1pZ2h0IHNwcmVhZCBmdXJ0
aGVyIHRoYW4gdGhlIHJlYWwgdmlzaWJsZSBhcmVhIChhbmQgdGhlbiBldmVuIG1vcmUgYW1wbGlm
aWVkIGJ5IHRoZSBjb3ZlciByZWN0IG11bHRpcGxpZXIpLgotICAgIEFTU0VSVChtX2NhY2hlZElu
dmVyc2VUcmFuc2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52
YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBBU1NFUlQobV9jYWNoZWRJbnZl
cnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFs
dWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgIEZsb2F0UmVjdCByZWN0ID0gbV9j
YWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQoRmxvYXRR
dWFkKG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwogICAgIGNsYW1wVG9D
b250ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHNpemUoKSk7CiAgICAgcmV0dXJuIGVu
Y2xvc2luZ0ludFJlY3QocmVjdCk7CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1f
bGF5ZXJUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0oKSk7
CiAgICAgbV9sYXllclRyYW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJlbnQoKSA/IGRvd25j
YXN0PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKnBhcmVudCgpKS5tX2xheWVyVHJhbnNmb3Jt
LmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCi0gICAg
bV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmlu
dmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG1fY2FjaGVkSW52
ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFs
dWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAvLyBUaGUgY29tYmluZWQgdHJh
bnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0LgogICAg
IHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
Y3BwCmluZGV4IGU3NjNjYzEzOTNkYmNkZTYxMTMyMTE4ZmZiNDMxOTFjNjQ4ZTQ1ZTQuLmYwZTJk
YTMxOTNjNGU4OTkxMWZmN2ZjYjZkYjhlYTg0NjQ4NzkwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1TdGF0ZTo6
bWFwcGVkUG9pbnQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICBpZiAobV9kaXJlY3Rpb24g
PT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHJldHVybiBtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtLT5tYXBQb2ludChwb2ludCk7CiAKLSAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRy
YW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVj
dFBvaW50KHBvaW50LCB3YXNDbGFtcGVkKTsKKyAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybS0+aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQ
b2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CiB9CiAKIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0ZTo6
bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIHZv
aWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJl
Y3Rpb24gZGlyZWN0aW9uLCBib29sCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9y
bURpcmVjdGlvbikKICAgICAgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm1hcFF1
YWQocXVhZCk7CiAKLSAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgp
LnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xh
bXBlZCk7CisgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1
ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVhZChxdWFkLCB3YXNDbGFtcGVk
KTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHdhc0NsYW1wZWQpCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHcKICAgICAgICAgfQogCiAgICAgfSBlbHNlIHsK
LSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJz
ZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKTsKICAgICAgICAgaWYgKG1fbWFwUG9pbnQpCiAgICAgICAgICAgICBt
X2xhc3RQbGFuYXJQb2ludCA9IGludmVyc2VUcmFuc2Zvcm0ucHJvamVjdFBvaW50KG1fbGFzdFBs
YW5hclBvaW50KTsKICAgICAgICAgaWYgKG1fbWFwUXVhZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDFmMWMzODA1
NTUxMTFmNDRhMWYxZTdlNmUwMzJhMjczMGRkOTRiZmQuLmIzOGU3MDcyMDIzOGUwYzhlZTdlY2Iw
ZGViOTA2YzJhMWIyNTY1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBzdAogICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3IgbGF0ZW5jeSBhcyB0aGF0
IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UuCiAgICAgYXV0byBkYXRlVmFs
dWUgPSByZXNwb25zZS5kYXRlKCk7CiAgICAgYXV0byBhcHBhcmVudEFnZSA9IGRhdGVWYWx1ZSA/
IHN0ZDo6bWF4KDB1cywgZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KHJlc3BvbnNlVGltZSAt
ICpkYXRlVmFsdWUpKSA6IDB1czsKLSAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCku
dmFsdWVPcigwdXMpOworICAgIGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52YWx1ZV9v
cigwdXMpOwogICAgIGF1dG8gY29ycmVjdGVkSW5pdGlhbEFnZSA9IHN0ZDo6bWF4KGFwcGFyZW50
QWdlLCBhZ2VWYWx1ZSk7CiAgICAgYXV0byByZXNpZGVudFRpbWUgPSBkdXJhdGlvbl9jYXN0PG1p
Y3Jvc2Vjb25kcz4oc3lzdGVtX2Nsb2NrOjpub3coKSAtIHJlc3BvbnNlVGltZSk7CiAgICAgcmV0
dXJuIGNvcnJlY3RlZEluaXRpYWxBZ2UgKyByZXNpZGVudFRpbWU7CkBAIC0xMjIsNyArMTIyLDcg
QEAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JI
VFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgcmV0dXJuICptYXhBZ2U7CiAKICAg
ICBhdXRvIGRhdGUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgYXV0byBlZmZlY3RpdmVEYXRlID0g
ZGF0ZS52YWx1ZU9yKHJlc3BvbnNlVGltZSk7CisgICAgYXV0byBlZmZlY3RpdmVEYXRlID0gZGF0
ZS52YWx1ZV9vcihyZXNwb25zZVRpbWUpOwogICAgIGlmIChhdXRvIGV4cGlyZXMgPSByZXNwb25z
ZS5leHBpcmVzKCkpCiAgICAgICAgIHJldHVybiBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4o
KmV4cGlyZXMgLSBlZmZlY3RpdmVEYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCmluZGV4IDIzYWRjZDM0MzE3MjFkMDY1YmIyMjNlMjY2OGQ4YTA1ZjUy
MDI1NTcuLmY3YWVhODQyNmYyYTEzNjBhN2UzY2E3OGI5MDJmOTRlMDhjNDA0NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEwMTcsNyArMTAxNyw3
IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNl
dCkgY29uc3QKIAogU3RyaW5nVmlldyBJbmxpbmVUZXh0Qm94OjpzdWJzdHJpbmdUb1JlbmRlcihP
cHRpb25hbDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0aCkgY29uc3QKIHsKLSAgICByZXR1cm4g
U3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0KCksIG92ZXJyaWRp
bmdMZW5ndGgudmFsdWVPcihsZW4oKSkpOworICAgIHJldHVybiBTdHJpbmdWaWV3KHJlbmRlcmVy
KCkudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnQoKSwgb3ZlcnJpZGluZ0xlbmd0aC52YWx1ZV9vcihs
ZW4oKSkpOwogfQogCiBTdHJpbmcgSW5saW5lVGV4dEJveDo6aHlwaGVuYXRlZFN0cmluZ0ZvclRl
eHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJu
YXRlTGVuZ3RoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
aW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDUx
MWE2YmNjNTRmYTgxNDk3NGMyMGU2Y2Y4OGQxMzFjMmViODQ2NGYuLjRhYjM4OTM1ZTk0YjhmMzA2
MmVlMDlkM2EyMjI3ZDJhODg5NDBmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZv
LmgKQEAgLTEwOSw3ICsxMDksNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKHJl
Y3QuaXNJbmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEZsb2F0UmVj
dCB0cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
T3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOworICAgICAgICBGbG9hdFJlY3Qg
dHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAgIHJlY3Quc2V0TG9j
YXRpb24oTGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkpOwogICAgICAgICBy
ZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDA2NmNmYjhmYmJkZTU3NWRm
NzRkOGEzZTljMjg1ZGQzM2JjYWM1NTkuLjRkNGRlODE3OTZhOWE3YmIwMDlkOWQ5ZTA0ZDFjY2Ix
MDhmZTI3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yODU2
LDcgKzI4NTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgICAgICBMYXlvdXRVbml0
IGhlaWdodFJlc3VsdDsKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0KSB7CiAgICAgICAg
ICAgICBMYXlvdXRVbml0IGludHJpbnNpY0hlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIGhlaWdodFJl
c3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFsdWVPcihjb21wdXRlZFZh
bHVlcy5tX2V4dGVudCk7CisgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNh
bEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgp
LCBpbnRyaW5zaWNIZWlnaHQpLnZhbHVlX29yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKICAg
ICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heCho
ZWlnaHRSZXN1bHQsIGludHJpbnNpY0hlaWdodCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBUaGUgb25seSB0aW1lcyB3ZSBkb24ndCBjaGVjayBtaW4vbWF4IGhlaWdodCBhcmUg
d2hlbiBhIGZpeGVkIGxlbmd0aCBoYXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggODJhZGJjZDQxZjA5
ODhhOGI0OWVkZjA5ZWY5MjFlMDdiZjljZDJkNC4uNTYzZTUzNmQ2YTE2NjAyZjRjZTk0NTAzOTY0
MGY0MTBmMmU5YzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lk
IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJl
bGF5b3V0Q2hpbGRyZW4pCiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSBvdXIgaGVpZ2h0IGFuZCBv
dmVyZmxvdyBoZWlnaHQuCiAgICAgICAgICAgICBpZiAoc3R5bGUoKS5ib3hBbGlnbigpID09IEJC
QVNFTElORSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZp
cnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2lu
Qm90dG9tKCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZp
cnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdp
bkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgp
OwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGlsZC0+aGVpZ2h0KCkg
KyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAKQEAgLTUwOCw3ICs1
MDgsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRh
bEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSAr
PSBjaGlsZC0+bWFyZ2luVG9wKCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCAoY29udGVudEhl
aWdodCgpIC0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgp
KSkgLyAyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2Fz
ZSBCQkFTRUxJTkU6IHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBj
aGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxk
LT5tYXJnaW5Cb3R0b20oKSk7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50
ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsg
Y2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNo
aWxkLT5tYXJnaW5Ub3AoKTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5t
YXJnaW5Ub3AoKSArIChtYXhBc2NlbnQgLSBhc2NlbnQpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CmluZGV4IDQ5Y2EyYWNkMjg0YWYxY2QxZjJhNzllYzAyYjc2YTAzODk0MzNkZTIuLjQ0ZjI3YTNk
MjI0MDE4Y2ZhOWU0OWMxZGQ0OTYxYjk0OGFmMjNlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRp
YyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KGNvbnN0IFJlbmRlckJveCYg
Ym94LCBMaW5lRGlyZWN0aW9uCiAKIGludCBSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNl
bGluZSgpLnZhbHVlT3Ioc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0aGlzLCBk
aXJlY3Rpb24pKTsKKyAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVl
X29yKHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7
CiAKICAgICBpbnQgbWFyZ2luQXNjZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8g
bWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpOwogICAgIHJldHVybiBiYXNlbGluZSArIG1hcmdp
bkFzY2VudDsKQEAgLTY4NSw3ICs2ODUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94
OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gmCiAgICAg
ICAgIEFTU0VSVChtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVu
dEZvckNoaWxkKGNoaWxkKSA+PSAwKTsKICAgICAgICAgcmV0dXJuIG1haW5BeGlzRXh0ZW50IC0g
bWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOwogICAgIH0KLSAg
ICByZXR1cm4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZl
cnJlZFNpemUsIGZsZXhCYXNpcykudmFsdWVPcigwKTsKKyAgICByZXR1cm4gY29tcHV0ZU1haW5B
eGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIGZsZXhCYXNpcyku
dmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJdGVt
cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIFZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0
cykKQEAgLTgyNSw3ICs4MjUsNyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94Ojp1cGRhdGVBdXRv
TWFyZ2luc0luQ3Jvc3NBeGlzKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaQogCiBMYXlvdXRV
bml0IFJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZChSZW5kZXJCb3gm
IGNoaWxkKQogewotICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxp
bmUoKS52YWx1ZU9yKGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkKSk7CisgICAgTGF5b3V0
VW5pdCBhc2NlbnQgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNyb3NzQXhp
c0V4dGVudEZvckNoaWxkKGNoaWxkKSk7CiAgICAgcmV0dXJuIGFzY2VudCArIGZsb3dBd2FyZU1h
cmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKTsKIH0KIApAQCAtOTMwLDEyICs5MzAsMTIgQEAgTGF5
b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KGNv
bnN0IFJlbmRlckJveCYgY2hpbGQKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtYXhFeHRlbnQg
PSBOdWxsb3B0OwogICAgIGlmIChtYXguaXNTcGVjaWZpZWRPckludHJpbnNpYygpKSB7CiAgICAg
ICAgIG1heEV4dGVudCA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYXhT
aXplLCBtYXgpOwotICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihjaGlsZFNpemUsIG1heEV4
dGVudC52YWx1ZU9yKGNoaWxkU2l6ZSkpOworICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihj
aGlsZFNpemUsIG1heEV4dGVudC52YWx1ZV9vcihjaGlsZFNpemUpKTsKICAgICB9CiAgICAgCiAg
ICAgTGVuZ3RoIG1pbiA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkubWluV2lk
dGgoKSA6IGNoaWxkLnN0eWxlKCkubWluSGVpZ2h0KCk7CiAgICAgaWYgKG1pbi5pc1NwZWNpZmll
ZE9ySW50cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlT3IoY2hp
bGRTaXplKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIGNvbXB1dGVNYWlu
QXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlX29yKGNoaWxkU2l6
ZSkpOwogICAgIAogICAgIGlmICghaXNGbGV4aWJsZUJveEltcGwoKSAmJiBtaW4uaXNBdXRvKCkg
JiYgbWFpbkF4aXNPdmVyZmxvd0ZvckNoaWxkKGNoaWxkKSA9PSBPVklTSUJMRSAmJiAhKGlzQ29s
dW1uRmxvdygpICYmIGlzPFJlbmRlckZsZXhpYmxlQm94PihjaGlsZCkpKSB7CiAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIENTUyBmbGV4Ym94IHNlY3Rpb24gNC41IHdo
aWNoIGRlZmluZXMgdGhlIG1pbmltdW0gc2l6ZSBvZiAicHVyZSIgZmxleApAQCAtOTQ3LDEzICs5
NDcsMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9y
TWluQW5kTWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQKICAgICAgICAgQVNTRVJUKGNvbnRlbnRT
aXplID49IDApOwogICAgICAgICBpZiAoY2hpbGQuaGFzQXNwZWN0UmF0aW8oKSAmJiBjaGlsZC5p
bnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkgPiAwKQogICAgICAgICAgICAgY29udGVudFNpemUgPSBh
ZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1heChjaGlsZCwgY29u
dGVudFNpemUpOwotICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRTaXplLCBt
YXhFeHRlbnQudmFsdWVPcihjb250ZW50U2l6ZSkpOworICAgICAgICBjb250ZW50U2l6ZSA9IHN0
ZDo6bWluKGNvbnRlbnRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY29udGVudFNpemUpKTsKICAg
ICAgICAgCiAgICAgICAgIExlbmd0aCBtYWluU2l6ZSA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNo
aWxkLnN0eWxlKCkud2lkdGgoKSA6IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCk7CiAgICAgICAgIGlm
IChtYWluQXhpc0xlbmd0aElzRGVmaW5pdGUoY2hpbGQsIG1haW5TaXplKSkgewogICAgICAgICAg
ICAgTGF5b3V0VW5pdCByZXNvbHZlZE1haW5TaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9y
Q2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIG1haW5TaXplKS52YWx1ZSgpOwogICAg
ICAgICAgICAgQVNTRVJUKHJlc29sdmVkTWFpblNpemUgPj0gMCk7Ci0gICAgICAgICAgICBMYXlv
dXRVbml0IHNwZWNpZmllZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5TaXplLCBtYXhFeHRl
bnQudmFsdWVPcihyZXNvbHZlZE1haW5TaXplKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHNw
ZWNpZmllZFNpemUgPSBzdGQ6Om1pbihyZXNvbHZlZE1haW5TaXplLCBtYXhFeHRlbnQudmFsdWVf
b3IocmVzb2x2ZWRNYWluU2l6ZSkpOwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxk
U2l6ZSwgc3RkOjptaW4oc3BlY2lmaWVkU2l6ZSwgY29udGVudFNpemUpKTsKICAgICAgICAgfSBl
bHNlIGlmICh1c2VDaGlsZEFzcGVjdFJhdGlvKGNoaWxkKSkgewogICAgICAgICAgICAgTGVuZ3Ro
IGNyb3NzU2l6ZUxlbmd0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkuaGVp
Z2h0KCkgOiBjaGlsZC5zdHlsZSgpLndpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKaW5kZXggNWYwZGQwNDdiYTkwNzkyZTMxYzQ1ZmZlYTgwMmY3OTY3NDBjZmVh
NC4uYjYwMDJkMmIxMzI1NTg2NzJhYjM3YTc4OWIwZjM4MDIzZDRkODdiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBHcmlk
VHJhY2sgewogCiAgICAgdm9pZCBzZXRHcm93dGhMaW1pdChMYXlvdXRVbml0IGdyb3d0aExpbWl0
KQogICAgIHsKLSAgICAgICAgbV9ncm93dGhMaW1pdCA9IGdyb3d0aExpbWl0ID09IGluZmluaXR5
ID8gZ3Jvd3RoTGltaXQgOiBzdGQ6Om1pbihncm93dGhMaW1pdCwgbV9ncm93dGhMaW1pdENhcC52
YWx1ZU9yKGdyb3d0aExpbWl0KSk7CisgICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1p
dCA9PSBpbmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jv
d3RoTGltaXRDYXAudmFsdWVfb3IoZ3Jvd3RoTGltaXQpKTsKICAgICAgICAgZW5zdXJlR3Jvd3Ro
TGltaXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpOwogICAgIH0KIApAQCAtNjg2LDcgKzY4Niw3IEBA
IE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
Q29udGVudEhlaWdodFVzaW5nKExlbmd0CiAKICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5p
c0ZpdENvbnRlbnQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFibGVFeHRlbnQg
PSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2lu
Qm9yZGVyUGFkZGluZyk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihtX21heENvbnRlbnRIZWln
aHQudmFsdWVPcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlT3IoMCksIGZp
bGxBdmFpbGFibGVFeHRlbnQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4Q29udGVu
dEhlaWdodC52YWx1ZV9vcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlX29y
KDApLCBmaWxsQXZhaWxhYmxlRXh0ZW50KSk7CiAgICAgfQogCiAgICAgaWYgKGxvZ2ljYWxIZWln
aHRMZW5ndGguaXNGaWxsQXZhaWxhYmxlKCkpCkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBSZW5k
ZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGkKIAogICAgIC8vIEdyaWQgZ3V0dGVycyB3ZXJlIHJlbW92ZWQgZnJvbSBm
cmVlU3BhY2UgYnkgdGhlIGNhbGxlciAoaWYgZnJlZVNwYWNlIGlzIGRlZmluaXRlKSwKICAgICAv
LyBidXQgd2UgbXVzdCB1c2UgdGhlbSB0byBjb21wdXRlIHJlbGF0aXZlIChpLmUuIHBlcmNlbnRh
Z2VzKSBzaXplcy4KLSAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heChMYXlvdXRVbml0
KCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKExheW91dFVuaXQoKSkpOwor
ICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgc2l6aW5nRGF0
YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwogICAgIGNvbnN0IGJv
b2wgaGFzRGVmaW5pdGVGcmVlU3BhY2UgPSBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9PSBU
cmFja1NpemluZzsKIAogICAgIC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQgdHJhY2sgdmFyaWFi
bGVzLgpAQCAtMTAyOSwxMyArMTAyOSwxMyBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6Om1pblNp
emVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3RpbwogICAg
IGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCA9IHVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Js
b2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24sIHNpemlu
Z0RhdGEpOwogICAgIGlmIChpc1Jvd0F4aXMpIHsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5M
b2dpY2FsV2lkdGggPSBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9PSBUcmFja1NpemluZyA/
IGNvbXB1dGVNYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKGNoaWxkSW5saW5lRGlyZWN0aW9uLCBj
aGlsZCkgOiBtYXJnaW5JbnRyaW5zaWNMb2dpY2FsV2lkdGhGb3JDaGlsZChjaGlsZCk7Ci0gICAg
ICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5TaXpl
LCBjaGlsZE1pblNpemUsIG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGls
ZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24pLnZhbHVlT3IoMCksICp0aGlzLCBudWxscHRy
KSArIG1hcmdpbkxvZ2ljYWxXaWR0aDsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dp
Y2FsV2lkdGhJblJlZ2lvblVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgb3ZlcnJpZGVDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlv
bikudmFsdWVfb3IoMCksICp0aGlzLCBudWxscHRyKSArIG1hcmdpbkxvZ2ljYWxXaWR0aDsKICAg
ICB9CiAKICAgICBpZiAob3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCAmJiAoZGlyZWN0aW9uICE9IEZv
ckNvbHVtbnMgfHwgc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gIT0gSW50cmluc2ljU2l6ZUNv
bXB1dGF0aW9uKSkKICAgICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsK
ICAgICBjaGlsZC5sYXlvdXRJZk5lZWRlZCgpOwotICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9n
aWNhbEhlaWdodFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgTnVsbG9wdCkudmFsdWVPcigw
KSArIGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxI
ZWlnaHQoKTsKKyAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5T
aXplLCBjaGlsZE1pblNpemUsIE51bGxvcHQpLnZhbHVlX29yKDApICsgY2hpbGQubWFyZ2luTG9n
aWNhbEhlaWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogfQogCiBib29s
IFJlbmRlckdyaWQ6OnVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkgY29uc3QKQEAgLTExOTksNyArMTE5OSw3IEBA
IHZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25z
Rm9yTm9uU3Bhbm5pbmdJdGVtcyhHcmlkCiAgICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFzTWF4
Q29udGVudE9yQXV0b01heFRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZ3Jv
d3RoTGltaXQgPSBtYXhDb250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgc2l6aW5n
RGF0YSk7CiAgICAgICAgIGlmICh0cmFja1NpemUuaXNGaXRDb250ZW50KCkpCi0gICAgICAgICAg
ICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFj
a1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2YWls
YWJsZVNwYWNlKCkudmFsdWVPcigwKSkpOworICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6
Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFj
a0JyZWFkdGgoKS5sZW5ndGgoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29y
KDApKSk7CiAgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0KHN0ZDo6bWF4KHRyYWNrLmdyb3d0
aExpbWl0KCksIGdyb3d0aExpbWl0KSk7CiAgICAgfQogfQpAQCAtMTM4Nyw4ICsxMzg3LDggQEAg
c3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRUcmFj
ayogdHJhY2sxLCBjb25zdCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5maW5pdGVHcm93dGhQ
b3RlbnRpYWxXaXRob3V0Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0
aG91dENhcCkKICAgICAgICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFs
V2l0aG91dENhcDsKIAotICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0
aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwotICAgIExheW91dFVu
aXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazIt
Pmdyb3d0aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdy
b3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlv
dXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRy
YWNrMi0+Z3Jvd3RoTGltaXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1pdCAtIHRyYWNrMS0+
YmFzZVNpemUoKSkgPCAodHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXplKCkpOwogfQogCkBA
IC0xNDU3LDcgKzE0NTcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJh
Y2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYgdHJhY2tzLCBWZWN0b3I8R3JpZAogYm9vbCBSZW5kZXJH
cmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiB7CiAgICAgY29u
c3QgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykg
PyBzaXppbmdEYXRhLmNvbHVtblRyYWNrcyA6IHNpemluZ0RhdGEucm93VHJhY2tzOwotICAgIGNv
bnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1
ZU9yKDApOworICAgIGNvbnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxh
YmxlU3BhY2UoKS52YWx1ZV9vcigwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJh
Y2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6
ZSA9IGdyaWRUcmFja1NpemUoZGlyZWN0aW9uLCBpLCBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlv
bik7CiAgICAgICAgIGlmIChjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aCh0cmFja1NpemUs
IG1heFNpemUpID4gdHJhY2tzW2ldLmJhc2VTaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAppbmRleCAyNTk1YzM0MzEyNDEyZDUwODdjYjBjYzIyYzYyMDFiMGQ4
OTY2NDFhLi5mYzk4YTM5YjJjZTBmY2QxNTlkMTI0ZTUxMTYyMjhiN2VmNDgyMTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQ0NjMsNyArNDQ2Myw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGggdGhl
IHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3Vi
cGl4ZWxPZmZzZXQgPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBpeGVs
U25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7Ci0gICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNm
b3JtZWRQYWludGluZ0luZm8odGhpcywgTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4
ZWxzKHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVj
dChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAorICAg
IExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExheW91dFJl
Y3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCks
IGRldmljZVNjYWxlRmFjdG9yKSksCiAgICAgICAgIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9y
LCBhZGp1c3RlZFN1YnBpeGVsT2Zmc2V0LCBwYWludGluZ0luZm8uc3VidHJlZVBhaW50Um9vdCwg
cGFpbnRpbmdJbmZvLm92ZXJsYXBUZXN0UmVxdWVzdHMpOwogICAgIHBhaW50TGF5ZXJDb250ZW50
c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgdHJhbnNmb3JtZWRQYWludGluZ0luZm8sIHBhaW50Rmxh
Z3MpOwogICAgIGNvbnRleHQuc2V0Q1RNKG9sZFRyYW5zZnJvbSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggYjcxNjNlNjZiM2M2ZmYxMTg3NzFhYzk4
OTA5NzZjM2IzYmU0NjZmYi4uMzA2YzVhMzk0NmU0M2UyNjgwYjA0Y2U5ZmMzNzZkMWMzOWU1YzM0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMjgx
LDcgKzI4MSw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJvdW5kaW5nQm94UmVj
dChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBQYWludEZ1bmN0aW9uIHBhaW50RnVuY3Rpb24pCiB7CiAgICAgaW50IGxpc3RJdGVt
c1NpemUgPSBudW1JdGVtcygpOwotICAgIGludCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRleE9m
Rmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9mZnNl
dCk7CisgICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVt
SW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7CiAgICAgaW50IGVu
ZEluZGV4ID0gZmlyc3RWaXNpYmxlSXRlbSArIG51bVZpc2libGVJdGVtcyhDb25zaWRlclBhZGRp
bmc6Olllcyk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0VmlzaWJsZUl0ZW07IGkgPCBsaXN0SXRl
bXNTaXplICYmIGkgPCBlbmRJbmRleDsgKytpKQogICAgICAgICBwYWludEZ1bmN0aW9uKHBhaW50
SW5mbywgcGFpbnRPZmZzZXQsIGkpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgUmVuZGVyTGlz
dEJveDo6c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoaW50IGluZGV4KQogCiBib29s
IFJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZShpbnQgaW5kZXgpCiB7Ci0gICAgaW50
IGZpcnN0SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFy
ZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RJbmRleCA9IG1faW5kZXhP
ZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zm
c2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRl
UGFkZGluZ0JvdHRvbUFyZWEKICAgICAgICAgPyBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5z
aWRlUGFkZGluZ0JvdHRvbUFyZWEudmFsdWUoKSArIG51bWJlck9mVmlzaWJsZUl0ZW1zSW5QYWRk
aW5nQm90dG9tKCkKICAgICAgICAgOiBtX2luZGV4T2Zmc2V0ICsgbnVtVmlzaWJsZUl0ZW1zKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNw
cAppbmRleCA3ZDJmYjQzNjI4MTU0Yjk0MjU2NmY5OTc4OWNmNTA4ZjUyYjQ5N2FkLi4yMGNmOWVj
MDNmMmU2YmM5MmUxNzViOTJkMjJkM2I0ZWVmYTBhZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTQxNSw3ICs0MTUsNyBA
QCBMYXlvdXRVbml0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVNYXhDb2x1bW5IZWln
aHQoKSBjb25zdAogICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0ID0gbXVsdGlDb2x1bW5G
bG93VGhyZWFkKCktPmNvbHVtbkhlaWdodEF2YWlsYWJsZSgpOwogICAgIExheW91dFVuaXQgbWF4
Q29sdW1uSGVpZ2h0ID0gYXZhaWxhYmxlSGVpZ2h0ID8gYXZhaWxhYmxlSGVpZ2h0IDogUmVuZGVy
Rmxvd1RocmVhZDo6bWF4TG9naWNhbEhlaWdodCgpOwogICAgIGlmICghbXVsdGljb2xTdHlsZS5s
b2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWF4Q29sdW1uSGVpZ2h0
ID0gc3RkOjptaW4obWF4Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCks
IE51bGxvcHQpLnZhbHVlT3IobWF4Q29sdW1uSGVpZ2h0KSk7CisgICAgICAgIG1heENvbHVtbkhl
aWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNv
bnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdo
dCgpLCBOdWxsb3B0KS52YWx1ZV9vcihtYXhDb2x1bW5IZWlnaHQpKTsKICAgICByZXR1cm4gaGVp
Z2h0QWRqdXN0ZWRGb3JTZXRPZmZzZXQobWF4Q29sdW1uSGVpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggNGMwYjdiMzUzYjFkYmU0NGU3OTU3
OTJkODZhYmVjNGY3MGM0MjBlZC4uMjA2ODY0MDYyZDM2MzVhZjg0NmRhYWQ0NTQ0NWEwNGMwYmI1
MzdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0zNzMs
OSArMzczLDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhl
aWdodFRvQ29tcHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBzdHlsZUxvZ2ljYWxIZWlnaHQudmFsdWUoKSAtIGJvcmRlcnM7CiAgICAgfSBlbHNlIGlm
IChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAgIHJl
dHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KS52
YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0
KHN0eWxlTG9naWNhbEhlaWdodCkudmFsdWVfb3IoMCk7CiAgICAgZWxzZSBpZiAoc3R5bGVMb2dp
Y2FsSGVpZ2h0LmlzSW50cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2lj
TG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWln
aHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlT3IoMCk7Cisg
ICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhz
dHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJv
cmRlckFuZFBhZGRpbmcpLnZhbHVlX29yKDApOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQoKTsKQEAgLTE0NjQsNyArMTQ2NCw3
IEBAIHZvaWQgUmVuZGVyVGFibGU6OnVwZGF0ZUZpcnN0TGV0dGVyKFJlbmRlclRyZWVNdXRhdGlv
bklzQWxsb3dlZCkKIAogaW50IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgIHJldHVy
biB2YWx1ZU9yQ29tcHV0ZShmaXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewogICAgICAgICByZXR1
cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBk
aXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCBjMDBjYmNjOTkxM2QxM2Q3NmYx
N2FmZDgzMmM4NjhmMmFiNzhlYjlkLi5lMWE3ZWFhNzU5YWQzMzE2OWJhMTExYTM1ZjkxNWE0YzFl
OGM3NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cApAQCAtNDAxLDcgKzQwMSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpjZWxsQmFz
ZWxpbmVQb3NpdGlvbigpIGNvbnN0CiAgICAgLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcv
Q1ItQ1NTMjEtMjAwNzA3MTkvdGFibGVzLmh0bWwjaGVpZ2h0LWxheW91dD46IFRoZSBiYXNlbGlu
ZSBvZiBhIGNlbGwgaXMgdGhlIGJhc2VsaW5lIG9mCiAgICAgLy8gdGhlIGZpcnN0IGluLWZsb3cg
bGluZSBib3ggaW4gdGhlIGNlbGwsIG9yIHRoZSBmaXJzdCBpbi1mbG93IHRhYmxlLXJvdyBpbiB0
aGUgY2VsbCwgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiBJZiB0aGVyZQogICAgIC8vIGlzIG5vIHN1
Y2ggbGluZSBib3ggb3IgdGFibGUtcm93LCB0aGUgYmFzZWxpbmUgaXMgdGhlIGJvdHRvbSBvZiBj
b250ZW50IGVkZ2Ugb2YgdGhlIGNlbGwgYm94LgotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGlu
ZSgpLnZhbHVlT3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWln
aHQoKSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoYm9yZGVyQW5k
UGFkZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgdm9pZCBtYXJrQ2VsbERpcnR5V2hlbkNvbGxhcHNlZEJvcmRlckNoYW5nZXMoUmVuZGVy
VGFibGVDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcAppbmRleCBkODg1ZThlMmM2MjVjNmRjMGI1ZjJkZmYxNTc5MzQzZWU1ZWU1
MTBmLi44NmZmZjFiNzU0OTZlMDA0NDgzNmYwNjY0MWZlYjYxYTMzMWE4YmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtOTM0LDcg
KzkzNCw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CiAgICAgICAgIC8vIE9ubHkgY2VsbHMgd2l0aCBjb250ZW50IGhhdmUgYSBi
YXNlbGluZQogICAgICAgICBpZiAoY2VsbCAmJiBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgp
KSB7CiAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gcm91bmRUb0ludChjZWxsLT5sb2dpY2Fs
VG9wKCkgKyBjZWxsLT5ib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjZWxsLT5jb250ZW50TG9n
aWNhbEhlaWdodCgpKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1
ZU9yKGNhbmRpZGF0ZSksIGNhbmRpZGF0ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
eChyZXN1bHQudmFsdWVfb3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDQ0YTFjNTIw
MzliNWQ0N2ZmY2QyYTFhN2UxNmM1NTgwMTkwMWZkMDkuLjY1NmI3MzQ3ODczODdhODAzYjQzMjM0
MTJmMjU3YzMyNDAzZjk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICB9
CiAgICAgfQogCi0gICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlwaExlZnRPdmVyZmxv
dy52YWx1ZU9yKGdseXBoT3ZlcmZsb3cubGVmdCk7CisgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0g
Zmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlwaE92ZXJmbG93LmxlZnQpOwogCiAg
ICAgaWYgKChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEpIHx8IChpZ25vcmluZ1NwYWNlcyAm
JiAhZmlyc3RXb3JkKSkKICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdvcmRTcGFjaW5nOwpAQCAt
MTY3Nyw3ICsxNjc3LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RU
eXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKIAogU3RyaW5nVmlldyBS
ZW5kZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0LCBPcHRpb25hbDx1bnNpZ25lZD4g
c3RvcCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0b3AudmFsdWVPcih0
ZXh0TGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZV9vcih0
ZXh0TGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJU
KGRlc3RpbmF0aW9uIDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQgPD0gZGVzdGluYXRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCmluZGV4IGVjMDI4NjUwNzA2NmIzMTliYzc3ZjE2ZDU4ZjgzMGNkOTlm
ZjM0ZDYuLjVhMmFkNzJiZGY3ZDVkNDMxMzkxYTQ5OGVhNjU4NWU0YjVhN2U0ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tG
bG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBwYWkKICAgICBpZiAo
c3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAhPSBUZXh0RGVjb3JhdGlvbk5vbmUpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gY2hpbGRyZW5PZlR5cGU8
UmVuZGVyVGV4dD4oZmxvdykuZmlyc3QoKTsKICAgICAgICAgaWYgKHRleHRSZW5kZXJlcikgewot
ICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyID0gVGV4dERlY29yYXRpb25QYWludGVy
KHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0
ZXh0UmVuZGVyZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci5l
bXBsYWNlKHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCksICp0ZXh0UmVuZGVyZXIsIGZhbHNlKTsKICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFp
bnRlci0+c2V0Rm9udChzdHlsZS5mb250Q2FzY2FkZSgpKTsKICAgICAgICAgICAgIHRleHREZWNv
cmF0aW9uUGFpbnRlci0+c2V0QmFzZWxpbmUoc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggNWIyMTEyZjM1YTQ2ZDNiNWI3MTI5Yzk1NmVhZDI4
ODg3OTFhYmY1OS4uYTY2NmM5Yjg0OWU1M2Q5NDYyZDYzYjgwNGM5MjcwZWI5YjI3YjU0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxC
bG9jay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbnQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbgogICAg
IGlmIChsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9y
KFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBk
aXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKKyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxp
bmUoKS52YWx1ZV9vcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUs
IGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CiB9CiAKICNpZiBFTkFC
TEUoREVCVUdfTUFUSF9MQVlPVVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggMGU3MzNiOWViMTM2NDJhODFmM2JmZTRh
NGQyYTc5OGIyYWI3MDFkZC4uOTRjMmY3MTI0ZTA0YmIyYzlhNjRlOGVjYzQwOTM3Y2M2YzhkZjFh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBhc2NlbnRGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmZp
cnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAg
ICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC5sb2dpY2Fs
SGVpZ2h0KCkpOwogICAgIH0KIAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAK
aW5kZXggZWVhNGYwZDgzMjA2ZjM0N2IxNzdmNzNmMDcyNjU4ZDAxNjZlNjQwMy4uY2NkZjI0Zjlj
NjFlNjJkNTlhNWJiODViN2VjYWFiN2NhOWFlNzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTczLDcgKzE3Myw3
IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgaWYgKCFwb2ludElzSW5zaWRlVmlld3Bv
cnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9h
dFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZh
bHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZs
b2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAg
ICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2Nh
bFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggMmJmMDg2
ZmMxZjMwNzk4MzU5YmQ2NzY4YTYzODRhZjA5OWQ1NzNkMC4uMTA5NWQyNGUxMTIxOWI2MjI3Yzhj
MmQ2OWUxNmYzMTc0YzVhMTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAg
Ym9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0
Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2Nh
bFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50
ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgLy8gRWFybHkgZXhpdCBpZiBsb2NhbCBw
b2ludCBpcyBub3QgY29udGFpbmVkIGluIGNsaXBwZWQgdmlld3BvcnQgYXJlYQogICAgIGlmIChT
VkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSAmJiAhbV92aWV3cG9ydC5j
b250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMTU4NDc2MTlhNzEzYWRlNTAwMGY0YmVjNjdlNThjY2Qz
N2MwMTFmNi4uMGRjYjkxODA3MWQ4MTFhOTUyYjY3ZjgxMzEzNjhjNWI5Mzg0YjBkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE4
Niw3ICsxODYsNyBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIFBvaW50ZXJFdmVudHNI
aXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNU
SU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7CiAgICAgYm9vbCBpc1Zpc2li
bGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7CiAgICAgaWYgKGlzVmlzaWJs
ZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2Nh
bFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0
aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcAppbmRleCBiNWNiZGU2YThlMTVkOGIyOTIxYmZjMWJkOGRmOWYwY2FkNGNhYTM2Li41ZDgz
NWZlMTcwNmQ4OTMwMGRlYWNhZTcyNWExZjEwMTBkZGQ4YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CkBAIC0yNjcsMTAgKzI2NywxMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0
VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbgogICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9i
amVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgdHJh
bnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RC
b3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgICAgIHBv
aW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxl
bWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5l
eHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9k
ZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYTQ5MDQ2NGI3OWVhMmZkOTMwNzA1
ODU0Zjk1ZDMwNmRkOGE1YTA2ZS4uY2Q1YmY3NWY2YTAwNTk4OTQ2Y2FjMzZkZThiZDE1ODg5OWY4
OTM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZl
Y3QtPmFzSW1hZ2VCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAogICAgICAgICAgICAg
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJl
c29sdXRpb24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0
aW9uKCkuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigq
cmVzdWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMWFjYTRlNTBj
ZTFiODNhMzdhNzJhYTM3ZTBhZTU1M2JkOWU0ZjRmMC4uMzU5ZmQ0YmFjYmNkODc1NjI5ZTcxYTlm
MjYyOWFmYTBmZTM2NTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBSZW5kZXJTVkdSb290Ojpu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYg
cmUKICAgICAvLyBPbmx5IHRlc3QgU1ZHIGNvbnRlbnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBj
b250ZW50IGJveC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gaW50ZXJzZWN0aW9u
IHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVzdHMgYXJlIHN1cHBvcnRlZCBieSBub2RlQXRGbG9hdFBv
aW50LgogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmNvbnRhaW5zKHBvaW50SW5Cb3JkZXJCb3gp
KSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQ
b2ludChwb2ludEluUGFyZW50KSk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOwogCiAgICAgICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBv
aW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBmZTkxMjI2
NGIyMzhmZDczMjg3MzVjYTdkY2JlYmIyNjU2ZGVhNTEzLi43NTAyNDBlNTM1ODRkZTdhZjA4ZGE5
MmRjZGUyNjY2Yjc4ZTM4NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIGJvb2wgUmVuZGVyU1ZHU2hh
cGU6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBv
aW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxUcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludElu
UGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJl
YSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDJiYWI3YTdmYzBh
MjQzMGMzMGU4NmQyNTYwMTBjMDM3YzA0ODJjYmMuLjg3MDhmNGIzOTdmMTUyMWI4NDIzMDliZGQw
ZDZhMDE0NTM4ZWE2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKICAgICAg
ICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNT
dHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCiAgICAgICAgICAgICB8fCAoaGl0
UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc0ZpbGwoKSB8fCAhaGl0
UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50
ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgICAgICAg
ICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2Fs
UG9pbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCA0Yzdk
Y2MyYzc3OTM3ZTI3OGZlMzk0OWRjNzY2MGJlOWM1MTViMWZkLi5hZjgxMGZkZWQyNjU4Mzc5OWU0
MjZhZjZiMDg5MTY5YmM4YmI2NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6OmludGVyc2VjdFJlcGFpbnRSZWN0V2l0aFNoYWRvd3MoY29uc3QgUmVuZGVy
RWxlbWVudCYgcmVuZAogICAgIGlmIChsb2NhbFRvUm9vdFRyYW5zZm9ybS5pc0lkZW50aXR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFmZmluZVRyYW5zZm9ybSByb290VG9Mb2NhbFRyYW5z
Zm9ybSA9IGxvY2FsVG9Sb290VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5z
Zm9ybSgpKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gcm9vdFRvTG9jYWxUcmFuc2Zvcm0gPSBsb2Nh
bFRvUm9vdFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwog
ICAgIHJlcGFpbnRSZWN0ID0gcm9vdFRvTG9jYWxUcmFuc2Zvcm0ubWFwUmVjdChyZXBhaW50UmVj
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDRmMzVlZDllYWEwMzkxMzRlNzBjOGNlMjMxOTU4NWNjZGY5
ZDk2OTUuLmM0YjNhYWM1YmZkMWNlOGNjNTY2MWM4ZGJiYmU0YzUzMjQ2N2VkYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1h
Z2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpCiAKICAgICAvLyBU
aGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRl
IHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhl
IGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNv
b3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgIGNvbnRl
eHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkpOwogICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVy
LCBhYnNvbHV0ZVRhcmdldFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJh
bnNmb3JtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24u
Y3BwCmluZGV4IGFlZTk0N2MwMTM2ZDljNjBjZTAyNWNiOTM3MTdmMzRhMWY5Mjg1OTEuLmQyMzcy
ZmZiYWYwMDYxNTFjMGQwNjQwMWJmZWNmYmY5MjJkNDA5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZv
aWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0Vs
ZW1lbnQmIGdseXBoT3JNaXNzaW5nCiAgICAgaWYgKGdseXBoQm91bmRpbmdCb3gpCiAgICAgICAg
IG1fbWluUmlnaHRTaWRlQmVhcmluZyA9IHN0ZDo6bWluKG1fbWluUmlnaHRTaWRlQmVhcmluZywg
aG9yaXpvbnRhbEFkdmFuY2UgLSBnbHlwaEJvdW5kaW5nQm94LnZhbHVlKCkubWF4WCgpKTsKIAot
ICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50
LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZh
bHVlT3IoRmxvYXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CisgICAgbV9nbHlwaHMuYXBwZW5kKEds
eXBoRGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2
ZXJ0aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVfb3IoRmxvYXRSZWN0KCkpLCBj
b2RlcG9pbnRzKSk7CiB9CiAKIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRMaWdh
dHVyZUdseXBocygpCkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6
OlNWR1RvT1RGRm9udENvbnZlcnRlcihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQp
CiAgICAgICAgICAgICBwcm9jZXNzR2x5cGhFbGVtZW50KGdseXBoRWxlbWVudCwgJmdseXBoRWxl
bWVudCwgZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCB1
bmljb2RlQXR0cmlidXRlLCBib3VuZGluZ0JveCk7CiAgICAgfQogCi0gICAgbV9ib3VuZGluZ0Jv
eCA9IGJvdW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3gg
PSBib3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSk7CiAKICNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTAxMDAwCiAgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzIwMDg2MjIzPiBDb2NvYSBoYXMgYSBidWcgd2hlcmUgZ2x5cGggYm91bmRp
bmcgYm94ZXMgYXJlIG5vdCBjb3JyZWN0bHkgcmVzcGVjdGVkIGZvciBmcnVzdHVtIGN1bGxpbmcu
IFdvcmsgYXJvdW5kIHRoaXMgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNDhiYmQzMGQ3NzY3YmNhNTUyZmEw
ODEwNTJlMDIwZjFlMDFjM2MxNC4uYzc2N2Q5YmUwNDUwMTIwNmQ0MDJmNmZhOGY5OWVhODRhZjZj
MTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2Vj
dXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0KQEAgLTkwLDcgKzkwLDcgQEAgLSAoTlNTdHJpbmcgKilzdHJpbmdW
YWx1ZQogCiAtICh1bnNpZ25lZCBzaG9ydClwb3J0CiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPnBvcnQoKS52YWx1ZU9yKDApOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0
KCkudmFsdWVfb3IoMCk7CiB9CiAKIC8vIEZJWE1FOiBPdmVycmlkaW5nIGlzRXF1YWw6IHdpdGhv
dXQgb3ZlcnJpZGluZyBoYXNoIHdpbGwgY2F1c2UgdHJvdWJsZSBpZiB0aGlzIGV2ZXIgZ29lcyBp
bnRvIGFuIE5TU2V0IG9yIGlzIHRoZSBrZXkgaW4gYW4gTlNEaWN0aW9uYXJ5LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDc4NGFhY2RlMDRlNGI3NjBkYzlmZWU5
YWZjOTFiZjZiMDcwNzMzMzguLjI3ODM4Y2NiMzk4MzlkZjJhMTllZGE0YzcyN2NiMThiNmU3OGU3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KF9PdXRfIHVuc2lnbmVkIHNo
b3J0KiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAKLSAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZhbHVlT3IoMCk7Cisg
ICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKTsKIAogICAg
IHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IGQ0YWEwMTNhMzg5YTlkNDE3NDY0MTU1OWYzYWU3
MWU1ZmFhMDcwNjcuLjhkZjhmZmFhYjdjNGZhNzg4NjQ1ZTE3N2ZlYjZjMTUxYjdhMzNiNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJl
Zi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlI
b3N0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiAKIHVuc2lnbmVkIHNob3J0
IFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmln
aW4pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2lu
KCkucG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHRvSW1wbChzZWN1cml0eU9yaWdpbikt
PnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBGb3IgYmFja3dh
cmRzIEFCSSBjb21wYXRpYmlsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3ZWE2YTk4
ZTY0MDExNzQxYzRlM2M0ZjlkYzZmYTc4MzVkYzNmYjMwLi41OTA2OTFiOGNjM2IzOTRkZmI2Y2Yx
MDAyM2NhMTZkZTljYTNjZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTAxLDkgKzEw
MSw5IEBAIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9y
aWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSCiAKICAgICAgICAgICAgIGRldGFpbHNNYXAu
c2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSktPnN0cmlu
ZygpLCBvcmlnaW4pOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1l
KQotICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1lLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAg
ICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3Jl
YXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRh
aWxzLmNyZWF0aW9uVGltZS52YWx1ZV9vcigwKSkpOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRl
dGFpbHMubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0
b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpKS0+
c3RyaW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25U
aW1lLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwo
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpKS0+c3RyaW5n
KCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1lLnZh
bHVlX29yKDApKSk7CiAKICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQVBJOjpE
aWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShkZXRhaWxzTWFwKSkpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmln
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmln
aW4ubW0KaW5kZXggYzU1NDNhMjBiNzFlOGM5NzZlMjEyMmI5YjRiZWE0OGIzNzUxZmM3MC4uYjcx
MTJjZWUxN2JkY2MyNjliYzlmOWUyNzFkMjQwMmRhMjE2NjgyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbQpAQCAt
NTgsNyArNTgsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNJbnRlZ2VyKXBvcnQKIHsK
LSAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1
ZU9yKDApOworICAgIHJldHVybiBfc2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9y
dCgpLnZhbHVlX29yKDApOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1w
bGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KaW5kZXggNTc5YWZhZmE4YjI2NmQ1NzJmZGQ2ZTg0MTZmYmFmMmMzMzI5MWRmMC4uNzQx
YzZjMTNjZTA3YTg2ZjNhZWVhYTM2Yzk1ZTEyYTljMmQzYzRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTI3NSw3ICsyNzUsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TRGVjaW1hbE51bWJlcj4gdG9EZWNpbWFsTnVtYmVyKGludDY0X3Qg
dmFsdWUpCiAKIHN0YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U3VtbWFyeUl0ZW0+IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBs
aW5lSXRlbSkKIHsKLSAgICByZXR1cm4gW2dldFBLUGF5bWVudFN1bW1hcnlJdGVtQ2xhc3MoKSBz
dW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVy
KGxpbmVJdGVtLmFtb3VudC52YWx1ZU9yKDApKS5nZXQoKSB0eXBlOnRvUEtQYXltZW50U3VtbWFy
eUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKKyAgICByZXR1cm4gW2dldFBLUGF5bWVudFN1bW1h
cnlJdGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6
dG9EZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudC52YWx1ZV9vcigwKSkuZ2V0KCkgdHlwZTp0
b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CiB9CiAKIHN0YXRpYyBQ
S01lcmNoYW50Q2FwYWJpbGl0eSB0b1BLTWVyY2hhbnRDYXBhYmlsaXRpZXMoY29uc3QgV2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzJiBtZXJjaGFudENhcGFiaWxp
dGllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAyN2IxZjE2MGQ4Zjc4ZjdlYWY1NWRk
MWQ4MzNhN2QxMmVkOTc5NmExLi4yMjNmMGNiMmU3ZGFkY2E5MzhkNTUzNTMxNTJkZjdhNTQwNDY4
OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3JOYW1lQW5k
RGV0YWlsc1NlcGFyYXRvciA9ICI7IjsKIAogLy8gTWFrZSBzdXJlIHRoZSBwcmVkZWZpbmVkIGVy
cm9yIG5hbWUgaXMgdmFsaWQsIG90aGVyd2lzZSB1c2UgSW50ZXJuYWxFcnJvci4KLSNkZWZpbmUg
VkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmluZykudmFsdWVPcihJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJy
b3IpCisjZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJp
bmcpLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2Fn
ZTo6SW50ZXJuYWxFcnJvcikKIAogLy8gSWYgdGhlIGVycm9yIG5hbWUgaXMgaW5jb3JyZWN0IGZv
ciB0aGVzZSBtYWNyb3MsIGl0IHdpbGwgYmUgYSBjb21waWxlLXRpbWUgZXJyb3IuCiAjZGVmaW5l
IFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKGVycm9yTmFtZSkgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6ZXJyb3JOYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBmMmEy
ODk4OWIyMjM3OGQwMmVjOWI2NTlhMjQ2ZWE3NWM2ZmViMDQ2Li4xOWFhNzQ5OTI0N2IxNzQ5OGI0
ZTE4MzExZjlkYWRmNWEzN2YyNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3
YXJkTGlzdFN0CiAgICAgICAgIGl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpjcmVhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKSk7CiAgICAgfQogICAgIG1faGFzQ3VycmVudEluZGV4ID0gISFiYWNrRm9yd2Fy
ZExpc3RTdGF0ZS5jdXJyZW50SW5kZXg7Ci0gICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9yd2Fy
ZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWVPcigwKTsKKyAgICBtX2N1cnJlbnRJbmRleCA9
IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZV9vcigwKTsKICAgICBtX2Vu
dHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5jcHAKaW5kZXggZDdmN2I0NzBhNDcxMWI1N2FiZGE3NzdmNDNlM2VlYWY0ZGJlNDUx
Ny4uN2ZkYjMzYjUzNjM2OWVhNDZhZDcwN2I3YzU5ZjAzNjEzYTFiZmRhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBX
ZWJWaWV3OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0YXJn
ZXQsIGNvbnN0IFdlYkNvcmUKIAogQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybUZy
b21TY2VuZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybVRvU2NlbmUoKS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybVRvU2Nl
bmUoKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogfQogCiBBZmZpbmVU
cmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtVG9TY2VuZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5j
cHAKaW5kZXggMDE2YzZiOTMzNDY1M2NmZWEyMjkwYjIxNjUwMGFiMDA5MjFiZGU2Zi4uNjdlYWEw
ZDU0ZDJkMzc3ZDQwMzkyY2ZmNWMzY2QzNDhhMjZkZTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApA
QCAtMjgyLDggKzI4Miw4IEBAIHN0YXRpYyB2b2lkIGVuY29kZUZvcm1EYXRhRWxlbWVudChIaXN0
b3J5RW50cnlEYXRhRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSFRUUEJvCiAgICAgICAgIGVuY29k
ZXIgPDwgZmFsc2U7CiAKICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVTdGFydDsKLSAg
ICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcigtMSk7Ci0gICAgICAg
IGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlT3Io
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CisgICAgICAgIGVuY29k
ZXIgPDwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKC0xKTsKKyAgICAgICAgZW5jb2RlciA8
PCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3Ioc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5t
bQppbmRleCA1ZWRlNTZlZWU0MGFjZmRiOTkwMTE5ZGU3YWNlOTE4ZTY3OGJjNjY2Li5mOTYxYTM1
OTE1NDExNTcxNDc4ZDQwNzQ0NDIxMzQ0YWY5YTA4YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2lu
Lm1tCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9t
Um9vdFZpZXdUb1BsdWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiBJbnRQb2ludCBQ
REZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAogewogICAgIEludFBvaW50IHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyhwb2lu
dC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZp
ZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1cm4gbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogRmxvYXRSZWN0IFBERlBs
dWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBj
b25zdApAQCAtMTIwNyw3ICsxMjA3LDcgQEAgRmxvYXRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZy
b21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogICAgICAgICBy
ZXR1cm4gRmxvYXRSZWN0KCk7CiAKICAgICBGbG9hdFBvaW50IG9yaWdpbkluUGx1Z2luQ29vcmRp
bmF0ZXMocmVjdC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHJlY3QueSgpIC0gcmVjdC5oZWlnaHQo
KSk7Ci0gICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3
VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFJlY3QoRmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJlY3Quc2l6ZSgpKSk7
CisgICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9Q
bHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBS
ZWN0KEZsb2F0UmVjdChvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0LnNpemUoKSkpOwog
CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0
KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIElu
dFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBJ
bnRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgc2l6ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1f
cm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUmVjdChib3VuZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOwogICAgIHJldHVybiBmcmFtZVZpZXct
PmNvbnRlbnRzVG9TY3JlZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKSk7CiB9CiAKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29u
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7Ci0gICAgbV9yb290
Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJh
bnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpOwogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNpemU6
cGx1Z2luU2l6ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGRiNGVj
M2U0MTI5OWY2OTI5NjFmNzRkZDIxNmM5N2M2ZGE0NjEyMzUuLjdlZmEwNzQzNDQzNTYxOTgyMjQx
MDIwMDFmOTc5NTgwNGZhMmYzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05MzIsNyArOTMyLDcgQEAgSW50UmVjdCBQ
REZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKQogewogICAgIG1f
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07Ci0g
ICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1Rv
UGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7CiAKICAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCAxY2E3ZjQ0OTdhNzk4
YjNlNWRlZDRhZWViMThlYWNjMmYxOWFhNzcxLi4yOGY3NTdmZmUwYjQzNDZmMjYzNzk5ZjA0N2Y3
NjE0N2I2ODQ0Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAg
LTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShj
b25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURhdGEt
PmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxl
bWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1l
bnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKGludmFsaWRGaWxlVGltZSgp
KSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBh
dGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxvYkRh
dGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZS52YWx1ZV9vcihpbnZhbGlkRmlsZVRpbWUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYjhlZDllYjJhMjBmNTUwZTM4ZjY0ODhhNDkwNmRjNTIz
YmMyMjQ0Ny4uYmRlNjYyYjY0NTU0OTgwOTAxZWVmMzVjODIxYWJiNzVmYjc2OTIyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5z
ZWN1cmVDb250ZW50PiBoYQogICAgIHdlYlBhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCku
ZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBV
SVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRD
b21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZp
Z2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBkb2N1bWVudExvYWRlci5yZXNwb25z
ZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0dXJuIENlcnRpZmlj
YXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2lu
RG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkp
KTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExv
YWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25J
RCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVy
LnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5m
bygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1l
bnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICAg
ICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBlOWJiYjJiYTc5OTQxMGIz
YjA2NDY0OGMxNDk4NTk5YTNkZTExOWYzLi5lMThhOTc4OWYxYWQzNjg3YTFhYzliYzEwNGI0NGRi
ZDJiNTBiODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTQyMCw3ICs0MjAsNyBAQCBDZXJ0aWZpY2F0ZUluZm8gV2ViRnJhbWU6OmNl
cnRpZmljYXRlSW5mbygpIGNvbnN0CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jZXJ0
aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8o
KTsgfSk7CisgICAgcmV0dXJuIHZhbHVlT3JDb21wdXRlKGRvY3VtZW50TG9hZGVyLT5yZXNwb25z
ZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSk7
CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6aW5uZXJUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNWYwYmUwOWFiNGZmZmNiNzFh
MDE4M2MxODlhZjgxOGNlYTM1M2RlLi5lNGVjYTUzZDMwNzFmZWJiZjAwYTc3OWQ5Y2Q5OTMzY2My
NGE0YTM5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMTAtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJl
bmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6Ok9wdGlvbmFsOjp2YWx1ZV9vci4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRl
c3RQYXJzZUhUTUxJbnRlZ2VyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RQYXJzZUhU
TUxOb25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkwpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjaGVja1VSTERpZmZlcmVuY2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyk6CisKIDIwMTYtMTAtMzAgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBSZXN0cnVjdHVyZSBJRExQYXJz
ZXIgc3RydWN0cyB0byBiZXR0ZXIgbWF0Y2ggbW9kZXJuIFdlYklETCBjb25jZXB0cwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCmluZGV4IGEwNzE1ZmQ2MmZlNzZj
MTAyYzQ0M2ExYzc3NDZmNmQ0Yjg4Yzc0YmIuLjA3NTc1YjE2OTBiYzhhYjRiZWY3NDIzYjM5NzUz
MjQ5NTQ4NzNkZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09w
dGlvbmFsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgVEVTVChXVEZfT3B0aW9uYWwsIENhbGxiYWNrKQogewogICAg
IGJvb2wgY2FsbGVkID0gZmFsc2U7CiAgICAgT3B0aW9uYWw8aW50PiBhOwotICAgIGludCByZXN1
bHQgPSBhLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgaW50IHJlc3VsdCA9IHZhbHVlT3JDb21w
dXRlKGEsIFsmXSB7CiAgICAgICAgIGNhbGxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiAzMDA7
CiAgICAgfSk7CkBAIC04NSw3ICs4NSw3IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFjaykK
IAogICAgIGEgPSAyNTA7CiAgICAgY2FsbGVkID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gYS52YWx1
ZU9yQ29tcHV0ZShbJl0geworICAgIHJlc3VsdCA9IHZhbHVlT3JDb21wdXRlKGEsIFsmXSB7CiAg
ICAgICAgIGNhbGxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiAzMDA7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9t
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9t
cy5jcHAKaW5kZXggMGYxYzAyZDllNmNhODVjMDljYjQ5NmNiMzdmMTJjMjk5ZjU4ZmVmOC4uNmU5
ZTczOGFiNWJjZTFkZmFiZmI0MmY2MGViN2IyZjJiNjQ1Y2I0ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAt
MzcsNyArMzcsNyBAQCBzdGF0aWMgaW50IHRlc3RQYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmlu
ZyYgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRpb25hbFJlc3VsdCA9IHBhcnNlSFRNTEludGVnZXIo
aW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJldHVybiBv
cHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1
ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MSW50ZWdlckZhaWxzKGNvbnN0IFN0
cmluZyYgaW5wdXQpCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHVuc2lnbmVkIHRlc3RQYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBhdXRv
IG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGlucHV0KTsKICAg
ICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9uYWxSZXN1
bHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3IoMCk7CiB9
CiAKIHN0YXRpYyBib29sIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlckZhaWxzKGNvbnN0IFN0
cmluZyYgaW5wdXQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQ
YXJzZXIuY3BwCmluZGV4IDQ3Y2QwNzI5N2I0OWRkODZmNDhlMDVjNmYyZTU1YTc1NzFlYjVkOGIu
LjExYWFjNjg0NGVmZWIzZmI2N2E3NTg1M2IwMDU1OGY3ZjkxNmQ4YjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCkBAIC05OCw3ICs5OCw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBF
eHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNl
ciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwu
cGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwot
ICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVY
UEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21l
bnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRp
YyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBh
cnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgb2xkVVJM
LnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCBvbGRVUkwucGFz
cygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwot
ICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAg
IEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMzU0LDcg
KzM1NCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3Qo
KSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwor
ICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
ZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMzY0LDcgKzM2NCw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwg
b2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCBvbGRV
UkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgb2xkVVJMLmhvc3Qo
KSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkp
OworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAt
NDgwLDcgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcu
aG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9y
dCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgp
LnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0
aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50
aWZpZXIoKSkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVy
ZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQudXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHNPbGQuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVDVF9F
UShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9F
UShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c09sZC5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNPbGQucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHNPbGQuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtNTI1
LDcgKzUyNSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3
LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9z
dCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgp
LnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZh
bHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZp
ZXIoKSkpOwpAQCAtNTM1LDcgKzUzNSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxE
aWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNPbGQudXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzT2xkLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNPbGQuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShw
YXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShw
YXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c09sZC5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHNPbGQucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNPbGQuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTE4Nyw3
ICsxMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnMKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dv
cmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9z
dCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7
CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMjEzLDcgKzEyMTMs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsK
LSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdt
ZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293447</attachid>
            <date>2016-10-31 11:59:22 -0700</date>
            <delta_ts>2016-11-02 20:48:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161031115526.patch</filename>
            <type>text/plain</type>
            <size>160063</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjMwNGVjYmQ0YjQ0NzNlZjEwYWY3NmNkYTMwODQ3MmVjN2Q3MGQwLi45ZDcyODM1ZjA5OTY3ZDI4
MDU5OWJlZjViY2EyM2FhYjNiNzFlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0xMC0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1w
bGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgUHJldmlvdXMgV1RGOjpPcHRpb25hbDo6b3BlcmF0b3I9IGlzIG5vdCBjb21wYXRpYmxl
IHRvIHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yPS4KKyAgICAgICAgc3RkOjpvcHRpb25hbDo6ZW1w
bGFjZSBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91cyBvbmUuCisgICAgICAg
IFNvIHdlIGNoYW5nZSB0aGUgY29kZSB0byB1c2UgaXQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgIFVzZSB2YWx1ZV9vciBp
bnN0ZWFkIG9mIHZhbHVlT3IuCisKIDIwMTYtMTAtMjkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gSlNPTi5zdHJpbmdpZnkgc2hvdWxkIGhh
bmRsZSBQcm94eSB3aGljaCBpcyBub24gSlNBcnJheSBidXQgaXNBcnJheSBpcyB0cnVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDA0ODRjMDYzMDRlMzQ0Y2YxNGQyNzYwZjY5MzFjMmZiZWJlOGM5YzAuLjhkYjRjNGExMDQ0ZTA3
NDQ2Njk4Y2IzY2MxOWNkZmQ2ODk2NGNmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTYtMTAt
MzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dU
Rl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6
T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZmZlcmVkIGJ5
IHRoZSBDKysxNworICAgICAgICBvcmlnaW5hbCBwcm9wb3NhbCBwYXBlci4gSXQgaGFzIHRoZSBz
YW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eQorICAgICAgICB0byB0aGUgQysrMTcncyBv
bmUuIFByZXZpb3VzIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJhbCBmdW5jdGlvbmFsaXRpZXMu
CisgICAgICAgIFRoZSBsYXJnZXN0IG9uZSBpcyB0aGUgY29ycmVjdCBjb25zdGV4cHIgY29uc3Ry
dWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSB1c2luZyBPcHRpb25h
bDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGluIFdlYktpdC4KKworICAgICAg
ICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29uc3RydWN0b3JzLiBTbyBvbmx5
IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMgdGhlIHdheSB0byB1c2UgV1RG
OjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAgIGdsb2JhbCB2YXJpYWJsZXMu
IFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVjdCBhbmQKKyAgICAgICAgd2Ug
d291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwgdmFyaWFibGVzIHRoYXQgaW5j
bHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhhdCBpcyB0aGUgbWFpbiBtb3Rp
dmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGFsbG93cyB0
aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisgICAgICAgIHNpZ25hdHVyZXMg
YXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAgICAgV2UgaW1wb3J0IHRo
ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIGluc3RlYWQgb2YgTExWTSBsaWJjKysncyBv
bmUuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBMTFZNIGxpYmMrKydzIG9uZSBkZXBlbmRzIG9u
IG1hbnkgbWFjcm8gYW5kIHR5cGVfdHJhaXRzCisgICAgICAgIG9mZmVyZWQgYnkgbGliYysrIGlt
cGxlbWVudGF0aW9uLiBBbmQgYWRvcHRpbmcgaXQgdG8gV2ViS2l0IHJlcXVpcmVzCisgICAgICAg
IGxhcmdlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGlzIHJlZmVyZW5jZSBpbXBsZW1lbnRh
dGlvbiBvbmUuCisgICAgICAgIEZ1cnRoZXJtb3JlLCBpdCBpcyBkaWZmaWN1bHQgdG8gY29tcGls
ZSBsaWJjKysncyBvcHRpb25hbCBpbiBvbGQgR0NDIGFuZCBWQysrLgorICAgICAgICBJdCBhbHNv
IHJlcXVpcmVzIHNvbWUgbW9yZSBtb2RpZmljYXRpb25zLiBUbyBrZWVwIHRoZSB0aGluZyBzaW1w
bGUsCisgICAgICAgIHdlIGltcG9ydCB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9uZSBu
b3cuIE9uY2UgQysrMTcgaXMgcmVsZWFzZWQKKyAgICAgICAgYW5kIHdlIHVwZGF0ZSB0aGUgY29t
cGlsZXIgYmFzZWxpbmUsIHdlIGNhbiBzbW9vdGhseSBzd2l0Y2ggdG8gdGhlIHN0YW5kYXJkCisg
ICAgICAgIGxpYnJhcnkncyBzdGQ6Om9wdGlvbmFsLgorCisgICAgICAgIENoYW5nZXMgdG8gdGhl
IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcmUgdGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAg
MS4gTW92ZSBvcHRpb25hbCBmcm9tIHN0ZCBuYW1lc3BhY2UgdG8gV1RGIG5hbWVzcGFjZS4KKyAg
ICAgICAgMi4gUmVuYW1lIG1ha2Vfb3B0aW9uYWwgdG8gbWFrZU9wdGlvbmFsIGZvciBub3cuCisg
ICAgICAgIDMuIEFkZCBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdGhhdCBkb2VzIG5vdCB1
c2UgZXhjZXB0aW9ucy4KKworICAgICAgICBBbmQgd2UgYWxzbyBhZGQgdmFsdWVPckNvbXB1dGUg
aGVscGVyIGZ1bmN0aW9uLiBUaGF0IGtlZXBzIHRoZSBleHRlbmRlZAorICAgICAgICBmdW5jdGlv
bmFsaXR5IHRoYXQgcHJldmlvdXMgV1RGOjpPcHRpb25hbCBoYXMuCisKKyAgICAgICAgKiB3dGYv
T3B0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6aXNfYXNzaWduYWJsZTo6aGFzX2Fzc2lnbik6Cisg
ICAgICAgIChXVEY6OmRldGFpbF86Omhhc19vdmVybG9hZGVkX2FkZHJlc3NvZjo6aGFzX292ZXJs
b2FkKToKKyAgICAgICAgKFdURjo6ZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZik6CisgICAgICAg
IChXVEY6OmRldGFpbF86OmNvbnZlcnQpOgorICAgICAgICAoV1RGOjpudWxsb3B0X3Q6Om51bGxv
cHRfdCk6CisgICAgICAgIChXVEY6OmJhZF9vcHRpb25hbF9hY2Nlc3M6OmJhZF9vcHRpb25hbF9h
Y2Nlc3MpOgorICAgICAgICAoV1RGOjpvcHRpb25hbF9iYXNlOjpvcHRpb25hbF9iYXNlKToKKyAg
ICAgICAgKFdURjo6b3B0aW9uYWxfYmFzZTo6fm9wdGlvbmFsX2Jhc2UpOgorICAgICAgICAoV1RG
Ojpjb25zdGV4cHJfb3B0aW9uYWxfYmFzZTo6Y29uc3RleHByX29wdGlvbmFsX2Jhc2UpOgorICAg
ICAgICAoV1RGOjpPcHRpb25hbDo6ZGF0YXB0cik6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpj
b250YWluZWRfdmFsKToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Ol9fTk9FWENFUFRfKToKKyAg
ICAgICAgKFdURjo6T3B0aW9uYWw6Ok9wdGlvbmFsKToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjplbXBsYWNlKToKKyAgICAgICAg
KFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yIC0+KToKKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Om9w
ZXJhdG9yICopOgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWUpOgorICAgICAgICAoV1RG
OjpPcHRpb25hbDo6dmFsdWVfb3IpOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdURjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPCk6CisgICAgICAg
IChXVEY6Om9wZXJhdG9yPik6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPD0pOgorICAgICAgICAo
V1RGOjpvcGVyYXRvcj49KToKKyAgICAgICAgKFdURjo6X19OT0VYQ0VQVF8pOgorICAgICAgICAo
V1RGOjptYWtlT3B0aW9uYWwpOgorICAgICAgICAoc3RkOjpoYXNoPFdURjo6T3B0aW9uYWw8VD4+
OjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdURjo6TnVsbG9wdFRhZzo6TnVsbG9wdFRhZyk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp+T3B0aW9uYWwpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpPcHRpb25hbDo6b3BlcmF0b3IgYm9vbCk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpvcGVyYXRvci0+KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9u
YWw6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6OnZhbHVlT3JDb21wdXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6OmFzUHRyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6T3B0aW9uYWw6OmRlc3Ryb3kpOiBEZWxldGVkLgorCiAyMDE2LTEwLTMwICBGcmVkZXJp
YyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgSGFyZkJ1enogb3QtbWF0
aCBBUEkgdG8gcGFyc2UgdGhlIE9wZW5UeXBlIE1BVEggdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTEx
Y2M4YzM4ZDhjOTgwYjZkOGZmNzgxOTAzNzYzOTcxNTg1M2I1Li43OGM5NzE2NDZhNDNiMjJjNjU4
ZDExYzUyNjg1NzYwYjUzZGUyZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTczIEBACisyMDE2
LTEwLTMxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBX
VEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW5hbWUgdmFsdWVPciB0byB2YWx1ZV9vci4gVGhpcyBpcyBzcGVjaWZpZWQgaW4gQysr
MTcgcHJvcG9zYWwuCisKKyAgICAgICAgVXNlIE9wdGlvbmFsOjplbXBsYWNlLiBDKysxNyBPcHRp
b25hbDo6b3BlcmF0b3I9KE9wdGlvbmFsJiYpIHJlcXVpcmVzCisgICAgICAgIGVpdGhlciBjb3B5
IGFzc2lnbm1lbnQgb3BlcmF0b3Igb3IgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLiBCdXQKKyAg
ICAgICAgREZHOjpKU1ZhbHVlT3BlcmFuZCBldGMuIG9ubHkgZGVmaW5lcyBtb3ZlIGNvbnN0cnVj
dG9ycyBhbmQgZHJvcAorICAgICAgICBpbXBsaWNpdCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3Jz
LgorCisgICAgICAgIEl0IHdhcyBPSyBpbiB0aGUgcHJldmlvdXMgV1RGOjpPcHRpb25hbCBzaW5j
ZSBpdCBhbHdheXMgdXNlcyBtb3ZlCisgICAgICAgIGNvbnN0cnVjdG9ycy4gQnV0IGl0IGlzIG5v
dCB2YWxpZCBpbiBDKysxNyBPcHRpb25hbC4gV2UgdXNlIE9wdGlvbmFsOjplbXBsYWNlCisgICAg
ICAgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gaGFzIHRoZSBzYW1lIHNlbWFudGljcyB0byB0aGUg
cHJldmlvdXMgV1RGOjpPcHRpb25hbCdzCisgICAgICAgIG9wZXJhdG9yPS4KKworICAgICAgICBO
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpmZXRjaCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVu
dGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omhhc2gp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEVE1GU2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6Omlu
c2VydERUTUYpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6RE9NUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01Qcm9taXNlOjpvcGVyYXRvcj0pOgorICAgICAgICBET01Qcm9taXNlIGlzIGV4bnRlbmRlZCB0
byBoYXZlIGNvcHkgJiBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3JzLgorCisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleSk6CisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpk
b3VibGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6YWRkUnVsZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2Nyb2xsQnkpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6
b2JzZXJ2ZSk6CisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVG9rZW5MaXN0Ojp0b2dnbGUpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om1p
bkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5n
dGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZUludGVybmFsKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3Jl
OjpsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnVybFNlbGVjdGVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbEJ5KToKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFz
ZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcpOgorICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkhhc2g6Omhhc2gpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VEaWFsb2dGZWF0dXJlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFz
aXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9u
UmVjdEZvclRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1Jl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6bmF0dXJhbFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6Om1hcEFic29sdXRlUG9pbnRU
b0xvY2FsUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpw
YWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9sbE9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlz
aWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
b21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3Rh
dGU6Om1hcFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5X
aXRoVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpzdWJzdHJpbmdUb1JlbmRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50SW5m
by5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjphcHBseVRyYW5zZm9ybSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFu
ZE1heCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bWluU2l6ZUZvckNoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1
bmN0aW9uc0Zvck5vblNwYW5uaW5nSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6c29ydEJ5R3Jp
ZFRyYWNrR3Jvd3RoUG90ZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnRy
YWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVy
QnlBcHBseWluZ1RyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck11bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVNYXhDb2x1bW5IZWlnaHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVDZWxsOjpjZWxsQmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246
OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHJpbmdWaWV3KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJs
b2NrOjphc2NlbnRGb3JDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpub2Rl
QXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9k
ZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENv
bnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBs
eVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2Rl
QXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVwYWlu
dFJlY3RXaXRoU2hhZG93cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBU
b0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09U
RkZvbnRDb252ZXJ0ZXIpOgorCiAyMDE2LTEwLTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4OiBDb3JyZWN0IENoYW5nZUxvZyBh
ZnRlciBteSBiYWQgbWVyZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2Y2YWU2MWQ5OTQ1NGJjMGI5
OTAxODFlYjQ0YjJiMzMzNDI1ZGMzNS4uYWY4YjdlOTVkNGI1ZmE4ZjA5NzM2NWY2ZDliOWI3Zjgx
NmNkMmZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTEwLTMxICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIElt
cG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9wdGlv
bmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQx
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
V1RGOjpPcHRpb25hbDo6dmFsdWVfb3IuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJT
ZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgor
CiAyMDE2LTEwLTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIEVsZW1lbnQsIE5hbWVkTm9kZU1hcCwgYW5kIERPTVN0cmluZ01hcCBmcm9tIEV4Y2VwdGlv
bkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMWE2NmFmNzA1ZjBmNmUwODI3
YzdkMDg3YTZhOWRiNTc4NjNlZjIwNy4uMWQ1MmU2YzVmMjhjNWQ5ZjUxNGNhOWFlNGUwNzg1MGEx
NTVjOGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTEwLTMxICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIElt
cG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9wdGlv
bmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQx
OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
V1RGOjpPcHRpb25hbDo6dmFsdWVfb3IuCisKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5j
cHA6CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbjo6cG9ydCk6CisKIDIwMTYtMTAtMzAgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgRWxlbWVudCwgTmFt
ZWROb2RlTWFwLCBhbmQgRE9NU3RyaW5nTWFwIGZyb20gRXhjZXB0aW9uQ29kZSB0byBFeGNlcHRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCAxNjc2ZWE5NDE1MjE5YTU2NTA4YjAxNDcwZThiZTk1NjBkZmRkYTFm
Li45ZGJhN2I4NTY5MGQwNzA0NTNhMDY0YmZmMDdmNDE5MmU2NjcwNzEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTYtMTAtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNl
IGltcGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXVEY6Ok9wdGlvbmFsOjp2YWx1ZV9vciBhbmQg
V1RGOjp2YWx1ZU9yQ29tcHV0ZS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5
T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbToKKyAgICAg
ICAgKC1bV0tTZWN1cml0eU9yaWdpbiBwb3J0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxl
UGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
OjpyZXN0b3JlRnJvbVN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6ZW5jb2RlRm9ybURhdGFFbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmJvdW5kc09uU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpn
ZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvRm9ybURhdGEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKToKKwogMjAxNi0xMC0zMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBFbGVtZW50LCBOYW1lZE5vZGVNYXAs
IGFuZCBET01TdHJpbmdNYXAgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA3YjU3
YjE4OTI5MzcwNjEwYjczYTAwY2U1YzUwOWQzMWNmYjU1NjFmLi4xMTlkNmRiZWMyMjU1YzI0ZDc0
ZjY3MjliZjY2ZjBiMzdjNGJjNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzI1MiwxMSArMzI1MiwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAK
ICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0ID0gSlNWYWx1
ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxl
ZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9
CiAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNW
YWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhp
cywgcmlnaHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygp
OwogICAgIH0KIApAQCAtMzQwNSwxMSArMzQwNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAgIFJFTEVBU0VfQVNTRVJU
KCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCiAg
ICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgbGVmdCA9IEpTVmFsdWVP
cGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0
Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQog
ICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodCA9IEpTVmFs
dWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMs
IHJpZ2h0Q2hpbGQpOwogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsK
ICAgICB9CiAKQEAgLTM1NDYsNyArMzU0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAK
ICAgICBPcHRpb25hbDxGUFJUZW1wb3Jhcnk+IGZwclNjcmF0Y2g7CiAgICAgaWYgKG5lZWRzU2Ny
YXRjaEZQUlJlZykgewotICAgICAgICBmcHJTY3JhdGNoID0gRlBSVGVtcG9yYXJ5KHRoaXMpOwor
ICAgICAgICBmcHJTY3JhdGNoLmVtcGxhY2UodGhpcyk7CiAgICAgICAgIHNjcmF0Y2hGUFIgPSBm
cHJTY3JhdGNoLT5mcHIoKTsKICAgICB9CiAKQEAgLTM1ODAsMTEgKzM1ODAsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aEkKICAgICBBU1NFUlQoIShHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRW
YWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSAmJiBHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFs
aWRDb25zdGFudChyaWdodE9wZXJhbmQpKSk7CiAKICAgICBpZiAoIUdlbmVyYXRvcjo6aXNMZWZ0
T3BlcmFuZFZhbGlkQ29uc3RhbnQobGVmdE9wZXJhbmQpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywg
bGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAg
IH0KICAgICBpZiAoIUdlbmVyYXRvcjo6aXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KHJpZ2h0
T3BlcmFuZCkpIHsKLSAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENo
aWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAg
cmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogCkBAIC0zNjQ5LDEwICsz
NjQ5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwg
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgIH0pOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmIChHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxl
ZnRPcGVyYW5kKSkgewotICAgICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIGxl
ZnRDaGlsZCk7CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAg
ICAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfSBlbHNl
IGlmIChHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChyaWdodE9wZXJhbmQp
KSB7Ci0gICAgICAgICAgICByaWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQp
OworICAgICAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAg
ICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9CiAKQEAgLTQ3
NjYsMTEgKzQ3NjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5v
ZGUqIG5vZGUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkg
fHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwogCiAgICAgICAgIGlmICghbGVmdE9wZXJhbmQu
aXNDb25zdCgpKSB7Ci0gICAgICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbGVm
dENoaWxkKTsKKyAgICAgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOwogICAg
ICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9CiAgICAg
ICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICAgICAgcmlnaHQgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgICAgIHJpZ2h0LmVtcGxh
Y2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNW
YWx1ZVJlZ3MoKTsKICAgICAgICAgfQogCkBAIC03Mjc3LDcgKzcyNzcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgIE9wdGlvbmFs
PFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBnbG9iYWxPYmplY3Q7CiAgICAgaWYgKHBhdGNocG9pbnQt
PnJlcXVpcmVHbG9iYWxPYmplY3QpIHsKICAgICAgICAgRWRnZSYgZ2xvYmFsT2JqZWN0RWRnZSA9
IG5vZGUtPmNoaWxkMigpOwotICAgICAgICBnbG9iYWxPYmplY3QgPSBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCh0aGlzLCBnbG9iYWxPYmplY3RFZGdlKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LmVtcGxh
Y2UodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6
VmFsdWUoZ2xvYmFsT2JqZWN0LT5ncHIoKSwgbV9zdGF0ZS5mb3JOb2RlKGdsb2JhbE9iamVjdEVk
Z2UpLnZhbHVlKCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDhmNzJiMWU4ZGI2MWQ3ZjMzZTMw
M2QzYjczZDViM2Y1MmJlY2U4ZjguLmY5OGUxNDVkZjQ1YjBhYzk1NzJkM2Y1OGRjMTllYjMzMjMw
MmJmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtNTA0NSwxMSArNTA0NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5k
PiBrZXlBc1ZhbHVlOwogICAgICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzOwogICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtl
eUFzVmFsdWUgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBrZXlBc1ZhbHVlLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAga2V5UmVncyA9IGtleUFzVmFsdWUtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1Vz
ZSB8fCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAgICAg
IGtleUFzQ2VsbCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIGtleUFzQ2VsbC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgIGtleVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoa2V5QXNDZWxsLT5n
cHIoKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZjg5YzFlNjk3NTY5YjMyOGMxYjJkZDQyNWRlMzVl
NGY0MmEzNzQ4Ni4uNWYxNzNiNjA5NDU4ZjAwODY1Nzg3ZjJiYzBhZDc3Y2MzM2NjMTIxOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CkBAIC01MTk1LDExICs1MTk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGtleUFzVmFsdWU7CiAg
ICAgICAgIEdQUlJlZyBrZXlHUFI7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSkgewotICAgICAgICAgICAga2V5QXNWYWx1ZSA9IEpTVmFsdWVPcGVy
YW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzVmFsdWUuZW1wbGFj
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBrZXlHUFIgPSBrZXlBc1ZhbHVl
LT5ncHIoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlIHx8IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBTeW1ib2xVc2UpOwotICAgICAgICAgICAga2V5QXNDZWxsID0gU3BlY3VsYXRlQ2VsbE9wZXJh
bmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAga2V5QXNDZWxsLmVtcGxhY2Uo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5R1BSID0ga2V5QXNDZWxsLT5n
cHIoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KaW5k
ZXggMTJmOTU0YzAzNDljMWJmYzczMzAzZDYyOWZkZjFmZWJhNTYyNTU3Yy4uMDQ4MmM3OGE1OGZi
NTgwMmNkMTg3NzEyZWJhZTJhNjA5ZTQ0MmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGFyZ2V0
TXV0ZXgpOwogICAgICAgICAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNv
bnRyb2xBbGxvd2VkKCkpIHsKLSAgICAgICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmds
ZXRvbigpLnNldHVwRmFpbGVkKHRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApKTsKKyAgICAg
ICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdl
dElkZW50aWZpZXIoKS52YWx1ZV9vcigwKSk7CiAgICAgICAgICAgICAgICAgbV90YXJnZXQgPSBu
dWxscHRyOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0
PihtX3RhcmdldCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNhc3RlZFRhcmdldCA9IGRvd25j
YXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KG1fdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL09wdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCmluZGV4IDRj
YjUzYmY1N2Y4MjllNDRkYTlmYmQ0OWQ2ZmQ5YzhjOThjOTQ0ZDQuLmQ4ZjgxNjg0N2Q1ZmRlMjRj
ODg5YzUxOTQ5MDVhOTQwNWIwNGE5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlv
bmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaApAQCAtMSwyNzMgKzEsMTExMSBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgT3B0aW9uYWxfaAotI2RlZmluZSBPcHRpb25hbF9oCi0K
LSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotLy8gV1RGOjpPcHRpb25hbCBpcyBhIGNsYXNz
IGJhc2VkIG9uIHN0ZDo6b3B0aW9uYWwsIGRlc2NyaWJlZCBoZXJlOgotLy8gaHR0cDovL3d3dy5v
cGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAxMy9uMzUyNy5odG1sCi0v
LyBJZiB0aGlzIGVuZHMgdXAgaW4gYSBDKysgc3RhbmRhcmQsIHdlIHNob3VsZCByZXBsYWNlIG91
ciBpbXBsZW1lbnRhdGlvbiB3aXRoIGl0LgorLy8gQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxMiBB
bmRyemVqIEtyemVtaWVuc2tpLgorLy8KKy8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJp
YnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCisvLyBMaWNlbnNlLCBWZXJz
aW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBh
dAorLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQorLy8KKy8vIFRoZSBp
ZGVhIGFuZCBpbnRlcmZhY2UgaXMgYmFzZWQgb24gQm9vc3QuT3B0aW9uYWwgbGlicmFyeQorLy8g
YXV0aG9yZWQgYnkgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwKKy8vCisvLyBCb29z
dCBTb2Z0d2FyZSBMaWNlbnNlIC0gVmVyc2lvbiAxLjAgLSBBdWd1c3QgMTd0aCwgMjAwMworLy8K
Ky8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9yIG9yZ2FuaXphdGlvbgorLy8gb2J0YWluaW5nIGEgY29weSBvZiB0aGUgc29mdHdh
cmUgYW5kIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGNvdmVyZWQgYnkKKy8vIHRoaXMgbGlj
ZW5zZSAodGhlICJTb2Z0d2FyZSIpIHRvIHVzZSwgcmVwcm9kdWNlLCBkaXNwbGF5LCBkaXN0cmli
dXRlLAorLy8gZXhlY3V0ZSwgYW5kIHRyYW5zbWl0IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHByZXBh
cmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUKKy8vIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHRo
aXJkLXBhcnRpZXMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvCisvLyBkbyBz
bywgYWxsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZzoKKy8vCisvLyBUaGUgY29weXJpZ2h0IG5v
dGljZXMgaW4gdGhlIFNvZnR3YXJlIGFuZCB0aGlzIGVudGlyZSBzdGF0ZW1lbnQsIGluY2x1ZGlu
ZworLy8gdGhlIGFib3ZlIGxpY2Vuc2UgZ3JhbnQsIHRoaXMgcmVzdHJpY3Rpb24gYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciwKKy8vIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIGFuZAorLy8gYWxsIGRlcml2YXRp
dmUgd29ya3Mgb2YgdGhlIFNvZnR3YXJlLCB1bmxlc3Mgc3VjaCBjb3BpZXMgb3IgZGVyaXZhdGl2
ZQorLy8gd29ya3MgYXJlIHNvbGVseSBpbiB0aGUgZm9ybSBvZiBtYWNoaW5lLWV4ZWN1dGFibGUg
b2JqZWN0IGNvZGUgZ2VuZXJhdGVkIGJ5CisvLyBhIHNvdXJjZSBsYW5ndWFnZSBwcm9jZXNzb3Iu
CisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFRJVExFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVAorLy8gU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SIEFOWU9ORSBESVNU
UklCVVRJTkcgVEhFIFNPRlRXQVJFIEJFIExJQUJMRQorLy8gRk9SIEFOWSBEQU1BR0VTIE9SIE9U
SEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisv
LyBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF
IE9SIFRIRSBVU0UgT1IgT1RIRVIKKy8vIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKworLy8g
Q29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FrcnplbWkxL09wdGlvbmFsICg3MjdjNzI5
ZGQxZDlmMDZmMjI1ODY4MjgwZTUwMTU0NTk0ZDdlNTlkKQorCisvLyBNb2RpZmllZCB0byBtYWtl
IGl0IGNvbXBpbGUgd2l0aCBleGNlcHRpb25zIGRpc2FibGVkLgorCisjcHJhZ21hIG9uY2UKKwor
IyBpbmNsdWRlIDx1dGlsaXR5PgorIyBpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyMgaW5jbHVkZSA8
aW5pdGlhbGl6ZXJfbGlzdD4KKyMgaW5jbHVkZSA8Y2Fzc2VydD4KKyMgaW5jbHVkZSA8ZnVuY3Rp
b25hbD4KKyMgaW5jbHVkZSA8c3RyaW5nPgorIyBpbmNsdWRlIDxzdGRleGNlcHQ+CisjIGluY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjIGluY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorIyBpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyMgZGVmaW5lIFRSMl9PUFRJT05BTF9SRVFVSVJF
UyguLi4pIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPF9fVkFfQVJHU19fOjp2YWx1ZSwgYm9vbD46
OnR5cGUgPSBmYWxzZQorCisjIGlmIGRlZmluZWQgX19HTlVDX18gLy8gTk9URTogR05VQyBpcyBh
bHNvIGRlZmluZWQgZm9yIENsYW5nCisjICAgaWYgKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNf
TUlOT1JfXyA+PSA4KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF84X0FORF9ISUdI
RVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA+IDQpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFM
X0dDQ180XzhfQU5EX0hJR0hFUl9fXworIyAgIGVuZGlmCisjCisjICAgaWYgKF9fR05VQ19fID09
IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA3KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9H
Q0NfNF83X0FORF9ISUdIRVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA+IDQpCisjICAgICBkZWZp
bmUgVFIyX09QVElPTkFMX0dDQ180XzdfQU5EX0hJR0hFUl9fXworIyAgIGVuZGlmCisjCisjICAg
aWYgKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA9PSA4KSAmJiAoX19HTlVDX1BB
VENITEVWRUxfXyA+PSAxKQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF84XzFfQU5E
X0hJR0hFUl9fXworIyAgIGVsaWYgKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+
PSA5KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hFUl9fXwor
IyAgIGVsaWYgKF9fR05VQ19fID4gNCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRf
OF8xX0FORF9ISUdIRVJfX18KKyMgICBlbmRpZgorIyBlbmRpZgorIworIyBpZiBkZWZpbmVkIF9f
Y2xhbmdfbWFqb3JfXworIyAgIGlmIChfX2NsYW5nX21ham9yX18gPT0gMyAmJiBfX2NsYW5nX21p
bm9yX18gPj0gNSkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdfM181X0FORF9ISUdI
VEVSXworIyAgIGVsaWYgKF9fY2xhbmdfbWFqb3JfXyA+IDMpCisjICAgICBkZWZpbmUgVFIyX09Q
VElPTkFMX0NMQU5HXzNfNV9BTkRfSElHSFRFUl8KKyMgICBlbmRpZgorIyAgIGlmIGRlZmluZWQg
VFIyX09QVElPTkFMX0NMQU5HXzNfNV9BTkRfSElHSFRFUl8KKyMgICAgIGRlZmluZSBUUjJfT1BU
SU9OQUxfQ0xBTkdfM180XzJfQU5EX0hJR0hFUl8KKyMgICBlbGlmIChfX2NsYW5nX21ham9yX18g
PT0gMyAmJiBfX2NsYW5nX21pbm9yX18gPT0gNCAmJiBfX2NsYW5nX3BhdGNobGV2ZWxfXyA+PSAy
KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9DTEFOR18zXzRfMl9BTkRfSElHSEVSXworIyAg
IGVuZGlmCisjIGVuZGlmCisjCisjIGlmIGRlZmluZWQgX01TQ19WRVIKKyMgICBpZiAoX01TQ19W
RVIgPj0gMTkwMCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfTVNWQ18yMDE1X0FORF9ISUdI
RVJfX18KKyMgICBlbmRpZgorIyBlbmRpZgorCisjIGlmIGRlZmluZWQgX19jbGFuZ19fCisjICAg
aWYgKF9fY2xhbmdfbWFqb3JfXyA+IDIpIHx8IChfX2NsYW5nX21ham9yX18gPT0gMikgJiYgKF9f
Y2xhbmdfbWlub3JfXyA+PSA5KQorIyAgICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JWQUxV
RV9SRUZTIDEKKyMgICBlbHNlCisjICAgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVF
X1JFRlMgMAorIyAgIGVuZGlmCisjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfR0NDXzRfOF8x
X0FORF9ISUdIRVJfX18KKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMg
MQorIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX01TVkNfMjAxNV9BTkRfSElHSEVSX19fCisj
ICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTIDEKKyMgZWxzZQorIyAgIGRl
ZmluZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAwCisjIGVuZGlmCisKKworIyBpZiBk
ZWZpbmVkIFRSMl9PUFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hFUl9fXworIyAgIGRlZmluZSBP
UFRJT05BTF9IQVNfQ09OU1RFWFBSX0lOSVRfTElTVCAxCisjICAgZGVmaW5lIE9QVElPTkFMX0NP
TlNURVhQUl9JTklUX0xJU1QgY29uc3RleHByCisjIGVsc2UKKyMgICBkZWZpbmUgT1BUSU9OQUxf
SEFTX0NPTlNURVhQUl9JTklUX0xJU1QgMAorIyAgIGRlZmluZSBPUFRJT05BTF9DT05TVEVYUFJf
SU5JVF9MSVNUCisjIGVuZGlmCisKKy8vIEZJWE1FOiBUbyBtYWtlIHRoZSByZXN1bHQgb2YgdmFs
dWUoKSB0eXBlIGNvbnNpc3RlbnQgYW1vbmcgdGhlIGNvbXBpbGVycywgd2Ugbm93IGludGVudGlv
bmFsbHkgZGlzYWJsZXMgbW92ZSBhY2Nlc3NvcnMuCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19N
T1ZFX0FDQ0VTU09SUyAwCisvLyAjIGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0NMQU5HXzNfNV9B
TkRfSElHSFRFUl8gJiYgKGRlZmluZWQgX19jcGx1c3BsdXMpICYmIChfX2NwbHVzcGx1cyAhPSAy
MDExMDNMKQorLy8gIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfTU9WRV9BQ0NFU1NPUlMgMQorLy8g
IyBlbHNlCisvLyAjICAgZGVmaW5lIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyAwCisvLyAj
IGVuZGlmCisKKyMgLy8gSW4gQysrMTEgY29uc3RleHByIGltcGxpZXMgY29uc3QsIHNvIHdlIG5l
ZWQgdG8gbWFrZSBub24tY29uc3QgbWVtYmVycyBhbHNvIG5vbi1jb25zdGV4cHIKKyMgaWYgKGRl
ZmluZWQgX19jcGx1c3BsdXMpICYmIChfX2NwbHVzcGx1cyA9PSAyMDExMDNMKQorIyAgIGRlZmlu
ZSBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUgorIyBlbHNlCisjICAgZGVmaW5lIE9QVElPTkFM
X01VVEFCTEVfQ09OU1RFWFBSIGNvbnN0ZXhwcgorIyBlbmRpZgorCisjaWYgQ09NUElMRVJfU1VQ
UE9SVFMoRVhDRVBUSU9OUykKKyNkZWZpbmUgX19USFJPV19FWENFUFRJT04oX19leGNlcHRpb24p
IHRocm93IF9fZXhjZXB0aW9uOworI2RlZmluZSBfX05PRVhDRVBUIG5vZXhjZXB0CisjZGVmaW5l
IF9fTk9FWENFUFRfKF9fZXhjZXB0aW9uKSBub2V4Y2VwdChfX2V4Y2VwdGlvbikKKyNlbHNlCisj
ZGVmaW5lIF9fVEhST1dfRVhDRVBUSU9OKF9fZXhjZXB0aW9uKSBkbyB7ICh2b2lkKV9fZXhjZXB0
aW9uOyBDUkFTSCgpOyB9IHdoaWxlICgwKTsKKyNkZWZpbmUgX19OT0VYQ0VQVAorI2RlZmluZSBf
X05PRVhDRVBUXyguLi4pCisjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXN0cnVjdCBJblBs
YWNlVGFnIHsgfTsKLWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9OworLy8gTk9URTog
QWxsIG91ciB0YXJnZXQgY29tcGlsZXJzIHN1cHBvcnQgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZS4KKy8vIC8vIEJFR0lOIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgaXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZQorLy8gIyBpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9HQ0NfNF84X0FORF9ISUdIRVJf
X18KKy8vICAgICAvLyBsZWF2ZSBpdDogaXQgaXMgYWxyZWFkeSB0aGVyZQorLy8gIyBlbGlmIGRl
ZmluZWQgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisvLyAgICAgLy8gbGVh
dmUgaXQ6IGl0IGlzIGFscmVhZHkgdGhlcmUKKy8vICMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05B
TF9NU1ZDXzIwMTVfQU5EX0hJR0hFUl9fXworLy8gICAgIC8vIGxlYXZlIGl0OiBpdCBpcyBhbHJl
YWR5IHRoZXJlCisvLyAjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfRElTQUJMRV9FTVVMQVRJ
T05fT0ZfVFlQRV9UUkFJVFMKKy8vICAgICAvLyBsZWF2ZSBpdDogdGhlIHVzZXIgZG9lc24ndCB3
YW50IGl0CisvLyAjIGVsc2UKKy8vIAl0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vIAl1c2luZyBp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlID0gc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+
OworLy8gIyBlbmRpZgorLy8gLy8gRU5EIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgaXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZQorCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoRVhDRVBUSU9OUykKKyMg
aWYgZGVmaW5lZChUUjJfT1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fKSB8fCBkZWZpbmVk
KFRSMl9PUFRJT05BTF9DTEFOR18zXzRfMl9BTkRfSElHSEVSXykgfHwgZGVmaW5lZChUUjJfT1BU
SU9OQUxfTVNWQ18yMDE1X0FORF9ISUdIRVJfX18pCisgICAgLy8gbGVhdmUgaXQ7IG91ciBtZXRh
ZnVuY3Rpb25zIGFyZSBhbHJlYWR5IGRlZmluZWQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgdXNpbmcgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUgPSBzdGQ6OmlzX25vdGhy
b3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHVzaW5nIGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlID0gc3RkOjppc19ub3Rocm93X21vdmVf
YXNzaWduYWJsZTxUPjsKKyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9ESVNBQkxFX0VNVUxB
VElPTl9PRl9UWVBFX1RSQUlUUworICAgIC8vIGxlYXZlIGl0OiB0aGUgdXNlciBkb2Vzbid0IHdh
bnQgaXQKKyMgZWxzZQorCisKKy8vIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgdHJhaXRzIGluIEdD
QyBhbmQgQ0xBTkcKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IGlzX25vdGhyb3dfbW92ZV9j
b25zdHJ1Y3RpYmxlCit7CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IHN0ZDo6aXNf
bm90aHJvd19jb25zdHJ1Y3RpYmxlPFQsIFQmJj46OnZhbHVlOworfTsKKworCit0ZW1wbGF0ZSA8
Y2xhc3MgVCwgY2xhc3MgVT4KK3N0cnVjdCBpc19hc3NpZ25hYmxlCit7CisgIHRlbXBsYXRlIDxj
bGFzcyBYLCBjbGFzcyBZPgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX2Fzc2lnbiguLi4p
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFksIHNpemVf
dCBTID0gc2l6ZW9mKChzdGQ6OmRlY2x2YWw8WD4oKSA9IHN0ZDo6ZGVjbHZhbDxZPigpLCB0cnVl
KSkgPgorICAvLyB0aGUgY29tbWEgb3BlcmF0b3IgaXMgbmVjZXNzYXJ5IGZvciB0aGUgY2FzZXMg
d2hlcmUgb3BlcmF0b3I9IHJldHVybnMgdm9pZAorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFz
X2Fzc2lnbihib29sKSB7IHJldHVybiB0cnVlOyB9CisKKyAgY29uc3RleHByIHN0YXRpYyBib29s
IHZhbHVlID0gaGFzX2Fzc2lnbjxULCBVPih0cnVlKTsKK307CisKKwordGVtcGxhdGUgPGNsYXNz
IFQ+CitzdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUKK3sKKyAgdGVtcGxhdGUgPGNs
YXNzIFgsIGJvb2wgaGFzX2FueV9tb3ZlX2Fzc2lnbj4KKyAgc3RydWN0IGhhc19ub3Rocm93X21v
dmVfYXNzaWduIHsKKyAgICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAg
fTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgWD4KKyAgc3RydWN0IGhhc19ub3Rocm93X21vdmVfYXNz
aWduPFgsIHRydWU+IHsKKyAgICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBfX05PRVhD
RVBUXyggc3RkOjpkZWNsdmFsPFgmPigpID0gc3RkOjpkZWNsdmFsPFgmJj4oKSApOworICB9Owor
CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IGhhc19ub3Rocm93X21vdmVfYXNzaWdu
PFQsIGlzX2Fzc2lnbmFibGU8VCYsIFQmJj46OnZhbHVlPjo6dmFsdWU7Cit9OworLy8gZW5kIHdv
cmthcm91bmQKKworCisjIGVuZGlmCisjZW5kaWYKKworCisKKy8vIDIwLjUuNCwgb3B0aW9uYWwg
Zm9yIG9iamVjdCB0eXBlcwordGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIE9wdGlvbmFsOworCisv
LyAyMC41LjUsIG9wdGlvbmFsIGZvciBsdmFsdWUgcmVmZXJlbmNlIHR5cGVzCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY2xhc3MgT3B0aW9uYWw8VCY+OworCisKKy8vIHdvcmthcm91bmQ6IHN0ZCB1dGls
aXR5IGZ1bmN0aW9ucyBhcmVuJ3QgY29uc3RleHByIHlldAordGVtcGxhdGUgPGNsYXNzIFQ+IGlu
bGluZSBjb25zdGV4cHIgVCYmIGNvbnN0ZXhwcl9mb3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X3JlZmVyZW5jZTxUPjo6dHlwZSYgdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gc3RhdGljX2Nh
c3Q8VCYmPih0KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgVCYm
IGNvbnN0ZXhwcl9mb3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlw
ZSYmIHQpIF9fTk9FWENFUFQKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2x2YWx1ZV9y
ZWZlcmVuY2U8VD46OnZhbHVlLCAiISEiKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCYmPih0
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgdHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgY29uc3RleHByX21vdmUoVCYmIHQpIF9fTk9F
WENFUFQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVm
ZXJlbmNlPFQ+Ojp0eXBlJiY+KHQpOworfQorCisKKyNpZiBkZWZpbmVkIE5ERUJVRworIyBkZWZp
bmUgVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oQ0hFQ0ssIEVYUFIpIChFWFBSKQor
I2Vsc2UKKyMgZGVmaW5lIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKENIRUNLLCBF
WFBSKSAoKENIRUNLKSA/IChFWFBSKSA6IChbXXthc3NlcnQoISNDSEVDSyk7fSgpLCAoRVhQUikp
KQorI2VuZGlmCisKKworbmFtZXNwYWNlIGRldGFpbF8KK3sKKworLy8gc3RhdGljX2FkZHJlc3Nv
ZjogYSBjb25zdGV4cHIgdmVyc2lvbiBvZiBhZGRyZXNzb2YKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IGhhc19vdmVybG9hZGVkX2FkZHJlc3NvZgoreworICB0ZW1wbGF0ZSA8Y2xhc3Mg
WD4KKyAgY29uc3RleHByIHN0YXRpYyBib29sIGhhc19vdmVybG9hZCguLi4pIHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIHNpemVfdCBTID0gc2l6ZW9mKHN0ZDo6ZGVj
bHZhbDxYJj4oKS5vcGVyYXRvciYoKSkgPgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX292
ZXJsb2FkKGJvb2wpIHsgcmV0dXJuIHRydWU7IH0KKworICBjb25zdGV4cHIgc3RhdGljIGJvb2wg
dmFsdWUgPSBoYXNfb3ZlcmxvYWQ8VD4odHJ1ZSk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgVFIyX09QVElPTkFMX1JFUVVJUkVTKCFoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4pPgor
Y29uc3RleHByIFQqIHN0YXRpY19hZGRyZXNzb2YoVCYgcmVmKQoreworICByZXR1cm4gJnJlZjsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhoYXNfb3Zl
cmxvYWRlZF9hZGRyZXNzb2Y8VD4pPgorVCogc3RhdGljX2FkZHJlc3NvZihUJiByZWYpCit7Cisg
IHJldHVybiBzdGQ6OmFkZHJlc3NvZihyZWYpOworfQorCisKKy8vIHRoZSBjYWxsIHRvIGNvbnZl
cnQ8QT4oYikgaGFzIHJldHVybiB0eXBlIEEgYW5kIGNvbnZlcnRzIGIgdG8gdHlwZSBBIGlmZiBi
IGRlY2x0eXBlKGIpIGlzIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQQordGVtcGxhdGUgPGNs
YXNzIFU+Citjb25zdGV4cHIgVSBjb252ZXJ0KFUgdikgeyByZXR1cm4gdjsgfQorCit9IC8vIG5h
bWVzcGFjZSBkZXRhaWwKKworCitjb25zdGV4cHIgc3RydWN0IHRyaXZpYWxfaW5pdF90e30gdHJp
dmlhbF9pbml0e307CiAKLXN0cnVjdCBOdWxsb3B0VGFnIHsgZXhwbGljaXQgY29uc3RleHByIE51
bGxvcHRUYWcoaW50KSB7IH0gfTsKLWNvbnN0ZXhwciBOdWxsb3B0VGFnIE51bGxvcHQgeyAwIH07
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBPcHRpb25hbCB7CisvLyAyMC41LjYsIElu
LXBsYWNlIGNvbnN0cnVjdGlvbgorY29uc3RleHByIHN0cnVjdCBJblBsYWNlVGFne30gSW5QbGFj
ZXt9OworCisKKy8vIDIwLjUuNywgRGlzZW5nYWdlZCBzdGF0ZSBpbmRpY2F0b3IKK3N0cnVjdCBu
dWxsb3B0X3QKK3sKKyAgc3RydWN0IGluaXR7fTsKKyAgY29uc3RleHByIGV4cGxpY2l0IG51bGxv
cHRfdChpbml0KXt9Cit9OworY29uc3RleHByIG51bGxvcHRfdCBOdWxsb3B0e251bGxvcHRfdDo6
aW5pdCgpfTsKKworCisvLyAyMC41LjgsIGNsYXNzIGJhZF9vcHRpb25hbF9hY2Nlc3MKK2NsYXNz
IGJhZF9vcHRpb25hbF9hY2Nlc3MgOiBwdWJsaWMgc3RkOjpsb2dpY19lcnJvciB7CiBwdWJsaWM6
Ci0gICAgT3B0aW9uYWwoKQotICAgICAgICA6IG1faXNFbmdhZ2VkKGZhbHNlKQotICAgIHsKLSAg
ICB9CisgIGV4cGxpY2l0IGJhZF9vcHRpb25hbF9hY2Nlc3MoY29uc3Qgc3RkOjpzdHJpbmcmIHdo
YXRfYXJnKSA6IHN0ZDo6bG9naWNfZXJyb3J7d2hhdF9hcmd9IHt9CisgIGV4cGxpY2l0IGJhZF9v
cHRpb25hbF9hY2Nlc3MoY29uc3QgY2hhciogd2hhdF9hcmcpIDogc3RkOjpsb2dpY19lcnJvcnt3
aGF0X2FyZ30ge30KK307CiAKLSAgICBPcHRpb25hbChOdWxsb3B0VGFnKQotICAgICAgICA6IG1f
aXNFbmdhZ2VkKGZhbHNlKQotICAgIHsKLSAgICB9CiAKLSAgICBPcHRpb25hbChjb25zdCBUJiB2
YWx1ZSkKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAgIHsKLSAgICAgICAgbmV3IChO
b3ROdWxsLCAmbV92YWx1ZSkgVCh2YWx1ZSk7Ci0gICAgfQordGVtcGxhdGUgPGNsYXNzIFQ+Cit1
bmlvbiBzdG9yYWdlX3QKK3sKKyAgdW5zaWduZWQgY2hhciBkdW1teV87CisgIFQgdmFsdWVfOwog
Ci0gICAgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmIG90aGVyKQotICAgICAgICA6IG1faXNFbmdh
Z2VkKG90aGVyLm1faXNFbmdhZ2VkKQotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQot
ICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0g
ICAgfQorICBjb25zdGV4cHIgc3RvcmFnZV90KCB0cml2aWFsX2luaXRfdCApIF9fTk9FWENFUFQg
OiBkdW1teV8oKSB7fTsKIAotICAgIE9wdGlvbmFsKE9wdGlvbmFsJiYgb3RoZXIpCi0gICAgICAg
IDogbV9pc0VuZ2FnZWQob3RoZXIubV9pc0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9p
c0VuZ2FnZWQpCi0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUo
Km90aGVyLmFzUHRyKCkpKTsKLSAgICB9CisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBj
b25zdGV4cHIgc3RvcmFnZV90KCBBcmdzJiYuLi4gYXJncyApIDogdmFsdWVfKGNvbnN0ZXhwcl9m
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgT3B0aW9uYWwoVCYmIHZhbHVlKQotICAg
ICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCi0gICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZt
X3ZhbHVlKSBUKFdURk1vdmUodmFsdWUpKTsKLSAgICB9CisgIH5zdG9yYWdlX3QoKXt9Cit9Owog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBPcHRpb25hbChJblBsYWNlVGFn
LCBBcmdzJiYuLi4gYXJncykKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAgIHsKLSAg
ICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwotICAgIH0KIAotICAgIH5PcHRpb25hbCgpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7
Ci0gICAgfQordGVtcGxhdGUgPGNsYXNzIFQ+Cit1bmlvbiBjb25zdGV4cHJfc3RvcmFnZV90Cit7
CisgICAgdW5zaWduZWQgY2hhciBkdW1teV87CisgICAgVCB2YWx1ZV87CiAKLSAgICBPcHRpb25h
bCYgb3BlcmF0b3I9KE51bGxvcHRUYWcpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9CisgICAgY29uc3RleHByIGNvbnN0ZXhwcl9zdG9yYWdl
X3QoIHRyaXZpYWxfaW5pdF90ICkgX19OT0VYQ0VQVCA6IGR1bW15XygpIHt9OwogCi0gICAgT3B0
aW9uYWwmIG9wZXJhdG9yPShjb25zdCBPcHRpb25hbCYgb3RoZXIpCi0gICAgewotICAgICAgICBp
ZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAg
ZGVzdHJveSgpOwotICAgICAgICBpZiAob3RoZXIubV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAg
IG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoKm90aGVyLmFzUHRyKCkpOwotICAgICAgICAgICAg
bV9pc0VuZ2FnZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9CisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgICAgY29uc3RleHByIGNvbnN0ZXhw
cl9zdG9yYWdlX3QoIEFyZ3MmJi4uLiBhcmdzICkgOiB2YWx1ZV8oY29uc3RleHByX2ZvcndhcmQ8
QXJncz4oYXJncykuLi4pIHt9CiAKLSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFsJiYg
b3RoZXIpCi0gICAgewotICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgZGVzdHJveSgpOwotICAgICAgICBpZiAob3RoZXIubV9p
c0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92
ZSgqb3RoZXIuYXNQdHIoKSkpOwotICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVlOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9CisgICAgfmNvbnN0ZXhwcl9zdG9y
YWdlX3QoKSA9IGRlZmF1bHQ7Cit9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgY2xhc3Mg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpyZW1v
dmVfcmVmZXJlbmNlPFU+Ojp0eXBlLCBUPjo6dmFsdWU+Ojp0eXBlPgotICAgIE9wdGlvbmFsJiBv
cGVyYXRvcj0oVSYmIHUpCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIG5ldyAo
Tm90TnVsbCwgJm1fdmFsdWUpIFQoc3RkOjpmb3J3YXJkPFU+KHUpKTsKLSAgICAgICAgbV9pc0Vu
Z2FnZWQgPSB0cnVlOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmdhZ2VkOyB9Cit0ZW1wbGF0
ZSA8Y2xhc3MgVD4KK3N0cnVjdCBvcHRpb25hbF9iYXNlCit7CisgICAgYm9vbCBpbml0XzsKKyAg
ICBzdG9yYWdlX3Q8VD4gc3RvcmFnZV87CiAKLSAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiBh
c1B0cigpOwotICAgIH0KKyAgICBjb25zdGV4cHIgb3B0aW9uYWxfYmFzZSgpIF9fTk9FWENFUFQg
OiBpbml0XyhmYWxzZSksIHN0b3JhZ2VfKHRyaXZpYWxfaW5pdCkge307CiAKLSAgICBUKiBvcGVy
YXRvci0+KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJl
dHVybiBhc1B0cigpOwotICAgIH0KKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWxfYmFz
ZShjb25zdCBUJiB2KSA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyh2KSB7fQogCi0gICAgY29uc3Qg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQotICAgIFQmIG9wZXJhdG9y
KigpIHsgcmV0dXJuIHZhbHVlKCk7IH0KKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWxf
YmFzZShUJiYgdikgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oY29uc3RleHByX21vdmUodikpIHt9
CiAKLSAgICBUJiB2YWx1ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2FnZWQpOwot
ICAgICAgICByZXR1cm4gKmFzUHRyKCk7Ci0gICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBB
cmdzPiBleHBsaWNpdCBvcHRpb25hbF9iYXNlKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQor
ICAgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihh
cmdzKS4uLikge30KIAotICAgIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiAqYXNQdHIoKTsKLSAgICB9Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJF
UyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+Cisg
ICAgZXhwbGljaXQgb3B0aW9uYWxfYmFzZShJblBsYWNlVGFnLCBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdl
XyhpbCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KLSAgICBUIHZhbHVlT3IoVSYmIHZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOworICAgIH5vcHRp
b25hbF9iYXNlKCkgeyBpZiAoaW5pdF8pIHN0b3JhZ2VfLnZhbHVlXy5UOjp+VCgpOyB9Cit9Owog
Ci0gICAgICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpOwotICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICph
c1B0cigpOwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgY29uc3RleHByX29wdGlvbmFsX2Jh
c2UKK3sKKyAgICBib29sIGluaXRfOworICAgIGNvbnN0ZXhwcl9zdG9yYWdlX3Q8VD4gc3RvcmFn
ZV87CisKKyAgICBjb25zdGV4cHIgY29uc3RleHByX29wdGlvbmFsX2Jhc2UoKSBfX05PRVhDRVBU
IDogaW5pdF8oZmFsc2UpLCBzdG9yYWdlXyh0cml2aWFsX2luaXQpIHt9OworCisgICAgZXhwbGlj
aXQgY29uc3RleHByIGNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKGNvbnN0IFQmIHYpIDogaW5pdF8o
dHJ1ZSksIHN0b3JhZ2VfKHYpIHt9CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHBy
X29wdGlvbmFsX2Jhc2UoVCYmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGNvbnN0ZXhwcl9t
b3ZlKHYpKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxpY2l0IGNvbnN0
ZXhwciBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZShJblBsYWNlVGFnLCBBcmdzJiYuLi4gYXJncykK
KyAgICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9P
UFRJT05BTF9SRVFVSVJFUyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXpl
cl9saXN0PFU+Pik+CisgICAgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVCBleHBsaWNpdCBj
b25zdGV4cHJfb3B0aW9uYWxfYmFzZShJblBsYWNlVGFnLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oaWws
IHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKworICAgIH5jb25zdGV4cHJfb3B0aW9u
YWxfYmFzZSgpID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgT3B0
aW9uYWxCYXNlID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKKyAgICBzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWYgcG9zc2libGUKKyAgICBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jb25zdDxUPjo6dHlwZT4sIC8vIHVzZSBiYXNlIHdpdGggdHJpdmlhbCBkZXN0cnVjdG9y
CisgICAgb3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZT4K
Kz46OnR5cGU7CisKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIE9wdGlvbmFsIDogcHJp
dmF0ZSBPcHRpb25hbEJhc2U8VD4KK3sKKyAgc3RhdGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTx0
eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlLCBudWxsb3B0X3Q+Ojp2YWx1ZSwgImJhZCBUIiAp
OworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46
OnR5cGUsIEluUGxhY2VUYWc+Ojp2YWx1ZSwgImJhZCBUIiApOworCiAKLSAgICAgICAgcmV0dXJu
IGNhbGxiYWNrKCk7CisgIGNvbnN0ZXhwciBib29sIGluaXRpYWxpemVkKCkgY29uc3QgX19OT0VY
Q0VQVCB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OmluaXRfOyB9CisgIHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlKiBkYXRhcHRyKCkgeyAgcmV0dXJuIHN0ZDo6YWRkcmVzc29m
KE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQorICBjb25zdGV4cHIgY29uc3Qg
VCogZGF0YXB0cigpIGNvbnN0IHsgcmV0dXJuIGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YoT3B0
aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV8pOyB9CisKKyMgaWYgT1BUSU9OQUxfSEFTX1RI
SVNfUlZBTFVFX1JFRlMgPT0gMQorICBjb25zdGV4cHIgY29uc3QgVCYgY29udGFpbmVkX3ZhbCgp
IGNvbnN0JiB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorIyAg
IGlmIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisgIE9QVElPTkFMX01VVEFCTEVf
Q09OU1RFWFBSIFQmJiBjb250YWluZWRfdmFsKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKE9wdGlv
bmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQorICBPUFRJT05BTF9NVVRBQkxFX0NPTlNU
RVhQUiBUJiBjb250YWluZWRfdmFsKCkgJiB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3Jh
Z2VfLnZhbHVlXzsgfQorIyAgIGVsc2UKKyAgVCYgY29udGFpbmVkX3ZhbCgpICYgeyByZXR1cm4g
T3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyAgVCYmIGNvbnRhaW5lZF92YWwo
KSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV8p
OyB9CisjICAgZW5kaWYKKyMgZWxzZQorICBjb25zdGV4cHIgY29uc3QgVCYgY29udGFpbmVkX3Zh
bCgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9Cisg
IFQmIGNvbnRhaW5lZF92YWwoKSB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZh
bHVlXzsgfQorIyBlbmRpZgorCisgIHZvaWQgY2xlYXIoKSBfX05PRVhDRVBUIHsKKyAgICBpZiAo
aW5pdGlhbGl6ZWQoKSkgZGF0YXB0cigpLT5UOjp+VCgpOworICAgIE9wdGlvbmFsQmFzZTxUPjo6
aW5pdF8gPSBmYWxzZTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICB2b2lk
IGluaXRpYWxpemUoQXJncyYmLi4uIGFyZ3MpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKFQoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkpCisgIHsKKyAgICBBU1NFUlQoIU9wdGlvbmFsQmFz
ZTxUPjo6aW5pdF8pOworICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkg
VChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5p
dF8gPSB0cnVlOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+Cisg
IHZvaWQgaW5pdGlhbGl6ZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBh
cmdzKSBfX05PRVhDRVBUXyhfX05PRVhDRVBUXyhUKGlsLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKSkKKyAgeworICAgIEFTU0VSVCghT3B0aW9uYWxCYXNlPFQ+Ojppbml0Xyk7CisgICAg
OjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKGlsLCBzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOworICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSB0cnVlOworICB9
CisKK3B1YmxpYzoKKyAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CisKKyAgLy8gMjAuNS41LjEsIGNv
bnN0cnVjdG9ycworICBjb25zdGV4cHIgT3B0aW9uYWwoKSBfX05PRVhDRVBUIDogT3B0aW9uYWxC
YXNlPFQ+KCkgIHt9OworICBjb25zdGV4cHIgT3B0aW9uYWwobnVsbG9wdF90KSBfX05PRVhDRVBU
IDogT3B0aW9uYWxCYXNlPFQ+KCkge307CisKKyAgT3B0aW9uYWwoY29uc3QgT3B0aW9uYWwmIHJo
cykKKyAgOiBPcHRpb25hbEJhc2U8VD4oKQorICB7CisgICAgaWYgKHJocy5pbml0aWFsaXplZCgp
KSB7CisgICAgICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVCgqcmhz
KTsKKyAgICAgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7CiAgICAgfQorICB9CiAK
LXByaXZhdGU6Ci0gICAgY29uc3QgVCogYXNQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IFQqPigmbV92YWx1ZSk7IH0KLSAgICBUKiBhc1B0cigpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8VCo+KCZtX3ZhbHVlKTsgfQotICAgIHZvaWQgZGVzdHJveSgpCi0gICAg
ewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIGFzUHRyKCktPn5UKCk7
Ci0gICAgICAgICAgICBtX2lzRW5nYWdlZCA9IGZhbHNlOwotICAgICAgICB9CisgIE9wdGlvbmFs
KE9wdGlvbmFsJiYgcmhzKSBfX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUpCisgIDogT3B0aW9uYWxCYXNlPFQ+KCkKKyAgeworICAgIGlmIChyaHMuaW5p
dGlhbGl6ZWQoKSkgeworICAgICAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIo
KSkpIFQoc3RkOjptb3ZlKCpyaHMpKTsKKyAgICAgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9
IHRydWU7CiAgICAgfQorICB9CisKKyAgY29uc3RleHByIE9wdGlvbmFsKGNvbnN0IFQmIHYpIDog
T3B0aW9uYWxCYXNlPFQ+KHYpIHt9CisKKyAgY29uc3RleHByIE9wdGlvbmFsKFQmJiB2KSA6IE9w
dGlvbmFsQmFzZTxUPihjb25zdGV4cHJfbW92ZSh2KSkge30KKworICB0ZW1wbGF0ZSA8Y2xhc3Mu
Li4gQXJncz4KKyAgZXhwbGljaXQgY29uc3RleHByIE9wdGlvbmFsKEluUGxhY2VUYWcsIEFyZ3Mm
Ji4uLiBhcmdzKQorICA6IE9wdGlvbmFsQmFzZTxUPihJblBsYWNlVGFne30sIGNvbnN0ZXhwcl9m
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzLCBUUjJfT1BUSU9OQUxfUkVRVUlSRVMoc3RkOjppc19jb25zdHJ1Y3RpYmxlPFQsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPj4pPgorICBPUFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNU
IGV4cGxpY2l0IE9wdGlvbmFsKEluUGxhY2VUYWcsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBp
bCwgQXJncyYmLi4uIGFyZ3MpCisgIDogT3B0aW9uYWxCYXNlPFQ+KEluUGxhY2VUYWd7fSwgaWws
IGNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgIC8vIDIwLjUuNC4yLCBE
ZXN0cnVjdG9yCisgIH5PcHRpb25hbCgpID0gZGVmYXVsdDsKKworICAvLyAyMC41LjQuMywgYXNz
aWdubWVudAorICBPcHRpb25hbCYgb3BlcmF0b3I9KG51bGxvcHRfdCkgX19OT0VYQ0VQVAorICB7
CisgICAgY2xlYXIoKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBPcHRpb25hbCYgb3Bl
cmF0b3I9KGNvbnN0IE9wdGlvbmFsJiByaHMpCisgIHsKKyAgICBpZiAgICAgIChpbml0aWFsaXpl
ZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IGZhbHNlKSBjbGVhcigpOworICAg
IGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0g
dHJ1ZSkgIGluaXRpYWxpemUoKnJocyk7CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSB0
cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgY29udGFpbmVkX3ZhbCgpID0gKnJo
czsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlv
bmFsJiYgcmhzKQorICBfX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxUPjo6
dmFsdWUgJiYgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlKQorICB7Cisg
ICAgaWYgICAgICAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9
PSBmYWxzZSkgY2xlYXIoKTsKKyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IGZhbHNlICYm
IHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICBpbml0aWFsaXplKHN0ZDo6bW92ZSgqcmhzKSk7
CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQo
KSA9PSB0cnVlKSAgY29udGFpbmVkX3ZhbCgpID0gc3RkOjptb3ZlKCpyaHMpOworICAgIHJldHVy
biAqdGhpczsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBVPgorICBhdXRvIG9wZXJhdG9yPShV
JiYgdikKKyAgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgPAorICAgIHN0ZDo6aXNfc2Ft
ZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFU+Ojp0eXBlLCBUPjo6dmFsdWUsCisgICAgT3B0aW9uYWwm
CisgID46OnR5cGUKKyAgeworICAgIGlmIChpbml0aWFsaXplZCgpKSB7IGNvbnRhaW5lZF92YWwo
KSA9IHN0ZDo6Zm9yd2FyZDxVPih2KTsgfQorICAgIGVsc2UgICAgICAgICAgICAgICB7IGluaXRp
YWxpemUoc3RkOjpmb3J3YXJkPFU+KHYpKTsgIH0KKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKwor
CisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICB2b2lkIGVtcGxhY2UoQXJncyYmLi4uIGFy
Z3MpCisgIHsKKyAgICBjbGVhcigpOworICAgIGluaXRpYWxpemUoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgor
ICB2b2lkIGVtcGxhY2Uoc3RkOjppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYuLi4gYXJn
cykKKyAgeworICAgIGNsZWFyKCk7CisgICAgaW5pdGlhbGl6ZTxVLCBBcmdzLi4uPihpbCwgc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgfQorCisgIC8vIDIwLjUuNC40LCBTd2FwCisg
IHZvaWQgc3dhcChPcHRpb25hbDxUPiYgcmhzKSBfX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVf
Y29uc3RydWN0aWJsZTxUPjo6dmFsdWUgJiYgX19OT0VYQ0VQVF8oc3dhcChzdGQ6OmRlY2x2YWw8
VCY+KCksIHN0ZDo6ZGVjbHZhbDxUJj4oKSkpKQorICB7CisgICAgaWYgICAgICAoaW5pdGlhbGl6
ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSkgeyByaHMuaW5pdGlh
bGl6ZShzdGQ6Om1vdmUoKip0aGlzKSk7IGNsZWFyKCk7IH0KKyAgICBlbHNlIGlmIChpbml0aWFs
aXplZCgpID09IGZhbHNlICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICB7IGluaXRpYWxp
emUoc3RkOjptb3ZlKCpyaHMpKTsgcmhzLmNsZWFyKCk7IH0KKyAgICBlbHNlIGlmIChpbml0aWFs
aXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICB7IHVzaW5nIHN0
ZDo6c3dhcDsgc3dhcCgqKnRoaXMsICpyaHMpOyB9CisgIH0KKworICAvLyAyMC41LjQuNSwgT2Jz
ZXJ2ZXJzCisKKyAgZXhwbGljaXQgY29uc3RleHByIG9wZXJhdG9yIGJvb2woKSBjb25zdCBfX05P
RVhDRVBUIHsgcmV0dXJuIGluaXRpYWxpemVkKCk7IH0KKworICBjb25zdGV4cHIgVCBjb25zdCog
b3BlcmF0b3IgLT4oKSBjb25zdCB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9F
WFBSRVNTSU9OKGluaXRpYWxpemVkKCksIGRhdGFwdHIoKSk7CisgIH0KKworIyBpZiBPUFRJT05B
TF9IQVNfTU9WRV9BQ0NFU1NPUlMgPT0gMQorCisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBS
IFQqIG9wZXJhdG9yIC0+KCkgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNp
YWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNv
bnRleHQuCisgICAgLy8gQ09OU1RFWFBSX0FTU0VSVChpbml0aWFsaXplZCgpKTsKKyAgICByZXR1
cm4gZGF0YXB0cigpOworICB9CisKKyAgY29uc3RleHByIFQgY29uc3QmIG9wZXJhdG9yICooKSBj
b25zdCYgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihpbml0
aWFsaXplZCgpLCBjb250YWluZWRfdmFsKCkpOworICB9CisKKyAgT1BUSU9OQUxfTVVUQUJMRV9D
T05TVEVYUFIgVCYgb3BlcmF0b3IgKigpICYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9m
ZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNv
bnRleHByIGNvbnRleHQuCisgICAgLy8gQ09OU1RFWFBSX0FTU0VSVChpbml0aWFsaXplZCgpKTsK
KyAgICByZXR1cm4gY29udGFpbmVkX3ZhbCgpOworICB9CisKKyAgT1BUSU9OQUxfTVVUQUJMRV9D
T05TVEVYUFIgVCYmIG9wZXJhdG9yICooKSAmJiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
b2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUg
Y29udGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05TVEVYUFJfQVNTRVJUKGluaXRpYWxpemVkKCkp
OworICAgIHJldHVybiBjb25zdGV4cHJfbW92ZShjb250YWluZWRfdmFsKCkpOworICB9CisKKyAg
Y29uc3RleHByIFQgY29uc3QmIHZhbHVlKCkgY29uc3QmIHsKKyAgICAvLyBGSVhNRTogV2UgbmVl
ZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVy
IHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIHJldHVybiBpbml0aWFsaXplZCgpID8gY29u
dGFpbmVkX3ZhbCgpIDogKHRocm93IGJhZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBPcHRpb25hbCBh
Y2Nlc3MiKSwgY29udGFpbmVkX3ZhbCgpKTsKKyAgICByZXR1cm4gY29udGFpbmVkX3ZhbCgpOwor
ICB9CisKKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCYgdmFsdWUoKSAmIHsKKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNh
biBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIHJldHVybiBpbml0
aWFsaXplZCgpID8gY29udGFpbmVkX3ZhbCgpIDogKHRocm93IGJhZF9vcHRpb25hbF9hY2Nlc3Mo
ImJhZCBPcHRpb25hbCBhY2Nlc3MiKSwgY29udGFpbmVkX3ZhbCgpKTsKKyAgICByZXR1cm4gY29u
dGFpbmVkX3ZhbCgpOworICB9CisKKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCYmIHZh
bHVlKCkgJiYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0
IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisg
ICAgLy8gaWYgKCFpbml0aWFsaXplZCgpKSBfX1RIUk9XX0VYQ0VQVElPTihiYWRfb3B0aW9uYWxf
YWNjZXNzKCJiYWQgT3B0aW9uYWwgYWNjZXNzIikpOworICAgIHJldHVybiBzdGQ6Om1vdmUoY29u
dGFpbmVkX3ZhbCgpKTsKKyAgfQorCisjIGVsc2UKKworICBUKiBvcGVyYXRvciAtPigpIHsKKyAg
ICBhc3NlcnQgKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBkYXRhcHRyKCk7CisgIH0KKwor
ICBjb25zdGV4cHIgVCBjb25zdCYgb3BlcmF0b3IgKigpIGNvbnN0IHsKKyAgICByZXR1cm4gVFIy
X09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oaW5pdGlhbGl6ZWQoKSwgY29udGFpbmVkX3Zh
bCgpKTsKKyAgfQorCisgIFQmIG9wZXJhdG9yICooKSB7CisgICAgYXNzZXJ0IChpbml0aWFsaXpl
ZCgpKTsKKyAgICByZXR1cm4gY29udGFpbmVkX3ZhbCgpOworICB9CisKKyAgY29uc3RleHByIFQg
Y29uc3QmIHZhbHVlKCkgY29uc3QgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNw
ZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHBy
IGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkg
OiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIE9wdGlvbmFsIGFjY2VzcyIpLCBjb250
YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBUJiB2
YWx1ZSgpIHsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBm
dW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAg
IC8vIHJldHVybiBpbml0aWFsaXplZCgpID8gY29udGFpbmVkX3ZhbCgpIDogKHRocm93IGJhZF9v
cHRpb25hbF9hY2Nlc3MoImJhZCBPcHRpb25hbCBhY2Nlc3MiKSwgY29udGFpbmVkX3ZhbCgpKTsK
KyAgICByZXR1cm4gY29udGFpbmVkX3ZhbCgpOworICB9CisKKyMgZW5kaWYKKworIyBpZiBPUFRJ
T05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyA9PSAxCisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+Cisg
IGNvbnN0ZXhwciBUIHZhbHVlX29yKFYmJiB2KSBjb25zdCYKKyAgeworICAgIHJldHVybiAqdGhp
cyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8VD4oY29uc3RleHByX2ZvcndhcmQ8Vj4odikp
OworICB9CisKKyMgICBpZiBPUFRJT05BTF9IQVNfTU9WRV9BQ0NFU1NPUlMgPT0gMQorCisgIHRl
bXBsYXRlIDxjbGFzcyBWPgorICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUIHZhbHVlX29y
KFYmJiB2KSAmJgorICB7CisgICAgcmV0dXJuICp0aGlzID8gY29uc3RleHByX21vdmUoY29uc3Rf
Y2FzdDxPcHRpb25hbDxUPiY+KCp0aGlzKS5jb250YWluZWRfdmFsKCkpIDogZGV0YWlsXzo6Y29u
dmVydDxUPihjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyAgIGVsc2UKKworICB0
ZW1wbGF0ZSA8Y2xhc3MgVj4KKyAgVCB2YWx1ZV9vcihWJiYgdikgJiYKKyAgeworICAgIHJldHVy
biAqdGhpcyA/IGNvbnN0ZXhwcl9tb3ZlKGNvbnN0X2Nhc3Q8T3B0aW9uYWw8VD4mPigqdGhpcyku
Y29udGFpbmVkX3ZhbCgpKSA6IGRldGFpbF86OmNvbnZlcnQ8VD4oY29uc3RleHByX2ZvcndhcmQ8
Vj4odikpOworICB9CisKKyMgICBlbmRpZgorCisjIGVsc2UKKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
Vj4KKyAgY29uc3RleHByIFQgdmFsdWVfb3IoViYmIHYpIGNvbnN0CisgIHsKKyAgICByZXR1cm4g
KnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGNvbnN0ZXhwcl9mb3J3YXJkPFY+
KHYpKTsKKyAgfQorCisjIGVuZGlmCiAKLSAgICBib29sIG1faXNFbmdhZ2VkOwotICAgIHR5cGVu
YW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46
OnZhbHVlPjo6dHlwZSBtX3ZhbHVlOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4mIGxocywgY29uc3QgT3B0aW9u
YWw8VD4mIHJocykKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitjbGFzcyBPcHRpb25hbDxUJj4KIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obGhzKSA9PSBzdGF0aWNfY2FzdDxib29sPihy
aHMpICYmICghc3RhdGljX2Nhc3Q8Ym9vbD4obGhzKSB8fCBsaHMudmFsdWUoKSA9PSByaHMudmFs
dWUoKSk7CisgIHN0YXRpY19hc3NlcnQoICFzdGQ6OmlzX3NhbWU8VCwgbnVsbG9wdF90Pjo6dmFs
dWUsICJiYWQgVCIgKTsKKyAgc3RhdGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTxULCBJblBsYWNl
VGFnPjo6dmFsdWUsICJiYWQgVCIgKTsKKyAgVCogcmVmOworCitwdWJsaWM6CisKKyAgLy8gMjAu
NS41LjEsIGNvbnN0cnVjdGlvbi9kZXN0cnVjdGlvbgorICBjb25zdGV4cHIgT3B0aW9uYWwoKSBf
X05PRVhDRVBUIDogcmVmKG51bGxwdHIpIHt9CisKKyAgY29uc3RleHByIE9wdGlvbmFsKG51bGxv
cHRfdCkgX19OT0VYQ0VQVCA6IHJlZihudWxscHRyKSB7fQorCisgIGNvbnN0ZXhwciBPcHRpb25h
bChUJiB2KSBfX05PRVhDRVBUIDogcmVmKGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YodikpIHt9
CisKKyAgT3B0aW9uYWwoVCYmKSA9IGRlbGV0ZTsKKworICBjb25zdGV4cHIgT3B0aW9uYWwoY29u
c3QgT3B0aW9uYWwmIHJocykgX19OT0VYQ0VQVCA6IHJlZihyaHMucmVmKSB7fQorCisgIGV4cGxp
Y2l0IGNvbnN0ZXhwciBPcHRpb25hbChJblBsYWNlVGFnLCBUJiB2KSBfX05PRVhDRVBUIDogcmVm
KGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YodikpIHt9CisKKyAgZXhwbGljaXQgT3B0aW9uYWwo
SW5QbGFjZVRhZywgVCYmKSA9IGRlbGV0ZTsKKworICB+T3B0aW9uYWwoKSA9IGRlZmF1bHQ7CisK
KyAgLy8gMjAuNS41LjIsIG11dGF0aW9uCisgIE9wdGlvbmFsJiBvcGVyYXRvcj0obnVsbG9wdF90
KSBfX05PRVhDRVBUIHsKKyAgICByZWYgPSBudWxscHRyOworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgIC8vIE9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3QgT3B0aW9uYWwmIHJocykgX19OT0VY
Q0VQVCB7CisgICAgLy8gcmVmID0gcmhzLnJlZjsKKyAgICAvLyByZXR1cm4gKnRoaXM7CisgIC8v
IH0KKworICAvLyBPcHRpb25hbCYgb3BlcmF0b3I9KE9wdGlvbmFsJiYgcmhzKSBfX05PRVhDRVBU
IHsKKyAgICAvLyByZWYgPSByaHMucmVmOworICAgIC8vIHJldHVybiAqdGhpczsKKyAgLy8gfQor
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBhdXRvIG9wZXJhdG9yPShVJiYgcmhzKSBfX05P
RVhDRVBUCisgIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgIDwKKyAgICBzdGQ6OmlzX3Nh
bWU8dHlwZW5hbWUgc3RkOjpkZWNheTxVPjo6dHlwZSwgT3B0aW9uYWw8VCY+Pjo6dmFsdWUsCisg
ICAgT3B0aW9uYWwmCisgID46OnR5cGUKKyAgeworICAgIHJlZiA9IHJocy5yZWY7CisgICAgcmV0
dXJuICp0aGlzOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGF1dG8gb3BlcmF0
b3I9KFUmJiByaHMpIF9fTk9FWENFUFQKKyAgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAg
PAorICAgICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxVPjo6dHlwZSwgT3B0aW9u
YWw8VCY+Pjo6dmFsdWUsCisgICAgT3B0aW9uYWwmCisgID46OnR5cGUKKyAgPSBkZWxldGU7CisK
KyAgdm9pZCBlbXBsYWNlKFQmIHYpIF9fTk9FWENFUFQgeworICAgIHJlZiA9IGRldGFpbF86OnN0
YXRpY19hZGRyZXNzb2Yodik7CisgIH0KKworICB2b2lkIGVtcGxhY2UoVCYmKSA9IGRlbGV0ZTsK
KworCisgIHZvaWQgc3dhcChPcHRpb25hbDxUJj4mIHJocykgX19OT0VYQ0VQVAorICB7CisgICAg
c3RkOjpzd2FwKHJlZiwgcmhzLnJlZik7CisgIH0KKworICAvLyAyMC41LjUuMywgb2JzZXJ2ZXJz
CisgIGNvbnN0ZXhwciBUKiBvcGVyYXRvci0+KCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BU
SU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihyZWYsIHJlZik7CisgIH0KKworICBjb25zdGV4cHIg
VCYgb3BlcmF0b3IqKCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURf
RVhQUkVTU0lPTihyZWYsICpyZWYpOworICB9CisKKyAgY29uc3RleHByIFQmIHZhbHVlKCkgY29u
c3QgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0
aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8g
cmV0dXJuIHJlZiA/ICpyZWYgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIE9wdGlv
bmFsIGFjY2VzcyIpLCAqcmVmKTsKKyAgICByZXR1cm4gKnJlZjsKKyAgfQorCisgIGV4cGxpY2l0
IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29uc3QgX19OT0VYQ0VQVCB7CisgICAgcmV0dXJu
IHJlZiAhPSBudWxscHRyOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+CisgIGNvbnN0ZXhw
ciB0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlIHZhbHVlX29yKFYmJiB2KSBjb25zdAorICB7
CisgICAgcmV0dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWlsXzo6Y29udmVydDx0eXBlbmFtZSBz
dGQ6OmRlY2F5PFQ+Ojp0eXBlPihjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KK307CisK
KwordGVtcGxhdGUgPGNsYXNzIFQ+CitjbGFzcyBPcHRpb25hbDxUJiY+Cit7CisgIHN0YXRpY19h
c3NlcnQoIHNpemVvZihUKSA9PSAwLCAiT3B0aW9uYWwgcnZhbHVlIHJlZmVyZW5jZXMgZGlzYWxs
b3dlZCIgKTsKK307CisKKworLy8gMjAuNS44LCBSZWxhdGlvbmFsIG9wZXJhdG9ycwordGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4m
IHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gYm9vbCh4KSAhPSBib29sKHkp
ID8gZmFsc2UgOiBib29sKHgpID09IGZhbHNlID8gdHJ1ZSA6ICp4ID09ICp5OworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxU
PiYgeCwgY29uc3QgT3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAhKHggPT0geSk7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgT3B0aW9u
YWw8VD4mIHgsIGNvbnN0IE9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gKCF5KSA/IGZhbHNl
IDogKCF4KSA/IHRydWUgOiAqeCA8ICp5OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25hbDxU
PiYgeSkKK3sKKyAgcmV0dXJuICh5IDwgeCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBPcHRpb25h
bDxUPiYgeSkKK3sKKyAgcmV0dXJuICEoeSA8IHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29uc3QgT3B0
aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAhKHggPCB5KTsKK30KKworCisvLyAyMC41LjksIENv
bXBhcmlzb24gd2l0aCBudWxsb3B0Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgeCwgbnVsbG9wdF90KSBfX05PRVhDRVBUCit7
CisgIHJldHVybiAoIXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShudWxsb3B0X3QsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KSBfX05PRVhDRVBUCit7
CisgIHJldHVybiAoIXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxUPiYgeCwgbnVsbG9wdF90KSBfX05PRVhDRVBUCit7
CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShudWxsb3B0X3QsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KSBfX05PRVhDRVBU
Cit7CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBfX05PRVhDRVBU
Cit7CisgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPChudWxsb3B0X3QsIGNvbnN0IE9wdGlvbmFsPFQ+JiB4KSBfX05PRVhDRVBU
Cit7CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBPcHRpb25hbDxUPiYgeCwgbnVsbG9wdF90KSBfX05PRVhD
RVBUCit7CisgIHJldHVybiAoIXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShudWxsb3B0X3QsIGNvbnN0IE9wdGlvbmFsPFQ+JikgX19OT0VYQ0VQ
VAoreworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPihjb25zdCBPcHRpb25hbDxUPiYgeCwgbnVsbG9wdF90KSBfX05PRVhDRVBU
Cit7CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+KG51bGxvcHRfdCwgY29uc3QgT3B0aW9uYWw8VD4mKSBfX05PRVhDRVBU
Cit7CisgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIF9fTk9FWENFUFQK
K3sKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj49KG51bGxvcHRfdCwgY29uc3QgT3B0aW9uYWw8VD4mIHgpIF9fTk9FWENFUFQK
K3sKKyAgcmV0dXJuICgheCk7Cit9CisKKworCisvLyAyMC41LjEwLCBDb21wYXJpc29uIHdpdGgg
VAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0
aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPT0gdiA6
IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkg
PyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1
cm4gYm9vbCh4KSA/ICp4ICE9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxUPiYgeCkK
K3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ICE9ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBPcHRpb25hbDxUPiYgeCwgY29u
c3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8IHYgOiB0cnVlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0
IE9wdGlvbmFsPFQ+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPiAqeCA6IHRydWU7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgT3B0
aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPiB2IDog
ZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8g
diA8ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4g
Ym9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgdiwgY29uc3QgT3B0aW9uYWw8VD4mIHgpCit7
CisgIHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPcHRpb25hbDxUPiYgeCwgY29u
c3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8PSB2IDogdHJ1ZTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgdiwgY29u
c3QgT3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA+PSAqeCA6IHRydWU7
Cit9CisKKworLy8gQ29tcGFyaXNvbiBvZiBPcHRpb25hbDxUJj4gd2l0aCBUCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUJj4mIHgs
IGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPT0gdiA6IGZhbHNlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB2
LCBjb25zdCBPcHRpb25hbDxUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA9PSAqeCA6
IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBPcHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgp
ID8gKnggIT0gdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQmPiYgeCkKK3sKKyAgcmV0
dXJuIGJvb2woeCkgPyB2ICE9ICp4IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4mIGxocywgY29uc3Qg
T3B0aW9uYWw8VD4mIHJocykKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcjwoY29uc3QgT3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiAh
KGxocyA9PSByaHMpOworICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6IHRydWU7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlv
bmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQmPiYgeCkKIHsKLSAgICBy
ZXR1cm4gIW9wdDsKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID4gKnggOiB0cnVlOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25h
bDxUPiYgb3B0LCBOdWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPihjb25zdCBPcHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KG9wdCk7CisgIHJldHVybiBib29sKHgpID8gKnggPiB2IDog
ZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KE51bGxvcHRUYWcsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPFQm
PiYgeCkKIHsKLSAgICByZXR1cm4gIW9wdDsKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKnggOiBm
YWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oTnVsbG9wdFRhZywgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IE9wdGlvbmFsPFQmPiYgeCwgY29uc3Qg
VCYgdikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0KTsKKyAgcmV0dXJuIGJv
b2woeCkgPyAqeCA+PSB2IDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIGNvbnN0IFQmIHZh
bHVlKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qg
VCYgdiwgY29uc3QgT3B0aW9uYWw8VCY+JiB4KQogewotICAgIHJldHVybiBvcHQgJiYgb3B0LnZh
bHVlKCkgPT0gdmFsdWU7CisgIHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZhbHNlOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBP
cHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikK
IHsKLSAgICByZXR1cm4gIShvcHQgPT0gdmFsdWUpOworICByZXR1cm4gYm9vbCh4KSA/ICp4IDw9
IHYgOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHYsIGNvbnN0IE9w
dGlvbmFsPFQmPiYgeCkKIHsKLSAgICByZXR1cm4gb3B0ICYmIG9wdC52YWx1ZSgpID09IHZhbHVl
OworICByZXR1cm4gYm9vbCh4KSA/IHYgPj0gKnggOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2YWx1ZSwgY29uc3Qg
T3B0aW9uYWw8VD4mIG9wdCkKKy8vIENvbXBhcmlzb24gb2YgT3B0aW9uYWw8VCBjb25zdCY+IHdp
dGggVAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
T3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiAhKHZhbHVl
ID09IG9wdCk7CisgIHJldHVybiBib29sKHgpID8gKnggPT0gdiA6IGZhbHNlOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4K
LW1ha2VPcHRpb25hbChUJiYgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgpCiB7
Ci0gICAgcmV0dXJuIE9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+KHN0ZDo6
Zm9yd2FyZDxUPih2YWx1ZSkpOworICByZXR1cm4gYm9vbCh4KSA/IHYgPT0gKnggOiBmYWxzZTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
T3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/
ICp4ICE9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxjb25zdCBUJj4mIHgpCit7Cisg
IHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBj
b25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6IHRydWU7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgdiwgY29u
c3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPiAqeCA6
IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4o
Y29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9v
bCh4KSA/ICp4ID4gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFQmIHYsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFQmPiYgeCkK
K3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+
JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qg
VCYgdiwgY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/
IHYgPD0gKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPD0oY29uc3QgT3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQorewor
ICByZXR1cm4gYm9vbCh4KSA/ICp4IDw9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB2LCBjb25zdCBPcHRpb25hbDxj
b25zdCBUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA+PSAqeCA6IHRydWU7Cit9CisK
KworLy8gMjAuNS4xMiwgU3BlY2lhbGl6ZWQgYWxnb3JpdGhtcwordGVtcGxhdGUgPGNsYXNzIFQ+
Cit2b2lkIHN3YXAoT3B0aW9uYWw8VD4mIHgsIE9wdGlvbmFsPFQ+JiB5KSBfX05PRVhDRVBUXyhf
X05PRVhDRVBUXyh4LnN3YXAoeSkpKQoreworICB4LnN3YXAoeSk7Cit9CisKKwordGVtcGxhdGUg
PGNsYXNzIFQ+Citjb25zdGV4cHIgT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlw
ZT4gbWFrZU9wdGlvbmFsKFQmJiB2KQoreworICByZXR1cm4gT3B0aW9uYWw8dHlwZW5hbWUgc3Rk
OjpkZWNheTxUPjo6dHlwZT4oY29uc3RleHByX2ZvcndhcmQ8VD4odikpOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgWD4KK2NvbnN0ZXhwciBPcHRpb25hbDxYJj4gbWFrZU9wdGlvbmFsKHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8WD4gdikKK3sKKyAgcmV0dXJuIE9wdGlvbmFsPFgmPih2LmdldCgpKTsK
K30KKworLy8gLS0gV2ViS2l0IEFkZGl0aW9ucyAtLQordGVtcGxhdGUgPGNsYXNzIE9wdGlvbmFs
VHlwZSwgY2xhc3MgQ2FsbGJhY2s+CitBTFdBWVNfSU5MSU5FCithdXRvIHZhbHVlT3JDb21wdXRl
KE9wdGlvbmFsVHlwZSBPcHRpb25hbCwgQ2FsbGJhY2sgY2FsbGJhY2spIC0+IHR5cGVuYW1lIE9w
dGlvbmFsVHlwZTo6dmFsdWVfdHlwZQoreworICAgIGlmIChPcHRpb25hbCkKKyAgICAgICAgcmV0
dXJuICpPcHRpb25hbDsKKyAgICByZXR1cm4gY2FsbGJhY2soKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKK25hbWVzcGFjZSBzdGQKK3sKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0
cnVjdCBoYXNoPFdURjo6T3B0aW9uYWw8VD4+CisgIHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGhh
c2g8VD46OnJlc3VsdF90eXBlIHJlc3VsdF90eXBlOworICAgIHR5cGVkZWYgV1RGOjpPcHRpb25h
bDxUPiBhcmd1bWVudF90eXBlOworCisgICAgY29uc3RleHByIHJlc3VsdF90eXBlIG9wZXJhdG9y
KCkoYXJndW1lbnRfdHlwZSBjb25zdCYgYXJnKSBjb25zdCB7CisgICAgICByZXR1cm4gYXJnID8g
c3RkOjpoYXNoPFQ+e30oKmFyZykgOiByZXN1bHRfdHlwZXt9OworICAgIH0KKyAgfTsKKworICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RydWN0IGhhc2g8V1RGOjpPcHRpb25hbDxUJj4+Cisg
IHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGhhc2g8VD46OnJlc3VsdF90eXBlIHJlc3VsdF90eXBl
OworICAgIHR5cGVkZWYgV1RGOjpPcHRpb25hbDxUJj4gYXJndW1lbnRfdHlwZTsKKworICAgIGNv
bnN0ZXhwciByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGFyZ3VtZW50X3R5cGUgY29uc3QmIGFyZykg
Y29uc3QgeworICAgICAgcmV0dXJuIGFyZyA/IHN0ZDo6aGFzaDxUPnt9KCphcmcpIDogcmVzdWx0
X3R5cGV7fTsKKyAgICB9CisgIH07Cit9CisKKyMgdW5kZWYgVFIyX09QVElPTkFMX1JFUVVJUkVT
CisjIHVuZGVmIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OCisKIHVzaW5nIFdURjo6
SW5QbGFjZTsKIHVzaW5nIFdURjo6TnVsbG9wdDsKIHVzaW5nIFdURjo6T3B0aW9uYWw7CiB1c2lu
ZyBXVEY6Om1ha2VPcHRpb25hbDsKLQotI2VuZGlmIC8vIE9wdGlvbmFsX2gKK3VzaW5nIFdURjo6
dmFsdWVPckNvbXB1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuY3BwCmluZGV4IDhiZjgyOWRmMGU0OTllZmVkY2E3MThkNzE3NDQ1ZGYwZGVhNjJi
MTcuLjIxOGRlMTZhNjZjMDlhMTVhNDNlYjM0MmM3MzY4MWNjZjg0Yjc3OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0xOTEsNyAr
MTkxLDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwg
RmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9ibG9iTG9hZGVyID0geyAqdGhpcyB9OworICAgIG1fYmxvYkxvYWRlci5lbXBsYWNlKCp0
aGlzKTsKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hM
b2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9h
ZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRleCBhMTM4Njk3ODIxNDAw
NzIyZDdlY2EyYzcyNmQ1ODAxYTgzNDFmOTg4Li5lMzgwNWU4ZTEyNzlhYjUxMmFhYjIzODBiNGUw
ZDkxMjhkOGNkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5oCkBAIC04NCw2ICs4NCw4IEBAIGNsYXNzIEZldGNoQm9keU93bmVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAgICAg
c3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBGZXRjaExvYWRlckNsaWVudCB7CiAgICAgICAgIEJs
b2JMb2FkZXIoRmV0Y2hCb2R5T3duZXImKTsKIAorICAgICAgICB2b2lkIHN3YXAoQmxvYkxvYWRl
ciYpOworCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFs
IHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCAwMmUzMTM1MGYyNmUwYzliMTg1MjRj
ZDQyNDlkYmI4NjcyNDI3Njk3Li44NmUyNGFkOTQ0ZDU4MzFkNGYyNzI4NWRlMTQwYjM3M2Y4MDU1
MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdAogICAgIC8vIFNl
dHRpbmcgcGVuZGluZyBhY3Rpdml0eSB1bnRpbCBCb2R5TG9hZGVyIGRpZEZhaWwgb3IgZGlkU3Vj
Y2VlZCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgcmVzcG9uc2UtPnNldFBlbmRpbmdBY3Rpdml0
eShyZXNwb25zZS5wdHIoKSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gQm9keUxv
YWRlcihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgcmVzcG9uc2UtPm1f
Ym9keUxvYWRlci5lbXBsYWNlKHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAg
ICBpZiAoIXJlc3BvbnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQog
ICAgICAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gTnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVy
LmgKaW5kZXggOWNmZjdhMmNlZGQ3YTZkNzg5ODQ5YWNlMmIxOGI3ZDQ2ZGUzMTkwNi4uZGQ5ZjE0
ZmZhMTQ5MzYxMWQwMTY2MWJjYTdhN2Y4ODkyOTdhYmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAg
LTU5LDcgKzU5LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VJZGVudGlmaWVyIHsKICAgICAgICAgdW5z
aWduZWQgbWFpbkZyYW1lUHJvdG9jb2xIYXNoID0gU3RyaW5nSGFzaDo6aGFzaChtX21haW5GcmFt
ZU9yaWdpbi5wcm90b2NvbCk7CiAgICAgICAgIHVuc2lnbmVkIG1haW5GcmFtZUhvc3RIYXNoID0g
U3RyaW5nSGFzaDo6aGFzaChtX21haW5GcmFtZU9yaWdpbi5ob3N0KTsKICAgICAgICAgCi0gICAg
ICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s3XSA9IHsgbmFtZUhhc2gsIG9wZW5pbmdQcm90b2NvbEhh
c2gsIG9wZW5pbmdIb3N0SGFzaCwgbV9vcGVuaW5nT3JpZ2luLnBvcnQudmFsdWVPcigwKSwgbWFp
bkZyYW1lUHJvdG9jb2xIYXNoLCBtYWluRnJhbWVIb3N0SGFzaCwgbV9tYWluRnJhbWVPcmlnaW4u
cG9ydC52YWx1ZU9yKDApIH07CisgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s3XSA9IHsgbmFt
ZUhhc2gsIG9wZW5pbmdQcm90b2NvbEhhc2gsIG9wZW5pbmdIb3N0SGFzaCwgbV9vcGVuaW5nT3Jp
Z2luLnBvcnQudmFsdWVfb3IoMCksIG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1lSG9z
dEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQudmFsdWVfb3IoMCkgfTsKICAgICAgICAgcmV0
dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVz
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5jcHAKaW5kZXggMWM0NDBiOGE2NmNhNmRjMDUwZDEyY2MxMTk2NWE2ODEwNjI2OGU5OS4u
ZjYyYWRiYmZjZDM1Mzc0NDgzNDQyZWRhYzNkODIxMWUwYjU3NGRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTgzLDcgKzgzLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnQKICAgICBpZiAodmVyc2lvbiAmJiAhdmVyc2lvbi52
YWx1ZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVy
YWwoIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCB3aXRoIGEgdmVyc2lvbiBvZiAwIikgfTsKIAot
ICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZU9yKDAp
KTsKKyAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVf
b3IoMCkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rv
cnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggZjdi
YzdkMzljZGNlYTRlNjRjNDVkYjg0M2JhNWQzOTAxYTUzNTJjMy4uY2MxMjk3YTc1ZjQyYjAzY2Ux
MDNhNzI3ZDZlNzRiMGY5ZTg2OTM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25l
cywgT3B0aW9uYWw8aW50PiBkCiAgICAgaWYgKGludGVyVG9uZUdhcCAmJiBpbnRlclRvbmVHYXAu
dmFsdWUoKSA8IG1pbkludGVyVG9uZUdhcE1zKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U1lOVEFYX0VSUiB9OwogCi0gICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZhbHVlT3IoZGVmYXVs
dFRvbmVEdXJhdGlvbk1zKTsKLSAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1
ZU9yKGRlZmF1bHRJbnRlclRvbmVHYXBNcyk7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZh
bHVlX29yKGRlZmF1bHRUb25lRHVyYXRpb25Ncyk7CisgICAgbV9pbnRlclRvbmVHYXAgPSBpbnRl
clRvbmVHYXAudmFsdWVfb3IoZGVmYXVsdEludGVyVG9uZUdhcE1zKTsKIAogICAgIGlmICghbV9o
YW5kbGVyLT5pbnNlcnREVE1GKHRvbmVzLCBtX2R1cmF0aW9uLCBtX2ludGVyVG9uZUdhcCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDI0MTI3MWY2NjhiNWRmZDhjZjhmMDBlYWM3
NTViYzgzZTJiNzdlNWEuLmM3Y2I5ZmJhOTViNmY1N2FjNTg0ZGI2ODNkODQ1MTUwZmVlMmM1MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC0yMDIsMTEg
KzIwMiwyMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWU+CiBjbGFzcyBET01Qcm9taXNlIHsK
IHB1YmxpYzoKICAgICBET01Qcm9taXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgZ2VuZXJpY1By
b21pc2UpIDogbV9wcm9taXNlRGVmZXJyZWQoV1RGTW92ZShnZW5lcmljUHJvbWlzZSkpIHsgfQot
CiAgICAgRE9NUHJvbWlzZShET01Qcm9taXNlJiYgcHJvbWlzZSkgOiBtX3Byb21pc2VEZWZlcnJl
ZChXVEZNb3ZlKHByb21pc2UubV9wcm9taXNlRGVmZXJyZWQpKSB7IH0KKyAgICBET01Qcm9taXNl
KGNvbnN0IERPTVByb21pc2UmIG90aGVyKSA6IG1fcHJvbWlzZURlZmVycmVkKG90aGVyLm1fcHJv
bWlzZURlZmVycmVkLmNvcHlSZWYoKSkgeyB9CisKKyAgICBET01Qcm9taXNlJiBvcGVyYXRvcj0o
Y29uc3QgRE9NUHJvbWlzZSYgb3RoZXIpCisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJl
ZCA9IG90aGVyLmNvcHlSZWYoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAotICAg
IERPTVByb21pc2UoY29uc3QgRE9NUHJvbWlzZSYpID0gZGVmYXVsdDsKLSAgICBET01Qcm9taXNl
JiBvcGVyYXRvcj0oRE9NUHJvbWlzZSBjb25zdCYpID0gZGVmYXVsdDsKKyAgICBET01Qcm9taXNl
JiBvcGVyYXRvcj0oRE9NUHJvbWlzZSYmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9wcm9taXNl
RGVmZXJyZWQgPSBXVEZNb3ZlKG90aGVyLm1fcHJvbWlzZURlZmVycmVkKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KIAogICAgIHZvaWQgcmVzb2x2ZSh0eXBlbmFtZSBQcm9taXNlUmVz
dWx0SW5zcGVjdG9yPFZhbHVlPjo6VHlwZSB2YWx1ZSkgeyBtX3Byb21pc2VEZWZlcnJlZC0+cmVz
b2x2ZSh2YWx1ZSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCBlZDE4NmQ3MjI3ZWNlMDdiNzMy
ZTIxNTdlMGMxMTY3MzhmMmY3NmJmLi4yYTY2ZDE5NDdhZGVjNmVhMWQ2ZjdkMGRjODhmZjI3YWFj
MzRiZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBD
cnlwdG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVPcigwKSwg
aG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAg
IGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMubGVu
Z3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0OTJjNzU0N2U4ODI5MmFkNGQ5MWE4MGQ2MmM5MGVl
OWI5M2ExYmQzLi5mN2Q1OWY3ZmFhZTc0MWFmYmU5NGIzNWRhYjY4ODlhM2RmZmQ0NDRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTgzNiw3ICs4MzYsNyBA
QCBFeGNlcHRpb25PcjxmbG9hdD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldEZsb2F0VmFsdWUodW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbgogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRv
dWJsZVZhbHVlKFVuaXRUeXBlcyB1bml0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZG91Ymxl
VmFsdWVJbnRlcm5hbCh1bml0VHlwZSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gZG91YmxlVmFs
dWVJbnRlcm5hbCh1bml0VHlwZSkudmFsdWVfb3IoMCk7CiB9CiAKIGRvdWJsZSBDU1NQcmltaXRp
dmVWYWx1ZTo6ZG91YmxlVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IGFmYTM2NjY0YjI0NjQxYTc2M2U0OGYyZDI4N2NjMWY1YWQxOGM1Y2UuLmI2YmEy
MjFkMjZkYmY3NzFkNDUyNTMxOGUzZDIwMzJkM2ZhN2UzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IENTU1N0
eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBz
dAogICAgIGlmICghc3R5bGUuaXNFbXB0eSgpKQogICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwog
ICAgIHRleHQuYXBwZW5kKCd9Jyk7Ci0gICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0
UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRv
IGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFs
dWVfb3IobGVuZ3RoKCkpKTsKICAgICBpZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGluc2VydFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDNjN2M4ZDE1YjRkMTNkNTE4Y2IzOGRmYjlj
ZWI0MTUyY2U2NmU3NmEuLjM1ZDJjZjY1MTJiNmFiY2Q1N2NhYTdkZTcwMGU3ZDg5NjdlZjg0NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIEVsZW1lbnQ6
OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2VudGVySWZOb3RWaXNpYmxlKQogCiB2
b2lkIEVsZW1lbnQ6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlT3IoMCksIG9wdGlvbnMudG9w
LnZhbHVlT3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVfb3Io
MCksIG9wdGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUg
bm9ybWFsaXplTm9uRmluaXRlVmFsdWUoZG91YmxlIGYpCkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBV
UkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKIAogaW50IEVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRN
TEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJl
dHVybiBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVf
b3IoMCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgaW50IHZhbHVlKQpAQCAtMzAzOCw3ICszMDM4LDcg
QEAgdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUKIAogdW5zaWduZWQgRWxlbWVudDo6Z2V0VW5zaWdu
ZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBj
b25zdAogewotICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIHVuc2lnbmVkIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IGYxNzAwMWZiMjY5YmJjMTliYzg2Mjc0ZTU3
ZjJkNTVhZjFjNmRmNGQuLjMyNTU3OWRjYzQzMGY3ZmFmZDcwMTk4YzJkZThjN2U3MTBjNmRiNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTgwLDkgKzgwLDkg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2Rl
LCBjb25zdCBJbml0JiBpbml0KQogICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAgICBp
ZiAoaW5pdC5zdWJ0cmVlKQogICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYgKGlu
aXQuYXR0cmlidXRlT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuYXR0cmli
dXRlT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0
ZU9sZFZhbHVlOwotICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZU9yKGZh
bHNlKSkKKyAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVfb3IoZmFsc2Up
KQogICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiBhdHRyaWJ1dGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5jcHAKaW5kZXggZWM3Y2M0MTA0MTIzNWFmNWZjYjk5NjE4NDc3NjlkM2U1N2Y4YTExNC4u
YTQyN2QwYjMwNGZmNjQ2Y2UyYjE5ZTBhNGEzZDFhOGQ0NmJiYjA2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+
IERPTVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIE9wdGlvbmFs
PGJvb2w+CiAgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5zKCk7CiAKICAgICBpZiAodG9r
ZW5zLmNvbnRhaW5zKHRva2VuKSkgewotICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3IoZmFsc2Up
KSB7CisgICAgICAgIGlmICghZm9yY2UudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICB0
b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4pOwogICAgICAgICAgICAgdXBkYXRlQXNzb2NpYXRlZEF0
dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGY0MDNmMjMwNTFiMDIwNmEyM2Uz
Yjg2NTdjNzUzZTA3MGI3MmE5N2UuLmI1ZDFiYzMzZWMxYWViMzc2NWI1M2UxNzc0ZDU2YzU4ZWMz
NTRhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTc2
NSw3ICsxNzY1LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUoKSBjb25z
dAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgdW5zaWduZWQgb2xkRWZmZWN0aXZlTWF4
TGVuZ3RoID0gZWZmZWN0aXZlTWF4TGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgo
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAg
aW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVl
KS52YWx1ZV9vcigtMSkpOwogICAgIGlmIChvbGRFZmZlY3RpdmVNYXhMZW5ndGggIT0gZWZmZWN0
aXZlTWF4TGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApAQCAtMTc3
Nyw3ICsxNzc3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKIHsKICAgICBpbnQgb2xkTWluTGVuZ3RoID0gbWluTGVuZ3RoKCk7Ci0gICAgaW50ZXJuYWxT
ZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9y
KC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlmIChvbGRNaW5MZW5ndGggIT0gbWlu
TGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVlSWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggMWZkYmM1MTg0YWI2NzZjNTM1
ZDUyZTQyZDBlYzMwOTY0MDUyZTQ2NC4uYmNlYjU5YTZmODU5ZTVlMGE2NGI2MzliZjVhMTMyMjlj
NTJlOWFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CkBAIC0yMDUsMTMgKzIwNSwxMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwogCiB2b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNl
dE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29y
KC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVt
ZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpCiB7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIHVw
ZGF0ZVZhbGlkaXR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDI1ZDliMmJlNmY5ZjM1M2Yw
OTM5ZmVlYzhmMmEyYjlhMzBiOWRmNTEuLjdhN2U3MTg1ZWJhNjI3Y2JhYzY4MWNiMWZmOTY3Yjk0
YmE5YjRkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTExNSw3ICsxMTE1LDcgQEAgYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiBw
YXRoLCBmbG9hdCB4LAogICAgIGlmICghc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQg
PSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CisgICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBv
aW50ID0gc3RhdGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKIAogICAgIGlmICghc3RkOjppc2Zpbml0
ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2lu
dC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBib29s
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3Qg
UGF0aCYgcGF0aCwgZmxvYXQgeAogICAgIGlmICghc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNm
b3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVk
UG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CisgICAgRmxvYXRQb2ludCB0cmFuc2Zv
cm1lZFBvaW50ID0gc3RhdGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKICAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUodHJhbnNmb3JtZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVk
UG9pbnQueSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggM2U3OTg5ZDdjYWNmMWJkYjE3MzY3
YzhkYTg3ZGJlYzNiMTBmN2FhZi4uMGJjOGIwNzljNDhjZmE3ZDZkMmUwYjEwMTllNTY4Mjc3NTll
ZGNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
aApAQCAtMTU0LDcgKzE1NCw3IEBAIGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25O
ZWdhdGl2ZSh1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlCiBpbmxpbmUgdW5z
aWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUoU3RyaW5nVmlldyBzdHJpbmdWYWx1ZSwg
dW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMCkKIHsKICAgICBBU1NFUlQoZGVmYXVsdFZhbHVlIDw9
IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwotICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0cmluZ1ZhbHVlKS52YWx1ZU9yKGRlZmF1bHRWYWx1ZSk7
CisgICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5n
VmFsdWUpLnZhbHVlX29yKGRlZmF1bHRWYWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlIDw9IG1heEhU
TUxOb25OZWdhdGl2ZUludGVnZXIpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMTFh
NDhkNzNjYTM3OGZiNTRhOGVlZGQ4OGU2Yzc2OGEyM2Y5MGUxMi4uYmFlMWZiMjk2YTgyY2E0MDdk
YzJkMmYxNWQxMjYwZWIzNDJlN2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVz
dChSZXNvdXJjZVJlcXVlcwogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9z
c09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCiB7CiAgICAgaWYgKG1fYXN5bmMpIHsKLSAgICAgICAgbV9wcmVmbGlnaHRDaGVja2VyID0g
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKKyAg
ICAgICAgbV9wcmVmbGlnaHRDaGVja2VyLmVtcGxhY2UoKnRoaXMsIFdURk1vdmUocmVxdWVzdCkp
OwogICAgICAgICBtX3ByZWZsaWdodENoZWNrZXItPnN0YXJ0UHJlZmxpZ2h0KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBi
OWVmNmUwOWU3YjM4MDA3OWNlOGU3YzcxZmE2ZGZjZTFkMzAzNjBmLi5hOThhZGJmZDQyMmUzOTk2
Yjg4MWNkNGUzYjcwNjc0MjFmYTQzZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlv
bihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0KQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1
cmxTZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2
ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0Zv
cndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRT
ZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGlj
eSwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKIHsKLSAgICBOZXdGcmFt
ZU9wZW5lclBvbGljeSBuZXdGcmFtZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZU9y
KHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVy
UG9saWN5OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CisgICAgTmV3
RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFs
dWVfb3Ioc2hvdWxkU2VuZFJlZmVycmVyID09IE5ldmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKICAg
ICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHBhc3NlZFRhcmdldCwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0
aW9uVG9JbnZhbGlkVVJMOjpZZXMsIG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBEb05vdFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgZG93
bmxvYWRBdHRyaWJ1dGUpLCB0cmlnZ2VyaW5nRXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKaW5kZXggM2EyZjc1OTAzNzU5NjdmZGJlZDcxZDBlNDIzYjJkNzI3ODMyZDJhYy4u
OTEwYTUwYjc3YWYwM2RlMjczYzMxOTBjZTY3ODM3Y2JlNzdjOTgyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgZG91YmxlIERPTVdpbmRvdzo6ZGV2
aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiAKIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShjb25zdCBT
Y3JvbGxUb09wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNjcm9sbEJ5KG9w
dGlvbnMubGVmdC52YWx1ZU9yKDApLCBvcHRpb25zLnRvcC52YWx1ZU9yKDApKTsKKyAgICByZXR1
cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlX29yKDApLCBvcHRpb25zLnRvcC52YWx1ZV9v
cigwKSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShkb3VibGUgeCwgZG91YmxlIHkp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGUzNWEyMzdl
NGQ4MzNjNTJjNTAwZWY2NWQ4ZjUwY2YyNTA0ZmQyNDMuLjFjYzc4ZTZmNWNhNWFlNjZmNDVmYmNk
MzE1YWIzM2U5M2Y0OTJjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CkBAIC01NzIsNyArNTcyLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50
aWZpZXIoKSBjb25zdAogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rl
cik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZW5jb2RlRm9yRmlsZU5hbWUobV9ob3N0KSk7
CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWVPcigwKSk7CisgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmROdW1iZXIobV9wb3J0LnZhbHVlX29yKDApKTsKIAogICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKaW5kZXggYjVkODk5YmVhMWViODE1Y2IwMzBlYTBjMjA0OTE3MmVhNzkzNDZl
Mi4uMTk4N2JjYjA5NmVjNzhkYzZiZGNmYjk1YTMwZTdlOGMzZjFjNGE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtNDksNyArNDksNyBAQCBTZWN1
cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mCiAjaWYgIUxPR19ESVNBQkxFRAogU3RyaW5nIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZGVidWdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHBy
b3RvY29sLCAiOi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlT3IoMCkp
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3Ry
aW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigwKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IDUwZWIyOTU2ZjIzYjdjZjEyZWNiOTBj
Zjc2ZmQ4Yjk4MWVhM2I1NWEuLmI3YTVhZWZlZGExYjZkZWZkNzJhOWJlN2M2YmEyMDYyZTFiZDJk
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAtNDAsNyAr
NDAsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNoIHsKICAgICAgICAgdW5zaWduZWQgaGFz
aENvZGVzWzNdID0gewogICAgICAgICAgICAgb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKSA/IG9y
aWdpbi0+cHJvdG9jb2woKS5pbXBsKCktPmhhc2goKSA6IDAsCiAgICAgICAgICAgICBvcmlnaW4t
Pmhvc3QoKS5pbXBsKCkgPyBvcmlnaW4tPmhvc3QoKS5pbXBsKCktPmhhc2goKSA6IDAsCi0gICAg
ICAgICAgICBvcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApCisgICAgICAgICAgICBvcmlnaW4tPnBv
cnQoKS52YWx1ZV9vcigwKQogICAgICAgICB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVy
OjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggN2M3NmFlMTI4MjA4Zjg0M2NlNzI3
ZDRjNmUxYjRhNmUzNmI5NWY1My4uZTZkODY4YzBkYzA2OTZjZTk1ZTg1Mjg4MGEzNjdjNDg2MDFi
ZGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTE1OCw4ICsx
NTgsOCBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYg
ZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLmxvY2F0aW9uQmFy
VmlzaWJsZSA9IGZhbHNlOwogICAgIGZlYXR1cmVzLmRpYWxvZyA9IHRydWU7CiAKLSAgICBmbG9h
dCB3aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRoIiwgMTAwLCBz
Y3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlT3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJl
IGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQotICAgIGZsb2F0IGhlaWdo
dCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVu
QXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVPcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2Ft
ZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAgZmxvYXQgd2lkdGggPSBm
bG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxh
YmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9t
IGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRG
ZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVS
ZWN0LmhlaWdodCgpKS52YWx1ZV9vcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZy
YW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCiAKICAgICBmZWF0dXJlcy53aWR0aCA9IHdpZHRo
OwogICAgIGZlYXR1cmVzLmhlaWdodCA9IGhlaWdodDsKQEAgLTE2NywxNiArMTY3LDE2IEBAIFdp
bmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0
dXJlc1N0cmluZywgY29uc3QgRmxvCiAgICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0
dXJlc01hcCwgImRpYWxvZ2xlZnQiLCBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSwgc2NyZWVuQXZh
aWxhYmxlUmVjdC5tYXhYKCkgLSB3aWR0aCk7CiAgICAgZmVhdHVyZXMueSA9IGZsb2F0RmVhdHVy
ZShmZWF0dXJlc01hcCwgImRpYWxvZ3RvcCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3Jl
ZW5BdmFpbGFibGVSZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAKLSAgICBpZiAoYm9vbEZlYXR1cmUo
ZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZU9yKHRydWUpKSB7CisgICAgaWYgKGJvb2xGZWF0
dXJlKGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVfb3IodHJ1ZSkpIHsKICAgICAgICAgaWYg
KCFmZWF0dXJlcy54KQogICAgICAgICAgICAgZmVhdHVyZXMueCA9IHNjcmVlbkF2YWlsYWJsZVJl
Y3QueCgpICsgKHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDI7CiAgICAg
ICAgIGlmICghZmVhdHVyZXMueSkKICAgICAgICAgICAgIGZlYXR1cmVzLnkgPSBzY3JlZW5BdmFp
bGFibGVSZWN0LnkoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAv
IDI7CiAgICAgfQogCi0gICAgZmVhdHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZU9yKGZhbHNlKTsKLSAgICBmZWF0dXJlcy5zY3JvbGxi
YXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVPcih0
cnVlKTsKLSAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJzdGF0dXMiKS52YWx1ZU9yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5yZXNpemFibGUg
PSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIpLnZhbHVlX29yKGZhbHNlKTsK
KyAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFw
LCAic2Nyb2xsIikudmFsdWVfb3IodHJ1ZSk7CisgICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJs
ZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic3RhdHVzIikudmFsdWVfb3IoZmFsc2UpOwog
CiAgICAgcmV0dXJuIGZlYXR1cmVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGFlOTc1MThiMTY5ZTEwMWM3YmZlYzE4MzAy
ODgzMTAzMGE4MmU2YjguLjFhM2I2M2Y1NTM4MDQ0YmZjOTNlY2QxZDAzZTFiNmI0ZjhiZWUyYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKQEAgLTMwOSw3ICszMDksNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiAgICAgaWYgKGlz
TG9hZGluZ0N1c3RvbUZvbnRzKCkgJiYgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID09IERvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0
aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBjb2Rl
UGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNv
ZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGln
YXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAgLTMzMiw3ICszMzIsNyBA
QCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1bgogICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVl
T3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29y
KHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgo
cnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRs
ZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dl
YmtpdC5vcmcvYi8xMDAwNTAKQEAgLTQ5Miw3ICs0OTIsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpm
YXN0QXZlcmFnZUNoYXJXaWR0aElmQXZhaWxhYmxlKGZsb2F0JiB3aWR0aCkgY29uc3QKIAogdm9p
ZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1
bnNpZ25lZD4gdG8pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1
ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9v
cihydW4ubGVuZ3RoKCkpOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRo
KHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5k
bGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93
ZWJraXQub3JnL2IvMTAwMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwCmluZGV4IDg5OGQ2NWJkNTI0ZWU2MzU2ZjI5YTAzMDVjODhmZTEwMTBj
NmM3YmMuLmZmMDk1YjUyMTlmYWEzM2MxYjYyMjFkZmFkNWNlNTBjZWQwYzAwMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC00MDAs
NyArNDAwLDcgQEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVj
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICBpZiAobV9zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAgICBGbG9h
dFF1YWQgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRRdWFkKHNo
YWRvd2VkUmVjdCkpOwogICAgICAgICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNldCk7
Ci0gICAgICAgIGxheWVyUmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7Cisg
ICAgICAgIGxheWVyUmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGxheWVyUmVjdCA9IHNoYWRvd2VkUmVjdDsKICAgICAgICAgbGF5
ZXJSZWN0Lm1vdmUobV9vZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNTMyNGMy
MDhjYjE4ZGE4N2QxZTI4YTA0MDhlMTk4NmY5MTUxODJmYS4uYmMxZDAwZjQ1ZjM2YzIxNzU5NTIw
ODg3NmVlNjk5OWQ5ODA4NGFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzUyLDcg
KzIzNTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50
V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAs
IDAsIENHSW1hZ2VHZXRXaWR0aChtX2xhc3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQo
bV9sYXN0SW1hZ2UuZ2V0KCkpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0g
PSBbZmlyc3RFbmFibGVkVmlkZW9UcmFjayBwcmVmZXJyZWRUcmFuc2Zvcm1dOwotICAgIEZsb2F0
UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChvdXRwdXRSZWN0KTsKKyAgICBGbG9hdFJl
Y3QgdHJhbnNmb3JtZWRPdXRwdXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
X29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KG91dHB1dFJlY3QpOwogCiAgICAgY29udGV4
dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdl
KG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZE91dHB1dFJl
Y3QsIGltYWdlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGZhN2NiNzFmNDFhOGEyNThlZjBlNGQ2MDA5YzJj
ZDc2Y2IzZWMwZDguLmEwMWJkZTk1MjIwMGZiNTg5MmQwNjRiNzA5Y2EzYzBhY2VhMGEwYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpzZWVrVG9UaW1lKE1lZGlhVGltZSB0aW1lKQogCiBGbG9hdFNpemUgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKCkKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRTaXpl
LnZhbHVlT3IoRmxvYXRTaXplKCkpOworICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVfb3Io
RmxvYXRTaXplKCkpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRC
ZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggMjVhNWRiYjEyNjE4
MzQ3NTNkNTQ3Njg4OTA4NDA1YmZmNzAyMDk4Yy4uM2FmZmQ0MjFlMGUzZDczMTg3ZjJlMzQyN2Zi
NmQ0ZjEzZWI1ODViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbHRlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZpbHRlcj4gewogICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoZmxvYXQgc2Nh
bGUpIHsgbV9maWx0ZXJTY2FsZSA9IHNjYWxlOyB9CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9y
bTsgfQotICAgIEZsb2F0UG9pbnQgbWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludChjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOyB9CisgICAg
RmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOyB9CiAKICAgICBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0K
ICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSB7
IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKaW5kZXggODk1ZDM3ZjM5Y2YwNTcyZjVkNDk2ZTBlYjYwYWJiMWYyOTA2ZmE1Yy4uNDkx
MGNmMGFjN2UyZDg3NjAwMTk4Yjg0OTVlNThkNzNmOGExNTJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgog
ICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHJlcGxpY2FPcHRpb25zKG9wdGlvbnMp
OwogICAgICAgICByZXBsaWNhT3B0aW9ucy50cmFuc2Zvcm0KICAgICAgICAgICAgIC5tdWx0aXBs
eShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpCi0g
ICAgICAgICAgICAubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgICAgICAgICAgLm11bHRp
cGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxp
Y2FPcHRpb25zKTsKICAgICB9CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAKIFRyYW5zZm9ybWF0
aW9uTWF0cml4IFRleHR1cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCiB7Ci0gICAg
cmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJl
bnRUcmFuc2Zvcm0uY29tYmluZWQoKSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJp
bmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50
VHJhbnNmb3JtLmNvbWJpbmVkKCkpLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiB9CiAKIHZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykKQEAgLTczMSw3ICs3MzEsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXIq
IFRleHR1cmVNYXBwZXJMYXllcjo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3Qg
RmxvYQogRmxvYXRTaXplIFRleHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0
IEZsb2F0U2l6ZSYgb2Zmc2V0KQogewogICAgIGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgs
IG9mZnNldFk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50
VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpOwogICAgIHRyYW5zZm9ybS5tYXAoMCwgMCwgemVyb1gsIHplcm9ZKTsKICAgICB0cmFuc2Zv
cm0ubWFwKG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIG9mZnNldFgsIG9mZnNldFkp
OwogICAgIHJldHVybiBGbG9hdFNpemUob2Zmc2V0WCAtIHplcm9YLCBvZmZzZXRZIC0gemVyb1kp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAppbmRleCA3NDhhZDhlOWUzODBhM2VlNzJhNmEwMjE1ODI0ZWY4ZDQxN2VjMzEwLi40
NjJiNjJlZDQ3NzdiZjYzNTdkNTQ0MzRhODFlZTVmZmE4MzI5YWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTQ3
LDcgKzk0Nyw3IEBAIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1l
ZFZpc2libGVSZWN0KCkKICAgICAvLyBSZXR1cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxl
IHJlY3QgKHN1cmZhY2UgY29vcmRpbmF0ZXMpIG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVy
IGNvb3JkaW5hdGVzKS4KICAgICAvLyBUaGUgcmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdl
ZCBhbmQgdGhlIHZpc2libGUgcmVjdCBpcyB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwK
ICAgICAvLyBzbyBpdCBtaWdodCBzcHJlYWQgZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUg
YXJlYSAoYW5kIHRoZW4gZXZlbiBtb3JlIGFtcGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0
aXBsaWVyKS4KLSAgICBBU1NFUlQobV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJU
cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKSk7CisgICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpKTsKICAgICBGbG9hdFJlY3QgcmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFt
cGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFkKEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxl
Q29udGVudHNSZWN0KCkpKTsKICAgICBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0
ZShyZWN0LCBzaXplKCkpOwogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAt
MTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVU
cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVu
VHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29t
YmluZVRyYW5zZm9ybXMocGFyZW50KCkgPyBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI+KCpwYXJlbnQoKSkubV9sYXllclRyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKIAotICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9
IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKTsKKyAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGls
ZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBlNzYzY2MxMzkzZGJjZGU2
MTEzMjExOGZmYjQzMTkxYzY0OGU0NWU0Li5mMGUyZGEzMTkzYzRlODk5MTFmZjdmY2I2ZGI4ZWE4
NDY0ODc5MGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtMTcwLDcgKzE3MCw3
IEBAIEZsb2F0UG9pbnQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KGJvb2wqIHdhc0NsYW1w
ZWQpIGNvbnN0CiAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9u
KQogICAgICAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bWFwUG9pbnQocG9pbnQp
OwogCi0gICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7
CisgICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9vcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOwog
fQogCiBGbG9hdFF1YWQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xhbXBl
ZCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjptYXBRdWFk
KEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbAogICAg
IGlmIChkaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHF1YWQg
PSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYXBRdWFkKHF1YWQpOwogCi0gICAgcXVhZCA9IG1f
YWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSBtX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3Rh
dGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBi
b29sKiB3YXNDbGFtcGVkKQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6
OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29s
KiB3CiAgICAgICAgIH0KIAogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3Jt
ID0gdC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAg
IGlmIChtX21hcFBvaW50KQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNl
VHJhbnNmb3JtLnByb2plY3RQb2ludChtX2xhc3RQbGFuYXJQb2ludCk7CiAgICAgICAgIGlmICht
X21hcFF1YWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q2FjaGVWYWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcAppbmRleCAxZjFjMzgwNTU1MTExZjQ0YTFmMWU3ZTZlMDMyYTI3MzBk
ZDk0YmZkLi5iMzhlNzA3MjAyMzhlMGM4ZWU3ZWNiMGRlYjkwNmMyYTFiMjU2NTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3Bw
CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlQ3Vy
cmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3QKICAgICAvLyBObyBj
b21wZW5zYXRpb24gZm9yIGxhdGVuY3kgYXMgdGhhdCBpcyBub3QgdGVycmlibHkgaW1wb3J0YW50
IGluIHByYWN0aWNlLgogICAgIGF1dG8gZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOwogICAg
IGF1dG8gYXBwYXJlbnRBZ2UgPSBkYXRlVmFsdWUgPyBzdGQ6Om1heCgwdXMsIGR1cmF0aW9uX2Nh
c3Q8bWljcm9zZWNvbmRzPihyZXNwb25zZVRpbWUgLSAqZGF0ZVZhbHVlKSkgOiAwdXM7Ci0gICAg
YXV0byBhZ2VWYWx1ZSA9IHJlc3BvbnNlLmFnZSgpLnZhbHVlT3IoMHVzKTsKKyAgICBhdXRvIGFn
ZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVfb3IoMHVzKTsKICAgICBhdXRvIGNvcnJlY3Rl
ZEluaXRpYWxBZ2UgPSBzdGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpOwogICAgIGF1dG8g
cmVzaWRlbnRUaW1lID0gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KHN5c3RlbV9jbG9jazo6
bm93KCkgLSByZXNwb25zZVRpbWUpOwogICAgIHJldHVybiBjb3JyZWN0ZWRJbml0aWFsQWdlICsg
cmVzaWRlbnRUaW1lOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHMgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJl
CiAgICAgICAgIHJldHVybiAqbWF4QWdlOwogCiAgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0
ZSgpOwotICAgIGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRpbWUp
OworICAgIGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVfb3IocmVzcG9uc2VUaW1lKTsK
ICAgICBpZiAoYXV0byBleHBpcmVzID0gcmVzcG9uc2UuZXhwaXJlcygpKQogICAgICAgICByZXR1
cm4gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KCpleHBpcmVzIC0gZWZmZWN0aXZlRGF0ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyM2Fk
Y2QzNDMxNzIxZDA2NWJiMjIzZTI2NjhkOGEwNWY1MjAyNTU3Li5mN2FlYTg0MjZmMmExMzYwYTdl
M2NhNzhiOTAyZjk0ZTA4YzQwNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94Ojpw
b3NpdGlvbkZvck9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiAKIFN0cmluZ1ZpZXcgSW5s
aW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIoT3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRp
bmdMZW5ndGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0
KCkpLnN1YnN0cmluZyhzdGFydCgpLCBvdmVycmlkaW5nTGVuZ3RoLnZhbHVlT3IobGVuKCkpKTsK
KyAgICByZXR1cm4gU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0
KCksIG92ZXJyaWRpbmdMZW5ndGgudmFsdWVfb3IobGVuKCkpKTsKIH0KIAogU3RyaW5nIElubGlu
ZVRleHRCb3g6Omh5cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludEluZm8uaAppbmRleCA1MTFhNmJjYzU0ZmE4MTQ5NzRjMjBlNmNmODhk
MTMxYzJlYjg0NjRmLi40YWIzODkzNWU5NGI4ZjMwNjJlZTA5ZDNhMjIyN2QyYTg4OTQwZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC0xMDksNyArMTA5LDcgQEAgc3Ry
dWN0IFBhaW50SW5mbyB7CiAgICAgICAgIGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0Fu
Y2VzdG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBS
ZWN0KHJlY3QpKTsKKyAgICAgICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNl
c3RvclRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QocmVjdCkpOwogICAgICAgICByZWN0LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5mb3Jt
ZWRSZWN0LmxvY2F0aW9uKCkpKTsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUodHJh
bmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAppbmRleCAwNjZjZmI4ZmJiZGU1NzVkZjc0ZDhhM2U5YzI4NWRkMzNiY2FjNTU5Li40
ZDRkZTgxNzk2YTlhN2JiMDA5ZDlkOWUwNGQxY2NiMTA4ZmUyNzMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0
VW5pdCBsb2dpY2EKICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAgICAgIGlm
IChjaGVja01pbk1heEhlaWdodCkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBpbnRyaW5zaWNI
ZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2Fs
SGVpZ2h0KCk7Ci0gICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBpbnRy
aW5zaWNIZWlnaHQpLnZhbHVlT3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAgICAg
ICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJy
ZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZV9v
cihjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBj
b25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoaGVpZ2h0UmVzdWx0LCBpbnRyaW5zaWNIZWln
aHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhlIG9ubHkgdGltZXMgd2Ug
ZG9uJ3QgY2hlY2sgbWluL21heCBoZWlnaHQgYXJlIHdoZW4gYSBmaXhlZCBsZW5ndGggaGFzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCmluZGV4IDgyYWRiY2Q0MWYwOTg4YThiNDllZGYwOWVmOTIxZTA3YmY5Y2Qy
ZDQuLjU2M2U1MzZkNmExNjYwMmY0Y2U5NDUwMzk2NDBmNDEwZjJlOWM2MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogCiAgICAgICAg
ICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZsb3cgaGVpZ2h0LgogICAgICAgICAg
ICAgaWYgKHN0eWxlKCkuYm94QWxpZ24oKSA9PSBCQkFTRUxJTkUpIHsKLSAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3Io
Y2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29y
KGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAg
ICAgYXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IGRlc2NlbnQgPSAoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0
ZW50KCkpIC0gYXNjZW50OwogCkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVu
KQogICAgICAgICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgc3Rk
OjptYXg8TGF5b3V0VW5pdD4oMCwgKGNvbnRlbnRIZWlnaHQoKSAtIChjaGlsZC0+aGVpZ2h0KCkg
KyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkpIC8gMik7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQkJBU0VMSU5FOiB7Ci0gICAgICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOworICAgICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGlu
ZSgpLnZhbHVlX29yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGNoaWxkWSArPSBjaGlsZC0+bWFyZ2luVG9wKCkgKyAobWF4QXNjZW50IC0g
YXNjZW50KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA0OWNhMmFjZDI4NGFmMWNkMWYy
YTc5ZWMwMmI3NmEwMzg5NDMzZGUyLi40NGYyN2EzZDIyNDAxOGNmYTllNDljMWRkNDk2MWI5NDhh
ZjIzZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVG
cm9tQ29udGVudEJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbgogCiBpbnQg
UmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7Ci0g
ICAgaW50IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKHN5bnRoZXNpemVk
QmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7CisgICAgaW50IGJhc2Vs
aW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihzeW50aGVzaXplZEJhc2VsaW5lRnJv
bUNvbnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOwogCiAgICAgaW50IG1hcmdpbkFzY2VudCA9
IGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQo
KTsKICAgICByZXR1cm4gYmFzZWxpbmUgKyBtYXJnaW5Bc2NlbnQ7CkBAIC02ODUsNyArNjg1LDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTWFpbkF4aXNDb250ZW50
RXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JgogICAgICAgICBBU1NFUlQobWFpbkF4aXNFeHRlbnQg
LSBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChjaGlsZCkgPj0gMCk7CiAg
ICAgICAgIHJldHVybiBtYWluQXhpc0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4
dGVudEZvckNoaWxkKGNoaWxkKTsKICAgICB9Ci0gICAgcmV0dXJuIGNvbXB1dGVNYWluQXhpc0V4
dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBmbGV4QmFzaXMpLnZhbHVl
T3IoMCk7CisgICAgcmV0dXJuIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBN
YWluT3JQcmVmZXJyZWRTaXplLCBmbGV4QmFzaXMpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIFJl
bmRlckZsZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVuLCBW
ZWN0b3I8TGluZUNvbnRleHQ+JiBsaW5lQ29udGV4dHMpCkBAIC04MjUsNyArODI1LDcgQEAgYm9v
bCBSZW5kZXJGbGV4aWJsZUJveDo6dXBkYXRlQXV0b01hcmdpbnNJbkNyb3NzQXhpcyhSZW5kZXJC
b3gmIGNoaWxkLCBMYXlvdXRVbmkKIAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bWFy
Z2luQm94QXNjZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkKIHsKLSAgICBMYXlvdXRVbml0
IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjcm9zc0F4aXNFeHRl
bnRGb3JDaGlsZChjaGlsZCkpOworICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmlyc3RM
aW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOwog
ICAgIHJldHVybiBhc2NlbnQgKyBmbG93QXdhcmVNYXJnaW5CZWZvcmVGb3JDaGlsZChjaGlsZCk7
CiB9CiAKQEAgLTkzMCwxMiArOTMwLDEyIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6
OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChjb25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4RXh0ZW50ID0gTnVsbG9wdDsKICAgICBpZiAobWF4Lmlz
U3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkgewogICAgICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFp
bkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWF4U2l6ZSwgbWF4KTsKLSAgICAgICAgY2hpbGRT
aXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVPcihjaGlsZFNpemUpKTsK
KyAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVf
b3IoY2hpbGRTaXplKSk7CiAgICAgfQogICAgIAogICAgIExlbmd0aCBtaW4gPSBpc0hvcml6b250
YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLm1pbldpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLm1pbkhl
aWdodCgpOwogICAgIGlmIChtaW4uaXNTcGVjaWZpZWRPckludHJpbnNpYygpKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChj
aGlsZCwgTWluU2l6ZSwgbWluKS52YWx1ZU9yKGNoaWxkU2l6ZSkpOworICAgICAgICByZXR1cm4g
c3RkOjptYXgoY2hpbGRTaXplLCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwg
TWluU2l6ZSwgbWluKS52YWx1ZV9vcihjaGlsZFNpemUpKTsKICAgICAKICAgICBpZiAoIWlzRmxl
eGlibGVCb3hJbXBsKCkgJiYgbWluLmlzQXV0bygpICYmIG1haW5BeGlzT3ZlcmZsb3dGb3JDaGls
ZChjaGlsZCkgPT0gT1ZJU0lCTEUgJiYgIShpc0NvbHVtbkZsb3coKSAmJiBpczxSZW5kZXJGbGV4
aWJsZUJveD4oY2hpbGQpKSkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBDU1MgZmxleGJveCBzZWN0aW9uIDQuNSB3aGljaCBkZWZpbmVzIHRoZSBtaW5pbXVtIHNp
emUgb2YgInB1cmUiIGZsZXgKQEAgLTk0NywxMyArOTQ3LDEzIEBAIExheW91dFVuaXQgUmVuZGVy
RmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkCiAgICAgICAgIEFTU0VSVChjb250ZW50U2l6ZSA+PSAwKTsKICAgICAgICAgaWYgKGNo
aWxkLmhhc0FzcGVjdFJhdGlvKCkgJiYgY2hpbGQuaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpID4g
MCkKICAgICAgICAgICAgIGNvbnRlbnRTaXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0
aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hpbGQsIGNvbnRlbnRTaXplKTsKLSAgICAgICAgY29udGVu
dFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY29udGVudFNp
emUpKTsKKyAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0
ZW50LnZhbHVlX29yKGNvbnRlbnRTaXplKSk7CiAgICAgICAgIAogICAgICAgICBMZW5ndGggbWFp
blNpemUgPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLndpZHRoKCkgOiBjaGls
ZC5zdHlsZSgpLmhlaWdodCgpOwogICAgICAgICBpZiAobWFpbkF4aXNMZW5ndGhJc0RlZmluaXRl
KGNoaWxkLCBtYWluU2l6ZSkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgcmVzb2x2ZWRNYWlu
U2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJy
ZWRTaXplLCBtYWluU2l6ZSkudmFsdWUoKTsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlZE1h
aW5TaXplID49IDApOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3Rk
OjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IocmVzb2x2ZWRNYWluU2l6
ZSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVz
b2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKHJlc29sdmVkTWFpblNpemUpKTsKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIHN0ZDo6bWluKHNwZWNpZmllZFNp
emUsIGNvbnRlbnRTaXplKSk7CiAgICAgICAgIH0gZWxzZSBpZiAodXNlQ2hpbGRBc3BlY3RSYXRp
byhjaGlsZCkpIHsKICAgICAgICAgICAgIExlbmd0aCBjcm9zc1NpemVMZW5ndGggPSBpc0hvcml6
b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLmhlaWdodCgpIDogY2hpbGQuc3R5bGUoKS53aWR0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDVmMGRkMDQ3
YmE5MDc5MmUzMWM0NWZmZWE4MDJmNzk2NzQwY2ZlYTQuLmI2MDAyZDJiMTMyNTU4NjcyYWIzN2E3
ODliMGYzODAyM2Q0ZDg3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgR3JpZFRyYWNrIHsKIAogICAgIHZvaWQgc2V0R3Jv
d3RoTGltaXQoTGF5b3V0VW5pdCBncm93dGhMaW1pdCkKICAgICB7Ci0gICAgICAgIG1fZ3Jvd3Ro
TGltaXQgPSBncm93dGhMaW1pdCA9PSBpbmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4o
Z3Jvd3RoTGltaXQsIG1fZ3Jvd3RoTGltaXRDYXAudmFsdWVPcihncm93dGhMaW1pdCkpOworICAg
ICAgICBtX2dyb3d0aExpbWl0ID0gZ3Jvd3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1p
dCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlX29yKGdyb3d0
aExpbWl0KSk7CiAgICAgICAgIGVuc3VyZUdyb3d0aExpbWl0SXNCaWdnZXJUaGFuQmFzZVNpemUo
KTsKICAgICB9CiAKQEAgLTY4Niw3ICs2ODYsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndAog
CiAgICAgaWYgKGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNGaXRDb250ZW50KCkpIHsKICAgICAgICAg
TGF5b3V0VW5pdCBmaWxsQXZhaWxhYmxlRXh0ZW50ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWls
YWJsZUxvZ2ljYWxIZWlnaHQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAgICAgICBy
ZXR1cm4gc3RkOjptaW4obV9tYXhDb250ZW50SGVpZ2h0LnZhbHVlT3IoMCksIHN0ZDo6bWF4KG1f
bWluQ29udGVudEhlaWdodC52YWx1ZU9yKDApLCBmaWxsQXZhaWxhYmxlRXh0ZW50KSk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1pbihtX21heENvbnRlbnRIZWlnaHQudmFsdWVfb3IoMCksIHN0ZDo6
bWF4KG1fbWluQ29udGVudEhlaWdodC52YWx1ZV9vcigwKSwgZmlsbEF2YWlsYWJsZUV4dGVudCkp
OwogICAgIH0KIAogICAgIGlmIChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzRmlsbEF2YWlsYWJsZSgp
KQpAQCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRo
T2ZHcmlkVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpCiAKICAgICAvLyBH
cmlkIGd1dHRlcnMgd2VyZSByZW1vdmVkIGZyb20gZnJlZVNwYWNlIGJ5IHRoZSBjYWxsZXIgKGlm
IGZyZWVTcGFjZSBpcyBkZWZpbml0ZSksCiAgICAgLy8gYnV0IHdlIG11c3QgdXNlIHRoZW0gdG8g
Y29tcHV0ZSByZWxhdGl2ZSAoaS5lLiBwZXJjZW50YWdlcykgc2l6ZXMuCi0gICAgTGF5b3V0VW5p
dCBtYXhTaXplID0gc3RkOjptYXgoTGF5b3V0VW5pdCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNw
YWNlKCkudmFsdWVPcihMYXlvdXRVbml0KCkpKTsKKyAgICBMYXlvdXRVbml0IG1heFNpemUgPSBz
dGQ6Om1heChMYXlvdXRVbml0KCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9v
cihMYXlvdXRVbml0KCkpKTsKICAgICBjb25zdCBib29sIGhhc0RlZmluaXRlRnJlZVNwYWNlID0g
c2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gPT0gVHJhY2tTaXppbmc7CiAKICAgICAvLyAxLiBJ
bml0aWFsaXplIHBlciBHcmlkIHRyYWNrIHZhcmlhYmxlcy4KQEAgLTEwMjksMTMgKzEwMjksMTMg
QEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjptaW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGls
ZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW8KICAgICBib29sIG92ZXJyaWRlU2l6ZUhhc0NoYW5n
ZWQgPSB1cGRhdGVPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hp
bGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBzaXppbmdEYXRhKTsKICAgICBpZiAoaXNSb3dBeGlz
KSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luTG9naWNhbFdpZHRoID0gc2l6aW5nRGF0YS5z
aXppbmdPcGVyYXRpb24gPT0gVHJhY2tTaXppbmcgPyBjb21wdXRlTWFyZ2luTG9naWNhbFNpemVG
b3JDaGlsZChjaGlsZElubGluZURpcmVjdGlvbiwgY2hpbGQpIDogbWFyZ2luSW50cmluc2ljTG9n
aWNhbFdpZHRoRm9yQ2hpbGQoY2hpbGQpOwotICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxv
Z2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBvdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0
aW9uKS52YWx1ZU9yKDApLCAqdGhpcywgbnVsbHB0cikgKyBtYXJnaW5Mb2dpY2FsV2lkdGg7Cisg
ICAgICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5T
aXplLCBjaGlsZE1pblNpemUsIG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24pLnZhbHVlX29yKDApLCAqdGhpcywgbnVs
bHB0cikgKyBtYXJnaW5Mb2dpY2FsV2lkdGg7CiAgICAgfQogCiAgICAgaWYgKG92ZXJyaWRlU2l6
ZUhhc0NoYW5nZWQgJiYgKGRpcmVjdGlvbiAhPSBGb3JDb2x1bW5zIHx8IHNpemluZ0RhdGEuc2l6
aW5nT3BlcmF0aW9uICE9IEludHJpbnNpY1NpemVDb21wdXRhdGlvbikpCiAgICAgICAgIGNoaWxk
LnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgY2hpbGQubGF5b3V0SWZOZWVkZWQo
KTsKLSAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBj
aGlsZE1pblNpemUsIE51bGxvcHQpLnZhbHVlT3IoMCkgKyBjaGlsZC5tYXJnaW5Mb2dpY2FsSGVp
Z2h0KCkgKyBjaGlsZC5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgcmV0dXJuIGNoaWxk
LmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBOdWxsb3B0
KS52YWx1ZV9vcigwKSArIGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9s
bGJhckxvZ2ljYWxIZWlnaHQoKTsKIH0KIAogYm9vbCBSZW5kZXJHcmlkOjp1cGRhdGVPdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0Rh
dGEpIGNvbnN0CkBAIC0xMTk5LDcgKzExOTksNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVD
b250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvck5vblNwYW5uaW5nSXRlbXMoR3JpZAog
ICAgIH0gZWxzZSBpZiAodHJhY2tTaXplLmhhc01heENvbnRlbnRPckF1dG9NYXhUcmFja0JyZWFk
dGgoKSkgewogICAgICAgICBMYXlvdXRVbml0IGdyb3d0aExpbWl0ID0gbWF4Q29udGVudEZvckNo
aWxkKGdyaWRJdGVtLCBkaXJlY3Rpb24sIHNpemluZ0RhdGEpOwogICAgICAgICBpZiAodHJhY2tT
aXplLmlzRml0Q29udGVudCgpKQotICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihn
cm93dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFk
dGgoKS5sZW5ndGgoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCkpKTsK
KyAgICAgICAgICAgIGdyb3d0aExpbWl0ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQsIHZhbHVlRm9y
TGVuZ3RoKHRyYWNrU2l6ZS5maXRDb250ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIHNpemlu
Z0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwKSkpOwogICAgICAgICB0cmFjay5zZXRH
cm93dGhMaW1pdChzdGQ6Om1heCh0cmFjay5ncm93dGhMaW1pdCgpLCBncm93dGhMaW1pdCkpOwog
ICAgIH0KIH0KQEAgLTEzODcsOCArMTM4Nyw4IEBAIHN0YXRpYyBib29sIHNvcnRCeUdyaWRUcmFj
a0dyb3d0aFBvdGVudGlhbChjb25zdCBHcmlkVHJhY2sqIHRyYWNrMSwgY29uc3QgR3JpZFRyCiAg
ICAgaWYgKHRyYWNrMUhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcCB8fCB0cmFj
azJIYXNJbmZpbml0ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXApCiAgICAgICAgIHJldHVybiB0
cmFjazJIYXNJbmZpbml0ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXA7CiAKLSAgICBMYXlvdXRV
bml0IHRyYWNrMUxpbWl0ID0gdHJhY2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlT3IodHJhY2sx
LT5ncm93dGhMaW1pdCgpKTsKLSAgICBMYXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5n
cm93dGhMaW1pdENhcCgpLnZhbHVlT3IodHJhY2syLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlv
dXRVbml0IHRyYWNrMUxpbWl0ID0gdHJhY2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRy
YWNrMS0+Z3Jvd3RoTGltaXQoKSk7CisgICAgTGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNr
Mi0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZV9vcih0cmFjazItPmdyb3d0aExpbWl0KCkpOwogICAg
IHJldHVybiAodHJhY2sxTGltaXQgLSB0cmFjazEtPmJhc2VTaXplKCkpIDwgKHRyYWNrMkxpbWl0
IC0gdHJhY2syLT5iYXNlU2l6ZSgpKTsKIH0KIApAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mIHRy
YWNrcywgVmVjdG9yPEdyaWQKIGJvb2wgUmVuZGVyR3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWlu
VHJhY2tCcmVhZHRoKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRTaXpp
bmdEYXRhJiBzaXppbmdEYXRhKQogewogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFj
a3MgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc2l6aW5nRGF0YS5jb2x1bW5UcmFja3Mg
OiBzaXppbmdEYXRhLnJvd1RyYWNrczsKLSAgICBjb25zdCBMYXlvdXRVbml0IG1heFNpemUgPSBz
aXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKTsKKyAgICBjb25zdCBMYXlvdXRV
bml0IG1heFNpemUgPSBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSBncmlkVHJhY2tTaXplKGRpcmVjdGlv
biwgaSwgc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24pOwogICAgICAgICBpZiAoY29tcHV0ZVVz
ZWRCcmVhZHRoT2ZNaW5MZW5ndGgodHJhY2tTaXplLCBtYXhTaXplKSA+IHRyYWNrc1tpXS5iYXNl
U2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjU5
NWMzNDMxMjQxMmQ1MDg3Y2IwY2MyMmM2MjAxYjBkODk2NjQxYS4uZmM5OGEzOWIyY2UwZmNkMTU5
ZDEyNGU1MTE2MjI4YjdlZjQ4MjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC00NDYzLDcgKzQ0NjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAK
ICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRoIHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUg
dXMuCiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RlZFN1YnBpeGVsT2Zmc2V0ID0gb2Zmc2V0Rm9yVGhp
c0xheWVyIC0gTGF5b3V0U2l6ZShkZXZpY2VQaXhlbFNuYXBwZWRPZmZzZXRGb3JUaGlzTGF5ZXIp
OwotICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExh
eW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlS
ZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKSwKKyAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zv
cm1lZFBhaW50aW5nSW5mbyh0aGlzLCBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhl
bHModHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVj
dChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAogICAg
ICAgICBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCwg
cGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3QsIHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJl
cXVlc3RzKTsKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRy
YW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKICAgICBjb250ZXh0LnNldENUTShv
bGRUcmFuc2Zyb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CmluZGV4IGI3MTYzZTY2YjNjNmZmMTE4NzcxYWM5ODkwOTc2YzNiM2JlNDY2ZmIuLjMwNmM1YTM5
NDZlNDNlMjY4MGIwNGNlOWZjMzc2ZDFjMzllNWMzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCBMYXlvdXRSZWN0IFJl
bmRlckxpc3RCb3g6Oml0ZW1Cb3VuZGluZ0JveFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0
aW9uYWxPZmZzZQogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0oUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRGdW5jdGlvbiBwYWlu
dEZ1bmN0aW9uKQogewogICAgIGludCBsaXN0SXRlbXNTaXplID0gbnVtSXRlbXMoKTsKLSAgICBp
bnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRk
aW5nVG9wQXJlYS52YWx1ZU9yKG1faW5kZXhPZmZzZXQpOworICAgIGludCBmaXJzdFZpc2libGVJ
dGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVl
X29yKG1faW5kZXhPZmZzZXQpOwogICAgIGludCBlbmRJbmRleCA9IGZpcnN0VmlzaWJsZUl0ZW0g
KyBudW1WaXNpYmxlSXRlbXMoQ29uc2lkZXJQYWRkaW5nOjpZZXMpOwogICAgIGZvciAoaW50IGkg
PSBmaXJzdFZpc2libGVJdGVtOyBpIDwgbGlzdEl0ZW1zU2l6ZSAmJiBpIDwgZW5kSW5kZXg7ICsr
aSkKICAgICAgICAgcGFpbnRGdW5jdGlvbihwYWludEluZm8sIHBhaW50T2Zmc2V0LCBpKTsKQEAg
LTU5Nyw3ICs1OTcsNyBAQCBib29sIFJlbmRlckxpc3RCb3g6OnNjcm9sbFRvUmV2ZWFsRWxlbWVu
dEF0TGlzdEluZGV4KGludCBpbmRleCkKIAogYm9vbCBSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJ
c1Zpc2libGUoaW50IGluZGV4KQogewotICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRleE9mRmly
c3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9mZnNldCk7
CisgICAgaW50IGZpcnN0SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFk
ZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7CiAgICAgaW50IGVuZEluZGV4ID0g
bV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhCiAgICAgICAg
ID8gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhLnZhbHVl
KCkgKyBudW1iZXJPZlZpc2libGVJdGVtc0luUGFkZGluZ0JvdHRvbSgpCiAgICAgICAgIDogbV9p
bmRleE9mZnNldCArIG51bVZpc2libGVJdGVtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggN2QyZmI0MzYyODE1NGI5NDI1
NjZmOTk3ODljZjUwOGY1MmI0OTdhZC4uMjBjZjllYzAzZjJlNmJjOTJlMTc1YjkyZDIyZDNiNGVl
ZmEwYWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNv
bHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KCkgY29uc3QKICAgICBMYXlvdXRVbml0
IGF2YWlsYWJsZUhlaWdodCA9IG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5jb2x1bW5IZWlnaHRB
dmFpbGFibGUoKTsKICAgICBMYXlvdXRVbml0IG1heENvbHVtbkhlaWdodCA9IGF2YWlsYWJsZUhl
aWdodCA/IGF2YWlsYWJsZUhlaWdodCA6IFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWln
aHQoKTsKICAgICBpZiAoIW11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZp
bmVkKCkpCi0gICAgICAgIG1heENvbHVtbkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdo
dCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11
bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBOdWxsb3B0KS52YWx1ZU9yKG1heENvbHVt
bkhlaWdodCkpOworICAgICAgICBtYXhDb2x1bW5IZWlnaHQgPSBzdGQ6Om1pbihtYXhDb2x1bW5I
ZWlnaHQsIG11bHRpY29sQmxvY2stPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXpl
LCBtdWx0aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgTnVsbG9wdCkudmFsdWVfb3IobWF4
Q29sdW1uSGVpZ2h0KSk7CiAgICAgcmV0dXJuIGhlaWdodEFkanVzdGVkRm9yU2V0T2Zmc2V0KG1h
eENvbHVtbkhlaWdodCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCmluZGV4IDRjMGI3YjM1M2IxZGJlNDRlNzk1NzkyZDg2YWJlYzRmNzBjNDIwZWQuLjIwNjg2
NDA2MmQzNjM1YWY4NDZkYWFkNDU0NDVhMDRjMGJiNTM3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMzczLDkgKzM3Myw5IEBAIExheW91dFVuaXQgUmVu
ZGVyVGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KGNvbnN0
IExlbmd0aCYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc3R5bGVMb2dpY2FsSGVpZ2h0LnZh
bHVlKCkgLSBib3JkZXJzOwogICAgIH0gZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0LmlzUGVy
Y2VudE9yQ2FsY3VsYXRlZCgpKQotICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dp
Y2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhlaWdodCkudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpLnZhbHVl
X29yKDApOwogICAgIGVsc2UgaWYgKHN0eWxlTG9naWNhbEhlaWdodC5pc0ludHJpbnNpYygpKQot
ICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmco
c3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBi
b3JkZXJBbmRQYWRkaW5nKS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gY29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dpY2Fs
SGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1ZV9vcigw
KTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBM
YXlvdXRVbml0KCk7CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjp1cGRh
dGVGaXJzdExldHRlcihSZW5kZXJUcmVlTXV0YXRpb25Jc0FsbG93ZWQpCiAKIGludCBSZW5kZXJU
YWJsZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxp
bmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICByZXR1cm4gdmFsdWVPckNvbXB1dGUoZmlyc3RMaW5l
QmFzZWxpbmUoKSwgWyZdIHsKICAgICAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3Np
dGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2Rl
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKaW5kZXggYzAwY2JjYzk5MTNkMTNkNzZmMTdhZmQ4MzJjODY4ZjJhYjc4ZWI5ZC4uZTFh
N2VhYTc1OWFkMzMxNjliYTExMWEzNWY5MTVhNGMxZThjNzUyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBMYXlv
dXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAg
IC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxlcy5o
dG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUgYmFzZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNlbGlu
ZSBvZgogICAgIC8vIHRoZSBmaXJzdCBpbi1mbG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBvciB0
aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cgaW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21lcyBm
aXJzdC4gSWYgdGhlcmUKICAgICAvLyBpcyBubyBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJvdywg
dGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20gb2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxsIGJv
eC4KLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGJvcmRlckFuZFBhZGRp
bmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAgIHJldHVybiBmaXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlX29yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRM
b2dpY2FsSGVpZ2h0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0NlbGxEaXJ0eVdo
ZW5Db2xsYXBzZWRCb3JkZXJDaGFuZ2VzKFJlbmRlclRhYmxlQ2VsbCogY2VsbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZDg4NWU4
ZTJjNjI1YzZkYzBiNWYyZGZmMTU3OTM0M2VlNWVlNTEwZi4uODZmZmYxYjc1NDk2ZTAwNDQ4MzZm
MDY2NDFmZWI2MWEzMzFhOGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTkzNCw3ICs5MzQsNyBAQCBPcHRpb25hbDxpbnQ+IFJl
bmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICAvLyBP
bmx5IGNlbGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwg
JiYgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgaW50IGNhbmRp
ZGF0ZSA9IHJvdW5kVG9JbnQoY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFk
ZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5kaWRhdGUp
OworICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlX29yKGNhbmRpZGF0
ZSksIGNhbmRpZGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAppbmRleCA0NGExYzUyMDM5YjVkNDdmZmNkMmExYTdlMTZjNTU4MDE5
MDFmZDA5Li42NTZiNzM0Nzg3Mzg3YTgwM2I0MzIzNDEyZjI1N2MzMjQwM2Y5NjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC05OTksNyArOTk5LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgfQogICAgIH0KIAotICAgIGdseXBoT3ZlcmZs
b3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVPcihnbHlwaE92ZXJmbG93Lmxl
ZnQpOworICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFs
dWVfb3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKIAogICAgIGlmICgobmVlZHNXb3JkU3BhY2luZyAm
JiBsZW4gPiAxKSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZpcnN0V29yZCkpCiAgICAgICAgIGN1
cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHZvaWQgUmVu
ZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zm
c2V0QWZ0ZXJMYXN0VHlwCiAKIFN0cmluZ1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmlldyh1bnNp
Z25lZCBzdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0gICAgdW5zaWdu
ZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlT3IodGV4dExlbmd0aCgpKTsKKyAgICB1bnNpZ25l
ZCBkZXN0aW5hdGlvbiA9IHN0b3AudmFsdWVfb3IodGV4dExlbmd0aCgpKTsKICAgICBBU1NFUlQo
c3RhcnQgPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChkZXN0aW5hdGlvbiA8PSBsZW5ndGgoKSk7
CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGRlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBlYzAy
ODY1MDcwNjZiMzE5YmM3N2YxNmQ1OGY4MzBjZDk5ZmYzNGQ2Li41YTJhZDcyYmRmN2Q1ZDQzMTM5
MWE0OThlYTY1ODVlNGI1YTdlNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZv
aWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBs
YXlvdXQsIFBhaW50SW5mbyYgcGFpCiAgICAgaWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCkgIT0gVGV4dERlY29yYXRpb25Ob25lKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclRleHQq
IHRleHRSZW5kZXJlciA9IGNoaWxkcmVuT2ZUeXBlPFJlbmRlclRleHQ+KGZsb3cpLmZpcnN0KCk7
CiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIpIHsKLSAgICAgICAgICAgIHRleHREZWNvcmF0aW9u
UGFpbnRlciA9IFRleHREZWNvcmF0aW9uUGFpbnRlcihwYWludEluZm8uY29udGV4dCgpLCBzdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLCAqdGV4dFJlbmRlcmVyLCBmYWxzZSk7CisgICAg
ICAgICAgICB0ZXh0RGVjb3JhdGlvblBhaW50ZXIuZW1wbGFjZShwYWludEluZm8uY29udGV4dCgp
LCBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLCAqdGV4dFJlbmRlcmVyLCBmYWxzZSk7
CiAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblBhaW50ZXItPnNldEZvbnQoc3R5bGUuZm9udENh
c2NhZGUoKSk7CiAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblBhaW50ZXItPnNldEJhc2VsaW5l
KHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4
IDViMjExMmYzNWE0NmQzYjViNzEyOWM5NTZlYWQyODg4NzkxYWJmNTkuLmE2NjZjOWI4NDllNTNk
OTQ2MmQ2M2I4MDRjOTI3MGViOWIyN2I1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgaW50IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW4KICAgICBpZiAobGluZVBvc2l0aW9uTW9kZSA9PSBQ
b3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0
dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3Np
dGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2Rl
KSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoUmVuZGVyQmxvY2s6
OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGlu
ZVBvc2l0aW9uTW9kZSkpOwogfQogCiAjaWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
CmluZGV4IDBlNzMzYjllYjEzNjQyYTgxZjNiZmU0YTRkMmE3OThiMmFiNzAxZGQuLjk0YzJmNzEy
NGUwNGJiMmM5YTY0ZThlY2M0MDkzN2NjNmM4ZGYxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTgxLDcgKzgxLDcg
QEAgY2xhc3MgUmVuZGVyTWF0aE1MQmxvY2sgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogCiAgICAg
c3RhdGljIExheW91dFVuaXQgYXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3Io
Y2hpbGQubG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJh
c2VsaW5lKCkudmFsdWVfb3IoY2hpbGQubG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKICAgICB2
b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IGVlYTRmMGQ4MzIwNmYzNDdiMTc3
ZjczZjA3MjY1OGQwMTY2ZTY0MDMuLmNjZGYyNGY5YzYxZTYyZDU5YTViYjg1YjdlY2FhYjdjYTlh
ZTc0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5l
cjo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dAogICAgIGlmICghcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChwb2ludEluUGFyZW50KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2Nh
bFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6
cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IDJiZjA4NmZjMWYzMDc5ODM1OWJkNjc2OGE2Mzg0YWYw
OTlkNTczZDAuLjEwOTVkMjRlMTEyMTliNjIyN2M4YzJkNjllMTZmMzE3NGM1YTEwYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAg
ICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCku
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJl
bnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsK
IAogICAgIC8vIEVhcmx5IGV4aXQgaWYgbG9jYWwgcG9pbnQgaXMgbm90IGNvbnRhaW5lZCBpbiBj
bGlwcGVkIHZpZXdwb3J0IGFyZWEKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxv
d0hpZGRlbigqdGhpcykgJiYgIW1fdmlld3BvcnQuY29udGFpbnMobG9jYWxQb2ludCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDE1
ODQ3NjE5YTcxM2FkZTUwMDBmNGJlYzY3ZTU4Y2NkMzdjMDExZjYuLjBkY2I5MTgwNzFkODExYTk1
MmI2N2Y4MTMxMzY4YzViOTM4NGIwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBSZW5kZXJT
VkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3UKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2
ZW50c0hpdFJ1bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2lu
dGVyRXZlbnRzKCkpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUpOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNp
YmxlKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9p
bnRJblBhcmVudCk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KHBvaW50SW5QYXJlbnQpOwogICAgICAgICAgICAgCiAgICAgICAgIGlmICghU1ZHUmVuZGVy
U3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggYjVjYmRlNmE4ZTE1ZDhi
MjkyMWJmYzFiZDhkZjlmMGNhZDRjYWEzNi4uNWQ4MzVmZTE3MDZkODkzMDBkZWFjYWU3MjVhMWYx
MDEwZGRkOGI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAtMjY3LDEwICsyNjcsMTAgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9h
dFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsK
ICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC54KCksIG9iamVj
dEJvdW5kaW5nQm94LnkoKSk7CiAgICAgICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0ob2Jq
ZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAg
ICAgICBwb2ludCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUG9pbnQocG9pbnQpOworICAgICAgICBwb2ludCA9IHRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKICAgICB9CiAKLSAg
ICBwb2ludCA9IGNsaXBQYXRoRWxlbWVudCgpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKS5pbnZl
cnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOworICAgIHBv
aW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOwogCiAgICAgZm9y
IChOb2RlKiBjaGlsZE5vZGUgPSBjbGlwUGF0aEVsZW1lbnQoKS5maXJzdENoaWxkKCk7IGNoaWxk
Tm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZE5vZGUtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCmluZGV4IGE0OTA0NjRiNzllYTJmZDkzMDcwNTg1NGY5NWQzMDZkZDhhNWEwNmUuLmNkNWJm
NzVmNmEwMDU5ODk0NmNhYzM2ZGU4YmQxNTg4OTlmODkzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBA
IC0yNjgsNyArMjY4LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKIAogICAgICAgICBJbWFn
ZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CiAgICAg
ICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZp
bHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFm
ZmluZVRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmlu
ZVRyYW5zZm9ybSgpKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgx
IC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZp
bHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5h
YnNvbHV0ZVBhaW50UmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCmluZGV4IDFhY2E0ZTUwY2UxYjgzYTM3YTcyYWEzN2UwYWU1NTNiZDll
NGY0ZjAuLjM1OWZkNGJhY2JjZDg3NTYyOWU3MWE5ZjI2MjlhZmEwZmUzNjU4MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNDMxLDcg
KzQzMSw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgLy8gT25seSB0ZXN0IFNWRyBj
b250ZW50IGlmIHRoZSBwb2ludCBpcyBpbiBvdXIgY29udGVudCBib3guCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIGFuIGludGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRlc3Rz
IGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJveFJl
Y3QoKS5jb250YWlucyhwb2ludEluQm9yZGVyQm94KSkgewotICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOworICAg
ICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHBv
aW50SW5QYXJlbnQpKTsKIAogICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsYXN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogbm9kZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3Qt
YmFzZWQgaGl0IHRlc3RzIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggZmU5MTIyNjRiMjM4ZmQ3MzI4NzM1Y2E3ZGNiZWJiMjY1
NmRlYTUxMy4uNzUwMjQwZTUzNTg0ZGU3YWYwOGRhOTJkY2RlMjY2NmI3OGUzODUyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTMz
OSw3ICszMzksNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIGlmIChoaXRUZXN0QWN0
aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBG
bG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBv
aW50IGxvY2FsUG9pbnQgPSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICBpZiAoIVNWR1Jl
bmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcAppbmRleCAyYmFiN2E3ZmMwYTI0MzBjMzBlODZkMjU2MDEwYzAzN2MwNDgy
Y2JjLi44NzA4ZjRiMzk3ZjE1MjFiODQyMzA5YmRkMGQ2YTAxNDUzOGVhNjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQzNCw3ICs0
MzQsNyBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bAogICAgIGlmIChpc1Zpc2libGUgfHwgIWhp
dFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ry
b2tlICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVp
cmVTdHJva2UpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxl
KCkuc3ZnU3R5bGUoKS5oYXNGaWxsKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSkpIHsKLSAg
ICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBh
cmVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2lu
dChwb2ludEluUGFyZW50KTsKIAogICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpw
b2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggNGM3ZGNjMmM3NzkzN2UyNzhmZTM5NDlkYzc2NjBi
ZTljNTE1YjFmZC4uYWY4MTBmZGVkMjY1ODM3OTllNDI2YWY2YjA4OTE2OWJjOGJiNjUyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
CkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNlY3RSZXBh
aW50UmVjdFdpdGhTaGFkb3dzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmQKICAgICBpZiAobG9j
YWxUb1Jvb3RUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
ZmZpbmVUcmFuc2Zvcm0gcm9vdFRvTG9jYWxUcmFuc2Zvcm0gPSBsb2NhbFRvUm9vdFRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgQWZmaW5lVHJhbnNm
b3JtIHJvb3RUb0xvY2FsVHJhbnNmb3JtID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICByZXBhaW50UmVjdCA9IHJvb3RUb0xv
Y2FsVHJhbnNmb3JtLm1hcFJlY3QocmVwYWludFJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0ZjM1
ZWQ5ZWFhMDM5MTM0ZTcwYzhjZTIzMTk1ODVjY2RmOWQ5Njk1Li5jNGIzYWFjNWJmZDFjZThjYzU2
NjFjOGRiYmJlNGM1MzI0NjdlZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgQWZmaQogCiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3Jl
YXRlZCBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3Vs
ZCBub3QgYmUgc2NhbGVkLgogICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhh
cyB0byBiZSBkb25lIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0g
ICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3Io
QWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKICAgICBjb250ZXh0
LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKICAg
ICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCBhZWU5NDdjMDEzNmQ5YzYw
Y2UwMjVjYjkzNzE3ZjM0YTFmOTI4NTkxLi5kMjM3MmZmYmFmMDA2MTUxYzBkMDY0MDFiZmVjZmJm
OTIyZDQwOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6
cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZwogICAg
IGlmIChnbHlwaEJvdW5kaW5nQm94KQogICAgICAgICBtX21pblJpZ2h0U2lkZUJlYXJpbmcgPSBz
dGQ6Om1pbihtX21pblJpZ2h0U2lkZUJlYXJpbmcsIGhvcml6b250YWxBZHZhbmNlIC0gZ2x5cGhC
b3VuZGluZ0JveC52YWx1ZSgpLm1heFgoKSk7CiAKLSAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhE
YXRhKFdURk1vdmUocGF0aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRp
Y2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKSwgY29kZXBv
aW50cykpOworICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5
cGhFbGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5k
aW5nQm94LnZhbHVlX29yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOwogfQogCiB2b2lkIFNW
R1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQpAQCAtMTQzNSw3ICsx
NDM1LDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29u
c3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAgICAgICAgcHJvY2Vzc0dseXBo
RWxlbWVudChnbHlwaEVsZW1lbnQsICZnbHlwaEVsZW1lbnQsIGRlZmF1bHRIb3Jpem9udGFsQWR2
YW5jZSwgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgdW5pY29kZUF0dHJpYnV0ZSwgYm91bmRpbmdC
b3gpOwogICAgIH0KIAotICAgIG1fYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZU9yKEZs
b2F0UmVjdCgpKTsKKyAgICBtX2JvdW5kaW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVfb3IoRmxv
YXRSZWN0KCkpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEIDw9IDEwMTAwMAogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8yMDA4NjIyMz4gQ29j
b2EgaGFzIGEgYnVnIHdoZXJlIGdseXBoIGJvdW5kaW5nIGJveGVzIGFyZSBub3QgY29ycmVjdGx5
IHJlc3BlY3RlZCBmb3IgZnJ1c3R1bSBjdWxsaW5nLiBXb3JrIGFyb3VuZCB0aGlzIGJ5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCmluZGV4IDQ4YmJkMzBkNzc2N2JjYTU1MmZhMDgxMDUyZTAyMGYxZTAxYzNjMTQuLmM3Njdk
OWJlMDQ1MDEyMDZkNDAyZjZmYThmOTllYTg0YWY2YzE3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC05MCw3
ICs5MCw3IEBAIC0gKE5TU3RyaW5nICopc3RyaW5nVmFsdWUKIAogLSAodW5zaWduZWQgc2hvcnQp
cG9ydAogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3By
aXZhdGUpLT5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxT
ZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBG
SVhNRTogT3ZlcnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92ZXJyaWRpbmcgaGFzaCB3aWxsIGNh
dXNlIHRyb3VibGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBhbiBOU1NldCBvciBpcyB0aGUga2V5
IGluIGFuIE5TRGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNw
cAppbmRleCA3ODRhYWNkZTA0ZTRiNzYwZGM5ZmVlOWFmYzkxYmY2YjA3MDczMzM4Li4yNzgzOGNj
YjM5ODM5ZGYyYTE5ZWRhNGM3MjdjYjE4YjZlNzhlN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0
eU9yaWdpbjo6cG9ydChfT3V0XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQogICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9IG1fc2VjdXJp
dHlPcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApOworICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5T3Jp
Z2luLT5wb3J0KCkudmFsdWVfb3IoMCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRl
eCBkNGFhMDEzYTM4OWE5ZDQxNzQ2NDE1NTlmM2FlNzFlNWZhYTA3MDY3Li44ZGY4ZmZhYWI3YzRm
YTc4ODY0NWUxNzdmZWI2YzE1MWI3YTMzYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFdL
U3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNl
Y3VyaXR5T3JpZ2luKQogCiB1bnNpZ25lZCBzaG9ydCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChX
S1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0ltcGwo
c2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZU9yKDApOworICAg
IHJldHVybiB0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52
YWx1ZV9vcigwKTsKIH0KIAogLy8gRm9yIGJhY2t3YXJkcyBBQkkgY29tcGF0aWJpbGl0eS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlci5jcHAKaW5kZXggN2VhNmE5OGU2NDAxMTc0MWM0ZTNjNGY5ZGM2ZmE3ODM1
ZGMzZmIzMC4uNTkwNjkxYjhjYzNiMzk0ZGZiNmNmMTAwMjNjYTE2ZGU5Y2EzY2VmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCB2b2lkIFdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUgogCiAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyR2V0T3JpZ2luS2V5KCkpLT5zdHJpbmcoKSwgb3JpZ2luKTsKICAgICAgICAgICAg
IGlmIChvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxz
TWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5
KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNyZWF0aW9u
VGltZS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBs
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5nKCks
IEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVfb3Io
MCkpKTsKICAgICAgICAgICAgIGlmIChvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUpCi0g
ICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKG9yaWdpbkRldGFpbHMubW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKDApKSk7CisgICAgICAg
ICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9y
aWdpbkRldGFpbHMubW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcigwKSkpOwogCiAgICAgICAgICAg
ICByZXN1bHQudW5jaGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUo
ZGV0YWlsc01hcCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM1NTQzYTIwYjcxZThj
OTc2ZTIxMjJiOWI0YmVhNDhiMzc1MWZjNzAuLmI3MTEyY2VlMTdiZGNjMjY5YmM5ZjllMjcxZDI0
MDJkYTIxNjY4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTU4LDcgKzU4LDcgQEAgLSAoTlNTdHJpbmcg
Kilob3N0CiAKIC0gKE5TSW50ZWdlcilwb3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdp
bi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gX3NlY3Vy
aXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogI3By
YWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IDU3OWFmYWZhOGIyNjZk
NTcyZmRkNmU4NDE2ZmJhZjJjMzMyOTFkZjAuLjc0MWM2YzEzY2UwN2E4NmYzYWVlYWEzNmM5NWUx
MmE5YzJkM2M0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tCkBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RlY2ltYWxO
dW1iZXI+IHRvRGVjaW1hbE51bWJlcihpbnQ2NF90IHZhbHVlKQogCiBzdGF0aWMgUmV0YWluUHRy
PFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtn
ZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0
ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFsdWVPcigw
KSkuZ2V0KCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07
CisgICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1X
aXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5h
bW91bnQudmFsdWVfb3IoMCkpLmdldCgpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUo
bGluZUl0ZW0udHlwZSldOwogfQogCiBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01l
cmNoYW50Q2FwYWJpbGl0aWVzKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpNZXJjaGFu
dENhcGFiaWxpdGllcyYgbWVyY2hhbnRDYXBhYmlsaXRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKaW5kZXggMjdiMWYxNjBkOGY3OGY3ZWFmNTVkZDFkODMzYTdkMTJlZDk3OTZhMS4uMjIzZjBj
YjJlN2RhZGNhOTM4ZDU1MzUzMTUyZGY3YTU0MDQ2ODlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcApAQCAtNDcsNyArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yTmFtZUFuZERldGFpbHNTZXBhcmF0b3IgPSAiOyI7CiAK
IC8vIE1ha2Ugc3VyZSB0aGUgcHJlZGVmaW5lZCBlcnJvciBuYW1lIGlzIHZhbGlkLCBvdGhlcndp
c2UgdXNlIEludGVybmFsRXJyb3IuCi0jZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVy
cm9yU3RyaW5nKSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZT4oZXJyb3JTdHJpbmcpLnZhbHVlT3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKQorI2RlZmluZSBWQUxJREFURURfRVJS
T1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhl
bHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9yU3RyaW5nKS52YWx1ZV9vcihJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpCiAKIC8vIElm
IHRoZSBlcnJvciBuYW1lIGlzIGluY29ycmVjdCBmb3IgdGhlc2UgbWFjcm9zLCBpdCB3aWxsIGJl
IGEgY29tcGlsZS10aW1lIGVycm9yLgogI2RlZmluZSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJS
T1JfTkFNRShlcnJvck5hbWUpIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJz
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpF
cnJvck1lc3NhZ2U6OmVycm9yTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggZjJhMjg5ODliMjIzNzhkMDJlYzliNjU5YTI0NmVh
NzVjNmZlYjA0Ni4uMTlhYTc0OTkyNDdiMTc0OThiNGUxODMxMWY5ZGFkZjVhMzdmMjQ5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAg
LTQzMiw3ICs0MzIsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0
ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExpc3RTdAogICAgICAgICBpdGVtcy51
bmNoZWNrZWRBcHBlbmQoV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9wYWdlLT5wYWdlSUQoKSkpOwogICAgIH0KICAgICBt
X2hhc0N1cnJlbnRJbmRleCA9ICEhYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4Owot
ICAgIG1fY3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZh
bHVlT3IoMCk7CisgICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJy
ZW50SW5kZXgudmFsdWVfb3IoMCk7CiAgICAgbV9lbnRyaWVzID0gV1RGTW92ZShpdGVtcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IGQ3ZjdiNDcw
YTQ3MTFiNTdhYmRhNzc3ZjQzZTNlZWFmNGRiZTQ1MTcuLjdmZGIzM2I1MzYzNjllYTQ2YWQ3MDdi
N2M1OWYwMzYxM2ExYmZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgV2ViVmlldzo6ZGlkRmluZFpvb21hYmxlQXJl
YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlCiAKIEFmZmlu
ZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAogewotICAgIHJl
dHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpOworICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9y
bVRvU2NlbmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDAxNmM2YjkzMzQ2NTNjZmVh
MjI5MGIyMTY1MDBhYjAwOTIxYmRlNmYuLjY3ZWFhMGQ1NGQyZDM3N2Q0MDM5MmNmZjVjM2NkMzQ4
YTI2ZGUxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTI4Miw4ICsyODIsOCBAQCBzdGF0aWMg
dm9pZCBlbmNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5RGF0YUVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEhUVFBCbwogICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogCiAgICAgICAgIGVu
Y29kZXIgPDwgZWxlbWVudC5maWxlU3RhcnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5m
aWxlTGVuZ3RoLnZhbHVlT3IoLTEpOwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6cXVpZXRfTmFOKCkpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52
YWx1ZV9vcigtMSk7CisgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lLnZhbHVlX29yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5
cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KaW5kZXggNWVkZTU2ZWVlNDBhY2ZkYjk5
MDExOWRlN2FjZTkxOGU2NzhiYzY2Ni4uZjk2MWEzNTkxNTQxMTU3MTQ3OGQ0MDc0NDQyMTM0NGFm
OWEwOGM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9EZXByZWNhdGVkUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAg
SW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVJvb3RWaWV3VG9QbHVnaW4oY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZp
ZXdUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2lu
dCBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMocG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBw
b2ludC55KCkpOwotICAgIHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29y
ZGluYXRlcyk7CisgICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29y
ZGluYXRlcyk7CiB9CiAKIEZsb2F0UmVjdCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1Rv
U2NyZWVuKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKQEAgLTEyMDcsNyArMTIwNyw3IEBA
IEZsb2F0UmVjdCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvU2NyZWVuKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCiAgICAg
RmxvYXRQb2ludCBvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzKHJlY3QueCgpLCBzaXplKCkuaGVp
Z2h0KCkgLSByZWN0LnkoKSAtIHJlY3QuaGVpZ2h0KCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KEZsb2F0UmVjdChvcmlnaW5JblBs
dWdpbkNvb3JkaW5hdGVzLCByZWN0LnNpemUoKSkpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVn
aW5Db29yZGluYXRlcywgcmVjdC5zaXplKCkpKTsKIAogICAgIHJldHVybiBmcmFtZVZpZXctPmNv
bnRlbnRzVG9TY3JlZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KSk7CiB9CkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBJbnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25T
Y3JlZW4oKSBjb25zdAogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCiAgICAgRmxvYXRSZWN0
IGJvdW5kcyA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7Ci0gICAgRmxvYXRSZWN0
IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoYm91bmRzKTsKKyAg
ICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdp
blRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qo
Ym91bmRzKTsKICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVuKGVuY2xvc2lu
Z0ludFJlY3QocmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpOwogfQogCkBAIC0xMjMwLDcgKzEy
MzAsNyBAQCB2b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYg
cGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbgogICAgICAgICByZXR1cm47CiAKICAgICBt
X3NpemUgPSBwbHVnaW5TaXplOwotICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBs
dWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpOworICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICBbbV9w
ZGZMYXllckNvbnRyb2xsZXIgc2V0RnJhbWVTaXplOnBsdWdpblNpemVdOwogCiAgICAgW0NBVHJh
bnNhY3Rpb24gYmVnaW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBkYjRlYzNlNDEyOTlmNjkyOTYxZjc0ZGQyMTZjOTdj
NmRhNDYxMjM1Li43ZWZhMDc0MzQ0MzU2MTk4MjI0MTAyMDAxZjk3OTU4MDRmYTJmM2Y3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQpAQCAtOTMyLDcgKzkzMiw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigp
IGNvbnN0CiB2b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYg
cGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2lu
VG9Sb290Vmlld1RyYW5zZm9ybSkKIHsKICAgICBtX3BsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0g
PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtOwotICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5z
Zm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5l
VHJhbnNmb3JtKCkpOworICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRv
Um9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsK
ICAgICBtX3NpemUgPSBwbHVnaW5TaXplOwogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3
ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5jcHAKaW5kZXggMWNhN2Y0NDk3YTc5OGIzZTVkZWQ0YWVlYjE4ZWFjYzJmMTlhYTc3
MS4uMjhmNzU3ZmZlMGI0MzQ2ZjI2Mzc5OWYwNDdmNzYxNDdiNjg0NGM5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlw
ZTo6RmlsZToKLSAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5m
aWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZU9yKEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlv
blRpbWUudmFsdWVPcihpbnZhbGlkRmlsZVRpbWUoKSkpOworICAgICAgICAgICAgZm9ybURhdGEt
PmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxl
bWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVt
ZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoaW52YWxpZEZpbGVUaW1l
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1l
bnQ6OlR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGI4
ZWQ5ZWIyYTIwZjU1MGUzOGY2NDg4YTQ5MDZkYzUyM2JjMjI0NDcuLmJkZTY2MmI2NDU1NDk4MDkw
MWVlZjM1YzgyMWFiYjc1ZmI3NjkyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGEKICAgICB3ZWJQ
YWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCht
X2ZyYW1lKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUt
PmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVy
LnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2Fk
VHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1
ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29u
dGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9u
c2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkp
LCB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5m
bygpLCBbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZCht
X2ZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKaW5kZXggZTliYmIyYmE3OTk0MTBiM2IwNjQ2NDhjMTQ5ODU5OWEzZGUxMTlmMy4u
ZTE4YTk3ODlmMWFkMzY4N2ExYWM5YmMxMDRiNDRkYmQyYjUwYjg1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC00MjAsNyArNDIwLDcg
QEAgQ2VydGlmaWNhdGVJbmZvIFdlYkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdAogICAg
IGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
ZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkudmFsdWVPckNvbXB1
dGUoW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pOworICAgIHJldHVybiB2YWx1ZU9y
Q29tcHV0ZShkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSwgW10g
eyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6Omlu
bmVyVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggZTVmMGJlMDlhYjRmZmZjYjcxYTAxODNjMTg5YWY4MThjZWEzNTNkZS4uZTRl
Y2E1M2QzMDcxZmViYmYwMGE3NzlkOWNkOTkzM2NjMjRhNGEzOSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTEw
LTMxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtX
VEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6
Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgV1RGOjpPcHRpb25hbDo6dmFsdWVfb3IuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9PcHRpb25hbC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1MSW50ZWdlcik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJl
bmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5j
ZXMpOgorCiAyMDE2LTEwLTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1dlYklETF0gUmVzdHJ1Y3R1cmUgSURMUGFyc2VyIHN0cnVjdHMgdG8gYmV0dGVyIG1hdGNo
IG1vZGVybiBXZWJJREwgY29uY2VwdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL09wdGlvbmFsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09w
dGlvbmFsLmNwcAppbmRleCBhMDcxNWZkNjJmZTc2YzEwMmM0NDNhMWM3NzQ2ZjZkNGI4OGM3NGJi
Li4wNzU3NWIxNjkwYmM4YWI0YmVmNzQyM2IzOTc1MzI0OTU0ODczZGZlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFRFU1Qo
V1RGX09wdGlvbmFsLCBDYWxsYmFjaykKIHsKICAgICBib29sIGNhbGxlZCA9IGZhbHNlOwogICAg
IE9wdGlvbmFsPGludD4gYTsKLSAgICBpbnQgcmVzdWx0ID0gYS52YWx1ZU9yQ29tcHV0ZShbJl0g
eworICAgIGludCByZXN1bHQgPSB2YWx1ZU9yQ29tcHV0ZShhLCBbJl0gewogICAgICAgICBjYWxs
ZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMzAwOwogICAgIH0pOwpAQCAtODUsNyArODUsNyBA
QCBURVNUKFdURl9PcHRpb25hbCwgQ2FsbGJhY2spCiAKICAgICBhID0gMjUwOwogICAgIGNhbGxl
ZCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IGEudmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICByZXN1
bHQgPSB2YWx1ZU9yQ29tcHV0ZShhLCBbJl0gewogICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gMzAwOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDBmMWMwMmQ5ZTZjYTg1
YzA5Y2I0OTZjYjM3ZjEyYzI5OWY1OGZlZjguLjZlOWU3MzhhYjViY2UxZGZhYmZiNDJmNjBlYjdi
MmYyYjY0NWNiNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGludCB0
ZXN0UGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQogewogICAgIGF1dG8gb3B0
aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKICAgICBFWFBFQ1RfVFJVRSgh
IW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVPcigwKTsK
KyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3IoMCk7CiB9CiAKIHN0YXRpYyBib29s
IHBhcnNlSFRNTEludGVnZXJGYWlscyhjb25zdCBTdHJpbmcmIGlucHV0KQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHN0YXRpYyB1bnNpZ25lZCB0ZXN0UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNv
bnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRpb25hbFJlc3VsdCA9IHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJl
c3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJu
IG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXJGYWlscyhjb25zdCBTdHJpbmcmIGlucHV0KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAppbmRleCA0N2NkMDcyOTdi
NDlkZDg2ZjQ4ZTA1YzZmMmU1NWE3NTcxZWI1ZDhiLi4xMWFhYzY4NDRlZmViM2ZiNjdhNzU4NTNi
MDA1NThmN2Y5MTZkOGI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVVJMUGFyc2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RU
YQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwg
dXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBv
cnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBh
dGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVy
KCkpKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwg
b2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgb2xk
VVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwg
b2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCBvbGRVUkwu
cXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCBvbGRVUkwuZnJh
Z21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMu
cG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwg
dXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwg
dXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnko
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkpKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZl
VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbgog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMu
cG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9y
dCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCBv
bGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCBvbGRV
UkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBl
Y3RlZFBhcnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2Vy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBF
WFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBF
Q1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTQ5MCw3ICs0OTAs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xk
LnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXNz
d29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmhvc3Qs
IG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBv
cnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBv
cnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGF0aCwgb2xk
VVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnF1ZXJ5LCBvbGRVUkwu
cXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmZyYWdtZW50LCBvbGRVUkwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCBzdGF0aWMgdm9pZCBj
aGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgYgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBF
Q1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1Rf
RVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3
LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTUzNSw3ICs1MzUsNyBA
QCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnVz
ZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXNzd29y
ZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmhvc3QsIG9s
ZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBvcnQo
KS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNPbGQucG9ydCwgb2xkVVJMLnBvcnQo
KS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGF0aCwgb2xkVVJM
LnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnF1ZXJ5LCBvbGRVUkwucXVl
cnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmZyYWdtZW50LCBvbGRVUkwuZnJh
Z21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHN0YXRpYyB2b2lkIGNo
ZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29k
aW5nLCBjb25zCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRo
LCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVy
eSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSkpOwpAQCAtMTIxMyw3ICsxMjEzLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29u
c3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQs
IHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5w
b3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5w
YXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmll
cigpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293742</attachid>
            <date>2016-11-02 20:48:08 -0700</date>
            <delta_ts>2016-11-26 16:27:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161103124407.patch</filename>
            <type>text/plain</type>
            <size>1134261</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YmM2YWU5ZGI3YzYzMmRkZjMzMjQzOGY1MzM0NzQzMGQ2OTA0MTgzLi5mYWU2YzI0YWQyNDBjZGIw
NTA3NjRmNjFjNTQ5ZjJiYzI0MmVhNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDcgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGlt
cGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzIFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yPSBp
cyBub3QgY29tcGF0aWJsZSB0byBzdGQ6Om9wdGlvbmFsOjpvcGVyYXRvcj0uCisgICAgICAgIHN0
ZDo6b3B0aW9uYWw6OmVtcGxhY2UgaGFzIHRoZSBzYW1lIHNlbWFudGljcyB0byB0aGUgcHJldmlv
dXMgb25lLgorICAgICAgICBTbyB3ZSBjaGFuZ2UgdGhlIGNvZGUgdG8gdXNlIGl0LgorCisgICAg
ICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHk6CisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlBy
b21pc2UtQ29tYmluZWQuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJl
c3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDoKKyAgICAgICAgKiBT
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJv
dG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5q
cy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAg
ICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50ZXJu
YWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzLXJl
c3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
R3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFy
YXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6CisgICAgICAgICog
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2Vw
YXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNvbW11dGVDb21wYXJlVG9a
ZXJvSW50b1Rlc3QpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Y29tbXV0ZUNvbXBh
cmVUb1plcm9JbnRvVGVzdCk6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNpYWwuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAgICAgKEpTQzo6
QjM6OkNoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAgICAgICAqIGIzL0Iz
Q2hlY2tTcGVjaWFsLmg6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2NhbGVGb3JTaGwpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKToKKyAgICAgICAgKiBiMy9CM09wY29kZS5jcHA6
CisgICAgICAgIChKU0M6OkIzOjppbnZlcnRlZENvbXBhcmUpOgorICAgICAgICAqIGIzL0IzT3Bj
b2RlLmg6CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAgICAgICogYjMvQjNT
dGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2ttYXBTcGVjaWFsOjpm
b3JFYWNoQXJnSW1wbCk6CisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuaDoKKyAgICAg
ICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjppbnZlcnRlZENv
bXBhcmUpOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6QXJnOjppc1ZhbGlkU2NhbGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFs
aWRBZGRyRm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZEluZGV4Rm9y
bSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZEZvcm0pOgorICAgICAgICAq
IGIzL2Fpci9BaXJDdXN0b20uaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6UGF0Y2hDdXN0b206
OnNob3VsZFRyeUFsaWFzaW5nRGVmKToKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2aW91c1Nw
aWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuaDoKKyAgICAgICAgKiBiMy9haXIv
QWlySW5zdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5zdDo6c2hvdWxkVHJ5
QWxpYXNpbmdEZWYpOgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVz
Y2luZy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZik6CisgICAgICAgICogYjMv
YWlyL0FpclNwZWNpYWwuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpz
dG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFBDKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjps
aW5rKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRl
cm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6RGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KToKKyAgICAgICAgKiBkZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZy
YW1lOjpjdXJyZW50UG9zaXRpb24pOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VE
YXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJQYXVzZVBvc2l0aW9uczo6YnJlYWtwb2lu
dExvY2F0aW9uRm9yTGluZUNvbHVtbik6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJQYXJz
ZURhdGEuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29wZS5oOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RG
R0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmZpbmRQQyk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbCk6CisgICAgICAg
ICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2xvd1Bh
dGhHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpydW5TbG93UGF0aEdlbmVy
YXRvcnMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJp
dE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdo
dFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
TWF0aElDKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
RGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01H
ZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZG9taml0L0RPTUpJVEVmZmVj
dC5oOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpK
SVRDb2RlOjpmaW5kUEMpOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgIChK
U0M6OkhlYXA6OmNvbGxlY3RXaXRob3V0QW55U3dlZXApOgorICAgICAgICAoSlNDOjpIZWFwOjpj
b2xsZWN0SW1wbCk6CisgICAgICAgIChKU0M6OkhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24pOgor
ICAgICAgICAoSlNDOjpIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwLmg6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3Rpb25TY29wZSk6CisgICAgICAgICogaGVhcC9IZWFw
U25hcHNob3QuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3Q6Om5vZGVGb3JDZWxsKToK
KyAgICAgICAgKEpTQzo6SGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmllcik6Cisg
ICAgICAgICogaGVhcC9IZWFwU25hcHNob3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
cjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6
Om5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXApOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xp
ZW50Q2FwYWJpbGl0aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHk6CisgICAgICAgIChfZ2VuZXJhdGVf
ZGVjbGFyYXRpb25zX2Zvcl9lbnVtX2NvbnZlcnNpb25fbWV0aG9kcyk6CisgICAgICAgIChfZ2Vu
ZXJhdGVfZGVjbGFyYXRpb25zX2Zvcl9lbnVtX2NvbnZlcnNpb25fbWV0aG9kcy5yZXR1cm5fdHlw
ZV93aXRoX2V4cG9ydF9tYWNybyk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAg
IChDcHBQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2VudW1f
Y29udmVyc2lvbl9tZXRob2RzX2Zvcl9kb21haW4uZ2VuZXJhdGVfY29udmVyc2lvbl9tZXRob2Rf
Ym9keSk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFu
ZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBqaXQvSklU
Q29kZS5oOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpmaW5kUEMpOgorICAgICAgICAqIGppdC9K
SVREaXZHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVREaXZHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwOgorICAgICAgICAoSlNDOjpQQ1RvQ29kZU9yaWdp
bk1hcDo6ZmluZFBDKToKKyAgICAgICAgKiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuaDoKKyAgICAg
ICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVB
bmFseXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJs
ZSk6CisgICAgICAgICogcnVudGltZS9Db25jdXJyZW50SklUTG9jay5oOgorICAgICAgICAoSlND
OjpDb25jdXJyZW50SklUTG9ja2VyOjpDb25jdXJyZW50SklUTG9ja2VyKToKKyAgICAgICAgKiBy
dW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOgorICAgICAgICAoSlNDOjpEZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXM6OndyaXRhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpjb25maWd1cmFibGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXM6OmVudW1lcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3Vt
ZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
cHV0KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWZpbmVPd25Qcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmg6CisgICAgICAg
IChKU0M6Okhhc093blByb3BlcnR5Q2FjaGU6OmdldCk6CisgICAgICAgICogcnVudGltZS9IYXNo
TWFwSW1wbC5oOgorICAgICAgICAoSlNDOjpjb25jdXJyZW50SlNNYXBIYXNoKToKKyAgICAgICAg
KiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAgKEpTQzo6cGFyc2VJbmRleCk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAg
IChKU0M6OkpTVmFsdWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6CisgICAgICAgIChK
U0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Ojp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRo
b3V0Q29lcmNpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vz
c29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdE1heUJlSW5kZXgpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRleCk6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dElubGluZSk6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJp
bmdQcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAg
ICAgICAgKEpTQzo6SlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5U2xvdCk6CisgICAgICAgICog
cnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxD
aGFyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAgICAg
ICAgKEpTQzo6c2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0hhc093
blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAg
ICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eU5hbWUuaDoKKyAgICAgICAgKEpTQzo6cGFyc2VJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6
cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChK
U0M6OmlzU3RyaW5nT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmg6Cisg
ICAgICAgIChKU0M6OnRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKToKKyAgICAgICAg
KiBydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oOgorICAgICAgICAoSlNDOjpJbnRlZ3JhbFR5
cGVkQXJyYXlBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbik6CisgICAg
ICAgIChKU0M6OkludGVncmFsVHlwZWRBcnJheUFkYXB0b3I6OnRvTmF0aXZlRnJvbVVpbnQzMldp
dGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OkludGVncmFsVHlwZWRBcnJheUFkYXB0b3I6
OnRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OkZsb2F0
VHlwZWRBcnJheUFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKToKKyAg
ICAgICAgKEpTQzo6RmxvYXRUeXBlZEFycmF5QWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlV2l0
aG91dENvZXJjaW9uKToKKyAgICAgICAgKEpTQzo6VWludDhDbGFtcGVkQWRhcHRvcjo6dG9OYXRp
dmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpVaW50OENsYW1wZWRB
ZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24pOgorCiAyMDE2LTExLTAy
ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGJl
bmVhdGggU2xvdFZpc2l0b3I6OmRyYWluIEAgY29va3NpbGx1c3RyYXRlZC5jb20KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOTk3
MzY1NzA0NTY2NDkzZDA4NzM2MWRhM2Y4ZTdiM2EyMzVmOTQ1ZS4uOThhMzhmMDQyYzE5YmZiNDkx
ZTRhN2JlMDViODQyNDk0Y2I2NTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAorMjAxNi0xMS0wMiAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJ
bXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRp
b25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
b3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mZmVyZWQgYnkgdGhl
IEMrKzE3CisgICAgICAgIG9yaWdpbmFsIHByb3Bvc2FsIHBhcGVyLiBJdCBoYXMgdGhlIHNhbWUg
aW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5CisgICAgICAgIHRvIHRoZSBDKysxNydzIG9uZS4g
UHJldmlvdXMgV1RGOjpPcHRpb25hbCBsYWNrcyBzZXZlcmFsIGZ1bmN0aW9uYWxpdGllcy4KKyAg
ICAgICAgVGhlIGxhcmdlc3Qgb25lIGlzIHRoZSBjb3JyZWN0IGNvbnN0ZXhwciBjb25zdHJ1Y3Rv
cnMuIFRoaXMgZmFjdCBwcmV2ZW50cworICAgICAgICB1cyBmcm9tIHVzaW5nIE9wdGlvbmFsPGxp
dGVyYWwgdHlwZT4gaW4gY29uc3RleHByIGNvbnRleHQgaW4gV2ViS2l0LgorCisgICAgICAgIElu
IFdlYktpdCwgd2UgZG8gbm90IGFsbG93IGdsb2JhbCBjb25zdHJ1Y3RvcnMuIFNvIG9ubHkgdGhl
IGNvbnN0ZXhwcgorICAgICAgICBjb25zdHJ1Y3RvciBpcyB0aGUgd2F5IHRvIHVzZSBXVEY6Ok9w
dGlvbmFsIGluIHRoZSBzdGF0aWMgY29uc3QKKyAgICAgICAgZ2xvYmFsIHZhcmlhYmxlcy4gV1RG
OjpPcHRpb25hbCBpcyB1c2VkIGluIERPTUpJVDo6RWZmZWN0IGFuZAorICAgICAgICB3ZSB3b3Vs
ZCBsaWtlIHRvIGVtaXQgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMgdGhhdCBpbmNsdWRl
cworICAgICAgICB0aGlzIERPTUpJVDo6RWZmZWN0LiBUaGF0IGlzIHRoZSBtYWluIG1vdGl2YXRp
b24gb2YgdGhpcyB3b3JrLgorICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgYWxsb3dzIHRoZSBJ
REwgY29kZSBnZW5lcmF0b3IgdG8gZW1pdCBET01KSVQKKyAgICAgICAgc2lnbmF0dXJlcyBhcyBz
dGF0aWMgY29uc3QgZ2xvYmFsIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBpbXBvcnQgdGhlIHJl
ZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvbmUgaW5zdGVhZCBvZiBMTFZNIGxpYmMrKydzIG9uZS4K
KyAgICAgICAgVGhpcyBpcyBiZWNhdXNlIExMVk0gbGliYysrJ3Mgb25lIGRlcGVuZHMgb24gbWFu
eSBtYWNybyBhbmQgdHlwZV90cmFpdHMKKyAgICAgICAgb2ZmZXJlZCBieSBsaWJjKysgaW1wbGVt
ZW50YXRpb24uIEFuZCBhZG9wdGluZyBpdCB0byBXZWJLaXQgcmVxdWlyZXMKKyAgICAgICAgbGFy
Z2UgbW9kaWZpY2F0aW9uIGNvbXBhcmVkIHRvIHRoaXMgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9u
IG9uZS4KKyAgICAgICAgRnVydGhlcm1vcmUsIGl0IGlzIGRpZmZpY3VsdCB0byBjb21waWxlIGxp
YmMrKydzIG9wdGlvbmFsIGluIG9sZCBHQ0MgYW5kIFZDKysuCisgICAgICAgIEl0IGFsc28gcmVx
dWlyZXMgc29tZSBtb3JlIG1vZGlmaWNhdGlvbnMuIFRvIGtlZXAgdGhlIHRoaW5nIHNpbXBsZSwK
KyAgICAgICAgd2UgaW1wb3J0IHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIG5vdy4g
T25jZSBDKysxNyBpcyByZWxlYXNlZAorICAgICAgICBhbmQgd2UgdXBkYXRlIHRoZSBjb21waWxl
ciBiYXNlbGluZSwgd2UgY2FuIHNtb290aGx5IHN3aXRjaCB0byB0aGUgc3RhbmRhcmQKKyAgICAg
ICAgbGlicmFyeSdzIHN0ZDo6b3B0aW9uYWwuCisKKyAgICAgICAgV2UgYWxzbyBhZGQgc3VwcG9y
dCBmb3IgdGhlIGVudmlyb25tZW50IHRoYXQgZG9lcyBub3QgdXNlIGV4Y2VwdGlvbnMgdG8gdGhp
cworICAgICAgICByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgQW5kIHdlIGFs
c28gYWRkIHZhbHVlT3JDb21wdXRlIGhlbHBlciBmdW5jdGlvbi4gVGhhdCBrZWVwcyB0aGUgZXh0
ZW5kZWQKKyAgICAgICAgZnVuY3Rpb25hbGl0eSB0aGF0IHByZXZpb3VzIFdURjo6T3B0aW9uYWwg
aGFzLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkUXVldWUuaDoKKyAgICAgICAgKFdURjo6
Q3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UpOgorICAgICAgICAqIHd0
Zi9Gb3J3YXJkLmg6CisgICAgICAgICogd3RmL0hhc2hUcmFpdHMuaDoKKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxSZWY8UD4+Ojp0YWtlKToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6
CisgICAgICAgIChXVEY6OmluaXRpYWxpemVHQ1RocmVhZHMpOgorICAgICAgICAoV1RGOjptYXlC
ZUdDVGhyZWFkKToKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5oOgorICAgICAgICAqIHd0Zi9P
cHRpb25hbC5oOgorICAgICAgICAoc3RkOjpkZXRhaWxfOjppc19hc3NpZ25hYmxlOjpoYXNfYXNz
aWduKToKKyAgICAgICAgKHN0ZDo6ZGV0YWlsXzo6aGFzX292ZXJsb2FkZWRfYWRkcmVzc29mOjpo
YXNfb3ZlcmxvYWQpOgorICAgICAgICAoc3RkOjpkZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKToK
KyAgICAgICAgKHN0ZDo6ZGV0YWlsXzo6Y29udmVydCk6CisgICAgICAgIChzdGQ6Om51bGxvcHRf
dDo6bnVsbG9wdF90KToKKyAgICAgICAgKHN0ZDo6YmFkX29wdGlvbmFsX2FjY2Vzczo6YmFkX29w
dGlvbmFsX2FjY2Vzcyk6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsX2Jhc2U6Om9wdGlvbmFsX2Jh
c2UpOgorICAgICAgICAoc3RkOjpvcHRpb25hbF9iYXNlOjp+b3B0aW9uYWxfYmFzZSk6CisgICAg
ICAgIChzdGQ6OmNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlOjpjb25zdGV4cHJfb3B0aW9uYWxfYmFz
ZSk6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsOjpkYXRhcHRyKToKKyAgICAgICAgKHN0ZDo6b3B0
aW9uYWw6OmNvbnRhaW5lZF92YWwpOgorICAgICAgICAoc3RkOjpvcHRpb25hbDo6X19OT0VYQ0VQ
VF8pOgorICAgICAgICAoc3RkOjpvcHRpb25hbDo6b3B0aW9uYWwpOgorICAgICAgICAoc3RkOjpv
cHRpb25hbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6OmVtcGxhY2UpOgor
ICAgICAgICAoc3RkOjpvcHRpb25hbDo6b3BlcmF0b3IgLT4pOgorICAgICAgICAoc3RkOjpvcHRp
b25hbDo6b3BlcmF0b3IgKik6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsOjp2YWx1ZSk6CisgICAg
ICAgIChzdGQ6Om9wdGlvbmFsOjp2YWx1ZV9vcik6CisgICAgICAgIChzdGQ6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoc3RkOjpvcGVyYXRvciE9KToKKyAgICAgICAgKHN0ZDo6b3BlcmF0b3I8KToK
KyAgICAgICAgKHN0ZDo6b3BlcmF0b3I+KToKKyAgICAgICAgKHN0ZDo6b3BlcmF0b3I8PSk6Cisg
ICAgICAgIChzdGQ6Om9wZXJhdG9yPj0pOgorICAgICAgICAoc3RkOjpfX05PRVhDRVBUXyk6Cisg
ICAgICAgIChzdGQ6Om1ha2Vfb3B0aW9uYWwpOgorICAgICAgICAoc3RkOjpoYXNoPHN0ZDo6b3B0
aW9uYWw8VD4+OjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdURjo6TnVsbG9wdFRhZzo6TnVsbG9w
dFRhZyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpPcHRpb25hbCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp+T3B0aW9uYWwpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpPcHRpb25hbDo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0
aW9uYWw6Om9wZXJhdG9yIGJvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6
b3BlcmF0b3ItPik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvciop
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPcik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9w
dGlvbmFsOjp2YWx1ZU9yQ29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFs
Ojphc1B0cik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpkZXN0cm95KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
Om9wZXJhdG9yIT0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjptYWtlT3B0aW9uYWwpOiBEZWxl
dGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6CisgICAg
ICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRv
cik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorCiAyMDE2LTExLTAyICBSb21h
aW4gQmVsbGVzc29ydCAgPHJvbWFpbi5iZWxsZXNzb3J0QGNyZi5jYW5vbi5mcj4KIAogICAgICAg
ICBbUmVhZGFibGUgU3RyZWFtcyBBUEldIEVuYWJsZSBjcmVhdGlvbiBvZiBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU5OTM3MzljYmE2YTExOWQzZWFhN2ViMDNk
MDBiMDkwYTM2NzIxNy4uZWU3YjI5ZGVhY2ZmNjZjOTU1MmNlOGZlOTk4NzMwNzk0ZGYxMGU2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExODIgQEAKKzIwMTYtMTEtMDIgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0
aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSB2YWx1ZU9yIHRv
IHZhbHVlX29yLiBUaGlzIGlzIHNwZWNpZmllZCBpbiBDKysxNyBwcm9wb3NhbC4KKworICAgICAg
ICBVc2UgT3B0aW9uYWw6OmVtcGxhY2UuIEMrKzE3IE9wdGlvbmFsOjpvcGVyYXRvcj0oT3B0aW9u
YWwmJikgcmVxdWlyZXMKKyAgICAgICAgZWl0aGVyIGNvcHkgYXNzaWdubWVudCBvcGVyYXRvciBv
ciBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEJ1dAorICAgICAgICBERkc6OkpTVmFsdWVPcGVy
YW5kIGV0Yy4gb25seSBkZWZpbmVzIG1vdmUgY29uc3RydWN0b3JzIGFuZCBkcm9wCisgICAgICAg
IGltcGxpY2l0IGNvcHkgYXNzaWdubWVudCBvcGVyYXRvcnMuCisKKyAgICAgICAgSXQgd2FzIE9L
IGluIHRoZSBwcmV2aW91cyBXVEY6Ok9wdGlvbmFsIHNpbmNlIGl0IGFsd2F5cyB1c2VzIG1vdmUK
KyAgICAgICAgY29uc3RydWN0b3JzLiBCdXQgaXQgaXMgbm90IHZhbGlkIGluIEMrKzE3IE9wdGlv
bmFsLiBXZSB1c2UgT3B0aW9uYWw6OmVtcGxhY2UKKyAgICAgICAgaW5zdGVhZC4gVGhpcyBmdW5j
dGlvbiBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91cyBXVEY6Ok9wdGlvbmFs
J3MKKyAgICAgICAgb3BlcmF0b3I9LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNoKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aGFzaCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5Ojpv
cGVuKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNl
OjpET01Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6Om9wZXJhdG9yPSk6
CisgICAgICAgIERPTVByb21pc2UgaXMgZXhudGVuZGVkIHRvIGhhdmUgY29weSAmIG1vdmUgYXNz
aWdubWVudCBvcGVyYXRvcnMuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6
OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
OjphZGRSdWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRJbnRl
Z3JhbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRVbnNpZ25lZElu
dGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKToKKyAgICAgICAgKiBo
dG1sL0RPTVRva2VuTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Ub2tlbkxpc3Q6OnRv
Z2dsZSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2lu
dEluUGF0aEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbWl0VG9Pbmx5SFRNTE5vbk5l
Z2F0aXZlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6c2Nyb2xsQnkpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmluZyk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkhhc2guaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luSGFzaDo6aGFzaCk6Cisg
ICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZURpYWxvZ0ZlYXR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd1RleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlcjo6bWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0
aFJlcGxpY2EpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpyZXBsaWNh
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6bWFwU2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2li
bGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBwZWRQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVDdXJyZW50QWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5l
c3NMaWZldGltZUZvckhUVFBGYW1pbHkpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnN1YnN0cmluZ1RvUmVu
ZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6CisgICAgICAgIChXZWJDb3Jl
OjpQYWludEluZm86OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRI
b3Jpem9udGFsQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5BeGlz
Q29udGVudEV4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OnNldEdy
b3d0aExpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjptaW5TaXplRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9yTm9uU3Bhbm5pbmdJ
dGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJh
Y2tCcmVhZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlz
dEJveDo6bGlzdEluZGV4SXNWaXNpYmxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6
OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dp
Y2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZVBv
c2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OnN0cmluZ1ZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OnBhaW50Rmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxC
bG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQ
b3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmFzY2VudEZvckNoaWxkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSb290Ojpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6bm9kZUF0Rmxv
YXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhTaGFkb3dzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RvT1RGRm9udENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6CisKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZUFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb250YWN0Rmll
bGRzKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTGluZUl0ZW1UeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUxpbmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxpbmVJdGVtcyk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZXJjaGFudENhcGFiaWxpdGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVTdXBwb3J0ZWROZXR3b3Jrcyk6CisgICAgICAgIChXZWJDb3JlOjp0
b1NoaXBwaW5nVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGlwcGluZ01ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTaGlwcGluZ01ldGhvZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUGF5bWVudFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6dG9QYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cyk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29udGFjdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAq
IE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1l
bnRDb250YWN0Ojpmcm9tSlMpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1l
cmNoYW50U2Vzc2lvbjo6ZnJvbUpTKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmV4dHJhY3QpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6RmV0Y2hC
b2R5T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9iTG9hZGluZyk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoSGVhZGVy
czo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJz
Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2V0UmVmZXJyZXJQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWRpcmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UmVmZXJyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6YnVpbGRPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVz
dDo6Y2xvbmUpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdCk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OkZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6
Y2xvbmVGb3JKUyk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpmZXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRTdWNjZWVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0
b3ApOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAq
IE1vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZXM6OmFsdGl0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjph
bHRpdHVkZUFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjpoZWFkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjpzcGVlZCk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnN0cmluZ1Rv
RGlyZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6
Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGxLZXlzKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Z2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVj
b3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbElu
ZGV4UmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hh
bmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUluZGV4OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlPYmplY3RTdG9yZTo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9iamVjdFN0b3JlQ2xl
YXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yOjprZXlEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3I6OnNldEZpcnN0SW5SZW1haW5pbmdSYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGb3J3YXJkSXRlcmF0
b3JGcm9tUmVtYWluaW5nUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0UmV2ZXJzZUl0ZXJhdG9yRnJvbVJlbWFpbmluZ1Jhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6
OmluY3JlbWVudEZvcndhcmRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRSZXZlcnNlSXRlcmF0b3IpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbyk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUluZm86OmNyZWF0ZU5ld09iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUluZm86OklEQk9iamVjdFN0b3JlSW5mbyk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbmZvOjprZXlQYXRoKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sc0hvc3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6
OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRl
ZFdpdGhFcnJvcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnREVE1GKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0ljZUNhbmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRp
ZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZTo6c2RwTUxpbmVJbmRleCk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aWNlQ2FuZGlkYXRlRnJvbUpTT04pOgorICAgICAgICAqIE1vZHVsZXMvcHJveGltaXR5
L0RldmljZVByb3hpbWl0eUV2ZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJj
ZTo6c3RhcnRGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJj
ZTo6cHVsbEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNl
OjpjbGVhbik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
TFR5cGU6Om51bGxWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvRGljdGlvbmFyeS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWls
OjpWYXJpYWRpY0NvbnZlcnRlckJhc2U6OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6RGV0
YWlsOjpWYXJpYWRpY0NvbnZlcnRlckJhc2U8SURMSW50ZXJmYWNlPFQ+Pjo6Y29udmVydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHMpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Okl0ZXJhdG9yVHJh
aXRzPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpET01Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVByb21pc2U6Om9wZXJhdG9yPSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNGaWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRmls
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYWxsSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxD
YW52YXNFbGVtZW50Ojp0b0RhdGFVUkwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmNv
bnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU3RyaW5nQ29uc3RyYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVCb29sZWFuQ29uc3RyYWludCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVEb3VibGVDb25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUludENvbnN0cmFp
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6Cisg
ICAgICAgIChHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAg
ICAgKEdlbmVyYXRlRW51bWVyYXRpb25IZWFkZXJDb250ZW50KToKKyAgICAgICAgKEdlbmVyYXRl
RGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRB
cnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFy
cmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9h
dDY0QXJyYXk6OnB1dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpFbnVtVHlwZT4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpPcHRpb25hbD4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5h
dGVFbnVtTmFtZT4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpFbnVtQT4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpF
bnVtQj4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVt
Qz4pOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPik6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4pOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4p
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9u
YWxBcmdDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NDYWxsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxMb25nTG9uZ0NhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdDYWxsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
ZXF1ZW5jZUNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5DYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMkNhbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoT3B0aW9uYWxQYXJhbWV0ZXIyQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRo
T3B0aW9uYWxJbnRBcmd1bWVudENhbGxlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUVu
dW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rp
b25hcnlGaWxlPik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3dDYWxs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1
bmNXaXRoQ2xhbXBDYWxsZXIpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoK
KyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleVNl
cmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVy
YXRlS2V5KToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVNlcmlhbGl6YXRpb25SYXc6OnJlY29u
Y2lsZUFsZ29yaXRobSk6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXph
dGlvblJhdy5oOgorICAgICAgICAqIGNyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUht
YWNLZXlHZW5QYXJhbXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmNhbGN1bGF0ZVN0eWxlTWFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVGb250VHJhaXRzTWFzayk6CisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpk
b3VibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6ZG91Ymxl
VmFsdWVJbnRlcm5hbCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL0NTU1NlZ21lbnRl
ZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNo
ZWV0OjphZGRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6YWRvcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZvbnRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAq
IGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZVNldDo6Y29tcGxldGVkTG9hZGluZyk6CisgICAgICAgICogY3Nz
L0ZvbnRGYWNlU2V0Lmg6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjppbnRlcm5hbFBhcnNlKToKKyAgICAgICAgKiBjc3MvTWVk
aWFMaXN0Lmg6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZG91YmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dEdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRXb3JkU3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodCk6Cisg
ICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodCk6CisgICAgICAgICogY3NzL1N0
eWxlUnVsZUltcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVJbXBvcnQ6OnJl
cXVlc3RTdHlsZVNoZWV0KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
blZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTcHJpbmdUaW1pbmdG
dW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvckZ1
bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29s
b3JGcm9tVmFsdWUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAg
ICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRp
b25JZlJlc29sdmluZ1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6
OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bGFzdE1vZGlmaWVkKToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpz
Y3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yQXNz
ZXJ0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6
ZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0
ZXJhdG9yQXNzZXJ0aW9uczo6Y2xlYXIpOgorICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOgor
ICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZUlubGluZVN0eWxlU2hlZXRDYWNoZUtleSk6CisgICAgICAgICogZG9tL0tleWJvYXJk
RXZlbnQuaDoKKyAgICAgICAgKiBkb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzRXJyb3JlZCk6CisgICAgICAg
ICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZVNj
cmlwdC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojppbml0TWVz
c2FnZUV2ZW50KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9t
L011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZl
cjo6b2JzZXJ2ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuaDoKKyAgICAgICAg
KiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vUHNldWRv
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6CisgICAgICAgICogZG9t
L1JhbmdlQm91bmRhcnlQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBv
aW50OjpzZXRUb0JlZm9yZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQ
b2ludDo6c2V0VG9BZnRlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQ
b2ludDo6c2V0VG9FbmRPZk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBv
aW50OjppbnZhbGlkYXRlT2Zmc2V0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRj
aEV2ZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9V
c2VyR2VzdHVyZUluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZUlu
ZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3IpOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhz
KToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlLmg6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRGcmFtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6Omhhc0luc2VjdXJlQ29udGVudCk6CisgICAgICAgICog
aHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0
b2dnbGUpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0Lmg6CisgICAgICAgICogaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVu
dDo6aGFuZGxlQ2xpY2spOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlQm9yZGVyV2lkdGhBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1h
Z2VFbGVtZW50OjpoZWlnaHQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojppbml0aWFsaXplU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Omljb25UeXBlKToK
KyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9M
aXN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkKToKKyAgICAgICAg
KiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToKKyAgICAg
ICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1h
eExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVh
RWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9JbWFn
ZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6aGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp3aWR0aCk6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpmaW5kQ2xv
c2VzdFRpY2tNYXJrVmFsdWUpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAg
ICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHA6CisgICAgICAgICogaHRtbC9MaW5rSWNvbkNv
bGxlY3Rvci5oOgorICAgICAgICAqIGh0bWwvTGlua1JlbEF0dHJpYnV0ZS5oOgorICAgICAgICAq
IGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5
cGU6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0
VHlwZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZp
bGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Omlz
UG9pbnRJblBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZm
ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dGV4SW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RV
bm9wZW5Gb3JtYXR0aW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6cmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmg6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxJ
bnRlZ2VySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVE1MSW50ZWdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXJJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQUmVmcmVzaEludGVybmFsKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdFRvT25s
eUhUTUxOb25OZWdhdGl2ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURlc2NyaXB0b3JzKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xp
ZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tFdmVudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnNldEluc3RydW1lbnRzKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjbGVhclJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0U3VjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodEZhaWx1
cmUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRM
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclRlc3RpbmdPdmVycmlk
ZXMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnJlc291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGluayk6CisgICAgICAgICogbG9h
ZGVyL0xpbmtMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUpOgor
ICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6c2V0TG9hZFByaW9yaXR5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnByaW9yaXR5KToKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1M
RWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhN
TEVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
RnJhY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0aW9uRWxl
bWVudDo6Y2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1M
RnJhY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhN
TEZyYWN0aW9uRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxh
eVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50Lmg6CisgICAgICAgICog
bWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxNZW5jbG9zZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MTWVuY2xvc2VFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE9wZXJhdG9yRGlj
dGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6
OnNlYXJjaCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MT3BlcmF0b3JFbGVtZW50Ojpjb21wdXRlT3BlcmF0b3JGbGFnKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhNTE9wZXJhdG9yRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhN
TFBhZGRlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUGFkZGVkRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50
Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojpj
YWNoZWRNYXRoTUxMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAg
ICAgKiBtYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6dG9PcHRpb25hbEJvb2wpOgorICAgICAgICAq
IG1hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxTY3JpcHRzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxTY3JpcHRzRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3BhY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVG9r
ZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQpOgorICAgICAgICAqIG1hdGhtbC9N
YXRoTUxUb2tlbkVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaDoK
KyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmFsaWduZWRGaXJlVGltZSk6CisgICAg
ICAgICogcGFnZS9ET01UaW1lci5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93Lmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbUxpbmUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRT
b3VyY2UuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvU2Nyb2xsVG9PcHRpb25zLmg6CisgICAgICAg
ICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6cG9ydCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0
cmluZyk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaDoKKyAgICAgICAgKiBw
YWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Ym9v
bEZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRGZWF0dXJlKToKKyAgICAgICAgKiBw
YWdlL1dpbmRvd0ZlYXR1cmVzLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMpOgorICAgICAgICAqIHBh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQb3J0KToK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmhhbmRsZURlZmVycmVkU2Nyb2xsVXBkYXRl
QWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5o
OgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6
Y29udHJvbEZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lckJhc2U6OmFsaWduZWRGaXJlVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vVVJM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpw
b3J0QWxsb3dlZCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6CisgICAgICAgICogcGxhdGZv
cm0vVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZExvbmdlc3RaZXJvU2VxdWVuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpVUkxQYXJzZXI6OnBhcnNlSVB2NEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
OjpwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
OjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2Nik6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJz
ZXI6OnBhcnNlSVB2Nkhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpkb21haW5U
b0FTQ0lJKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
QmlkaVRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyOjpJbnRl
cnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6aG90U3BvdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNh
Y2hlOjpjbGVhck1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6
bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpmcmFtZU1ldGFk
YXRhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OmhvdFNwb3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6aG90U3BvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0
aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWN0RnJvbVBvbHlnb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFwcGVkUmVjdHNGb3JP
dXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6Zmx1c2gpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpj
b21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI6OnNldExheW91dFZpZXdwb3J0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0
YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6b3BlblR5cGVGZWF0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkdmFuY2VGb3JDb2xvckJpdG1hcEZvbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpsb2NhbEJvdW5kcyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmU6OmxvY2FsQm91bmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0Ojpsb2NhbEJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmVGb3JEb2N1bWVudE1hcmtl
cjo6bG9jYWxCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1
c1JpbmdQYXRoOjpsb2NhbEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0ZvY3VzUmluZ1JlY3RzOjpsb2NhbEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6U3Ryb2tlUmVjdDo6bG9jYWxCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlN0cm9rZVBhdGg6OmxvY2FsQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpTdHJva2VFbGxpcHNlOjpsb2NhbEJvdW5kcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nSXRlbTo6bG9jYWxCb3VuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6dXBkYXRlSXRlbUV4dGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0
ZTo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29u
dGV4dFN0YXRlOjpjb25jYXRDVE0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9J
bWFnZUJ1ZmZlckVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVJbWFnZUpQRUcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
cjo6bWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhcGl0YWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFN5bnRoZXNp
emUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZB
bmRDaGlsZHJlbldpdGhSZXBsaWNhKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cmVwbGljYVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6Om1hcFNjcm9sbE9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlVHJh
bnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtOjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0Fm
ZmluZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6Om1h
cHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBwZWRTZWNv
bmRhcnlRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVy
c2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYRGFtYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNv
ZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6aG90U3Bv
dEF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VF
bmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXByZXNzUkdCQUJpZ0VuZGlhblRvSlBF
Ryk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
VGlsZUNhY2hlOjpzZXRPdmVycmlkZVZpc2libGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyLm1tOgorICAgICAgICAoLVtMZWdhY3lUaWxlSG9zdExheWVyIHJl
bmRlckluQ29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJMaW51eC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhl
bWVNYWM6OmNvbnRyb2xGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YUNvbnN0cmFpbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwOjpzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlh
RW5kcG9pbnRPd3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hU
VFBIZWFkZXJNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OkhUVFBIZWFk
ZXJNYXBDb25zdEl0ZXJhdG9yOjp1cGRhdGVLZXlWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBEYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OmRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
ZXhwaXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1v
ZGlmaWVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2VydGlmaWNhdGVJ
bmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZFN0cmVh
bUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBs
YXRmb3JtU2VuZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6cGxhdGZvcm1TZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVKYXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb29raWVzSW5QYXJ0aXRpb25Gb3JV
UkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OnJlYWRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpw
bGF0Zm9ybVNlbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9CcmVha0xpbmVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5KToKKyAgICAgICAgKFdl
YkNvcmU6Om5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6
aXNCcmVha2FibGUpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3Rh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpmbGF0
dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50
ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAqIHJl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bW92ZVRv
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpuZXh0QnJlYWthYmxlUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OnNldE5leHRCcmVha2FibGVQ
b3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6aHlwaGVuYXRlZFN0cmluZ0ZvclRleHRSdW4pOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OnN1YnN0cmluZ1RvUmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6Omh5
cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6OmNvbnN0cnVjdFRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9PcmRlckl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yZGVySXRlcmF0b3I6OnJlc2V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludElu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja1JhcmVEYXRhOjpSZW5kZXJCbG9ja1JhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6aW5saW5lQmxvY2tCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c2V0Q2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9ja05lZWRzVXBkYXRlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5l
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9j
a0Jhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVycmlkZUNvbnRh
aW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFkanVzdENv
bnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2lj
YWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQZXJj
ZW50YWdlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Zmlyc3RMaW5lQmFzZWxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjppbmxpbmVCbG9ja0Jhc2VsaW5lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQ29tYmluZVRleHQ6OmNvbXB1dGVUZXh0T3JpZ2luKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJs
ZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4
aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5Cb3hBc2Nl
bnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0
ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5k
TWF4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNp
emVGb3JNaW5BbmRNYXgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkZEZvcmNlZFJlZ2lvbkJyZWFrKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6
OnNldEdyb3d0aExpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0R3Jvd3Ro
TGltaXRDYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpncm93dGhMaW1pdENhcCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6ZnJlZVNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjphdmFpbGFi
bGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6
c2V0QXZhaWxhYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZFNp
emluZ0RhdGE6OnNldEZyZWVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjps
YXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRl
SW50cmluc2ljTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpj
b21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOgorICAgICAg
ICAoV2ViQ29yZTo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVG
b3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsb2dpY2FsSGVpZ2h0Rm9y
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bWluU2l6ZUZvckNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pbkNvbnRlbnRGb3JDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjptYXhDb250ZW50Rm9yQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rp
b25zRm9yTm9uU3Bhbm5pbmdJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpzb3J0QnlHcmlkVHJh
Y2tHcm93dGhQb3RlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6dHJhY2tz
QXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6YXBwbHlTdHJldGNoQWxpZ25tZW50VG9UcmFja3NJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjpwYWludEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6bGlzdEluZGV4
SXNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmNvbXB1dGVGaXJz
dEluZGV4ZXNWaXNpYmxlSW5QYWRkaW5nVG9wQm90dG9tQXJlYXMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVNYXhDb2x1bW5IZWln
aHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2Vs
aW5lUG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6OnN0cmluZ1ZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c2V0U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNwbGl0U2VsZWN0aW9uQmV0
d2VlblN1YnRyZWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmdldFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU2VsZWN0
aW9uU3VidHJlZVJvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290
OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6U2VsZWN0aW9uU3VidHJlZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZWxl
Y3Rpb25TdGFydFBvcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6
U2VsZWN0aW9uU3VidHJlZURhdGE6OnNlbGVjdGlvbkVuZFBvcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURhdGE6OnNldFNlbGVjdGlv
blN0YXJ0UG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxl
Y3Rpb25TdWJ0cmVlRGF0YTo6c2V0U2VsZWN0aW9uRW5kUG9zKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6Y2xlYXJTZWxlY3Rp
b24pOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6bGFzdEZyYWdtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNsb3NlTGluZUVuZGluZ0FuZEFkanVz
dFJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y3JlYXRlVGV4dFJ1
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAg
ICogcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
b3JkVHJhaWxpbmdTcGFjZTo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250
ZXh0Ojpjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpC
cmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6bmV4dEJyZWFrYWJsZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6SW5saW5lSXRlcmF0b3JI
aXN0b3J5Ojptb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6dHJ5SHlwaGVuYXRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0Ojpjb21wdXRlQWRkaXRpb25hbEJldHdlZW5X
b3Jkc1dpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6Om9wdGltYWxMaW5lQnJlYWtM
b2NhdGlvbkZvclRyYWlsaW5nV29yZCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9NYXRo
TUxTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhN
TFN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OmFzY2VudEZvckNoaWxkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxS
b3c6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0
ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFNjcmlwdHM6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpm
aXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTcGFjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZU1hdGhWYXJp
YW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGlu
ZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0RmxvYXRQb2ludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnNldHVw
Tm9uU2NhbGluZ1N0cm9rZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hh
cGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6
OmNhbGN1bGF0ZVN0cm9rZUJvdW5kaW5nQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bm9kZUF0
RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmludGVyc2VjdFJlcGFpbnRS
ZWN0V2l0aFNoYWRvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jl
c3BlY3RpbmdMaWdhdHVyZXMpOgorICAgICAgICAqIHN0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudCk6
CisgICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVNjb3BlLmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRD
b252ZXJ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFNWR1RvT1RGRm9udCk6CisgICAg
ICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlci5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0Lmg6CisKIDIwMTYtMTEtMDIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE5ldHdvcmtTZXNzaW9uOiBBZGQgTmV0d29ya0RhdGFUYXNrIGltcGxlbWVu
dGF0aW9uIGZvciBibG9icwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDBlNWM5M2Y1MzRiMzZjNmE2YmFh
YzZhNGQxMWZjZDU5NTExYTlkM2MuLjhhNjIwZmNhMTY0NTJlOGE0MTM2NDdjNGNhYjVjNjg1ODY2
Yzc5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNi0xMS0wMiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBv
cnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25h
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdU
Rjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogRE9NL0RPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbi5tbToKKyAgICAgICAgKC1bRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGFkZDppbmRl
eDpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZh
bHVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2VuZEV2ZW50OmlzRHJhd1JlY3Q6XSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6
Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcG9y
dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICh0b0FjdGlv
bik6CisgICAgICAgICh0b1RhZyk6CisKIDIwMTYtMTEtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciBmcm9t
IER1bXBSZW5kZXJUcmVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjJmYzgzNDkyNzk4ZmQ0NWJmZmM1
NTcxYjQwNzkwOGIzMjk2MDUyMi4uMzZiZmNjY2NhMjlhYTE1M2I2MGNjMzQ4NDEyOTQ5YzMwM2Nh
MDQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTExLTAyICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEltcG9y
dCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9wdGlvbmFs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxOTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV1RG
OjpPcHRpb25hbDo6dmFsdWVfb3IuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViU2VjdXJp
dHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQpOgorCiAyMDE2
LTExLTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92
ZSBDVVNUT01fRUxFTUVOVFMgYnVpbGQgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGU5ZDI1NjFmMjY1YmZl
N2QwMzAzNDZkY2EwZGYyZmRmNTUxYWNjMTMuLjFmZmE1MzE5ZWI2NTBmYjlkNjIwMWNjOTY1Nzdk
NThlMDQ3NWI5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzYgQEAKKzIwMTYtMTEtMDIgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1w
b3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9u
YWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBX
VEY6Ok9wdGlvbmFsOjp2YWx1ZV9vciBhbmQgV1RGOjp2YWx1ZU9yQ29tcHV0ZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpyZXNwb25zZUhhc0V4cGlyZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUNvZGVycy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVy
PHN0ZDo6b3B0aW9uYWw8VD4+OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkNvZGVyPHN0ZDo6b3B0aW9uYWw8VD4+OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkNvZGVyPE9wdGlvbmFsPFQ+Pjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDb2RlcjxPcHRpb25hbDxUPj46OmRlY29kZSk6IERl
bGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnk6OlByZWxvYWRlZEVudHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQcmVs
b2FkZWRFbnRyeTo6cmV2YWxpZGF0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpy
ZWNvcmROb3RVc2luZ0NhY2hlRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RhdGlzdGljczo6cmVjb3JkUmV0cmlldmFsRmFpbHVyZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RhdGlzdGljczo6cXVlcnlXYXNFdmVyUmVxdWVzdGVkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3RvcmVCb2R5QXNCbG9iKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjplbmNvZGVSZWNvcmQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVy
YXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxzdGQ6Om9wdGlvbmFsPFQ+Pjo6ZW5jb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxzdGQ6Om9wdGlvbmFsPFQ+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok9wdGlvbmFsPFQ+Pjo6ZW5jb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXVEY6Ok9wdGlvbmFsPFQ+Pjo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1hcCk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChjbGFzc190ZW1wbGF0ZV9oZWFkZXJzKToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChBUEk6
OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1NlY3Vy
aXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KToKKyAg
ICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL09iakNPYmplY3RHcmFw
aC5tbToKKyAgICAgICAgKFdlYktpdDo6dHlwZUZyb21PYmplY3QpOgorICAgICAgICAqIFNoYXJl
ZC9tYWMvU2VjSXRlbVNoaW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kU2VjSXRlbVJlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNC
eU9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2lu
Lm1tOgorICAgICAgICAoLVtXS1NlY3VyaXR5T3JpZ2luIHBvcnRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRD
b21taXRMYXllclRyZWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbmF2aWdhdGlvbkdlc3R1
cmVEaWRFbmRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3
OjpzZXRDdXJzb3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAg
ICAgICAgKHRvQ29yZVNjcm9sbGJhclN0eWxlKToKKyAgICAgICAgKHRvQVBJU2Nyb2xsYmFyU3R5
bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
Ojp3ZWJGcmFtZUlERm9ySGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhh
bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxl
bWVudExheW91dCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjp1cGRhdGVWaWV3RXhwb3NlZFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
OjpzZXRWaWV3RXhwb3NlZFJlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OnZpZXdFeHBvc2VkUmVj
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U2VydmVyQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmZpbGVDcmVhdGlvblRpbWUpOgorICAgICAgICAoV2ViS2l0OjpmaWxlTW9kaWZpY2F0
aW9uVGltZSk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0ZvcndhcmRMaXN0U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3Rh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpvdmVy
bGF5U2Nyb2xsYmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2Ny
b2xsT2Zmc2V0Rm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludGVycHJl
dEtleUV2ZW50OmlzQ2hhckV2ZW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZW5jb2RlRm9ybURhdGFF
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlRm9ybURhdGFFbGVtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6ZGVjb2RlVjFTZXNzaW9uSGlzdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3
KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVl
bik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpnZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtRnJhbWVM
b2FkVVJMUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50
UG9saWN5Rm9ySG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvRm9ybURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5
U3R5bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTY3Jv
bGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRW
aWV3RXhwb3NlZFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KToKKwogMjAx
Ni0xMS0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTmV0d29ya1Nlc3Npb246IEFkZCBOZXR3b3JrRGF0YVRhc2sgaW1wbGVtZW50YXRpb24g
Zm9yIGJsb2JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKaW5kZXggODcyOGFkNzJiNTE0M2FhZGZj
OGJjM2M4OGEyNDg0M2IxNDJmMjUwNy4uNWUzZWU4MmE2MTNiYTRiNzUzNDYyNTVjNDI5NmFiZTAz
NzBhYmU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtODUsNyArODUsNyBAQCBjbGFz
cyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlczoKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtc
XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2Uo
KSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNf
IyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlM
VElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElO
X0dFTkVSQVRPUgpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBs
YXRlczoKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1l
IyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsg
XAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzOgog
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29i
amVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9
QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1l
IyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUo
REVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRP
UgpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzOgog
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0p
IFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29i
amVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9
QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1l
IyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3Jv
fV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9C
VUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3Rz
L2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5l
ZC5qcy1yZXN1bHQKaW5kZXggZmFmNDQ5OTFmMGNiNTdhNDJlZDk4ZjNkZTA4ZDdjYTExM2M0NDc5
ZS4uOWJiMjFkNjAzNzlmYjQ0MDI0MjI2YjdmODcwMjc1Njg1N2IwMzBlZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2Ny
aXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CkBAIC0xNTIsNyArMTUy
LDcgQEAgY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9taXNlQ29kZSA9CiAj
ZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBh
cmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2lj
KTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3Vy
Y2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KIEpTQ19GT1JF
QUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJv
bWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2Vw
YXJhdGUuanMtcmVzdWx0CmluZGV4IDYxMWFlZWY0NDk5YThmNmU4NTJiNDQ5ZjJjOWMzZTE4MDlh
ZTVlNGQuLjg3ZmRhZWUzOGVkYTY2OTc5YjJlODc5YTU0ZWRkYTNiYzRlYTEyZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTUxLDcg
KzE1MSw3IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUg
PQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJp
bnNpYyk7IH0KKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
U291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CiBKU0Nf
Rk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENv
cmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0CmluZGV4IDY4NzY4OGFiZjdi
OGY5YmI4MzdkZmU3MWNhZGUxMDMwNTU3MTg2YmYuLjZiZjY5NmZkZGQ1MTJhNWJhMzQwMTQ5OTNh
YjAwMjRlMzNiNmU2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBl
LUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1D
b21iaW5lZC5qcy1yZXN1bHQKQEAgLTE3Niw3ICsxNzYsNyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0
aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICBy
ZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5h
bWUjI0ludHJpbnNpYyk7IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFT
Y3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA5ZGFk
YzU2OGExMjA2YTUwMjE5ZDRhZjE3MTZlMGYzNTkyOGQ1MTcwLi5kMGM4ZjI2ZWYxOGE2MmVmMWZh
ZDliNzM5MDliMTEyNTkyN2NmZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnBy
b3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90
b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0xNzUsNyArMTc1LDcgQEAgY29uc3QgY2hhciog
c19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtc
Ci0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgp
LCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICByZXR1cm4gdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18j
I2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CiBKU0NfRk9SRUFDSF9CVUlMVElOLlBST1RPVFlQRV9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0
b3ItQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNv
bWJpbmVkLmpzLXJlc3VsdAppbmRleCA2N2JlZDY0OTUwMTBhYWJlNDdhNmIxM2M5ZmNlZGQ0NDYw
YWZhNzYzLi4wMjNhODI5OGM0Y2I0NTQ1YjUzYTcwNWJlN2ZmYjgyZGM3MjFjMDJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5qcy1yZXN1bHQKQEAg
LTE4OSw3ICsxODksNyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1Y3RvckZyb21Db2Rl
ID0KICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRy
aW5zaWMpOyB9CisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUj
I1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQogSlND
X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25z
dHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMDk2MjAxMzI3YTI5NmQxOWJmZTI4NDBj
ODY0Y2EyNGIwOWU0OTllYS4uODAwMGI2OTYzODQ3YzdiYjE4ZmJiNmRiMjg4MzY3YzhlYTlhZjM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpz
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMt
cmVzdWx0CkBAIC0xODgsNyArMTg4LDcgQEAgY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0
b3JGcm9tQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwg
ZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSog
Y29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMt
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJl
c3VsdAppbmRleCBiZjhhNDZjZjE4NDliMTI3ZWUzNTViNTk0ZDNjNGYxYzk5OGVkZGZhLi44Y2Ji
NTM5YmU3YTlkY2NlOGE1MTg3ZDFiMjI4Mjg3OTAxN2ExNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0
Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1lcy1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTEzOSw3
ICsxMzksNyBAQCBjb25zdCBjaGFyKiBzX2ludGVybmFsQ2xhc2hpbmdOYW1lc0lzUmVhZGFibGVT
dHJlYW1Mb2NrZWRDb2RlID0KICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18j
I2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJs
ZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50
cmluc2ljKTsgfQogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1Bbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LUFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA4
Zjg0NTExMjc4MjM3OTM1MmVjODU0ZDQ4MTJiNWU4NjQ3Mjc3ZmM5Li5hZDUzMGIyZjU1YjdmOGI2
MjU0NWNlMjcwNjRiYWM1ODkwZjViNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFub3RoZXJHdWFyZGVk
SW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFub3RoZXJHdWFy
ZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMjE0LDcgKzIxNCw3IEBA
IGNvbnN0IGNoYXIqIHNfYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5MZXRzRmV0Y2hDb2Rl
ID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlu
cygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5G
dW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5h
bWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICBy
ZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFub3RoZXJHdWFyZGVkSW50ZXJu
YWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGll
bnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5C
dWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUj
I0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9BTk9USEVSR1VBUkRFRElOVEVSTkFM
QlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRp
b25hbEd1YXJkLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3Jp
cHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5Q29uZGl0aW9uYWxH
dWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMjljZTIxODYwYTU3OTc4ZTMyMDM3NDI0OGE1
Y2Q4OTE1ZjlkOWQxMi4uZjkxYjZkOWNjZTE0NjJmY2QzYzZkMTFlNzJlNGQxOTI5MGMzMzIwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9XZWJDb3JlLUFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2VwYXJhdGUuanMtcmVz
dWx0CkBAIC0xODQsNyArMTg0LDcgQEAgY29uc3QgY2hhciogc19hcmJpdHJhcnlDb25kaXRpb25h
bEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCiAgICAgSlNWTUNsaWVu
dERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYXJiaXRyYXJ5Q29uZGl0aW9u
YWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5h
bWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLmFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRCdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRh
YmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hcmJpdHJhcnlD
b25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9w
dCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZPUkVBQ0hfQVJCSVRS
QVJZQ09ORElUSU9OQUxHVUFSRF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFy
YXRlLmpzLXJlc3VsdAppbmRleCA3YzIwMDI4ODIzMGQzNTUzYWUxYjBiZTJhMDM4OWI3ZWE1Yzcy
MzA5Li5lOTcxNzU1MWI3MDlhYWE1YjdmNTA1ZDhlMTI3OWVmMTUxODhmM2M1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJk
ZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTg0LDcgKzE4NCw3IEBAIGNvbnN0IGNo
YXIqIHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wK
ICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1
bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEJ1aWx0aW5C
dWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRy
aW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2Rl
TmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBc
CiB9CiBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJD
b3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDIyZTdh
NzQ3NmZlZTk0M2U1MWI5Y2ZhOTUwZjQ1MDhlZTkxYjg5NzkuLjAzOWNjYzEyZDI2MjhlMjE1OTMz
YTY4MWI2OTdjM2IzMzE5N2M1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGlu
LVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMjE2LDcgKzIxNiw3IEBAIGNvbnN0IGNoYXIqIHNfZ3Vh
cmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAog
ICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVu
Y3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18j
I2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5G
dW5jdGlvbnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
ICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFy
ZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2Vw
YXJhdGUuanMtcmVzdWx0CmluZGV4IGFjMTBhMTFhNTAwNGNlMzZkODRmNmIzZGJhMmYzYjQ0MjY2
ZTMzODUuLmYxZGNhY2U5ZTQ3ZTg4YTc1MDU2OThkOGVhMGNkMTBiM2Q0Mjk0NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1V
bmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTc4LDcgKzE3OCw3IEBAIGNv
bnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0K
IEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZt
KSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4
ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVuZ3Vh
cmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRp
bkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IGQ1YmU2
MmYwNzM3M2YyYTdmZWYyNzZhZGVjZWE0YmRlZTMxMDcxOTAuLmQyMTYyNmRhNDAxYjM1Y2U1NzZk
YTNmMjMxNWNjMWQ3MzhiNDMxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBh
cmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3Vs
dApAQCAtMjY3LDcgKzI2Nyw3IEBAIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5nVGVzdFVybENhc2lu
Z1Rlc3RDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVz
dEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJ
Tl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNWZkYzcyOWVlZTYzZWMwNGMwNjE5YzY3ZjUxY2JkMjJh
M2U2OWZiNi4uMTM3MDliZjFiNzQzNWNhZGIwYjdkOWI0ODNjNzNkMjdlMzEwMjQ4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKQEAgLTMyNDQsNyArMzI0NCw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwgTWFjcm9BCiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihBUk02NEFzc2VtYmxl
cjo6aW52ZXJ0KHN0YXRpY19jYXN0PEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFJlc3VsdENvbmRpdGlvbj4gY29tbXV0ZUNv
bXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9U
ZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY29u
ZCkgewogICAgICAgICBjYXNlIEVxdWFsOgpAQCAtMzI1Nyw3ICszMjU3LDcgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFSTTY0QXNz
ZW1ibGVyLCBNYWNyb0EKICAgICAgICAgICAgIHJldHVybiBQb3NpdGl2ZU9yWmVybzsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNzA0ZmUzODRlYzNlMTYwNTk3MDlmZmM1N2JkOTkwOWNj
NGQzNzllOC4uMTg3Yzk5ODllZDc2ZmVjZmM1YTM5Nzg4MDVmNTQ4Njk4NTg1YWExYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaApAQCAtMjYwNiw3ICsyNjA2LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxYODZBc3NlbWJsZXIsIE1h
Y3IKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxSZXN1bHRDb25kaXRp
b24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdENvbmRpdGlvbj4gY29tbXV0ZUNvbXBh
cmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGNvbmQpIHsKICAgICAgICAgY2FzZSBFcXVhbDoKQEAgLTI2MTksNyArMjYxOSw3
IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8WDg2QXNzZW1ibGVyLCBNYWNyCiAgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVP
clplcm87CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hl
Y2tTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5j
cHAKaW5kZXggODY2MWJiZDVjYzdhZGFiM2I1YTVkMmZiZTIzMDYwZGIxYzA3OTU3OC4uNmY3ODI2
Y2I1ZjlkZjRjODk5MWVjZTBhNThkNjcxOTgyZGNmMDU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBDaGVj
a1NwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6
OkVhY2hBcmdDYWxsYmEKICAgICAgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1sxICsgaW5kZXhd
LCByb2xlLCB0eXBlLCB3aWR0aCk7CiAgICAgICAgIH0pOwogCi0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBm
aXJzdFJlY292ZXJhYmxlSW5kZXg7CiAgICAgaWYgKG1fY2hlY2tLaW5kLm9wY29kZSA9PSBCcmFu
Y2hBZGQzMiB8fCBtX2NoZWNrS2luZC5vcGNvZGUgPT0gQnJhbmNoQWRkNjQpCiAgICAgICAgIGZp
cnN0UmVjb3ZlcmFibGVJbmRleCA9IDE7CiAgICAgZm9yRWFjaEFyZ0ltcGwobnVtQjNBcmdzKGlu
c3QpLCBtX251bUNoZWNrQXJncyArIDEsIGluc3QsIG1fc3RhY2ttYXBSb2xlLCBmaXJzdFJlY292
ZXJhYmxlSW5kZXgsIGNhbGxiYWNrKTsKQEAgLTEzNSwxMSArMTM1LDExIEBAIGJvb2wgQ2hlY2tT
cGVjaWFsOjphZG1pdHNTdGFjayhJbnN0JiBpbnN0LCB1bnNpZ25lZCBhcmdJbmRleCkKICAgICBy
ZXR1cm4gYWRtaXRzU3RhY2tJbXBsKG51bUIzQXJncyhpbnN0KSwgbV9udW1DaGVja0FyZ3MgKyAx
LCBpbnN0LCBhcmdJbmRleCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBDaGVja1NwZWNpYWw6
OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGluc3QpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBDaGVja1NwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGluc3QpCiB7Ci0gICAg
aWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBicmFuY2hEZWYgPSBoaWRkZW5CcmFuY2goaW5zdCkuc2hv
dWxkVHJ5QWxpYXNpbmdEZWYoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnJh
bmNoRGVmID0gaGlkZGVuQnJhbmNoKGluc3QpLnNob3VsZFRyeUFsaWFzaW5nRGVmKCkpCiAgICAg
ICAgIHJldHVybiAqYnJhbmNoRGVmICsgMTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpn
ZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlvbkNvbnRleHQm
IGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1Nw
ZWNpYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCmluZGV4
IGFlYzE4OTcxNWVjMDRmM2UwYmU5NDliZDM4NmZjZmUwYTc1OTNhY2QuLmFhN2YyZmVhYjljODQx
NTk4YzgxYTNhNTQxZTU5N2MzYzgzNGZiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NoZWNrU3BlY2lhbC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgY2xhc3MgQ2hlY2tTcGVjaWFsIDog
cHVibGljIFN0YWNrbWFwU3BlY2lhbCB7CiAgICAgdm9pZCBmb3JFYWNoQXJnKEFpcjo6SW5zdCYs
IGNvbnN0IFNjb3BlZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mKSBvdmVycmlk
ZTsKICAgICBib29sIGlzVmFsaWQoQWlyOjpJbnN0Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBhZG1p
dHNTdGFjayhBaXI6Okluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEFpcjo6SW5zdCYpIG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEFpcjo6
SW5zdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gTk9URTogdGhlIGdlbmVyYXRlIG1ldGhvZCB3aWxs
IGdlbmVyYXRlIHRoZSBoaWRkZW4gYnJhbmNoIGFuZCB0aGVuIHJlZ2lzdGVyIGEgTGF0ZVBhdGgg
dGhhdAogICAgIC8vIGdlbmVyYXRlcyB0aGUgc3RhY2ttYXAuIFN1cGVyIGNyYXp5IGR1ZGUhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDFjZTc2NjQ1NmZm
NzdjZTQ5ZGMzNjVmMTk1MDhiNDFhYTU0ZWIwMTcuLjc2NWVkZTk1ODJkNTA0ZGI2YTczMWNjZTU5
NDRlNWMwN2E4ZDJhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCkBAIC00MjcsMTIgKzQyNywxMiBAQCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZUZvclNo
bChWYWx1ZSogc2hsLCBpbnQzMl90IG9mZnNldCwgT3B0aW9uYWw8QXJnOjpXaWR0aD4gd2lkdGgg
PSBOdWxsb3B0KQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVl
KiBzaGwsIGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEFyZzo6V2lkdGg+IHdpZHRoID0g
c3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKHNobC0+b3Bjb2RlKCkgIT0gU2hsKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBpZiAoIXNobC0+Y2hpbGQoMSktPmhhc0ludDMyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHVuc2lnbmVkIGxvZ1NjYWxlID0gc2hsLT5jaGlsZCgxKS0+YXNJbnQzMigpOwogICAgICAg
ICBpZiAoc2hsLT50eXBlKCkgPT0gSW50MzIpCiAgICAgICAgICAgICBsb2dTY2FsZSAmPSAzMTsK
QEAgLTQ0MiwxMCArNDQyLDEwIEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgICAgICAvLyB0byBz
aWduZWQgc2luY2UgdGhhdCdzIHdoYXQgYWxsIG9mIG91ciBBUElzIHdhbnQuCiAgICAgICAgIGlu
dDY0X3QgYmlnU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGxvZ1NjYWxlKTsKICAgICAgICAgaWYgKCFpc1JlcHJlc2VudGFibGVBczxpbnQz
Ml90PihiaWdTY2FsZSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHVuc2lnbmVkIHNjYWxlID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oYmlnU2NhbGUpOwogICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZEluZGV4Rm9y
bShzY2FsZSwgb2Zmc2V0LCB3aWR0aCkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBzY2FsZTsKICAg
ICB9CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICAgICAgICAg
IFZhbHVlKiByaWdodCA9IGFkZHJlc3MtPmNoaWxkKDEpOwogCiAgICAgICAgICAgICBhdXRvIHRy
eUluZGV4ID0gWyZdIChWYWx1ZSogaW5kZXgsIFZhbHVlKiBiYXNlKSAtPiBBcmcgewotICAgICAg
ICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKGluZGV4LCBv
ZmZzZXQsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBz
Y2FsZSA9IHNjYWxlRm9yU2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIXNjYWxlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJnKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgwKSkgfHwgbV9sb2Nr
ZWQuY29udGFpbnMoYmFzZSkpCkBAIC0xOTM0LDcgKzE5MzQsNyBAQCBjbGFzcyBMb3dlclRvQWly
IHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYXV0byB0cnlTaGwgPSBbJl0gKFZhbHVl
KiBzaGwsIFZhbHVlKiBvdGhlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChzaGwsIG9mZnNldCk7CisgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKHNobCwgb2Zmc2V0KTsKICAg
ICAgICAgICAgIGlmICghc2NhbGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKHNobCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmNwcAppbmRleCAwMjA4YjMzOWQyYmE0NWYyMjRhOGJiMTVhNmI3MzI3NzlhNTA0Mzg1
Li5kNTE2MmEwY2IwOTRlYjU2ODMwYjIxYzFkYTBlNWFhMjE5NzM1M2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKLU9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9w
Y29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKK3N0ZDo6b3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRlZENv
bXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAob3Bjb2RlKSB7
CiAgICAgY2FzZSBFcXVhbDoKQEAgLTQyLDE5ICs0MiwxOSBAQCBPcHRpb25hbDxPcGNvZGU+IGlu
dmVydGVkQ29tcGFyZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUpCiAgICAgY2FzZSBMZXNzVGhh
bjoKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJF
cXVhbDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAg
ICAgICAgICAgcmV0dXJuIExlc3NFcXVhbDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBMZXNzRXF1YWw6CiAgICAgICAgIGlm
IChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBH
cmVhdGVyRXF1YWw6CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIHJldHVy
biBMZXNzVGhhbjsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgY2FzZSBBYm92ZToKICAgICAgICAgcmV0dXJuIEJlbG93RXF1YWw7CiAg
ICAgY2FzZSBCZWxvdzoKQEAgLTY0LDcgKzY0LDcgQEAgT3B0aW9uYWw8T3Bjb2RlPiBpbnZlcnRl
ZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgQmVsb3dFcXVhbDoK
ICAgICAgICAgcmV0dXJuIEFib3ZlOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCBmYjUxZTk0MTJiODkzZmRmNjg3NmIyNzI2NzgzMzg5
MTk5NDc2ZDY1Li5mYTU4YmZmY2VjMGRjOTA1YmU5ZTY0MWJmNmZjOTdiYTlmNjc0YWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtMjYwLDcgKzI2MCw3IEBAIGlubGluZSBi
b29sIGlzQ2hlY2tNYXRoKE9wY29kZSBvcGNvZGUpCiAgICAgfQogfQogCi1PcHRpb25hbDxPcGNv
ZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOworc3RkOjpvcHRpb25hbDxPcGNvZGU+
IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOwogCiBpbmxpbmUgT3Bjb2RlIGNvbnN0UHRy
T3Bjb2RlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNo
cG9pbnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRT
cGVjaWFsLmNwcAppbmRleCA3MWFkYWM5ZDJhOTgzY2M5Y2ZiYjlmODcxYjk1NDRkZTFkMmMwMzQz
Li5jNWZjNTg4NWQzYWNhZjg5NWM4YzljMDFkYWY4ODI3MWQ2YzFlMjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIHZvaWQgUGF0Y2hwb2ludFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29u
c3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDCiAgICAgICAgIGNhbGxiYWNrKGluc3QuYXJn
c1thcmdJbmRleCsrXSwgcm9sZSwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSwgaW5zdC5vcmlnaW4t
PmFpcldpZHRoKCkpOwogICAgIH0KIAotICAgIGZvckVhY2hBcmdJbXBsKDAsIGFyZ0luZGV4LCBp
bnN0LCBTYW1lQXNSZXAsIE51bGxvcHQsIGNhbGxiYWNrKTsKKyAgICBmb3JFYWNoQXJnSW1wbCgw
LCBhcmdJbmRleCwgaW5zdCwgU2FtZUFzUmVwLCBzdGQ6Om51bGxvcHQsIGNhbGxiYWNrKTsKICAg
ICBhcmdJbmRleCArPSBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgaS0tOykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCmluZGV4IDhjZjgx
ZDAzN2ExYzkwZmIwOGM4MjU3MTc4MmM3YmY4NTBmYjc2NDEuLmI1YWE2YzNmZmVjMDg5OTE2OWYx
Njk4NTQwMGU3MDc4MzZiYWQ1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3RhY2ttYXBTcGVjaWFsLmNwcApAQCAtNzMsNyArNzMsNyBAQCBSZWdpc3RlclNldCBTdGFja21h
cFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3QpCiAKIHZvaWQgU3Rh
Y2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCgKICAgICB1bnNpZ25lZCBudW1JZ25vcmVkQjNB
cmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywKLSAgICBJbnN0JiBpbnN0LCBSb2xlTW9k
ZSByb2xlTW9kZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwKKyAg
ICBJbnN0JiBpbnN0LCBSb2xlTW9kZSByb2xlTW9kZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Zmlyc3RSZWNvdmVyYWJsZUluZGV4LAogICAgIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNo
QXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKICAgICBTdGFja21hcFZhbHVlKiB2YWx1ZSA9IGlu
c3Qub3JpZ2luLT5hczxTdGFja21hcFZhbHVlPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNTdGFja21hcFNwZWNpYWwuaAppbmRleCBiZDZhM2I1NDc0ODk4NzY1OTNlNTUxZDZlMjgx
YjNkYmJjNjc3YTE3Li45N2EwODEzZDFkYzU4MTllMGIxNzgyNGU3MGZiZThkNDkyMDkyYjY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaApAQCAtNTks
NyArNTksNyBAQCBjbGFzcyBTdGFja21hcFNwZWNpYWwgOiBwdWJsaWMgQWlyOjpTcGVjaWFsIHsK
ICAgICAvLyBzdWJjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoYXQuCiAgICAgdm9pZCBmb3JFYWNo
QXJnSW1wbCgKICAgICAgICAgdW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywgdW5zaWduZWQgbnVt
SWdub3JlZEFpckFyZ3MsCi0gICAgICAgIEFpcjo6SW5zdCYsIFJvbGVNb2RlLCBPcHRpb25hbDx1
bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4LAorICAgICAgICBBaXI6Okluc3QmLCBSb2xl
TW9kZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4LAogICAg
ICAgICBjb25zdCBTY29wZWRMYW1iZGE8QWlyOjpJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+Jik7CiAg
ICAgCiAgICAgYm9vbCBpc1ZhbGlkSW1wbCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAppbmRleCAzZWM0NDg3MGI5ZmJmN2JiZmZiNjVmMGRhMDVlNzNlNGY4MDQwYmZmLi43ZGVlYWE5
OTMwOTIyNDAzOGQ2NTc0Mjg1MDk2MDdhZmQ4YWEwYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuY3BwCkBAIC00MzcsNyArNDM3LDcgQEAgVmFsdWUqIFZhbHVlOjppbnZlcnRlZENv
bXBhcmUoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogewogICAgIGlmICghbnVtQ2hpbGRyZW4oKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKE9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0
ZWRPcGNvZGUgPSBCMzo6aW52ZXJ0ZWRDb21wYXJlKG9wY29kZSgpLCBjaGlsZCgwKS0+dHlwZSgp
KSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRPcGNvZGUgPSBCMzo6
aW52ZXJ0ZWRDb21wYXJlKG9wY29kZSgpLCBjaGlsZCgwKS0+dHlwZSgpKSkgewogICAgICAgICBB
U1NFUlQoIWtpbmQoKS5oYXNFeHRyYUJpdHMoKSk7CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxW
YWx1ZT4oKmludmVydGVkT3Bjb2RlLCB0eXBlKCksIG9yaWdpbigpLCBjaGlsZHJlbigpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCAyZTllNTdkNmNlMTFk
MGY0MDkwZTIwMmI4ZTRiNWY5ZjVjNmY1YzZkLi4xM2RiMWNlN2VmOTc4Y2RhYjcxYjdhZjM3YzUy
MWZkOGEyOGE4Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKQEAgLTU0
NSw3ICs1NDUsNyBAQCBjbGFzcyBBcmcgewogICAgIH0KIAogICAgIC8vIElmIHlvdSBkb24ndCBw
YXNzIGEgV2lkdGgsIHRoaXMgb3B0aW1pc3RpY2FsbHkgYXNzdW1lcyB0aGF0IHlvdSdyZSB1c2lu
ZyB0aGUgcmlnaHQgd2lkdGguCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFNjYWxlKHVuc2lnbmVk
IHNjYWxlLCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBOdWxsb3B0KQorICAgIHN0YXRpYyBib29s
IGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgc3RkOjpvcHRpb25hbDxXaWR0aD4gd2lkdGgg
PSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHNjYWxlKSB7CiAgICAgICAg
IGNhc2UgMToKQEAgLTEwODUsNyArMTA4NSw3IEBAIGNsYXNzIEFyZyB7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRkckZvcm0oaW50MzJf
dCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IE51bGxvcHQpCisgICAgc3RhdGljIGJv
b2wgaXNWYWxpZEFkZHJGb3JtKGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3
aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChpc1g4NigpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCBjbGFzcyBBcmcgewogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEluZGV4
Rm9ybSh1bnNpZ25lZCBzY2FsZSwgaW50MzJfdCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0
aCA9IE51bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEluZGV4Rm9ybSh1bnNpZ25lZCBz
Y2FsZSwgaW50MzJfdCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpu
dWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkU2NhbGUoc2NhbGUsIHdpZHRoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMjQsNyArMTEyNCw3IEBAIGNsYXNzIEFy
ZyB7CiAgICAgLy8gSWYgeW91IGRvbid0IHBhc3MgYSB3aWR0aCB0aGVuIHRoaXMgb3B0aW1pc3Rp
Y2FsbHkgYXNzdW1lcyB0aGF0IHlvdSdyZSB1c2luZyB0aGUgcmlnaHQgd2lkdGguIEJ1dAogICAg
IC8vIHRoZSB3aWR0aCBpcyByZWxldmFudCB0byB2YWxpZGl0eSwgc28gcGFzc2luZyBhIG51bGwg
d2lkdGggaXMgb25seSB1c2VmdWwgZm9yIGFzc2VydGlvbnMuIERvbid0CiAgICAgLy8gcGFzcyBu
dWxsIHdpZHRocyB3aGVuIGNhc2NhZGluZyB0aHJvdWdoIEFyZ3MgaW4gdGhlIGluc3RydWN0aW9u
IHNlbGVjdG9yIQotICAgIGJvb2wgaXNWYWxpZEZvcm0oT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0g
TnVsbG9wdCkgY29uc3QKKyAgICBib29sIGlzVmFsaWRGb3JtKHN0ZDo6b3B0aW9uYWw8V2lkdGg+
IHdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChraW5k
KCkpIHsKICAgICAgICAgY2FzZSBJbnZhbGlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ3VzdG9tLmgKaW5kZXggYjBkNTVjZGZhYzM1MDlhZDAzOTNhNDFmMDFlNWFmYTg1N2Y4NjU1
MC4uNjQ0YjdhMWIyOWUwZWNjZTM5NjM4ZmJjMmZmNTlhM2NmMTlmODMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCkBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCBQ
YXRjaEN1c3RvbSB7CiAgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uc3BlY2lhbCgpLT5hZG1p
dHNTdGFjayhpbnN0LCBhcmdJbmRleCk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPHVu
c2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQorICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIGluc3QuYXJnc1swXS5zcGVjaWFsKCktPnNob3VsZFRyeUFsaWFz
aW5nRGVmKGluc3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IGVjODlhYzUyZjQzYzhmZjdjNTcxYmU3
NGViZTE4M2M5YWYzMDU5ZjcuLmQwMDBkNmM1ZDNiMjJiZDFkOTM0MDIwZjQwMjAxYTVkMjAwNmJm
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91
c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZp
b3VzU3BpbGxzLmNwcApAQCAtMTI5LDEyICsxMjksMTIgQEAgY2xhc3MgRml4T2J2aW91c1NwaWxs
cyB7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzFdKSkK
ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhTbG90Q29uc3QoaW5zdC5hcmdz
WzFdLnN0YWNrU2xvdCgpLCBpbnN0LmFyZ3NbMF0udmFsdWUoKSkpOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMF0pICYmIGluc3QuYXJnc1sxXS5pc1JlZygp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9z
dGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAgICAgICAgIGlmIChzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFy
Z3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFzKFJlZ0NvbnN0KGlu
c3QuYXJnc1sxXS5yZWcoKSwgKmNvbnN0YW50KSk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5h
ZGRBbGlhcygKICAgICAgICAgICAgICAgICAgICAgUmVnU2xvdChpbnN0LmFyZ3NbMV0ucmVnKCks
IGluc3QuYXJnc1swXS5zdGFja1Nsb3QoKSwgUmVnU2xvdDo6QWxsQml0cykpOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChpbnN0LmFyZ3NbMF0uaXNSZWcoKSAmJiBpc1NwaWxsU2xvdChpbnN0LmFy
Z3NbMV0pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50
ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAgICAgICAgIGlm
IChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihp
bnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFzKFNsb3RD
b25zdChpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksICpjb25zdGFudCkpOwogICAgICAgICAgICAg
ICAgIG1fc3RhdGUuYWRkQWxpYXMoCiAgICAgICAgICAgICAgICAgICAgIFJlZ1Nsb3QoaW5zdC5h
cmdzWzBdLnJlZygpLCBpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksIFJlZ1Nsb3Q6OkFsbEJpdHMp
KTsKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGNsYXNzIEZpeE9idmlvdXNTcGlsbHMgewogICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzU3BpbGxTbG90KGluc3QuYXJnc1sxXSkpCiAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoU2xvdENvbnN0KGluc3QuYXJnc1sxXS5zdGFja1Ns
b3QoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGluc3QuYXJnc1swXS52YWx1ZSgpKSkpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMF0pICYmIGluc3QuYXJn
c1sxXS5pc1JlZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+IGNv
bnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAgICAg
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFu
dEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFz
KFJlZ0NvbnN0KGluc3QuYXJnc1sxXS5yZWcoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpjb25z
dGFudCkpKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFzKAogICAgICAgICAgICAg
ICAgICAgICBSZWdTbG90KGluc3QuYXJnc1sxXS5yZWcoKSwgaW5zdC5hcmdzWzBdLnN0YWNrU2xv
dCgpLCBSZWdTbG90OjpaRXh0MzIpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5zdC5hcmdz
WzBdLmlzUmVnKCkgJiYgaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzFdKSkgewotICAgICAgICAgICAg
ICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3Io
aW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ2NF90
PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKICAgICAgICAg
ICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhTbG90Q29uc3QoaW5zdC5hcmdzWzFdLnN0YWNr
U2xvdCgpLCBzdGF0aWNfY2FzdDxpbnQzMl90PigqY29uc3RhbnQpKSk7CiAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5hZGRBbGlhcygKICAgICAgICAgICAgICAgICAgICAgUmVnU2xvdChpbnN0LmFy
Z3NbMF0ucmVnKCksIGluc3QuYXJnc1sxXS5zdGFja1Nsb3QoKSwgUmVnU2xvdDo6TWF0Y2gzMikp
OwpAQCAtNDU0LDE5ICs0NTQsMTkgQEAgY2xhc3MgRml4T2J2aW91c1NwaWxscyB7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPGludDY0
X3Q+IGNvbnN0YW50Rm9yKGNvbnN0IEFyZyYgYXJnKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPGlu
dDY0X3Q+IGNvbnN0YW50Rm9yKGNvbnN0IEFyZyYgYXJnKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoYXJnLmlzUmVnKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3QgUmVnQ29uc3Qq
IGFsaWFzID0gZ2V0UmVnQ29uc3QoYXJnLnJlZygpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGFsaWFzLT5jb25zdGFudDsKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGFyZy5pc1N0YWNrKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3QgU2xv
dENvbnN0KiBhbGlhcyA9IGdldFNsb3RDb25zdChhcmcuc3RhY2tTbG90KCkpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gYWxpYXMtPmNvbnN0YW50OwotICAgICAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGNsb2JiZXIoY29uc3QgQXJn
JiBhcmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCmluZGV4IDMwZjI0ZDg2
NGJjZGZmMGRhZGE3NGFhZDc0NWEyOWJiM2ExMTQ3ZjMuLmYzOGMyMWRmODRhODM4ZjliMmZkNDdk
OGMzZDM2MDg3NmFkYmVjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlySW5zdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5o
CkBAIC0xOTAsNyArMTkwLDcgQEAgc3RydWN0IEluc3QgewogICAgIC8vIEZvciBleGFtcGxlLAog
ICAgIC8vICAgICBBZGQgVG1wMSwgVG1wMiwgVG1wMwogICAgIC8vIHJldHVybnMgMiBpZiAwIGFu
ZCAxIGJlbmVmaXQgZnJvbSBhbGlhc2luZyB0byBUbXAzLgotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBzaG91bGRUcnlBbGlhc2luZ0RlZigpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNo
b3VsZFRyeUFsaWFzaW5nRGVmKCk7CiAgICAgCiAgICAgLy8gVGhpcyBjb21wdXRlcyBhIGhhc2gg
Zm9yIGNvbXBhcmluZyB0aGlzIHRvIEpTQWlyJ3MgSW5zdC4KICAgICB1bnNpZ25lZCBqc0hhc2go
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5z
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMu
aAppbmRleCBiZTExNjA1MDhjNzVlY2JmZWY3Yjg1MGQxYmRhODUxYmE4YmEwNDNjLi4zNzI5YTQ1
NWI1ODExMzQ3MjliZmI2ZTA1ZGQyNzdlZDlhMDBkN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBpbmxp
bmUgYm9vbCBJbnN0OjphZG1pdHNTdGFjayhBcmcmIGFyZykKICAgICByZXR1cm4gYWRtaXRzU3Rh
Y2soJmFyZyAtICZhcmdzWzBdKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBJbnN0
OjpzaG91bGRUcnlBbGlhc2luZ0RlZigpCitpbmxpbmUgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
SW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKQogewogICAgIGlmICghaXNYODYoKSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBz
d2l0Y2ggKGtpbmQub3Bjb2RlKSB7CiAgICAgY2FzZSBBZGQzMjoKQEAgLTE0MCw3ICsxNDAsNyBA
QCBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFsaWFzaW5nRGVmKCkK
ICAgICBjYXNlIE11bEZsb2F0OgogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAg
IGlmIChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNBVlgoKSkKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgICAg
ICBpZiAoYXJncy5zaXplKCkgPT0gMykKICAgICAgICAgICAgIHJldHVybiAyOwpAQCAtMTcxLDcg
KzE3MSw3IEBAIGlubGluZSBPcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNp
bmdEZWYoKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgYm9vbCBpc1No
aWZ0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKaW5k
ZXggOTRkNjI5MTg4ZmE1NTRjMzhkYTVkN2UwMzVjZWFmODM3MWNjNmU4ZS4uYmQxYTVjNzk2MmIz
MmQwODcwMjA2Y2QyMDU1ZTY2ZmM4MTNlMThkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5j
cHAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIGNsYXNzIENvbG9yaW5nQWxsb2NhdG9yIDogcHVibGlj
IEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+IHsKICAgICAgICAgbV93b3JrbGlz
dE1vdmVzLnN0YXJ0QWRkaW5nTG93UHJpb3JpdHlNb3ZlcygpOwogICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CiAgICAgICAgICAgICBmb3IgKEluc3QmIGluc3QgOiAq
YmxvY2spIHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGRlZkFyZ0lu
ZGV4ID0gaW5zdC5zaG91bGRUcnlBbGlhc2luZ0RlZigpKSB7CisgICAgICAgICAgICAgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRlZkFyZ0luZGV4ID0gaW5zdC5zaG91bGRUcnlBbGlh
c2luZ0RlZigpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFyZyBvcDEgPSBpbnN0LmFyZ3NbKmRl
ZkFyZ0luZGV4IC0gMl07CiAgICAgICAgICAgICAgICAgICAgIEFyZyBvcDIgPSBpbnN0LmFyZ3Nb
KmRlZkFyZ0luZGV4IC0gMV07CiAgICAgICAgICAgICAgICAgICAgIEFyZyBkZXN0ID0gaW5zdC5h
cmdzWypkZWZBcmdJbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVj
aWFsLmNwcAppbmRleCAwYTcyMmU4MTBhNTZkNTQ1NWMxMmFkMDExZTEzNzVmOGViMzI3ZTI5Li5l
ODI1NzY3YjA0ZDhhYjNiOWNlYzc1YWY0ZTkxOTgwYTg5MjkwNTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgQ1N0cmlu
ZyBTcGVjaWFsOjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwogfQog
Ci1PcHRpb25hbDx1bnNpZ25lZD4gU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYp
CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJ
bnN0JikKIHsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBib29sIFNwZWNpYWw6OmlzVGVybWluYWwoSW5zdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BlY2lhbC5oCmluZGV4IDZjMTBjYjU3ZjliNGNiOWU5OGNiMjg1ZTY2NzU1
YmFkZjIzMTZjZTkuLjQ4MGNiZmNiYTU4ZmRkZTgxMTYzNmQ4NmYyNjdiNTFjOGE2YzhiZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCkBAIC01NSw3ICs1NSw3
IEBAIGNsYXNzIFNwZWNpYWwgewogICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQXJnKEluc3QmLCBj
b25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZChJbnN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhZG1pdHNTdGFj
ayhJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPHVu
c2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7CisgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7CiAKICAgICAvLyBU
aGlzIGdldHMgY2FsbGVkIG9uIGZvciBlYWNoIEluc3QgdGhhdCB1c2VzIHRoaXMgU3BlY2lhbC4g
Tm90ZSB0aGF0IHRoZXJlIGlzIG5vIHdheSB0bwogICAgIC8vIGd1YXJhbnRlZSB0aGF0IGEgU3Bl
Y2lhbCBnZXRzIHVzZWQgZnJvbSBqdXN0IG9uZSBJbnN0LCBiZWNhdXNlIEFpciBtaWdodCB0YWls
ZHVwIGxhdGUuIFNvLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggOTU5MDNlMjFlYmRm
MTk0MGE5ZmQwNzgzYjEwZjgyZjJiYTdmYjdiMy4uZjdlMWU5YTNkNmQ5YmU4ZTg3M2M2ZjcyODA4
NTE1ODE1NDFmYmE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gewogCiAgICAgICAgIGlmICht
X3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgICAgIG1fc3RvcmFnZXMucmVzaXpl
KGluZGV4ICsgMSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBzdG9yYWdlID0gbV9z
dG9yYWdlc1tpbmRleF0pCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPFN0b3JhZ2U+IHN0b3Jh
Z2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKICAgICAgICAgICAgIHJldHVybiAqc3RvcmFnZTsKIAog
ICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiB7
CiAKICAgICB1bnNpZ25lZCBtX2VudGVyUG9pbnQgeyAwIH07CiAgICAgQnl0ZWNvZGVHcmFwaDxV
bmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKLSAgICBWZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+
IG1fc3RvcmFnZXM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFn
ZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwogICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlOwogICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggMTA2N2IyMjY4ODFjMjFjYTVhNWM5NTExOTkzYzFiY2MzZjMzYTFmOS4uMGY2Y2Y4NDNk
ZmU4YTA5ZDRjOWUyMjY1ZmJjNWUwYzZjZWM5MjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ1MjUsMjkgKzQ1MjUsMjkgQEAgdm9pZCBD
b2RlQmxvY2s6OnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9y
aWdpbk1hcD4mJiBtYXApCiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcCA9IFdURk1vdmUobWFwKTsK
IH0KIAotT3B0aW9uYWw8Q29kZU9yaWdpbj4gQ29kZUJsb2NrOjpmaW5kUEModm9pZCogcGMpCitz
dGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBjKQogewog
ICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxDb2Rl
T3JpZ2luPiBjb2RlT3JpZ2luID0gbV9wY1RvQ29kZU9yaWdpbk1hcC0+ZmluZFBDKHBjKSkKKyAg
ICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IG1fcGNUb0Nv
ZGVPcmlnaW5NYXAtPmZpbmRQQyhwYykpCiAgICAgICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsK
ICAgICB9CiAKICAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIGl0ZXIg
PSBtX3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewogICAgICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YiA9ICppdGVyOwogICAgICAgICBpZiAoc3R1Yi0+Y29udGFpbnNQQyhw
YykpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdpbj4oc3R1Yi0+Y29kZU9y
aWdpbik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihzdHVi
LT5jb2RlT3JpZ2luKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8Q29kZU9yaWdpbj4gY29k
ZU9yaWdpbiA9IG1faml0Q29kZS0+ZmluZFBDKHRoaXMsIHBjKSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gbV9qaXRDb2RlLT5maW5kUEModGhpcywgcGMp
KQogICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotT3B0aW9u
YWw8dW5zaWduZWQ+IENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXRGcm9tQ2FsbFNpdGVJbmRleChD
YWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBDb2Rl
QmxvY2s6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBjYWxs
U2l0ZUluZGV4KQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldDsKICAgICBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUgPSB0aGlzLT5qaXRUeXBlKCk7CiAgICAgaWYgKGppdFR5cGUgPT0gSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklU
KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAppbmRleCA5ODhkYjAzZGZiMGI3YjUyYjM3YWE1YjMyYzg3ZGU5OTc4YzJkZWJm
Li4wYTZmZjUzZDU1OWM0YmRlMDJlMWFhOWVhOGU0MWM1NjI1NjJkODVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMzIsNyArMjMyLDcgQEAgY2xh
c3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBleHByZXNzaW9uUmFuZ2VG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50JiBkaXZvdCwKICAg
ICAgICAgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2lnbmVkJiBsaW5lLCB1
bnNpZ25lZCYgY29sdW1uKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29k
ZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOworICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRl
eCk7CiAKICAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
LCBTdHViSW5mb01hcCYgcmVzdWx0KTsKICAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJbmZv
TWFwJiByZXN1bHQpOwpAQCAtODg2LDcgKzg4Niw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lkIHNldFBDVG9Db2RlT3JpZ2lu
TWFwKHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJik7Ci0gICAgT3B0aW9uYWw8
Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmln
aW4+IGZpbmRQQyh2b2lkKiBwYyk7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAKaW5kZXggYTJiM2UyYTc1MDlhNDZjMzczOTAzNWFkNzA4ZWI0OWY0ODI5OTVi
Yy4uMzE3N2IyNzBiZDUyOTY4YjVhNWMwN2FhYjBmNDNhZjc1Y2RkY2JiMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG8KICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdCk7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBvd25lclNvdXJjZSwgT3B0
aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIsIEludHJpbnNpYyBpbnRyaW5zaWMpCitGdW5j
dGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgb3duZXJTb3VyY2UsIHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVycmlk
ZUxpbmVOdW1iZXIsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgU291cmNlQ29kZSBzb3Vy
Y2UgPSBtX3NvdXJjZU92ZXJyaWRlID8gU291cmNlQ29kZShtX3NvdXJjZU92ZXJyaWRlKSA6IG93
bmVyU291cmNlOwogICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJzdExpbmUoKSAr
IG1fZmlyc3RMaW5lT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZjU1OGNmN2E5
NzRjODUzMzNiYTg1MjMwMDIxOGZlMjMxMjJlMTY1Li5iZjNjNTI4OGJjYmIwM2VkMmI5OWQxMWY5
ZTk3MGI1Nzc2NTk1NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTA2LDcgKzEwNiw3
IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBTb3VyY2VD
b2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIAogICAgICAgICBpbnQgb3ZlcnJpZGVMaW5lTnVt
YmVyKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGluayhW
TSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9
IE51bGxvcHQsIEludHJpbnNpYyA9IE5vSW50cmluc2ljKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgc3RkOjpv
cHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9IHN0ZDo6bnVsbG9wdCwgSW50cmluc2lj
ID0gTm9JbnRyaW5zaWMpOwogCiAgICAgdm9pZCBjbGVhckNvZGUoKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAppbmRleCA3YzAxNzI5MTYzNTFjZmEwYzRmMzg1MzRiODZlNGNlNWVlNzFjNjEyLi4wYmJkMzE3
ZDY1NDcxMmZiOWVlN2U1NWRhODA0NDUzYTAyYTI2YTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC05MDUs
NyArOTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAgICAgICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBURFpOZWNlc3NpdHlMZXZlbCwgSWRl
bnRpZmllclJlcEhhc2g+IFREWk1hcDsKICAgICAgICAgVmVjdG9yPFREWk1hcD4gbV9URFpTdGFj
azsKLSAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlU3ltYm9sVGFibGVJbmRleDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVTeW1ib2xUYWJsZUluZGV4
OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7CiAKICAgICAgICAgU2Nv
cGVOb2RlKiBjb25zdCBtX3Njb3BlTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBlZjJjNWU2MDI0ZTQxNTQ0NDE2
MmJkZmQ1ZmVlZWE4NTA1ODRjZmIwLi44NDJiY2UyZGE2ZWIyN2QzNDM3Yjg5MWY2MDQzODhmZTg5
MTlkNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoY29uc3QgYXV0byogaWRlbnRpZmll
ciA9IG5vZGUubmFtZSgpKSB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbElu
ZGV4ID0gcGFyc2VJbmRleCgqaWRlbnRpZmllcik7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KCppZGVudGlmaWVyKTsKICAgICAgICAg
aWYgKCFvcHRpb25hbEluZGV4KSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1
dEJ5SWQobmV3T2JqLCAqaWRlbnRpZmllciwgdmFsdWUuZ2V0KCksIG5vZGUucHV0VHlwZSgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5MzcsNyArMzkzNyw3IEBAIHZvaWQgT2JqZWN0UGF0
dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiByaHMpCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgICAgICBpZiAoIXRhcmdldC5wcm9wZXJ0eUV4cHJlc3Npb24pIHsK
ICAgICAgICAgICAgIC8vIFNob3VsZCBub3QgZW1pdCBnZXRfYnlfaWQgZm9yIGluZGV4ZWQgb25l
cy4KLSAgICAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJ
bmRleCh0YXJnZXQucHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHRhcmdldC5wcm9wZXJ0eU5hbWUpOwog
ICAgICAgICAgICAgaWYgKCFvcHRpb25hbEluZGV4KQogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0QnlJZCh0ZW1wLmdldCgpLCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOwogICAg
ICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcAppbmRleCBhNDNmYTI0MWJkNzY0NjliZjhjNGIwOTFjNGJmMmZhMTVmZTY0NDA4Li42MGQy
MjNlY2EwZDRhODBlYzFhNDNhNjZlNzUzOTNiMmFkYTA0OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIERl
YnVnZ2VyOjpyZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50LCBTb3VyY2VQ
cm92aWRlciogc291cmNlUAogICAgIHVuc2lnbmVkIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1u
ID8gYnJlYWtwb2ludC5jb2x1bW4gOiBCcmVha3BvaW50Ojp1bnNwZWNpZmllZENvbHVtbjsKIAog
ICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNlRGF0YShicmVh
a3BvaW50LnNvdXJjZUlELCBzb3VyY2VQcm92aWRlcik7Ci0gICAgT3B0aW9uYWw8SlNUZXh0UG9z
aXRpb24+IHJlc29sdmVkUG9zaXRpb24gPSBwYXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJlYWtw
b2ludExvY2F0aW9uRm9yTGluZUNvbHVtbigoaW50KWxpbmUsIChpbnQpY29sdW1uKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiByZXNvbHZlZFBvc2l0aW9uID0gcGFyc2VEYXRh
LnBhdXNlUG9zaXRpb25zLmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oKGludClsaW5l
LCAoaW50KWNvbHVtbik7CiAgICAgaWYgKCFyZXNvbHZlZFBvc2l0aW9uKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJD
YWxsRnJhbWUuY3BwCmluZGV4IGRiM2M1MWRiYWMxZmZkNGM5NDQxNDNkOWQ4MDNiMGYxZmI1Njc2
MDAuLmY4ODNlMTZkNTMwZTRlYjg4YjRmMTNmNDcwNTEyY2UyNTc2MGNmNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcApA
QCAtMjkwLDcgKzI5MCw3IEBAIFRleHRQb3NpdGlvbiBEZWJ1Z2dlckNhbGxGcmFtZTo6Y3VycmVu
dFBvc2l0aW9uKCkKIAogICAgIGlmIChpc1RhaWxEZWxldGVkKCkpIHsKICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxvY2s7Ci0gICAgICAg
IGlmIChPcHRpb25hbDx1bnNpZ25lZD4gYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgobV9zaGFkb3dDaGlja2VuRnJhbWUuY2FsbFNpdGVJ
bmRleCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zm
c2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KG1fc2hhZG93
Q2hpY2tlbkZyYW1lLmNhbGxTaXRlSW5kZXgpKSB7CiAgICAgICAgICAgICByZXR1cm4gVGV4dFBv
c2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChjb2RlQmxvY2stPmxpbmVOdW1i
ZXJGb3JCeXRlY29kZU9mZnNldCgqYnl0ZWNvZGVPZmZzZXQpKSwKICAgICAgICAgICAgICAgICBP
cmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoY29kZUJsb2NrLT5jb2x1bW5OdW1iZXJGb3JC
eXRlY29kZU9mZnNldCgqYnl0ZWNvZGVPZmZzZXQpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCmluZGV4
IGU3MWFhYzY0ZjMyMmE4ZmJkODE0ZjAyODE1YTg1NmQ2MzAyNmJmOWMuLjNiMDU4YmFiZmIxMzcx
MzdmNDA1M2UwODk4NWI5NDFmNjExZGIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcApAQCAtMzAsNyArMzAsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1
c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oaW50IGxpbmUsIGlu
dCBjb2x1bW4pCitzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNlUG9z
aXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQgY29s
dW1uKQogewogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICB1bnNpZ25lZCBlbmQgPSBtX3Bv
c2l0aW9ucy5zaXplKCk7CkBAIC01NCw3ICs1NCw3IEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9u
PiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1u
CiAgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmVudGVlZCB0byBoYXZlIGEgTGVhdmUgZm9yIGFu
IEVudHJ5IHNvIHdlIGRvbid0IG5lZWQgdG8gYm91bmRzIGNoZWNrLgogICAgICAgICAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICBpZiAocGF1c2VQb3NpdGlvbi50eXBlICE9IERl
YnVnZ2VyUGF1c2VQb3NpdGlvblR5cGU6OkVudGVyKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+KHBhdXNlUG9zaXRpb24ucG9zaXRpb24pOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxKU1RleHRQb3NpdGlvbj4ocGF1
c2VQb3NpdGlvbi5wb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgcGF1c2VQb3NpdGlvbiA9IG1f
cG9zaXRpb25zW21pZGRsZSsrXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjcsNyAr
NjcsNyBAQCBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gRGVidWdnZXJQYXVzZVBvc2l0aW9uczo6
YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbgogCiAgICAgLy8gUGFzdCB0aGUgZW5kLCBu
byBwb3NzaWJsZSBwYXVzZSBsb2NhdGlvbnMuCiAgICAgaWYgKHN0YXJ0ID49IG1fcG9zaXRpb25z
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUgbmV4dCBsb2NhdGlvbiBpcyBhIGZ1bmN0aW9uIEVudHJ5
IHdlIHdpbGwgbmVlZCB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIGdvIGludG8KICAgICAvLyB0aGUg
ZnVuY3Rpb24gb3IgZ28gcGFzdCB0aGUgZnVuY3Rpb24uIFdlIGRlY2lkZSB0byBnbyBpbnRvIHRo
ZSBmdW5jdGlvbiBpZiB0aGUKQEAgLTg3LDcgKzg3LDcgQEAgT3B0aW9uYWw8SlNUZXh0UG9zaXRp
b24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1
bW4KICAgICAvLyBWYWxpZCBwYXVzZSBsb2NhdGlvbi4gVXNlIGl0LgogICAgIERlYnVnZ2VyUGF1
c2VQb3NpdGlvbiYgZmlyc3RTbGlkZVBvc2l0aW9uID0gbV9wb3NpdGlvbnNbc3RhcnRdOwogICAg
IGlmIChmaXJzdFNsaWRlUG9zaXRpb24udHlwZSAhPSBEZWJ1Z2dlclBhdXNlUG9zaXRpb25UeXBl
OjpFbnRlcikKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihmaXJzdFNs
aWRlUG9zaXRpb24ucG9zaXRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxKU1Rl
eHRQb3NpdGlvbj4oZmlyc3RTbGlkZVBvc2l0aW9uLnBvc2l0aW9uKTsKIAogICAgIC8vIERldGVy
bWluZSBpZiB3ZSBzaG91bGQgZW50ZXIgdGhpcyBmdW5jdGlvbiBvciBza2lwIHBhc3QgaXQuCiAg
ICAgLy8gSWYgZW50cnlTdGFja1NpemUgaXMgPiAwIHdlIGFyZSBza2lwcGluZyBmdW5jdGlvbnMu
CkBAIC0xMTMsMTEgKzExMywxMSBAQCBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gRGVidWdnZXJQ
YXVzZVBvc2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbgogICAgICAgICB9
CiAKICAgICAgICAgLy8gRm91bmQgcGF1c2UgcG9zaXRpb24uCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDxKU1RleHRQb3NpdGlvbj4oc2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CisgICAgICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihzbGlkZVBvc2l0aW9uLnBvc2l0aW9u
KTsKICAgICB9CiAKICAgICAvLyBObyBwYXVzZSBwb3NpdGlvbnMgZm91bmQuCi0gICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEZWJ1Z2dlclBh
dXNlUG9zaXRpb25zOjpzb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmgKaW5kZXggMDYyMjUxNTVlMTQ1YzM4ODE2NWQzMTQ4OGFj
ZTI1OWRhMTNjYjA5Yi4uZWNjNzhkMGQ0YmZkZDIzZTYxNGJiNjE3ZTRmMjVlMzMzZTI0MTE5MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VE
YXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgRGVidWdnZXJQYXVzZVBvc2l0aW9ucyB7CiAg
ICAgICAgIG1fcG9zaXRpb25zLmFwcGVuZCh7IERlYnVnZ2VyUGF1c2VQb3NpdGlvblR5cGU6Okxl
YXZlLCBwb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4g
YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihpbnQgbGluZSwgaW50IGNvbHVtbik7Cisg
ICAgc3RkOjpvcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gYnJlYWtwb2ludExvY2F0aW9uRm9yTGlu
ZUNvbHVtbihpbnQgbGluZSwgaW50IGNvbHVtbik7CiAKICAgICB2b2lkIHNvcnQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL1NjcmlwdFByb2ZpbGluZ1Nj
b3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2Nv
cGUuaAppbmRleCA5OTYyNGRiZjEwZTE0ODhmZWFlZDMyOTU5M2IyYTk0ZjYxZDEwYTQxLi5lNDAz
MzdmZTlkMzZjM2IzZGUyMTI4NGU0YmQxZjU2YWQyOTA2NDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUuaApAQCAtODMs
NyArODMsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxpbmdTY29wZSB7CiAgICAgfQogCiAgICAgSlNH
bG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0IHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPGRv
dWJsZT4gbV9zdGFydFRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fc3RhcnRUaW1l
OwogICAgIFByb2ZpbGluZ1JlYXNvbiBtX3JlYXNvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApp
bmRleCA0M2I1MWExNmVjYmFkYTUwZjlkN2Y4OGVlZTNjZjExMjZiN2EyMjRhLi5jZjFjOTdmN2Y0
ZTAxZjc1ZTc0YzMyODkzNDJlZjgxOTU4MjE2YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00
MzQsNyArNDM0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgCiAgICAgY2Fz
ZSBEb3VibGVSZXA6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNo
aWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKCpudW1iZXIpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKIAogICAgIGNhc2UgQXJpdGhDbHozMjogewogICAgICAgICBKU1ZhbHVlIG9w
ZXJhbmQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAoT3B0
aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBvcGVyYW5kLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7
CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gb3BlcmFuZC50b051
bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgdWludDMyX3QgdmFsdWUgPSB0b1VJ
bnQzMigqbnVtYmVyKTsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKGNs
ejMyKHZhbHVlKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04NTQsNyArODU0LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMo
dW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAgICBpZiAoT3B0aW9u
YWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgeworICAg
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJl
ckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoZmFicygqbnVtYmVyKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ludDMy
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgcmVzdWx0KTsKQEAg
LTg2NCw3ICs4NjQsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGRvdWJs
ZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJp
bWl0aXZlKCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51
bWJlcihmYWJzKCpudW1iZXIpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC05MDYsNyArOTA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNl
IEFyaXRoQ2VpbDoKICAgICBjYXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgSlNWYWx1ZSBvcGVy
YW5kID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKE9wdGlv
bmFsPGRvdWJsZT4gbnVtYmVyID0gb3BlcmFuZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewor
ICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IG51bWJlciA9IG9wZXJhbmQudG9OdW1i
ZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSByb3VuZGVkVmFsdWUgPSAw
OwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhSb3VuZCkKICAgICAgICAgICAg
ICAgICByb3VuZGVkVmFsdWUgPSBqc1JvdW5kKCpudW1iZXIpOwpAQCAtOTk0LDcgKzk5NCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIE1hcEhhc2g6IHsKICAgICAgICAg
aWYgKEpTVmFsdWUga2V5ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSkgewotICAg
ICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBoYXNoID0gY29uY3VycmVudEpTTWFwSGFz
aChrZXkpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaGFzaCA9
IGNvbmN1cnJlbnRKU01hcEhhc2goa2V5KSkgewogICAgICAgICAgICAgICAgIC8vIEFsdGhvdWdo
IEMrKyBjb2RlIHVzZXMgdWludDMyX3QgZm9yIHRoZSBoYXNoLCB0aGUgY2xvc2VzdCB0eXBlIGlu
IERGRyBJUiBpcyBJbnQzMgogICAgICAgICAgICAgICAgIC8vIGFuZCB0aGF0J3Mgd2hhdCBNYXBI
YXNoIHJldHVybnMuIFNvLCB3ZSBoYXZlIHRvIGNhc3QgdG8gaW50MzJfdCB0byBhdm9pZCBsYXJn
ZQogICAgICAgICAgICAgICAgIC8vIHVuc2lnbmVkIHZhbHVlcyBiZWNvbWluZyBkb3VibGVzLiBU
aGlzIGNhc3RpbmcgYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkCkBAIC0zMTEzLDcgKzMxMTMs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZmZWN0
cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbikoZG91YmxlKSkKIHsKICAg
ICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICBp
ZiAoT3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUo
KSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1i
ZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVO
dW1iZXIoZXF1aXZhbGVudEZ1bmN0aW9uKCpudW1iZXIpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAppbmRleCBlOWFjM2U1
OWRhODA3NjM0MGVmYTM4OTdlOTQ1YjIyZTY3OWFkYmE2Li43ZmI5ZjcxNmNiZmM0OWNiNDNiYjMz
NmVjNzVjNmRiOGEyYmI5YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAKQEAgLTIxNSwxNiArMjE1LDE2IEBAIHZvaWQgSklUQ29kZTo6dmFsaWRhdGVSZWZlcmVu
Y2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykKICAgICBtaW5p
ZmllZERGRy52YWxpZGF0ZVJlZmVyZW5jZXModHJhY2tlZFJlZmVyZW5jZXMpOwogfQogCi1PcHRp
b25hbDxDb2RlT3JpZ2luPiBKSVRDb2RlOjpmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpCitz
dGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2b2lk
KiBwYykKIHsKICAgICBmb3IgKE9TUkV4aXQmIGV4aXQgOiBvc3JFeGl0KSB7CiAgICAgICAgIGlm
IChFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBleGl0Lm1fY29kZS5leGVjdXRhYmxl
TWVtb3J5KCkpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkgPD0gcGMgJiYgcGMg
PCBoYW5kbGUtPmVuZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3Jp
Z2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQ
cm9maWxlKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggZTFmMWQ3Y2EwMTNhYWFkMmFhNzBj
OGFmYjc4MTJkNGQ1YzExNDVlYy4uYWVlODc0MmYzODVkMTdiYWZhODU0OTQ2NzNjOTQ1ZWM4OGE4
N2ZmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTEyNCw3ICsx
MjQsNyBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIERpcmVjdEpJVENvZGUgewogCiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBjb21tb25EYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpJVENvZGUsIGNvbW1vbik7IH0KIAotICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhD
b2RlQmxvY2sqLCB2b2lkKiBwYykgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2RlT3Jp
Z2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOwogICAgIAogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgSklUQ29tcGlsZXI7IC8vIEFsbG93IEpJVENvbXBpbGVyIHRv
IGNhbGwgc2V0Q29kZVJlZigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKaW5kZXggZTIwNGQzZTkzZDg4NjRiOTBmNWFjYWM5M2Q0MTUyZjE3NDc4OTc2OS4u
ZDkzZDA2Y2FlNzEzNWMzMDhkZTBjMDRkYWFkNjIxNDM2OWMzNDRmMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgQUxX
QVlTX0lOTElORSBzdGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsSW50
ZXJuYWwoRXhlY1N0YXRlKiBleGUKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IHN0cmljdCk7CiAgICAgaWYgKGRpcmVjdCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNl
VmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgICAgIGFz
T2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZh
bHVlLCAwLCBzdHJpY3QgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5k
ZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFzT2JqZWN0KGJh
c2VWYWx1ZSktPnB1dERpcmVjdCgqdm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpAQCAt
MTEzOCw3ICsxMTM4LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQ4QXJy
YXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNJbnQ4QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0
KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUoCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoT25lQXJndW1lbnQo
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5Pihl
eGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTSW50MTZBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0lu
dDMyQXJyYXlXaXRoU2l6ZSgKQEAgLTExNjYsNyArMTE2Niw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQz
MkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7
CiB9CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXpl
KApAQCAtMTE4MCw3ICsxMTgwLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdV
aW50OEFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTVWludDhBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IE51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4QXJyYXk+KGV4ZWMsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhTaXplKApAQCAtMTE5
NCw3ICsxMTk0LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OENsYW1w
ZWRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1
ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJy
YXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhTaXplKApA
QCAtMTIwOCw3ICsxMjA4LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50
MTZBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU1VpbnQxNkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwg
TnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGV4ZWMsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhTaXplKApAQCAtMTIyMiw3ICsx
MjIyLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50MzJBcnJheVdpdGhP
bmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQzMkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSgKQEAgLTEyMzYsNyArMTIzNiw3IEBAIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50
KAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5
PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1
ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoCkBAIC0xMjUwLDcgKzEyNTAsNyBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZXhlYywg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
QWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U1Njb3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBFbmNvZGVkSlNWYWx1ZSBpbml0aWFs
VmFsdWVFbmNvZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
bG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0
aEdlbmVyYXRvci5oCmluZGV4IDYwODFjNTdiMjg2MThlNDNkOWVhMjhkNTU2MTAxNTgyYTYyYzU4
Y2EuLjY3YWJhODBiN2RmNzA4Mzk2M2JkYWZkNThmOWFiNjMyN2JjY2UzZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTUxLDcg
KzUxLDcgQEAgY2xhc3MgU2xvd1BhdGhHZW5lcmF0b3IgewogICAgICAgICBqaXQtPm1fb3V0T2ZM
aW5lU3RyZWFtSW5kZXggPSBtX3N0cmVhbUluZGV4OwogICAgICAgICBqaXQtPm1fb3JpZ2luID0g
bV9vcmlnaW47CiAgICAgICAgIGdlbmVyYXRlSW50ZXJuYWwoaml0KTsKLSAgICAgICAgaml0LT5t
X291dE9mTGluZVN0cmVhbUluZGV4ID0gTnVsbG9wdDsKKyAgICAgICAgaml0LT5tX291dE9mTGlu
ZVN0cmVhbUluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkKICAgICAgICAgICAgIGppdC0+bV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1Nsb3dQYXRoR2Vu
ZXJhdG9yRmVsbFRocm91Z2gpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjczMmZlODU4NDRlNTFmNDY3MGIwYWU0MDNm
MmFjMjM1MDRjODcxYy4uMTdiNzlhNTJkOTkzNzczZDFmNjAxYWFjZjI5NTljMzQyMDc3ZWYwYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
QEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpydW5TbG93UGF0aEdlbmVy
YXRvcnMoUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyJiBwY1RvQ29kZU9yaQogICAgICAgICBtX291
dE9mTGluZVN0cmVhbUluZGV4ID0gc2xvd1BhdGhMYW1iZGEuc3RyZWFtSW5kZXg7CiAgICAgICAg
IHBjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVtKG1faml0LmxhYmVsSWdub3JpbmdX
YXRjaHBvaW50cygpLCBjdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgc2xv
d1BhdGhMYW1iZGEuZ2VuZXJhdG9yKCk7Ci0gICAgICAgIG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXgg
PSBOdWxsb3B0OworICAgICAgICBtX291dE9mTGluZVN0cmVhbUluZGV4ID0gc3RkOjpudWxsb3B0
OwogICAgIH0KIH0KIApAQCAtMzIyMSw4ICszMjIxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Ci0gICAgT3B0aW9uYWw8SlNWYWx1ZU9w
ZXJhbmQ+IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CiAKICAgICBKU1ZhbHVlUmVn
cyBsZWZ0UmVnczsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3M7CkBAIC0zMjUyLDExICszMjUy
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkK
ICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJh
bmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAg
ICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0
LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1Zh
bHVlUmVncygpOwogICAgIH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAg
ICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAg
cmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmln
aHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogCkBAIC0zMzY4LDggKzMzNjgsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7
Ci0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8
SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4g
cmlnaHQ7CiAKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVnczsKICAgICBKU1ZhbHVlUmVncyByaWdo
dFJlZ3M7CkBAIC0zNDA1LDExICszNDA1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NFUlQoIWxl
ZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAgICBp
ZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJh
bmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGls
ZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAgICAg
aWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9w
ZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmln
aHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAg
IH0KIApAQCAtMzUzMCw4ICszNTMwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1h
dGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICBF
ZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0g
bm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKLSAg
ICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1Zh
bHVlT3BlcmFuZD4gbGVmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdo
dDsKIAogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVn
czsKQEAgLTM1NDQsMTQgKzM1NDQsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1h
dGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIg
PSBJbnZhbGlkRlBSUmVnOwogCi0gICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNo
OworICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlmIChu
ZWVkc1NjcmF0Y2hGUFJSZWcpIHsKLSAgICAgICAgZnByU2NyYXRjaCA9IEZQUlRlbXBvcmFyeSh0
aGlzKTsKKyAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3JhdGNo
RlBSID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CisgICAgc3RkOjpvcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CiAgICAgaWYgKG5lZWRzU2NyYXRjaEdQUlJlZykgewog
ICAgICAgICBncHJTY3JhdGNoID0gR1BSVGVtcG9yYXJ5KHRoaXMpOwogICAgICAgICBzY3JhdGNo
R1BSID0gZ3ByU2NyYXRjaC0+Z3ByKCk7CkBAIC0zNTgwLDExICszNTgwLDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJCiAgICAgQVNTRVJUKCEoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFs
aWRDb25zdGFudChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlk
Q29uc3RhbnQocmlnaHRPcGVyYW5kKSkpOwogCiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzTGVmdE9w
ZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAgICAgICBsZWZ0ID0gSlNWYWx1
ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxl
ZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9
CiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChyaWdodE9w
ZXJhbmQpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGls
ZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIHJp
Z2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzY0OSwxMCArMzY0
OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJ
VEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9KTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoR2VuZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChsZWZ0
T3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0
Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAg
ICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVyYW5kKSkg
ewotICAgICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsK
KyAgICAgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgICAg
ICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQogCkBAIC00Mjg5
LDcgKzQyODksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSBSZXBh
dGNoaW5nRnVuY3Rpb24sIHR5cGVuYW1lIE5vblJlcGF0Y2hpbgogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBt
YXRoSUMsIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnLCBSZXBhdGNoaW5nRnVuY3Rpb24gcmVwYXRj
aGluZ0Z1bmN0aW9uLCBOb25SZXBhdGNoaW5nRnVuY3Rpb24gbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
KQogewogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKLSAgICBPcHRpb25h
bDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jh
cnk+IGdwclNjcmF0Y2g7CiAgICAgaWYgKG5lZWRzU2NyYXRjaEdQUlJlZykgewogICAgICAgICBn
cHJTY3JhdGNoID0gR1BSVGVtcG9yYXJ5KHRoaXMpOwogICAgICAgICBzY3JhdGNoR1BSID0gZ3By
U2NyYXRjaC0+Z3ByKCk7CkBAIC00NzE4LDggKzQ3MTgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQXJpdGhEaXYoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwotICAgICAgICBP
cHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNW
YWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+
IHJpZ2h0OwogCiAgICAgICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzOwogICAgICAgICBKU1ZhbHVl
UmVncyByaWdodFJlZ3M7CkBAIC00NzY2LDExICs0NzY2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcml0aERpdihOb2RlKiBub2RlKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAg
ICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICAgICAgbGVmdCA9IEpT
VmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2Uo
dGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsK
LSAgICAgICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7Cisg
ICAgICAgICAgICByaWdodC5lbXBsYWNlKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICAgICAg
cmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KIApAQCAtNzI3NSwx
MCArNzI3NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihO
b2RlKiBub2RlKQogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgYmFzZUVkZ2Up
OwogICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFsdWUoYmFzZS5ncHIoKSwgbV9zdGF0ZS5mb3JO
b2RlKGJhc2VFZGdlKS52YWx1ZSgpKSk7CiAKLSAgICBPcHRpb25hbDxTcGVjdWxhdGVDZWxsT3Bl
cmFuZD4gZ2xvYmFsT2JqZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJh
bmQ+IGdsb2JhbE9iamVjdDsKICAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVj
dCkgewogICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbm9kZS0+Y2hpbGQyKCk7Ci0g
ICAgICAgIGdsb2JhbE9iamVjdCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIGdsb2JhbE9i
amVjdEVkZ2UpOworICAgICAgICBnbG9iYWxPYmplY3QuZW1wbGFjZSh0aGlzLCBnbG9iYWxPYmpl
Y3RFZGdlKTsKICAgICAgICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShnbG9iYWxPYmplY3Qt
PmdwcigpLCBtX3N0YXRlLmZvck5vZGUoZ2xvYmFsT2JqZWN0RWRnZSkudmFsdWUoKSkpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDU2NTM4YTI5NDZlNDAzMDBmMDUwZjMzNTUyYTczY2NhNzU5Y2VhY2EuLmM2MmExODY2NWQ4
ZGYzMzhmNGEwMTk5YzYxMWM1ZmU1ZDdiYmUyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI5MDUsNyArMjkwNSw3IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICB9OwogICAgIFZlY3RvcjxTbG93UGF0aExhbWJkYT4gbV9zbG93
UGF0aExhbWJkYXM7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4+IG1fcGxhbnM7
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXg7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRPZkxpbmVTdHJlYW1JbmRleDsKIH07CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggY2IwNGE1YTY1Yzc1MGUyM2YxN2M5ZGIyMzQxNWI3MzRhZWY1YjRhNC4uZThjZmZk
NjRkOTYwOTQyMGRiM2U5MjM3YmJjYjA4ZmZiNzg1MDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC01MDQxLDE1
ICs1MDQxLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZUlEKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogCi0gICAgICAgIE9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5k
PiBrZXlBc0NlbGw7Ci0gICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVl
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBrZXlBc0NlbGw7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGtleUFzVmFsdWU7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIGtleVJlZ3M7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSkgewotICAgICAgICAgICAga2V5QXNWYWx1ZSA9IEpTVmFsdWVP
cGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzVmFsdWUuZW1w
bGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBrZXlSZWdzID0ga2V5QXNW
YWx1ZS0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlIHx8IG5vZGUtPmNoaWxkMigp
LnVzZUtpbmQoKSA9PSBTeW1ib2xVc2UpOwotICAgICAgICAgICAga2V5QXNDZWxsID0gU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAga2V5QXND
ZWxsLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5UmVncyA9
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShrZXlBc0NlbGwtPmdwcigpKTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCBiNDFjNmYzMmIzM2Q4M2M2NWU4NTRmODYwNzhkNzRhNTI0MDI5ODEzLi4yZDk1ZmY2
ZDk5YzI1NWJjODdlNWY2ZmIzMmVjMWFiMTYzZWM0YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE5NTIsNyArMTk1Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKTsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2Ny
YXRjaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHNjcmF0Y2g7CiAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgaWYgKHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewogICAgICAgICAgICAgc2NyYXRjaCA9IEdQ
UlRlbXBvcmFyeSh0aGlzKTsKQEAgLTIxMDYsNyArMjEwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRCcmFuY2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgZnByVmFsdWUodGhpcyk7CiAgICAg
ICAgICAgICBGUFJUZW1wb3JhcnkgZnByVGVtcCh0aGlzKTsKLSAgICAgICAgICAgIE9wdGlvbmFs
PEdQUlRlbXBvcmFyeT4gc2NyYXRjaDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiBzY3JhdGNoOwogCiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFs
aWRHUFJSZWc7CiAgICAgICAgICAgICBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9ICFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwpA
QCAtNDc1OSw3ICs0NzU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBjYXNlIFN0cmluZ1VzZTogewogICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgaW5wdXQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
dGVtcDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOwogCiAg
ICAgICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKQEAgLTUxOTEsMTUgKzUx
OTEsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlSUQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CiAKLSAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtl
eUFzQ2VsbDsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGtleUFzVmFsdWU7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtleUFzQ2VsbDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsKICAgICAgICAg
R1BSUmVnIGtleUdQUjsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBV
bnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICBrZXlBc1ZhbHVlID0gSlNWYWx1ZU9wZXJhbmQodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAga2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtleUFzVmFsdWUtPmdwcigp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBTdHJpbmdVc2UgfHwgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJv
bFVzZSk7Ci0gICAgICAgICAgICBrZXlBc0NlbGwgPSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBrZXlHUFIgPSBrZXlBc0NlbGwtPmdwcigpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDEwNDA2ZmE0MTU5NTc0OTVmMjQ4YTk5MmU1
OWU2NGQ4NWY3OGIyODEuLjY2YzUwMDhlMjk5NzgwNTE5ZDY4MDQ3Y2Q5MmI2ZGE1M2I3MTNkNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKERvdWJsZVJlcFVzZSkKICAgICAgICAgICAgICAgICAmJiBtX25vZGUtPmNoaWxk
MigpLT5pc051bWJlckNvbnN0YW50KCkpIHsKIAotICAgICAgICAgICAgICAgIGlmIChPcHRpb25h
bDxkb3VibGU+IHJlY2lwcm9jYWwgPSBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QobV9ub2Rl
LT5jaGlsZDIoKS0+YXNOdW1iZXIoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRp
b25hbDxkb3VibGU+IHJlY2lwcm9jYWwgPSBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QobV9u
b2RlLT5jaGlsZDIoKS0+YXNOdW1iZXIoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSog
cmVjaXByb2NhbE5vZGUgPSBtX2luc2VydGlvblNldC5pbnNlcnRDb25zdGFudChtX25vZGVJbmRl
eCwgbV9ub2RlLT5vcmlnaW4sIGpzRG91YmxlTnVtYmVyKCpyZWNpcHJvY2FsKSwgRG91YmxlQ29u
c3RhbnQpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPnNldE9wKEFyaXRoTXVsKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIoKSA9IEVkZ2UocmVjaXByb2NhbE5vZGUs
IERvdWJsZVJlcFVzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0
L0RPTUpJVEVmZmVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZl
Y3QuaAppbmRleCA1OWUzMDBjMzkyNjEwNDdhMTEyMjkwZGE4NmI0ZmExNjhkOWM2MzA2Li5kN2Ey
MDczYmQ1NjVmMDVkZGNjMWM1OGFiZTFiYjg2MzM5YTVkMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBET01KSVQgewogc3RydWN0IEVmZmVjdCB7CiAgICAgSGVhcFJhbmdl
IHJlYWRzIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwogICAgIEhlYXBSYW5nZSB3cml0ZXMgeyBIZWFw
UmFuZ2U6OnRvcCgpIH07Ci0gICAgT3B0aW9uYWw8SGVhcFJhbmdlPiBkZWY7CisgICAgc3RkOjpv
cHRpb25hbDxIZWFwUmFuZ2U+IGRlZjsKIAogICAgIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRl
KEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IDY1ZTZjMDA1MjdiYmNkN2M4
ZDM2MThiZTYzN2ZiNTZmYmJlNWFhZGYuLjIxOWNhODVlYzA5YjkyZjc5OWFkZTNiOTE2MzhhMGRm
ZTg0NWY0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29k
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcApAQCAt
MTQ1LDIzICsxNDUsMjMgQEAgUmVnaXN0ZXJTZXQgSklUQ29kZTo6bGl2ZVJlZ2lzdGVyc1RvUHJl
c2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoQ29kZUJsb2MKICAgICByZXR1cm4gUmVn
aXN0ZXJTZXQoKTsKIH0KIAotT3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENv
ZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBwYykKK3N0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4g
SklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBwYykKIHsKICAgICBm
b3IgKE9TUkV4aXQmIGV4aXQgOiBvc3JFeGl0KSB7CiAgICAgICAgIGlmIChFeGVjdXRhYmxlTWVt
b3J5SGFuZGxlKiBoYW5kbGUgPSBleGl0Lm1fY29kZS5leGVjdXRhYmxlTWVtb3J5KCkpIHsKICAg
ICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkgPD0gcGMgJiYgcGMgPCBoYW5kbGUtPmVuZCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29k
ZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4mIGxh
enlTbG93UGF0aCA6IGxhenlTbG93UGF0aHMpIHsKICAgICAgICAgaWYgKEV4ZWN1dGFibGVNZW1v
cnlIYW5kbGUqIGhhbmRsZSA9IGxhenlTbG93UGF0aC0+c3R1YigpLmV4ZWN1dGFibGVNZW1vcnko
KSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKSA8PSBwYyAmJiBwYyA8IGhhbmRs
ZS0+ZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPENvZGVPcmlnaW4+KGNv
ZGVCbG9jay0+Y29kZU9yaWdpbihsYXp5U2xvd1BhdGgtPmNhbGxTaXRlSW5kZXgoKSkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KGNvZGVCbG9jay0+
Y29kZU9yaWdpbihsYXp5U2xvd1BhdGgtPmNhbGxTaXRlSW5kZXgoKSkpOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJ
VENvZGUuaAppbmRleCA5ODZhOTBhNzg2ZjdiMWNkYTRhNTkzNDgwMzhkNTc3MWNjOTQxMzlmLi4y
YzI4MDllOTcyZDE5NWU3MTU4YzQ0YzZiYTcwYzNjZWZhMTdmN2M2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKSVRDb2RlIDog
cHVibGljIEpTQzo6SklUQ29kZSB7CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUlu
ZGV4KSBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxv
Y2sqLCB2b2lkKiBwYykgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBm
aW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOwogCiAgICAgQ29kZVJlZiBiM0Nv
ZGUoKSBjb25zdCB7IHJldHVybiBtX2IzQ29kZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAppbmRleCA0NmZjNDExNmRiM2NiYWI0ZjlmYzMzM2U4MjViMTNlNWUwMjg5OGQz
Li41NjY0MzMyOThhZTNiOWM4NTc3MWY3ODFmZjE4OWFhYThlNDkxODk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFNpbXBsZVN0YXRzJiB0aW1p
bmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiAKIGNsYXNz
IFRpbWluZ1Njb3BlIHsKIHB1YmxpYzoKLSAgICBUaW1pbmdTY29wZShPcHRpb25hbDxDb2xsZWN0
aW9uU2NvcGU+IHNjb3BlLCBjb25zdCBjaGFyKiBuYW1lKQorICAgIFRpbWluZ1Njb3BlKHN0ZDo6
b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSwgY29uc3QgY2hhciogbmFtZSkKICAgICAg
ICAgOiBtX3Njb3BlKHNjb3BlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKQEAgLTE2
MSw3ICsxNjEsNyBAQCBjbGFzcyBUaW1pbmdTY29wZSB7CiAgICAgewogICAgIH0KICAgICAKLSAg
ICB2b2lkIHNldFNjb3BlKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCisgICAgdm9p
ZCBzZXRTY29wZShzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiAgICAgewog
ICAgICAgICBtX3Njb3BlID0gc2NvcGU7CiAgICAgfQpAQCAtMTgyLDcgKzE4Miw3IEBAIGNsYXNz
IFRpbWluZ1Njb3BlIHsKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8
Q29sbGVjdGlvblNjb3BlPiBtX3Njb3BlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiBtX3Njb3BlOwogICAgIGRvdWJsZSBtX2JlZm9yZTsKICAgICBjb25zdCBjaGFyKiBtX25h
bWU7CiB9OwpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2Uo
KQogICAgIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9CiAKLXZvaWQgSGVh
cDo6Y29sbGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQordm9pZCBIZWFwOjpj
b2xsZWN0KHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKIHsKICAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgaWYgKCFtX2lzU2Fm
ZVRvQ29sbGVjdCkKQEAgLTk2NCw3ICs5NjQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoT3B0aW9u
YWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKICAgICBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKHNj
b3BlKTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdFdpdGhvdXRBbnlTd2Vl
cChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQorTkVWRVJfSU5MSU5FIHZvaWQgSGVh
cDo6Y29sbGVjdFdpdGhvdXRBbnlTd2VlcChzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4g
c2NvcGUpCiB7CiAgICAgdm9pZCogc3RhY2tUb3A7CiAgICAgQUxMT0NBVEVfQU5EX0dFVF9SRUdJ
U1RFUl9TVEFURShyZWdpc3RlcnMpOwpAQCAtOTc0LDcgKzk3NCw3IEBAIE5FVkVSX0lOTElORSB2
b2lkIEhlYXA6OmNvbGxlY3RXaXRob3V0QW55U3dlZXAoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3Bl
PiBzY29wZSkKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV92bSk7CiB9CiAKLU5FVkVSX0lOTElO
RSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBsKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUs
IHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lz
dGVyU3RhdGUmIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKQorTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6
Y29sbGVjdEltcGwoc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlLCB2b2lkKiBz
dGFja09yaWdpbiwgdm9pZCogc3RhY2tUb3AsIE1hY2hpbmVUaHJlYWRzOjpSZWdpc3RlclN0YXRl
JiBjYWxsZWVTYXZlZFJlZ2lzdGVycykKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CiAgICAgVGltaW5nU2NvcGUgY29sbGVjdEltcGxUaW1pbmdTY29w
ZShzY29wZSwgIkhlYXA6OmNvbGxlY3RJbXBsIik7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lk
IEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgSGVhcDo6
d2lsbFN0YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQordm9p
ZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3Bl
PiBzY29wZSkKIHsKICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgZGF0YUxvZygi
PT4gIik7CkBAIC0xMzIwLDcgKzEzMjAsNyBAQCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rp
b24oZG91YmxlIGdjU3RhcnRUaW1lKQogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29s
bGVjdGlvblNjb3BlKTsKLSAgICBtX2NvbGxlY3Rpb25TY29wZSA9IE51bGxvcHQ7CisgICAgbV9j
b2xsZWN0aW9uU2NvcGUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVy
IDogbV9vYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChzY29w
ZSk7CkBAIC0xNDYyLDcgKzE0NjIsNyBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVm
ZmVyKEpTQ2VsbCogY2VsbCkKICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5hZGQoY2VsbCk7CiB9
CiAKLWJvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+IHNjb3BlKSBjb25zdAorYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKHN0
ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkgY29uc3QKIHsKICAgICBpZiAoIU9w
dGlvbnM6OnVzZUdlbmVyYXRpb25hbEdDKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGM4YmVmMTM0M2E5ODcyM2JmZjk1ZWU1MWYxMjZhNGE2
YTg1MzRiMDIuLjg5OGY5NzExZWIwZTc2MTBkOTcwYmVhNDE5ZGQwMTJlZTk0ZjdlYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBIZWFwIHsK
ICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNl
cnZlcnMucmVtb3ZlRmlyc3Qob2JzZXJ2ZXIpOyB9CiAKICAgICBNdXRhdG9yU3RhdGUgbXV0YXRv
clN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9tdXRhdG9yU3RhdGU7IH0KLSAgICBPcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+IGNvbGxlY3Rpb25TY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGVj
dGlvblNjb3BlOyB9CisgICAgc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IGNvbGxlY3Rp
b25TY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGVjdGlvblNjb3BlOyB9CiAKICAgICAvLyBX
ZSdyZSBhbHdheXMgYnVzeSBvbiB0aGUgY29sbGVjdGlvbiB0aHJlYWRzLiBPbiB0aGUgbWFpbiB0
aHJlYWQsIHRoaXMgcmV0dXJucyB0cnVlIGlmIHdlJ3JlCiAgICAgLy8gaGVscGluZyBoZWFwLgpA
QCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIEhlYXAgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIAogICAgIGJvb2wgc2hvdWxkQ29sbGVjdCgpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+
ID0gTnVsbG9wdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0KHN0ZDo6b3B0
aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgYm9vbCBjb2xsZWN0
SWZOZWNlc3NhcnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiA9IG51bGxwdHIpOyAvLyBSZXR1
cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxlY3QuCiAgICAgdm9pZCBjb2xsZWN0QWNjb3JkaW5nVG9E
ZWZlckdDUHJvYmFiaWxpdHkoKTsKIApAQCAtMzAxLDcgKzMwMSw3IEBAIGNsYXNzIEhlYXAgewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYs
IEdDRGVmZXJyYWxDb250ZXh0Kik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZv
aWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QpOwogCi0g
ICAgdm9pZCBjb2xsZWN0V2l0aG91dEFueVN3ZWVwKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4g
PSBOdWxsb3B0KTsKKyAgICB2b2lkIGNvbGxlY3RXaXRob3V0QW55U3dlZXAoc3RkOjpvcHRpb25h
bDxDb2xsZWN0aW9uU2NvcGU+ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHZvaWQqIGFsbG9jYXRl
V2l0aERlc3RydWN0b3Ioc2l6ZV90KTsgLy8gRm9yIHVzZSB3aXRoIG9iamVjdHMgd2l0aCBkZXN0
cnVjdG9ycy4KICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhvdXREZXN0cnVjdG9yKHNpemVfdCk7IC8v
IEZvciB1c2Ugd2l0aCBvYmplY3RzIHdpdGhvdXQgZGVzdHJ1Y3RvcnMuCkBAIC0zMjAsMTAgKzMy
MCwxMCBAQCBjbGFzcyBIZWFwIHsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4
dHJhTWVtb3J5QWxsb2NhdGVkU2xvd0Nhc2Uoc2l6ZV90KTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeVNsb3dDYXNlKHNpemVfdCk7CiAKLSAg
ICB2b2lkIGNvbGxlY3RJbXBsKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4sIHZvaWQqIHN0YWNr
T3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFjaGluZVRocmVhZHM6OlJlZ2lzdGVyU3RhdGUmKTsK
KyAgICB2b2lkIGNvbGxlY3RJbXBsKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiwgdm9p
ZCogc3RhY2tPcmlnaW4sIHZvaWQqIHN0YWNrVG9wLCBNYWNoaW5lVGhyZWFkczo6UmVnaXN0ZXJT
dGF0ZSYpOwogCiAgICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAgdm9pZCB3
aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4pOworICAgIHZvaWQg
d2lsbFN0YXJ0Q29sbGVjdGlvbihzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4pOwogICAg
IHZvaWQgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgIHZvaWQgZmx1c2hXcml0ZUJh
cnJpZXJCdWZmZXIoKTsKICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CkBAIC0zNzQsNyArMzc0
LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9pZCBzd2VlcEFsbExvZ2ljYWxseUVtcHR5V2Vha0Js
b2NrcygpOwogICAgIGJvb2wgc3dlZXBOZXh0TG9naWNhbGx5RW1wdHlXZWFrQmxvY2soKTsKIAot
ICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+
IHJlcXVlc3RlZENvbGxlY3Rpb25TY29wZSkgY29uc3Q7CisgICAgYm9vbCBzaG91bGREb0Z1bGxD
b2xsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiByZXF1ZXN0ZWRDb2xsZWN0
aW9uU2NvcGUpIGNvbnN0OwogCiAgICAgdm9pZCBpbmNyZW1lbnREZWZlcnJhbERlcHRoKCk7CiAg
ICAgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7CkBAIC00MDIsNyArNDAyLDcgQEAgY2xh
c3MgSGVhcCB7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlc1Zpc2l0ZWQ7CiAgICAgc2l6ZV90IG1f
dG90YWxCeXRlc1Zpc2l0ZWRUaGlzQ3ljbGU7CiAgICAgCi0gICAgT3B0aW9uYWw8Q29sbGVjdGlv
blNjb3BlPiBtX2NvbGxlY3Rpb25TY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25T
Y29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7CiAgICAgTXV0YXRvclN0YXRlIG1fbXV0YXRvclN0YXRl
IHsgTXV0YXRvclN0YXRlOjpSdW5uaW5nIH07CiAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVj
dHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3BwCmluZGV4IGZhMzNkYzk3NzQ0NWRlMmM2
ZDQ4ZmU1OGUxZGEyMDZjZmVjOGVlZWIuLjM0ZGIxMmMzZGJiYzcyNzA0MjkzNTFiZTBhYmRjOTNl
NmI2MjhkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFw
c2hvdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNw
cApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSGVhcFNuYXBzaG90OjpmaW5hbGl6ZSgpCiAjZW5k
aWYKIH0KIAotT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9y
Q2VsbChKU0NlbGwqIGNlbGwpCitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBT
bmFwc2hvdDo6bm9kZUZvckNlbGwoSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVChtX2ZpbmFs
aXplZCk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBI
ZWFwU25hcHNob3Q6Om5vZGVGb3JDZWxsKEpTQ2VsbCogY2VsbCkKICAgICAgICAgICAgIHVuc2ln
bmVkIG1pZGRsZSA9IHN0YXJ0ICsgKChlbmQgLSBzdGFydCkgLyAyKTsKICAgICAgICAgICAgIEhl
YXBTbmFwc2hvdE5vZGUmIG5vZGUgPSBtX25vZGVzW21pZGRsZV07CiAgICAgICAgICAgICBpZiAo
Y2VsbCA9PSBub2RlLmNlbGwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhlYXBT
bmFwc2hvdE5vZGU+KG5vZGUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOwogICAgICAgICAgICAgaWYgKGNlbGwgPCBub2RlLmNl
bGwpCiAgICAgICAgICAgICAgICAgZW5kID0gbWlkZGxlOwogICAgICAgICAgICAgZWxzZQpAQCAt
MTUzLDMyICsxNTMsMzIgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90
Ojpub2RlRm9yQ2VsbChKU0NlbGwqIGNlbGwpCiAgICAgaWYgKG1fcHJldmlvdXMpCiAgICAgICAg
IHJldHVybiBtX3ByZXZpb3VzLT5ub2RlRm9yQ2VsbChjZWxsKTsKIAotICAgIHJldHVybiBOdWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPEhlYXBTbmFwc2hv
dE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2Jq
ZWN0SWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBz
aG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3RJZGVudGlmaWVyKQog
ewogICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcHJldmlvdXMpCiAgICAgICAg
ICAgICByZXR1cm4gbV9wcmV2aW91cy0+bm9kZUZvck9iamVjdElkZW50aWZpZXIob2JqZWN0SWRl
bnRpZmllcik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGlmIChvYmplY3RJZGVudGlmaWVyID4gbV9sYXN0T2JqZWN0
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAob2JqZWN0SWRlbnRpZmllciA8IG1fZmlyc3RPYmplY3RJZGVu
dGlmaWVyKSB7CiAgICAgICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICAgICAgcmV0dXJuIG1f
cHJldmlvdXMtPm5vZGVGb3JPYmplY3RJZGVudGlmaWVyKG9iamVjdElkZW50aWZpZXIpOwotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX25vZGVzKSB7CiAgICAgICAgIGlmIChub2RlLmlk
ZW50aWZpZXIgPT0gb2JqZWN0SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25h
bDxIZWFwU25hcHNob3ROb2RlPihub2RlKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuaAppbmRleCA2MGQ4Mjg0NTcwNWQy
YmUxYzFhM2I5NTQ2ZjQxNjM3NGEzODg5YjYwLi5mZGQzZGUzYjUwZjA4OGIzNTQwYzE0MTUzN2Q5
MzBmM2I0OTM0YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3Qu
aApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBIZWFwU25hcHNob3QgewogICAgIHZvaWQgZmluYWxp
emUoKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXMuaXNFbXB0
eSgpOyB9Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckNlbGwoSlNDZWxs
Kik7Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvck9iamVjdElkZW50aWZp
ZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcik7CisgICAgc3RkOjpvcHRpb25hbDxIZWFwU25h
cHNob3ROb2RlPiBub2RlRm9yQ2VsbChKU0NlbGwqKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhlYXBT
bmFwc2hvdE5vZGU+IG5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdElkZW50
aWZpZXIpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIZWFwU25hcHNob3RCdWlsZGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCA2NDM3YmJkZDA0NGI0ODIyZWRlOWYw
NmI2MTdmOGY5ZWUzMjU5ZDhkLi5hMTA0ZDJmMjcwZTFkN2U5NmE2NDMxZTliYWY5OGQwOTgzODVi
ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAg
ICB7CiAgICAgICAgIC8vIEluIGNhc2UgdGhpcyBpcyBhIHJlLWVudHJhbnQgY2FsbCBmcm9tIGEg
bmVzdGVkIHJ1biBsb29wLCB3ZSBkb24ndCB3YW50IHRvIGxvc2UKICAgICAgICAgLy8gdGhlIG91
dGVyIHJlcXVlc3QncyBpZCBqdXN0IGJlY2F1c2UgdGhlIGlubmVyIHJlcXVlc3QgaXMgYm9ndXMu
Ci0gICAgICAgIFRlbXBvcmFyeUNoYW5nZTxPcHRpb25hbDxsb25nPj4gc2NvcGVkUmVxdWVzdElk
KG1fY3VycmVudFJlcXVlc3RJZCwgTnVsbG9wdCk7CisgICAgICAgIFRlbXBvcmFyeUNoYW5nZTxz
dGQ6Om9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCBz
dGQ6Om51bGxvcHQpOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcGFyc2VkTWVz
c2FnZTsKICAgICAgICAgaWYgKCFJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2UsIHBh
cnNlZE1lc3NhZ2UpKSB7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hl
cjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAgewogICAgICAgICAvLyBX
ZSBjb3VsZCBiZSBjYWxsZWQgcmUtZW50cmFudGx5IGZyb20gYSBuZXN0ZWQgcnVuIGxvb3AsIHNv
IHJlc3RvcmUgdGhlIHByZXZpb3VzIGlkLgotICAgICAgICBUZW1wb3JhcnlDaGFuZ2U8T3B0aW9u
YWw8bG9uZz4+IHNjb3BlZFJlcXVlc3RJZChtX2N1cnJlbnRSZXF1ZXN0SWQsIHJlcXVlc3RJZCk7
CisgICAgICAgIFRlbXBvcmFyeUNoYW5nZTxzdGQ6Om9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1
ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCByZXF1ZXN0SWQpOwogCiAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gbWV0aG9kVmFsdWU7CiAgICAgICAgIGlmICghbWVzc2FnZU9iamVjdC0+
Z2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgbWV0aG9kVmFsdWUpKSB7CkBAIC0yNDYs
NyArMjQ2LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQog
ICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNlbmRSZXNwb25zZShtZXNzYWdlLT50b0pTT05TdHJpbmco
KSk7CiAKICAgICBtX3Byb3RvY29sRXJyb3JzLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50UmVxdWVz
dElkID0gTnVsbG9wdDsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBzdGQ6Om51bGxvcHQ7CiB9
CiAgICAgCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKENvbW1v
bkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMjU0
LDcgKzI1NCw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3Io
Q29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyCiAgICAgcmVwb3J0UHJvdG9jb2xF
cnJvcihtX2N1cnJlbnRSZXF1ZXN0SWQsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAot
dm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihPcHRpb25hbDxsb25n
PiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29s
RXJyb3Ioc3RkOjpvcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNv
ZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBBU1NFUlRf
QVJHKGVycm9yQ29kZSwgZXJyb3JDb2RlID49IDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgK
aW5kZXggMzE3NmIyZDFhZjNlZGRjMzU5MDU3NzY2Y2MxNDlkYzdiZDMzNjliYy4uOTI3NjQyYzIx
YTM1NWEzNmE1NDA3OTI1ZjYzZjgzZjdhYzMwZjM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aApAQCAtODcsNyArODcsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBCYWNrZW5kRGlzcGF0
Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tlbmREaXNwYXRjaGVyPgogICAgIHZvaWQgc2Vu
ZFBlbmRpbmdFcnJvcnMoKTsKIAogICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihDb21tb25F
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIHJlcG9ydFBy
b3RvY29sRXJyb3IoT3B0aW9uYWw8bG9uZz4gcmVsYXRlZFJlcXVlc3RJZCwgQ29tbW9uRXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCByZXBvcnRQcm90b2Nv
bEVycm9yKHN0ZDo6b3B0aW9uYWw8bG9uZz4gcmVsYXRlZFJlcXVlc3RJZCwgQ29tbW9uRXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIFdURl9ISURERU5fREVDTEFSQVRJT04KQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEJhY2tlbmREaXNwYXRjaGVyPgogCiAgICAgLy8gRm9yIHN5bmNocm9ub3VzbHkgaGFuZGxlZCBy
ZXF1ZXN0cywgYXZvaWQgcGx1bWJpbmcgcmVxdWVzdElkIHRocm91Z2ggZXZlcnkKICAgICAvLyBj
YWxsIHRoYXQgY291bGQgcG90ZW50aWFsbHkgZmFpbCB3aXRoIGEgcHJvdG9jb2wgZXJyb3IuCi0g
ICAgT3B0aW9uYWw8bG9uZz4gbV9jdXJyZW50UmVxdWVzdElkIHsgTnVsbG9wdCB9OworICAgIHN0
ZDo6b3B0aW9uYWw8bG9uZz4gbV9jdXJyZW50UmVxdWVzdElkIHsgc3RkOjpudWxsb3B0IH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmlu
ZGV4IDQwNDE2OWY3ZjU0ZmFmMGQ5NjgxZjJlZjAyMGZmNGE2ZDhjMWRjNGUuLjdlNmViNTBhYzRi
MDY0NWNjOWJkOTllNjFhYjQwMzgxNjE2YjE1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNw
cApAQCAtMjEzLDI0ICsyMTMsMjQgQEAgdm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OnN0b3BUcmFj
a2luZyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnRyYWNraW5nQ29tcGxldGUodGltZXN0YW1wLCBzbmFwc2hvdERhdGEpOwogfQogCi1PcHRpb25h
bDxIZWFwU25hcHNob3ROb2RlPiBJbnNwZWN0b3JIZWFwQWdlbnQ6Om5vZGVGb3JIZWFwT2JqZWN0
SWRlbnRpZmllcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGhlYXBPYmplY3RJ
ZGVudGlmaWVyKQorc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBJbnNwZWN0b3JIZWFw
QWdlbnQ6Om5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyKQogewogICAgIEhlYXBQcm9maWxlciog
aGVhcFByb2ZpbGVyID0gbV9lbnZpcm9ubWVudC52bSgpLmhlYXBQcm9maWxlcigpOwogICAgIGlm
ICghaGVhcFByb2ZpbGVyKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJO
byBoZWFwIHNuYXBzaG90Iik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEhlYXBTbmFwc2hvdCogc25hcHNob3QgPSBo
ZWFwUHJvZmlsZXItPm1vc3RSZWNlbnRTbmFwc2hvdCgpOwogICAgIGlmICghc25hcHNob3QpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGhlYXAgc25hcHNob3QiKTsK
LSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCi0gICAgY29uc3QgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9uYWxOb2Rl
ID0gc25hcHNob3QtPm5vZGVGb3JPYmplY3RJZGVudGlmaWVyKGhlYXBPYmplY3RJZGVudGlmaWVy
KTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9k
ZSA9IHNuYXBzaG90LT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihoZWFwT2JqZWN0SWRlbnRpZmll
cik7CiAgICAgaWYgKCFvcHRpb25hbE5vZGUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIk5vIG9iamVjdCBmb3IgaWRlbnRpZmllciwgaXQgbWF5IGhhdmUgYmVlbiBjb2xs
ZWN0ZWQiKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG9wdGlvbmFsTm9kZTsKQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwogCiAgICAgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaGVhcE9iamVjdElkKTsKLSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2Rl
PiBvcHRpb25hbE5vZGUgPSBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoZXJyb3JTdHJpbmcs
IGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFw
c2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJv
clN0cmluZywgaGVhcE9iamVjdElkZW50aWZpZXIpOwogICAgIGlmICghb3B0aW9uYWxOb2RlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBB
Z2VudDo6Z2V0UmVtb3RlT2JqZWN0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBP
YmplYwogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKIAogICAgIHVuc2lnbmVkIGhlYXBP
YmplY3RJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGhlYXBPYmplY3RJZCk7Ci0g
ICAgY29uc3QgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gbm9kZUZv
ckhlYXBPYmplY3RJZGVudGlmaWVyKGVycm9yU3RyaW5nLCBoZWFwT2JqZWN0SWRlbnRpZmllcik7
CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUg
PSBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoZXJyb3JTdHJpbmcsIGhlYXBPYmplY3RJZGVu
dGlmaWVyKTsKICAgICBpZiAoIW9wdGlvbmFsTm9kZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5oCmluZGV4IGJhNzM4MmJkOTdmNmM5Yjk0NjQzMTZmNDM3MTA5MjNhMmRh
NzBiM2YuLjQ3NTc2MDg4ODJiNGIyNjZlZmY0ZTA4ZWFhMWJkMjk1ODg1ZTA2ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckhlYXBBZ2VudC5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IEluc3BlY3RvckhlYXBBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBI
CiAgICAgdm9pZCBjbGVhckhlYXBTbmFwc2hvdHMoKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25h
bDxKU0M6OkhlYXBTbmFwc2hvdE5vZGU+IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihFcnJv
clN0cmluZyYsIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEpTQzo6SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKEVy
cm9yU3RyaW5nJiwgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIpOwogCiAgICAgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCmluZGV4IDkzMTcwNWRjNWQ0Njg0OTBjZjcwZjcw
OWVmMmE0NTMyNTliMzdhMWEuLmRiYTA2MDE3OTlhZjkzMzMyOGQzMmUwMDRiNThmOThjMjMxYTA0
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCkBAIC01Myw3ICs1Myw3IEBA
IGNsYXNzIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxSZW1vdGVDb25uZWN0CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgdGFy
Z2V0Q2xvc2VkKCk7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdGFyZ2V0SWRlbnRpZmllcigp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRhcmdldElkZW50aWZpZXIoKSBj
b25zdDsKICAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBO
U1N0cmluZyAqZGVzdGluYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRv
VGFyZ2V0Lm1tCmluZGV4IDEyZjk1NGMwMzQ5YzFiZmM3MzMwM2Q2MjlmZGYxZmViYTU2MjU1N2Mu
LmQ2MGRhNDhhZmE4MzMxZjZjYmNkOWRjNGZlNzkxNGEzMjhlZjIzMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQubW0KQEAgLTExOSw5ICsxMTksOSBAQCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQogICAgIHRlYXJkb3duUnVu
TG9vcCgpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFJlbW90
ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fdGFyZ2V0ID8gT3B0aW9uYWw8dW5zaWduZWQ+KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlm
aWVyKCkpIDogTnVsbG9wdDsKKyAgICByZXR1cm4gbV90YXJnZXQgPyBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKIH0K
IAogTlNTdHJpbmcgKlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdApAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGFyZ2V0
TXV0ZXgpOwogICAgICAgICAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNv
bnRyb2xBbGxvd2VkKCkpIHsKLSAgICAgICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmds
ZXRvbigpLnNldHVwRmFpbGVkKHRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApKTsKKyAgICAg
ICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdl
dElkZW50aWZpZXIoKS52YWx1ZV9vcigwKSk7CiAgICAgICAgICAgICAgICAgbV90YXJnZXQgPSBu
dWxscHRyOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0
PihtX3RhcmdldCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNhc3RlZFRhcmdldCA9IGRvd25j
YXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KG1fdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKaW5k
ZXggNGVhN2YzOTI1ZjhkM2ViOWZiZDY2OGQyYzI5YWQ1M2JmOWFhNjdhNS4uOTNmZDFhN2Q3YzBl
NmRkYzMwOTIwMDM1NWFkMjYwZjZlY2EzZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTEzNyw3
ICsxMzcsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgZmluYWwg
OiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdAogICAgIFJlZlB0cjxSZW1vdGVJbnNw
ZWN0b3JYUENDb25uZWN0aW9uPiBtX3JlbGF5Q29ubmVjdGlvbjsKIAogICAgIFJlbW90ZUluc3Bl
Y3Rvcjo6Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKLSAgICBPcHRpb25hbDxSZW1vdGVJ
bnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IG1f
Y2xpZW50Q2FwYWJpbGl0aWVzOwogCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX3hwY1F1ZXVlOwog
ICAgIHVuc2lnbmVkIG1fbmV4dEF2YWlsYWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJ
bnNwZWN0b3IubW0KaW5kZXggY2IwYmFjZGY2ZjMwZWMzZjU2ZDFlNDRhYTlhZWI4NDY1NTY4MjY3
ZS4uMjFjYjIzMmQ4YzRhYTNkOTRhMzc4ODM2NTQ2OGQwMDE0YjAxNzA3YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3Rvci5tbQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVD
bGllbnRDYXBhYmlsaXRpZXMoKQogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0
ZXgpOwogCiAgICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMg
PSBOdWxsb3B0OworICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBlbHNlIHsKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGll
cyB1cGRhdGVkQ2FwYWJpbGl0aWVzID0gewogICAgICAgICAgICAgbV9jbGllbnQtPnJlbW90ZUF1
dG9tYXRpb25BbGxvd2VkKCkgLy8gcmVtb3RlQXV0b21hdGlvbkFsbG93ZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVy
LnB5CmluZGV4IGQ0M2Q1YTE5NjU2ZDBkMTVkODkwNDEyN2ZiYWYzOWU1ZWJkNGFjOWEuLjA3MDRi
M2UxZTBkMWRiYjUyODNhYjdiNmFmNjE0YjExOTIwYjgxNjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQpA
QCAtMzcwLDExICszNzAsMTEgQEAgZGVmIF9nZW5lcmF0ZV9kZWNsYXJhdGlvbnNfZm9yX2VudW1f
Y29udmVyc2lvbl9tZXRob2RzKHNlbGYpOgogICAgICAgICAgICAgJ25hbWVzcGFjZSAlcyB7JyAl
IHNlbGYuaGVscGVyc19uYW1lc3BhY2UoKSwKICAgICAgICAgICAgICcnLAogICAgICAgICAgICAg
J3RlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+JywKLSAgICAgICAgICAgICdPcHRp
b25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7JywKKyAgICAgICAgICAgICdzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsnLAogICAgICAgICBdKSkKIAog
ICAgICAgICBkZWYgcmV0dXJuX3R5cGVfd2l0aF9leHBvcnRfbWFjcm8oY3BwX3Byb3RvY29sX3R5
cGUpOgotICAgICAgICAgICAgZW51bV9yZXR1cm5fdHlwZSA9ICdPcHRpb25hbDwlcz4nICUgY3Bw
X3Byb3RvY29sX3R5cGUKKyAgICAgICAgICAgIGVudW1fcmV0dXJuX3R5cGUgPSAnc3RkOjpvcHRp
b25hbDwlcz4nICUgY3BwX3Byb3RvY29sX3R5cGUKICAgICAgICAgICAgIHJlc3VsdF90ZXJtcyA9
IFtlbnVtX3JldHVybl90eXBlXQogICAgICAgICAgICAgZXhwb3J0X21hY3JvID0gc2VsZi5tb2Rl
bCgpLmZyYW1ld29yay5zZXR0aW5nKCdleHBvcnRfbWFjcm8nLCBOb25lKQogICAgICAgICAgICAg
aWYgZXhwb3J0X21hY3JvIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5
cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9u
LnB5CmluZGV4IDU3Yjg0MmJjZjk0ZWRjYjcyZTYxMzM5YzcxMWQ3NjMzMmJiNTUxN2UuLjdiYmI5
MDMyN2M0NmI4YjhiNDZiYjA2MTFmYzY2ODRkYWY0OTliYzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1w
bGVtZW50YXRpb24ucHkKQEAgLTk3LDcgKzk3LDcgQEAgZGVmIGdlbmVyYXRlX2NvbnZlcnNpb25f
bWV0aG9kX2JvZHkoZW51bV90eXBlLCBjcHBfcHJvdG9jb2xfdHlwZSk6CiAgICAgICAgICAgICBi
b2R5X2xpbmVzID0gW10KICAgICAgICAgICAgIGJvZHlfbGluZXMuZXh0ZW5kKFsKICAgICAgICAg
ICAgICAgICAndGVtcGxhdGU8PicsCi0gICAgICAgICAgICAgICAgJ09wdGlvbmFsPCVzPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8JXM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpJyAl
IChjcHBfcHJvdG9jb2xfdHlwZSwgY3BwX3Byb3RvY29sX3R5cGUpLAorICAgICAgICAgICAgICAg
ICdzdGQ6Om9wdGlvbmFsPCVzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8JXM+KGNvbnN0IFN0
cmluZyYgcHJvdG9jb2xTdHJpbmcpJyAlIChjcHBfcHJvdG9jb2xfdHlwZSwgY3BwX3Byb3RvY29s
X3R5cGUpLAogICAgICAgICAgICAgICAgICd7JywKICAgICAgICAgICAgICAgICAnICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsnLAogICAgICAgICAgICAgXSkKQEAg
LTExMiw3ICsxMTIsNyBAQCBkZWYgZ2VuZXJhdGVfY29udmVyc2lvbl9tZXRob2RfYm9keShlbnVt
X3R5cGUsIGNwcF9wcm90b2NvbF90eXBlKToKICAgICAgICAgICAgICAgICAnICAgICAgICBpZiAo
cHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1d
KScsCiAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgIHJldHVybiAoJXMpY29uc3RhbnRWYWx1
ZXNbaV07JyAlIGNwcF9wcm90b2NvbF90eXBlLAogICAgICAgICAgICAgICAgICcnLAotICAgICAg
ICAgICAgICAgICcgICAgcmV0dXJuIE51bGxvcHQ7JywKKyAgICAgICAgICAgICAgICAnICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7JywKICAgICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICAg
ICAgJycsCiAgICAgICAgICAgICBdKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0
cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0CmluZGV4IGRmMzEwM2RjZjBlMjRmZjQ2ZDQ0ZWI3MTAxMTM5MWY1MWFjODBhOWMuLjQ0MmQ1
Y2JmY2ExMGUyN2IxMGMwNzZkYzljMDAwMTA2M2ZlMDViMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1h
dHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTcyMywxMSArNzIzLDExIEBAIHB1YmxpYzoKIG5hbWVz
cGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+
Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFz
ZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6
b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycz4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJz
CiAKQEAgLTc5NSw3ICs3OTUsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1P
cHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
Pihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9yczo6UmVkLApAQCAtODA2LDcgKzgwNiw3IEBAIE9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8CiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVt
X2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4g
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKWNvbnN0YW50VmFs
dWVzW2ldOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA0YWQxNDZhNWI1Y2Y4NzY4YzI2NWFhODhkNDlmZGMx
YjEwNzQyOWNhLi5lYjE2ODIwNjYyMDJmOTk3NDVjODgzMDkxNGM4ZmZlZWRhOGYzOGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKQEAgLTYyNCwxMSArNjI0LDExIEBAIHB1YmxpYzoKIG5hbWVzcGFjZSBUZXN0
SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25h
bDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5n
Jik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWlu
CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9y
cz4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTY5
Niw3ICs2OTYsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAog
Ly8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
Pihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBT
dHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3Rh
bnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9yczo6UmVkLApAQCAtNzA3LDcgKzcwNyw3IEBAIE9wdGlvbmFsPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmc8CiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50
X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzKWNvbnN0YW50VmFsdWVzW2ldOwog
Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQK
aW5kZXggM2U0NGZlMTEyMzRmMjY3OThkZTM3NDg2MDNkMmM2YjBlYmYyZWRiMy4uZTAzMzY0MjRi
NmUxYTJhZDFjN2EzNWY0ZGY3ZmU1MTg4NGJlODYxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtNDcxLDExICs0NzEsMTEg
QEAgZW51bSBjbGFzcyBUeXBlRG9tYWluRW51bSB7CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xF
bnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpv
cHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnVHlwZURvbWFpbicgRG9tYWluCiB0ZW1wbGF0
ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWlu
RW51bT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5cGVE
b21haW46OlR5cGVEb21haW5FbnVtPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWlu
RW51bT4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAg
LTU0NSw3ICs1NDUsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsK
IAogLy8gRW51bXMgaW4gdGhlICdUeXBlRG9tYWluJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlw
ZURvbWFpbkVudW0+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFs
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURv
bWFpbkVudW0+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rv
cjo6UHJvdG9jb2w6OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtOjpTaGFyZWQsCkBAIC01NTcs
NyArNTU3LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlw
ZURvbWFpbkVudW0+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmkKICAgICAgICAgaWYgKHByb3RvY29s
U3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAg
ICAgICAgIHJldHVybiAoSW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFp
bkVudW0pY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBl
LXNldHRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24t
cmVzdWx0CmluZGV4IDE0NWEwODY0OTNmMWRlYTAyZTllNjNhMDkzZjNmNzg4ZjE3MzUzOTIuLjE1
Y2E2YWMxNmViMzQ1NjZkZjg3YTgxNDE2OWM5MjAxZWZjYzBjODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dl
ZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFs
LXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApAQCAtNDEzLDExICs0MTMsMTEgQEAgcHVibGljOgog
bmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVt
VHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ1J1
bnRpbWUnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6S2V5UGF0aDo6VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+KGNvbnN0IFN0cmluZyYpOworc3Rk
OjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6S2V5
UGF0aDo6VHlwZT4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJz
CiAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50aW1lJyBEb21haW4KIHRlbXBsYXRlPD4KLU9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRo
OjpUeXBlPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1WYWx1ZUZy
b21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4oY29u
c3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNv
bnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpSW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6S2V5UGF0aDo6VHlwZTo6TnVsbCwKQEAgLTQ5Miw3ICs0OTIsNyBAQCBPcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SQogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25z
dGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlKWNvbnN0YW50VmFsdWVzW2ld
OwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAppbmRleCA1YjI1NGUwYzgzN2VmZDZh
MWE5NDE0MDg5N2JhM2MxZTJlZTY1YTljLi40ZGZjMWYyYjYzZmE1MTJmOWE2ZGIyMWQ0OTg3ZTQ1
N2Q4ZjA5MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKQEAgLTM2Mywx
MSArMzYzLDExIEBAIGVudW0gY2xhc3MgUmVhc29uIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2Nv
bEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6
Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdEZWJ1Z2dlcicgRG9tYWluCiB0ZW1wbGF0
ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNv
bj4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdEhlbHBlcnMKIApAQCAtNDMxLDcgKzQzMSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRW
YWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ0RlYnVnZ2VyJyBEb21haW4KIHRl
bXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+
IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
UmVhc29uPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4oY29uc3QgU3RyaW5nJiBw
cm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVz
W10gPSB7CiAgICAgICAgIChzaXplX3QpSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJl
YXNvbjo6RGllZCwKQEAgLTQ0Miw3ICs0NDIsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdAog
ICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3Rh
bnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6UmVhc29uKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNv
bi1yZXN1bHQKaW5kZXggMmRiZGE3ODc5MGE2YzZmMGZhMjA5OWQwZmMyNjRhZTc3MTQ3MTY2ZC4u
NDlhODQ0MGY4MzRhYjIzOGRiNWFiYzRmZDAzODMyZWFmMDkwODExOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVu
dW0tdHlwZS5qc29uLXJlc3VsdApAQCAtMzYwLDEzICszNjAsMTMgQEAgZW51bSBjbGFzcyBUd29M
ZWdnZWRBbmltYWxzIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29s
RW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8g
RW51bXMgaW4gdGhlICdSdW50aW1lJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0
cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpGYXJt
QW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OkZhcm1BbmltYWxzPihjb25zdCBTdHJpbmcmKTsKIHRlbXBsYXRlPD4KLU9wdGlvbmFs
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRB
bmltYWxzPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0IFN0cmlu
ZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC00MzQsNyArNDM0LDcgQEAg
U3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIC8vIEVudW1zIGluIHRo
ZSAnUnVudGltZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3Rv
Y29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpG
YXJtQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkZhcm1BbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNp
emVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFsczo6UGlncywKQEAg
LTQ0NiwxMSArNDQ2LDExIEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkZhcm1BbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zCiAgICAgICAgIGlmIChw
cm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0p
CiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1B
bmltYWxzKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0
IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPihjb25zdCBTdHJp
bmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRW
YWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpUd29MZWdnZWRBbmltYWxzOjpEdWNrcywKQEAgLTQ2Miw3ICs0NjIsNyBAQCBPcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPiBwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbgogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFu
dF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzKWNvbnN0YW50VmFsdWVzW2ld
OwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IGI5MDRhZjhkZTJmMWI0
ZTdjZGVkODAyYTNkZGY1YmExMWVlZWFiMTMuLjViZTk3MzM1ZmU4NjA0NTZjZjFhNjYzMWNlZGVk
ZWY3YWI5OWU0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC01
ODIsMTMgKzU4MiwxMyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKik7CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVt
VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRp
b25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnVGVzdCcgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRp
b25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1h
bHM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpU
ZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOwogdGVtcGxh
dGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4g
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3Rl
ZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVj
dG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTY1Niw3ICs2NTYsNyBAQCBTdHJpbmcgZ2V0
RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdUZXN0JyBE
b21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVu
Y2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykK
K3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxz
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VW5j
YXN0ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNw
ZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM6OlBpZ3MsCkBAIC02NjgsMTEg
KzY2OCwxMSBAQCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFu
aW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbgogICAgICAgICBpZiAocHJvdG9jb2xT
dHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAg
ICAgICAgcmV0dXJuIChJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHMp
Y29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0
cmluZykKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5p
bWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6
OkNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUlu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM6OkR1Y2tzLApAQCAtNjg0LDcg
KzY4NCw3IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1h
bHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwCiAgICAgICAgIGlmIChwcm90b2NvbFN0
cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAg
ICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHMpY29u
c3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggYzhmYjI1
YTI4NWU0NDQ5NmUzMDViZGYzYzg4ZmE4YmFlMDIzMDJjMC4uNzVjNzBjN2Y3YzgyYTQ4OTRlOTAx
NTlhYmE5YmNmMDBhNzRhMjQwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAg
LTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEpJVENvZGU+IHsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgdmlydHVhbCBSZWdpc3RlclNl
dCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2Rl
QmxvY2sqLCBDYWxsU2l0ZUluZGV4KTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPENvZGVPcmlnaW4+
IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgeyBVTlVTRURfUEFSQU0ocGMpOyByZXR1cm4g
TnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMo
Q29kZUJsb2NrKiwgdm9pZCogcGMpIHsgVU5VU0VEX1BBUkFNKHBjKTsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVERpdkdlbmVyYXRvci5jcHAKaW5kZXggYmU5MmQzZjk2ZTFiYzg4ZDYxMzYyMmM1ZmY1Y2Jh
OTBiM2Y0ODE1Mi4uYTVkYjdlMWIyNmUyMzRiZDFkZDIxODEzYjVlZWUyOTI4ZjliNDI5MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcApAQCAtODIs
NyArODIsNyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhl
bHBlcnMmIGppdCkKICAgICBsb2FkT3BlcmFuZChqaXQsIG1fbGVmdE9wZXJhbmQsIG1fbGVmdCwg
bV9sZWZ0RlBSKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBz
YWZlUmVjaXByb2NhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWw7
CiAgICAgaWYgKG1fcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewogICAgICAgICBkb3VibGUgY29u
c3RhbnQgPSBtX3JpZ2h0T3BlcmFuZC5hc0NvbnN0TnVtYmVyKCk7CiAgICAgICAgIHNhZmVSZWNp
cHJvY2FsID0gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KGNvbnN0YW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDFlYWJiYzQ4M2I4ZTc2
Zjc5ZTVhYmE3MWViMzg5NzAyYzRjMTgwMmEuLmVkNjkyMmE4ZDM4Yzg5MzAyYTgzNjJjZDZhMDk1
ZjhhOTM4ZTk0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcApAQCAtNjMyLDcgKzYzMiw3IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzCiAgICAgYXV0
byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkgeworICAgIGlmIChzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CiAgICAgICAgIGJ5
VmFsSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGly
ZWN0SW5kZXgoY2FsbEZyYW1lLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENU
b0NvZGVPcmlnaW5NYXAuY3BwCmluZGV4IGI5M2UyYzYyYzE5NzkyMDlhOWMwZjJmOTJhN2JjNTZm
MjAxZWNjMjIuLjQxMDAwOWFiMDI1Y2MwYThkNDI4Y2M3Yzg1YjI5ZjM5NWIzYTFiMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCkBAIC0y
NDYsMTEgKzI0NiwxMSBAQCBkb3VibGUgUENUb0NvZGVPcmlnaW5NYXA6Om1lbW9yeVNpemUoKQog
ICAgIHJldHVybiBzaXplOwogfQogCi1PcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdp
bk1hcDo6ZmluZFBDKHZvaWQqIHBjKSBjb25zdAorc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBQ
Q1RvQ29kZU9yaWdpbk1hcDo6ZmluZFBDKHZvaWQqIHBjKSBjb25zdAogewogICAgIHVpbnRwdHJf
dCBwY0FzSW50ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGMpOwogICAgIGlmICghKG1fcGNS
YW5nZVN0YXJ0IDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8PSBtX3BjUmFuZ2VFbmQpKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVp
bnRwdHJfdCBjdXJyZW50UEMgPSAwOwogICAgIENvZGVPcmlnaW4gY3VycmVudENvZGVPcmlnaW4o
MCwgbnVsbHB0cik7CkBAIC0yOTMsMTIgKzI5MywxMiBAQCBPcHRpb25hbDxDb2RlT3JpZ2luPiBQ
Q1RvQ29kZU9yaWdpbk1hcDo6ZmluZFBDKHZvaWQqIHBjKSBjb25zdAogICAgICAgICAgICAgLy8g
V2Ugc3VidHJhY3QgMSBiZWNhdXNlIHdlIGdlbmVyYXRlIGVuZCBwb2ludHMgaW5jbHVzaXZlbHkg
aW4gdGhpcyB0YWJsZSwgZXZlbiB0aG91Z2ggd2UgYXJlIGludGVyZXN0ZWQgaW4gcmFuZ2VzIG9m
IHRoZSBmb3JtOiBbcHJldmlvdXNQQywgY3VycmVudFBDKQogICAgICAgICAgICAgdWludHB0cl90
IGVuZE9mUmFuZ2UgPSBjdXJyZW50UEMgLSAxOwogICAgICAgICAgICAgaWYgKHN0YXJ0T2ZSYW5n
ZSA8PSBwY0FzSW50ICYmIHBjQXNJbnQgPD0gZW5kT2ZSYW5nZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdpbj4ocHJldmlvdXNPcmlnaW4pOyAvLyBXZSByZXR1cm4g
cHJldmlvdXNPcmlnaW4gaGVyZSBiZWNhdXNlIENvZGVPcmlnaW4ncyBhcmUgbWFwcGVkIHRvIHRo
ZSBzdGFydFZhbHVlIG9mIHRoZSByYW5nZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpv
cHRpb25hbDxDb2RlT3JpZ2luPihwcmV2aW91c09yaWdpbik7IC8vIFdlIHJldHVybiBwcmV2aW91
c09yaWdpbiBoZXJlIGJlY2F1c2UgQ29kZU9yaWdpbidzIGFyZSBtYXBwZWQgdG8gdGhlIHN0YXJ0
VmFsdWUgb2YgdGhlIHJhbmdlLgogICAgICAgICB9CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuaAppbmRleCAxYzgwZWQ4NmVjY2Y2NTcxYzIxZjFiZWFj
MmE2NWI4ZDgwZTQyZDNlLi5jMDFjNDQxYTU4MTgwOTM5OWIzOTkwN2FmNDg5MmRiYTQzMWRjZWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFw
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5oCkBA
IC04Myw3ICs4Myw3IEBAIGNsYXNzIFBDVG9Db2RlT3JpZ2luTWFwIHsKICAgICBQQ1RvQ29kZU9y
aWdpbk1hcChQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXImJiwgTGlua0J1ZmZlciYpOwogICAgIH5Q
Q1RvQ29kZU9yaWdpbk1hcCgpOwogCi0gICAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKHZv
aWQqIHBjKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lk
KiBwYykgY29uc3Q7CiAKICAgICBkb3VibGUgbWVtb3J5U2l6ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCmluZGV4IDJiNTNjYTE4YWU5OTMzYzk1ZjA0MGVhYjhhMDMxZmMzMDBjNjkwMjEuLjM5YTBi
NTMwNGNlYzZkN2VjMWQ0YTZlMTI2OGEwNjM3OTFmYjlkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC00MTgsNyArNDE4LDcgQEAgY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkg
ewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmdldExlbmd0
aCgpKSB7CiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnREZWxldGUg
fCBEb250RW51bSwganNOdW1iZXIodGhpc09iamVjdC0+bV92ZWN0b3JbaW5kZXgudmFsdWUoKV0p
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZjU4ZjRmOTY2ZWE3NzQzYmZjNGVjODA3YzEx
ZWYzYWI0ZGQ0MjliYi4uOTgyMTdjZmM0ZmE0YjdmOTcxMjdkM2Y5OTZjMmUxOWYxNjFlNTg1YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBA
IC04ODUsNyArODg1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92
YWxfZGlyZWN0KQogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAg
ICAgICAgTExJTlRfRU5EKCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVj
dEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3Ry
aWN0TW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVs
ZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuY3BwCmluZGV4IGMyMGFhODRmZGQwMzY5YjZhOGE2ZmUwNTYwYTNmNjgzZmUzYTljOTkuLmE3
YjE4MGIxMWU2MTNkOGJiNzI1YjkyY2NhNGJhZTY4ZTQyZjZiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKE1vZHVsZVByb2dyYW1Ob2RlJiBt
b2R1bGVQcm9ncmFtTm9kZSwgY29uc3QKICAgICAvLyBJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRp
bmcuCiAgICAgLy8gaW1wb3J0IGEgZnJvbSAibW9kIgogICAgIC8vIGV4cG9ydCB7IGEgfQotICAg
IE9wdGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRy
eSA9IG1vZHVsZVJlY29yZCgpLT50cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5PiBvcHRpb25hbElt
cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPnRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5n
ZXQoKSk7CiAgICAgQVNTRVJUKG9wdGlvbmFsSW1wb3J0RW50cnkpOwogICAgIGNvbnN0IEpTTW9k
dWxlUmVjb3JkOjpJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRy
eTsKICAgICBmb3IgKGF1dG8mIGV4cG9ydE5hbWUgOiBtb2R1bGVQcm9ncmFtTm9kZS5tb2R1bGVT
Y29wZURhdGEoKS5leHBvcnRlZEJpbmRpbmdzKCkuZ2V0KGxvY2FsTmFtZS5nZXQoKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SklUTG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpJVExvY2suaAppbmRl
eCA5NTg4Mzk4ZjBmOGFlOGE2NzRkNjAzMjQ4YmIyODA4MzZhN2MzYWFmLi5kMjgyMjZlZDk2ZGYz
MmI4MDQ4MzI5MDcxMWJmYmExNzAwNWMwM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25jdXJyZW50SklUTG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKSVRMb2NrLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFz
cyBDb25jdXJyZW50SklUTG9ja2VyIDogcHVibGljIENvbmN1cnJlbnRKSVRMb2NrZXJCYXNlIHsK
ICAgICBDb25jdXJyZW50SklUTG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykKICAgICAgICAg
OiBDb25jdXJyZW50SklUTG9ja2VyQmFzZShOb0xvY2tpbmdOZWNlc3NhcnkpCiAjaWYgRU5BQkxF
KENPTkNVUlJFTlRfSklUKSAmJiAhZGVmaW5lZChOREVCVUcpCi0gICAgICAgICwgbV9kaXNhbGxv
d0dDKE51bGxvcHQpCisgICAgICAgICwgbV9kaXNhbGxvd0dDKHN0ZDo6bnVsbG9wdCkKICNlbmRp
ZgogICAgIHsKICAgICB9CkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgQ29uY3VycmVudEpJVExv
Y2tlciA6IHB1YmxpYyBDb25jdXJyZW50SklUTG9ja2VyQmFzZSB7CiAKICNpZiBFTkFCTEUoQ09O
Q1VSUkVOVF9KSVQpICYmICFkZWZpbmVkKE5ERUJVRykKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8
RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOworICAgIHN0ZDo6b3B0aW9uYWw8RGlzYWxsb3dHQz4g
bV9kaXNhbGxvd0dDOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCmluZGV4IGMyYWVlNzE2
OTRhNzAxNDkxNTg3ZjBiOWUwNGFiMTgyMDQ4ZjdlODQuLmQ3ZTNiOTEzMzMzNTcyNWE3NGEzMzY0
MDRkNjYyOTcxMTAwZDQ1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCkBAIC05OSwxMCArOTksMTAgQEAg
Y2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RU
cmlTdGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBNaXhlZFRyaVN0YXRlOwogICAgIH0KIAotICAgIE9w
dGlvbmFsPGJvb2w+IHdyaXRhYmxlKCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IHdy
aXRhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzV3JpdGFibGUoKSkKLSAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KSA9PSBUcnVlVHJp
U3RhdGU7CiAgICAgfQogCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBjbGFzcyBEZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMgewogICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJs
ZVNoaWZ0KSAhPSBNaXhlZFRyaVN0YXRlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGJvb2w+IGNv
bmZpZ3VyYWJsZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBjb25maWd1cmFibGUo
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNDb25maWd1cmFibGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgPT0gVHJ1ZVRy
aVN0YXRlOwogICAgIH0KIApAQCAtMTIzLDEwICsxMjMsMTAgQEAgY2xhc3MgRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzIHsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxl
U2hpZnQpICE9IE1peGVkVHJpU3RhdGU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8Ym9vbD4gZW51
bWVyYWJsZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghaGFzRW51bWVyYWJsZSgpKQotICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gZXh0cmFjdFRyaVN0YXRlKEVudW1lcmFibGVTaGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJp
Y0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggMWUxZWVkNzUxMDE1ZDgyYjNjMjNkMTYyZTFhNjcy
MzYwMTc1ODM5YS4uZjdiNWRlODA2YTE5NWYwYjIzMDRmYWM4MzVmZjA5NDdmNDM0MTE4OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1l
bnRzSW5saW5lcy5oCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBl
Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChpZGVudCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KGlkZW50KTsKICAgICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+Y2FuQWNjZXNzSW5k
ZXhRdWlja2x5KGluZGV4LnZhbHVlKCkpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgTm9uZSwgdGhpc09iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGluZGV4LnZhbHVlKCkpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBHZW5lcmljQXJn
dW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBpZGUKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNP
YmplY3QpKSkKICAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0
LCBpZGVudCwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwog
ICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7CiAg
ICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShpbmRleC52
YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGluZGV4
LnZhbHVlKCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTAsNyArMTUwLDcg
QEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGUKICAgICAgICAgICAgIHx8IGlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSkKICAgICAgICAgdGhpc09iamVjdC0+b3ZlcnJp
ZGVUaGluZ3Modm0pOwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgoaWRlbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4
UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZUFy
Z3VtZW50KHZtLCBpbmRleC52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODQs
NyArMTg0LDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgfHwgaWRlbnQgPT0g
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpCiAgICAgICAgIHRoaXNPYmplY3QtPm92
ZXJyaWRlVGhpbmdzSWZOZWNlc3Nhcnkodm0pOwogICAgIGVsc2UgewotICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7
CiAgICAgICAgIGlmIChvcHRpb25hbEluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4
UXVpY2tseShvcHRpb25hbEluZGV4LnZhbHVlKCkpKSB7CiAgICAgICAgICAgICB1aW50MzJfdCBp
bmRleCA9IG9wdGlvbmFsSW5kZXgudmFsdWUoKTsKICAgICAgICAgICAgIGlmICghZGVzY3JpcHRv
ci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5kZXggMjlhNTdlNjFjYjA3MTc1MGFi
OTg5MzhjODM5NmM3NGUzYWU2NWQ2Yi4uMWJiZTZlOGM2ZjhiZGM5NTljNWQzNWRkZjUyZWRhZmQ5
MjJjMTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3du
UHJvcGVydHlDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093
blByb3BlcnR5Q2FjaGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNh
Y2hlIHsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RydWN0dXJlSUQp
ICsgaW1wbC0+aGFzaCgpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8Ym9v
bD4gZ2V0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcE5hbWUpCisgICAg
QUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdldChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVydHlOYW1lIHByb3BOYW1lKQogICAgIHsKICAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIGltcGwgPSBwcm9wTmFtZS51aWQoKTsKICAgICAgICAgU3RydWN0dXJlSUQgaWQgPSBzdHJ1
Y3R1cmUtPmlkKCk7CkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIEhhc093blByb3BlcnR5Q2FjaGUg
ewogICAgICAgICBFbnRyeSYgZW50cnkgPSBiaXR3aXNlX2Nhc3Q8RW50cnkqPih0aGlzKVtpbmRl
eF07CiAgICAgICAgIGlmIChlbnRyeS5zdHJ1Y3R1cmVJRCA9PSBpZCAmJiBlbnRyeS5pbXBsLmdl
dCgpID09IGltcGwpCiAgICAgICAgICAgICByZXR1cm4gZW50cnkucmVzdWx0OwotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgdHJ5QWRkKFZNJiB2bSwgUHJvcGVydHlTbG90JiBzbG90LCBK
U09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcE5hbWUsIGJvb2wgcmVzdWx0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKaW5kZXggM2E5ZDJkNzA3
NjlmMWY5YTU2MzJlZmZkNmViZDdjNWIxZTBlNWJkYi4uNWJkMDExNzIyMGNmYTdiZjY3NDExNmRm
NjQ4Yjg4YWI4NTMxYzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGFzaE1hcEltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNo
TWFwSW1wbC5oCkBAIC0yNTMsMTYgKzI1MywxNiBAQCBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IGpz
TWFwSGFzaChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1
cm4gd2FuZ3NJbnQ2NEhhc2gocmF3VmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIE9wdGlvbmFs
PHVpbnQzMl90PiBjb25jdXJyZW50SlNNYXBIYXNoKEpTVmFsdWUga2V5KQorQUxXQVlTX0lOTElO
RSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb25jdXJyZW50SlNNYXBIYXNoKEpTVmFsdWUga2V5
KQogewogICAgIGtleSA9IG5vcm1hbGl6ZU1hcEtleShrZXkpOwogICAgIGlmIChrZXkuaXNTdHJp
bmcoKSkgewogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoa2V5KTsKICAgICAg
ICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkgPiAxMCAqIDEwMjQpCi0gICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNvbnN0
IFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgICBp
ZiAoIWltcGwpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBpbXBsLT5jb25jdXJyZW50SGFzaCgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4
IDU4MWJhNDI0YzI5NWQ2ZGUxMGM0ZGRiYWJjM2JhNmM4ODc1MDlmYTcuLjI1ZTE2YWUzNDE3ZDZk
MDI2OWZmNGY3MzYxZGQ4YTI2ZjI0M2M4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JZGVudGlmaWVyLmgKQEAgLTM4LDQ2ICszOCw0NiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNJbmRleCh1aW50MzJfdCBpbmRleCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBDaGFy
VHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQorQUxXQVlTX0lOTElORSBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJl
ci4KICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBHZXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgdHVy
bmluZyBpdCBpbnRvIGEgZGlnaXQuCiAgICAgdWludDMyX3QgdmFsdWUgPSBjaGFyYWN0ZXJzWzBd
IC0gJzAnOwogICAgIGlmICh2YWx1ZSA+IDkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ2hlY2sgZm9yIGxlYWRpbmcgemVy
b3MuIElmIHRoZSBmaXJzdCBjaGFyYWNoZXIgaXMgMCwgdGhlbiB0aGUKICAgICAvLyBsZW5ndGgg
b2YgdGhlIHN0cmluZyBtdXN0IGJlIG9uZSAtIGUuZy4gIjA0MiIgaXMgbm90IGVxdWFsIHRvICI0
MiIuCiAgICAgaWYgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHdoaWxlICgtLWxlbmd0aCkg
ewogICAgICAgICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93
IG91dCBvZiAzMiBiaXRzLgogICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB2YWx1ZSAqPSAxMDsKIAogICAgICAgICAvLyBHZXQgdGhlIG5leHQgY2hh
cmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBkaWdpdC4KICAgICAgICAgdWludDMyX3QgbmV3VmFs
dWUgPSAqKCsrY2hhcmFjdGVycykgLSAnMCc7CiAgICAgICAgIGlmIChuZXdWYWx1ZSA+IDkpCi0g
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgLy8gQWRkIGluIHRoZSBvbGQgdmFsdWUsIGNoZWNraW5nIGZvciBvdmVy
ZmxvdyBvdXQgb2YgMzIgYml0cy4KICAgICAgICAgbmV3VmFsdWUgKz0gdmFsdWU7CiAgICAgICAg
IGlmIChuZXdWYWx1ZSA8IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB2YWx1ZSA9IG5ld1ZhbHVlOwog
ICAgIH0KIAogICAgIGlmICghaXNJbmRleCh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAot
QUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChTdHJpbmdJbXBsJiBp
bXBsKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFN0
cmluZ0ltcGwmIGltcGwpCiB7CiAgICAgaWYgKGltcGwuaXM4Qml0KCkpCiAgICAgICAgIHJldHVy
biBwYXJzZUluZGV4KGltcGwuY2hhcmFjdGVyczgoKSwgaW1wbC5sZW5ndGgoKSk7CkBAIC0yNzEs
MTMgKzI3MSwxMyBAQCBpbmxpbmUgYm9vbCBJZGVudGlmaWVyOjplcXVhbChjb25zdCBTdHJpbmdJ
bXBsKiByLCBjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVuZwogICAgIHJldHVybiBXVEY6OmVx
dWFsKHIsIHMsIGxlbmd0aCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+
IHBhcnNlSW5kZXgoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0FMV0FZU19JTkxJTkUg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogewogICAgIGF1dG8gdWlkID0gaWRlbnRpZmllci5pbXBsKCk7CiAgICAgaWYgKCF1
aWQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBwYXJzZUluZGV4KCp1aWQpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDYwOTVh
M2Q1MDNiMjM5NzA3YmEyNzliZWI2NzlmMzg5NTUwYmU1MzYuLmNhOTc4MTIwN2QxNzc3MjcyN2E3
N2VkMjlkYmRiZTQxZjQ1OTdmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogCiAg
ICAgLy8gNC4gRWxzZSBpZiBQIGlzIGFuIGFycmF5IGluZGV4ICgxNS40KSwgdGhlbgogICAgIC8v
IGEuIExldCBpbmRleCBiZSBUb1VpbnQzMihQKS4KLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkgewogICAgICAgICAvLyBiLiBSZWplY3QgaWYgaW5kZXggPj0gb2xkTGVuIGFuZCBvbGRM
ZW5EZXNjLltbV3JpdGFibGVdXSBpcyBmYWxzZS4KICAgICAgICAgdWludDMyX3QgaW5kZXggPSBv
cHRpb25hbEluZGV4LnZhbHVlKCk7CiAgICAgICAgIC8vIEZJWE1FOiBOb3RoaW5nIHByZXZlbnRz
IHRoaXMgZnJvbSBiZWluZyBjYWxsZWQgb24gYSBSdW50aW1lQXJyYXksIGFuZCB0aGUgbGVuZ3Ro
IGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiAwIGluIHRoYXQgY2FzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKaW5kZXggZDAxYTc3OTFhM2NmNGZh
N2Q4MzJjYjRhNTI3ZWI0YjNlMmVjMTBmYS4uMWY4YzZkNTkwNjNjMDUzNTFkYmNjMDhjYTQ0MmMw
YWI3ZmQ2Y2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKQEAgLTc2LDEwICs3NiwxMCBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2Fz
ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIGlzVW5kZWZpbmVkKCkgPyBQTmFO
IDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0IHRvIDAuCiB9CiAKLU9wdGlvbmFs
PGRvdWJsZT4gSlNWYWx1ZTo6dG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBKU1ZhbHVlOjp0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdAogewog
ICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpc051bWJlcigpKQogICAgICAgICByZXR1cm4gYXNO
dW1iZXIoKTsKICAgICBpZiAoaXNCb29sZWFuKCkpCkBAIC04OCw3ICs4OCw3IEBAIE9wdGlvbmFs
PGRvdWJsZT4gSlNWYWx1ZTo6dG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIFBOYU47CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBKU09iamVjdCog
SlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0
VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3Ry
aWN0TW9kZSgpKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2V0dGVycyBvciBn
ZXR0ZXJzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAyMDJhMWY3Yzk1MjZlZWNkNWQ3NTQxNjM3Y2VmYjc5YWMz
Y2ZhNjFlLi4zODIzMDJlZThlNjYyM2Y1NTkyMmY2MTRlNjM0YzYzN2RhNjg1NDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yNTEsNyArMjUxLDcg
QEAgY2xhc3MgSlNWYWx1ZSB7CiAgICAgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0
OwogCiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBpdCBjYW4gYmUgZG9uZSB3aXRob3V0
IHNpZGUgZWZmZWN0cy4KLSAgICBPcHRpb25hbDxkb3VibGU+IHRvTnVtYmVyRnJvbVByaW1pdGl2
ZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0b051bWJlckZyb21QcmltaXRp
dmUoKSBjb25zdDsKIAogICAgIEpTU3RyaW5nKiB0b1N0cmluZyhFeGVjU3RhdGUqKSBjb25zdDsg
Ly8gT24gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4KICAgICBKU1N0
cmluZyogdG9TdHJpbmdPck51bGwoRXhlY1N0YXRlKikgY29uc3Q7IC8vIE9uIGV4Y2VwdGlvbiwg
dGhpcyByZXR1cm5zIG51bGwsIHRvIG1ha2UgZXhjZXB0aW9uIGNoZWNrcyBmYXN0ZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAppbmRleCAzNTUzOTBkNjU3MmYxMDBkYjZjNzU3NDNmMzAyOWVkYTFiNzA4NWNhLi45
Y2MwNWZhZDRjMWNlMGEwYTMyZTM1Y2FhZTBiOWRkNWJjNTk4ZTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgK
QEAgLTE4OSw3ICsxODksNyBAQCBjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1Ymxp
YyBKU0FycmF5QnVmZmVyVmlldyB7CiAKICAgICBzdGF0aWMgRWxlbWVudFR5cGUgdG9BZGFwdG9y
TmF0aXZlRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVy
biB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihleGVjLCBqc1ZhbHVlKTsgfQogCi0gICAgc3Rh
dGljIE9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0
Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNW
YWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxB
ZGFwdG9yPihqc1ZhbHVlKTsgfQogCiAgICAgdm9pZCBzb3J0KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCAzOGFmNjliZjRmODc1
YWI3OTUyNWIxNjM5NjkxYWY4MWIyZDMzZGE5Li5lZGI5MzhjZjg2NTc1ZTAzZjQ5NGFhMmQzOTg2
YTI5ODcyYWEzODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld0Zyb21JdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIFN0cgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1pbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQg
b2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQoraW5saW5lIEpTT2JqZWN0KiBj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVu
c2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMjQwLDcgKzI0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpT
VmFsdWUgZmlyc3RWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIHVuc2ln
bmVkIG9mZnNldCA9IDA7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9IE51bGxvcHQ7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0OwogICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihmaXJzdFZhbHVlKSAmJiBhcmdDb3Vu
dCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9V
SW50MzIoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAzNjdiMTM1MWU0N2Rh
OGQyNTgwN2ZlNWJjODFjYjE0NDU0OTIyYTRmLi43MDhjNTJjNDYxM2RjNjJmNzFlMjU2YmIwYjk0
Y2UwYjI2NzA0MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzQ1LDcgKzM0
NSw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3Bl
cnR5U2xvdCgKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAKLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpIHsKICAgICAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIE5vbmUsIHRocm93TmV1dGVyZWRUeXBlZEFycmF5
VHlwZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzcxLDcgKzM3MSw3IEBA
IGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCgKICAgICAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pbnRlZ2VyLWluZGV4ZWQtZXhvdGljLW9i
amVjdHMtc2V0LXAtdi1yZWNlaXZlcgogICAgIC8vIElnbm9yZSB0aGUgcmVjZWl2ZXIgZXZlbiBp
ZiB0aGUgcmVjZWl2ZXIgaXMgYWx0ZXJlZCB0byBub24gYmFzZSB2YWx1ZS4KICAgICAvLyA5LjQu
NS41LTItYi1pIFJldHVybiA/IEludGVnZXJJbmRleGVkRWxlbWVudFNldChPLCBudW1lcmljSW5k
ZXgsIFYpLgotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAg
ICAgCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAppbmRleCA3ZDFhMDEyYmI0ODliZjg0MjQwM2I1M2JkNTZmNDY0ZTE2NjZh
NWM0Li44YmY5MjIyOWRkZTliMGNhMTQ5ZTY5MzMwNTEwMjkyYTMyZjJhNzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC04OSwy
MCArODksMjAgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhw
b3J0RW50cnkmIGVudHJ5KQogICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRy
eSk7IC8vIFRoaXMgaXMgZ3VhcmFudGVlZCBieSB0aGUgcGFyc2VyLgogfQogCi1hdXRvIEpTTW9k
dWxlUmVjb3JkOjp0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1l
KSAtPiBPcHRpb25hbDxJbXBvcnRFbnRyeT4KK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnRyeUdldElt
cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8
SW1wb3J0RW50cnk+CiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmll
cy5maW5kKGxvY2FsTmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPEltcG9y
dEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEltcG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOwog
fQogCi1hdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5n
SW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8RXhwb3J0RW50cnk+CithdXRvIEpTTW9kdWxl
UmVjb3JkOjp0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkg
LT4gc3RkOjpvcHRpb25hbDxFeHBvcnRFbnRyeT4KIHsKICAgICBjb25zdCBhdXRvIGl0ZXJhdG9y
ID0gbV9leHBvcnRFbnRyaWVzLmZpbmQoZXhwb3J0TmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yID09
IG1fZXhwb3J0RW50cmllcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgcmV0
dXJuIE9wdGlvbmFsPEV4cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5Pihp
dGVyYXRvci0+dmFsdWUpOwogfQogCiBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6
Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmll
ciYgbG9jYWxOYW1lKSAtPiBFeHBvcnRFbnRyeQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEpTTW9kdWxl
UmVjb3JkKiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0CiAKIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVJbXBvcnQoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpIC0+IFJlc29sdXRpb24K
IHsKLSAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IHRyeUdl
dEltcG9ydEVudHJ5KGxvY2FsTmFtZS5pbXBsKCkpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1wb3J0
RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSB0cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUu
aW1wbCgpKTsKICAgICBpZiAoIW9wdGlvbmFsSW1wb3J0RW50cnkpCiAgICAgICAgIHJldHVybiBS
ZXNvbHV0aW9uOjpub3RGb3VuZCgpOwogCkBAIC0yMTQsMTIgKzIxNCwxMiBAQCBpbmxpbmUgYm9v
bCBKU01vZHVsZVJlY29yZDo6UmVzb2x2ZVF1ZXJ5OjpIYXNoOjplcXVhbChjb25zdCBSZXNvbHZl
UXVlcnkmIGxocywgYwogICAgIHJldHVybiBsaHMubW9kdWxlUmVjb3JkID09IHJocy5tb2R1bGVS
ZWNvcmQgJiYgbGhzLmV4cG9ydE5hbWUgPT0gcmhzLmV4cG9ydE5hbWU7CiB9CiAKLWF1dG8gSlNN
b2R1bGVSZWNvcmQ6OnRyeUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4
cG9ydE5hbWUpIC0+IE9wdGlvbmFsPFJlc29sdXRpb24+CithdXRvIEpTTW9kdWxlUmVjb3JkOjp0
cnlHZXRDYWNoZWRSZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBz
dGQ6Om9wdGlvbmFsPFJlc29sdXRpb24+CiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1f
cmVzb2x1dGlvbkNhY2hlLmZpbmQoZXhwb3J0TmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1f
cmVzb2x1dGlvbkNhY2hlLmVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICByZXR1
cm4gT3B0aW9uYWw8UmVzb2x1dGlvbj4oaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPihpdGVy
YXRvci0+dmFsdWUpOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpjYWNoZVJlc29sdXRpb24o
VW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUsIGNvbnN0IFJlc29sdXRpb24mIHJlc29sdXRp
b24pCkBAIC01NTcsMTQgKzU1NywxNCBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhw
b3J0SW1wbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFJlc29sdmVRdWVyeSYgcm9vdAogCiAgICAg
ICAgICAgICAvLyAgNC4gT25jZSB3ZSBmb2xsb3cgc3RhciBsaW5rcywgd2Ugc2hvdWxkIG5vdCBy
ZXRyaWV2ZSB0aGUgcmVzdWx0IGZyb20gdGhlIGNhY2hlIGFuZCBzaG91bGQgbm90IGNhY2hlIHRo
ZSByZXN1bHQuCiAgICAgICAgICAgICBpZiAoIWZvdW5kU3RhckxpbmtzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKE9wdGlvbmFsPFJlc29sdXRpb24+IGNhY2hlZFJlc29sdXRpb24gPSBtb2R1bGVS
ZWNvcmQtPnRyeUdldENhY2hlZFJlc29sdXRpb24ocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPiBjYWNoZWRSZXNv
bHV0aW9uID0gbW9kdWxlUmVjb3JkLT50cnlHZXRDYWNoZWRSZXNvbHV0aW9uKHF1ZXJ5LmV4cG9y
dE5hbWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRU
b3AoKmNhY2hlZFJlc29sdXRpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
c29sdXRpb246OmFtYmlndW91cygpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbnN0IE9wdGlv
bmFsPEV4cG9ydEVudHJ5PiBvcHRpb25hbEV4cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkLT50cnlH
ZXRFeHBvcnRFbnRyeShxdWVyeS5leHBvcnROYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RXhwb3J0RW50cnk+IG9wdGlvbmFsRXhwb3J0RW50cnkgPSBtb2R1bGVS
ZWNvcmQtPnRyeUdldEV4cG9ydEVudHJ5KHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpOwogICAgICAg
ICAgICAgaWYgKCFvcHRpb25hbEV4cG9ydEVudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhlcmUgaXMgbm8gbWF0Y2hlZCBleHBvcnRlZCBiaW5kaW5nIGluIHRoZSBjdXJyZW50IG1vZHVs
ZSwKICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3RhcnMuCkBA
IC02NDcsNyArNjQ3LDcgQEAgYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydEltcGwo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJvb3QKIGF1dG8gSlNNb2R1bGVS
ZWNvcmQ6OnJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBl
eHBvcnROYW1lKSAtPiBSZXNvbHV0aW9uCiB7CiAgICAgLy8gTG9vayB1cCB0aGUgY2FjaGVkIHJl
c29sdXRpb24gZmlyc3QgYmVmb3JlIGVudGVyaW5nIHRoZSByZXNvbHZpbmcgbG9vcCwgc2luY2Ug
dGhlIGxvb3Agc2V0dXAgdGFrZXMgc29tZSBjb3N0LgotICAgIGlmIChPcHRpb25hbDxSZXNvbHV0
aW9uPiBjYWNoZWRSZXNvbHV0aW9uID0gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihleHBvcnROYW1l
LmltcGwoKSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4gY2FjaGVkUmVzb2x1
dGlvbiA9IHRyeUdldENhY2hlZFJlc29sdXRpb24oZXhwb3J0TmFtZS5pbXBsKCkpKQogICAgICAg
ICByZXR1cm4gKmNhY2hlZFJlc29sdXRpb247CiAgICAgcmV0dXJuIHJlc29sdmVFeHBvcnRJbXBs
KGV4ZWMsIFJlc29sdmVRdWVyeSh0aGlzLCBleHBvcnROYW1lLmltcGwoKSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggOTQyOGRk
YTU1YWY3MjlkOGRhMGQyZWZjNzFlYzU4NmI3YzhkZDEzMC4uODhjOWU3ODA0Y2EyZWU3N2I0MjZh
MDJmNTA0OTU3OTkwOWNjZjk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5oCkBAIC05OCw4ICs5OCw4IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3Jk
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB2b2lkIGFkZEltcG9ydEVudHJ5
KGNvbnN0IEltcG9ydEVudHJ5Jik7CiAgICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBv
cnRFbnRyeSYpOwogCi0gICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IHRyeUdldEltcG9ydEVudHJ5
KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpOwotICAgIE9wdGlvbmFsPEV4cG9ydEVudHJ5
PiB0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CisgICAg
c3RkOjpvcHRpb25hbDxJbXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmlu
Z0ltcGwqIGxvY2FsTmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxFeHBvcnRFbnRyeT4gdHJ5R2V0
RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpOwogCiAgICAgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZTsgfQog
ICAgIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxl
S2V5OyB9CkBAIC0xNjIsNyArMTYyLDcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMg
SlNEZXN0cnVjdGlibGVPYmplY3QgewogCiAgICAgc3RydWN0IFJlc29sdmVRdWVyeTsKICAgICBz
dGF0aWMgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0SW1wbChFeGVjU3RhdGUqLCBjb25zdCBSZXNv
bHZlUXVlcnkmKTsKLSAgICBPcHRpb25hbDxSZXNvbHV0aW9uPiB0cnlHZXRDYWNoZWRSZXNvbHV0
aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
c29sdXRpb24+IHRyeUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9y
dE5hbWUpOwogICAgIHZvaWQgY2FjaGVSZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBv
cnROYW1lLCBjb25zdCBSZXNvbHV0aW9uJik7CiAKICAgICAvLyBUaGUgbG9hZGVyIHJlc29sdmVz
IHRoZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1vZHVsZSBrZXkg
aXMgdGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggZjUzZGI2MTk4NmVhZGRhYTIz
YTI0NWRlNTRhZTA5YzU4ZjBhYjc2NC4uODg5NGJiNzI5ZGE1MzdhNDIwN2UzZWUwMjVlZTY1MTAy
ZTNlOWQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApA
QCAtMTM2Nyw3ICsxMzY3LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1YKIHsKICAgICBBU1NF
UlQodmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAK
LSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4
LnZhbHVlKCksIHZhbHVlLCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3Qp
OwogCiAgICAgcmV0dXJuIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcyk7CkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBib29s
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4oY2VsbCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCkpOwogCiAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKQEAgLTI4OTksNyArMjg5OSw3IEBAIHN0YXRpYyBib29sIHB1
dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGFyZ2V0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVyCiAKIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE1heUJlSW5kZXgoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewotICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFs
dWUoKSwgdmFsdWUpOwogICAgIHJldHVybiBwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSk7CiB9CkBAIC0zMDUyLDcgKzMwNTIsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZp
bmVPd25Ob25JbmRleFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TgogYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CiAgICAgLy8g
SWYgaXQncyBhbiBhcnJheSBpbmRleCwgdGhlbiB1c2UgdGhlIGluZGV4ZWQgcHJvcGVydHkgc3Rv
cmFnZS4KLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIC8vIGMuIExldCBzdWNjZWVkZWQgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBkZWZhdWx0IFtbRGVmaW5lT3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2QgKDguMTIuOSkgb24gQSBwYXNzaW5nIFAsIERlc2MsIGFuZCBmYWxzZSBh
cyBhcmd1bWVudHMuCiAgICAgICAgIC8vIGQuIFJlamVjdCBpZiBzdWNjZWVkZWQgaXMgZmFsc2Uu
CiAgICAgICAgIC8vIGUuIElmIGluZGV4ID49IG9sZExlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNjIyMGVjN2ExYmE4ZThhNzQ5ZGI0YjA2Y2Q0MjkzYTg4
NWFmN2Y5Mi4uZDdmNTBkZjA3NDJmOTFhMzc3OTBiNDkwZGI2MWJlZGE3MTc4OTIyMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC0xMzIzLDcgKzEzMjMsNyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKm9i
amVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3Bl
cnR5U2xvdCh2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgob2JqZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpLCBzbG90KTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkBAIC0xMzQxLDcgKzEzNDEsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQog
ICAgICAgICAgICAgLy8gZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QpLCBzbyB3ZSBjYW5ub3Qg
c2FmZWx5IGNhbGwgdGhlIG92ZXJyaWRkZW4gZ2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgICAg
ICAvLyAobGVzdCB3ZSByZXR1cm4gYSBwcm9wZXJ0eSBmcm9tIGEgcHJvdG90eXBlIHRoYXQgaXMg
c2hhZG93ZWQpLiBDaGVjayBub3cgZm9yIGFuIGluZGV4LAogICAgICAgICAgICAgLy8gaWYgc28g
d2UgbmVlZCB0byBzdGFydCBhZnJlc2ggZnJvbSB0aGlzIG9iamVjdC4KLSAgICAgICAgICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisg
ICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFByb3BlcnR5U2xvdChl
eGVjLCBpbmRleC52YWx1ZSgpLCBzbG90KTsKICAgICAgICAgICAgIC8vIFNhZmUgdG8gY29udGlu
dWUgc2VhcmNoaW5nIGZyb20gY3VycmVudCBwb3NpdGlvbjsgY2FsbCBnZXROb25JbmRleFByb3Bl
cnR5U2xvdCB0byBhdm9pZAogICAgICAgICAgICAgLy8gcGFyc2luZyB0aGUgaW50IGFnYWluLgpA
QCAtMTM1Nyw3ICsxMzU3LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgb2Jq
ZWN0ID0gYXNPYmplY3QocHJvdG90eXBlKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIGdldFByb3BlcnR5U2xvdChleGVjLCBpbmRleC52YWx1ZSgpLCBzbG90KTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCBpbmxpbmUgYm9vbCBKU09i
amVjdDo6cHV0T3duRGF0YVByb3BlcnR5TWF5QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZQogICAgIEFTU0VSVCghc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJv
cGVydGllcygpKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5k
ZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIFB1dERpcmVjdEluZGV4TGlrZVB1dERp
cmVjdCk7CiAKICAgICByZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCmluZGV4IGFhNTY4YWVlMmEwMWY0YjBh
MjJkMWVmZmU5Njc4YThmOWIzM2UzMjYuLjMyMWYyZWU3NDdhZWU3MDdlNjcxN2RjODFhMDZkMTMw
ODVmNzhmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCkBAIC0xNzIsNyArMTcyLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0
OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIAog
ICAgIC8vIFRyeSBpbmRleGVkIHB1dCBmaXJzdC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgY29ycmVj
dG5lc3MsIHNpbmNlIGxvYWRzIG9uIHByb3BlcnR5IG5hbWVzIHRoYXQgYXBwZWFyIGxpa2UKICAg
ICAvLyB2YWxpZCBpbmRpY2VzIHdpbGwgbmV2ZXIgbG9vayBpbiB0aGUgbmFtZWQgcHJvcGVydHkg
c3RvcmFnZS4KLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09i
amVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwog
CiAgICAgaWYgKHRoaXNPYmplY3QtPmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKGV4ZWMsIHZtLCBw
cm9wZXJ0eU5hbWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKaW5kZXggOTZiYjllYjUzM2YwODJmY2JlMjhiZTQ3Mzk5NDJkN2FlMTI5N2E4ZS4uZWI4Yzky
MTliYjMxOWU5NjU2ZWFlMTgwMzZiYzQ2MTUyOWY3ZDRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgSlNTdHJp
bmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAg
ICAgaWYgKGluZGV4ICYmIGluZGV4LnZhbHVlKCkgPCBsZW5ndGgoKSkgewogICAgICAgICBkZXNj
cmlwdG9yLnNldERlc2NyaXB0b3IoZ2V0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSksIERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggMTQzYzRiY2FiYTdhODRmYTIxNTE0YzZkMWEz
ZTAzYWQ2YjU1ZTBmNy4uMzE2MDFhNGRkYmZmZWM5ZTA1MDI0NzJiYTA3YjNkODA0OWFlMDNkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC02OTEsNyArNjkx
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgbGVuZ3RoKCkpIHsK
ICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldElu
ZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDU2ZTAz
ODk0N2Q2NTA2NzQ3MTQzNTNhNDljNGU4Y2JkZDY4ZDQ0M2IuLjU5OTNiMzIzNmRjMWQ3NGFjNzE2
YzMzMTdmYjE5MzJmZjIwZDNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBAIC02OTAsNyArNjkwLDcgQEAgSlNWYWx1ZSBMaXRlcmFs
UGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAg
ICAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QsIGNvZGVCbG9jayA/IGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkgOiBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIG9i
amVjdFN0YWNrLmxhc3QoKS5wdXQobV9leGVjLCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCkpCisgICAgICAgICAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5wdXREaXJlY3RJbmRleChtX2V4ZWMsIGlu
ZGV4LnZhbHVlKCksIGxhc3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0KHZtLCBpZGVudCwgbGFzdFZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAppbmRleCA0OWNl
NzkxZWJjMTFiNDFiYzg2NDkyOWMyODc0YjJlMWVmOTEyYjJjLi42MzI1Nzg2YmM0NmEwN2YyYTU5
YmUyNDA5MzIwMWI3NzVkZjk5OGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRoQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0aENvbW1vbi5oCkBAIC0xMTgsMTUgKzExOCwxNSBAQCBpbmxpbmUgdWludDMyX3QgdG9VSW50
MzIoZG91YmxlIG51bWJlcikKICAgICByZXR1cm4gdG9JbnQzMihudW1iZXIpOwogfQogCi1pbmxp
bmUgT3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoZG91YmxlIGNv
bnN0YW50KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbEZvckRp
dkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQogewogICAgIC8vIE5vICJ3ZWlyZCIgbnVtYmVycyAo
TmFOLCBEZW5vcm1hbCwgZXRjKS4KICAgICBpZiAoIWNvbnN0YW50IHx8ICFzdGQ6Omlzbm9ybWFs
KGNvbnN0YW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpbnQgZXhwb25lbnQ7CiAgICAgaWYgKHN0ZDo6ZnJleHAoY29uc3Rh
bnQsICZleHBvbmVudCkgIT0gMC41KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIE5vdGUgdGhhdCBmcmV4cCgpIHJldHVybnMg
dGhlIHZhbHVlIGRpdmlkZWQgYnkgdHdvCiAgICAgLy8gc28gd2UgdG8gb2Zmc2V0IHRoaXMgZXhw
b25lbnQgYnkgb25lLgpAQCAtMTM1LDcgKzEzNSw3IEBAIGlubGluZSBPcHRpb25hbDxkb3VibGU+
IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25zdChkb3VibGUgY29uc3RhbnQpCiAgICAgLy8gQSBk
b3VibGUgZXhwb25lbnQgaXMgYmV0d2VlbiAtMTAyMiBhbmQgMTAyMy4KICAgICAvLyBOb3RoaW5n
IHdlIGNhbiBkbyB0byBpbnZlcnQgMTAyMy4KICAgICBpZiAoZXhwb25lbnQgPT0gMTAyMykKLSAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBkb3VibGUgcmVjaXByb2NhbCA9IHN0ZDo6bGRleHAoMSwgLWV4cG9uZW50KTsKICAgICBBU1NF
UlQoc3RkOjppc25vcm1hbChyZWNpcHJvY2FsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCBjZWEyNzc1NzA3ODQ0ZWE4NWEw
NTEwMjE1MTNkYzFmYzE5NDRhODNhLi4yMWNjYjZlNDcyOWI1ZGMyNzE1NmI0MWNiYzAzMTczNzQx
MDU4ODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIAogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBI
YXNPd25Qcm9wZXJ0eUNhY2hlKiBoYXNPd25Qcm9wZXJ0eUNhY2hlID0gdm0uZW5zdXJlSGFzT3du
UHJvcGVydHlDYWNoZSgpOwotICAgIGlmIChPcHRpb25hbDxib29sPiByZXN1bHQgPSBoYXNPd25Q
cm9wZXJ0eUNhY2hlLT5nZXQoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0ID0gaGFzT3duUHJvcGVydHlDYWNoZS0+Z2V0KHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBBU1NFUlQoKnJlc3VsdCA9PSB0aGlzT2Jq
ZWN0LT5oYXNPd25Qcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgQVNTRVJU
KCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKCpyZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmgKaW5kZXggY2U0NjNlMWQ0ODcxODMyNzI1ZGMwNjM0YzllNzli
YmRjNTQ5MTM0Yi4uZWI0NjFkMzZmMDBkN2FjMmJkYzEyZDBjYzNkYjYyN2I2YWU5ODVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9y
LmgKQEAgLTk4LDE2ICs5OCwxNiBAQCBpbmxpbmUgUHJvcGVydHlEZXNjcmlwdG9yIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgZ2V0dGVyLCBKUwogICAgIC8vIFdl
IGFzc3VtZSB0aGF0IHZhbGlkYXRpb24gaXMgYWxyZWFkeSBkb25lLgogICAgIFByb3BlcnR5RGVz
Y3JpcHRvciBkZXNjOwogCi0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IGVudW1lcmFibGUgPSBhdHRy
aWJ1dGVzLmVudW1lcmFibGUoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiBlbnVtZXJh
YmxlID0gYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkpCiAgICAgICAgIGRlc2Muc2V0RW51bWVyYWJs
ZShlbnVtZXJhYmxlLnZhbHVlKCkpOwogCi0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3Vy
YWJsZSA9IGF0dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gY29uZmlndXJhYmxlID0gYXR0cmlidXRlcy5jb25maWd1cmFibGUoKSkKICAgICAgICAg
ZGVzYy5zZXRDb25maWd1cmFibGUoY29uZmlndXJhYmxlLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0
dHJpYnV0ZXMuaGFzVmFsdWUoKSkKICAgICAgICAgZGVzYy5zZXRWYWx1ZSh2YWx1ZSk7CiAKLSAg
ICBpZiAoT3B0aW9uYWw8Ym9vbD4gd3JpdGFibGUgPSBhdHRyaWJ1dGVzLndyaXRhYmxlKCkpCisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gd3JpdGFibGUgPSBhdHRyaWJ1dGVzLndyaXRhYmxl
KCkpCiAgICAgICAgIGRlc2Muc2V0V3JpdGFibGUod3JpdGFibGUudmFsdWUoKSk7CiAKICAgICBp
ZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lLmgKaW5kZXggYzQ3NmM4OGUxYWM5NTVmMmYyNmI5ZjAzNWFhMzQ3MzU1ZWJk
YTYyOS4uZDFkNGQxOTk0NTNiYTg0M2M0MzIyYmIwZDhlOGZhMzM3MjRjZWYyNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTExNCwxMyArMTE0
LDEzIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oUHJvcGVydHlOYW1lIGEsIFByb3BlcnR5TmFt
ZSBiKQogICAgIHJldHVybiBhLnVpZCgpICE9IGIudWlkKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUg
T3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGF1dG8gdWlkID0gcHJvcGVydHlOYW1lLnVpZCgp
OwogICAgIGlmICghdWlkKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcGFyc2VJ
bmRleCgqdWlkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCAzZDYxZGFjYzRjNmVmMTcyZWMwOGJjNjdmMDQ4MTAx
MTViY2JmMzQwLi5iN2ZmNjM2OWQ4ZWNiYTZiZjk5NDY1MDc4YjU3NDRjNWYxNTFjOGUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVy
aWZpZWRTdGFja1RyYWNlcygpCiAgICAgICAgICAgICAgICAgICAgIHN0b3JlQ2FsbGVlSW50b1Rv
cEZyYW1lKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS5mcmFtZXNbMF0udW52ZXJpZmllZENhbGxlZSk7
CiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAxOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9
IHRvcENvZGVCbG9jay0+ZmluZFBDKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS50b3BQQykpIHsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2lu
ID0gdG9wQ29kZUJsb2NrLT5maW5kUEModW5wcm9jZXNzZWRTdGFja1RyYWNlLnRvcFBDKSkgewog
ICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4tPndhbGtVcElubGluZVN0YWNrKFsmXSAoY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbikgewogICAgICAgICAgICAgICAgICAgICBhcHBlbmRDb2Rl
QmxvY2soY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUgPyBjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgOiB0b3BDb2RlQmxvY2ssIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAppbmRleCA1ZWY3NWIwMDViYzE5OWY4MGNm
OTcyZjI0ZjgxZDhlM2Y5NDBlMWRlLi4yMjkyM2U4NDg5N2UyNmEzYWVlMDI1NmI3ZDU0MzBlNGQ4
NjJmODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVj
dC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwKIAogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1
cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzbG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVy
YWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAg
cmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOwogICAgIHJldHVybiBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgYm9v
bCBpc1N0cmluZ093blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nT2JqZWN0KiBvYmpl
Y3QsIFByb3BlcnR5TgogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewog
ICAgICAgICBpZiAob2JqZWN0LT5pbnRlcm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4LnZh
bHVlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3
IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KTsKICAgICBpZiAoaW5kZXggJiYgdGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJ
bmRleChpbmRleC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBK
U09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5o
CmluZGV4IGY1NGZkMDY1ZWQ5NjBlNTUwNjA0N2YwMzgyNjRlNGZhNGMwODM2NDMuLmZkNjE4NDMy
Nzc3Y2ViOTk1NDM5ZjhmNTg1YTczOGRhODRjMjY1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaApAQCAtNDgsMTAgKzQ4LDEwIEBA
IHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdG9OYXRpdmVGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotT3B0aW9u
YWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b24oSlNWYWx1ZSB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4g
dG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBp
ZiAoIXZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCiAgICAgICAgIHJl
dHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbih2YWx1ZS5hc0lu
dDMyKCkpOwogICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29l
cmNpb24odmFsdWUuYXNEb3VibGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCmluZGV4IDBmYWM0ZmU2MDJhZGNkMTZkM2IzMWZj
MDJhNTJkMDk0MWRjNDRjM2IuLjBhZjcxZjRjNjFmYzI0MmNhOGE3OTEwN2ZjYmI2ZmM1NjMxNWFi
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlB
ZGFwdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlB
ZGFwdG9ycy5oCkBAIC03OSwyNiArNzksMjYgQEAgc3RydWN0IEludGVncmFsVHlwZWRBcnJheUFk
YXB0b3IgewogICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMih2
YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUlu
dDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIGlmICgodmFsdWUgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
dmFsdWUpID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFZhbHVlKSkgfHwgdmFsdWUgPCBzdGF0
aWNfY2FzdDxpbnQzMl90PihtaW5WYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRv
TmF0aXZlRnJvbVVpbnQzMldpdGhvdXRDb2VyY2lvbih1aW50MzJfdCB2YWx1ZSkKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24o
dWludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPiBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obWF4VmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
eXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZl
RnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIFR5cGUgaW50ZWdlciA9IHN0YXRpY19jYXN0PFR5cGU+KHZh
bHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgaWYgKHZhbHVlIDwgMCkKICAgICAgICAgICAgIHJldHVybiB0b05h
dGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkp
OwpAQCAtMTQ5LDEyICsxNDksMTIgQEAgc3RydWN0IEZsb2F0VHlwZWRBcnJheUFkYXB0b3Igewog
ICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhv
dXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+
IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogICAgIH0KIAotICAgIHN0
YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24oZG91
YmxlIHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURv
dWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoc3Rk
Ojppc25hbih2YWx1ZSkgfHwgc3RkOjppc2luZih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwpAQCAtMTYyLDEwICsxNjIsMTAgQEAgc3RydWN0IEZs
b2F0VHlwZWRBcnJheUFkYXB0b3IgewogICAgICAgICBUeXBlIHZhbHVlUmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8VHlwZT4odmFsdWUpOwogCiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlUmVzdWx0KSAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAodmFsdWUgPCBtaW5WYWx1
ZSB8fCB2YWx1ZSA+IG1heFZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB2YWx1ZVJlc3Vs
dDsKICAgICB9CkBAIC0yNTUsMTkgKzI1NSwxOSBAQCBzdHJ1Y3QgVWludDhDbGFtcGVkQWRhcHRv
ciB7CiAgICAgICAgIHJldHVybiBPdGhlckFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyKHZhbHVl
KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUlu
dDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA+IG1heFZhbHVlIHx8IHZhbHVlIDwgbWluVmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENv
ZXJjaW9uKGRvdWJsZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0b05h
dGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24oZG91YmxlIHZhbHVlKQogICAgIHsKICAgICAg
ICAgdWludDhfdCBpbnRlZ2VyID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUpOwogICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbnRlZ2VyKSAhPSB2YWx1ZSkKLSAgICAgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4gaW50ZWdlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
cm9zc1RocmVhZFF1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKaW5k
ZXggMzQ2YmU5NTc1ODRmMjBmMWY3N2MxODA4ODcxZTBlYWRhOWY5NGU5ZC4uODA0M2RiZDdhNWI2
YzFiOTlkNDEyNTg4YTU1MmNlMThjMmI3NGRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkUXVldWUu
aApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDcm9zc1RocmVhZFF1ZXVlIHsKICAgICB2b2lkIGFw
cGVuZChEYXRhVHlwZSYmKTsKIAogICAgIERhdGFUeXBlIHdhaXRGb3JNZXNzYWdlKCk7Ci0gICAg
T3B0aW9uYWw8RGF0YVR5cGU+IHRyeUdldE1lc3NhZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERh
dGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7CiAKICAgICBib29sIGlzS2lsbGVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIApAQCAtODIsNyArODIsNyBAQCBEYXRhVHlwZSBDcm9zc1RocmVhZFF1
ZXVlPERhdGFUeXBlPjo6d2FpdEZvck1lc3NhZ2UoKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBE
YXRhVHlwZT4KLU9wdGlvbmFsPERhdGFUeXBlPiBDcm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6
dHJ5R2V0TWVzc2FnZSgpCitzdGQ6Om9wdGlvbmFsPERhdGFUeXBlPiBDcm9zc1RocmVhZFF1ZXVl
PERhdGFUeXBlPjo6dHJ5R2V0TWVzc2FnZSgpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9j
ayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaAppbmRleCAxMDNkZmFjYjI0OTk4ZDg1YTU4MDUzNTI4ZjE1YmNlYjM0MDlk
MTViLi4xZmViMTIxNGM3ZGVhYWYyYzIzNmVlYTFlMDY2OThkYTY5NzNjYTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5o
CkBAIC0yOCw3ICsyOCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEZ1bmN0aW9uOwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVkOwogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgTmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBPcHRpb25TZXQ7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBPcHRpb25hbDsKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBSZWY7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHI7CkBAIC02MSw3
ICs2MCw2IEBAIHVzaW5nIFdURjo6RnVuY3Rpb25EaXNwYXRjaGVyOwogdXNpbmcgV1RGOjpMYXp5
TmV2ZXJEZXN0cm95ZWQ7CiB1c2luZyBXVEY6Ok5ldmVyRGVzdHJveWVkOwogdXNpbmcgV1RGOjpP
cHRpb25TZXQ7Ci11c2luZyBXVEY6Ok9wdGlvbmFsOwogdXNpbmcgV1RGOjpPcmRpbmFsTnVtYmVy
OwogdXNpbmcgV1RGOjpQYXNzUmVmUHRyOwogdXNpbmcgV1RGOjpQcmludFN0cmVhbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hU
cmFpdHMuaAppbmRleCBlYjA0ODQ3NDc4MzUxYjU2YTNjOTY1MGYzZTUxNDk4MTU2NGM2NTRlLi41
NDJlN2FkMmNiZDNkZjBlZTA5ZTAwNGYyMzM5ODlhMmZmYzAwOTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5o
CkBAIC0xODgsOCArMTg4LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFp
dHM8UmVmPFA+PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxSZWY8UD4+IHsKICAgICBzdGF0aWMg
UGVla1R5cGUgcGVlayhjb25zdCBSZWY8UD4mIHZhbHVlKSB7IHJldHVybiBjb25zdF9jYXN0PFBl
ZWtUeXBlPih2YWx1ZS5wdHJBbGxvd2luZ0hhc2hUYWJsZUVtcHR5VmFsdWUoKSk7IH0KICAgICBz
dGF0aWMgUGVla1R5cGUgcGVlayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIAotICAgIHR5
cGVkZWYgT3B0aW9uYWw8UmVmPFA+PiBUYWtlVHlwZTsKLSAgICBzdGF0aWMgVGFrZVR5cGUgdGFr
ZShSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IE51bGxvcHQg
OiBPcHRpb25hbDxSZWY8UD4+KFdURk1vdmUodmFsdWUpKTsgfQorICAgIHR5cGVkZWYgc3RkOjpv
cHRpb25hbDxSZWY8UD4+IFRha2VUeXBlOworICAgIHN0YXRpYyBUYWtlVHlwZSB0YWtlKFJlZjxQ
PiYmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5VmFsdWUodmFsdWUpID8gc3RkOjpudWxsb3B0IDog
c3RkOjpvcHRpb25hbDxSZWY8UD4+KFdURk1vdmUodmFsdWUpKTsgfQogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxTdHJpbmc+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFN0cmlu
Zz4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRleCA5NDZmMDJlNjQ1YjIwODhmZTMxNGQ5ZjFkYmUy
NDViZjMxZjM2YjhjLi5jMjEwMmRkODFmZmQ4M2IwMDYyNDlmMTFiODFiNzI1YjQzOWE5YWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtMTkwLDExICsxOTAsMTEgQEAgYm9vbCBjYW5BY2Nlc3NU
aHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKIH0KICNl
bmRpZgogCi1zdGF0aWMgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPj4qIGlz
R0NUaHJlYWQ7CitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8c3RkOjpvcHRpb25hbDxHQ1RocmVhZFR5
cGU+PiogaXNHQ1RocmVhZDsKIAogdm9pZCBpbml0aWFsaXplR0NUaHJlYWRzKCkKIHsKLSAgICBp
c0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPE9wdGlvbmFsPEdDVGhyZWFkVHlwZT4+KCk7
CisgICAgaXNHQ1RocmVhZCA9IG5ldyBUaHJlYWRTcGVjaWZpYzxzdGQ6Om9wdGlvbmFsPEdDVGhy
ZWFkVHlwZT4+KCk7CiB9CiAKIHZvaWQgcmVnaXN0ZXJHQ1RocmVhZChHQ1RocmVhZFR5cGUgdHlw
ZSkKQEAgLTIxNiwxMiArMjE2LDEyIEBAIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpCiAg
ICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi1PcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1h
eUJlR0NUaHJlYWQoKQorc3RkOjpvcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQo
KQogewogICAgIGlmICghaXNHQ1RocmVhZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFpc0dDVGhyZWFkLT5pc1NldCgpKQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gKippc0dDVGhyZWFkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9N
YWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggNDAyYTE4Y2Uy
NTU1ZTY2OWY0MzYzZjA4NGNmZWUwMjI1ZDIxNGRkNi4uOTBiOGVjZTFjNjc5Zjk4YTRhZjg2ODRk
MWNiMzI4ODUzOTFjY2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaApAQCAtNzgsNyArNzgsNyBAQCBlbnVt
IGNsYXNzIEdDVGhyZWFkVHlwZSB7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBH
Q1RocmVhZFR5cGUpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFk
KEdDVGhyZWFkVHlwZSk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8R0NUaHJlYWRUeXBl
PiBtYXlCZUdDVGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxHQ1Ro
cmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFp
blRocmVhZE9yR0NUaHJlYWQoKTsKIAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRl
cm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCmlu
ZGV4IDRjYjUzYmY1N2Y4MjllNDRkYTlmYmQ0OWQ2ZmQ5YzhjOThjOTQ0ZDQuLjc2YmEzODhkNWVm
MWZiZTg5OWUwZTk0MTkwY2JiNWIzYjkxZTY0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L09wdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaApAQCAtMSwyNzMgKzEs
MTEwOSBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgT3B0aW9uYWxfaAotI2RlZmluZSBPcHRpb25h
bF9oCi0KLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotLy8gV1RGOjpPcHRpb25hbCBpcyBh
IGNsYXNzIGJhc2VkIG9uIHN0ZDo6b3B0aW9uYWwsIGRlc2NyaWJlZCBoZXJlOgotLy8gaHR0cDov
L3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAxMy9uMzUyNy5o
dG1sCi0vLyBJZiB0aGlzIGVuZHMgdXAgaW4gYSBDKysgc3RhbmRhcmQsIHdlIHNob3VsZCByZXBs
YWNlIG91ciBpbXBsZW1lbnRhdGlvbiB3aXRoIGl0LgorLy8gQ29weXJpZ2h0IChDKSAyMDExIC0g
MjAxMiBBbmRyemVqIEtyemVtaWVuc2tpLgorLy8KKy8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQg
ZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCisvLyBMaWNlbnNl
LCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3Ig
Y29weSBhdAorLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQorLy8KKy8v
IFRoZSBpZGVhIGFuZCBpbnRlcmZhY2UgaXMgYmFzZWQgb24gQm9vc3QuT3B0aW9uYWwgbGlicmFy
eQorLy8gYXV0aG9yZWQgYnkgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwKKy8vCisv
LyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlIC0gVmVyc2lvbiAxLjAgLSBBdWd1c3QgMTd0aCwgMjAw
MworLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9yIG9yZ2FuaXphdGlvbgorLy8gb2J0YWluaW5nIGEgY29weSBvZiB0aGUg
c29mdHdhcmUgYW5kIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGNvdmVyZWQgYnkKKy8vIHRo
aXMgbGljZW5zZSAodGhlICJTb2Z0d2FyZSIpIHRvIHVzZSwgcmVwcm9kdWNlLCBkaXNwbGF5LCBk
aXN0cmlidXRlLAorLy8gZXhlY3V0ZSwgYW5kIHRyYW5zbWl0IHRoZSBTb2Z0d2FyZSwgYW5kIHRv
IHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUKKy8vIFNvZnR3YXJlLCBhbmQgdG8gcGVy
bWl0IHRoaXJkLXBhcnRpZXMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvCisv
LyBkbyBzbywgYWxsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZzoKKy8vCisvLyBUaGUgY29weXJp
Z2h0IG5vdGljZXMgaW4gdGhlIFNvZnR3YXJlIGFuZCB0aGlzIGVudGlyZSBzdGF0ZW1lbnQsIGlu
Y2x1ZGluZworLy8gdGhlIGFib3ZlIGxpY2Vuc2UgZ3JhbnQsIHRoaXMgcmVzdHJpY3Rpb24gYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciwKKy8vIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIGFuZAorLy8gYWxsIGRl
cml2YXRpdmUgd29ya3Mgb2YgdGhlIFNvZnR3YXJlLCB1bmxlc3Mgc3VjaCBjb3BpZXMgb3IgZGVy
aXZhdGl2ZQorLy8gd29ya3MgYXJlIHNvbGVseSBpbiB0aGUgZm9ybSBvZiBtYWNoaW5lLWV4ZWN1
dGFibGUgb2JqZWN0IGNvZGUgZ2VuZXJhdGVkIGJ5CisvLyBhIHNvdXJjZSBsYW5ndWFnZSBwcm9j
ZXNzb3IuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBC
VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8g
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFRJVExFIEFORCBOT04tSU5GUklOR0VN
RU5ULiBJTiBOTyBFVkVOVAorLy8gU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SIEFOWU9O
RSBESVNUUklCVVRJTkcgVEhFIFNPRlRXQVJFIEJFIExJQUJMRQorLy8gRk9SIEFOWSBEQU1BR0VT
IE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ
U0UsCisvLyBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKy8vIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K
IAotbmFtZXNwYWNlIFdURiB7CisvLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYWty
emVtaTEvT3B0aW9uYWwgKDcyN2M3MjlkZDFkOWYwNmYyMjU4NjgyODBlNTAxNTQ1OTRkN2U1OWQp
CisKKy8vIE1vZGlmaWVkIHRvIG1ha2UgaXQgY29tcGlsZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJs
ZWQuCisKKyNwcmFnbWEgb25jZQorCisjIGluY2x1ZGUgPHV0aWxpdHk+CisjIGluY2x1ZGUgPHR5
cGVfdHJhaXRzPgorIyBpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorIyBpbmNsdWRlIDxjYXNz
ZXJ0PgorIyBpbmNsdWRlIDxmdW5jdGlvbmFsPgorIyBpbmNsdWRlIDxzdHJpbmc+CisjIGluY2x1
ZGUgPHN0ZGV4Y2VwdD4KKyMgaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyMgaW5jbHVkZSA8
d3RmL0NvbXBpbGVyLmg+CisjIGluY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworIyBkZWZp
bmUgVFIyX09QVElPTkFMX1JFUVVJUkVTKC4uLikgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8X19W
QV9BUkdTX186OnZhbHVlLCBib29sPjo6dHlwZSA9IGZhbHNlCisKKyMgaWYgZGVmaW5lZCBfX0dO
VUNfXyAvLyBOT1RFOiBHTlVDIGlzIGFsc28gZGVmaW5lZCBmb3IgQ2xhbmcKKyMgICBpZiAoX19H
TlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDgpCisjICAgICBkZWZpbmUgVFIyX09Q
VElPTkFMX0dDQ180XzhfQU5EX0hJR0hFUl9fXworIyAgIGVsaWYgKF9fR05VQ19fID4gNCkKKyMg
ICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF9BTkRfSElHSEVSX19fCisjICAgZW5kaWYK
KyMKKyMgICBpZiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDcpCisjICAg
ICBkZWZpbmUgVFIyX09QVElPTkFMX0dDQ180XzdfQU5EX0hJR0hFUl9fXworIyAgIGVsaWYgKF9f
R05VQ19fID4gNCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVS
X19fCisjICAgZW5kaWYKKyMKKyMgICBpZiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5P
Ul9fID09IDgpICYmIChfX0dOVUNfUEFUQ0hMRVZFTF9fID49IDEpCisjICAgICBkZWZpbmUgVFIy
X09QVElPTkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPT0g
NCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDkpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0dD
Q180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQorIyAgICAgZGVm
aW5lIFRSMl9PUFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hFUl9fXworIyAgIGVuZGlmCisjIGVu
ZGlmCisjCisjIGlmIGRlZmluZWQgX19jbGFuZ19tYWpvcl9fCisjICAgaWYgKF9fY2xhbmdfbWFq
b3JfXyA9PSAzICYmIF9fY2xhbmdfbWlub3JfXyA+PSA1KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJ
T05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgZWxpZiAoX19jbGFuZ19tYWpvcl9fID4g
MykKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdfM181X0FORF9ISUdIVEVSXworIyAg
IGVuZGlmCisjICAgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfQ0xBTkdfM181X0FORF9ISUdIVEVS
XworIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9DTEFOR18zXzRfMl9BTkRfSElHSEVSXworIyAg
IGVsaWYgKF9fY2xhbmdfbWFqb3JfXyA9PSAzICYmIF9fY2xhbmdfbWlub3JfXyA9PSA0ICYmIF9f
Y2xhbmdfcGF0Y2hsZXZlbF9fID49IDIpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0NMQU5H
XzNfNF8yX0FORF9ISUdIRVJfCisjICAgZW5kaWYKKyMgZW5kaWYKKyMKKyMgaWYgZGVmaW5lZCBf
TVNDX1ZFUgorIyAgIGlmIChfTVNDX1ZFUiA+PSAxOTAwKQorIyAgICAgZGVmaW5lIFRSMl9PUFRJ
T05BTF9NU1ZDXzIwMTVfQU5EX0hJR0hFUl9fXworIyAgIGVuZGlmCisjIGVuZGlmCisKKyMgaWYg
ZGVmaW5lZCBfX2NsYW5nX18KKyMgICBpZiAoX19jbGFuZ19tYWpvcl9fID4gMikgfHwgKF9fY2xh
bmdfbWFqb3JfXyA9PSAyKSAmJiAoX19jbGFuZ19taW5vcl9fID49IDkpCisjICAgICBkZWZpbmUg
T1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgMQorIyAgIGVsc2UKKyMgICAgIGRlZmluZSBP
UFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAwCisjICAgZW5kaWYKKyMgZWxpZiBkZWZpbmVk
IFRSMl9PUFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hFUl9fXworIyAgIGRlZmluZSBPUFRJT05B
TF9IQVNfVEhJU19SVkFMVUVfUkVGUyAxCisjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfTVNW
Q18yMDE1X0FORF9ISUdIRVJfX18KKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVF
X1JFRlMgMQorIyBlbHNlCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZT
IDAKKyMgZW5kaWYKKworCisjIGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRf
SElHSEVSX19fCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19DT05TVEVYUFJfSU5JVF9MSVNUIDEK
KyMgICBkZWZpbmUgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVCBjb25zdGV4cHIKKyMgZWxz
ZQorIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfQ09OU1RFWFBSX0lOSVRfTElTVCAwCisjICAgZGVm
aW5lIE9QVElPTkFMX0NPTlNURVhQUl9JTklUX0xJU1QKKyMgZW5kaWYKKworLy8gRklYTUU6IFRv
IG1ha2UgdGhlIHJlc3VsdCBvZiB2YWx1ZSgpIHR5cGUgY29uc2lzdGVudCBhbW9uZyB0aGUgY29t
cGlsZXJzLCB3ZSBub3cgaW50ZW50aW9uYWxseSBkaXNhYmxlcyBtb3ZlIGFjY2Vzc29ycy4KKyMg
ICBkZWZpbmUgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTIDAKKy8vICMgaWYgZGVmaW5lZCBU
UjJfT1BUSU9OQUxfQ0xBTkdfM181X0FORF9ISUdIVEVSXyAmJiAoZGVmaW5lZCBfX2NwbHVzcGx1
cykgJiYgKF9fY3BsdXNwbHVzICE9IDIwMTEwM0wpCisvLyAjICAgZGVmaW5lIE9QVElPTkFMX0hB
U19NT1ZFX0FDQ0VTU09SUyAxCisvLyAjIGVsc2UKKy8vICMgICBkZWZpbmUgT1BUSU9OQUxfSEFT
X01PVkVfQUNDRVNTT1JTIDAKKy8vICMgZW5kaWYKKworIyAvLyBJbiBDKysxMSBjb25zdGV4cHIg
aW1wbGllcyBjb25zdCwgc28gd2UgbmVlZCB0byBtYWtlIG5vbi1jb25zdCBtZW1iZXJzIGFsc28g
bm9uLWNvbnN0ZXhwcgorIyBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cykgJiYgKF9fY3BsdXNwbHVz
ID09IDIwMTEwM0wpCisjICAgZGVmaW5lIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSCisjIGVs
c2UKKyMgICBkZWZpbmUgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgY29uc3RleHByCisjIGVu
ZGlmCisKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhFWENFUFRJT05TKQorI2RlZmluZSBfX1RIUk9X
X0VYQ0VQVElPTihfX2V4Y2VwdGlvbikgdGhyb3cgX19leGNlcHRpb247CisjZGVmaW5lIF9fTk9F
WENFUFQgbm9leGNlcHQKKyNkZWZpbmUgX19OT0VYQ0VQVF8oX19leGNlcHRpb24pIG5vZXhjZXB0
KF9fZXhjZXB0aW9uKQorI2Vsc2UKKyNkZWZpbmUgX19USFJPV19FWENFUFRJT04oX19leGNlcHRp
b24pIGRvIHsgKHZvaWQpX19leGNlcHRpb247IENSQVNIKCk7IH0gd2hpbGUgKDApOworI2RlZmlu
ZSBfX05PRVhDRVBUCisjZGVmaW5lIF9fTk9FWENFUFRfKC4uLikKKyNlbmRpZgorCituYW1lc3Bh
Y2Ugc3RkIHsKK25hbWVzcGFjZSBkZXRhaWxfIHsKKworLy8gTk9URTogQWxsIG91ciB0YXJnZXQg
Y29tcGlsZXJzIHN1cHBvcnQgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZS4KKy8vIC8vIEJFR0lO
IHdvcmthcm91bmQgZm9yIG1pc3NpbmcgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZQorLy8gIyBp
ZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9HQ0NfNF84X0FORF9ISUdIRVJfX18KKy8vICAgICAvLyBs
ZWF2ZSBpdDogaXQgaXMgYWxyZWFkeSB0aGVyZQorLy8gIyBlbGlmIGRlZmluZWQgVFIyX09QVElP
TkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisvLyAgICAgLy8gbGVhdmUgaXQ6IGl0IGlzIGFs
cmVhZHkgdGhlcmUKKy8vICMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9NU1ZDXzIwMTVfQU5E
X0hJR0hFUl9fXworLy8gICAgIC8vIGxlYXZlIGl0OiBpdCBpcyBhbHJlYWR5IHRoZXJlCisvLyAj
IGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfRElTQUJMRV9FTVVMQVRJT05fT0ZfVFlQRV9UUkFJ
VFMKKy8vICAgICAvLyBsZWF2ZSBpdDogdGhlIHVzZXIgZG9lc24ndCB3YW50IGl0CisvLyAjIGVs
c2UKKy8vIAl0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vIAl1c2luZyBpc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlID0gc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+OworLy8gIyBlbmRpZgor
Ly8gLy8gRU5EIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZQorCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoRVhDRVBUSU9OUykKKyMgaWYgZGVmaW5lZChUUjJf
T1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fKSB8fCBkZWZpbmVkKFRSMl9PUFRJT05BTF9D
TEFOR18zXzRfMl9BTkRfSElHSEVSXykgfHwgZGVmaW5lZChUUjJfT1BUSU9OQUxfTVNWQ18yMDE1
X0FORF9ISUdIRVJfX18pCisgICAgLy8gbGVhdmUgaXQ7IG91ciBtZXRhZnVuY3Rpb25zIGFyZSBh
bHJlYWR5IGRlZmluZWQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdXNpbmcgaXNf
bm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUgPSBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1
Y3RpYmxlPFQ+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHVzaW5nIGlzX25vdGhy
b3dfbW92ZV9hc3NpZ25hYmxlID0gc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxUPjsK
KyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9ESVNBQkxFX0VNVUxBVElPTl9PRl9UWVBFX1RS
QUlUUworICAgIC8vIGxlYXZlIGl0OiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgaXQKKyMgZWxzZQor
CisKKy8vIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgdHJhaXRzIGluIEdDQyBhbmQgQ0xBTkcKK3Rl
bXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlCit7
CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1
Y3RpYmxlPFQsIFQmJj46OnZhbHVlOworfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg
VT4KK3N0cnVjdCBpc19hc3NpZ25hYmxlCit7CisgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZ
PgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX2Fzc2lnbiguLi4pIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLXN0cnVjdCBJblBsYWNlVGFnIHsgfTsKLWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxh
Y2UgeyB9OworICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWSwgc2l6ZV90IFMgPSBzaXplb2Yo
KHN0ZDo6ZGVjbHZhbDxYPigpID0gc3RkOjpkZWNsdmFsPFk+KCksIHRydWUpKSA+CisgIC8vIHRo
ZSBjb21tYSBvcGVyYXRvciBpcyBuZWNlc3NhcnkgZm9yIHRoZSBjYXNlcyB3aGVyZSBvcGVyYXRv
cj0gcmV0dXJucyB2b2lkCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfYXNzaWduKGJvb2wp
IHsgcmV0dXJuIHRydWU7IH0KIAotc3RydWN0IE51bGxvcHRUYWcgeyBleHBsaWNpdCBjb25zdGV4
cHIgTnVsbG9wdFRhZyhpbnQpIHsgfSB9OwotY29uc3RleHByIE51bGxvcHRUYWcgTnVsbG9wdCB7
IDAgfTsKKyAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gaGFzX2Fzc2lnbjxULCBVPih0
cnVlKTsKK307CisKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgaXNfbm90aHJvd19tb3Zl
X2Fzc2lnbmFibGUKK3sKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIGJvb2wgaGFzX2FueV9tb3ZlX2Fz
c2lnbj4KKyAgc3RydWN0IGhhc19ub3Rocm93X21vdmVfYXNzaWduIHsKKyAgICBjb25zdGV4cHIg
c3RhdGljIGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAgfTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgWD4K
KyAgc3RydWN0IGhhc19ub3Rocm93X21vdmVfYXNzaWduPFgsIHRydWU+IHsKKyAgICBjb25zdGV4
cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBfX05PRVhDRVBUXyggc3RkOjpkZWNsdmFsPFgmPigpID0g
c3RkOjpkZWNsdmFsPFgmJj4oKSApOworICB9OworCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2
YWx1ZSA9IGhhc19ub3Rocm93X21vdmVfYXNzaWduPFQsIGlzX2Fzc2lnbmFibGU8VCYsIFQmJj46
OnZhbHVlPjo6dmFsdWU7Cit9OworLy8gZW5kIHdvcmthcm91bmQKKworCisjIGVuZGlmCisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgZGV0YWlsXworCisvLyAyMC41LjQsIG9wdGlvbmFsIGZvciBv
YmplY3QgdHlwZXMKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBvcHRpb25hbDsKKworLy8gMjAu
NS41LCBvcHRpb25hbCBmb3IgbHZhbHVlIHJlZmVyZW5jZSB0eXBlcwordGVtcGxhdGUgPGNsYXNz
IFQ+IGNsYXNzIG9wdGlvbmFsPFQmPjsKKworbmFtZXNwYWNlIGRldGFpbF8geworCisvLyB3b3Jr
YXJvdW5kOiBzdGQgdXRpbGl0eSBmdW5jdGlvbnMgYXJlbid0IGNvbnN0ZXhwciB5ZXQKK3RlbXBs
YXRlIDxjbGFzcyBUPiBpbmxpbmUgY29uc3RleHByIFQmJiBjb25zdGV4cHJfZm9yd2FyZCh0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmIHQpIF9fTk9FWENFUFQKK3sKKyAg
cmV0dXJuIHN0YXRpY19jYXN0PFQmJj4odCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBpbmxp
bmUgY29uc3RleHByIFQmJiBjb25zdGV4cHJfZm9yd2FyZCh0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2U8VD46OnR5cGUmJiB0KSBfX05PRVhDRVBUCit7CisgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgIiEhIik7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFQmJj4odCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgY29uc3Rl
eHByIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYmIGNvbnN0ZXhwcl9t
b3ZlKFQmJiB0KSBfX05PRVhDRVBUCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYmPih0KTsKK30KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNsYXNzIE9wdGlvbmFsIHsKKyNpZiBkZWZpbmVkIE5ERUJVRworIyBkZWZpbmUg
VFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oQ0hFQ0ssIEVYUFIpIChFWFBSKQorI2Vs
c2UKKyMgZGVmaW5lIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKENIRUNLLCBFWFBS
KSAoKENIRUNLKSA/IChFWFBSKSA6IChbXXthc3NlcnQoISNDSEVDSyk7fSgpLCAoRVhQUikpKQor
I2VuZGlmCisKKworLy8gc3RhdGljX2FkZHJlc3NvZjogYSBjb25zdGV4cHIgdmVyc2lvbiBvZiBh
ZGRyZXNzb2YKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGhhc19vdmVybG9hZGVkX2Fk
ZHJlc3NvZgoreworICB0ZW1wbGF0ZSA8Y2xhc3MgWD4KKyAgY29uc3RleHByIHN0YXRpYyBib29s
IGhhc19vdmVybG9hZCguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNz
IFgsIHNpemVfdCBTID0gc2l6ZW9mKHN0ZDo6ZGVjbHZhbDxYJj4oKS5vcGVyYXRvciYoKSkgPgor
ICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX292ZXJsb2FkKGJvb2wpIHsgcmV0dXJuIHRydWU7
IH0KKworICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBoYXNfb3ZlcmxvYWQ8VD4odHJ1
ZSk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVFIyX09QVElPTkFMX1JFUVVJUkVTKCFo
YXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4pPgorY29uc3RleHByIFQqIHN0YXRpY19hZGRyZXNz
b2YoVCYgcmVmKQoreworICByZXR1cm4gJnJlZjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IFRSMl9PUFRJT05BTF9SRVFVSVJFUyhoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4pPgorVCog
c3RhdGljX2FkZHJlc3NvZihUJiByZWYpCit7CisgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihyZWYp
OworfQorCisKKy8vIHRoZSBjYWxsIHRvIGNvbnZlcnQ8QT4oYikgaGFzIHJldHVybiB0eXBlIEEg
YW5kIGNvbnZlcnRzIGIgdG8gdHlwZSBBIGlmZiBiIGRlY2x0eXBlKGIpIGlzIGltcGxpY2l0bHkg
Y29udmVydGlibGUgdG8gQQordGVtcGxhdGUgPGNsYXNzIFU+Citjb25zdGV4cHIgVSBjb252ZXJ0
KFUgdikgeyByZXR1cm4gdjsgfQorCit9IC8vIG5hbWVzcGFjZSBkZXRhaWwKKworCitjb25zdGV4
cHIgc3RydWN0IHRyaXZpYWxfaW5pdF90e30gdHJpdmlhbF9pbml0e307CisKKworLy8gMjAuNS42
LCBJbi1wbGFjZSBjb25zdHJ1Y3Rpb24KK2NvbnN0ZXhwciBzdHJ1Y3QgaW5fcGxhY2VfdHt9IGlu
X3BsYWNle307CisKKworLy8gMjAuNS43LCBEaXNlbmdhZ2VkIHN0YXRlIGluZGljYXRvcgorc3Ry
dWN0IG51bGxvcHRfdAoreworICBzdHJ1Y3QgaW5pdHt9OworICBjb25zdGV4cHIgZXhwbGljaXQg
bnVsbG9wdF90KGluaXQpe30KK307Citjb25zdGV4cHIgbnVsbG9wdF90IG51bGxvcHR7bnVsbG9w
dF90Ojppbml0KCl9OworCisKKy8vIDIwLjUuOCwgY2xhc3MgYmFkX29wdGlvbmFsX2FjY2Vzcwor
Y2xhc3MgYmFkX29wdGlvbmFsX2FjY2VzcyA6IHB1YmxpYyBzdGQ6OmxvZ2ljX2Vycm9yIHsKIHB1
YmxpYzoKLSAgICBPcHRpb25hbCgpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQoZmFsc2UpCi0gICAg
ewotICAgIH0KKyAgZXhwbGljaXQgYmFkX29wdGlvbmFsX2FjY2Vzcyhjb25zdCBzdGQ6OnN0cmlu
ZyYgd2hhdF9hcmcpIDogc3RkOjpsb2dpY19lcnJvcnt3aGF0X2FyZ30ge30KKyAgZXhwbGljaXQg
YmFkX29wdGlvbmFsX2FjY2Vzcyhjb25zdCBjaGFyKiB3aGF0X2FyZykgOiBzdGQ6OmxvZ2ljX2Vy
cm9ye3doYXRfYXJnfSB7fQorfTsKIAotICAgIE9wdGlvbmFsKE51bGxvcHRUYWcpCi0gICAgICAg
IDogbV9pc0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAgIH0KIAotICAgIE9wdGlvbmFsKGNvbnN0
IFQmIHZhbHVlKQotICAgICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCi0gICAgewotICAgICAgICBu
ZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHZhbHVlKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK3VuaW9uIHN0b3JhZ2VfdAoreworICB1bnNpZ25lZCBjaGFyIGR1bW15XzsKKyAgVCB2YWx1
ZV87CiAKLSAgICBPcHRpb25hbChjb25zdCBPcHRpb25hbCYgb3RoZXIpCi0gICAgICAgIDogbV9p
c0VuZ2FnZWQob3RoZXIubV9pc0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2Fn
ZWQpCi0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKCpvdGhlci5hc1B0cigp
KTsKLSAgICB9CisgIGNvbnN0ZXhwciBzdG9yYWdlX3QoIHRyaXZpYWxfaW5pdF90ICkgX19OT0VY
Q0VQVCA6IGR1bW15XygpIHt9OwogCi0gICAgT3B0aW9uYWwoT3B0aW9uYWwmJiBvdGhlcikKLSAg
ICAgICAgOiBtX2lzRW5nYWdlZChvdGhlci5tX2lzRW5nYWdlZCkKLSAgICB7Ci0gICAgICAgIGlm
IChtX2lzRW5nYWdlZCkKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RG
TW92ZSgqb3RoZXIuYXNQdHIoKSkpOwotICAgIH0KKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+
CisgIGNvbnN0ZXhwciBzdG9yYWdlX3QoIEFyZ3MmJi4uLiBhcmdzICkgOiB2YWx1ZV8oZGV0YWls
Xzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CiAKLSAgICBPcHRpb25hbChU
JiYgdmFsdWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1ZSkKLSAgICB7Ci0gICAgICAgIG5l
dyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSh2YWx1ZSkpOwotICAgIH0KKyAgfnN0b3Jh
Z2VfdCgpe30KK307CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIE9wdGlv
bmFsKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1faXNFbmdhZ2VkKHRy
dWUpCi0gICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgfQogCi0gICAgfk9wdGlvbmFsKCkKLSAgICB7Ci0gICAg
ICAgIGRlc3Ryb3koKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VuaW9uIGNvbnN0ZXhw
cl9zdG9yYWdlX3QKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGR1bW15XzsKKyAgICBUIHZhbHVlXzsK
IAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFRhZykKLSAgICB7Ci0gICAgICAgIGRl
c3Ryb3koKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICBjb25zdGV4cHIgY29u
c3RleHByX3N0b3JhZ2VfdCggdHJpdmlhbF9pbml0X3QgKSBfX05PRVhDRVBUIDogZHVtbXlfKCkg
e307CiAKLSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KGNvbnN0IE9wdGlvbmFsJiBvdGhlcikKLSAg
ICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhp
czsKLQotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkg
ewotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7
Ci0gICAgICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICBjb25z
dGV4cHIgY29uc3RleHByX3N0b3JhZ2VfdCggQXJncyYmLi4uIGFyZ3MgKSA6IHZhbHVlXyhkZXRh
aWxfOjpjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KIAotICAgIE9wdGlvbmFs
JiBvcGVyYXRvcj0oT3B0aW9uYWwmJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09
ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgICBkZXN0cm95KCk7
Ci0gICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgbmV3IChOb3RO
dWxsLCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0cigpKSk7Ci0gICAgICAgICAgICBt
X2lzRW5nYWdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KKyAgICB+Y29uc3RleHByX3N0b3JhZ2VfdCgpID0gZGVmYXVsdDsKK307CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIFQ+Ojp2YWx1ZT46
OnR5cGU+Ci0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShVJiYgdSkKLSAgICB7Ci0gICAgICAgIGRl
c3Ryb3koKTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChzdGQ6OmZvcndhcmQ8
VT4odSkpOwotICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
bV9pc0VuZ2FnZWQ7IH0KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IG9wdGlvbmFsX2Jhc2UK
K3sKKyAgICBib29sIGluaXRfOworICAgIHN0b3JhZ2VfdDxUPiBzdG9yYWdlXzsKKworICAgIGNv
bnN0ZXhwciBvcHRpb25hbF9iYXNlKCkgX19OT0VYQ0VQVCA6IGluaXRfKGZhbHNlKSwgc3RvcmFn
ZV8odHJpdmlhbF9pbml0KSB7fTsKIAotICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRy
KCk7Ci0gICAgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcHRpb25hbF9iYXNlKGNvbnN0IFQm
IHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKHYpIHt9CiAKLSAgICBUKiBvcGVyYXRvci0+KCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiBhc1B0
cigpOwotICAgIH0KKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWxfYmFzZShUJiYgdikg
OiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oZGV0YWlsXzo6Y29uc3RleHByX21vdmUodikpIHt9CiAK
LSAgICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0gICAg
VCYgb3BlcmF0b3IqKCkgeyByZXR1cm4gdmFsdWUoKTsgfQorICAgIHRlbXBsYXRlIDxjbGFzcy4u
LiBBcmdzPiBleHBsaWNpdCBvcHRpb25hbF9iYXNlKGluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdz
KQorICAgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhkZXRhaWxfOjpjb25zdGV4cHJfZm9y
d2FyZDxBcmdzPihhcmdzKS4uLikge30KIAotICAgIFQmIHZhbHVlKCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiAqYXNQdHIoKTsKLSAgICB9Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJF
UyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+Cisg
ICAgZXhwbGljaXQgb3B0aW9uYWxfYmFzZShpbl9wbGFjZV90LCBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdl
XyhpbCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgY29uc3QgVCYgdmFs
dWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAg
cmV0dXJuICphc1B0cigpOwotICAgIH0KKyAgICB+b3B0aW9uYWxfYmFzZSgpIHsgaWYgKGluaXRf
KSBzdG9yYWdlXy52YWx1ZV8uVDo6flQoKTsgfQorfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+Ci0gICAgVCB2YWx1ZU9yKFUmJiB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICht
X2lzRW5nYWdlZCkKLSAgICAgICAgICAgIHJldHVybiAqYXNQdHIoKTsKIAotICAgICAgICByZXR1
cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0
cnVjdCBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZQoreworICAgIGJvb2wgaW5pdF87CisgICAgY29u
c3RleHByX3N0b3JhZ2VfdDxUPiBzdG9yYWdlXzsKKworICAgIGNvbnN0ZXhwciBjb25zdGV4cHJf
b3B0aW9uYWxfYmFzZSgpIF9fTk9FWENFUFQgOiBpbml0XyhmYWxzZSksIHN0b3JhZ2VfKHRyaXZp
YWxfaW5pdCkge307CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHByX29wdGlvbmFs
X2Jhc2UoY29uc3QgVCYgdikgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8odikge30KKworICAgIGV4
cGxpY2l0IGNvbnN0ZXhwciBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZShUJiYgdikgOiBpbml0Xyh0
cnVlKSwgc3RvcmFnZV8oZGV0YWlsXzo6Y29uc3RleHByX21vdmUodikpIHt9CisKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MuLi4gQXJncz4gZXhwbGljaXQgY29uc3RleHByIGNvbnN0ZXhwcl9vcHRpb25h
bF9iYXNlKGluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBpbml0Xyh0cnVlKSwg
c3RvcmFnZV8oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgVFIyX09QVElPTkFMX1JFUVVJ
UkVTKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4+KT4K
KyAgICBPUFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGV4cGxpY2l0IGNvbnN0ZXhwcl9vcHRp
b25hbF9iYXNlKGluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYm
Li4uIGFyZ3MpCisgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhpbCwgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgICAgfmNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKCkgPSBk
ZWZhdWx0OworfTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBPcHRpb25hbEJhc2UgPSB0
eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAorICAgIHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxUPjo6dmFsdWUsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBwb3NzaWJsZQor
ICAgIGNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+
Ojp0eXBlPiwgLy8gdXNlIGJhc2Ugd2l0aCB0cml2aWFsIGRlc3RydWN0b3IKKyAgICBvcHRpb25h
bF9iYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlPgorPjo6dHlwZTsKKwor
CisKK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRlIE9wdGlvbmFs
QmFzZTxUPgoreworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6
ZGVjYXk8VD46OnR5cGUsIG51bGxvcHRfdD46OnZhbHVlLCAiYmFkIFQiICk7CisgIHN0YXRpY19h
c3NlcnQoICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZSwgaW5fcGxh
Y2VfdD46OnZhbHVlLCAiYmFkIFQiICk7CisKKworICBjb25zdGV4cHIgYm9vbCBpbml0aWFsaXpl
ZCgpIGNvbnN0IF9fTk9FWENFUFQgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+Ojppbml0XzsgfQor
ICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSogZGF0YXB0cigpIHsgIHJldHVy
biBzdGQ6OmFkZHJlc3NvZihPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXyk7IH0KKyAg
Y29uc3RleHByIGNvbnN0IFQqIGRhdGFwdHIoKSBjb25zdCB7IHJldHVybiBkZXRhaWxfOjpzdGF0
aWNfYWRkcmVzc29mKE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICBUIHZhbHVlT3JDb21wdXRlKFUgY2FsbGJhY2spIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4g
KmFzUHRyKCk7CisjIGlmIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTID09IDEKKyAgY29u
c3RleHByIGNvbnN0IFQmIGNvbnRhaW5lZF92YWwoKSBjb25zdCYgeyByZXR1cm4gT3B0aW9uYWxC
YXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyMgICBpZiBPUFRJT05BTF9IQVNfTU9WRV9BQ0NF
U1NPUlMgPT0gMQorICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiYgY29udGFpbmVkX3Zh
bCgpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVl
Xyk7IH0KKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCYgY29udGFpbmVkX3ZhbCgpICYg
eyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyMgICBlbHNlCisg
IFQmIGNvbnRhaW5lZF92YWwoKSAmIHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8u
dmFsdWVfOyB9CisgIFQmJiBjb250YWluZWRfdmFsKCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKE9w
dGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQorIyAgIGVuZGlmCisjIGVsc2UKKyAg
Y29uc3RleHByIGNvbnN0IFQmIGNvbnRhaW5lZF92YWwoKSBjb25zdCB7IHJldHVybiBPcHRpb25h
bEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorICBUJiBjb250YWluZWRfdmFsKCkgeyByZXR1
cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyMgZW5kaWYKIAotICAgICAg
ICByZXR1cm4gY2FsbGJhY2soKTsKKyAgdm9pZCBjbGVhcigpIF9fTk9FWENFUFQgeworICAgIGlm
IChpbml0aWFsaXplZCgpKSBkYXRhcHRyKCktPlQ6On5UKCk7CisgICAgT3B0aW9uYWxCYXNlPFQ+
Ojppbml0XyA9IGZhbHNlOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZv
aWQgaW5pdGlhbGl6ZShBcmdzJiYuLi4gYXJncykgX19OT0VYQ0VQVF8oX19OT0VYQ0VQVF8oVChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSkKKyAgeworICAgIEFTU0VSVCghT3B0aW9uYWxC
YXNlPFQ+Ojppbml0Xyk7CisgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkp
KSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojpp
bml0XyA9IHRydWU7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4K
KyAgdm9pZCBpbml0aWFsaXplKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYmLi4u
IGFyZ3MpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKFQoaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikpKQorICB7CisgICAgQVNTRVJUKCFPcHRpb25hbEJhc2U8VD46OmluaXRfKTsKKyAg
ICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIoKSkpIFQoaWwsIHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7Cisg
IH0KKworcHVibGljOgorICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKworICAvLyAyMC41LjUuMSwg
Y29uc3RydWN0b3JzCisgIGNvbnN0ZXhwciBvcHRpb25hbCgpIF9fTk9FWENFUFQgOiBPcHRpb25h
bEJhc2U8VD4oKSAge307CisgIGNvbnN0ZXhwciBvcHRpb25hbChudWxsb3B0X3QpIF9fTk9FWENF
UFQgOiBPcHRpb25hbEJhc2U8VD4oKSB7fTsKKworICBvcHRpb25hbChjb25zdCBvcHRpb25hbCYg
cmhzKQorICA6IE9wdGlvbmFsQmFzZTxUPigpCisgIHsKKyAgICBpZiAocmhzLmluaXRpYWxpemVk
KCkpIHsKKyAgICAgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKCpy
aHMpOworICAgICAgICBPcHRpb25hbEJhc2U8VD46OmluaXRfID0gdHJ1ZTsKICAgICB9CisgIH0K
IAotcHJpdmF0ZToKLSAgICBjb25zdCBUKiBhc1B0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVCo+KCZtX3ZhbHVlKTsgfQotICAgIFQqIGFzUHRyKCkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxUKj4oJm1fdmFsdWUpOyB9Ci0gICAgdm9pZCBkZXN0cm95KCkKLSAg
ICB7Ci0gICAgICAgIGlmIChtX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgYXNQdHIoKS0+flQo
KTsKLSAgICAgICAgICAgIG1faXNFbmdhZ2VkID0gZmFsc2U7Ci0gICAgICAgIH0KKyAgb3B0aW9u
YWwob3B0aW9uYWwmJiByaHMpIF9fTk9FWENFUFRfKGRldGFpbF86OmlzX25vdGhyb3dfbW92ZV9j
b25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKKyAgOiBPcHRpb25hbEJhc2U8VD4oKQorICB7CisgICAg
aWYgKHJocy5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lk
Kj4oZGF0YXB0cigpKSkgVChzdGQ6Om1vdmUoKnJocykpOworICAgICAgICBPcHRpb25hbEJhc2U8
VD46OmluaXRfID0gdHJ1ZTsKICAgICB9CisgIH0KKworICBjb25zdGV4cHIgb3B0aW9uYWwoY29u
c3QgVCYgdikgOiBPcHRpb25hbEJhc2U8VD4odikge30KKworICBjb25zdGV4cHIgb3B0aW9uYWwo
VCYmIHYpIDogT3B0aW9uYWxCYXNlPFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQor
CisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9u
YWwoaW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgIDogT3B0aW9uYWxCYXNlPFQ+KGluX3Bs
YWNlX3R7fSwgZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJF
UyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+Cisg
IE9QVElPTkFMX0NPTlNURVhQUl9JTklUX0xJU1QgZXhwbGljaXQgb3B0aW9uYWwoaW5fcGxhY2Vf
dCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYuLi4gYXJncykKKyAgOiBPcHRp
b25hbEJhc2U8VD4oaW5fcGxhY2VfdHt9LCBpbCwgZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8
QXJncz4oYXJncykuLi4pIHt9CisKKyAgLy8gMjAuNS40LjIsIERlc3RydWN0b3IKKyAgfm9wdGlv
bmFsKCkgPSBkZWZhdWx0OworCisgIC8vIDIwLjUuNC4zLCBhc3NpZ25tZW50CisgIG9wdGlvbmFs
JiBvcGVyYXRvcj0obnVsbG9wdF90KSBfX05PRVhDRVBUCisgIHsKKyAgICBjbGVhcigpOworICAg
IHJldHVybiAqdGhpczsKKyAgfQorCisgIG9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9u
YWwmIHJocykKKyAgeworICAgIGlmICAgICAgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhz
LmluaXRpYWxpemVkKCkgPT0gZmFsc2UpIGNsZWFyKCk7CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6
ZWQoKSA9PSBmYWxzZSAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgaW5pdGlhbGl6ZSgq
cmhzKTsKKyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFs
aXplZCgpID09IHRydWUpICBjb250YWluZWRfdmFsKCkgPSAqcmhzOworICAgIHJldHVybiAqdGhp
czsKKyAgfQorCisgIG9wdGlvbmFsJiBvcGVyYXRvcj0ob3B0aW9uYWwmJiByaHMpCisgIF9fTk9F
WENFUFRfKGRldGFpbF86OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJiBk
ZXRhaWxfOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUpCisgIHsKKyAg
ICBpZiAgICAgIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09
IGZhbHNlKSBjbGVhcigpOworICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYg
cmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIGluaXRpYWxpemUoc3RkOjptb3ZlKCpyaHMpKTsK
KyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgp
ID09IHRydWUpICBjb250YWluZWRfdmFsKCkgPSBzdGQ6Om1vdmUoKnJocyk7CisgICAgcmV0dXJu
ICp0aGlzOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIGF1dG8gb3BlcmF0b3I9KFUm
JiB2KQorICAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZgorICA8CisgICAgc3RkOjppc19zYW1l
PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VT46OnR5cGUsIFQ+Ojp2YWx1ZSwKKyAgICBvcHRpb25hbCYK
KyAgPjo6dHlwZQorICB7CisgICAgaWYgKGluaXRpYWxpemVkKCkpIHsgY29udGFpbmVkX3ZhbCgp
ID0gc3RkOjpmb3J3YXJkPFU+KHYpOyB9CisgICAgZWxzZSAgICAgICAgICAgICAgIHsgaW5pdGlh
bGl6ZShzdGQ6OmZvcndhcmQ8VT4odikpOyAgfQorICAgIHJldHVybiAqdGhpczsKKyAgfQorCisK
KyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgZW1wbGFjZShBcmdzJiYuLi4gYXJn
cykKKyAgeworICAgIGNsZWFyKCk7CisgICAgaW5pdGlhbGl6ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+Cisg
IHZvaWQgZW1wbGFjZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdz
KQorICB7CisgICAgY2xlYXIoKTsKKyAgICBpbml0aWFsaXplPFUsIEFyZ3MuLi4+KGlsLCBzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgLy8gMjAuNS40LjQsIFN3YXAKKyAg
dm9pZCBzd2FwKG9wdGlvbmFsPFQ+JiByaHMpIF9fTk9FWENFUFRfKGRldGFpbF86OmlzX25vdGhy
b3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSAmJiBfX05PRVhDRVBUXyhzd2FwKHN0ZDo6
ZGVjbHZhbDxUJj4oKSwgc3RkOjpkZWNsdmFsPFQmPigpKSkpCisgIHsKKyAgICBpZiAgICAgIChp
bml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IGZhbHNlKSB7IHJo
cy5pbml0aWFsaXplKHN0ZDo6bW92ZSgqKnRoaXMpKTsgY2xlYXIoKTsgfQorICAgIGVsc2UgaWYg
KGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIHsg
aW5pdGlhbGl6ZShzdGQ6Om1vdmUoKnJocykpOyByaHMuY2xlYXIoKTsgfQorICAgIGVsc2UgaWYg
KGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIHsg
dXNpbmcgc3RkOjpzd2FwOyBzd2FwKCoqdGhpcywgKnJocyk7IH0KKyAgfQorCisgIC8vIDIwLjUu
NC41LCBPYnNlcnZlcnMKKworICBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IF9fTk9FWENFUFQgeyByZXR1cm4gaW5pdGlhbGl6ZWQoKTsgfQorCisgIGNvbnN0ZXhwciBU
IGNvbnN0KiBvcGVyYXRvciAtPigpIGNvbnN0IHsKKyAgICByZXR1cm4gVFIyX09QVElPTkFMX0FT
U0VSVEVEX0VYUFJFU1NJT04oaW5pdGlhbGl6ZWQoKSwgZGF0YXB0cigpKTsKKyAgfQorCisjIGlm
IE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisKKyAgT1BUSU9OQUxfTVVUQUJMRV9D
T05TVEVYUFIgVCogb3BlcmF0b3IgLT4oKSB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2Zm
ZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29u
dGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05TVEVYUFJfQVNTRVJUKGluaXRpYWxpemVkKCkpOwor
ICAgIHJldHVybiBkYXRhcHRyKCk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgb3BlcmF0
b3IgKigpIGNvbnN0JiB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNT
SU9OKGluaXRpYWxpemVkKCksIGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKworICBPUFRJT05BTF9N
VVRBQkxFX0NPTlNURVhQUiBUJiBvcGVyYXRvciAqKCkgJiB7CisgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRl
ciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05TVEVYUFJfQVNTRVJUKGluaXRpYWxp
emVkKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9N
VVRBQkxFX0NPTlNURVhQUiBUJiYgb3BlcmF0b3IgKigpICYmIHsKKyAgICAvLyBGSVhNRTogV2Ug
bmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVu
ZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIENPTlNURVhQUl9BU1NFUlQoaW5pdGlh
bGl6ZWQoKSk7CisgICAgcmV0dXJuIGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKGNvbnRhaW5lZF92
YWwoKSk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25zdCYgeworICAg
IC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQg
Y2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2Vz
cygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBj
b250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiB2
YWx1ZSgpICYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0
IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisg
ICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFk
X29wdGlvbmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkp
OworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxF
X0NPTlNURVhQUiBUJiYgdmFsdWUoKSAmJiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2Zm
ZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29u
dGV4cHIgY29udGV4dC4KKyAgICAvLyBpZiAoIWluaXRpYWxpemVkKCkpIF9fVEhST1dfRVhDRVBU
SU9OKGJhZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBvcHRpb25hbCBhY2Nlc3MiKSk7CisgICAgcmV0
dXJuIHN0ZDo6bW92ZShjb250YWluZWRfdmFsKCkpOworICB9CisKKyMgZWxzZQorCisgIFQqIG9w
ZXJhdG9yIC0+KCkgeworICAgIGFzc2VydCAoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGRh
dGFwdHIoKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0JiBvcGVyYXRvciAqKCkgY29uc3Qg
eworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihpbml0aWFsaXpl
ZCgpLCBjb250YWluZWRfdmFsKCkpOworICB9CisKKyAgVCYgb3BlcmF0b3IgKigpIHsKKyAgICBh
c3NlcnQgKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0K
KworICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25zdCB7CisgICAgLy8gRklYTUU6IFdl
IG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1
bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/
IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCJiYWQgb3B0aW9u
YWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwo
KTsKKyAgfQorCisgIFQmIHZhbHVlKCkgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVy
IHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRl
eHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFs
KCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpLCBj
b250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworIyBl
bmRpZgorCisjIGlmIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTID09IDEKKworICB0ZW1w
bGF0ZSA8Y2xhc3MgVj4KKyAgY29uc3RleHByIFQgdmFsdWVfb3IoViYmIHYpIGNvbnN0JgorICB7
CisgICAgcmV0dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxf
Ojpjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyAgIGlmIE9QVElPTkFMX0hBU19N
T1ZFX0FDQ0VTU09SUyA9PSAxCisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+CisgIE9QVElPTkFMX01V
VEFCTEVfQ09OU1RFWFBSIFQgdmFsdWVfb3IoViYmIHYpICYmCisgIHsKKyAgICByZXR1cm4gKnRo
aXMgPyBkZXRhaWxfOjpjb25zdGV4cHJfbW92ZShjb25zdF9jYXN0PG9wdGlvbmFsPFQ+Jj4oKnRo
aXMpLmNvbnRhaW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0
ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorCisjICAgZWxzZQorCisgIHRlbXBsYXRlIDxjbGFz
cyBWPgorICBUIHZhbHVlX29yKFYmJiB2KSAmJgorICB7CisgICAgcmV0dXJuICp0aGlzID8gZGV0
YWlsXzo6Y29uc3RleHByX21vdmUoY29uc3RfY2FzdDxvcHRpb25hbDxUPiY+KCp0aGlzKS5jb250
YWluZWRfdmFsKCkpIDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25zdGV4cHJfZm9y
d2FyZDxWPih2KSk7CisgIH0KKworIyAgIGVuZGlmCisKKyMgZWxzZQorCisgIHRlbXBsYXRlIDxj
bGFzcyBWPgorICBjb25zdGV4cHIgVCB2YWx1ZV9vcihWJiYgdikgY29uc3QKKyAgeworICAgIHJl
dHVybiAqdGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8VD4oZGV0YWlsXzo6Y29uc3Rl
eHByX2ZvcndhcmQ8Vj4odikpOworICB9CisKKyMgZW5kaWYKIAotICAgIGJvb2wgbV9pc0VuZ2Fn
ZWQ7Ci0gICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFs
aWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1fdmFsdWU7CiB9OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiYgbGhz
LCBjb25zdCBPcHRpb25hbDxUPiYgcmhzKQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIG9w
dGlvbmFsPFQmPgogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihsaHMpID09IHN0YXRp
Y19jYXN0PGJvb2w+KHJocykgJiYgKCFzdGF0aWNfY2FzdDxib29sPihsaHMpIHx8IGxocy52YWx1
ZSgpID09IHJocy52YWx1ZSgpKTsKKyAgc3RhdGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTxULCBu
dWxsb3B0X3Q+Ojp2YWx1ZSwgImJhZCBUIiApOworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19z
YW1lPFQsIGluX3BsYWNlX3Q+Ojp2YWx1ZSwgImJhZCBUIiApOworICBUKiByZWY7CisKK3B1Ymxp
YzoKKworICAvLyAyMC41LjUuMSwgY29uc3RydWN0aW9uL2Rlc3RydWN0aW9uCisgIGNvbnN0ZXhw
ciBvcHRpb25hbCgpIF9fTk9FWENFUFQgOiByZWYobnVsbHB0cikge30KKworICBjb25zdGV4cHIg
b3B0aW9uYWwobnVsbG9wdF90KSBfX05PRVhDRVBUIDogcmVmKG51bGxwdHIpIHt9CisKKyAgY29u
c3RleHByIG9wdGlvbmFsKFQmIHYpIF9fTk9FWENFUFQgOiByZWYoZGV0YWlsXzo6c3RhdGljX2Fk
ZHJlc3NvZih2KSkge30KKworICBvcHRpb25hbChUJiYpID0gZGVsZXRlOworCisgIGNvbnN0ZXhw
ciBvcHRpb25hbChjb25zdCBvcHRpb25hbCYgcmhzKSBfX05PRVhDRVBUIDogcmVmKHJocy5yZWYp
IHt9CisKKyAgZXhwbGljaXQgY29uc3RleHByIG9wdGlvbmFsKGluX3BsYWNlX3QsIFQmIHYpIF9f
Tk9FWENFUFQgOiByZWYoZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZih2KSkge30KKworICBleHBs
aWNpdCBvcHRpb25hbChpbl9wbGFjZV90LCBUJiYpID0gZGVsZXRlOworCisgIH5vcHRpb25hbCgp
ID0gZGVmYXVsdDsKKworICAvLyAyMC41LjUuMiwgbXV0YXRpb24KKyAgb3B0aW9uYWwmIG9wZXJh
dG9yPShudWxsb3B0X3QpIF9fTk9FWENFUFQgeworICAgIHJlZiA9IG51bGxwdHI7CisgICAgcmV0
dXJuICp0aGlzOworICB9CisKKyAgLy8gb3B0aW9uYWwmIG9wZXJhdG9yPShjb25zdCBvcHRpb25h
bCYgcmhzKSBfX05PRVhDRVBUIHsKKyAgICAvLyByZWYgPSByaHMucmVmOworICAgIC8vIHJldHVy
biAqdGhpczsKKyAgLy8gfQorCisgIC8vIG9wdGlvbmFsJiBvcGVyYXRvcj0ob3B0aW9uYWwmJiBy
aHMpIF9fTk9FWENFUFQgeworICAgIC8vIHJlZiA9IHJocy5yZWY7CisgICAgLy8gcmV0dXJuICp0
aGlzOworICAvLyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGF1dG8gb3BlcmF0b3I9
KFUmJiByaHMpIF9fTk9FWENFUFQKKyAgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgPAor
ICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFU+Ojp0eXBlLCBvcHRpb25hbDxU
Jj4+Ojp2YWx1ZSwKKyAgICBvcHRpb25hbCYKKyAgPjo6dHlwZQorICB7CisgICAgcmVmID0gcmhz
LnJlZjsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4K
KyAgYXV0byBvcGVyYXRvcj0oVSYmIHJocykgX19OT0VYQ0VQVAorICAtPiB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZgorICA8CisgICAgIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFU+
Ojp0eXBlLCBvcHRpb25hbDxUJj4+Ojp2YWx1ZSwKKyAgICBvcHRpb25hbCYKKyAgPjo6dHlwZQor
ICA9IGRlbGV0ZTsKKworICB2b2lkIGVtcGxhY2UoVCYgdikgX19OT0VYQ0VQVCB7CisgICAgcmVm
ID0gZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZih2KTsKKyAgfQorCisgIHZvaWQgZW1wbGFjZShU
JiYpID0gZGVsZXRlOworCisKKyAgdm9pZCBzd2FwKG9wdGlvbmFsPFQmPiYgcmhzKSBfX05PRVhD
RVBUCisgIHsKKyAgICBzdGQ6OnN3YXAocmVmLCByaHMucmVmKTsKKyAgfQorCisgIC8vIDIwLjUu
NS4zLCBvYnNlcnZlcnMKKyAgY29uc3RleHByIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7CisgICAg
cmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKHJlZiwgcmVmKTsKKyAgfQor
CisgIGNvbnN0ZXhwciBUJiBvcGVyYXRvciooKSBjb25zdCB7CisgICAgcmV0dXJuIFRSMl9PUFRJ
T05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKHJlZiwgKnJlZik7CisgIH0KKworICBjb25zdGV4cHIg
VCYgdmFsdWUoKSBjb25zdCB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lh
bCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29u
dGV4dC4KKyAgICAvLyByZXR1cm4gcmVmID8gKnJlZiA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNj
ZXNzKCJiYWQgb3B0aW9uYWwgYWNjZXNzIiksICpyZWYpOworICAgIHJldHVybiAqcmVmOworICB9
CisKKyAgZXhwbGljaXQgY29uc3RleHByIG9wZXJhdG9yIGJvb2woKSBjb25zdCBfX05PRVhDRVBU
IHsKKyAgICByZXR1cm4gcmVmICE9IG51bGxwdHI7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3Mg
Vj4KKyAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUgdmFsdWVfb3IoViYm
IHYpIGNvbnN0CisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpjb252
ZXJ0PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3
YXJkPFY+KHYpKTsKKyAgfQorfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIG9wdGlv
bmFsPFQmJj4KK3sKKyAgc3RhdGljX2Fzc2VydCggc2l6ZW9mKFQpID09IDAsICJvcHRpb25hbCBy
dmFsdWUgcmVmZXJlbmNlcyBkaXNhbGxvd2VkIiApOworfTsKKworCisvLyAyMC41LjgsIFJlbGF0
aW9uYWwgb3BlcmF0b3JzCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3Qgb3B0aW9uYWw8VD4mIHkpCit7CisgIHJl
dHVybiBib29sKHgpICE9IGJvb2woeSkgPyBmYWxzZSA6IGJvb2woeCkgPT0gZmFsc2UgPyB0cnVl
IDogKnggPT0gKnk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBvcHRpb25hbDxUPiYgeSkKK3sKKyAg
cmV0dXJuICEoeCA9PSB5KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPChjb25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3Qgb3B0aW9uYWw8VD4mIHkpCit7
CisgIHJldHVybiAoIXkpID8gZmFsc2UgOiAoIXgpID8gdHJ1ZSA6ICp4IDwgKnk7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8
VD4mIHgsIGNvbnN0IG9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gKHkgPCB4KTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qgb3B0aW9u
YWw8VD4mIHgsIGNvbnN0IG9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gISh5IDwgeCk7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9w
dGlvbmFsPFQ+JiB4LCBjb25zdCBvcHRpb25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuICEoeCA8IHkp
OworfQorCisKKy8vIDIwLjUuOSwgQ29tcGFyaXNvbiB3aXRoIG51bGxvcHQKK3RlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBu
dWxsb3B0X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgheCk7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9u
YWw8VD4mIHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgheCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBs
aHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcHRpb25hbDxUPiYgeCwgbnVsbG9wdF90KSBfX05PRVhD
RVBUCiB7Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7CisgIHJldHVybiBib29sKHgpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBP
cHRpb25hbDxUPiYgb3B0LCBOdWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0obnVsbG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYgeCkgX19OT0VY
Q0VQVAogewotICAgIHJldHVybiAhb3B0OworICByZXR1cm4gYm9vbCh4KTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8
VD4mIG9wdCwgTnVsbG9wdFRhZykKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcjwoY29uc3Qgb3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIF9fTk9FWENFUFQKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0KTsKKyAgcmV0dXJuIGZhbHNlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShOdWxsb3B0VGFn
LCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPChudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KSBfX05PRVhDRVBU
CiB7Ci0gICAgcmV0dXJuICFvcHQ7CisgIHJldHVybiBib29sKHgpOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShOdWxsb3B0VGFnLCBjb25zdCBP
cHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPD0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAogewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihvcHQpOworICByZXR1cm4gKCF4KTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9u
YWw8VD4mIG9wdCwgY29uc3QgVCYgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+JikgX19OT0VYQ0VQ
VAogewotICAgIHJldHVybiBvcHQgJiYgb3B0LnZhbHVlKCkgPT0gdmFsdWU7CisgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBPcHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIG51bGxv
cHRfdCkgX19OT0VYQ0VQVAogewotICAgIHJldHVybiAhKG9wdCA9PSB2YWx1ZSk7CisgIHJldHVy
biBib29sKHgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4obnVsbG9wdF90LCBjb25zdCBvcHRp
b25hbDxUPiYpIF9fTk9FWENFUFQKIHsKLSAgICByZXR1cm4gb3B0ICYmIG9wdC52YWx1ZSgpID09
IHZhbHVlOworICByZXR1cm4gZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25z
dGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxUPiYg
b3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qg
b3B0aW9uYWw8VD4mLCBudWxsb3B0X3QpIF9fTk9FWENFUFQKIHsKLSAgICByZXR1cm4gISh2YWx1
ZSA9PSBvcHQpOworICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLU9w
dGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+Ci1tYWtlT3B0aW9uYWwoVCYmIHZh
bHVlKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0obnVsbG9w
dF90LCBjb25zdCBvcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAogewotICAgIHJldHVybiBPcHRp
b25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUp
KTsKKyAgcmV0dXJuICgheCk7Cit9CisKKworCisvLyAyMC41LjEwLCBDb21wYXJpc29uIHdpdGgg
VAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qgb3B0
aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPT0gdiA6
IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxUPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkg
PyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1
cm4gYm9vbCh4KSA/ICp4ICE9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxUPiYgeCkK
K3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ICE9ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRpb25hbDxUPiYgeCwgY29u
c3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8IHYgOiB0cnVlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0
IG9wdGlvbmFsPFQ+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPiAqeCA6IHRydWU7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0
aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPiB2IDog
ZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8g
diA8ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4g
Ym9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VD4mIHgpCit7
CisgIHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYgeCwgY29u
c3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8PSB2IDogdHJ1ZTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgdiwgY29u
c3Qgb3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA+PSAqeCA6IHRydWU7
Cit9CisKKworLy8gQ29tcGFyaXNvbiBvZiBvcHRpb25hbDxUJj4gd2l0aCBUCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcHRpb25hbDxUJj4mIHgs
IGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPT0gdiA6IGZhbHNlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB2
LCBjb25zdCBvcHRpb25hbDxUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA9PSAqeCA6
IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBvcHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgp
ID8gKnggIT0gdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQmPiYgeCkKK3sKKyAgcmV0
dXJuIGJvb2woeCkgPyB2ICE9ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYp
Cit7CisgIHJldHVybiBib29sKHgpID8gKnggPCB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBUJiB2LCBjb25zdCBvcHRpb25h
bDxUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKK30KKwordGVt
cGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBvcHRpb25hbDxU
Jj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPiB2IDogZmFsc2U7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
VCYgdiwgY29uc3Qgb3B0aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPCAq
eCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I+PShjb25zdCBvcHRpb25hbDxUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29s
KHgpID8gKnggPj0gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxUJj4mIHgpCit7Cisg
IHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUJj4mIHgsIGNvbnN0
IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPD0gdiA6IHRydWU7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHYsIGNvbnN0
IG9wdGlvbmFsPFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID49ICp4IDogdHJ1ZTsK
K30KKworLy8gQ29tcGFyaXNvbiBvZiBvcHRpb25hbDxUIGNvbnN0Jj4gd2l0aCBUCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcHRpb25hbDxjb25z
dCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPT0gdiA6IGZh
bHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxjb25zdCBUJj4mIHgpCit7CisgIHJldHVybiBib29s
KHgpID8gdiA9PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYp
Cit7CisgIHJldHVybiBib29sKHgpID8gKnggIT0gdiA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlv
bmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ICE9ICp4IDogdHJ1ZTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBv
cHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8g
KnggPCB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPihjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxjb25zdCBUJj4mIHgpCit7CisgIHJl
dHVybiBib29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBvcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0
IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPiB2IDogZmFsc2U7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgVCYgdiwgY29uc3Qg
b3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPCAqeCA6IGZh
bHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBvcHRpb25hbDxjb25zdCBUJj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29s
KHgpID8gKnggPj0gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxjb25zdCBUJj4mIHgp
Cit7CisgIHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxjb25zdCBU
Jj4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29sKHgpID8gKnggPD0gdiA6IHRydWU7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFQmIHYsIGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkg
PyB2ID49ICp4IDogdHJ1ZTsKK30KKworCisvLyAyMC41LjEyLCBTcGVjaWFsaXplZCBhbGdvcml0
aG1zCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3ZvaWQgc3dhcChvcHRpb25hbDxUPiYgeCwgb3B0aW9u
YWw8VD4mIHkpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKHguc3dhcCh5KSkpCit7CisgIHguc3dh
cCh5KTsKK30KKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NvbnN0ZXhwciBvcHRpb25hbDx0eXBl
bmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPiBtYWtlX29wdGlvbmFsKFQmJiB2KQoreworICByZXR1
cm4gb3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4oZGV0YWlsXzo6Y29uc3Rl
eHByX2ZvcndhcmQ8VD4odikpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgWD4KK2NvbnN0ZXhwciBv
cHRpb25hbDxYJj4gbWFrZV9vcHRpb25hbChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFg+IHYpCit7
CisgIHJldHVybiBvcHRpb25hbDxYJj4odi5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIHN0
ZAorCituYW1lc3BhY2UgV1RGIHsKKworLy8gLS0gV2ViS2l0IEFkZGl0aW9ucyAtLQordGVtcGxh
dGUgPGNsYXNzIE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+CitBTFdBWVNfSU5MSU5FCith
dXRvIHZhbHVlT3JDb21wdXRlKE9wdGlvbmFsVHlwZSBvcHRpb25hbCwgQ2FsbGJhY2sgY2FsbGJh
Y2spIC0+IHR5cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFsdWVfdHlwZQoreworICAgIGlmIChvcHRp
b25hbCkKKyAgICAgICAgcmV0dXJuICpvcHRpb25hbDsKKyAgICByZXR1cm4gY2FsbGJhY2soKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6SW5QbGFjZTsKLXVzaW5nIFdU
Rjo6TnVsbG9wdDsKLXVzaW5nIFdURjo6T3B0aW9uYWw7Ci11c2luZyBXVEY6Om1ha2VPcHRpb25h
bDsKK25hbWVzcGFjZSBzdGQKK3sKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0cnVjdCBo
YXNoPHN0ZDo6b3B0aW9uYWw8VD4+CisgIHsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIGhhc2g8VD46
OnJlc3VsdF90eXBlIHJlc3VsdF90eXBlOworICAgIHR5cGVkZWYgc3RkOjpvcHRpb25hbDxUPiBh
cmd1bWVudF90eXBlOworCisgICAgY29uc3RleHByIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoYXJn
dW1lbnRfdHlwZSBjb25zdCYgYXJnKSBjb25zdCB7CisgICAgICByZXR1cm4gYXJnID8gc3RkOjpo
YXNoPFQ+e30oKmFyZykgOiByZXN1bHRfdHlwZXt9OworICAgIH0KKyAgfTsKKworICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KKyAgc3RydWN0IGhhc2g8c3RkOjpvcHRpb25hbDxUJj4+CisgIHsKKyAg
ICB0eXBlZGVmIHR5cGVuYW1lIGhhc2g8VD46OnJlc3VsdF90eXBlIHJlc3VsdF90eXBlOworICAg
IHR5cGVkZWYgc3RkOjpvcHRpb25hbDxUJj4gYXJndW1lbnRfdHlwZTsKKworICAgIGNvbnN0ZXhw
ciByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGFyZ3VtZW50X3R5cGUgY29uc3QmIGFyZykgY29uc3Qg
eworICAgICAgcmV0dXJuIGFyZyA/IHN0ZDo6aGFzaDxUPnt9KCphcmcpIDogcmVzdWx0X3R5cGV7
fTsKKyAgICB9CisgIH07Cit9CisKKyMgdW5kZWYgVFIyX09QVElPTkFMX1JFUVVJUkVTCisjIHVu
ZGVmIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OCiAKLSNlbmRpZiAvLyBPcHRpb25h
bF9oCit1c2luZyBXVEY6OnZhbHVlT3JDb21wdXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAKaW5kZXggY2ZkMmFhMzM1NGQxN2ZlMGY4ZDc0MDVlZGMyZmVhZWU2NDgyM2UwZi4uNGE3MTAy
ZTRjZWExMTY4NTM3Y2E5NTRhODQxOTU1OTU4ZWY3MzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHNpemVfdCBTdHJpbmdWaWV3OjpmaW5kKFN0cmlu
Z1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogCiBjbGFzcyBTdHJpbmdW
aWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CiBwdWJsaWM6Ci0gICAgSW1w
bChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yPiYmIGl0ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCkKKyAgICBJbXBsKGNv
bnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcj4mJiBpdGVyYXRvciwgdW5zaWduZWQgaW5kZXgpCiAgICAgICAgIDog
bV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCiAgICAgICAgICwgbV9pdGVyYXRvcihXVEZNb3ZlKGl0
ZXJhdG9yKSkKICAgICAgICAgLCBtX2luZGV4KGluZGV4KQpAQCAtMTM2LDcgKzEzNiw3IEBAIGNs
YXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKIAogcHJp
dmF0ZToKICAgICBjb25zdCBTdHJpbmdWaWV3JiBtX3N0cmluZ1ZpZXc7Ci0gICAgT3B0aW9uYWw8
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4gbV9pdGVyYXRvcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+IG1faXRlcmF0b3I7CiAgICAg
dW5zaWduZWQgbV9pbmRleDsKICAgICB1bnNpZ25lZCBtX2luZGV4RW5kOwogfTsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBWZWN0b3I8U3RyaW5nVmlldz4gU3RyaW5nVmlldzo6c3BsaXQoVUNoYXIgc2Vw
YXJhdG9yKQogfQogCiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRl
cmF0b3IoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAg
OiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3Lmlz
TnVsbCgpID8gTnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkp
CisgICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdW
aWV3LmlzTnVsbCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKE5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYjU0NWU5Njk4MjIwZGM0Njg2YThkMmY5YWNhY2Fh
M2JjY2M0NWM3MS4uYTY5NDVhNTAzMjAwODZjZWI1ZGExNjk0ZmI5NTg5YzgxYzM4OGI1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTY3Myw3ICs2NzMsNyBAQCBjbGFzcyBTdHJpbmdW
aWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvciB7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxjb25zdCBTdHJpbmdWaWV3PiBtX3N0cmluZ1ZpZXc7Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG1fbmV4dENvZGVQb2ludE9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBtX25leHRDb2RlUG9pbnRPZmZzZXQ7CiAgICAgVUNoYXIzMiBtX2NvZGVQb2ludDsKIH07
CiAKQEAgLTczOCw3ICs3MzgsNyBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlUG9pbnRz
OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpIC0+IEl0ZXJhdG9yJgogewogICAgIEFTU0VSVChtX25l
eHRDb2RlUG9pbnRPZmZzZXQpOwogICAgIGlmIChtX25leHRDb2RlUG9pbnRPZmZzZXQudmFsdWUo
KSA9PSBtX3N0cmluZ1ZpZXcuZ2V0KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgbV9uZXh0Q29kZVBv
aW50T2Zmc2V0ID0gTnVsbG9wdDsKKyAgICAgICAgbV9uZXh0Q29kZVBvaW50T2Zmc2V0ID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIGlmIChtX3N0cmlu
Z1ZpZXcuZ2V0KCkuaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKaW5kZXggY2MxZGE5YWU0MWZhZDYxMWZhZTlmMzQx
NWIzMDI5NmE4OThmNjg4OC4uNmZjNDVmYmMzZmQxMDkwYWMxZGQzYzg2YTMyNGJkYTQ2NmYwZjJh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXNzaW9uLmNwcApAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZURpZ2l0KFVDaGFy
IGRpZ2l0LCBib29sIGlzTmVnYXRpdmUsIGludDY0X3QmIGFtb3VudCkKIH0KIAogLy8gVGhlIGFt
b3VudCBmb2xsb3dzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gLT9bMC05XSsoXC5bMC05XVswLTld
KT8uCi1zdGF0aWMgT3B0aW9uYWw8aW50NjRfdD4gcGFyc2VBbW91bnQoY29uc3QgU3RyaW5nJiBh
bW91bnRTdHJpbmcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZUFtb3VudChj
b25zdCBTdHJpbmcmIGFtb3VudFN0cmluZykKIHsKICAgICBpbnQ2NF90IGFtb3VudCA9IDA7CiAK
QEAgLTEwNSwxMyArMTA1LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ2NF90PiBwYXJzZUFtb3Vu
dChjb25zdCBTdHJpbmcmIGFtb3VudFN0cmluZykKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKCFwYXJzZURpZ2l0KGMsIGlzTmVnYXRpdmUsIGFtb3VudCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRpZ2l0OwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBTdGF0ZTo6U2lnbjoKICAgICAgICAgICAgIGlmICghcGFyc2VEaWdpdChj
LCBpc05lZ2F0aXZlLCBhbW91bnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBzdGF0ZSA9
IFN0YXRlOjpEaWdpdDsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xMjIsMzAgKzEyMiwzMCBA
QCBzdGF0aWMgT3B0aW9uYWw8aW50NjRfdD4gcGFyc2VBbW91bnQoY29uc3QgU3RyaW5nJiBhbW91
bnRTdHJpbmcpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghcGFyc2VEaWdpdChj
LCBpc05lZ2F0aXZlLCBhbW91bnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFN0YXRlOjpEb3Q6CiAgICAgICAgICAgICBpZiAoIXBhcnNlRGlnaXQo
YywgaXNOZWdhdGl2ZSwgYW1vdW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBzdGF0
ZSA9IFN0YXRlOjpEb3REaWdpdDsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
U3RhdGU6OkRvdERpZ2l0OgogICAgICAgICAgICAgaWYgKCFwYXJzZURpZ2l0KGMsIGlzTmVnYXRp
dmUsIGFtb3VudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6
RW5kOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBTdGF0
ZTo6RW5kOgotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmIChzdGF0ZSAhPSBT
dGF0ZTo6RGlnaXQgJiYgc3RhdGUgIT0gU3RhdGU6OkRvdERpZ2l0ICYmIHN0YXRlICE9IFN0YXRl
OjpFbmQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKHN0YXRlID09IFN0YXRlOjpEb3REaWdpdCkgewogICAgICAgICAvLyBU
aGVyZSB3YXMgYSBzaW5nbGUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuCkBAIC0xNjMs
MTggKzE2MywxOCBAQCBzdGF0aWMgT3B0aW9uYWw8aW50NjRfdD4gcGFyc2VBbW91bnQoY29uc3Qg
U3RyaW5nJiBhbW91bnRTdHJpbmcpCiAgICAgcmV0dXJuIGFtb3VudDsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzPiBjcmVhdGVDb250YWN0RmllbGRz
KERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBcnJheVZhbHVlJiBjb250YWN0RmllbGRzQXJyYXkp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxkcz4gY3Jl
YXRlQ29udGFjdEZpZWxkcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgY29u
dGFjdEZpZWxkc0FycmF5KQogewogICAgIFBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzIHJl
c3VsdDsKIAogICAgIHNpemVfdCBjb250YWN0RmllbGRzQ291bnQ7CiAgICAgaWYgKCFjb250YWN0
RmllbGRzQXJyYXkubGVuZ3RoKGNvbnRhY3RGaWVsZHNDb3VudCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb250YWN0RmllbGRzQ291bnQ7ICsraSkgewogICAgICAgICBTdHJpbmcgY29u
dGFjdEZpZWxkOwogICAgICAgICBpZiAoIWNvbnRhY3RGaWVsZHNBcnJheS5nZXQoaSwgY29udGFj
dEZpZWxkKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoY29udGFjdEZpZWxkID09ICJwb3N0YWxBZGRy
ZXNzIikKICAgICAgICAgICAgIHJlc3VsdC5wb3N0YWxBZGRyZXNzID0gdHJ1ZTsKQEAgLTE4Nywy
MSArMTg3LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxk
cz4gY3JlYXRlQ29udGFjdEZpZWxkcyhET01XaW5kb3cmIHdpCiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgY29udGFjdEZpZWxkLCAi
XCIgaXMgbm90IGEgdmFsaWQgY29udGFjdCBmaWVsZC4iKTsKICAgICAgICAgICAgIHdpbmRvdy5w
cmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW06OlR5cGU+IHRvTGluZUl0ZW1UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZT4gdG9MaW5lSXRlbVR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmICh0eXBlID09ICJwZW5kaW5nIikKICAg
ICAgICAgcmV0dXJuIFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6UGVuZGluZzsKICAg
ICBpZiAodHlwZSA9PSAiZmluYWwiKQogICAgICAgICByZXR1cm4gUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOjpUeXBlOjpGaW5hbDsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRMaW5lSXRlbVByb3BlcnR5TmFt
ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMg
Ym9vbCBpc1ZhbGlkTGluZUl0ZW1Qcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVl
c3Q6OkxpbmVJdGVtPiBjcmVhdGVMaW5lSXRlbShET01XaW5kb3cmIHdpbmRvdywgY29uc3QgRGlj
dGlvbmFyeSYgdG90YWwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0+IGNyZWF0ZUxpbmVJdGVtKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBEaWN0aW9uYXJ5
JiB0b3RhbCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm9wZXJ0eU5hbWVzOwogICAgIHRvdGFs
LmdldE93blByb3BlcnR5TmFtZXMocHJvcGVydHlOYW1lcyk7CkBAIC0yMjksNyArMjI5LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gY3JlYXRlTGluZUl0ZW0o
RE9NV2luZG93JiB3aW5kb3csIGNvbnMKICAgICAgICAgaWYgKCFpc1ZhbGlkTGluZUl0ZW1Qcm9w
ZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFr
ZVN0cmluZygiXCIiICsgcHJvcGVydHlOYW1lLCAiXCIgaXMgbm90IGEgdmFsaWQgbGluZSBpdGVt
IHByb3BlcnR5IG5hbWUuIik7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2Uo
bWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjcmVhdGVMaW5lSXRlbShE
T01XaW5kb3cmIHdpbmRvdywgY29ucwogICAgICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgICAg
IGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArICp0eXBlU3RyaW5nLCAiXCIgaXMgbm90
IGEgdmFsaWQgbGluZSBpdGVtIHR5cGUuIik7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJv
ck1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXN1bHQudHlw
ZSA9ICp0eXBlOwpAQCAtMjU1LDI1ICsyNTUsMjUgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbT4gY3JlYXRlTGluZUl0ZW0oRE9NV2luZG93JiB3aW5kb3csIGNvbnMK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJc
IiIgKyAqYW1vdW50U3RyaW5nLCAiXCIgaXMgbm90IGEgdmFsaWQgYW1vdW50LiIpOwogICAgICAg
ICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9
CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjxQYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+PiBjcmVhdGVMaW5lSXRlbXMoRE9NV2luZG93JiB3
aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIGxpbmVJdGVtc0FycmF5KQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGNyZWF0ZUxpbmVJdGVtcyhE
T01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgbGluZUl0ZW1zQXJyYXkpCiB7CiAg
ICAgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gcmVzdWx0OwogCiAgICAgc2l6ZV90
IGxpbmVJdGVtQ291bnQ7CiAgICAgaWYgKCFsaW5lSXRlbXNBcnJheS5sZW5ndGgobGluZUl0ZW1D
b3VudCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lSXRlbUNvdW50OyArK2kpIHsK
ICAgICAgICAgRGljdGlvbmFyeSBsaW5lSXRlbURpY3Rpb25hcnk7CiAgICAgICAgIGlmICghbGlu
ZUl0ZW1zQXJyYXkuZ2V0KGksIGxpbmVJdGVtRGljdGlvbmFyeSkpCi0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
aWYgKGF1dG8gbGluZUl0ZW0gPSBjcmVhdGVMaW5lSXRlbSh3aW5kb3csIGxpbmVJdGVtRGljdGlv
bmFyeSkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpsaW5lSXRlbSk7CkBAIC0yODIsMTgg
KzI4MiwxOCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRl
bT4+IGNyZWF0ZUxpbmVJdGVtcyhET01XaW5kb3cmIHdpbgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXM+
IGNyZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVzKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBcnJh
eVZhbHVlJiBtZXJjaGFudENhcGFiaWxpdGllc0FycmF5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzPiBjcmVhdGVNZXJjaGFudENhcGFi
aWxpdGllcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgbWVyY2hhbnRDYXBh
YmlsaXRpZXNBcnJheSkKIHsKICAgICBQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRp
ZXMgcmVzdWx0OwogCiAgICAgc2l6ZV90IG1lcmNoYW50Q2FwYWJpbGl0aWVzQ291bnQ7CiAgICAg
aWYgKCFtZXJjaGFudENhcGFiaWxpdGllc0FycmF5Lmxlbmd0aChtZXJjaGFudENhcGFiaWxpdGll
c0NvdW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lcmNoYW50Q2FwYWJpbGl0aWVz
Q291bnQ7ICsraSkgewogICAgICAgICBTdHJpbmcgbWVyY2hhbnRDYXBhYmlsaXR5OwogICAgICAg
ICBpZiAoIW1lcmNoYW50Q2FwYWJpbGl0aWVzQXJyYXkuZ2V0KGksIG1lcmNoYW50Q2FwYWJpbGl0
eSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKG1lcmNoYW50Q2FwYWJpbGl0eSA9PSAic3VwcG9ydHMz
RFMiKQogICAgICAgICAgICAgcmVzdWx0LnN1cHBvcnRzM0RTID0gdHJ1ZTsKQEAgLTMwNiwzMCAr
MzA2LDMwIEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmls
aXRpZXM+IGNyZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVzCiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgbWVyY2hhbnRDYXBhYmlsaXR5
LCAiXCIgaXMgbm90IGEgdmFsaWQgbWVyY2hhbnQgY2FwYWJpbGl0eS4iKTsKICAgICAgICAgICAg
IHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAg
IH0KIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4gY3JlYXRlU3VwcG9ydGVkTmV0d29ya3ModW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93
JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIHN1cHBvcnRlZE5ldHdvcmtzQXJyYXkpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlU3VwcG9ydGVkTmV0d29ya3Mo
dW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIHN1
cHBvcnRlZE5ldHdvcmtzQXJyYXkpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogCiAg
ICAgc2l6ZV90IHN1cHBvcnRlZE5ldHdvcmtzQ291bnQ7CiAgICAgaWYgKCFzdXBwb3J0ZWROZXR3
b3Jrc0FycmF5Lmxlbmd0aChzdXBwb3J0ZWROZXR3b3Jrc0NvdW50KSkKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN1cHBvcnRlZE5ldHdvcmtzQ291bnQ7ICsraSkgewogICAgICAgICBTdHJp
bmcgc3VwcG9ydGVkTmV0d29yazsKICAgICAgICAgaWYgKCFzdXBwb3J0ZWROZXR3b3Jrc0FycmF5
LmdldChpLCBzdXBwb3J0ZWROZXR3b3JrKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIVBheW1lbnRS
ZXF1ZXN0Ojppc1ZhbGlkU3VwcG9ydGVkTmV0d29yayh2ZXJzaW9uLCBzdXBwb3J0ZWROZXR3b3Jr
KSkgewogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgc3VwcG9y
dGVkTmV0d29yaywgIlwiIGlzIG5vdCBhIHZhbGlkIHBheW1lbnQgbmV0d29yay4iKTsKICAgICAg
ICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShzdXBwb3J0ZWROZXR3b3JrKSk7CkBA
IC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVT
dXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCB2ZXJzaW9uLCBET01XaW4KICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZT4g
dG9TaGlwcGluZ1R5cGUoY29uc3QgU3RyaW5nJiBzaGlwcGluZ1R5cGVTdHJpbmcpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlPiB0b1NoaXBwaW5nVHlw
ZShjb25zdCBTdHJpbmcmIHNoaXBwaW5nVHlwZVN0cmluZykKIHsKICAgICBpZiAoc2hpcHBpbmdU
eXBlU3RyaW5nID09ICJzaGlwcGluZyIpCiAgICAgICAgIHJldHVybiBQYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdUeXBlOjpTaGlwcGluZzsKQEAgLTM0OSw3ICszNDksNyBAQCBzdGF0aWMgT3B0aW9u
YWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZT4gdG9TaGlwcGluZ1R5cGUoY29uc3QgU3Ry
aW5nJiBzaGlwcAogICAgIGlmIChzaGlwcGluZ1R5cGVTdHJpbmcgPT0gInNlcnZpY2VQaWNrdXAi
KQogICAgICAgICByZXR1cm4gUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZTo6U2VydmljZVBp
Y2t1cDsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHN0YXRpYyBib29sIGlzVmFsaWRTaGlwcGluZ01ldGhvZFByb3BlcnR5TmFtZShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkU2hpcHBpbmdNZXRob2RQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6
OlNoaXBwaW5nTWV0aG9kPiBjcmVhdGVTaGlwcGluZ01ldGhvZChET01XaW5kb3cmIHdpbmRvdywg
Y29uc3QgRGljdGlvbmFyeSYgc2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5KQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBjcmVhdGVTaGlwcGluZ01l
dGhvZChET01XaW5kb3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFyeSYgc2hpcHBpbmdNZXRob2RE
aWN0aW9uYXJ5KQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5TmFtZXM7CiAgICAgc2hp
cHBpbmdNZXRob2REaWN0aW9uYXJ5LmdldE93blByb3BlcnR5TmFtZXMocHJvcGVydHlOYW1lcyk7
CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlw
cGluZ01ldGhvZD4gY3JlYXRlU2hpcHBpbmdNZXRob2QoRE9NV2luZG93JgogICAgICAgICBpZiAo
IWlzVmFsaWRTaGlwcGluZ01ldGhvZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CiAgICAg
ICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyBwcm9wZXJ0eU5hbWUsICJc
IiBpcyBub3QgYSB2YWxpZCBzaGlwcGluZyBtZXRob2QgcHJvcGVydHkgbmFtZS4iKTsKICAgICAg
ICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzg3LDIxICszODcsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRS
ZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY3JlYXRlU2hpcHBpbmdNZXRob2QoRE9NV2luZG93Jgog
ICAgIGF1dG8gbGFiZWwgPSBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnkuZ2V0PFN0cmluZz4oImxh
YmVsIik7CiAgICAgaWYgKCFsYWJlbCkgewogICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3Nh
Z2UoIk1pc3Npbmcgc2hpcHBpbmcgbWV0aG9kIGxhYmVsLiIpOwotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmVzdWx0Lmxh
YmVsID0gKmxhYmVsOwogCiAgICAgYXV0byBkZXRhaWwgPSBzaGlwcGluZ01ldGhvZERpY3Rpb25h
cnkuZ2V0PFN0cmluZz4oImRldGFpbCIpOwogICAgIGlmICghZGV0YWlsKSB7CiAgICAgICAgIHdp
bmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBzaGlwcGluZyBtZXRob2QgZGV0YWlsLiIp
OwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAgICAgcmVzdWx0LmRldGFpbCA9ICpkZXRhaWw7CiAKICAgICBhdXRvIGFtb3VudFN0
cmluZyA9IHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeS5nZXQ8U3RyaW5nPigiYW1vdW50Iik7CiAg
ICAgaWYgKCFhbW91bnRTdHJpbmcpIHsKICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdl
KCJNaXNzaW5nIHNoaXBwaW5nIG1ldGhvZCBhbW91bnQuIik7Ci0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChhdXRv
IGFtb3VudCA9IHBhcnNlQW1vdW50KCphbW91bnRTdHJpbmcpKQpAQCAtNDA5LDM2ICs0MDksMzYg
QEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY3JlYXRl
U2hpcHBpbmdNZXRob2QoRE9NV2luZG93JgogICAgIGVsc2UgewogICAgICAgICBhdXRvIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJcIiIgKyAqYW1vdW50U3RyaW5nLCAiXCIgaXMgbm90IGEgdmFsaWQg
YW1vdW50LiIpOwogICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7Ci0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGF1dG8gaWRlbnRpZmllciA9IHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeS5nZXQ8
U3RyaW5nPigiaWRlbnRpZmllciIpOwogICAgIGlmICghaWRlbnRpZmllcikgewogICAgICAgICB3
aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIk1pc3Npbmcgc2hpcHBpbmcgbWV0aG9kIGlkZW50aWZp
ZXIuIik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KICAgICByZXN1bHQuaWRlbnRpZmllciA9ICppZGVudGlmaWVyOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxQYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2Q+PiBjcmVhdGVTaGlwcGluZ01ldGhvZHMoRE9NV2luZG93JiB3aW5k
b3csIGNvbnN0IEFycmF5VmFsdWUmIHNoaXBwaW5nTWV0aG9kc0FycmF5KQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4+IGNyZWF0ZVNo
aXBwaW5nTWV0aG9kcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgc2hpcHBp
bmdNZXRob2RzQXJyYXkpCiB7CiAgICAgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01l
dGhvZD4gcmVzdWx0OwogCiAgICAgc2l6ZV90IHNoaXBwaW5nTWV0aG9kQ291bnQ7CiAgICAgaWYg
KCFzaGlwcGluZ01ldGhvZHNBcnJheS5sZW5ndGgoc2hpcHBpbmdNZXRob2RDb3VudCkpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaGlwcGluZ01ldGhvZENvdW50OyArK2kpIHsKICAgICAg
ICAgRGljdGlvbmFyeSBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnk7CiAgICAgICAgIGlmICghc2hp
cHBpbmdNZXRob2RzQXJyYXkuZ2V0KGksIHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeSkpCi0gICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgaWYgKGF1dG8gc2hpcHBpbmdNZXRob2QgPSBjcmVhdGVTaGlwcGluZ01ldGhv
ZCh3aW5kb3csIHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeSkpCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCpzaGlwcGluZ01ldGhvZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRQ
YXltZW50UmVxdWVzdFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3Jl
YXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93JiB3aW5kb3csIGNv
bnN0IERpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50
UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93
JiB3aW5kb3csIGNvbnN0IERpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCiB7CiAgICAgUGF5bWVudFJl
cXVlc3QgcGF5bWVudFJlcXVlc3Q7CiAKQEAgLTQ4MCwyNSArNDgwLDI1IEBAIHN0YXRpYyBPcHRp
b25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lv
biwgRE9NV2luZG93CiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiBwcm9wZXJ0eU5hbWVz
KSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gInJlcXVpcmVkU2hpcHBpbmdBZGRyZXNz
RmllbGRzIikgewogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKCJcInJlcXVp
cmVkU2hpcHBpbmdBZGRyZXNzRmllbGRzXCIgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIHN3
aXRjaCB0byBcInJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzXCIgaW5zdGVhZC4iKTsKLSAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gInJlcXVpcmVkQmls
bGluZ0FkZHJlc3NGaWVsZHMiKSB7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3Nh
Z2UoIlwicmVxdWlyZWRCaWxsaW5nQWRkcmVzc0ZpZWxkc1wiIGhhcyBiZWVuIGRlcHJlY2F0ZWQu
IFBsZWFzZSBzd2l0Y2ggdG8gXCJyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzXCIgaW5zdGVh
ZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNWYWxpZFBheW1lbnRSZXF1
ZXN0UHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoIlwiIiArIHByb3BlcnR5TmFtZSwgIlwiIGlzIG5vdCBhIHZhbGlkIHBh
eW1lbnQgcmVxdWVzdCBwcm9wZXJ0eSBuYW1lLiIpOwogICAgICAgICAgICAgd2luZG93LnByaW50
RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KGF1dG8gbWVyY2hhbnRDYXBhYmlsaXRpZXNBcnJheSA9IGRpY3Rpb25hcnkuZ2V0PEFycmF5VmFs
dWU+KCJtZXJjaGFudENhcGFiaWxpdGllcyIpKSB7CiAgICAgICAgIGF1dG8gbWVyY2hhbnRDYXBh
YmlsaXRpZXMgPSBjcmVhdGVNZXJjaGFudENhcGFiaWxpdGllcyh3aW5kb3csICptZXJjaGFudENh
cGFiaWxpdGllc0FycmF5KTsKICAgICAgICAgaWYgKCFtZXJjaGFudENhcGFiaWxpdGllcykKLSAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRNZXJjaGFudENhcGFiaWxpdGllcygqbWVy
Y2hhbnRDYXBhYmlsaXRpZXMpOwogICAgIH0KQEAgLTUwNiw3ICs1MDYsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNp
b24sIERPTVdpbmRvdwogICAgIGlmIChhdXRvIHN1cHBvcnRlZE5ldHdvcmtzQXJyYXkgPSBkaWN0
aW9uYXJ5LmdldDxBcnJheVZhbHVlPigic3VwcG9ydGVkTmV0d29ya3MiKSkgewogICAgICAgICBh
dXRvIHN1cHBvcnRlZE5ldHdvcmtzID0gY3JlYXRlU3VwcG9ydGVkTmV0d29ya3ModmVyc2lvbiwg
d2luZG93LCAqc3VwcG9ydGVkTmV0d29ya3NBcnJheSk7CiAgICAgICAgIGlmICghc3VwcG9ydGVk
TmV0d29ya3MpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0U3VwcG9ydGVkTmV0
d29ya3MoKnN1cHBvcnRlZE5ldHdvcmtzKTsKICAgICB9CkBAIC01MTksNyArNTE5LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVxdWVzdCh1bnNpZ25l
ZCB2ZXJzaW9uLCBET01XaW5kb3cKICAgICBpZiAoYXV0byByZXF1aXJlZEJpbGxpbmdDb250YWN0
RmllbGRzQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigicmVxdWlyZWRCaWxsaW5n
Q29udGFjdEZpZWxkcyIpKSB7CiAgICAgICAgIGF1dG8gcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZp
ZWxkcyA9IGNyZWF0ZUNvbnRhY3RGaWVsZHMod2luZG93LCAqcmVxdWlyZWRCaWxsaW5nQ29udGFj
dEZpZWxkc0FycmF5KTsKICAgICAgICAgaWYgKCFyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRz
KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldFJlcXVpcmVkQmlsbGluZ0NvbnRh
Y3RGaWVsZHMoKnJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMpOwogICAgIH0KQEAgLTUyOSw3
ICs1MjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRS
ZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAgICAgICBhdXRvIGJpbGxpbmdD
b250YWN0ID0gUGF5bWVudENvbnRhY3Q6OmZyb21KUygqSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpj
dXJyZW50U3RhdGUoKSwgKmJpbGxpbmdDb250YWN0VmFsdWUsIGVycm9yTWVzc2FnZSk7CiAgICAg
ICAgIGlmICghYmlsbGluZ0NvbnRhY3QpIHsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9y
TWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcGF5bWVu
dFJlcXVlc3Quc2V0QmlsbGluZ0NvbnRhY3QoKmJpbGxpbmdDb250YWN0KTsKQEAgLTUzOCw3ICs1
MzgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRSZXF1
ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAgIGlmIChhdXRvIHJlcXVpcmVkU2hp
cHBpbmdDb250YWN0RmllbGRzQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigicmVx
dWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMiKSkgewogICAgICAgICBhdXRvIHJlcXVpcmVkU2hp
cHBpbmdDb250YWN0RmllbGRzID0gY3JlYXRlQ29udGFjdEZpZWxkcyh3aW5kb3csICpyZXF1aXJl
ZFNoaXBwaW5nQ29udGFjdEZpZWxkc0FycmF5KTsKICAgICAgICAgaWYgKCFyZXF1aXJlZFNoaXBw
aW5nQ29udGFjdEZpZWxkcykKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRSZXF1
aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcygqcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMp
OwogICAgIH0KQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVl
c3Q+IGNyZWF0ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAg
ICAgICBhdXRvIHNoaXBwaW5nQ29udGFjdCA9IFBheW1lbnRDb250YWN0Ojpmcm9tSlMoKkpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksICpzaGlwcGluZ0NvbnRhY3RWYWx1ZSwg
ZXJyb3JNZXNzYWdlKTsKICAgICAgICAgaWYgKCFzaGlwcGluZ0NvbnRhY3QpIHsKICAgICAgICAg
ICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0U2hpcHBpbmdDb250YWN0KCpzaGlwcGlu
Z0NvbnRhY3QpOwpAQCAtNTYwLDcgKzU2MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVx
dWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAg
ICAgICAgIGlmICghc2hpcHBpbmdUeXBlKSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCJcIiIgKyAqc2hpcHBpbmdUeXBlU3RyaW5nLCAiXCIgaXMgbm90IGEgdmFsaWQg
c2hpcHBpbmcgdHlwZS4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZSht
ZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRTaGlw
cGluZ1R5cGUoKnNoaXBwaW5nVHlwZSk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQg
dmVyc2lvbiwgRE9NV2luZG93CiAgICAgaWYgKGF1dG8gc2hpcHBpbmdNZXRob2RzQXJyYXkgPSBk
aWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigic2hpcHBpbmdNZXRob2RzIikpIHsKICAgICAgICAg
YXV0byBzaGlwcGluZ01ldGhvZHMgPSBjcmVhdGVTaGlwcGluZ01ldGhvZHMod2luZG93LCAqc2hp
cHBpbmdNZXRob2RzQXJyYXkpOwogICAgICAgICBpZiAoIXNoaXBwaW5nTWV0aG9kcykKLSAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRTaGlwcGluZ01ldGhvZHMoKnNoaXBwaW5nTWV0
aG9kcyk7CiAgICAgfQpAQCAtNTc2LDcgKzU3Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50
UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93
CiAgICAgaWYgKGF1dG8gdG90YWxEaWN0aW9uYXJ5ID0gZGljdGlvbmFyeS5nZXQ8RGljdGlvbmFy
eT4oInRvdGFsIikpIHsKICAgICAgICAgYXV0byB0b3RhbCA9IGNyZWF0ZUxpbmVJdGVtKHdpbmRv
dywgKnRvdGFsRGljdGlvbmFyeSk7CiAgICAgICAgIGlmICghdG90YWwpCi0gICAgICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcGF5bWVudFJlcXVlc3Quc2V0VG90YWwoKnRvdGFsKTsKICAgICB9CkBAIC04NDIsNyArODQy
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihjb25zdCBEaWN0aW9uYXJ5JgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cz4gdG9QYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cz4gdG9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyh1
bnNpZ25lZCBzaG9ydCBzdGF0dXMpCiB7CiAgICAgc3dpdGNoIChzdGF0dXMpIHsKICAgICBjYXNl
IEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX1NVQ0NFU1M6CkBAIC04NzAsNyArODcwLDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzPiB0b1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKHVuc2lnbmUKICAgICAgICAgcmV0dXJuIFBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzOjpQSU5Mb2Nrb3V0OwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKaW5kZXggM2YwYTQ3
NjdkNDg1OGRhMTE0MjYxNzZlY2I4ZTE4NzcwNDUwNDQ0Mi4uZjA0ZTFhZDY4MWQ1ZTliZWM5ZThk
NjAwYTc3M2FiYWE1YzcwNWM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29udGFjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvbnRhY3QuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBQYXltZW50Q29u
dGFjdCB7CiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxQYXltZW50Q29udGFj
dD4gZnJvbUpTKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIGVycm9yTWVz
c2FnZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IGZyb21KUyhK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogICAg
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CiAKICAgICBQS0NvbnRh
Y3QgKnBrQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0LmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ci5jcHAKaW5kZXggMGQ0YmRiZTcyZjNhYTM1ZDU0NDcwY2EzMzBhODAxMDdlNTliNWM4OS4uMTU0
YTZkMDVjODJlYzdhZGFiZmJmMmZlN2M3M2NhZDFkMDAyMzRhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAt
ODMsMjEgKzgzLDIxIEBAIHZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihjb25zdCBQYXltZW50TWVyY2hhbnRTZXNzaW9uCiAgICAgbV9jbGllbnQuY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24ocGF5bWVudE1lcmNoYW50U2Vzc2lvbik7CiB9CiAKLXZv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6
OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQordm9pZCBQYXltZW50Q29vcmRp
bmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMgc3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKIHsKICAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9u
KTsKIAogICAgIG1fY2xpZW50LmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RhdHVz
LCBXVEZNb3ZlKG5ld1RvdGFsQW5kSXRlbXMpKTsKIH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzIHN0YXR1cywgY29uc3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhv
ZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
IHN0YXR1cywgY29uc3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5l
d1NoaXBwaW5nTWV0aG9kcywgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCiB7CiAgICAgQVNTRVJUKG1fYWN0aXZlU2Vzc2lv
bik7CiAKICAgICBtX2NsaWVudC5jb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGF0
dXMsIG5ld1NoaXBwaW5nTWV0aG9kcywgV1RGTW92ZShuZXdUb3RhbEFuZEl0ZW1zKSk7CiB9CiAK
LXZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24o
T3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0
ZW1zKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3
VG90YWxBbmRJdGVtcykKIHsKICAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9uKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgK
aW5kZXggN2M4YjIzNGM1N2JlYzc5MTk1OTNmYzNmZDk4ZDUxMzllNTgyNGRhNi4uNTAwYWUxNmQx
OWZkM2NjMGJiY2EwYmVkYWU3NDU2ZjU1MzU3MjljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC01NSw5ICs1NSw5
IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvciB7CiAKICAgICBib29sIGJlZ2luUGF5bWVudFNl
c3Npb24oQXBwbGVQYXlTZXNzaW9uJiwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3Qg
VmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgUGF5bWVudFJlcXVlc3QmKTsKICAgICB2
b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Np
b24mKTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcz4gbmV3SXRlbXMpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIE9wdGlvbmFsPFBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMpOwotICAgIHZvaWQgY29tcGxldGVQ
YXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcz4gbmV3SXRlbXMpOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgc3RkOjpvcHRpb25hbDxQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld0l0ZW1zKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBW
ZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2Rz
LCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRl
bXMpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdJdGVtcyk7CiAgICAgdm9p
ZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKTsKICAg
ICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXgg
ZmNmN2UxOTE3Y2FmZjBiMGExY2VjYzI2NWM1OGU0MmY2MmZiYmVjOC4uM2Q2ZWNjMDczMDk0MWZl
YmFmMDRiY2Q0OGE0OTUyOWRlMzc1ODJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC00Niw5
ICs0Niw5IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0
b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBQYXltZW50UmVxdWVzdCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNo
YW50U2Vzc2lvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgT3B0aW9uYWw8UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9k
PiYgbmV3U2hpcHBpbmdNZXRob2RzLCBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4g
bmV3VG90YWxBbmRJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9y
PFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgc3Rk
OjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5k
SXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0
ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlUGF5
bWVudFNlc3Npb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVu
dENvb3JkaW5hdG9yRGVzdHJveWVkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaAppbmRleCA4ZTZjOGQ4
NWVmNDk3YTk1OGQxZTM4ZDc0NGUxOTdjYjU4YTdmZjg0Li5hNWM2ZGRkY2VjMDE1ZWEyYTk3YTg0
MjdmNmM4Y2M4MzBjZDZkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaApAQCAtNTQsNyArNTQsNyBAQCBj
bGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGlj
IE9wdGlvbmFsPFBheW1lbnRNZXJjaGFudFNlc3Npb24+IGZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFBheW1lbnRNZXJjaGFudFNlc3Npb24+IGZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgUEtQYXltZW50TWVyY2hh
bnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Br
UGF5bWVudE1lcmNoYW50U2Vzc2lvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggNmFmOTJkMzA1Yjg3NDJjZWU1
MmI2N2U1MzRkZTg2MjYwYjNkMGU5Mi4uZWMzZWUxZmFmM2IyNjUzODgxYWNjOTQzYTIzNmFmNzZm
ZjQ3M2IzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dFJlcXVlc3QuaApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBQYXltZW50UmVxdWVzdCB7CiAgICAg
ICAgIC8vIFN0b3JlZCBhcyBhIGZpeGVkIHBvaW50IGRlY2ltYWwgbnVtYmVyIHdpdGggdHdvIGRl
Y2ltYWxzOgogICAgICAgICAvLyAxLjIzIC0+IDEyMy4KICAgICAgICAgLy8gMC4wMSAtPiAxLgot
ICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBhbW91bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
aW50NjRfdD4gYW1vdW50OwogICAgICAgICBTdHJpbmcgbGFiZWw7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFj
dENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
Q29udGFjdENvY29hLm1tCmluZGV4IGE0YzA1M2JkNTUwY2E5MjI4OTY2MmJhNzc5NTBhYjhkNGVl
YjE0YmEuLjE3YzI1Yzc5NDlkOGFlODFlNWMzZTJjZjMyZTAyYzkzMDM5ODI3NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRDb250YWN0Q29jb2EubW0KQEAgLTEwNCwyMCArMTA0LDIwIEBAIHN0YXRpYyBSZXRhaW5QdHI8
UEtDb250YWN0PiBmcm9tRGljdGlvbmFyeShOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIFN0cmlu
ZyYgZXJyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+
IFBheW1lbnRDb250YWN0Ojpmcm9tSlMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQorc3RkOjpvcHRpb25hbDxQYXltZW50Q29u
dGFjdD4gUGF5bWVudENvbnRhY3Q6OmZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IERv
bid0IHJvdW5kLXRyaXAgdXNpbmcgTlNTdHJpbmcuCiAgICAgYXV0byBqc29uU3RyaW5nID0gSlNP
TlN0cmluZ2lmeSgmc3RhdGUsIHZhbHVlLCAwKTsKICAgICBpZiAoIWpzb25TdHJpbmcpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byBkaWN0aW9uYXJ5ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNEaWN0aW9uYXJ5PihbTlNKU09O
U2VyaWFsaXphdGlvbiBKU09OT2JqZWN0V2l0aERhdGE6WyhOU1N0cmluZyAqKWpzb25TdHJpbmcg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIG9wdGlvbnM6MCBlcnJvcjpu
aWxdKTsKICAgICBpZiAoIWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6
W05TRGljdGlvbmFyeSBjbGFzc11dKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcGtDb250YWN0ID0gZnJvbURpY3Rpb25h
cnkoZGljdGlvbmFyeSwgZXJyb3JNZXNzYWdlKTsKICAgICBpZiAoIXBrQ29udGFjdCkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gUGF5bWVudENvbnRhY3QocGtDb250YWN0LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KaW5kZXggMzQ5MTJmMDk4NDFkMzdkYzc4ZDJhODgwOWY5
ODM4OTcwNDk2YTkwMy4uMmZiYzQxODUzMDQyMzZkMjg0OWM5MDY4NzYxZTIwN2Y0OTI0ZWYzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KQEAgLTQyLDE2ICs0Miwx
NiBAQCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFBheW1lbnRNZXJjaGFudFNlc3Npb24+
IFBheW1lbnRNZXJjaGFudFNlc3Npb246OmZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudE1lcmNoYW50
U2Vzc2lvbj4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBEb24n
dCByb3VuZC10cmlwIHVzaW5nIE5TU3RyaW5nLgogICAgIGF1dG8ganNvblN0cmluZyA9IEpTT05T
dHJpbmdpZnkoJnN0YXRlLCB2YWx1ZSwgMCk7CiAgICAgaWYgKCFqc29uU3RyaW5nKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gZGljdGlvbmFyeSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TRGljdGlvbmFyeT4oW05TSlNPTlNl
cmlhbGl6YXRpb24gSlNPTk9iamVjdFdpdGhEYXRhOlsoTlNTdHJpbmcgKilqc29uU3RyaW5nIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBvcHRpb25zOjAgZXJyb3I6bmls
XSk7CiAgICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFbZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltO
U0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9
IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uSW5zdGFuY2UoKSBpbml0V2l0
aERpY3Rpb25hcnk6ZGljdGlvbmFyeV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKaW5kZXggOGQwMmIxMjMwN2E0MjA2Nzc0NjVhMzIyNDliZmJlMzhlMWU1
YzQ1ZS4uMDEzNDBjYjJkYzg0MGMyNzhhNTg3MjgwODQ2NzQ3YTkxZWE4ZDkyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtNDgsNyArNDgsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpl
eHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3RkOjpvcHRp
b25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNCbG9iOjppbmZv
KCkpKSB7CiAgICAgICAgIGF1dG8mIGJsb2IgPSAqSlNCbG9iOjp0b1dyYXBwZWQodmFsdWUpOwpA
QCAtODAsNyArODAsNyBAQCBPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OkV4ZQogICAgIGlmICh2YWx1ZS5p
bmhlcml0cyhKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjppbmZvKCkpKQogICAgICAgICByZXR1cm4g
RmV0Y2hCb2R5KHRvVW5zaGFyZWRBcnJheUJ1ZmZlclZpZXcodmFsdWUpLnJlbGVhc2VDb25zdE5v
bk51bGwoKSk7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiY2IyNzg3YTkwYmI4MzgyZDNhMzY5Y2QzY2E3Nzg3MmE2
MTVkYTU2Li4yMDU0NzE0ZjMxZWVlM2U5NTg0M2MzYjM2NDMxMjlkZmM1YWRmM2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xh
c3MgRmV0Y2hCb2R5IHsKICAgICBib29sIGlzVVJMU2VhcmNoUGFyYW1zKCkgY29uc3QgeyByZXR1
cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgVVJMU2VhcmNoUGFyYW1zPj4obV9k
YXRhKTsgfQogICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSk7IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJv
ZHk+IGV4dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlLCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+
IGV4dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlLCBTdHJpbmcmKTsKICAgICBzdGF0aWMgRmV0Y2hCb2R5IGxvYWRpbmdCb2R5KCkgeyBy
ZXR1cm4geyB9OyB9CiAKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggOGJmODI5ZGYwZTQ5
OWVmZWRjYTcxOGQ3MTc0NDVkZjBkZWE2MmIxNy4uYWNjZTAyNjFhYmNmZDE2N2Q3MmE1ODhlODE5
YTJiOWQ5Njg1ZGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlPd25lci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1GZXRjaEJvZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYg
aGVhZGVycykKK0ZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0
Y2hIZWFkZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAg
ICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAsIG1faGVhZGVycyhXVEZNb3ZlKGhlYWRl
cnMpKQpAQCAtMTkxLDEzICsxOTEsMTMgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2Io
Y29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9ibG9iTG9hZGVyID0geyAqdGhpcyB9OworICAgIG1fYmxv
YkxvYWRlci5lbXBsYWNlKCp0aGlzKTsKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKIAogICAg
IG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBi
bG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkgewogICAg
ICAgICBtX2JvZHktPmxvYWRpbmdGYWlsZWQoKTsKLSAgICAgICAgbV9ibG9iTG9hZGVyID0gTnVs
bG9wdDsKKyAgICAgICAgbV9ibG9iTG9hZGVyID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKQEAgLTIwNyw3ICsyMDcs
NyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9iTG9hZGluZygpCiB7CiAgICAgQVNT
RVJUKG1fYmxvYkxvYWRlcik7CiAKLSAgICBtX2Jsb2JMb2FkZXIgPSBOdWxsb3B0OworICAgIG1f
YmxvYkxvYWRlciA9IHN0ZDo6bnVsbG9wdDsKICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
CmluZGV4IGExMzg2OTc4MjE0MDA3MjJkN2VjYTJjNzI2ZDU4MDFhODM0MWY5ODguLjI5ZTMwNTE1
ZjNjNWViNzk1Yzk3ZmE0MDZkMjA4MmU1MjM5N2JlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGZXRjaEJvZHlPd25lciA6IHB1YmxpYyBSZWZDb3VudGVkPEZl
dGNoQm9keU93bmVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgRmV0
Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keT4m
JiwgUmVmPEZldGNoSGVhZGVycz4mJik7CisgICAgRmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJz
PiYmKTsKIAogICAgIC8vIEV4cG9zZWQgQm9keSBBUEkKICAgICBib29sIGlzRGlzdHVyYmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Rpc3R1cmJlZDsgfTsKQEAgLTg0LDYgKzg0LDggQEAgY2xhc3Mg
RmV0Y2hCb2R5T3duZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaEJvZHlPd25lcj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QKICAgICBzdHJ1Y3QgQmxvYkxvYWRlciBmaW5hbCA6IEZldGNoTG9h
ZGVyQ2xpZW50IHsKICAgICAgICAgQmxvYkxvYWRlcihGZXRjaEJvZHlPd25lciYpOwogCisgICAg
ICAgIHZvaWQgc3dhcChCbG9iTG9hZGVyJik7CisKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGll
bnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBvd25lci5ibG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0K
QEAgLTk1LDcgKzk3LDcgQEAgY2xhc3MgRmV0Y2hCb2R5T3duZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGZXRjaEJvZHlPd25lcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QKICAgICB9OwogCiBwcm90
ZWN0ZWQ6Ci0gICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBtX2JvZHk7CisgICAgc3RkOjpvcHRpb25h
bDxGZXRjaEJvZHk+IG1fYm9keTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBib29s
IG1faXNEaXN0dXJiZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShSRUFEQUJMRV9TVFJFQU1fQVBJ
KQpAQCAtMTA0LDcgKzEwNiw3IEBAIGNsYXNzIEZldGNoQm9keU93bmVyIDogcHVibGljIFJlZkNv
dW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAgICAgUmVmPEZl
dGNoSGVhZGVycz4gbV9oZWFkZXJzOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEJsb2JMb2Fk
ZXI+IG1fYmxvYkxvYWRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxv
YWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAppbmRleCA1ZmMwM2U2OGM1NGUwMzljYTExM2E3
NGRlM2ZmYzUyMjNjMWFkOGFlLi42ZTA3Njc0YTlhMzM4YzVlNGM5MzI5OTZjYTU3ZGEyMTY0YWZi
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBGZXRjaEhlYWRlcnM6OmZpbHRlckFuZEZpbGwoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgR3VhcmQgZ3VhcmQpCiAgICAgfQogfQogCi1PcHRp
b25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZldGNoSGVhZGVyczo6SXRl
cmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0
cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQogewogICAgIHdoaWxlIChtX2N1
cnJlbnRJbmRleCA8IG1fa2V5cy5zaXplKCkpIHsKICAgICAgICAgYXV0byBrZXkgPSBtX2tleXNb
bV9jdXJyZW50SW5kZXgrK107CkBAIC0xMzEsNyArMTMxLDcgQEAgT3B0aW9uYWw8V1RGOjpLZXlW
YWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBGZXRjaEhlYWRlcnM6Okl0ZXJhdG9yOjpuZXh0KCkK
ICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Oktl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4geyBXVEZNb3ZlKGtleSksIFdURk1vdmUodmFsdWUp
IH07CiAgICAgfQotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKEZldGNoSGVhZGVycyYgaGVh
ZGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFk
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCmluZGV4
IGMzZTA2YjdmNmU3MjZiMGVhZjEzNWIyZTdhZDI0YzE1MDRjODIzYWUuLjdmNjRlZDExYTIzMTQ1
YmFkYjI4MWEzODJlOThmNGI1YmFjZDI0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEhlYWRlcnMuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBGZXRjaEhlYWRlcnMg
OiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaEhlYWRlcnM+IHsKICAgICBjbGFzcyBJdGVyYXRvciB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsK
LSAgICAgICAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0
KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJp
bmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBt
X2hlYWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5j
cHAKaW5kZXggNTU5MmJkNzViMzU1Y2UyZTA5N2JlOTVjNzFhYzcyODdiMjhiNjVhNC4uMmJkMzAz
NjA4MjE5ZjQyZDhmNGQ1M2YwM2Q5ODdiNTE0YTBiZmIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMzksNyArMzksNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZmVycmVy
UG9saWN5KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGlj
eSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0UmVmZXJyZXJQb2xpY3koRmV0
Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KQogewogICAg
IGlmIChyZWZlcnJlclBvbGljeS5pc0VtcHR5KCkpCiAgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQ
b2xpY3kgPSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKQEAgLTU1
LDEwICs1NSwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWZlcnJlclBvbGlj
eShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZwogICAgICAgICBvcHRpb25zLnJl
ZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6VW5zYWZlVXJsOwog
ICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRl
cmFsKCJCYWQgcmVmZXJyZXIgcG9saWN5IHZhbHVlLiIpIH07Ci0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlv
bj4gc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSAibmF2aWdhdGUiKQog
ICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwpAQCAt
NzAsMTAgKzcwLDEwIEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldE1vZGUoRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1vZGUpCiAgICAgICAgIG9wdGlvbnMubW9k
ZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6Q29yczsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQmFkIGZldGNoIG1vZGUgdmFsdWUu
IikgfTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
Ci1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbHMpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxFeGNlcHRpb24+IHNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFscykKIHsKICAgICBpZiAoY3JlZGVudGlhbHMgPT0gIm9taXQiKQog
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
T21pdDsKQEAgLTgzLDEwICs4MywxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRD
cmVkZW50aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgYwogICAgICAg
ICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVk
ZTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiQmFkIGNyZWRlbnRpYWxzIG1vZGUgdmFsdWUuIikgfTsKLSAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhj
ZXB0aW9uPiBzZXRDYWNoZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY2Fj
aGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHNldENhY2hlKEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKIHsKICAgICBpZiAoY2FjaGUgPT0gImRl
ZmF1bHQiKQogICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVm
YXVsdDsKQEAgLTEwMiwxMCArMTAyLDEwIEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNl
dENhY2hlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKICAgICAg
ICAgb3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok9ubHlJZkNhY2hlZDsKICAg
ICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiQmFkIGNhY2hlIG1vZGUgdmFsdWUuIikgfTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRS
ZWRpcmVjdChGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3QpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZGlyZWN0KEZldGNoT3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWRpcmVjdCkKIHsKICAgICBpZiAocmVkaXJlY3QgPT0g
ImZvbGxvdyIpCiAgICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGly
ZWN0OjpGb2xsb3c7CkBAIC0xMTUsMTAgKzExNSwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0
aW9uPiBzZXRSZWRpcmVjdChGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVk
aQogICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6TWFu
dWFsOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVND
SUlMaXRlcmFsKCJCYWQgcmVkaXJlY3QgbW9kZSB2YWx1ZS4iKSB9OwotICAgIHJldHVybiBOdWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNl
cHRpb24+IHNldE1ldGhvZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYg
aW5pdE1ldGhvZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TWV0aG9kKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbml0TWV0aG9kKQogewogICAg
IGlmICghaXNWYWxpZEhUVFBUb2tlbihpbml0TWV0aG9kKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJNZXRob2QgaXMgbm90IGEgdmFsaWQgSFRU
UCB0b2tlbi4iKSB9OwpAQCAtMTI5LDE3ICsxMjksMTcgQEAgc3RhdGljIE9wdGlvbmFsPEV4Y2Vw
dGlvbj4gc2V0TWV0aG9kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBp
bmkKIAogICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgobWV0aG9kID09ICJERUxFVEUiIHx8IG1l
dGhvZCA9PSAiR0VUIiB8fCBtZXRob2QgPT0gIkhFQUQiIHx8IG1ldGhvZCA9PSAiT1BUSU9OUyIg
fHwgbWV0aG9kID09ICJQT1NUIiB8fCBtZXRob2QgPT0gIlBVVCIpID8gbWV0aG9kIDogaW5pdE1l
dGhvZCk7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWZlcnJlcihGZXRjaFJlcXVlc3Q6
OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4gc2V0UmVmZXJyZXIoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQpCiB7
CiAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgIGlmICghaW5pdC5nZXQoInJlZmVycmVyIiwgcmVm
ZXJyZXIpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJlcXVlc3QucmVm
ZXJyZXIgPSBBU0NJSUxpdGVyYWwoIm5vLXJlZmVycmVyIik7Ci0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAvLyBGSVhNRTog
VGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyBodHRwczovL3VybC5z
cGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNlci4KICAgICBVUkwgcmVmZXJyZXJVUkwg
PSBjb250ZXh0LmNvbXBsZXRlVVJMKHJlZmVycmVyKTsKQEAgLTE0OCwxNyArMTQ4LDE3IEBAIHN0
YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZmVycmVyKEZldGNoUmVxdWVzdDo6SW50ZXJu
YWxSZXF1ZXN0JiByZXF1ZXN0LCBTCiAKICAgICBpZiAocmVmZXJyZXJVUkwucHJvdG9jb2xJcygi
YWJvdXQiKSAmJiByZWZlcnJlclVSTC5wYXRoKCkgPT0gImNsaWVudCIpIHsKICAgICAgICAgcmVx
dWVzdC5yZWZlcnJlciA9IEFTQ0lJTGl0ZXJhbCgiY2xpZW50Iik7Ci0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICgh
KGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSAmJiBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3QocmVmZXJyZXJVUkwpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJSZWZlcnJlciBpcyBub3Qgc2FtZS1vcmlnaW4uIikgfTsKIAog
ICAgIHJlcXVlc3QucmVmZXJyZXIgPSByZWZlcnJlclVSTC5zdHJpbmcoKTsKLSAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
RXhjZXB0aW9uPiBidWlsZE9wdGlvbnMoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJl
cXVlc3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkm
IGluaXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRj
aFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKIHsKICAgICBKU0M6OkpTVmFsdWUg
d2luZG93OwogICAgIGlmIChpbml0LmdldCgid2luZG93Iiwgd2luZG93KSkgewpAQCAtMjEzLDcg
KzIxMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRjaFJl
cXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwKICAgICAgICAgaWYgKGV4Y2VwdGlvbikK
ICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb247CiAgICAgfQotICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIG1ldGhvZENhbkhh
dmVCb2R5KGNvbnN0IEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiBpbnRlcm5hbFJlcXVl
c3QpCkBAIC0zMTksNyArMzE5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IEZl
dGNoUmVxdWVzdDo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGUKICAgICBpZiAo
aXNEaXN0dXJiZWRPckxvY2tlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yIH07CiAKLSAgICBhdXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29u
dGV4dCwgTnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFkZXJzLmdldCgpKSwgRmV0
Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9pbnRlcm5hbFJlcXVlc3QpKSk7CisgICAgYXV0
byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9w
dCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFkZXJzLmdldCgpKSwgRmV0Y2hSZXF1ZXN0OjpJ
bnRlcm5hbFJlcXVlc3QobV9pbnRlcm5hbFJlcXVlc3QpKSk7CiAgICAgY2xvbmUtPmNsb25lQm9k
eSgqdGhpcyk7CiAgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggYjc2MjY1YTY0MWYzMTBmNDc1MzQ4
NDczN2YyNDRhODYxZDFlZDZkZi4uOTZmYTk1MWYyM2VmODQwNjJiNTg1NGY3OGM5ZThjNDlmZDEx
NjRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCkBA
IC00Myw3ICs0Myw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZl
dGNoUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBOdWxs
b3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXF1ZXN0KSwg
eyB9KSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0
KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJz
OjpHdWFyZDo6UmVxdWVzdCksIHsgfSkpOyB9CiAKICAgICBFeGNlcHRpb25PcjxGZXRjaEhlYWRl
cnMmPiBpbml0aWFsaXplV2l0aChGZXRjaFJlcXVlc3QmLCBjb25zdCBEaWN0aW9uYXJ5Jik7CiAg
ICAgRXhjZXB0aW9uT3I8RmV0Y2hIZWFkZXJzJj4gaW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5n
JiwgY29uc3QgRGljdGlvbmFyeSYpOwpAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBGZXRjaFJlcXVl
c3QgZmluYWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3duZXIgewogICAgIGNvbnN0IFN0cmluZyYgaW50
ZXJuYWxSZXF1ZXN0UmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5y
ZWZlcnJlcjsgfQogCiBwcml2YXRlOgotICAgIEZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBJbnRl
cm5hbFJlcXVlc3QmJik7CisgICAgRmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50ZXJu
YWxSZXF1ZXN0JiYpOwogCiAgICAgRXhjZXB0aW9uT3I8RmV0Y2hIZWFkZXJzJj4gaW5pdGlhbGl6
ZU9wdGlvbnMoY29uc3QgRGljdGlvbmFyeSYpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3Mg
RmV0Y2hSZXF1ZXN0IGZpbmFsIDogcHVibGljIEZldGNoQm9keU93bmVyIHsKICAgICBtdXRhYmxl
IFN0cmluZyBtX3JlcXVlc3RVUkw7CiB9OwogCi1pbmxpbmUgRmV0Y2hSZXF1ZXN0OjpGZXRjaFJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5
PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYg
aW50ZXJuYWxSZXF1ZXN0KQoraW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJv
ZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYgaW50ZXJu
YWxSZXF1ZXN0KQogICAgIDogRmV0Y2hCb2R5T3duZXIoY29udGV4dCwgV1RGTW92ZShib2R5KSwg
V1RGTW92ZShoZWFkZXJzKSkKICAgICAsIG1faW50ZXJuYWxSZXF1ZXN0KFdURk1vdmUoaW50ZXJu
YWxSZXF1ZXN0KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCmluZGV4IDAyZTMxMzUwZjI2ZTBjOWIxODUyNGNkNDI0OWRiYjg2NzI0Mjc2OTcu
LjM1ZmIwOGJjM2MwYTAxNTE1YTVmNjgzNTVlYTU4OWFmN2E2MTVlNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtODIsNyArODIsNyBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OmluaXRpYWxpemVXaXRoKEpTQzo6RXhlY1N0YXRlJiBleGVj
U3RhdGUsIEpTQzo6SlNWYWx1ZSBib2R5KQogICAgIHVwZGF0ZUNvbnRlbnRUeXBlKCk7CiB9CiAK
LUZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVh
ZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorRmV0Y2hSZXNwb25zZTo6RmV0Y2hS
ZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZl
dGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKICAgICA6IEZldGNoQm9keU93bmVyKGNvbnRleHQsIFdURk1vdmUo
Ym9keSksIFdURk1vdmUoaGVhZGVycykpCiAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpKQogewpAQCAtOTMsNyArOTMsNyBAQCBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25z
ZTo6Y2xvbmVGb3JKUygpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgQVNTRVJUKCFpc0Rpc3R1cmJlZE9yTG9ja2VkKCkpOwogCi0gICAgYXV0byBjbG9uZSA9IGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBOdWxs
b3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShoZWFkZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1f
cmVzcG9uc2UpKSk7CisgICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25z
ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzdGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6
Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkpKTsKICAgICBj
bG9uZS0+Y2xvbmVCb2R5KCp0aGlzKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CkBAIC0xMDUsOSAr
MTA1LDkgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QKICAgICAvLyBTZXR0aW5nIHBlbmRpbmcg
YWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJhY2sg
aXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2UucHRy
KCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IEJvZHlMb2FkZXIocmVzcG9uc2Uu
Z2V0KCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIuZW1w
bGFjZShyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgaWYgKCFyZXNwb25z
ZS0+bV9ib2R5TG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1ZXN0KSkKLSAgICAgICAgcmVzcG9u
c2UtPm1fYm9keUxvYWRlciA9IE51bGxvcHQ7CisgICAgICAgIHJlc3BvbnNlLT5tX2JvZHlMb2Fk
ZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IFN0cmluZyYgRmV0Y2hSZXNwb25zZTo6dXJs
KCkgY29uc3QKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZFN1Y2NlZWQoKQogI2VuZGlmCiAKICAgICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgp
KQotICAgICAgICBtX3Jlc3BvbnNlLm1fYm9keUxvYWRlciA9IE51bGxvcHQ7CisgICAgICAgIG1f
cmVzcG9uc2UubV9ib2R5TG9hZGVyID0gc3RkOjpudWxsb3B0OwogICAgIG1fcmVzcG9uc2UudW5z
ZXRQZW5kaW5nQWN0aXZpdHkoJm1fcmVzcG9uc2UpOwogfQogCkBAIC0xMzYsNyArMTM2LDcgQEAg
dm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRGYWlsKCkKIHsKICAgICBBU1NFUlQo
bV9yZXNwb25zZS5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgaWYgKG1fcHJvbWlzZSkKLSAg
ICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5yZWplY3QoVHlwZUVycm9y
KTsKKyAgICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIHN0ZDo6bnVsbG9wdCktPnJlamVj
dChUeXBlRXJyb3IpOwogCiAjaWYgRU5BQkxFKFJFQURBQkxFX1NUUkVBTV9BUEkpCiAgICAgaWYg
KG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkgewpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkRmFpbCgpCiAKICAgICAvLyBDaGVj
ayB3aGV0aGVyIGRpZEZhaWwgaXMgY2FsbGVkIGFzIHBhcnQgb2YgRmV0Y2hMb2FkZXI6OnN0YXJ0
LgogICAgIGlmIChtX2xvYWRlci0+aXNTdGFydGVkKCkpCi0gICAgICAgIG1fcmVzcG9uc2UubV9i
b2R5TG9hZGVyID0gTnVsbG9wdDsKKyAgICAgICAgbV9yZXNwb25zZS5tX2JvZHlMb2FkZXIgPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICBtX3Jlc3BvbnNlLnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jl
c3BvbnNlKTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdQog
ICAgIG1fcmVzcG9uc2UubV9yZXNwb25zZSA9IHJlc291cmNlUmVzcG9uc2U7CiAgICAgbV9yZXNw
b25zZS5tX2hlYWRlcnMtPmZpbHRlckFuZEZpbGwocmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVy
RmllbGRzKCksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKTsKIAotICAgIHN0ZDo6ZXhj
aGFuZ2UobV9wcm9taXNlLCBOdWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKKyAgICBzdGQ6
OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3RkOjpudWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsK
IH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEZldGNo
UmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZldAogCiB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0b3AoKQog
ewotICAgIG1fcHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9wcm9taXNlID0gc3RkOjpudWxsb3B0
OwogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9sb2FkZXItPnN0b3AoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggYWUxZTc0NGU1
NGQwYjk0Y2VhOGE0ZDQwMTljYzA0NTg3OGRjZTk0Ny4uNmE2ZTY3YTJiNTZlMGQ2ZWVmNTc1YzI2
YjdiZjAyZGU5OWU4ZTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6
IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgVHlwZSA9IFJlc291
cmNlUmVzcG9uc2U6OlR5cGU7CiAKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEZldGNoUmVzcG9uc2UoY29udGV4dCwgTnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsgfQorICAg
IHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBz
dGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJl
c3BvbnNlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KICAgICBzdGF0aWMgUmVmPEZldGNoUmVz
cG9uc2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMpOwogCkBAIC04Niw3ICs4Niw3IEBAIGNs
YXNzIEZldGNoUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3duZXIgewogICAgIGJv
b2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2JvZHlMb2FkZXI7IH0KIAogcHJpdmF0
ZToKLSAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxG
ZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7Cisg
ICAgRmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxG
ZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAK
ICAgICBzdGF0aWMgdm9pZCBzdGFydEZldGNoaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBGZXRjaFJlcXVlc3QmLCBGZXRjaFByb21pc2UmJik7CiAKQEAgLTExNywxMiArMTE3LDEy
IEBAIGNsYXNzIEZldGNoUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3duZXIgewog
ICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwog
CiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7Ci0gICAgICAgIE9wdGlvbmFsPEZl
dGNoUHJvbWlzZT4gbV9wcm9taXNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUHJvbWlz
ZT4gbV9wcm9taXNlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IG1fbG9h
ZGVyOwogICAgIH07CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgT3B0
aW9uYWw8Qm9keUxvYWRlcj4gbV9ib2R5TG9hZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8Qm9keUxv
YWRlcj4gbV9ib2R5TG9hZGVyOwogICAgIG11dGFibGUgU3RyaW5nIG1fcmVzcG9uc2VVUkw7CiAK
ICAgICBGZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5
cGU6OkFycmF5QnVmZmVyICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Db29yZGluYXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0Nvb3JkaW5hdGVzLmNwcAppbmRleCBiYmM3NmM3ZGQzZDlkMjcwYzQ1ZjBkZTQ4YWRm
MDFiNDZlMWViZmZiLi44OTgxZmI1NWUxNTczZGRiZGUwNWY4ZTNhYTBlZTAyMzVkMWI5ZTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVz
LmNwcApAQCAtMjgsMzEgKzI4LDMxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9u
YWw8ZG91YmxlPiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxk
b3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhblBy
b3ZpZGVBbHRpdHVkZSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fYWx0aXR1ZGU7CiB9CiAKLU9wdGlvbmFsPGRvdWJs
ZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNjdXJhY3koKSBjb25zdAorc3RkOjpvcHRpb25hbDxk
b3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX2FsdGl0dWRlQWNjdXJh
Y3k7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmhlYWRpbmcoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX2hlYWRpbmc7CiB9CiAKLU9w
dGlvbmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OnNwZWVkKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBDb29yZGluYXRlczo6c3BlZWQoKSBjb25zdAogewogICAgIGlmICghbV9jYW5Qcm92
aWRlU3BlZWQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiBtX3NwZWVkOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCmluZGV4IGU0YTQzNmUxZTQ3NTE3
ZDE5OTczZjUyYmE5YzFmYTk2MjkzMDBkNGUuLjhiZDAwODY3Nzk5ODU2YzRiY2NlYTQ1NDE1ZTU1
OTZlM2ZlZjI3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vQ29vcmRpbmF0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmgKQEAgLTQzLDExICs0MywxMSBAQCBjbGFzcyBDb29yZGluYXRlcyA6IHB1
YmxpYyBSZWZDb3VudGVkPENvb3JkaW5hdGVzPiB7CiAKICAgICBkb3VibGUgbGF0aXR1ZGUoKSBj
b25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9CiAgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0OwogICAg
IGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBPcHRp
b25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3Vi
bGU+IGhlYWRpbmcoKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBDb29yZGluYXRl
cyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVk
ZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVk
ZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcs
IGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDE5NWEx
ODIwZjFhMzUyMGZjNjRmNWRmMmYyZWE5NjJiNDMzZjFmODYuLjkwZmQ0MDMxYzE1Yjc1M2UwZDIw
YTAwM2U4ZDQ0ZDg3NmNiNTQzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtNzEsNyArNzEsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiAgICAgcmV0dXJuIHByZXZ1bmlxdWU7
CiB9CiAKLU9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPiBJREJDdXJzb3I6OnN0
cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKQorc3RkOjpvcHRp
b25hbDxJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbj4gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVj
dGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZykKIHsKICAgICBpZiAoZGlyZWN0aW9u
U3RyaW5nID09IGRpcmVjdGlvbk5leHQoKSkKICAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uOjpOZXh0OwpAQCAtODIsNyArODIsNyBAQCBPcHRpb25hbDxJbmRleGVkREI6
OkN1cnNvckRpcmVjdGlvbj4gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJp
bmcmCiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSBkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCiAg
ICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldk5vRHVwbGljYXRl
OwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblRvU3RyaW5nKEluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggMmFhODg4MjE3ZjA2MTY2ZTIwMzBkZjM0NjBiYzVm
NGYxMTViNmRhMi4uNWZlMTUwYjQ4MTZhMzgwYjAxNmZhN2UwNGNhZmQ5YmI3YjdhYjM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTUwLDcg
KzUwLDcgQEAgY2xhc3MgSURCQ3Vyc29yIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IFJlZkNvdW50ZWQ8SURCQ3Vyc29yPiwgcHVibGljIEEKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBkaXJlY3Rpb25QcmV2KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGlyZWN0aW9uUHJldlVuaXF1ZSgpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uPiBzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIG1vZGVTdHJp
bmcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9u
PiBzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblRvU3RyaW5nKEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uIG1vZGUpOwogICAgIAogICAgIHZpcnR1YWwgfklEQkN1cnNvcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNzE4NGY4
MzQ2NDI4YWVmMWY5MWYxZjJkOTJjYzFmYzFjYzJiMjA0Ny4uMzY1YTZmNjQyNjMxMmU0ZmExMjAy
MzUwMjE2MTZjZjdlNzExMjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIElEQkRhdGFiYXNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlPiwgcHVibGljIEV2ZW50VGFy
Z2V0CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsK
IAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRlcnMgewotICAgICAgICBPcHRpb25hbDxJ
REJLZXlQYXRoPiBrZXlQYXRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtl
eVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5oCmluZGV4IDljZmY3YTJjZWRkN2E2ZDc4OTg0OWFjZTJiMThiN2Q0NmRlMzE5MDYuLmRkOWYx
NGZmYTE0OTM2MTFkMDE2NjFiY2E3YTdmODg5Mjk3YWJkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBA
IC01OSw3ICs1OSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlSWRlbnRpZmllciB7CiAgICAgICAgIHVu
c2lnbmVkIG1haW5GcmFtZVByb3RvY29sSGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJh
bWVPcmlnaW4ucHJvdG9jb2wpOwogICAgICAgICB1bnNpZ25lZCBtYWluRnJhbWVIb3N0SGFzaCA9
IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmlnaW4uaG9zdCk7CiAgICAgICAgIAotICAg
ICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xI
YXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3BlbmluZ09yaWdpbi5wb3J0LnZhbHVlT3IoMCksIG1h
aW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1lSG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2lu
LnBvcnQudmFsdWVPcigwKSB9OworICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5h
bWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3BlbmluZ09y
aWdpbi5wb3J0LnZhbHVlX29yKDApLCBtYWluRnJhbWVQcm90b2NvbEhhc2gsIG1haW5GcmFtZUhv
c3RIYXNoLCBtX21haW5GcmFtZU9yaWdpbi5wb3J0LnZhbHVlX29yKDApIH07CiAgICAgICAgIHJl
dHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rl
cyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCmluZGV4IDFjNDQwYjhhNjZjYTZkYzA1MGQxMmNjMTE5NjVhNjgxMDYyNjhlOTku
Ljc4YzE4OGI1MjAxMDdiODFmYzAwNTQ1ZTIyZGQ3ZTI1MjE0Njc1NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC03NiwxNCArNzYs
MTQgQEAgSURCRmFjdG9yeTo6fklEQkZhY3RvcnkoKQogewogfQogCi1FeGNlcHRpb25PcjxSZWY8
SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDx1aW50NjRfdD4gdmVyc2lv
bikKK0V4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkZh
Y3Rvcnk6Om9wZW4iKTsKICAgICAKICAgICBpZiAodmVyc2lvbiAmJiAhdmVyc2lvbi52YWx1ZSgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIklE
QkZhY3Rvcnkub3BlbigpIGNhbGxlZCB3aXRoIGEgdmVyc2lvbiBvZiAwIikgfTsKIAotICAgIHJl
dHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZU9yKDApKTsKKyAg
ICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVfb3IoMCkp
OwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9w
ZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDQzYjkzNjljZGU3ZWEyNWU2MzE4MmYz
ZTllMDUyYTU3ODExYzJjMmUuLjc1NmVhNzFkMDAwODUzMDZhOWQ4MTZjNGE5ZGVkOGNmMWYwYWQ4
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgK
QEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgSURCRmFjdG9yeSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJREJGYWN0b3J5PiB7CiAgICAgc3RhdGljIFJlZjxJREJGYWN0b3J5PiBjcmVhdGUo
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmKTsKICAgICB+SURCRmFjdG9yeSgpOwogCi0g
ICAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBvcGVuKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9u
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IG9wZW4oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdmVyc2lvbik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBkZWxl
dGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIEV4Y2VwdGlvbk9yPHNob3J0PiBjbXAoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUgZmlyc3QsIEpTQzo6SlNWYWx1ZSBzZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IGJhZWUxM2QwYzQyNjZkNTJhZGVlOTA4Nzc2
MDViYzQ2OThmNjFlNTQuLmVjNWRiMjQyNWM4NjU0OTY5NDY0NzZjMTJlODAyMGM3Nzk4OWZiNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAg
LTMwOCw3ICszMDgsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpk
b0dldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCSwogICAgIHJldHVybiB0cmFu
c2FjdGlvbi5yZXF1ZXN0R2V0S2V5KGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlKTsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhl
Y1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0
YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxs
Iik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0
aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBl
eGVjU3RhdGUsIFJlZlB0cjxJREJLZQogICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0
aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCByYW5nZS5n
ZXQoKSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMsIGNvdW50KTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBK
U1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgYXV0byBv
bmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChv
bmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzMxLDcgKzMzMSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwg
SlNWYWx1ZSBrZXksCiAgICAgcmV0dXJuIGdldEFsbChleGVjU3RhdGUsIG9ubHlSZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCksIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRBbGxLZXlzIik7CiAgICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTM0NSw3ICszNDUsNyBAQCBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBSZWZQdHI8SQogICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVx
dWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCByYW5nZS5nZXQoKSwgSW5k
ZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpT
VmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1Zh
bHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgYXV0byBvbmx5
UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChvbmx5
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmgKaW5kZXggMGViMWI5ZTRjMDJiNzkxMGI5NTIyOTRkMGJlZWFmNWZmMmVlYWVk
Ny4uZWQ4Y2Q2NWM5YjVhODc5Y2E2OTljOWQ2MDMyMTdhOTU4NjNiNWUxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC03MCwxMCArNzAsMTAgQEAg
Y2xhc3MgSURCSW5kZXggZmluYWwgOiBwcml2YXRlIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpFeGVjU3RhdGUmLCBJREJLZXlS
YW5nZSopOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0S2V5KEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIE9wdGlv
bmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBn
ZXRBbGwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJf
dD4gY291bnQpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhK
U0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIE9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYs
IFJlZlB0cjxJREJLZXlSYW5nZT4sIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBSZWZQ
dHI8SURCS2V5UmFuZ2U+LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwogCiAgICAgY29u
c3QgSURCSW5kZXhJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAppbmRleCBlNmZhYTE5
NTZjOTM2MzdiZmM2YzEyMmUwMDhiYjkxYzc1OTllMGM3Li43YzNmMDIxNmUwNGNkNzI5YjVhYjZj
ODVhYzQyYWI1NWExZjkyNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aC5oCkBAIC00NSw3ICs0NSw3IEBAIGVudW0gY2xhc3MgSURCS2V5UGF0aFBh
cnNlRXJyb3IgewogCiB2b2lkIElEQlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmLCBWZWN0b3I8
U3RyaW5nPiYsIElEQktleVBhdGhQYXJzZUVycm9yJik7CiBJREJLZXlQYXRoIGlzb2xhdGVkQ29w
eShjb25zdCBJREJLZXlQYXRoJik7Ci1pbmxpbmUgT3B0aW9uYWw8SURCS2V5UGF0aD4gaXNvbGF0
ZWRDb3B5KGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiB2YXJpYW50KQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4gaXNvbGF0ZWRDb3B5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mIHZhcmlhbnQpCiB7CiAgICAgaWYgKCF2YXJpYW50KQogICAgICAgICByZXR1cm4g
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCmluZGV4IDY3MjkwYjQ2NDk0ZmQwNDdlNTRkY2U3MzZjYjk5OGM5OTQwMTk1ZjQu
LjE4ZDYyMjZhNDM0ZmE4OGYzZjBjYjc3NmQ2OTJkYTA0ZDc2ODQzYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTEy
MCw3ICsxMjAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0TmFtZShj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgT3B0aW9uYWw8
SURCS2V5UGF0aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKK2NvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
b3JpZ2luVGhyZWFkSUQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5rZXlQYXRoKCk7CkBAIC01NDgs
NyArNTQ4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6
ZG9Db3VudChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QKICAgICByZXR1cm4gbV90cmFuc2Fj
dGlvbi0+cmVxdWVzdENvdW50KGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlKTsKIH0KIAotRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYg
ZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBPcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRB
bGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmpl
Y3RTdG9yZTo6Z2V0QWxsIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5z
YWN0aW9uLT5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwpAQCAtNTYyLDcgKzU2Miw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyCiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24tPnJlcXVl
c3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UuZ2V0KCks
IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAg
IGF1dG8gb25seVJlc3VsdCA9IElEQktleVJhbmdlOjpvbmx5KGV4ZWNTdGF0ZSwga2V5KTsKICAg
ICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTU3MSw3ICs1NzEsNyBAQCBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRl
JiBleGVjU3RhdGUsIEpTVmFsdQogICAgIHJldHVybiBnZXRBbGwoZXhlY1N0YXRlLCBvbmx5UmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3Rh
dGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkK
K0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMo
RXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RT
dG9yZTo6Z2V0QWxsS2V5cyIpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFu
c2FjdGlvbi0+ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTU4NSw3ICs1ODUsNyBA
QCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlz
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZQogICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLT5yZXF1
ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlLmdldCgp
LCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRl
JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkK
IHsKICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtl
eSk7CiAgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA3YjE0ZDBmZDky
Yjc2ZGI2Mjk1ZWRhZDhhMDQyMWI1ZDViMGQ1NDA0Li41YzZhNTljYzVkYWIwMTcyNThjOTU0MjQy
ZWMzZjhmMTNmMjI4ZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgSURCT2JqZWN0U3Rv
cmUgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJPYmplY3RTdG9yZT4sIHB1YmxpYyBBY3Rp
dmVET00KIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldE5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+JiBrZXlQYXRoKCkgY29uc3Q7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXMoKSBjb25zdDsKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29s
IGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKQEAgLTg4LDEwICs4OCwxMCBAQCBjbGFzcyBJREJPYmpl
Y3RTdG9yZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiwgcHVibGlj
IEFjdGl2ZURPTQogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlbGV0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBjb3VudChKU0M6OkV4
ZWNTdGF0ZSYsIElEQktleVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBjb3VudChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXkpOwotICAgIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktl
eVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXksIE9w
dGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgT3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdl
dEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50
MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpT
Qzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkV4
ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IHB1dEZvckN1cnNvclVwZGF0
ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cAppbmRleCA4MDgyNDQ4YThmZDUyMDVmZDFjNjc0MDBkMTg0MzUxYmUzZjQ0ZThjLi5mYzFkOTNl
MGUwMmJhYzU2YzI5ZDYzZTFlNjJhYzJlMGIzMjZiZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC03MjksNyArNzI5
LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3UKICAgICByZXF1ZXN0LmRpZE9wZW5Pckl0ZXJh
dGVDdXJzb3IocmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlS
YW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBPcHRpb25hbDx1aW50
MzJfdD4gY291bnQpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRB
bGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9y
ZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRl
eGVkREI6OkdldEFsbFR5cGUgZ2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291
bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxs
T2JqZWN0U3RvcmVSZWNvcmRzIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwpAQCAtNzQ3LDcg
Kzc0Nyw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYKICAgICByZXR1cm4gcmVxdWVzdDsKIH0K
IAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNv
cmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUs
IE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIElEQklu
ZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWRE
Qjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRl
eFJlY29yZHMiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA4NmJhYmIxNjAyYjQ4
ZmVhNzFmNzM1M2ViZmNkNDQ0NzA2YTZmZTAyLi5jNTg4YzdmZWIyMzBkNmMwNDU5NDFjNzcyNmVh
NGZjYzNmOGE5NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKQEAgLTExNCw4ICsxMTQsOCBAQCBjbGFzcyBJREJUcmFuc2FjdGlv
biA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBF
dmVudAogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RQdXRPckFkZChKU0M6OkV4ZWNTdGF0
ZSYsIElEQk9iamVjdFN0b3JlJiwgSURCS2V5KiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSW5k
ZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIFJlZjxJREJSZXF1ZXN0PiBy
ZXF1ZXN0R2V0UmVjb3JkKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJ
REJHZXRSZWNvcmREYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRBbGxPYmpl
Y3RTdG9yZVJlY29yZHMoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhK
U0M6OkV4ZWNTdGF0ZSYsIElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhl
ZERCOjpHZXRBbGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIFJlZjxJREJS
ZXF1ZXN0PiByZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiwg
SURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFs
bFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVz
dD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYsIElEQkluZGV4Jiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBjb3VudCk7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3REZWxldGVS
ZWNvcmQoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShKU0M6
OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJik7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVl
c3RDb3VudChKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAppbmRleCAzMDc0MjAwZTc2ZDI1ZjY5MjJjYjNl
ZmVmNDU0YmUwNmY4NDg4NGI4Li5lODRhNzMzYzJlNWY3YjJhOGYyMzc2NTY5MmUyMjVhNjk5MDZh
ZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgSURCVmVyc2lvbkNo
YW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXMKICAgICBpZiAobmV3VmVyc2lvbikKICAgICAgICAgbV9uZXdWZXJzaW9uID0g
bmV3VmVyc2lvbjsKICAgICBlbHNlCi0gICAgICAgIG1fbmV3VmVyc2lvbiA9IE51bGxvcHQ7Cisg
ICAgICAgIG1fbmV3VmVyc2lvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogSURCVmVyc2lvbkNoYW5n
ZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBJbml0JiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAppbmRl
eCBlOTIxOGViYTE2MjYwOTIxOTQwMDhkZTAyMTg1YzBiMzgwNjM0MGNmLi4wODAxNzIwYmMyYjhi
ZDdkYmVmOWQ1NjViZGNiNzRiMTRlZGFkNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaApAQCAtNDcsNyAr
NDcsNyBAQCBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQg
ewogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAgICAgICB1aW50NjRfdCBvbGRW
ZXJzaW9uIHsgMCB9OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbmV3VmVyc2lvbjsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3VmVyc2lvbjsKICAgICB9OwogCiAgICAg
c3RhdGljIFJlZjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0g
SXNUcnVzdGVkOjpObykKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZUV2
ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKICAgICBib29sIGlzVmVyc2lvbkNoYW5nZUV2ZW50
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdWludDY0X3Qgb2xkVmVyc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fb2xkVmVyc2lvbjsgfQotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBuZXdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CisgICAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gbmV3VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3VmVyc2lv
bjsgfQogCiBwcml2YXRlOgogICAgIElEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1
aW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CkBAIC03
MCw3ICs3MCw3IEBAIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBF
dmVudCB7CiAKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9yZXF1ZXN0SWRlbnRpZmllcjsK
ICAgICB1aW50NjRfdCBtX29sZFZlcnNpb247Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbmV3
VmVyc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX25ld1ZlcnNpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggNTgw
ZTM1MTA3NTU5Mjc3MDBjZDVmNzMyMzJkZDgwODFkNjU1YjY3Mi4uYjc3MDNlMzczZjkxNGU0N2Zj
NzM1NjE4NzZkZDZkNjMxYTI5MjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUg
eyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6
ZUlEQktleVBhdGgoY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCk7CiAKQEAgLTU2LDcgKzU2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFs
aXplSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKICAgICBy
ZXR1cm4gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKIH0KIAotYm9vbCBkZXNlcmlhbGl6ZUlE
QktleVBhdGgoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIE9wdGlvbmFsPElEQktl
eVBhdGg+JiByZXN1bHQpCitib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgcmVzdWx0KQog
ewogICAgIGlmICghZGF0YSB8fCAhc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmgKaW5kZXggY2M0ODYyYjUyMDU0M2RlZjNjMWU3Yjk1ZDU5OGIzMTQxNzNiMjBj
Zi4uYTFjY2QzZjk3ZmVhYzNiNTMzNTYwNzRjNWY3Y2M3MTY3ZjhmOTAzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5oCkBAIC0zNSw4ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChj
b25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYpOwotYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgT3B0aW9uYWw8SURCS2V5
UGF0aD4mKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qg
c3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYpOwogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXgu
Y3BwCmluZGV4IDMwN2M3YTEyMTcyOWM3YjRiZGU1ZThlNTFhNWZmZGZkYzdkZjY2MjYuLmU5MmQy
NjgwMTBkNTQyMGRhNTMyNmZmZGVlYmM4NTcxMjQxNmYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcApAQCAt
MTU4LDcgKzE1OCw3IEBAIHVpbnQ2NF90IE1lbW9yeUluZGV4Ojpjb3VudEZvcktleVJhbmdlKGNv
bnN0IElEQktleVJhbmdlRGF0YSYgaW5SYW5nZSkKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXZv
aWQgTWVtb3J5SW5kZXg6OmdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlS
YW5nZURhdGEsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBl
IHR5cGUsIElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KSBjb25zdAordm9pZCBNZW1vcnlJbmRleDo6
Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSB0eXBlLCBJREJH
ZXRBbGxSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5
SW5kZXg6OmdldEFsbFJlY29yZHMiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaAppbmRleCA4NDc1OTg0NzUyOWY2YzVi
NzAzZGRlMjdmNzA3MDNlNGYwNTg1OTJiLi41YmY5Y2JhODkzYTQ3Y2IyZjBjMThhZGFkYjEzMzY4
NDBlN2RhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SW5kZXguaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBNZW1vcnlJbmRl
eCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeUluZGV4PiB7CiAKICAgICBJREJHZXRSZXN1bHQg
Z2V0UmVzdWx0Rm9yS2V5UmFuZ2UoSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYpIGNvbnN0OwogICAgIHVpbnQ2NF90IGNvdW50Rm9yS2V5UmFuZ2UoY29u
c3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktl
eVJhbmdlRGF0YSYsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxU
eXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4
ZWREQjo6R2V0QWxsVHlwZSwgSURCR2V0QWxsUmVzdWx0JikgY29uc3Q7CiAKICAgICBJREJFcnJv
ciBwdXRJbmRleEtleShjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSW5kZXhLZXkmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZmE0NGI3YmFhYjQ2YTNiNjY1YzQzMTZmZmUyZDAz
MDJmM2VkZDRiNS4uMzRiNGUxMjlhZDY2YWE1MDIwMmFiZGZlOThlZGViMjkwYzc1NTdjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC00MDgsNyArNDA4LDcgQEAgVGhyZWFkU2FmZURh
dGFCdWZmZXIgTWVtb3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5
UmFuZ2VEYXRhJgogICAgIHJldHVybiBtX2tleVZhbHVlU3RvcmUtPmdldChrZXkpOwogfQogCi12
b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0
QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3ZvaWQgTWVtb3J5
T2JqZWN0U3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5n
ZURhdGEsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5
cGUgdHlwZSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgcmVzdWx0ID0g
eyB0eXBlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5kZXggZjVmYTYwNTJjYTA0YWM0NzA0
MzRiNTFlMzcwZDYyN2UxYmUyMzUzYy4uYzllNTg1M2JmMWQyMTYwY2QwMjZhYmFlZGI4MThlNzgw
ZTIxYmE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3Mg
TWVtb3J5T2JqZWN0U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnlPYmplY3RTdG9yZT4g
ewogICAgIElEQkdldFJlc3VsdCBpbmRleFZhbHVlRm9yS2V5UmFuZ2UodWludDY0X3QgaW5kZXhJ
ZGVudGlmaWVyLCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJikgY29uc3Q7CiAgICAgdWludDY0X3QgY291bnRGb3JLZXlSYW5nZSh1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGNvbnN0OwogCi0gICAgdm9pZCBn
ZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYsIE9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKKyAg
ICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgSURCR2V0QWxsUmVzdWx0
JikgY29uc3Q7CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8oKSBjb25zdCB7
IHJldHVybiBtX2luZm87IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5jcHAK
aW5kZXggMjI2OTZiMmI5ODkzZmRiMmI3NzFjYWZmYzkyOGQ1Nzg0YzlmNjQ0ZS4uNTg4YmI2MmQy
NWJmMWRkNWM3NzI3MGUyODE0NGM0ZWFmNzZkYjJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmVDdXJzb3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
OjpNZW1vcnlPYmplY3RTdG9yZUN1cnNvcihNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUs
CiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9iamVjdFN0b3JlQ2xlYXJlZCgpCiB7
Ci0gICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5RGVsZXRlZChjb25zdCBJ
REJLZXlEYXRhJiBrZXkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3I6OmtleURlbGV0ZWQoY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIGlmIChtX2N1cnJl
bnRQb3NpdGlvbktleSAhPSBrZXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXRlcmF0b3Ig
PSBOdWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTWVt
b3J5T2JqZWN0U3RvcmVDdXJzb3I6OmtleUFkZGVkKHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVy
YXRvciBpdGVyYXRvcikKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1
cnNvcjo6a2V5QWRkZWQoc3RkOjpzZXQ8SURCS2V5RGF0YT46Oml0ZXJhdG9yIGl0ZXJhdG9yKQog
CiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGaXJzdEluUmVtYWluaW5nUmFuZ2Uo
c3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldCkKIHsKLSAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsK
KyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1faW5mby5pc0RpcmVj
dGlvbkZvcndhcmQoKSkgewogICAgICAgICBzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5n
UmFuZ2Uoc2V0KTsKQEAgLTk1LDE5ICs5NSwxOSBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yOjpzZXRGaXJzdEluUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAog
dm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rm9yd2FyZEl0ZXJhdG9yRnJvbVJlbWFp
bmluZ1JhbmdlKHN0ZDo6c2V0PElEQktleURhdGE+JiBzZXQpCiB7CiAgICAgaWYgKCFzZXQuc2l6
ZSgpKSB7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9y
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVt
YWluaW5nUmFuZ2UuaXNFeGFjdGx5T25lS2V5KCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNl
dC5maW5kKG1fcmVtYWluaW5nUmFuZ2UubG93ZXJLZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0
b3IgPT0gc2V0LmVuZCgpKQotICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBsb3dlc3QgPSBzZXQubG93ZXJfYm91bmQobV9yZW1haW5pbmdS
YW5nZS5sb3dlcktleSk7CiAgICAgaWYgKGxvd2VzdCA9PSBzZXQuZW5kKCkpCkBAIC0xMzMsMTQg
KzEzMywxNCBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGb3J3YXJkSXRlcmF0
b3JGcm9tUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCSwogdm9pZCBNZW1vcnlPYmplY3RTdG9y
ZUN1cnNvcjo6c2V0UmV2ZXJzZUl0ZXJhdG9yRnJvbVJlbWFpbmluZ1JhbmdlKHN0ZDo6c2V0PElE
QktleURhdGE+JiBzZXQpCiB7CiAgICAgaWYgKCFzZXQuc2l6ZSgpKSB7Ci0gICAgICAgIG1faXRl
cmF0b3IgPSBOdWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFuZ2UuaXNFeGFjdGx5
T25lS2V5KCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1fcmVtYWluaW5nUmFu
Z2UubG93ZXJLZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmVuZCgpKQotICAg
ICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDgsMTIgKzE0OCwx
MiBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRSZXZlcnNlSXRlcmF0b3JGcm9t
UmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCSwogICAgIGlmICghbV9yZW1haW5pbmdSYW5nZS51
cHBlcktleS5pc1ZhbGlkKCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IC0tc2V0LmVuZCgpOwog
ICAgICAgICBpZiAoIW1fcmVtYWluaW5nUmFuZ2UuY29udGFpbnNLZXkoKiptX2l0ZXJhdG9yKSkK
LSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAgICAgICAgbV9pdGVyYXRv
ciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pdGVy
YXRvciA9IE51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IFRoaXMgaXMgb25lIHJlY29yZCBwYXN0IHRoZSBhY3R1YWwga2V5IHdlJ3JlIGxvb2tpbmcgZm9y
LgogICAgIGF1dG8gaGlnaGVzdCA9IHNldC51cHBlcl9ib3VuZChtX3JlbWFpbmluZ1JhbmdlLnVw
cGVyS2V5KTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
OjppbmNyZW1lbnRGb3J3YXJkSXRlcmF0b3Ioc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAogICAg
ICAgICArKyptX2l0ZXJhdG9yOwogCiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQuZW5k
KCkgfHwgIW1faW5mby5yYW5nZSgpLmNvbnRhaW5zS2V5KCoqbV9pdGVyYXRvcikpIHsKLSAgICAg
ICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAgICAgICAgbV9pdGVyYXRvciA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTMw
MCw3ICszMDAsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRSZXZl
cnNlSXRlcmF0b3Ioc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAogCiAgICAgd2hpbGUgKGNvdW50
KSB7CiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQuYmVnaW4oKSkgewotICAgICAgICAg
ICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMwOCw3ICszMDgs
NyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRSZXZlcnNlSXRlcmF0
b3Ioc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAogICAgICAgICAtLSptX2l0ZXJhdG9yOwogCiAg
ICAgICAgIGlmICghbV9pbmZvLnJhbmdlKCkuY29udGFpbnNLZXkoKiptX2l0ZXJhdG9yKSkgewot
ICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9y
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaAppbmRleCAyY2U1OTg5YzAwZWIwZGM3MGI3
ZDEzZmRmOThiMmRmNWY5Y2Y3NTc5Li4wYmFmYmU4NDg0YmRjMzY0NDUyM2ZkYTk4Yjc1YjVjOGQ0
NzIzYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaApAQCAtNjQsNyArNjQs
NyBAQCBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZUN1cnNvciA6IHB1YmxpYyBNZW1vcnlDdXJzb3Ig
ewogCiAgICAgSURCS2V5UmFuZ2VEYXRhIG1fcmVtYWluaW5nUmFuZ2U7CiAKLSAgICBXVEY6Ok9w
dGlvbmFsPHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVyYXRvcj4gbV9pdGVyYXRvcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVyYXRvcj4gbV9pdGVyYXRvcjsK
IAogICAgIElEQktleURhdGEgbV9jdXJyZW50UG9zaXRpb25LZXk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAzMjY1OGFjOWI3OTVlMjc3ZTc2YmI4NDVlMjQwM2Y0
ZDgzZmNjZjVkLi4yMmI5OWUzOTYwM2Q4YzE0ODM0ZjY5MTljYTEzOGVjZjc4YmZiNzM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjAxLDcgKzYwMSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFj
dEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4ga2V5UGF0aEJ1ZmZl
cjsKICAgICAgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMiwga2V5UGF0aEJ1ZmZl
cik7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0
aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gb2JqZWN0U3RvcmVLZXlQ
YXRoOwogICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oa2V5UGF0aEJ1ZmZlci5kYXRhKCkpLCBrZXlQYXRoQnVmZmVy
LnNpemUoKSwgb2JqZWN0U3RvcmVLZXlQYXRoKSkgewogICAgICAgICAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGV4dHJhY3Qga2V5IHBhdGggZnJvbSBkYXRhYmFzZSIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjM0LDcgKzYzNCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5n
RGF0YWJhc2VJCiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4ga2V5UGF0aEJ1ZmZlcjsKICAgICAg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMywga2V5UGF0aEJ1ZmZlcik7CiAKLSAg
ICAgICAgICAgIE9wdGlvbmFsPElEQktleVBhdGg+IGluZGV4S2V5UGF0aDsKKyAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQYXRoOwogICAgICAgICAgICAgaWYg
KCFkZXNlcmlhbGl6ZUlEQktleVBhdGgocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
a2V5UGF0aEJ1ZmZlci5kYXRhKCkpLCBrZXlQYXRoQnVmZmVyLnNpemUoKSwgaW5kZXhLZXlQYXRo
KSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4dHJhY3Qga2V5IHBh
dGggZnJvbSBkYXRhYmFzZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFi
YXNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
RGF0YWJhc2VJbmZvLmNwcAppbmRleCBmOTg1NzE3MjlmZDY2YzZhNDM3NGFkMmE5OTZkZjZjNGY2
NzEzN2M3Li5lNWRmMTVjNDRhYmJlMjQ2NGY0ZmVlZWZkOThkYWI3OGQ5YjNhZjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
RGF0YWJhc2VJbmZvLmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIElEQkRhdGFiYXNlSW5mbzo6
aGFzT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotSURCT2JqZWN0U3RvcmVJbmZvIElEQkRhdGFiYXNlSW5mbzo6Y3JlYXRlTmV3T2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlSW5mbyBJREJEYXRhYmFzZUlu
Zm86OmNyZWF0ZU5ld09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsKICAgICBJREJP
YmplY3RTdG9yZUluZm8gaW5mbygrK21fbWF4T2JqZWN0U3RvcmVJRCwgbmFtZSwgV1RGTW92ZShr
ZXlQYXRoKSwgYXV0b0luY3JlbWVudCk7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQoaW5mby5p
ZGVudGlmaWVyKCksIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmluZGV4IGUwYjUxNDQ4MzU1Yzhj
MDMyYmI1NmZlNzUyM2E0NTE5NmNkNmY5YTkuLjAzNjFiZGFmYzU5MzgwMGI1OTUwZDZlMmY4Yzgw
YjBhYjQxOGYzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3Mg
SURCRGF0YWJhc2VJbmZvIHsKICAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV92ZXJzaW9uOyB9CiAKICAgICBib29sIGhhc09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSkgY29uc3Q7Ci0gICAgSURCT2JqZWN0U3RvcmVJbmZvIGNyZWF0ZU5ld09iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgT3B0aW9uYWw8SURCS2V5UGF0aD4mJiwgYm9vbCBhdXRvSW5jcmVt
ZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUluZm8gY3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiYsIGJvb2wgYXV0b0luY3Jl
bWVudCk7CiAgICAgdm9pZCBhZGRFeGlzdGluZ09iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpOwogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0ZvckV4aXN0aW5nT2JqZWN0
U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBJREJPYmplY3RTdG9y
ZUluZm8qIGluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWN0U3Rv
cmVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJHZXRBbGxSZWNvcmRzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKaW5kZXggZjk3ZjMzMmZlNWE2YjUw
NzBlMThkODA2MjgxNzc0NGUwMmE0OTQ0Ni4uMTE2MzQ4MzVjYTJmMmUwZTg5NDVjYmM5YWE5MzJl
NTQ2Yjc3NDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKQEAgLTQwLDcgKzQwLDcg
QEAgZW51bSBjbGFzcyBHZXRBbGxUeXBlOwogc3RydWN0IElEQkdldEFsbFJlY29yZHNEYXRhIHsK
ICAgICBJREJLZXlSYW5nZURhdGEga2V5UmFuZ2VEYXRhOwogICAgIEluZGV4ZWREQjo6R2V0QWxs
VHlwZSBnZXRBbGxUeXBlOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudDsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudDsKICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXI7CiAgICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9y
ZUluZm8uY3BwCmluZGV4IDY4MjBhOWZmYWJiN2NhMWRlMGQ0ZWYxZDU0MWYxZTY5NjUyNjBkYmQu
LmFjZGVhMWUzM2E1YTFlNzI4YjlmODZkYzZjZGI0MjdiOTAxNjhhMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmpl
Y3RTdG9yZUluZm8uY3BwCkBAIC0zNSw3ICszNSw3IEBAIElEQk9iamVjdFN0b3JlSW5mbzo6SURC
T2JqZWN0U3RvcmVJbmZvKCkKIHsKIH0KIAotSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RT
dG9yZUluZm8odWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25h
bDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0
b3JlSW5mbzo6SURCT2JqZWN0U3RvcmVJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0
b0luY3JlbWVudCkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9uYW1l
KG5hbWUpCiAgICAgLCBtX2tleVBhdGgoV1RGTW92ZShrZXlQYXRoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9y
ZUluZm8uaAppbmRleCA1MDc1YTQxNGI5YzMxMjViZDNlMGE4Y2YxODc4NGJkNjc3NDY2OTE5Li5l
NmVkY2Q0ZWY0NGZhMzYyMzZiYWU2MTA4OWE5NThjZTI0NmY5ZWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0
b3JlSW5mby5oCkBAIC0zOCwxMSArMzgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SURCT2JqZWN0U3RvcmVJbmZvIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJPYmpl
Y3RTdG9yZUluZm8oKTsKLSAgICBJREJPYmplY3RTdG9yZUluZm8odWludDY0X3QgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmLCBib29sIGF1dG9J
bmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mJiwgYm9vbCBhdXRv
SW5jcmVtZW50KTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KLSAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICBib29sIGF1dG9J
bmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2F1dG9JbmNyZW1lbnQ7IH0KICAgICB1aW50NjRf
dCBtYXhJbmRleElEKCkgY29uc3QgeyByZXR1cm4gbV9tYXhJbmRleElEOyB9CiAKQEAgLTczLDcg
KzczLDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvIHsKIHByaXZhdGU6CiAgICAgdWludDY0
X3QgbV9pZGVudGlmaWVyIHsgMCB9OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgT3B0aW9uYWw8
SURCS2V5UGF0aD4gbV9rZXlQYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gbV9r
ZXlQYXRoOwogICAgIGJvb2wgbV9hdXRvSW5jcmVtZW50IHsgZmFsc2UgfTsKICAgICB1aW50NjRf
dCBtX21heEluZGV4SUQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCmluZGV4IDA0MjBkNzIz
OThkMTE0MmM1YmI1YWZiYTk1NmYxOWVkODhmZjdlZTYuLmU4NDc0MjVjZWY2MzQ3Y2ZiNzgzY2E1
NGFkNzA0Y2NmMjM4NGJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcApAQCAtMTAyLDcgKzEwMiw3
IEBAIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IE1lZGlhQ29udHJvbHNIb3N0Ojpzb3J0ZWRU
cmFja0xpc3RGb3JNZW51KEF1ZGlvVHJhY2tMCiAgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuY2Fw
dGlvblByZWZlcmVuY2VzKCkuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSgmdHJhY2tMaXN0KTsKIH0K
IAotU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5TmFtZUZvclRyYWNrKGNvbnN0IE9w
dGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+JiB0cmFjaykKK1N0cmluZyBNZWRpYUNvbnRyb2xzSG9z
dDo6ZGlzcGxheU5hbWVGb3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRPckF1ZGlvVHJh
Y2s+JiB0cmFjaykKIHsKICAgICBpZiAoIXRyYWNrKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggNTA1MzgyMjE5MDhlNGJhYWYyNTVlM2JkYWIzZjNk
YmY0MTVkNjJjYi4uNDRkZGRkNGU0NDI0ZmQ1ZWI2NGQzYzI4ODc4NmNjMjU5NGJkOWYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sc0hvc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnRyb2xzSG9zdD4gewogICAgIFZlY3RvcjxSZWZQ
dHI8QXVkaW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QmKTsK
IAogICAgIHVzaW5nIFRleHRPckF1ZGlvVHJhY2sgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPFRleHRU
cmFjaz4sIFJlZlB0cjxBdWRpb1RyYWNrPj47Ci0gICAgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJh
Y2soY29uc3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mKTsKKyAgICBTdHJpbmcgZGlzcGxh
eU5hbWVGb3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+Jik7CiAK
ICAgICBUZXh0VHJhY2sqIGNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAgIFRleHRUcmFjayogY2Fw
dGlvbk1lbnVBdXRvbWF0aWNJdGVtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDhmMTQ1ODczY2E1ZTVhZDdlNjlhNmMw
ODkxYjI2YjVmODg4Y2QyY2YuLjU5NTJiZDkzZTU3OTI5YjA0NDgwZWZmOGQ2MGFhZTk5OWY3MDNm
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlT
dGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0YXRlKQogICAgIG9uUmVhZHlTdGF0ZUNoYW5nZShv
bGRTdGF0ZSwgc3RhdGUpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6ZW5k
T2ZTdHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCitFeGNlcHRpb25Pcjx2
b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oc3RkOjpvcHRpb25hbDxFbmRPZlN0cmVhbUVy
cm9yPiBlcnJvcikKIHsKICAgICAvLyAyLjIgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1l
ZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjd2lkbC1NZWRp
YVNvdXJjZS1lbmRPZlN0cmVhbS12b2lkLUVuZE9mU3RyZWFtRXJyb3ItZXJyb3IKICAgICAvLyAx
LiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUg
dGhlbiB0aHJvdyBhbgpAQCAtNTYxLDcgKzU2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlh
U291cmNlOjplbmRPZlN0cmVhbShPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAg
ICByZXR1cm4geyB9OwogfQogCi12b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJv
cihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKK3ZvaWQgTWVkaWFTb3VyY2U6OnN0
cmVhbUVuZGVkV2l0aEVycm9yKHN0ZDo6b3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3Ip
CiB7CiAgICAgTE9HKE1lZGlhU291cmNlLCAiTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVy
cm9yKCVwKSIsIHRoaXMpOwogICAgIGlmIChpc0Nsb3NlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDVhNTMyMGIzNWY1YWEy
NjA4NjE4NzcyNTA1MzQ1ZWI4MGU3ZDRhYTcuLjU0OTMxOWYxMjlkZDA4ZTYxM2E3ZjllOWU2M2Iz
NDY4YjFmNzJkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgTWVkaWFTb3VyY2UgZmluYWwg
OiBwdWJsaWMgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWMK
ICAgICB2b2lkIHNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlciYs
IGJvb2wpOwogCiAgICAgZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVj
b2RlIH07Ci0gICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVh
bUVycm9yPik7CisgICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihzdGQ6Om9wdGlvbmFsPEVu
ZE9mU3RyZWFtRXJyb3I+KTsKIAogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwpAQCAt
ODMsNyArODMsNyBAQCBjbGFzcyBNZWRpYVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplYwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldER1cmF0aW9uSW50ZXJuYWwoY29uc3QgTWVkaWFUaW1lJik7CiAgICAgTWVkaWFUaW1l
IGN1cnJlbnRUaW1lKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWFkeVN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4g
ZW5kT2ZTdHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4pOworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGVuZE9mU3RyZWFtKHN0ZDo6b3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4pOwogCiAg
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRp
YUVsZW1lbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCA3NmJiMDNjZDg0OTg2OGQ3ZTJlZWRkNmJiNjkz
MzgyYTI5YTUwM2IwLi5jMjc0Mjc2OWY4N2U2NGZmNTVlOTU1OGEzOWFlZTE3OTNhZDlhZDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaApAQCAtMTI4LDcgKzEyOCw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2sgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVibGljIEFjdGl2CiAg
ICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CiAKICAgICBSZWZQdHI8
TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAgICBPcHRpb25hbDxBcHBseUNvbnN0
cmFpbnRzUHJvbWlzZT4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8QXBwbHlDb25zdHJh
aW50c1Byb21pc2U+IG1fcHJvbWlzZTsKICAgICBXZWFrUHRyRmFjdG9yeTxNZWRpYVN0cmVhbVRy
YWNrPiBtX3dlYWtQdHJGYWN0b3J5OwogCiAgICAgYm9vbCBtX2VuZGVkIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIu
Y3BwCmluZGV4IGY3YmM3ZDM5Y2RjZWE0ZTY0YzQ1ZGI4NDNiYTVkMzkwMWE1MzUyYzMuLjQyZDE1
MjM0MGI3YWU2NjIzOWRjNjhmYzgzNDlkODVjMWYzNmMzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBTdHJpbmcgUlRDRFRNRlNlbmRlcjo6dG9uZUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1faGFuZGxlci0+Y3VycmVudFRvbmVCdWZmZXIoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9p
ZD4gUlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBPcHRpb25h
bDxpbnQ+IGR1cmF0aW9uLCBPcHRpb25hbDxpbnQ+IGludGVyVG9uZUdhcCkKK0V4Y2VwdGlvbk9y
PHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgc3Rk
OjpvcHRpb25hbDxpbnQ+IGR1cmF0aW9uLCBzdGQ6Om9wdGlvbmFsPGludD4gaW50ZXJUb25lR2Fw
KQogewogICAgIGlmICghY2FuSW5zZXJ0RFRNRigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKQEAgLTk3LDggKzk3LDggQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gUlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBPcHRpb25h
bDxpbnQ+IGQKICAgICBpZiAoaW50ZXJUb25lR2FwICYmIGludGVyVG9uZUdhcC52YWx1ZSgpIDwg
bWluSW50ZXJUb25lR2FwTXMpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJS
IH07CiAKLSAgICBtX2R1cmF0aW9uID0gZHVyYXRpb24udmFsdWVPcihkZWZhdWx0VG9uZUR1cmF0
aW9uTXMpOwotICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2FwLnZhbHVlT3IoZGVmYXVs
dEludGVyVG9uZUdhcE1zKTsKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb24udmFsdWVfb3IoZGVm
YXVsdFRvbmVEdXJhdGlvbk1zKTsKKyAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52
YWx1ZV9vcihkZWZhdWx0SW50ZXJUb25lR2FwTXMpOwogCiAgICAgaWYgKCFtX2hhbmRsZXItPmlu
c2VydERUTUYodG9uZXMsIG1fZHVyYXRpb24sIG1faW50ZXJUb25lR2FwKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKaW5kZXggZmNhNDI1M2RkMzA1YWI3MWY2
YmJhMjNhMTNiYzgzMDQ3MTIwMzk2Yi4uYzcyMjg3MTkxMGY5NmY4NmIyMDdhYjNhODFkNTFjYzMw
OGFjNzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUlRDRFRNRlNlbmRlciBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RUTUZTZW5kZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXQK
ICAgICBsb25nIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgIGxv
bmcgaW50ZXJUb25lR2FwKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlclRvbmVHYXA7IH0KIAotICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgT3B0aW9u
YWw8aW50PiBkdXJhdGlvbiwgT3B0aW9uYWw8aW50PiBpbnRlclRvbmVHYXApOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgc3RkOjpvcHRpb25h
bDxpbnQ+IGR1cmF0aW9uLCBzdGQ6Om9wdGlvbmFsPGludD4gaW50ZXJUb25lR2FwKTsKIAogICAg
IHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmNwcAppbmRleCA2YmZmZTJjMDgwMjc3MmM2M2RhMWU1ODBkYWFjMjE3YzMzOTFlNDQxLi4w
ZmRmMDBmYTE0MTFiODIyYjZlN2NkMzkwZmYzMjA1OWJlZDVlMGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBSVENJY2VD
YW5kaWRhdGU6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBkaWN0CiAgICAgU3RyaW5nIHNkcE1p
ZDsKICAgICBkaWN0aW9uYXJ5LmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjaygic2RwTWlkIiwg
c2RwTWlkKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4Owor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXg7CiAgICAgU3Ry
aW5nIHNkcE1MaW5lSW5kZXhTdHJpbmc7CiAKICAgICBpZiAoZGljdGlvbmFyeS5nZXRXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soInNkcE1MaW5lSW5kZXgiLCBzZHBNTGluZUluZGV4U3RyaW5nKSkg
ewpAQCAtNjcsMTIgKzY3LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBS
VENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBkaWN0CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlkYXRlKGNhbmRpZGF0ZSwgc2RwTWlkLCBzZHBNTGlu
ZUluZGV4KSk7CiB9CiAKLVJlZjxSVENJY2VDYW5kaWRhdGU+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcmIHNkcE1pZCwgT3B0aW9u
YWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCitSZWY8UlRDSWNlQ2FuZGlkYXRlPiBS
VENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3Ry
aW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlkYXRlKGNhbmRpZGF0ZSwg
c2RwTWlkLCBzZHBNTGluZUluZGV4KSk7CiB9CiAKLVJUQ0ljZUNhbmRpZGF0ZTo6UlRDSWNlQ2Fu
ZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcmIHNkcE1pZCwgT3B0
aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCitSVENJY2VDYW5kaWRhdGU6OlJU
Q0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBN
aWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCiAgICAgOiBt
X2NhbmRpZGF0ZShjYW5kaWRhdGUpCiAgICAgLCBtX3NkcE1pZChzZHBNaWQpCiAgICAgLCBtX3Nk
cE1MaW5lSW5kZXgoc2RwTUxpbmVJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCmluZGV4IGQ3ODlmM2RkMmVhNzRlN2Zm
ZjU3YjZkMjUxYTk5NWU5YjExY2JhNDcuLjlhODcwZmYxZDdlMTUyZjI0ZDJkMWEzMGQyNzY5YzQw
NWQ3MGEyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDSWNlQ2FuZGlkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENJY2VDYW5kaWRhdGUuaApAQCAtNDQsMTggKzQ0LDE4IEBAIGNsYXNzIFJUQ0ljZUNhbmRp
ZGF0ZURlc2NyaXB0b3I7CiBjbGFzcyBSVENJY2VDYW5kaWRhdGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSVENJY2VDYW5kaWRhdGU+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFJUQ0ljZUNhbmRpZGF0ZT4+IGNyZWF0ZShjb25zdCBE
aWN0aW9uYXJ5Jik7Ci0gICAgc3RhdGljIFJlZjxSVENJY2VDYW5kaWRhdGU+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIE9wdGlvbmFsPHVuc2ln
bmVkIHNob3J0PiBzZHBNTGluZUluZGV4KTsKKyAgICBzdGF0aWMgUmVmPFJUQ0ljZUNhbmRpZGF0
ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcmIHNkcE1pZCwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIGNhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuZGlkYXRlOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBzZHBNaWQoKSBjb25zdCB7IHJldHVybiBtX3NkcE1pZDsgfQotICAgIE9w
dGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9z
ZHBNTGluZUluZGV4OyB9CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxp
bmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2RwTUxpbmVJbmRleDsgfQogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29u
c3QgU3RyaW5nJiBzZHBNaWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4
KTsKKyAgICBleHBsaWNpdCBSVENJY2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUs
IGNvbnN0IFN0cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBN
TGluZUluZGV4KTsKIAogICAgIFN0cmluZyBtX2NhbmRpZGF0ZTsKICAgICBTdHJpbmcgbV9zZHBN
aWQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1fc2RwTUxpbmVJbmRleDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtX3NkcE1MaW5lSW5kZXg7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAKaW5kZXggOWExMWNhYjI4M2JiNWMyZTA2NmZjYjdmNTQ3
ZDEyMmU1ZGQ2ZGQ0ZS4uMTQ1ZDQxMTdjZTM2ZDFiNzg3OTA2MzI3MDAxN2Y3YTViY2VlMGRhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0RQUHJvY2Vz
c29yLmNwcApAQCAtMzI3LDE1ICszMjcsMTUgQEAgc3RhdGljIFJlZlB0cjxNZWRpYUVuZHBvaW50
U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9tSlNPTihjb25zdCBTdHIKICAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEljZUNhbmRpZGF0
ZT4gaWNlQ2FuZGlkYXRlRnJvbUpTT04oY29uc3QgU3RyaW5nJiBqc29uKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRhdGVGcm9tSlNPTihjb25zdCBTdHJpbmcm
IGpzb24pCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZTsKICAgICBpZiAoIUlu
c3BlY3RvclZhbHVlOjpwYXJzZUpTT04oanNvbiwgdmFsdWUpKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNhbmRpZGF0ZU9iamVjdDsKICAgICBpZiAoIXZhbHVlLT5hc09iamVjdChjYW5k
aWRhdGVPYmplY3QpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBjcmVhdGVDYW5kaWRhdGUoKmNhbmRpZGF0ZU9iamVj
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Byb3hpbWl0eS9EZXZp
Y2VQcm94aW1pdHlFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wcm94aW1pdHkvRGV2
aWNlUHJveGltaXR5RXZlbnQuaAppbmRleCA5NTkyY2JmNWU3Y2MwMGZjMjI4NGQwZDhmOGExNzY0
NDRmMDExMDQ5Li5hZDI1MDIxZmJjMDhhZTE4YjdlYWNjYWU2MmU3NzllYmFkMzA0MmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Byb3hpbWl0eS9EZXZpY2VQcm94aW1pdHlF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHJveGltaXR5L0RldmljZVByb3hp
bWl0eUV2ZW50LmgKQEAgLTQxLDkgKzQxLDkgQEAgY2xhc3MgRGV2aWNlUHJveGltaXR5RXZlbnQg
OiBwdWJsaWMgRXZlbnQgewogICAgIH0KIAogICAgIHN0cnVjdCBJbml0IDogRXZlbnRJbml0IHsK
LSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKLSAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBtaW47Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtaW47Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXg7CiAgICAgfTsKIAogICAgIHN0YXRpYyBS
ZWY8RGV2aWNlUHJveGltaXR5RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVk
OjpObykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU291cmNlLmgKaW5kZXggNjE3YjI3YjdkNzZiMTA3ZDJhNjQwMjZmNmY0MzZjZTg1OGJm
OGRmMS4uYzk4MjAwNTRhYjlhNDc1MDNhMmQ4ZDFlYzdlYmJkMDcxMjUyYzEyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNl
LmgKQEAgLTY3LDggKzY3LDggQEAgY2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gewogICAgIHZpcnR1YWwgdm9pZCBkb0Nh
bmNlbCgpID0gMDsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxQcm9taXNlPiBtX3Byb21pc2U7
Ci0gICAgT3B0aW9uYWw8UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcj4gbV9jb250cm9s
bGVyOworICAgIHN0ZDo6b3B0aW9uYWw8UHJvbWlzZT4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogfTsK
IAogaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXImJiBjb250cm9sbGVyLCBQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTk1
LDE0ICs5NSwxNCBAQCBpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6cHVsbChQcm9t
aXNlJiYgcHJvbWlzZSkKIGlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydEZp
bmlzaGVkKCkKIHsKICAgICBBU1NFUlQobV9wcm9taXNlKTsKLSAgICBzdGQ6OmV4Y2hhbmdlKG1f
cHJvbWlzZSwgTnVsbG9wdCkudmFsdWUoKS5yZXNvbHZlKG51bGxwdHIpOworICAgIHN0ZDo6ZXhj
aGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLnZhbHVlKCkucmVzb2x2ZShudWxscHRyKTsK
ICAgICBzZXRJbmFjdGl2ZSgpOwogfQogCiBpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJj
ZTo6cHVsbEZpbmlzaGVkKCkKIHsKICAgICBBU1NFUlQobV9wcm9taXNlKTsKLSAgICBzdGQ6OmV4
Y2hhbmdlKG1fcHJvbWlzZSwgTnVsbG9wdCkudmFsdWUoKS5yZXNvbHZlKG51bGxwdHIpOworICAg
IHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLnZhbHVlKCkucmVzb2x2ZShu
dWxscHRyKTsKICAgICBzZXRJbmFjdGl2ZSgpOwogfQogCkBAIC0xMTUsNyArMTE1LDcgQEAgaW5s
aW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNhbmNlbChKU0M6OkpTVmFsdWUpCiBpbmxp
bmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6Y2xlYW4oKQogewogICAgIGlmIChtX3Byb21p
c2UpIHsKLSAgICAgICAgbV9wcm9taXNlID0gTnVsbG9wdDsKKyAgICAgICAgbV9wcm9taXNlID0g
c3RkOjpudWxsb3B0OwogICAgICAgICBzZXRJbmFjdGl2ZSgpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcAppbmRleCBhMTlmNjNmNjNkNTRkMzExZDFhNDI2ZWIwNzg0YzRhNGZkMzg4NmM2Li4x
MTMxOWE4NWNlOTkyMGYxY2UyZjdhOThiODBjM2M3MWIwYTc4MGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwCkBAIC00MzcsNyArNDM3LDcgQEAgdW5zaWduZWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpu
dW1iZXJPZkNoYW5uZWxzKCkKICAgICByZXR1cm4gb3V0cHV0KDApLT5udW1iZXJPZkNoYW5uZWxz
KCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnQo
ZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBvcHRpb25h
bEdyYWluRHVyYXRpb24pCitFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnN0YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBvcHRpb25hbEdyYWluRHVyYXRpb24pCiB7CiAgICAgZG91YmxlIGdyYWluRHVyYXRpb24g
PSAwOwogICAgIGlmIChvcHRpb25hbEdyYWluRHVyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBh
MDkyNjBhZGY5ODJmZWMzNjdjOTc0NTI0ZTA0MzhhNTY0YjQ0ZWJjLi5mNGU2M2E4NTljMDFiNDE1
ZTFjZjM0N2YyNzg4ZGRkOGI3YjczYmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTU1LDcgKzU1LDcg
QEAgY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZSB7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpOwogCiAgICAg
Ly8gUGxheS1zdGF0ZQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0KGRvdWJsZSB3aGVuLCBk
b3VibGUgZ3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlvbik7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pOwogCiAgICAgLy8gTm90ZTogdGhl
IGF0dHJpYnV0ZSB3YXMgb3JpZ2luYWxseSBleHBvc2VkIGFzIC5sb29waW5nLCBidXQgdG8gYmUg
bW9yZSBjb25zaXN0ZW50IGluIG5hbWluZyB3aXRoIDxhdWRpbz4KICAgICAvLyBhbmQgd2l0aCBo
b3cgaXQncyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24sIHRoZSBwcm9wZXIgYXR0cmli
dXRlIG5hbWUgaXMgLmxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFJlc3VsdFNldC5oCmluZGV4IGQ3MTZmYmYwMTU3ZWZmOGUxOGRjZDZjZmJiYWJmNjJi
YmFmZThiZWUuLmUyMjgzOTk5ZmE4OWEzYzZmZjcxNmMxNGM1ODk0ZjUzOGZkODQ1NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaApA
QCAtNTAsNyArNTAsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U1FMUmVzdWx0U2V0PiB7CiAgICAgU1FMUmVzdWx0U2V0KCk7CiAKICAgICBSZWY8
U1FMUmVzdWx0U2V0Um93TGlzdD4gbV9yb3dzOwotICAgIE9wdGlvbmFsPGludDY0X3Q+IG1faW5z
ZXJ0SWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBtX2luc2VydElkOwogICAgIGludCBt
X3Jvd3NBZmZlY3RlZCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggNjQzMjE2NTliYjFjMjI5NGQyMjJhZmRlYmYz
NDQ1Y2E2Yjc0YzE1Yy4uYmVkOTM2MjY3ZDU2ODRmYzc4ODE3MDkxZjExZjA3YzQ1ZWFiM2I3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
QEAgLTM3OCw3ICszNzgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OnNlbmQoQmxv
YiYgYmluYXJ5RGF0YSkKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBX
ZWJTb2NrZXQ6OmNsb3NlKE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBvcHRpb25hbENvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0OjpjbG9zZShz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBvcHRpb25hbENvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogewogICAgIGludCBjb2RlID0gb3B0aW9uYWxDb2RlID8gb3B0aW9uYWxDb2RlLnZh
bHVlKCkgOiBzdGF0aWNfY2FzdDxpbnQ+KFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2Rl
Tm90U3BlY2lmaWVkKTsKICAgICBpZiAoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2
ZW50Q29kZU5vdFNwZWNpZmllZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaAppbmRleCA0MTU0ZWVlYzYzMjEyZWJjZGZhMWJmODAxYmY1ZTEyMjY0ZjEw
NTc5Li43ZDQzZjA0MzYwZmMzYjlhY2MwYmJmYjVhNTkyNDVkNjliODA5YWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC03OCw3ICs3OCw3
IEBAIGNsYXNzIFdlYlNvY2tldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4s
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZChK
U0M6OkFycmF5QnVmZmVyVmlldyYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNlbmQoQmxvYiYp
OwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xvc2UoT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+
IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbG9z
ZShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwogICAgIFN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2NTQ1NmNmMjQ5ZjE1Mzk1ODRmYjQwYjZhZjc3NDEz
NjY2ZTI1OGEwLi43MGVmZWZlNTE4ZDFhYmMwYWNjMjBlOTUzZjk3NmNjZmE4NjJjMjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRD
bG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAgICBkZXJlZigp
OwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRh
KFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBPcHRpb25hbDxz
aXplX3Q+IGxlbikKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVh
bURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBsZW4pCiB7CiAgICAgaWYgKGxlbikKICAgICAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVj
ZWl2ZWQgJXp1IGJ5dGVzIiwgdGhpcywgbGVuLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggN2M3NThk
NjQ0MGE4ZmYzNGQ0NmQ1Mjc2NjU4MzMxNTIwMDQzZWFkMS4uYjNhNTJjY2M3OTBmZTFhN2E3YTEy
M2JkMzg3MDgxOTY5NzY5ZTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIFdl
YlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVi
bGljIFNvY2tldFN0cmVhCiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9u
cy4KICAgICB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhh
bmRsZSYsIGNvbnN0IGNoYXIqLCBPcHRpb25hbDxzaXplX3Q+KSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIq
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVy
ZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxlJiwgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiwgY29u
c3QgU29ja2V0U3RyZWFtRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9JRExUeXBlcy5oCmluZGV4IDNmNjc1OWZiNDZkZTcwNmUwZGY1MjA1MWVkZTIyYjZi
ODJmYzNkOGMuLmRmNGYwOTQ4ZjdkZmJjZjU5OTFiMDg2ZGI5ODE1MDQ3OWNjOTJiMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKQEAgLTQzLDggKzQzLDgg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJRExUeXBlIHsKICAgICB1c2luZyBJbXBs
ZW1lbnRhdGlvblR5cGUgPSBUOwogCi0gICAgdXNpbmcgTnVsbGFibGVUeXBlID0gT3B0aW9uYWw8
SW1wbGVtZW50YXRpb25UeXBlPjsKLSAgICBzdGF0aWMgTnVsbGFibGVUeXBlIG51bGxWYWx1ZSgp
IHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBzdGQ6Om9wdGlv
bmFsPEltcGxlbWVudGF0aW9uVHlwZT47CisgICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxsVmFs
dWUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgYm9vbCBpc051bGxWYWx1
ZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICBzdGF0
aWMgSW1wbGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShjb25zdCBOdWxs
YWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IGI4ODMzNTMwMWE0NDAxM2Q1ZjRmNTg5
ZWRiODgxZWI3YjdkY2I2MzQuLjJlN2RkMWYyNzRkMzVjMGVlNTllMGUxMGIzZWIxMDExYzQ2N2Nl
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgY2xhc3MgRGljdGlvbmFyeSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBi
b29sIGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUsIFJlc3VsdCYpIGNvbnN0OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBPcHRp
b25hbDxSZXN1bHQ+IGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gc3RkOjpvcHRpb25hbDxSZXN1bHQ+IGdldChjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBUKiB0YXJnZXQpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFJlZlB0cjxF
dmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
LCBUKiB0YXJnZXQpIGNvbnN0OwpAQCAtNzksMTEgKzc5LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFJlc3VsdD4gYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IFJlc3VsCiAgICAgcmV0dXJuIGdldChwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgcmVzdWx0
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBPcHRpb25hbDxSZXN1bHQ+IERpY3Rp
b25hcnk6OmdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXN1bHQ+IHN0ZDo6b3B0aW9uYWw8UmVzdWx0PiBEaWN0aW9uYXJ5OjpnZXQoY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFJlc3VsdCByZXN1bHQ7CiAgICAgaWYg
KCFnZXQocHJvcGVydHlOYW1lLCByZXN1bHQpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmlu
ZGV4IDU5OGU4ZTU3ZWFkYzkxNDA0MGFlOWZhZjM4ZmJlNmFjOWZjYmY2YzEuLjIyMDljNjQ1NjYw
MjFjNDZjMDJkZmFmMTIxMWU2OTRkYmQ3ZTkyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0zOTEsNyArMzkxLDcgQEAg
dm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8sIEpTVmFsdWUKICAgICBvdXRLZXkgPSBJbmRleEtleShXVEZNb3ZlKGtl
eURhdGFzKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0
aCkKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewog
ICAgIGlmICgha2V5UGF0aCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDM2YzZlMThl
NzI4M2VjMmNmMzIyMzFiNDMwNzJhZjQ4ZjI3YjYwODAuLmE4NmMxMGMwN2Q4YzI2ZWNjZGEyZTU3
MjI4ZGYyZjkzNTI5MDY0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSlNET01HbG9iYWxP
YmplY3Q7CiBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIAogLy8gRklYTUU6IFJlbW92ZSB0
aGlzIG9uY2Ugd2Ugc3VwcG9ydCByZXR1cm5pbmcgdW5pb24gdHlwZXMuCi1KU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgT3B0aW9uYWw8
SURCS2V5UGF0aD4mKTsKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNET01H
bG9iYWxPYmplY3QmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKIFJlZlB0
cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJv
b2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3Qg
SlNDOjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5k
ZXggM2UxYjFlZDBhZmIyNzdkZWFiOGQ1Y2EwOGQyNDdmOWM3NDhhYTg0NC4uZTcwNmIyMjU1NzA4
YTcxODg1MWJhMTVhMjViNTM1ODBhMzlhMmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC0x
NzcsNyArMTc3LDcgQEAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZD4gY3JlYXRlUlNBS2V5UGFyYW1ldGVyc1dpdGhIYXNoKEMKICAgICByZXR1cm4gV1RGTW92
ZShyc2FLZXlQYXJhbWV0ZXJzKTsKIH0KIAotT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4g
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxn
b3JpdGhtKiBzdWdnZXN0ZWRBbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkKiBzdWdnZXN0ZWRQYXJhbWV0ZXJzKSBjb25zdAorc3RkOjpvcHRpb25hbDxDcnlwdG9B
bGdvcml0aG1QYWlyPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29y
aXRobShDcnlwdG9BbGdvcml0aG0qIHN1Z2dlc3RlZEFsZ29yaXRobSwgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQqIHN1Z2dlc3RlZFBhcmFtZXRlcnMpIGNvbnN0CiB7CiAgICAg
Vk0mIHZtID0gbV9leGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWly
PiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29yaXRobShDcgogICAg
ICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVj
LCBzY29wZSwgIlVuc3VwcG9ydGVkIEpXSyBhbGdvcml0aG0gIiArIG1fandrQWxnb3JpdGhtTmFt
ZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIGlmICghc3VnZ2VzdGVkQWxnb3JpdGhtKQpAQCAtMjQ0LDExICsyNDQs
MTEgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3IKICAgICAgICAgcmV0dXJuIENyeXB0b0FsZ29y
aXRobVBhaXIgeyBzdWdnZXN0ZWRBbGdvcml0aG0sIHN1Z2dlc3RlZFBhcmFtZXRlcnMgfTsKIAog
ICAgIGlmIChhbGdvcml0aG0tPmlkZW50aWZpZXIoKSAhPSBzdWdnZXN0ZWRBbGdvcml0aG0tPmlk
ZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoYWxnb3JpdGhtLT5pZGVudGlmaWVyKCkgPT0gQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SE1BQykgewogICAgICAgICBpZiAoZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+KCpwYXJhbWV0ZXJzKS5oYXNoICE9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkPigqc3VnZ2VzdGVkUGFyYW1ldGVy
cykuaGFzaCkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIENyeXB0b0FsZ29yaXRobVBhaXIgeyBzdWdn
ZXN0ZWRBbGdvcml0aG0sIHN1Z2dlc3RlZFBhcmFtZXRlcnMgfTsKICAgICB9CiAgICAgaWYgKGFs
Z29yaXRobS0+aWRlbnRpZmllcigpID09IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNT
QV9QS0NTMV92MV81CkBAIC0yNTgsNyArMjU4LDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGht
UGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3IK
ICAgICAgICAgQVNTRVJUKHJzYUtleVBhcmFtZXRlcnMuaGFzSGFzaCk7CiAgICAgICAgIGlmIChz
dWdnZXN0ZWRSU0FLZXlQYXJhbWV0ZXJzLmhhc0hhc2gpIHsKICAgICAgICAgICAgIGlmIChzdWdn
ZXN0ZWRSU0FLZXlQYXJhbWV0ZXJzLmhhc2ggIT0gcnNhS2V5UGFyYW1ldGVycy5oYXNoKQotICAg
ICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4gQ3J5cHRvQWxnb3JpdGhtUGFpciB7IHN1Z2dl
c3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1ldGVycyB9OwogICAgICAgICB9CiAgICAgICAg
IHN1Z2dlc3RlZFJTQUtleVBhcmFtZXRlcnMuaGFzSGFzaCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5o
CmluZGV4IGZlZTJkOTg5OTAyOTAxZTgyOGRmMTAwYmNhOGNlMjE3MmNkODBmMTcuLjZlNGRkMzQ0
ZDE4MjcxYTU2OWJkNTY5ZmJmNWM5MTRkMzUyMjY5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oCkBAIC01
MSw3ICs1MSw3IEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSyk7CiAgICAgc3RhdGljIFN0cmluZyBzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IENyeXB0b0tleSYpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPENyeXB0b0FsZ29y
aXRobVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0qLCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29y
aXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZSYpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgcmVjb25jaWxlRXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAppbmRleCBjNzIx
Zjg2NzVlNWFlNzMwNDRjN2E5YThmNjFhNjUyOTEwZDFiYTBjLi41N2M2OGM1ODc1OTM2NjFhYjNi
MWYxNjU1MDAyMTgwMmQ4YmVjYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnQuaApAQCAtNDUsNyArNDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFt
ZSBDb252ZXJ0ZXI8VD46OlJldHVyblR5cGUgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnREaWN0aW9uYXJ5KEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlKTsKIAogLy8gU3BlY2lhbGl6ZWQgYnkgZ2VuZXJhdGVkIGNvZGUgZm9yIElETCBl
bnVtZXJhdGlvbiBjb252ZXJzaW9uLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4g
cGFyc2VFbnVtZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFQ+IHBhcnNlRW51bWVyYXRpb24oSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0RW51
bWVyYXRpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygpOwogCkBAIC04MDAs
NyArODAwLDcgQEAgc3RydWN0IENvbmRpdGlvbmFsQ29udmVydGVyOwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFsQ29udmVydGVy
PFJldHVyblR5cGUsIFQsIHRydWU+IHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4g
Y29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFJldHVyblR5
cGUoQ29udmVydGVyPFQ+Ojpjb252ZXJ0KHN0YXRlLCB2YWx1ZSkpOwogICAgIH0KQEAgLTgwOCw5
ICs4MDgsOSBAQCBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1
ZT4gewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0
IENvbmRpdGlvbmFsQ29udmVydGVyPFJldHVyblR5cGUsIFQsIGZhbHNlPiB7Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFJldHVyblR5cGU+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gY29udmVydChKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07CiAKQEAgLTg5NSw3ICs4OTUs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgQ29udmVydGVyPElETFVuaW9uPFQu
Li4+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVQogICAgICAgICAvLyAgICAgMi4gSWYgdHlwZXMg
aW5jbHVkZXMgb2JqZWN0LCB0aGVuIHJldHVybiB0aGUgSURMIHZhbHVlIHRoYXQgaXMgYSByZWZl
cmVuY2UgdG8gdGhlIG9iamVjdCBWLgogICAgICAgICAvLyAgICAgICAgIChGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIG9iamVjdCBhbmQgc3RlcCA0LjIpCiAgICAgICAgIGlmIChicmlnYW5kOjphbnk8
VHlwZUxpc3QsIElzSURMSW50ZXJmYWNlPGJyaWdhbmQ6Ol8xPj46OnZhbHVlKSB7Ci0gICAgICAg
ICAgICBPcHRpb25hbDxSZXR1cm5UeXBlPiByZXR1cm5WYWx1ZTsKKyAgICAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CiAgICAgICAgICAgICBicmlnYW5kOjpm
b3JfZWFjaDxJbnRlcmZhY2VUeXBlTGlzdD4oWyZdKGF1dG8mJiB0eXBlKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHJldHVyblZhbHVlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MDE2LDcgKzEwMTYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgSlNDb252ZXJ0
ZXI8SURMVW5pb248VC4uLj4+IHsKICAgICB7CiAgICAgICAgIGF1dG8gaW5kZXggPSB2YXJpYW50
LmluZGV4KCk7CiAKLSAgICAgICAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiByZXR1cm5WYWx1ZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IHJldHVyblZhbHVlOwogICAgICAg
ICBicmlnYW5kOjpmb3JfZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8mJiB0eXBlKSB7CiAgICAgICAg
ICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFuZFJlZmVyZW5jZTxkZWNsdHlw
ZSh0eXBlKT46OnR5cGU6OnR5cGU7CiAgICAgICAgICAgICBpZiAoSTo6dmFsdWUgPT0gaW5kZXgp
IHsKQEAgLTEwNjEsMTMgKzEwNjEsMTMgQEAgbmFtZXNwYWNlIERldGFpbCB7CiAgICAgc3RydWN0
IFZhcmlhZGljQ29udmVydGVyQmFzZSB7CiAgICAgICAgIHVzaW5nIEl0ZW0gPSB0eXBlbmFtZSBJ
RExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU7CiAKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPEl0
ZW0+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisg
ICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8m
IHZtID0gc3RhdGUudm0oKTsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBDb252ZXJ0ZXI8SURMVHlw
ZT46OmNvbnZlcnQoc3RhdGUsIHZhbHVlKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIE51bGxvcHQpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsK
ICAgICAgICAgfQpAQCAtMTA3NywxMiArMTA3NywxMiBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKICAg
ICBzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXJCYXNlPElETEludGVyZmFjZTxUPj4gewogICAgICAg
ICB1c2luZyBJdGVtID0gc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUPjsKIAotICAgICAgICBzdGF0
aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SXRlbT4gY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgewogICAg
ICAgICAgICAgYXV0byogcmVzdWx0ID0gQ29udmVydGVyPElETEludGVyZmFjZTxUPj46OmNvbnZl
cnQoc3RhdGUsIHZhbHVlKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEl0ZW0+KCpy
ZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxJdGVtPigqcmVzdWx0KTsKICAgICAgICAgfQogICAgIH07
CiAKQEAgLTEwOTMsNyArMTA5Myw3IEBAIG5hbWVzcGFjZSBEZXRhaWwgewogCiAgICAgICAgIHN0
cnVjdCBSZXN1bHQgewogICAgICAgICAgICAgc2l6ZV90IGFyZ3VtZW50SW5kZXg7Ci0gICAgICAg
ICAgICBPcHRpb25hbDxDb250YWluZXI+IGFyZ3VtZW50czsKKyAgICAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Q29udGFpbmVyPiBhcmd1bWVudHM7CiAgICAgICAgIH07CiAgICAgfTsKIH0KQEAgLTEx
MDIsNyArMTEwMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IHR5cGVuYW1lIERldGFp
bDo6VmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OlJlc3VsdCBjCiB7CiAgICAgc2l6ZV90IGxl
bmd0aCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoc3RhcnRJbmRleCA+IGxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIHsgMCwgTnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyAwLCBz
dGQ6Om51bGxvcHQgfTsKIAogICAgIHR5cGVuYW1lIERldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXI8
SURMVHlwZT46OkNvbnRhaW5lciByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBJRExUeXBlPiB0eXBlbmFtZSBEZXRhaWw6OlZhcmlhZGljQ29udmVydGVyPElE
TFR5cGU+OjpSZXN1bHQgYwogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IERldGFpbDo6VmFyaWFkaWNDb252ZXJ0
ZXI8SURMVHlwZT46OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsK
ICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiB7IGksIE51bGxvcHQgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IGksIHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXN1bHQu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKnZhbHVlKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggYjU4MmRiMGY1NmQ3MjMyODk1MjBj
ZTY2YzBlMzBlZjE1MjcxMjE4My4uM2M1ZmUwZTNmMTdlMDc3MzIxNmIxNWZkNWNmZTVmZTU5MGFi
MDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApAQCAt
MTE5LDcgKzExOSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlciwgdHlwZW5hbWUgSXRl
cmF0b3JUcmFpdHM+IGNsYXNzIEpTRE9NSXRlcmF0b3IgOiBwdWJsCiAKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKLSAgICBPcHRpb25hbDx0eXBlbmFtZSBET01XcmFw
cGVkOjpJdGVyYXRvcj4gbV9pdGVyYXRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIERP
TVdyYXBwZWQ6Okl0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIEl0ZXJhdGlvbktpbmQgbV9raW5k
OwogfTsKIApAQCAtMjM2LDcgKzIzNiw3IEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUl0ZXJhdG9yPEpT
V3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpTQzo6RXhlY1N0YXRlJiBzdGF0CiAgICAg
ICAgIGF1dG8gaXRlcmF0b3JWYWx1ZSA9IG1faXRlcmF0b3ItPm5leHQoKTsKICAgICAgICAgaWYg
KGl0ZXJhdG9yVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRP
YmplY3QoJnN0YXRlLCBhc0pTKHN0YXRlLCBpdGVyYXRvclZhbHVlKSwgZmFsc2UpOwotICAgICAg
ICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KCZzdGF0ZSwg
SlNDOjpqc1VuZGVmaW5lZCgpLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmgKaW5kZXggZDIwYWEwODlmYTk1Y2ZhNzE5YWZhZmE4NjFlYTljYzM3OTY2
ZGM0ZS4uYzg4ZWFiZDFkNDEyNjg1ZjIyZTk3NTNhOWJlZDM4ZjAyNDRkZTI2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTIwMSwxMSArMjAxLDIwIEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZT4KIGNsYXNzIERPTVByb21pc2UgewogcHVibGljOgog
ICAgIERPTVByb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBnZW5lcmljUHJvbWlzZSkgOiBt
X3Byb21pc2VEZWZlcnJlZChXVEZNb3ZlKGdlbmVyaWNQcm9taXNlKSkgeyB9Ci0KICAgICBET01Q
cm9taXNlKERPTVByb21pc2UmJiBwcm9taXNlKSA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUo
cHJvbWlzZS5tX3Byb21pc2VEZWZlcnJlZCkpIHsgfQorICAgIERPTVByb21pc2UoY29uc3QgRE9N
UHJvbWlzZSYgb3RoZXIpIDogbV9wcm9taXNlRGVmZXJyZWQob3RoZXIubV9wcm9taXNlRGVmZXJy
ZWQuY29weVJlZigpKSB7IH0KKworICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShjb25zdCBET01Q
cm9taXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gb3RoZXIu
Y29weVJlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgRE9NUHJvbWlz
ZShjb25zdCBET01Qcm9taXNlJikgPSBkZWZhdWx0OwotICAgIERPTVByb21pc2UmIG9wZXJhdG9y
PShET01Qcm9taXNlIGNvbnN0JikgPSBkZWZhdWx0OworICAgIERPTVByb21pc2UmIG9wZXJhdG9y
PShET01Qcm9taXNlJiYgb3RoZXIpCisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9
IFdURk1vdmUob3RoZXIubV9wcm9taXNlRGVmZXJyZWQpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQogCiAgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIFByb21pc2VSZXN1bHRJbnNwZWN0
b3I8VmFsdWU+OjpUeXBlIHZhbHVlKSB7IG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKHZhbHVl
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggNDI4NzY5Mzk0NGJmYWY5NGViYjk2ZmY3NjY5MDU3ZmVjNDQ1OWViNC4uNDVh
MzY1MzVkMGE0Y2YwNTY0MDVkYzliMzQyNjBmM2VlZmU1ZWExYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMTU5LDcgKzE1OSw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0CiB7CiAgICAgLy8gKDEpIEZpcnN0LCBpbmRleGVk
IHByb3BlcnRpZXMuCiAgICAgLy8gSGFuZCBvZmYgYWxsIGluZGV4ZWQgYWNjZXNzIHRvIGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgsIHdoaWNoIHN1cHBvcnRzIHRoZSBpbmRleGVkIGdldHRlci4K
LSAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCA9IHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgo
b2JqZWN0LCBzdGF0ZSwgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaWN0aW9uYXJ5LmgKaW5kZXggMDhjMTQ5YTU4MTc0YjNiYTRjMzJiM2E4ODczY2Nh
N2U5OGE5ZjY2OC4uZjY1Nzg4MzIyMjU2YmM4NzE4NzBkMGIwZmZhZjVkZjhjZjMzZDgzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKQEAgLTEwNSwxMCArMTA1
LDEwIEBAIGNsYXNzIEpTRGljdGlvbmFyeSB7CiAgICAgR2V0UHJvcGVydHlSZXN1bHQgdHJ5R2V0
UHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUmKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE9wdGlvbmFs
PFQ+JiByZXN1bHQpCisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRl
KiBleGVjU3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgc3RkOjpvcHRpb25hbDxUPiYgcmVzdWx0
KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IE51bGxvcHQ7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKaW5kZXggNDNmZjgyZTNkNmRhZmZjNGVkOTkyZGI1
OGM3ZDAxMmY1OWYyMTU4OS4uNjlkODcyN2I3NDA5ODI3NjI1ZTUwZmEyMzlmYWUxYWU5ZDViY2Zh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCkBAIC03
MSw3ICs3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNGaWxl
KEV4ZWNTdGF0ZSYgZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIFN0cmluZyBub3JtYWxpemVkVHlwZTsKLSAgICBPcHRpb25hbDxp
bnQ2NF90PiBsYXN0TW9kaWZpZWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBsYXN0TW9k
aWZpZWQ7CiAKICAgICBhcmcgPSBleGVjLmFyZ3VtZW50KDIpOwogICAgIGlmICghYXJnLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNmQ3M2YxOGI2ODJkYzA0N2E3
YWNiY2E5ZmQ1ZjE5Y2FiNzNmM2Y5OC4uZjk0MjY2YmUyMTczMDU1ODJhMGI4Yzk0ZDE1YjkxNTYy
MTQ2YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuYWxsKDxpbmRleD4pIGV0Yy4K
ICAgICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KCpzdHJpbmcuaW1wbCgpKSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleCgqc3RyaW5nLmltcGwoKSkpCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3Qo
KSwgY29sbGVjdGlvbi5pdGVtKGluZGV4LnZhbHVlKCkpKSk7CiAKICAgICAgICAgLy8gU3VwcG9y
dCBmb3IgZG9jdW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBldGMuCkBAIC03OSw3ICs3OSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gVGhlIHNlY29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGlu
ZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQKICAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KCpleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5p
bXBsKCkpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleCgqZXhlYy0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYykuaW1wbCgpKSkgewogICAg
ICAgICBpZiAoYXV0byogaXRlbSA9IGNvbGxlY3Rpb24ubmFtZWRJdGVtV2l0aEluZGV4KHN0cmlu
ZywgaW5kZXgudmFsdWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgKml0ZW0pKTsKICAgICB9CkBA
IC0xMTIsNyArMTEyLDcgQEAgSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBh
cmd1bWVudCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7
Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50
LmltcGwoKSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleCgqYXJndW1lbnQuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9i
YWxPYmplY3QoKSwgd3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgIHJldHVybiBu
YW1lZEl0ZW1zKHN0YXRlLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgYXJn
dW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNzRlM2ViM2Q2NGU4MjY2OTRmMzZjM2M1
NGQzYjg2NTMwZGNkODJkYS4uZDFjZmI3OWVjMzdkMzYyNWE0YTYzMjUyMDBiYjE4OWFmZWRjMTk2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxl
bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2Fu
dmFzRWxlbWVudEN1c3RvbS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTSFRNTENh
bnZhc0VsZW1lbnQ6OnRvRGF0YVVSTChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGF1dG8gdHlwZSA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50
KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAK
LSAgICBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHk7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHF1YWxpdHk7CiAgICAgYXV0byBxdWFsaXR5VmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgxKTsKICAg
ICBpZiAocXVhbGl0eVZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgIHF1YWxpdHkgPSBxdWFsaXR5
VmFsdWUudG9OdW1iZXIoJnN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwODJiMWZhZDJiZmYwN2ZmOWIyOTc3NjRj
NDhlZDM4NjcxOGVkOTguLmQ2OWVkNzZmODE5ZmVlNTAzZDZlMmQxOWYzNjEwMjliNDRhOTNhMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9y
LmNwcApAQCAtNTgsOCArNTgsOCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTSW1hZ2VD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgLy8gYWRkZWQgdG8g
dGhlIHdpbmRvdyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhhdCBKU0RvY3VtZW50
Ojp2aXNpdAogICAgIC8vIHdpbGwgYmUgY2FsbGVkLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBpbWFn
ZSBlbGVtZW50IHRvIGJlIG1hcmtlZCBpZiBuZWNlc3NhcnkuCiAgICAgdG9KUyhzdGF0ZSwganND
b25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksICpkb2N1bWVudCk7Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHdpZHRoOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQ7CisgICAgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVp
Z2h0OwogICAgIGlmIChzdGF0ZS0+YXJndW1lbnRDb3VudCgpID4gMCkgewogICAgICAgICB3aWR0
aCA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihzdGF0ZSk7CiAgICAgICAg
IGlmIChzdGF0ZS0+YXJndW1lbnRDb3VudCgpID4gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAppbmRleCBkZjdlMTg0M2RiYmRi
MTRiNzI1OThiNzZlMTViYTgzMzI0YWY0ZDZjLi4zNTI5NjlmZTg5M2E0ODYwZDA2Mzk5NmM2Y2E0
NWE4Njk3N2EwNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYURldmljZXNDdXN0b20uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyB2b2lkIGluaXRp
YWxpemVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoU3RyaW5nQ29uc3RyYWludCYgY29uc3RyYWlu
dCwgdm9pCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gY3Jl
YXRlU3RyaW5nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWlu
dFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUsIENvbnN0
cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nQ29uc3RyYWludD4gY3JlYXRlU3RyaW5nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFp
bnRUeXBlIHR5cGUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQogewogICAg
IGF1dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQobmFtZSwgdHlwZSk7CiAKQEAgLTg1
LDcgKzg1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmlu
Z0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWEKIAogICAgICAgICBpZiAoY29uc3Ry
YWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0Nv
bnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9u
YXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBh
aXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOwpAQCAtOTgsNyArOTgsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlU3RyaW5nQ29uc3RyYWludChjb25z
dCBEaWN0aW9uYXJ5JiBtZWRpYQogCiAgICAgICAgIGlmIChjb25zdHJhaW50LmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdu
b3Jpbmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGFycmF5IHZhbHVlIHNpbmNlIGl0IGlz
IGVtcHR5LiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKQEAgLTExNywxMCArMTE3LDEwIEBAIHN0YXRp
YyBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0
IERpY3Rpb25hcnkmIG1lZGlhCiAKICAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAg
ICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5n
IGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNl
cXVlbmNlIG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rp
b25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlh
Q29uc3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNv
bnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBDb25zdHJhaW50U2V0VHlw
ZSBjb25zdHJhaW50U2V0VHlwZSkKIHsKICAgICBhdXRvIGNvbnN0cmFpbnQgPSBCb29sZWFuQ29u
c3RyYWludChuYW1lLCB0eXBlKTsKIApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBPcHRpb25h
bDxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlv
bmFyeSYgbWVkCiAKICAgICAgICAgaWYgKGNvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBMT0coTWVkaWEsICJjcmVhdGVCb29sZWFuQ29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9v
bGVhbiBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBu
byB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50
KTsKQEAgLTE1NiwxMCArMTU2LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxCb29sZWFuQ29uc3RyYWlu
dD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkCiAKICAgICAv
LyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVh
bkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHNpbmNlIGl0
IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgp
LmRhdGEoKSk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZURvdWJsZUNvbnN0
cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBDb25zdHJhaW50U2V0VHlwZSBj
b25zdHJhaW50U2V0VHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+
IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0
cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBD
b25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKIHsKICAgICBhdXRvIGNvbnN0cmFp
bnQgPSBEb3VibGVDb25zdHJhaW50KG5hbWUsIHR5cGUpOwogCkBAIC0xODQsNyArMTg0LDcgQEAg
c3RhdGljIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQo
Y29uc3QgRGljdGlvbmFyeSYgbWVkaWEKIAogICAgICAgICBpZiAoY29uc3RyYWludC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoKSAt
IGlnbm9yaW5nIGRvdWJsZSBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNp
bmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUu
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV1RGTW92
ZShjb25zdHJhaW50KTsKQEAgLTIwMywxMCArMjAzLDEwIEBAIHN0YXRpYyBPcHRpb25hbDxEb3Vi
bGVDb25zdHJhaW50PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1l
ZGlhCiAKICAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAgICAgTE9HKE1lZGlhLCAi
Y3JlYXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVz
JyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBjcmVhdGVJbnRD
b25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWludFNldFR5
cGUgY29uc3RyYWludFNldFR5cGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50
PiBjcmVhdGVJbnRDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJh
aW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgQ29u
c3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCiB7CiAgICAgYXV0byBjb25zdHJhaW50
ID0gSW50Q29uc3RyYWludChuYW1lLCB0eXBlKTsKIApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBjcmVhdGVJbnRDb25zdHJhaW50KGNvbnN0IERpY3Rp
b25hcnkmIG1lZGlhVHJhY2tDCiAKICAgICAgICAgaWYgKGNvbnN0cmFpbnQuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVJbnRDb25zdHJhaW50KCkgLSBpZ25vcmlu
ZyBsb25nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFz
IG5vIHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFp
bnQpOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBj
cmVhdGVJbnRDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDCiAKICAgICAv
LyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAgICAgTE9HKE1lZGlhLCAiY3JlYXRlSW50Q29u
c3RyYWludCgpIC0gaWdub3JpbmcgbG9uZyBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5l
aXRoZXIgYSBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBz
dGF0aWMgdm9pZCBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KGNvbnN0IERpY3Rp
b25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwJiBtYXAsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRT
ZXRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4IDdhYjA2OWE1OWUxNzRiYjA3MDBmNmUwNTI0
YTZiOTMzZjZmMmJlZTQuLjc1NDFhNzc4MzFjYmZmOGNiOTVlMTFjZTNhMmJhOTA5ZDQ1YWI1MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1
YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0aWMgdm9pZCBpbXBv
cnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgQ3J5cHRv
T3BlcmF0aQogCiAgICAgQVNTRVJUKGtleVNlcmlhbGl6YXRpb24pOwogCi0gICAgT3B0aW9uYWw8
Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlZFJlc3VsdCA9IGtleVNlcmlhbGl6YXRpb24t
PnJlY29uY2lsZUFsZ29yaXRobShhbGdvcml0aG0uZ2V0KCksIHBhcmFtZXRlcnMuZ2V0KCkpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlZFJlc3VsdCA9
IGtleVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUFsZ29yaXRobShhbGdvcml0aG0uZ2V0KCksIHBh
cmFtZXRlcnMuZ2V0KCkpOwogICAgIGlmICghcmVjb25jaWxlZFJlc3VsdCkgewogICAgICAgICBp
ZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBbGdvcml0aG0gc3BlY2lmaWVkIGluIGtleSBpcyBub3Qg
Y29tcGF0aWJsZSB3aXRoIG9uZSBwYXNzZWQgdG8gaW1wb3J0S2V5IGFzIGFyZ3VtZW50IikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCAyODczYmMyYjY2OGExZGMxMjY5MDNjMWU0ZTY0ZDRmMjc1ODNhNGJhLi5lOWM0ZWRhZTU4ZjQx
NzRkZjU3Y2Y2MzM4ZDM5YWY2NGU2MmU0ZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKIAogSlNWYWx1ZSBTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewotICAgIFVzZXJHZXN0
dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFs
PFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogTnVs
bG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVz
ZXJHZXN0dXJlID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgU2NyaXB0U291cmNlQ29k
ZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CiAKICAgICBp
ZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgp
KQpAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNj
cmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNvCiAKIEpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQog
ewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogTnVsbG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdl
c3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAg
cmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIG1fZnJhbWUuZG9j
dW1lbnQoKS0+dXJsKCkpLCBleGNlcHRpb25EZXRhaWxzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzNTQ5MGQw
MmMyZGEwYmUyNTBkNmZlZWE1OWZmYmU3MGI1MzUwZTU5Li4yZWNiMDJhOGZiNjM1N2ZkNDg5MGZi
OTZhMDA5ODQ2ZDViMzA2NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzc2LDcgKzM3Niw3IEBAIHN1YiBHZW5lcmF0
ZUdldE93blByb3BlcnR5U2xvdEJvZHkKICAgICB9OwogCiAgICAgaWYgKCRpbmRleGVkR2V0dGVy
RnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBP
cHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KTtcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSk7XG4iKTsKIAogICAgICAgICAjIElmIHRoZSBpdGVtIGZ1bmN0aW9uIHJldHVybnMgYSBzdHJp
bmcgdGhlbiB3ZSBsZXQgdGhlIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXMgaGFuZGxlIHRoZSBj
YXNlcwogICAgICAgICAjIHdoZXJlIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuCkBAIC05Mzcs
NyArOTM3LDcgQEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQK
ICAgICAjIEZJWE1FOiBDaGFuZ2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBFeGVjU3RhdGUmLgog
ICAgICMgRklYTUU6IENvbnNpZGVyIHVzaW5nIHRvU3RyaW5nT3JOdWxsIHRvIG1ha2UgZXhjZXB0
aW9uIGNoZWNraW5nIGZhc3Rlci4KICAgICAjIEZJWE1FOiBDb25zaWRlciBmaW5kaW5nIGEgbW9y
ZSBlZmZpY2llbnQgd2F5IHRvIG1hdGNoIGFnYWluc3QgYWxsIHRoZSBzdHJpbmdzIHF1aWNrbHku
Ci0gICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBPcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZUVu
dW1lcmF0aW9uPCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4i
OworICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDwkY2xhc3NOYW1lPiBw
YXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpXG4iOwogICAgICRyZXN1bHQgLj0gIntcbiI7CiAgICAgJHJlc3VsdCAuPSAiICAgIGF1dG8g
c3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpO1xuIjsKICAgICBmb3JlYWNo
IG15ICR2YWx1ZSAoQHskZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTk0OSw3ICs5NDksNyBA
QCBzdWIgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICB9
CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6JHtlbnVt
ZXJhdGlvblZhbHVlTmFtZX07XG4iOwogICAgIH0KLSAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJu
IE51bGxvcHQ7XG4iOworICAgICRyZXN1bHQgLj0gIiAgICByZXR1cm4gc3RkOjpudWxsb3B0O1xu
IjsKICAgICAkcmVzdWx0IC49ICJ9XG5cbiI7CiAKICAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+
ICRjbGFzc05hbWUgY29udmVydEVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpXG4iOwpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgc3ViIEdlbmVyYXRl
RW51bWVyYXRpb25IZWFkZXJDb250ZW50CiAgICAgbXkgJHJlc3VsdCA9ICIiOwogICAgICRyZXN1
bHQgLj0gIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVt
ZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCAkY2xhc3NOYW1lKTtcblxuIjsKLSAgICAkcmVz
dWx0IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlRW51bWVyYXRpb248
JGNsYXNzTmFtZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpO1xuIjsKKyAgICAkcmVz
dWx0IC49ICJ0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2VFbnVtZXJh
dGlvbjwkY2xhc3NOYW1lPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7XG4iOwogICAg
ICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gJGNsYXNzTmFtZSBjb252ZXJ0RW51bWVyYXRpb248JGNs
YXNzTmFtZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpO1xuIjsKICAgICAkcmVzdWx0
IC49ICJ0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8JGNs
YXNzTmFtZT4oKTtcblxuIjsKICAgICAkcmVzdWx0IC49ICIjZW5kaWZcblxuIiBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBzdWIgR2VuZXJhdGVEZWZhdWx0VmFs
dWUKICAgICB9CiAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7CiAgICAgICAgIGlm
ICgkdHlwZS0+aXNVbmlvbikgewotICAgICAgICAgICAgcmV0dXJuICJOdWxsb3B0IiBpZiAkdHlw
ZS0+aXNOdWxsYWJsZTsKKyAgICAgICAgICAgIHJldHVybiAic3RkOjpudWxsb3B0IiBpZiAkdHlw
ZS0+aXNOdWxsYWJsZTsKIAogICAgICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRp
bnRlcmZhY2UsICR0eXBlKTsKICAgICAgICAgICAgIHJldHVybiAiY29udmVydDwke0lETFR5cGV9
PihzdGF0ZSwganNOdWxsKCkpOyI7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdWIgR2VuZXJhdGVE
ZWZhdWx0VmFsdWUKICAgICAgICAgcmV0dXJuICJqc051bGwoKSIgaWYgJHR5cGUtPm5hbWUgZXEg
ImFueSI7CiAgICAgICAgIHJldHVybiAibnVsbHB0ciIgaWYgJGNvZGVHZW5lcmF0b3ItPklzV3Jh
cHBlclR5cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBl
KTsKICAgICAgICAgcmV0dXJuICJTdHJpbmcoKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5n
VHlwZSgkdHlwZSk7Ci0gICAgICAgIHJldHVybiAiTnVsbG9wdCI7CisgICAgICAgIHJldHVybiAi
c3RkOjpudWxsb3B0IjsKICAgICB9CiAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIltdIikgewog
ICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUp
OwpAQCAtMzM3OCw3ICszMzc4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIp
OwogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bUluZGV4ZWRTZXR0ZXJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KSkge1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhpc09i
amVjdC0+aW5kZXhTZXR0ZXIoc3RhdGUsIGluZGV4LnZhbHVlKCksIHZhbHVlKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtNDM4
MCw3ICs0MzgwLDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICBt
eSAkYXJndW1lbnRMb29rdXBNZXRob2QgPSAkYXJndW1lbnQtPmlzT3B0aW9uYWwgPyAiYXJndW1l
bnQiIDogInVuY2hlY2tlZEFyZ3VtZW50IjsKIAogICAgICAgICAgICAgaWYgKCRhcmd1bWVudC0+
aXNPcHRpb25hbCAmJiAhZGVmaW5lZCgkYXJndW1lbnQtPmRlZmF1bHQpKSB7Ci0gICAgICAgICAg
ICAgICAgJG5hdGl2ZVR5cGUgPSAiT3B0aW9uYWw8JGNsYXNzTmFtZT4iOworICAgICAgICAgICAg
ICAgICRuYXRpdmVUeXBlID0gInN0ZDo6b3B0aW9uYWw8JGNsYXNzTmFtZT4iOwogICAgICAgICAg
ICAgICAgICRvcHRpb25hbFZhbHVlID0gJG5hbWU7CiAgICAgICAgICAgICAgICAgJGRlZmluZU9w
dGlvbmFsVmFsdWUgPSAkbmFtZTsKICAgICAgICAgICAgIH0KQEAgLTQ0NTEsOCArNDQ1MSw4IEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICAkb3V0ZXIg
PSAic3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJbmRleCkuaXNVbmRlZmlu
ZWQoKSA/ICRkZWZhdWx0VmFsdWUgOiAiOwogICAgICAgICAgICAgICAgICAgICAkaW5uZXIgPSAi
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4KSI7CiAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVudC0+
ZGVmYXVsdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgIyBVc2UgV1RGOjpPcHRpb25hbDw+KCkg
Zm9yIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGFyZSBtaXNzaW5nIG9yIHVuZGVmaW5lZCBhbmQg
dGhhdCBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgaW4gdGhlIElETC4KLSAgICAgICAgICAg
ICAgICAgICAgJG91dGVyID0gInN0YXRlLT4kYXJndW1lbnRMb29rdXBNZXRob2QoJGFyZ3VtZW50
SW5kZXgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDwkbmF0aXZlVHlwZT4oKSA6ICI7CisgICAg
ICAgICAgICAgICAgICAgICMgVXNlIHN0ZDo6b3B0aW9uYWw8PigpIGZvciBvcHRpb25hbCBhcmd1
bWVudHMgdGhhdCBhcmUgbWlzc2luZyBvciB1bmRlZmluZWQgYW5kIHRoYXQgZG8gbm90IGhhdmUg
YSBkZWZhdWx0IHZhbHVlIGluIHRoZSBJREwuCisgICAgICAgICAgICAgICAgICAgICRvdXRlciA9
ICJzdGF0ZS0+JGFyZ3VtZW50TG9va3VwTWV0aG9kKCRhcmd1bWVudEluZGV4KS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDwkbmF0aXZlVHlwZT4oKSA6ICI7CiAgICAgICAgICAgICAgICAg
ICAgICRpbm5lciA9ICJzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpIjsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAi
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDI0NTBkZDk1YTA0MzNiNWNlNDkzMWRkNGMxMDIy
MWFjMzc4YWJjM2IuLmJjMzZjNDIwNmIxNGViNWUxZGE2OTUxNWFiMTY1NmYxNTBiOTEyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0
NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSlNGbG9hdDY0QXJy
YXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlCiB7CiAgICAgSlNGbG9hdDY0QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9h
dDY0QXJyYXkqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIGluZGV4LnZhbHVlKCkgPCBz
dGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkg
ewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmdldEJ5SW5k
ZXgoZXhlYywgaW5kZXgudmFsdWUoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Niw3
ICsxODYsNyBAQCBib29sIEpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogewogICAgIEpTRmxvYXQ2NEFycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4ob2JqZWN0KTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
IChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgc3RhdGljX2Nhc3Q8RmxvYXQ2NEFycmF5Kj4odGhp
c09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNj
cmlwdG9yKHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSksIERvbnRE
ZWxldGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEpT
RmxvYXQ2NEFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbQogewogICAgIEpTRmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRmxvYXQ2NEFycmF5Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgdGhpc09i
amVjdC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggYmQ2ZDk5ZmI5Yjdm
MzFmYjNiY2E2NjZmNWRhNDIzYWNjMmZlYWI4Yi4uNmRjNDMyZTE5ODI4YmQyM2UxYzExZmZlNjRl
MTVjNmNhOWZmYWMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xMjIsNyArMTIy
LDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFAKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IG9w
dGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25h
bEluZGV4LnZhbHVlKCk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBSZWFkT25seTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggMDJjZDU1OGE0YmViYjllNDAyYzIyNzk2ZDM4MjEwMWNhNTU1MGNjMy4u
MGYwNDUxNGQwNWU1MjE0MzFkYjU2YTgzMWIzNDBlZWZlMDAwNmYwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTEwNiw3ICsxMDYsNyBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25U
b0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RPYmo6OkVudW1UeXBlCiAgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmco
JnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUuaXNFbXB0eSgpKQpAQCAtMTE3LDcgKzExNyw3
IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRp
b248VGVzdE9iajo6RW51bVR5cGU+KEV4ZWNTCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVt
VHlwZTo6RW51bVZhbHVlMjsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTMiKQog
ICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTM7Ci0gICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0
T2JqOjpFbnVtVHlwZSBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0xNTMsNyArMTUzLDcgQEAgdGVtcGxhdGU8
PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0
T2JqOjpPcHRpb25hbAogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
T3B0aW9uYWw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0
ZDo6b3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
T3B0aW9uYWw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1Zh
bHVlLmlzRW1wdHkoKSkKQEAgLTE2NCw3ICsxNjQsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihFeGVj
UwogICAgICAgICByZXR1cm4gVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUyOwogICAg
IGlmIChzdHJpbmdWYWx1ZSA9PSAiT3B0aW9uYWxWYWx1ZTMiKQogICAgICAgICByZXR1cm4gVGVz
dE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzOwotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6T3B0aW9uYWwg
Y29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQpAQCAtMTk2LDE0ICsxOTYsMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBBbHRlcm5hdGVFbnVtTmFt
ZQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2Fz
dDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8
QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8
QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9
IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVt
VmFsdWUxIikKICAgICAgICAgcmV0dXJuIEFsdGVybmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUxOwog
ICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVlMiIpCiAgICAgICAgIHJldHVybiBBbHRl
cm5hdGVFbnVtTmFtZTo6RW51bVZhbHVlMjsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IEFsdGVybmF0ZUVudW1OYW1lIGNvbnZl
cnRFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKQEAgLTIzNSwxMiArMjM1LDEyIEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZl
cnRFbnVtZXJhdGlvblRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgVGVzdE9iajo6RW51bUEgZW51CiAg
ICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNp
emVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0
T2JqOjpFbnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpF
bnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJp
bmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkEiKQogICAgICAgICByZXR1cm4g
VGVzdE9iajo6RW51bUE6OkE7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQSBjb252ZXJ0RW51bWVyYXRp
b248VGVzdE9iajo6RW51bUE+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0y
NzQsMTIgKzI3NCwxMiBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25U
b0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RPYmo6OkVudW1CIGVudQogICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBh
cnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51
bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1C
OjpCOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUIgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkVu
dW1CPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzEzLDEyICszMTMsMTIg
QEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUm
IHN0YXRlLCBUZXN0T2JqOjpFbnVtQyBlbnUKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
JnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwog
fQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OkVudW1DPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1DPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8g
c3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdW
YWx1ZSA9PSAiQyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtQzo6QzsKLSAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFRl
c3RPYmo6OkVudW1DIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4oRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTM1MiwxNCArMzUyLDE0IEBAIHRlbXBsYXRlPD4g
SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgVGVzdE9i
ajo6S2luZCBlbnVtCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVz
W3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9u
YWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1
ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAicXVpY2siKQog
ICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6UXVpY2s7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJkZWFkIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OktpbmQ6OkRlYWQ7Ci0gICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBU
ZXN0T2JqOjpLaW5kIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzkxLDE0ICszOTEsMTQgQEAgdGVtcGxhdGU8PiBK
U1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0T2Jq
OjpTaXplIGVudW0KICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNb
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+
IE9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25h
bDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVl
LnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJzbWFsbCIpCiAg
ICAgICAgIHJldHVybiBUZXN0T2JqOjpTaXplOjpTbWFsbDsKICAgICBpZiAoc3RyaW5nVmFsdWUg
PT0gIm11Y2gtbXVjaC1sYXJnZXIiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6U2l6ZTo6TXVj
aE11Y2hMYXJnZXI7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpTaXplIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0
T2JqOjpTaXplPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtNDMwLDE0ICs0
MzAsMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVj
U3RhdGUmIHN0YXRlLCBUZXN0T2JqOjpDb25maWRlbmMKICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBhcnNl
RW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5n
KCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJoaWdoIikKICAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJraW5k
YS1sb3ciKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6Q29uZmlkZW5jZTo6S2luZGFMb3c7Ci0g
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxh
dGU8PiBUZXN0T2JqOjpDb25maWRlbmNlIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25m
aWRlbmNlPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtNTU1LDcgKzU1NSw3
IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0
T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmCiAgICAgICAgIHJlc3VsdC5udWxsYWJsZUludGVn
ZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMTG9uZz4+KHN0YXRlLCBudWxs
YWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQubnVsbGFibGVJ
bnRlZ2VyV2l0aERlZmF1bHQgPSBOdWxsb3B0OworICAgICAgICByZXN1bHQubnVsbGFibGVJbnRl
Z2VyV2l0aERlZmF1bHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgSlNWYWx1ZSBudWxsYWJsZU5vZGVW
YWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJudWxsYWJsZU5vZGUiKSk7CiAg
ICAgaWYgKCFudWxsYWJsZU5vZGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3Vs
dC5udWxsYWJsZU5vZGUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+
KHN0YXRlLCBudWxsYWJsZU5vZGVWYWx1ZSk7CkBAIC01NzMsNyArNTczLDcgQEAgdGVtcGxhdGU8
PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnk+KEV4ZWNTdGF0ZSYKICAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25NZW1iZXIgPSBjb252
ZXJ0PElETE51bGxhYmxlPElETFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2RlPj4+Pihz
dGF0ZSwgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQubnVsbGFi
bGVVbmlvbk1lbWJlciA9IE51bGxvcHQ7CisgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uTWVt
YmVyID0gc3RkOjpudWxsb3B0OwogICAgIEpTVmFsdWUgcmVzdHJpY3RlZERvdWJsZVZhbHVlID0g
aXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlc3RyaWN0ZWREb3VibGUiKSk7CiAgICAg
aWYgKCFyZXN0cmljdGVkRG91YmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1
bHQucmVzdHJpY3RlZERvdWJsZSA9IGNvbnZlcnQ8SURMRG91YmxlPihzdGF0ZSwgcmVzdHJpY3Rl
ZERvdWJsZVZhbHVlKTsKQEAgLTE3ODEsNyArMTc4MSw3IEBAIGJvb2wgSlNUZXN0T2JqOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVy
dHlOCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChvcHRpb25hbEluZGV4KSB7CiAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzID0gUmVhZE9ubHk7CkBAIC01MjI0LDcgKzUyMjQsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxFbgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51bUFyZ1ZhbHVlID0gc3RhdGUt
PmFyZ3VtZW50KDApOwotICAgIE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBlbnVtQXJnOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IGVudW1Bcmc7CiAgICAgaWYgKCFl
bnVtQXJnVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICBlbnVtQXJnID0gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oKnN0YXRlLCBlbnVtQXJnVmFsdWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAt
NTgwOSw3ICs1ODA5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXIKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25D
b25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExv
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhX
VEZNb3ZlKG9wdCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC01ODQ5LDcgKzU4NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbm9uT3B0ID0gY29udmVydDxJRExMb25nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25m
aWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRl
ZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29uZmln
dXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0
aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01ODcxLDkgKzU4NzEsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uT3B0aW9uYQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
bm9uT3B0ID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBv
cHQxID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90
PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgx
KSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0
MSA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQz
Ml90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBv
cHQyID0gc3RhdGUtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90
PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgy
KSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0
MiA9IHN0YXRlLT5hcmd1bWVudCgyKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQz
Ml90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgyKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5t
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQp
LCBXVEZNb3ZlKG9wdDEpLCBXVEZNb3ZlKG9wdDIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjEyNSw3ICs2MTI1LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTG8KICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1
dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxp
bnQ2NF90PigpIDogY29udmVydDxJRExMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAg
ICBhdXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpv
cHRpb25hbDxpbnQ2NF90PigpIDogY29udmVydDxJRExMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9y
bWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjE2MSw3
ICs2MTYxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW4KICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDx1aW50NjRfdD4oKSA6IGNvbnZlcnQ8SURMVW5zaWdu
ZWRMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBhdXRvIG51bWJlciA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDx1aW50NjRfdD4oKSA6
IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhXVEZNb3ZlKG51bWJlcikpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MTk3LDcgKzYx
OTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiBjb252ZXJ0PElETFNlcXVl
bmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
KyAgICBhdXRvIGFycmF5ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PigpIDogY29udmVydDxJRExTZXF1ZW5jZTxJRExET01T
dHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoYXJyYXkpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjIzMyw3ICs2MjMzLDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm8KICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9u
YWw8Ym9vbD4oKSA6IGNvbnZlcnQ8SURMQm9vbGVhbj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOworICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxib29sPigpIDogY29udmVydDxJRExCb29sZWFuPigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW4oV1RGTW92ZShiKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTY2MDYsNyArNjYwNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQ2FsCiAg
ICAgICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iakFyZyIsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9iaiIpOwogICAgIH0KLSAgICBhdXRvIGxv
bmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMy
X3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBs
b25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjkyOSw3ICs2
OTI5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICAgICAgaWYgKFVOTElLRUxZKCFv
YmpBcmcpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlciIsICJUZXN0T2JqIik7CiAgICAgfQotICAgIGF1dG8gbG9u
Z0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJf
dD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MSksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBhdXRvIGxv
bmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8
aW50MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKG9iakFyZyks
IFdURk1vdmUobG9uZ0FyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC03MzQ3LDcgKzczNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbAogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBhdXRvIGFy
ZyA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4o
KSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCks
IEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBhdXRvIGFyZyA9
IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQzMl90
PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTPElETExvbmc+KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKFdU
Rk1vdmUoYXJnKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTc5
MjcsNyArNzkyNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XCiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCku
aXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZp
Z3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBhID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZp
Z3VyYXRpb246Ok5vcm1hbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9u
YWxJbnRBcmd1bWVudChXVEZNb3ZlKGEpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDY0MTg3NzUzNmEyMzgw
ZjBiNzM0MTZlOGU5YjkwMmQzMzBjNmJlYTkuLjMxZGM3MzgzMjg4MmFjOGIxM2Q2MDhjMDAzZWE3
MDZjM2QzMGRkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTEwOCwxOSArMTA4LDE5IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0T2JqPiB7CiB9OwogdGVtcGxhdGU8
PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwg
VGVzdE9iajo6RW51bVR5cGUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1U
eXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bVR5
cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bVR5cGUgY29udmVydEVudW1l
cmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9i
ajo6RW51bVR5cGU+KCk7CiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1l
cmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RPYmo6Ok9wdGlvbmFsKTsKIAotdGVtcGxh
dGU8PiBPcHRpb25hbDxUZXN0T2JqOjpPcHRpb25hbD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpPcHRpb25hbD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBz
dGQ6Om9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6
Ok9wdGlvbmFsPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRl
c3RPYmo6Ok9wdGlvbmFsIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4oSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6Ok9wdGlvbmFsPigpOwogCiB0ZW1wbGF0ZTw+
IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBB
bHRlcm5hdGVFbnVtTmFtZSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5h
bWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxBbHRlcm5hdGVFbnVtTmFt
ZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBBbHRlcm5hdGVFbnVtTmFtZSBjb252ZXJ0RW51bWVy
YXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsK
IHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxBbHRlcm5h
dGVFbnVtTmFtZT4oKTsKIApAQCAtMTI4LDcgKzEyOCw3IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hh
ciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxBbHRlcm5hdGVFbnVtTmFtZT4oKTsKIAogdGVt
cGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0
YXRlJiwgVGVzdE9iajo6RW51bUEpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVu
dW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBh
cnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTsKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUEgY29udmVydEVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1BPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNv
bnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUE+KCk7CiAK
QEAgLTEzOCw3ICsxMzgsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVy
YXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUE+KCk7CiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RPYmo6OkVudW1C
KTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQj4gcGFyc2VFbnVtZXJhdGlv
bjxUZXN0T2JqOjpFbnVtQj4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1CPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRl
c3RPYmo6OkVudW1CIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1CPigpOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAg
dGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6
OkVudW1CPigpOwogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlv
blRvSlMoSlNDOjpFeGVjU3RhdGUmLCBUZXN0T2JqOjpFbnVtQyk7CiAKLXRlbXBsYXRlPD4gT3B0
aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxU
ZXN0T2JqOjpFbnVtQz4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4oSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQyBjb252ZXJ0
RW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
KTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0
T2JqOjpFbnVtQz4oKTsKIApAQCAtMTU2LDE5ICsxNTYsMTkgQEAgdGVtcGxhdGU8PiBjb25zdCBj
aGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1DPigpOwogCiB0ZW1w
bGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3Rh
dGUmLCBUZXN0T2JqOjpLaW5kKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5k
PiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsK
IHRlbXBsYXRlPD4gVGVzdE9iajo6S2luZCBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6S2lu
ZD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFy
KiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OktpbmQ+KCk7CiAKIHRlbXBsYXRl
PD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYs
IFRlc3RPYmo6OlNpemUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBh
cnNlRW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVy
YXRpb248VGVzdE9iajo6U2l6ZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8PiBUZXN0T2JqOjpTaXplIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6U2l6ZT4oKTsKIAogdGVtcGxhdGU8PiBK
U0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVz
dE9iajo6Q29uZmlkZW5jZSk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q29uZmlk
ZW5jZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6Q29u
ZmlkZW5jZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkNvbmZpZGVuY2UgY29u
dmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlczxUZXN0T2JqOjpDb25maWRlbmNlPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5LmNwcAppbmRleCAxYTIzZTkzYTA0YzA4NWI1MjdmZWQzZmY4NGQ0ZjFjYWE0
ZTk3ZDgzLi42OGFmYmQ2OWE0YmRhZDcxYzljYzBkNDk0ZjNhNjcxODM3YjIyZTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRh
bG9uZURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKQEAgLTQzLDE0ICs0MywxNCBA
QCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYg
c3RhdGUsIFRlc3RTdGFuZGFsb25lRGljdAogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgm
c3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9
CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5T
dGFuZGFsb25lRGljdGlvbmFyeUZpbGU+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVE
aWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+IHBhcnNlRW51bWVy
YXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFy
eUZpbGU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJlbnVtVmFsdWUxIikKICAgICAgICAgcmV0dXJuIFRlc3RTdGFuZGFsb25lRGljdGlvbmFy
eTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlOjpFbnVtVmFsdWUxOwogICAgIGlmIChz
dHJpbmdWYWx1ZSA9PSAiZW51bVZhbHVlMiIpCiAgICAgICAgIHJldHVybiBUZXN0U3RhbmRhbG9u
ZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZTo6RW51bVZhbHVlMjsK
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1w
bGF0ZTw+IFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25h
cnlGaWxlIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1J
blN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmgKaW5kZXggZmFmMTEwODU4
OWNiM2Y2MDlmMjAxN2ZkYWQxNzkwNTQwODQxNTM0MS4uMzJhODFiNjYyMjdkNjY2YTI4YzBhZDY2
YjNlNGYzYzRhNzBhNTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5
LmgKQEAgLTMxLDcgKzMxLDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVy
dERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0M6OkV4ZWNTdGEKIAogdGVtcGxhdGU8
PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwg
VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUp
OwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUlu
U3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25l
RGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPihKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+IHBhcnNlRW51bWVy
YXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFy
eUZpbGU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUgY29udmVy
dEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURp
Y3Rpb25hcnlGaWxlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+
IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25l
RW51bWVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKaW5kZXggZDQzNzQ2MjAyZjI5MGU4NDFh
NzUzM2FiMGRhZDE4NTBkYzZjMjgxMS4uYTE4ODZhN2QxOTM1YzY5NWQ3NzQ5ZTUxNzJmOWQyOWMz
YzI4MWI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAK
QEAgLTQzLDE0ICs0MywxNCBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRp
b25Ub0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RTdGFuZGFsb25lRW51bQogICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1l
cmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVF
bnVtZXJhdGlvbj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFs
PFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxv
bmVFbnVtZXJhdGlvbj4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3Ry
aW5nVmFsdWUgPT0gImVudW1WYWx1ZTEiKQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVF
bnVtZXJhdGlvbjo6RW51bVZhbHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1WYWx1
ZTIiKQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbjo6RW51bVZhbHVl
MjsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0
ZW1wbGF0ZTw+IFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24gY29udmVydEVudW1lcmF0aW9uPFRl
c3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmgKaW5kZXggOGFhYjg5Yjk0
M2U3N2I5NjFiMzJhMTdkNjhlYzA5MzI0YzNiOGM1Mi4uODA2MjJhZDMwM2RmZDRjN2E0MmQ5MWVj
YzNhYTYwMzVkOTcyYjI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24uaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPD4g
SlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRl
c3RTdGFuZGFsb25lRW51bWVyYXRpb24pOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFu
ZGFsb25lRW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJh
dGlvbj4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9w
dGlvbmFsPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbj4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8PiBUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0
U3RhbmRhbG9uZUVudW1lcmF0aW9uPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0
ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5k
YWxvbmVFbnVtZXJhdGlvbj4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggMzI4N2E4Y2Nh
YTE5NTBiNjI0NTFlODg5NjkyNmMxNmUwZWE3OTY1Ni4uZjBlMmI2ZjcwNjY5YTQ3ZDMwODQ2NzI5
ODk4NGQxZGE0MTEzMGI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC01MjYsNyArNTI2LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TZXRTaGFkb3dDYWxsZXIKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gY29sb3IgPSBzdGF0ZS0+YXJndW1l
bnQoMykuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVydDxJRExET01TdHJpbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDMpLCBTdHJpbmdDb252ZXJzaW9uQ29uZmln
dXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gYWxwaGEgPSBzdGF0ZS0+YXJndW1lbnQoNCkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPGZsb2F0PigpIDogY29udmVydDxJRExVbnJlc3RyaWN0ZWRG
bG9hdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoNCkpOworICAgIGF1dG8gYWxw
aGEgPSBzdGF0ZS0+YXJndW1lbnQoNCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+KCkgOiBjb252ZXJ0PElETFVucmVzdHJpY3RlZEZsb2F0Pigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCg0KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLnNldFNoYWRvdyhXVEZNb3ZlKHdpZHRoKSwgV1RG
TW92ZShoZWlnaHQpLCBXVEZNb3ZlKGJsdXIpLCBXVEZNb3ZlKGNvbG9yKSwgV1RGTW92ZShhbHBo
YSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02Njgs
NyArNjY4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQ2EKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIGFyZzEgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZp
Z3VyYXRpb246OkNsYW1wKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gYXJnMiA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8dWludDY0X3Q+KCkgOiBjb252ZXJ0PElETFVuc2lnbmVkTG9u
Z0xvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBJbnRlZ2VyQ29udmVy
c2lvbkNvbmZpZ3VyYXRpb246OkNsYW1wKTsKKyAgICBhdXRvIGFyZzIgPSBzdGF0ZS0+YXJndW1l
bnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KCkgOiBjb252ZXJ0
PElETFVuc2lnbmVkTG9uZ0xvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
LCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OkNsYW1wKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwuZnVuY1dp
dGhDbGFtcChXVEZNb3ZlKGFyZzEpLCBXVEZNb3ZlKGFyZzIpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCmluZGV4IGQzMGE1ODViYjMzNTRlYzhlNDJkNGU4ZmFlMThmZGVjNTM1NTlkMmQuLmI4
Nzg4NzE4YzU4MTNhMWFjZDJjNjZjZGNmNzNjN2FjZTQyOGM3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBSdW50aW1lQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBp
ZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udERlbGV0ZSB8IERvbnRFbnVtLAog
ICAgICAgICAgICAgdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT52YWx1ZUF0KGV4ZWMs
IGluZGV4LnZhbHVlKCkpKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFJ1bnRpbWVBcnJheTo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQog
ICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0
KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICAKICAgICByZXR1cm4gSlNPYmplY3Q6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oCmluZGV4IGI1MTJk
NDk0Y2Y2ZGY5ZGNlZDA4MzMxNmE2Yjk2ZGIzZDJiMWI2NzIuLjgxMjVmOGJlOGI4YzEyNmFiNzMw
ZjEyNzFiOTlkNjM2NzZkN2ZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9LZXlTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0
b0tleVNlcmlhbGl6YXRpb24uaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBDcnlwdG9LZXlTZXJp
YWxpemF0aW9uIHsKICAgICB2aXJ0dWFsIH5DcnlwdG9LZXlTZXJpYWxpemF0aW9uKCkgeyB9CiAK
ICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHN1Z2dlc3RlZCBhbGdvcml0aG0gd2FzIG5vdCBjb21w
YXRpYmxlIHdpdGggb25lIHN0b3JlZCBpbiB0aGUgc2VyaWFsaXphdGlvbi4KLSAgICB2aXJ0dWFs
IE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9B
bGdvcml0aG0qLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25j
aWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkKikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY29uY2lsZVVzYWdl
cyhDcnlwdG9LZXlVc2FnZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb25jaWxl
RXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKaW5kZXggZWQxODZk
NzIyN2VjZTA3YjczMmUyMTU3ZTBjMTE2NzM4ZjJmNzZiZi4uMmE2NmQxOTQ3YWRlYzZlYTFkNmY3
ZDBkYzg4ZmYyN2FhYzM0YmQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMubGVuZ3Ro
LnZhbHVlT3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBleHRyYWN0YWJsZSwg
dXNhZ2VzKTsKKyAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQ
YXJhbWV0ZXJzLmxlbmd0aC52YWx1ZV9vcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZp
ZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJh
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9u
UmF3LmNwcAppbmRleCA2ZDNiOGM4NDU4OTliNWViZmYxMzAxOGU5YWYyYTdiMGU4NmVlMWI3Li43
Yjg1MjMxZWU3NjdjYzg3MGFmMjQxMmEzYmQzODVmOWI2YzVkZTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNw
cApAQCAtNDQsNyArNDQsNyBAQCBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Ojp+Q3J5cHRvS2V5
U2VyaWFsaXphdGlvblJhdygpCiB7CiB9CiAKLU9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+
IENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXc6OnJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdv
cml0aG0qIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqIHBh
cmFtZXRlcnMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IENyeXB0
b0tleVNlcmlhbGl6YXRpb25SYXc6OnJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0q
IGFsZ29yaXRobSwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqIHBhcmFtZXRl
cnMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENyeXB0b0FsZ29yaXRobVBhaXIgeyBhbGdvcml0aG0s
IHBhcmFtZXRlcnMgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaAppbmRleCBlZmEzY2QyYzAxZDlmMzVhMGU5MGMy
YTk5N2M0MTQ4MmQ3OGVhNTM2Li5kNDMzZjBmYjg5NmI1ZGU0ZTlmZmJmMzRkYWE5MWQxNjQ4MmIy
N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
U2VyaWFsaXphdGlvblJhdy5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIENyeXB0b0tleVNlcmlh
bGl6YXRpb25SYXcgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5U2VyaWFsaXphdGlvbiB7CiBwcml2
YXRlOgogICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYpOwogCi0gICAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlQWxn
b3JpdGhtKENyeXB0b0FsZ29yaXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1Q
YWlyPiByZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiwgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVjb25j
aWxlVXNhZ2VzKENyeXB0b0tleVVzYWdlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNv
bmNpbGVFeHRyYWN0YWJsZShib29sJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1IbWFjS2V5R2VuUGFy
YW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1I
bWFjS2V5R2VuUGFyYW1zLmgKaW5kZXggZTM3YThkNzBmMTFiNGZiOWU1NmY4YzkyZDBiYWJjYzRk
MjM4OWZiYi4uZDY3YzY3YTE0NzkxYWM0YTUxYjg0NzYzYTZlYTE3NGM4MjMyOGNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1h
Y0tleUdlblBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobUhtYWNLZXlHZW5QYXJhbXMuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBD
cnlwdG9BbGdvcml0aG1IbWFjS2V5R2VuUGFyYW1zIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMgewogICAgIC8vIEZJWE1FOiBDb25zaWRlciBtZXJnaW5nIGhhc2ggYW5k
IGhhc2hJZGVudGlmaWVyLgogICAgIEpTQzo6SlNWYWx1ZSBoYXNoOwogICAgIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaElkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgbG9u
Zz4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZz4gbGVuZ3RoOwogCiAg
ICAgQ2xhc3MgcGFyYW1ldGVyc0NsYXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2xhc3M6Okht
YWNLZXlHZW5QYXJhbXM7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCBh
NzU0MDFiZjUyYjhhNDU0MTJiNzE5YjQ5NGQyZmU1OWNkYTJjZGExLi4wMzNmYmMwOWZiMjgzZWRi
ZTc2ZWUyZTg3MGFmNzhiMDcyZDEyMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAK
QEAgLTEyNCwxMCArMTI0LDEwIEBAIGJvb2wgQ1NTRm9udEZhY2U6OnNldEZhbWlsaWVzKENTU1Zh
bHVlJiBmYW1pbHkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPEZvbnRUcmFpdHNN
YXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRlU3R5bGVNYXNrKENTU1ZhbHVlJiBzdHlsZSkKK3N0
ZDo6b3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IENTU0ZvbnRGYWNlOjpjYWxjdWxhdGVTdHlsZU1h
c2soQ1NTVmFsdWUmIHN0eWxlKQogewogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0
eWxlKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzdHlsZSkudmFs
dWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKQEAgLTE1OSwxMCArMTU5LDEwIEBA
IGJvb2wgQ1NTRm9udEZhY2U6OnNldFN0eWxlKENTU1ZhbHVlJiBzdHlsZSkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3Vs
YXRlV2VpZ2h0TWFzayhDU1NWYWx1ZSYgd2VpZ2h0KQorc3RkOjpvcHRpb25hbDxGb250VHJhaXRz
TWFzaz4gQ1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdlaWdodE1hc2soQ1NTVmFsdWUmIHdlaWdodCkK
IHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih3ZWlnaHQpKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHdlaWdodCkudmFsdWVJRCgpKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUJvbGQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDhiMTNhMWI3Y2M0
YTc3YTFjN2RmNzgzNDRmMzFmNzQ2Nzc0ZTA0NzYuLmIxMWRmZDAxNTBiOGQ1ZWZkNTk0MTVhZjE0
ODFkNzVhMmJhZTc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC04Nyw4ICs4Nyw4
IEBAIGNsYXNzIENTU0ZvbnRGYWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTRm9udEZh
Y2U+IHsKICAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KICAg
ICBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY3Nz
Q29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNr
PiBjYWxjdWxhdGVTdHlsZU1hc2soQ1NTVmFsdWUmIHN0eWxlKTsKLSAgICBzdGF0aWMgT3B0aW9u
YWw8Rm9udFRyYWl0c01hc2s+IGNhbGN1bGF0ZVdlaWdodE1hc2soQ1NTVmFsdWUmIHdlaWdodCk7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNhbGN1bGF0ZVN0eWxl
TWFzayhDU1NWYWx1ZSYgc3R5bGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRUcmFp
dHNNYXNrPiBjYWxjdWxhdGVXZWlnaHRNYXNrKENTU1ZhbHVlJiB3ZWlnaHQpOwogCiAgICAgY2xh
c3MgQ2xpZW50OwogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5jcHAKaW5kZXggNTIyYWM4NmE5NGU5YmJiYjNiOGQzZTIxMTVjZjY2OTAw
ZjczNTMxZS4uYjYwNjhjYzZmODJmMjM4YzdiZjExNmFkNDcyYTJiZDYxMzA3NDJjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgQ1NTRm9u
dEZhY2UmIENTU0ZvbnRGYWNlU2V0OjpvcGVyYXRvcltdKHNpemVfdCBpKQogICAgIHJldHVybiBt
X2ZhY2VzW2ldOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNvbXB1dGVG
b250VHJhaXRzTWFzayhNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjb21wdXRlRm9udFRyYWl0c01hc2soTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdHlsZVZhbHVl
ID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkuZ2V0KCk7
CiAgICAgaWYgKCFzdHlsZVZhbHVlKQpAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBPcHRpb25h
bDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZUZvbnRUcmFpdHNNYXNrKE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmIHN0CiAgICAgaWYgKGF1dG8gc3R5bGVNYXNrT3B0aW9uYWwgPSBDU1NGb250RmFjZTo6
Y2FsY3VsYXRlU3R5bGVNYXNrKCpzdHlsZVZhbHVlKSkKICAgICAgICAgc3R5bGVNYXNrID0gc3R5
bGVNYXNrT3B0aW9uYWwudmFsdWUoKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB3
ZWlnaHRWYWx1ZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250V2Vp
Z2h0KS5nZXQoKTsKICAgICBpZiAoIXdlaWdodFZhbHVlKQpAQCAtMzA0LDcgKzMwNCw3IEBAIHN0
YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZUZvbnRUcmFpdHNNYXNrKE11dGFi
bGVTdHlsZVByb3BlcnRpZXMmIHN0CiAgICAgaWYgKGF1dG8gd2VpZ2h0TWFza09wdGlvbmFsID0g
Q1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdlaWdodE1hc2soKndlaWdodFZhbHVlKSkKICAgICAgICAg
d2VpZ2h0TWFzayA9IHdlaWdodE1hc2tPcHRpb25hbC52YWx1ZSgpOwogICAgIGVsc2UKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dHlsZU1hc2spIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdlaWdodE1hc2spKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDYyMWZjZTgyZTViZTYzZTUy
MGNmY2ExMTQ2ZmZhZWVjYTBiMDUxNGMuLjViMGQxZmI5YTc4MzY1ZjZiNTE3Mjg4ZjhmZTIxM2Q2
YmE4NzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAt
ODM2LDcgKzgzNiw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0
RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uCiAKIGRvdWJsZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoVW5pdFR5cGVzIHVuaXRUeXBlKSBjb25zdAogewotICAg
IHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZU9yKDApOworICAgIHJl
dHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZV9vcigwKTsKIH0KIAogZG91
YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CkBAIC04NzEsMTAgKzg3
MSwxMCBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIENTU1ByaW1pdGl2ZVZhbHVlOjpj
YW5vbmljYWxVbml0VHlwZUZvckNhdGVnb3J5KFVuaQogICAgIH0KIH0KIAotT3B0aW9uYWw8ZG91
YmxlPiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgcmVx
dWVzdGVkVW5pdFR5cGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoVW5pdFR5cGVzIHJlcXVlc3RlZFVuaXRUeXBlKSBj
b25zdAogewogICAgIGlmICghaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihz
dGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5cGUpKSB8fCAhaXNWYWxpZENT
U1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihyZXF1ZXN0ZWRVbml0VHlwZSkpCi0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVW5p
dFR5cGVzIHNvdXJjZVVuaXRUeXBlID0gc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPihwcmltaXRpdmVU
eXBlKCkpOwogICAgIGlmIChyZXF1ZXN0ZWRVbml0VHlwZSA9PSBzb3VyY2VVbml0VHlwZSB8fCBy
ZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NfRElNRU5TSU9OKQpAQCAtODg5LDIwICs4ODksMjAgQEAg
T3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChV
bml0VHlwZXMgcmVxdWVzdGVkVW5pdFQKIAogICAgIC8vIENhbm5vdCBjb252ZXJ0IGJldHdlZW4g
dW5yZWxhdGVkIHVuaXQgY2F0ZWdvcmllcyBpZiBvbmUgb2YgdGhlbSBpcyBub3QgVU51bWJlci4K
ICAgICBpZiAoc291cmNlQ2F0ZWdvcnkgIT0gdGFyZ2V0Q2F0ZWdvcnkgJiYgc291cmNlQ2F0ZWdv
cnkgIT0gVU51bWJlciAmJiB0YXJnZXRDYXRlZ29yeSAhPSBVTnVtYmVyKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0YXJn
ZXRDYXRlZ29yeSA9PSBVTnVtYmVyKSB7CiAgICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJz
aW9uIHRvIENTU19OVU1CRVIgYXMgY29udmVyc2lvbiB0byBhIGNhbm9uaWNhbCB1bml0IGluIHRo
aXMgdmFsdWUncyBjYXRlZ29yeS4KICAgICAgICAgdGFyZ2V0VW5pdFR5cGUgPSBjYW5vbmljYWxV
bml0VHlwZUZvckNhdGVnb3J5KHNvdXJjZUNhdGVnb3J5KTsKICAgICAgICAgaWYgKHRhcmdldFVu
aXRUeXBlID09IENTU19VTktOT1dOKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChzb3VyY2VVbml0
VHlwZSA9PSBDU1NfTlVNQkVSKSB7CiAgICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9u
IGZyb20gQ1NTX05VTUJFUiBpbiB0aGUgc2FtZSB3YXkgYXMgQ1NTUGFyc2VyOjp2YWxpZFVuaXQo
KSB3aGlsZSB1c2luZyBub24tc3RyaWN0IG1vZGUuCiAgICAgICAgIHNvdXJjZVVuaXRUeXBlID0g
Y2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeSh0YXJnZXRDYXRlZ29yeSk7CiAgICAgICAgIGlm
IChzb3VyY2VVbml0VHlwZSA9PSBDU1NfVU5LTk9XTikKLSAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBkb3Vi
bGUgY29udmVydGVkVmFsdWUgPSBkb3VibGVWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuaAppbmRleCBiZDc2YTBiMzhiM2ZmYzU0YzA0MzMxNGM2ZDFjNjdjOWNkNDZk
NjZjLi5iYmU4MTdlZGExYzk0ODdkNDhjMTI1ZjM4NWM2YzdkMzRlNGU4Y2E0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMzYwLDcgKzM2MCw3IEBAIGNsYXNzIENT
U1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKICAgICB2b2lkIGluaXQo
UmVmUHRyPERhc2hib2FyZFJlZ2lvbj4mJik7IC8vIEZJWE1FOiBEYXNoYm9hcmQgcmVnaW9uIHNo
b3VsZCBub3QgYmUgYSBwcmltaXRpdmUgdmFsdWUuCiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPGRv
dWJsZT4gZG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgdGFyZ2V0VW5pdFR5cGUpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBl
cyB0YXJnZXRVbml0VHlwZSkgY29uc3Q7CiAKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aERvdWJs
ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggY2E1NjRhNjFjODc1ZjY4ODllNjljMWRhYjIy
NzMwYzc3MDg4ZTY3NC4uY2I2OTFlOGE0MGUwMTBkMjdlNDI1ZjcwODk0MjcwMWFmODU5NDllMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAK
IC8vIGZ1bmN0aW9uIGluIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBzaG91bGQgYmUgdXNl
ZC4KIC8vCiAvLyAqIENvbmRpdGlvbmFsQ29udmVydGVyPVhYWDoKLS8vIFNpbWlsYXIgdG8gQ29u
dmVydGVyPVhYWCBidXQgdGhlIGNvbnZlcnRlciBmdW5jdGlvbiByZXR1cm5zIGEgV1RGOjpPcHRp
b25hbDw+CisvLyBTaW1pbGFyIHRvIENvbnZlcnRlcj1YWFggYnV0IHRoZSBjb252ZXJ0ZXIgZnVu
Y3Rpb24gcmV0dXJucyBhIHN0ZDo6b3B0aW9uYWw8PgogLy8gdG8gaW5kaWNhdGUgaWYgdGhlIHBy
b3BlcnR5IHNldHRlciBzaG91bGQgYmUgY2FsbGVkIG9yIG5vdC4KIC8vCiAvLyAqIEN1c3RvbT1b
SW5pdGlhbHxWYWx1ZXxJbmhlcml0fEFsbF06CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21l
bnRlZEZvbnRGYWNlLmNwcAppbmRleCA3NzhlNjQ5OTEyYzllODIwODJjY2E0ZDY0ZDE5ZTg3MDdh
NWUyNjIxLi44NTAxODViNzhhZDI1Y2U3YTk0MWM0YTk2ZDJlMjMxNWRmMGEzM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgY2xhc3MgQ1NTRm9udEFjY2Vzc29yIGZpbmFsIDogcHVibGljIEZvbnRBY2Nlc3NvciB7CiAg
ICAgICAgIHJldHVybiBtX3Jlc3VsdCAmJiBtX3Jlc3VsdC52YWx1ZSgpICYmIG1fcmVzdWx0LnZh
bHVlKCktPmlzTG9hZGluZygpOwogICAgIH0KIAotICAgIG11dGFibGUgT3B0aW9uYWw8UmVmUHRy
PEZvbnQ+PiBtX3Jlc3VsdDsgLy8gQ2FjaGVzIG51bGxwdHIgdG9vCisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPFJlZlB0cjxGb250Pj4gbV9yZXN1bHQ7IC8vIENhY2hlcyBudWxscHRyIHRvbwog
ICAgIG11dGFibGUgUmVmPENTU0ZvbnRGYWNlPiBtX2ZvbnRGYWNlOwogICAgIEZvbnREZXNjcmlw
dGlvbiBtX2ZvbnREZXNjcmlwdGlvbjsKICAgICBib29sIG1fc3ludGhldGljQm9sZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCBhZmEzNjY2NGIyNDY0MWE3NjNlNDhmMmQy
ODdjYzFmNWFkMThjNWNlLi43NzVhNmI1NzA4Yzc0MGE3NTNmYWIyYzE2Y2VhYWM3OGQ2NTFjMWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIFJl
ZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiBzaGVldCwgQ1NTSW1wCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVT
aGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJSdWxlKSk7CiB9CiAKLVJlZjxDU1NTdHlsZVNoZWV0
PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwg
Tm9kZSYgb3duZXJOb2RlLCBjb25zdCBPcHRpb25hbDxib29sPiYgaXNDbGVhbk9yaWdpbikKK1Jl
ZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiBzaGVldCwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiBpc0NsZWFuT3JpZ2luKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hl
ZXQoV1RGTW92ZShzaGVldCksIG93bmVyTm9kZSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRp
b24oKSwgZmFsc2UsIGlzQ2xlYW5PcmlnaW4pKTsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCBDU1NT
dHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVu
dHMsIENTU0ltcG9ydFJ1bGUqCiAgICAgbV9jb250ZW50cy0+cmVnaXN0ZXJDbGllbnQodGhpcyk7
CiB9CiAKLUNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBjb250ZW50cywgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBPcHRpb25hbDxib29sPiYg
aXNPcmlnaW5DbGVhbikKK0NTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hl
ZXRDb250ZW50cz4mJiBjb250ZW50cywgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRp
b24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuKQogICAgIDogbV9jb250ZW50cyhXVEZNb3ZlKGNv
bnRlbnRzKSkKICAgICAsIG1faXNJbmxpbmVTdHlsZXNoZWV0KGlzSW5saW5lU3R5bGVzaGVldCkK
ICAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KQogICAgIHJl
dHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1bnNp
Z25lZD4gaW5kZXgpCitFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgU3RyaW5nQnVpbGRlciB0ZXh0OwogICAgIHRleHQuYXBw
ZW5kKHNlbGVjdG9yKTsKQEAgLTMzNCw3ICszMzQsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IENTU1N0
eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBz
dAogICAgIGlmICghc3R5bGUuaXNFbXB0eSgpKQogICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwog
ICAgIHRleHQuYXBwZW5kKCd9Jyk7Ci0gICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0
UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRv
IGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFs
dWVfb3IobGVuZ3RoKCkpKTsKICAgICBpZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGluc2VydFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMjkxZTllNzkxMDdmODViMTIy
NDczNmUzMTE1ZTcyY2I0OTJmZTY3ZC4uYzRhZTM5NWRlZDk2OTZhYTcwY2U4MzY0YjYzYzA2OWJj
NWY4OWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC01Miw3ICs1Miw3IEBA
IGNsYXNzIFNjb3BlOwogY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNo
ZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKLSAg
ICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFu
ID0gTnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PGJvb2w+JiBpc09yaWdpbkNsZWFuID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPENT
U1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBFbGVt
ZW50JiBvd25lciwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uKTsKIAogICAgIHZp
cnR1YWwgfkNTU1N0eWxlU2hlZXQoKTsKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgQ1NTU3R5bGVT
aGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx2b2lkPiBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KTsKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0
IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNv
bnN0IFN0cmluZyYgc3R5bGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiByZW1vdmVSdWxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBkZWxl
dGVSdWxlKGluZGV4KTsgfQogICAgIAogICAgIC8vIEZvciBDU1NSdWxlTGlzdC4KQEAgLTEzMiw3
ICsxMzIsNyBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hlZXQg
ewogcHJpdmF0ZToKICAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYs
IENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSk7CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3Rh
cnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpOwotICAgIENTU1N0eWxlU2hlZXQo
UmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9z
aXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBPcHRp
b25hbDxib29sPiYpOworICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJv
b2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAKICAg
ICBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9j
c3MiKTsgfQpAQCAtMTQzLDcgKzE0Myw3IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBw
dWJsaWMgU3R5bGVTaGVldCB7CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVldDsKICAgICBi
b29sIG1faXNEaXNhYmxlZDsKICAgICBib29sIG1fbXV0YXRlZFJ1bGVzOwotICAgIE9wdGlvbmFs
PGJvb2w+IG1faXNPcmlnaW5DbGVhbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXNPcmln
aW5DbGVhbjsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4g
bV9tZWRpYVF1ZXJpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDE3ZDM1NWFlMWRm
YmQ3N2EyMjJjMTk1OTZiZGIwYzk4YjViYzI3OTYuLjI0ZGI2ZGQ1MGZjNDAxZTNlOTU1N2Y1ZTVm
ZjYyMDA3NGIyODg2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMzU2LDcgKzM1Niw3
IEBAIGF1dG8gRm9udEZhY2U6OnN0YXR1cygpIGNvbnN0IC0+IExvYWRTdGF0dXMKIAogdm9pZCBG
b250RmFjZTo6YWRvcHQoQ1NTRm9udEZhY2UmIG5ld0ZhY2UpCiB7Ci0gICAgbV9wcm9taXNlID0g
TnVsbG9wdDsKKyAgICBtX3Byb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9iYWNraW5nLT5y
ZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIG1fYmFja2luZyA9IG5ld0ZhY2U7CiAgICAgbV9iYWNr
aW5nLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBGb250RmFj
ZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1
cywgQ1NTRm9udEYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVz
OjpTdWNjZXNzOgogICAgICAgICBpZiAobV9wcm9taXNlKQotICAgICAgICAgICAgc3RkOjpleGNo
YW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5yZXNvbHZlKCp0aGlzKTsKKyAgICAgICAgICAgIHN0
ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5yZXNvbHZlKCp0aGlzKTsKICAg
ICAgICAgZGVyZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0
YXR1czo6RmFpbHVyZToKICAgICAgICAgaWYgKG1fcHJvbWlzZSkKLSAgICAgICAgICAgIHN0ZDo6
ZXhjaGFuZ2UobV9wcm9taXNlLCBOdWxsb3B0KS0+cmVqZWN0KE5FVFdPUktfRVJSKTsKKyAgICAg
ICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5yZWplY3QoTkVU
V09SS19FUlIpOwogICAgICAgICBkZXJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBD
U1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCBmYThm
MzEzZGNlZDhmYjVkZDI4ZTJjMjk0ODUxNWU0NmQ3ZWFjZTA2Li4yM2NlZjdkNDJhMzdiMzM4OGM5
NTIzN2Y2OTBjOTdlNjA4NzBmYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtNjYsNyArNjYs
NyBAQCBjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlPiwg
cHJpdmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25z
dDsKIAogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZSY+IFByb21pc2U7Ci0gICAgT3B0
aW9uYWw8UHJvbWlzZT4mIHByb21pc2UoKSB7IHJldHVybiBtX3Byb21pc2U7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPFByb21pc2U+JiBwcm9taXNlKCkgeyByZXR1cm4gbV9wcm9taXNlOyB9CiAgICAg
dm9pZCByZWdpc3RlckxvYWRlZChQcm9taXNlJiYpOwogCiAgICAgdm9pZCBhZG9wdChDU1NGb250
RmFjZSYpOwpAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEZvbnRGYWNlPiwgcHJpdmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50CiAKICAgICBX
ZWFrUHRyRmFjdG9yeTxGb250RmFjZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZWY8Q1NTRm9u
dEZhY2U+IG1fYmFja2luZzsKLSAgICBPcHRpb25hbDxQcm9taXNlPiBtX3Byb21pc2U7CisgICAg
c3RkOjpvcHRpb25hbDxQcm9taXNlPiBtX3Byb21pc2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlU2V0LmNwcAppbmRleCAxMzljNDU1YzJiZTM2YTNlOTFmODhjODFlY2QyNmMyOGIyZmM0
YmZjLi5jOTEwNzE2ZmEwYTI3OTAxN2FiMjYyOTcyNjRlZmJkYzEwMGYzNDQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZVNldC5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIEZvbnRGYWNlU2V0
OjpzdGFydGVkTG9hZGluZygpCiB2b2lkIEZvbnRGYWNlU2V0Ojpjb21wbGV0ZWRMb2FkaW5nKCkK
IHsKICAgICBpZiAobV9wcm9taXNlKQotICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwg
TnVsbG9wdCktPnJlc29sdmUoKnRoaXMpOworICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlz
ZSwgc3RkOjpudWxsb3B0KS0+cmVzb2x2ZSgqdGhpcyk7CiAgICAgbV9pc1JlYWR5ID0gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBlMWE3Mjc0NGRjZWRhZDA1ZTRmMWFj
ODYwZWYxZWY4MTIyMDkwYTk5Li5jNGYzNjlhZGE3ZmY4NmI1YmE2YzhkZjA4MzNkYTA3NzZhMmU1
Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNz
IEZvbnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2
YXRlIENTU0ZvbnRGYWNlU2V0CiAKICAgICBSZWY8Q1NTRm9udEZhY2VTZXQ+IG1fYmFja2luZzsK
ICAgICBIYXNoTWFwPFJlZlB0cjxDU1NGb250RmFjZT4sIFZlY3RvcjxSZWY8UGVuZGluZ1Byb21p
c2U+Pj4gbV9wZW5kaW5nUHJvbWlzZXM7Ci0gICAgT3B0aW9uYWw8UmVhZHlQcm9taXNlPiBtX3By
b21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxSZWFkeVByb21pc2U+IG1fcHJvbWlzZTsKICAgICBi
b29sIG1faXNSZWFkeSB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5k
ZXggZTg1Mzg4NzEwZmY0NWFmMjM1ODM4Y2VkMWFhNjk3NGIzNjlkNGFhNi4uMTg4MzYzZmQ0YWE5
MjAyYWE0MGE0MmQwZDc4YzA2OGJhNzAyODFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAK
QEAgLTExOCwxNiArMTE4LDE2IEBAIHN0YXRpYyBTdHJpbmcgcGFyc2VNZWRpYURlc2NyaXB0b3Io
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZy5sZWZ0KGkpOwogfQogCi1P
cHRpb25hbDxNZWRpYVF1ZXJ5PiBNZWRpYVF1ZXJ5U2V0OjppbnRlcm5hbFBhcnNlKENTU1BhcnNl
ciYgcGFyc2VyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQorc3RkOjpvcHRpb25hbDxNZWRp
YVF1ZXJ5PiBNZWRpYVF1ZXJ5U2V0OjppbnRlcm5hbFBhcnNlKENTU1BhcnNlciYgcGFyc2VyLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQogewogICAgIGlmIChhdXRvIHF1ZXJ5ID0gcGFyc2Vy
LnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZykpCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKCpx
dWVyeSk7CiAgICAgaWYgKCFtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gTWVkaWFR
dWVyeSB7IE1lZGlhUXVlcnk6Ok5vbmUsIHBhcnNlTWVkaWFEZXNjcmlwdG9yKHF1ZXJ5U3RyaW5n
KSwgVmVjdG9yPE1lZGlhUXVlcnlFeHByZXNzaW9uPiB7IH0gfTsKIH0KIAotT3B0aW9uYWw8TWVk
aWFRdWVyeT4gTWVkaWFRdWVyeVNldDo6aW50ZXJuYWxQYXJzZShjb25zdCBTdHJpbmcmIHF1ZXJ5
U3RyaW5nKQorc3RkOjpvcHRpb25hbDxNZWRpYVF1ZXJ5PiBNZWRpYVF1ZXJ5U2V0OjppbnRlcm5h
bFBhcnNlKGNvbnN0IFN0cmluZyYgcXVlcnlTdHJpbmcpCiB7CiAgICAgQ1NTUGFyc2VyIHBhcnNl
cihIVE1MU3RhbmRhcmRNb2RlKTsKICAgICByZXR1cm4gaW50ZXJuYWxQYXJzZShwYXJzZXIsIHF1
ZXJ5U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaAppbmRleCA2NzJhYTRhOTk5YzE3MDI3YjBm
ZGIzNGYwM2YwYTU4ZGVjNmRiZWY4Li44MzMyOTE4ZjI3OTVmYjUyNmZkZjU3MGRlZjlhNTZmMTIx
OTM2M2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCkBAIC03MSw4ICs3MSw4IEBAIGNsYXNzIE1l
ZGlhUXVlcnlTZXQgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVF1ZXJ5U2V0PiB7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFRdWVyeVNldChjb25zdCBTdHJpbmcmIG1lZGlhUXVlcnks
IGJvb2wgZmFsbGJhY2tUb0Rlc2NyaXB0aW9uKTsKICAgICBNZWRpYVF1ZXJ5U2V0KGNvbnN0IE1l
ZGlhUXVlcnlTZXQmKTsKIAotICAgIE9wdGlvbmFsPE1lZGlhUXVlcnk+IGludGVybmFsUGFyc2Uo
Q1NTUGFyc2VyJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgT3B0aW9uYWw8TWVkaWFRdWVyeT4gaW50
ZXJuYWxQYXJzZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhUXVlcnk+
IGludGVybmFsUGFyc2UoQ1NTUGFyc2VyJiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RkOjpvcHRp
b25hbDxNZWRpYVF1ZXJ5PiBpbnRlcm5hbFBhcnNlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdW5z
aWduZWQgbV9mYWxsYmFja1RvRGVzY3JpcHRvciA6IDE7IC8vIHRydWUgaWYgZmFpbGVkIG1lZGlh
IHF1ZXJ5IHBhcnNpbmcgc2hvdWxkIGZhbGxiYWNrIHRvIG1lZGlhIGRlc2NyaXB0aW9uIHBhcnNp
bmcuCiAgICAgc2lnbmVkIG1fbGFzdExpbmUgOiAzMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCAyYzFjZDIzODhjYTY5NDI0MTlmNTFhZjdhOGI2OGUw
NjJlYmZiOGU3Li5mZGNjZjBmNmUwY2YxNTI4YTM4OWNmYTNkZDk3YWQwYmExNzM4ZjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0yMDQsMTAgKzIw
NCwxMCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSogdmFs
dWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaQogICAgIHJldHVybiBjb21wYXJlVmFsdWUo
d2lkdGggKiBhc3BlY3RSYXRpby5kZW5vbWluYXRvclZhbHVlKCksIGhlaWdodCAqIGFzcGVjdFJh
dGlvLm51bWVyYXRvclZhbHVlKCksIG9wKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4g
ZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBkb3VibGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpIHx8ICFkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSku
ZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggMDFiNTVkNDRkOGUxYjEy
MTBkNmIxNDViZjNiMTUwYzY5NzFlZDdhNi4uODNjNWVmMzA4MmE1MzViNzY0OGY0MzQ2NDQ5ZGM3
NzllNmQzMmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aApAQCAtMTAyLDEzICsxMDIsMTMgQEAgY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyIHsKICNp
ZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNvbnZl
cnRHcmlkVHJhY2tTaXplKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gY29udmVydEdyaWRUcmFja1NpemVMaXN0KFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxHcmlkUG9z
aXRpb24+IGNvbnZlcnRHcmlkUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBjb252ZXJ0R3JpZFBv
c2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBHcmlk
QXV0b0Zsb3cgY29udmVydEdyaWRBdXRvRmxvdyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIHN0YXRpYyBPcHRp
b25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGNvbnZlcnRQZXJzcGVjdGl2ZShT
dHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVu
Z3RoPiBjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZpbHRl
ck9wZXJhdGlvbnMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNvbnZl
cnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbHRl
ck9wZXJhdGlvbnM+IGNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBDU1NWYWx1ZSYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBjb252ZXJ0
VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCkBA
IC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyIHsKICAgICBzdGF0
aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdubWVudERhdGEo
U3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEVHbHlwaE9yaWVu
dGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRh
dGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmLCBmbG9hdCBtdWx0aXBsaWVyID0gMS5mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYsIGZsb2F0IG11bHRpcGxpZXIgPSAxLmYpOwogICAgIHN0YXRpYyBGb250U3ludGhlc2lz
IGNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwog
ICAgIAogICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVydFBhZ2VCcmVha0JldHdlZW4oU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CkBAIC0xMDg1LDEyICsxMDg1LDEyIEBAIGlu
bGluZSBHcmlkVHJhY2tTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFj
a1NpemUoU3R5bGVSZXNvbHZlciYKICAgICByZXR1cm4gY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1
ZSwgc3R5bGVSZXNvbHZlcik7CiB9CiAKLWlubGluZSBPcHRpb25hbDxHcmlkUG9zaXRpb24+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8R3JpZFBvc2l0aW9u
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkUG9zaXRpb24oU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBHcmlkUG9zaXRpb24gZ3JpZFBvc2l0
aW9uOwogICAgIGlmIChjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGdyaWRQb3NpdGlvbikpCiAg
ICAgICAgIHJldHVybiBncmlkUG9zaXRpb247Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIEdyaWRBdXRvRmxvdyBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKQEAgLTExMzgsOSArMTEzOCw5IEBAIGlubGluZSBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0
CiAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIE9wdGlvbmFsPExlbmd0aD4gd29y
ZFNwYWNpbmc7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwogICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAg
ICAgICB3b3JkU3BhY2luZyA9IFJlbmRlclN0eWxlOjppbml0aWFsV29yZFNwYWNpbmcoKTsKQEAg
LTExNTQsNyArMTE1NCw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImCiAgICAgcmV0dXJuIHdv
cmRTcGFjaW5nOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMTE2OCwxMiArMTE2OCwxMiBA
QCBpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBl
cnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIAotICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBPcHRpb25hbDxmbG9hdD4o
TnVsbG9wdCkgOiBPcHRpb25hbDxmbG9hdD4ocGVyc3BlY3RpdmUpOworICAgIHJldHVybiBwZXJz
cGVjdGl2ZSA8IDAgPyBzdGQ6Om9wdGlvbmFsPGZsb2F0PihzdGQ6Om51bGxvcHQpIDogc3RkOjpv
cHRpb25hbDxmbG9hdD4ocGVyc3BlY3RpdmUpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8TGVuZ3Ro
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZUlu
Y3JlbWVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtYXJxdWVlTGVuZ3RoOworICAgIHN0ZDo6b3B0
aW9uYWw8TGVuZ3RoPiBtYXJxdWVlTGVuZ3RoOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoKQEAgLTExOTcsMTIg
KzExOTcsMTIgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc28KICAgICByZXR1cm4gbWFycXVlZUxl
bmd0aDsKIH0KIAotaW5saW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8Rmls
dGVyT3BlcmF0aW9ucz4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0
aW9ucyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIGlmIChzdHlsZVJlc29s
dmVyLmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModmFsdWUsIG9wZXJhdGlvbnMpKQogICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uczsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBpbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBpbmxpbmUgRUdseXBoT3JpZW50
YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0
byhTdAogICAgIHJldHVybiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihzdHlsZVJlc29sdmVyLCB2
YWx1ZSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlLCBmbG9hdCBtdWx0aXBsaWVyKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlw
bGllcikKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vcm1hbCkKQEAgLTE0MjAsNyArMTQyMCw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYK
ICAgICAgICAgLy8gRklYTUU6IG51bWJlciBhbmQgcGVyY2VudGFnZSB2YWx1ZXMgc2hvdWxkIHBy
b2R1Y2UgdGhlIHNhbWUgdHlwZSBvZiBMZW5ndGggKGllLiBGaXhlZCBvciBQZXJjZW50KS4KICAg
ICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpICogbXVsdGlw
bGllciAqIDEwMC4wLCBQZXJjZW50KTsKICAgICB9Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIEZvbnRTeW50aGVzaXMgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmlu
ZGV4IDlmYjJlYjFlYTc4NDk4MWI4M2NhNTM3MDVlZjJmOTk1OTYyNGI4NjUuLjcwZjhmYjEzZWE1
ZGVhZjA1YjVkZGI0ZWJjNTZkOTc3ZjhlY2JhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmgKQEAgLTYzMCw3ICs2MzAsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgZmxv
YXQgbXVsdGlwbGllciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKS5p
c1BlcmNlbnRhZ2UoKSA/IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKS5t
dWx0aXBsaWVyKCkgOiAxLmY7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBsaW5lSGVpZ2h0ID0gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChzdHlsZVJlc29sdmVyLCB2YWx1
ZSwgbXVsdGlwbGllcik7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGxpbmVIZWlnaHQgPSBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KHN0eWxlUmVzb2x2ZXIsIHZh
bHVlLCBtdWx0aXBsaWVyKTsKICAgICBpZiAoIWxpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcAppbmRleCBmZjdiYzM1MGVhOTg4
YmY4ODBkYzBjZGMwNDQzYzJhZmZkODZlMGE5Li4wZWE3Y2FjNDdmMmFkMTkwMTYwOTNmZWJiYTY2
NmVmODY4ZmRmNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1w
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVTaGVldCgp
CiAKICAgICAvLyBGSVhNRTogU2tpcCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjaGVjayB3aGVu
IHN0eWxlc2hlZXQgaXMgaW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0cmVlLgogICAgIC8vIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjY2Mz4uCi0gICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYWJzVVJMLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBOdWxsb3B0LCBTdHJpbmcobV9wYXJlbnRT
dHlsZVNoZWV0LT5jaGFyc2V0KCkpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChhYnNVUkwsIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCksIHN0ZDo6bnVsbG9wdCwgU3RyaW5nKG1fcGFyZW50U3R5bGVTaGVldC0+Y2hhcnNldCgp
KSk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlh
dG9ycygpLmNzcyk7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hl
ZXQtPnJlbW92ZUNsaWVudChtX3N0eWxlU2hlZXRDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IGNkM2M3M2QyZmM0MDc2YjRiYzE2N2VkNzdlNjAxYWNm
MDZmMmQyY2IuLmQxMjA2YzUwYzc5YjE4MDBkYzNmMzdhZmM3YTE5YjAwYzQwYzg2NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQ5OTYsMjkgKzQ5OTYsMjkg
QEAgYm9vbCBDU1NQYXJzZXI6OmlzU3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jb250ZXh0LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZDsKIH0KIAot
T3B0aW9uYWw8ZG91YmxlPiBDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
blZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBD
U1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZh
bHVlTGlzdCYgYXJncykKIHsKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVudFdpdGhD
YWxjdWxhdGlvbigqYXJncy5jdXJyZW50KCkpOwogICAgIGlmICghdmFsaWRhdGVVbml0KGFyZ3Vt
ZW50V2l0aENhbGN1bGF0aW9uLCBGTnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0g
ICAgT3B0aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRXaXRoQ2Fs
Y3VsYXRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24p
OwogICAgIENTU1BhcnNlclZhbHVlKiBuZXh0VmFsdWUgPSBhcmdzLm5leHQoKTsKICAgICBpZiAo
IW5leHRWYWx1ZSkgewogICAgICAgICAvLyBUaGUgbGFzdCBudW1iZXIgaW4gdGhlIGZ1bmN0aW9u
IGhhcyBubyBjb21tYSBhZnRlciBpdCwgc28gd2UncmUgZG9uZS4KICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgaWYgKCFpc0NvbW1hKG5leHRWYWx1ZSkpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGFyZ3MubmV4dCgp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ1NTUGFyc2VyOjpw
YXJzZVNwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQor
c3RkOjpvcHRpb25hbDxkb3VibGU+IENTU1BhcnNlcjo6cGFyc2VTcHJpbmdUaW1pbmdGdW5jdGlv
blZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKIHsKICAgICBWYWx1ZVdpdGhDYWxjdWxh
dGlvbiBhcmd1bWVudFdpdGhDYWxjdWxhdGlvbigqYXJncy5jdXJyZW50KCkpOwogICAgIGlmICgh
dmFsaWRhdGVVbml0KGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uLCBGTnVtYmVyKSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3Vi
bGUoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUoYXJndW1l
bnRXaXRoQ2FsY3VsYXRpb24pOwogICAgIGFyZ3MubmV4dCgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CkBAIC03NjgyLDExICs3NjgyLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJHQlBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBpbnQqIGNvbG9yQXJyYXksIGJvb2wKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0
PiwgQ29sb3JTcGFjZT4+IENTU1BhcnNlcjo6cGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyhD
U1NQYXJzZXJWYWx1ZSYgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6OmFycmF5
PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBDU1NQYXJzZXI6OnBhcnNlQ29sb3JGdW5jdGlvblBh
cmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIENTU1BhcnNlclZhbHVlTGlz
dCogYXJncyA9IHZhbHVlLmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogICAgIGlmICghYXJncy0+c2l6
ZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKICAgICBzd2l0Y2ggKGFyZ3MtPmN1cnJl
bnQoKS0+aWQpIHsKQEAgLTc2OTcsNyArNzY5Nyw3IEBAIE9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6
OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBDU1NQYXJzZXI6OnBhcnNlQ29sb3JGdW5j
CiAgICAgICAgIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGlzcGxheVAzOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzdGQ6OmFycmF5PGRvdWJsZSwgND4gY29sb3JW
YWx1ZXMgPSB7IHsgMCwgMCwgMCwgMSB9IH07CkBAIC03NzA3LDcgKzc3MDcsNyBAQCBPcHRpb25h
bDxzdGQ6OnBhaXI8c3RkOjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNwYWNlPj4gQ1NTUGFyc2Vy
OjpwYXJzZUNvbG9yRnVuYwogICAgICAgICBpZiAodmFsdWVPck51bGwpIHsKICAgICAgICAgICAg
IFZhbHVlV2l0aENhbGN1bGF0aW9uIGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKCp2YWx1ZU9yTnVs
bCk7CiAgICAgICAgICAgICBpZiAoIXZhbGlkYXRlVW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlv
biwgRk51bWJlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGNvbG9yVmFsdWVzW2ldID0g
c3RkOjptYXgoMC4wLCBzdGQ6Om1pbigxLjAsIHBhcnNlZERvdWJsZShhcmd1bWVudFdpdGhDYWxj
dWxhdGlvbikpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc3MTcsMTMgKzc3MTcsMTMgQEAgT3B0
aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IENTU1Bh
cnNlcjo6cGFyc2VDb2xvckZ1bmMKICAgICAgICAgcmV0dXJuIHsgeyBjb2xvclZhbHVlcywgY29s
b3JTcGFjZSB9IH07CiAKICAgICBpZiAoIWlzRm9yd2FyZFNsYXNoT3BlcmF0b3IoKnNsYXNoT3JO
dWxsKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBIYW5kbGUgYWxwaGEuCiAKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBh
cmd1bWVudFdpdGhDYWxjdWxhdGlvbigqYXJncy0+bmV4dCgpKTsKICAgICBpZiAoIXZhbGlkYXRl
VW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlvbiwgRk51bWJlciB8IEZQZXJjZW50KSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29s
b3JWYWx1ZXNbM10gPSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWluKDEuMCwgcGFyc2VDb2xvckRvdWJs
ZShhcmd1bWVudFdpdGhDYWxjdWxhdGlvbikpKTsKIAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHRo
ZSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmYWxsYmFjayBjb2xvciB2YWx1ZXMuCkBAIC03NzMx
LDcgKzc3MzEsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8c3RkOjphcnJheTxkb3VibGUsIDQ+LCBD
b2xvclNwYWNlPj4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnVuYwogCiAgICAgYXV0byBjb21tYU9y
TnVsbCA9IGFyZ3MtPm5leHQoKTsKICAgICBpZiAoY29tbWFPck51bGwgJiYgIWlzQ29tbWEoY29t
bWFPck51bGwpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgY29sb3JWYWx1ZXMsIGNvbG9yU3BhY2UgfSB9Owog
fQpAQCAtNzgyNSw3ICs3ODI1LDcgQEAgQ29sb3IgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnJvbVZh
bHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKICAgICB9IGVsc2UgaWYgKHZhbHVlLnVuaXQgPT0g
Q1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uCiAgICAgICAgICYmIHZhbHVlLmZ1bmN0aW9uLT5hcmdz
CiAgICAgICAgICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLmZ1bmN0aW9u
LT5uYW1lLCAiY29sb3IoIikpIHsKLSAgICAgICAgT3B0aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJy
YXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IGNvbG9yRGF0YSA9IHBhcnNlQ29sb3JGdW5jdGlv
blBhcmFtZXRlcnModmFsdWUpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6
OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBjb2xvckRhdGEgPSBwYXJzZUNvbG9yRnVu
Y3Rpb25QYXJhbWV0ZXJzKHZhbHVlKTsKICAgICAgICAgaWYgKCFjb2xvckRhdGEpCiAgICAgICAg
ICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yRGF0YS52YWx1
ZSgpLmZpcnN0WzBdLCBjb2xvckRhdGEudmFsdWUoKS5maXJzdFsxXSwgY29sb3JEYXRhLnZhbHVl
KCkuZmlyc3RbMl0sIGNvbG9yRGF0YS52YWx1ZSgpLmZpcnN0WzNdLCBjb2xvckRhdGEudmFsdWUo
KS5zZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKaW5kZXggZWI3OTM0
Nzk1MGY1NDJiMzZlYjZmMjcwM2UwNjRlZWJiMDEwZDI4Yi4uNDcyNzE5YjMzNWE2ZjAyZWFiYjc5
ZGYyYzQ1ZjYxMmU5ZmQwZWFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5o
CkBAIC0xNzEsNyArMTcxLDcgQEAgY2xhc3MgQ1NTUGFyc2VyIHsKICAgICAgICAgU291cmNlU2l6
ZShNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYmLCBSZWY8Q1NTVmFsdWU+JiYpOwogICAgIH07CiAgICAg
VmVjdG9yPFNvdXJjZVNpemU+IHBhcnNlU2l6ZXNBdHRyaWJ1dGUoU3RyaW5nVmlldyk7Ci0gICAg
T3B0aW9uYWw8U291cmNlU2l6ZT4gc291cmNlU2l6ZShNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYmLCBD
U1NQYXJzZXJWYWx1ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlU2l6ZT4gc291cmNlU2l6
ZShNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYmLCBDU1NQYXJzZXJWYWx1ZSYpOwogCiAgICAgYm9vbCBw
YXJzZUZpbGxJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAK
QEAgLTIxMCw4ICsyMTAsOCBAQCBjbGFzcyBDU1NQYXJzZXIgewogICAgIHN0YXRpYyBWZWN0b3I8
ZG91YmxlPiBwYXJzZUtleWZyYW1lU2VsZWN0b3IoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29s
IHBhcnNlVHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5kKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4m
LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIE9w
dGlvbmFsPGRvdWJsZT4gcGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFy
c2VyVmFsdWVMaXN0Jik7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBwYXJzZVNwcmluZ1RpbWluZ0Z1
bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlz
dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwYXJzZVNwcmluZ1RpbWluZ0Z1bmN0aW9u
VmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7CiAgICAgYm9vbCBwYXJzZUFuaW1hdGlvblByb3Bl
cnR5KENTU1Byb3BlcnR5SUQsIFJlZlB0cjxDU1NWYWx1ZT4mLCBBbmltYXRpb25QYXJzZUNvbnRl
eHQmKTsKICAgICBib29sIHBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUFuaW1hdGlvblNob3J0aGFuZChDU1NQcm9w
ZXJ0eUlELCBib29sIGltcG9ydGFudCk7CkBAIC0yNzYsNyArMjc2LDcgQEAgY2xhc3MgQ1NTUGFy
c2VyIHsKIAogICAgIGJvb2wgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJiwgaW50
KiBjb2xvclZhbHVlcywgYm9vbCBwYXJzZUFscGhhKTsKICAgICBib29sIHBhcnNlSFNMUGFyYW1l
dGVycyhDU1NQYXJzZXJWYWx1ZSYsIGRvdWJsZSogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBo
YSk7Ci0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JT
cGFjZT4+IHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3Bh
Y2U+PiBwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJik7CiAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZUNvbG9yKENTU1BhcnNlclZhbHVlKiA9IG51
bGxwdHIpOwogICAgIENvbG9yIHBhcnNlQ29sb3JGcm9tVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsK
ICAgICB2b2lkIHBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiwgQ1NTU2VsZWN0b3JMaXN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKaW5kZXggMzkzMjQ0
NTlhYjk5Y2I3MDMxMjI4MDY1MzkxNjZhYThlMWY0MWY2NC4uYTlmMzE4N2NjZjgyMzRhNGEzMTAz
MjYzYWY2Yjc2NDM4N2QyYTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNv
bXBpbGVyLmNwcApAQCAtMzI2LDggKzMyNiw4IEBAIGNsYXNzIFNlbGVjdG9yQ29kZUdlbmVyYXRv
ciB7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRIYXNGb2N1c1dpdGhpbihBc3NlbWJsZXI6Okp1
bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOwogCiAgICAgLy8gSGVscGVycy4KLSAgICB2b2lkIGdlbmVy
YXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSwgT3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdp
c3RlcklEPiB2YWx1ZSA9IHsgfSk7Ci0gICAgdm9pZCBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24o
QXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCwgQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSwgT3B0aW9uYWw8QXNzZW1ibGVyOjpS
ZWdpc3RlcklEPiB2YWx1ZSA9IHsgfSk7CisgICAgdm9pZCBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRp
b25JZlJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6
UmVsYXRpb246OlR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1
ZSA9IHsgfSk7CisgICAgdm9pZCBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQs
IFN0eWxlOjpSZWxhdGlvbjo6VHlwZSwgc3RkOjpvcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQ+IHZhbHVlID0geyB9KTsKICAgICBBc3NlbWJsZXI6Okp1bXAgYnJhbmNoT25SZXNvbHZpbmdN
b2RlV2l0aENoZWNraW5nQ29udGV4dChBc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIFNl
bGVjdG9yQ2hlY2tlcjo6TW9kZSwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4
dCk7CiAgICAgQXNzZW1ibGVyOjpKdW1wIGJyYW5jaE9uUmVzb2x2aW5nTW9kZShBc3NlbWJsZXI6
OlJlbGF0aW9uYWxDb25kaXRpb24sIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSwgQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRJc0Zp
cnN0TGluayhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBlbGVtZW50KTsKQEAgLTIxNzUsNyArMjE3NSw3IEBAIHZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZUluZGlyZWN0QWRqYWNlbnRUcmVlV2Fsa2VyKEFzc2VtYmxlcjo6
SnVtcExpCiAgICAgbG9jYWxGYWlsdXJlQ2FzZXMubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1i
bGVyKTsKIH0KIAotdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVS
ZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0
eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxhdGlvblR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRD4gdmFsdWUpCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRT
dHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHlsZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVu
dCwgU3R5bGU6OlJlbGF0aW9uOjpUeXBlIHJlbGF0aW9uVHlwZSwgc3RkOjpvcHRpb25hbDxBc3Nl
bWJsZXI6OlJlZ2lzdGVySUQ+IHZhbHVlKQogewogICAgIGlmIChtX3NlbGVjdG9yQ29udGV4dCA9
PSBTZWxlY3RvckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3IpCiAgICAgICAgIHJldHVybjsKQEAgLTIx
OTMsNyArMjE5Myw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0eWxlUmVsYXRpb25GdW5jdGlvbihTZWxl
Y3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCogY2hlY2tpbmdDCiAgICAgY2hlY2tpbmdDb250
ZXh0LT5zdHlsZVJlbGF0aW9ucy5hcHBlbmQoeyAqZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpB
ZmZlY3RlZEJ5QWN0aXZlLCAxIH0pOwogfQogCi12b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0Nv
bnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5
cGUgcmVsYXRpb25UeXBlLCBPcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVySUQ+IHZhbHVlKQor
dm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbihBc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgY2hlY2tpbmdDb250ZXh0LCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQg
ZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpUeXBlIHJlbGF0aW9uVHlwZSwgc3RkOjpvcHRpb25h
bDxBc3NlbWJsZXI6OlJlZ2lzdGVySUQ+IHZhbHVlKQogewogICAgIEFTU0VSVChtX3NlbGVjdG9y
Q29udGV4dCAhPSBTZWxlY3RvckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCA2NGNi
YmY5ODhiMjQ1MWRlMTU1MDQzZGFjNzYwYzdlYjMzOGI5ZWY1Li5kOTU1ZmVmZDUwYTZlMDVkZDE0
NTU5ZDEwYmJlNWZjNjA3ZmZkYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWVJdGVtIHsKICAgICBUeXBlIG1fdHlwZTsKICAgICBSZWZQdHI8
RG9jdW1lbnQ+IG1fb2xkRG9jdW1lbnQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX25ld0RvY3Vt
ZW50OwotICAgIE9wdGlvbmFsPFF1YWxpZmllZE5hbWU+IG1fYXR0cmlidXRlTmFtZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFF1YWxpZmllZE5hbWU+IG1fYXR0cmlidXRlTmFtZTsKICAgICBBdG9taWNT
dHJpbmcgbV9vbGRWYWx1ZTsKICAgICBBdG9taWNTdHJpbmcgbV9uZXdWYWx1ZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCBkNmIyMDRkMmNhOWU4MzdlMzAyZGUyYWFjMGVmODRmYThk
NTIxNGQwLi4zODQzNWNlNjM5Nzk5ZmJmNmY2ZGNhYjlmMmExMGYwNDZhZmFmMDlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzMzYsNyArNDMzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IERvY3VtZW50OjpzZXREb21haW4oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pCiBTdHJpbmcgRG9j
dW1lbnQ6Omxhc3RNb2RpZmllZCgpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25v
OwotICAgIE9wdGlvbmFsPHN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZGF0ZVRpbWU7CisgICAg
c3RkOjpvcHRpb25hbDxzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGRhdGVUaW1lOwogICAgIGlm
IChtX2ZyYW1lICYmIGxvYWRlcigpKQogICAgICAgICBkYXRlVGltZSA9IGxvYWRlcigpLT5yZXNw
b25zZSgpLmxhc3RNb2RpZmllZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYWQ3N2Nj
NWE1YjE1M2FlNjc4MTFmZWZmN2JiZjAzODc3NGMwMjA3YS4uNTY5YjBlYTA5ZmNjYzg5MTkwYWMx
NGFiZjJmOTBlNzJhMmFiOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjg3LDcgKzY4
Nyw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50
ZXJJZk5vdFZpc2libGUpCiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsQnkoY29uc3QgU2Nyb2xsVG9P
cHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFs
dWVPcigwKSwgb3B0aW9ucy50b3AudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHNjcm9sbEJ5KG9w
dGlvbnMubGVmdC52YWx1ZV9vcigwKSwgb3B0aW9ucy50b3AudmFsdWVfb3IoMCkpOwogfQogCiBz
dGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxpemVOb25GaW5pdGVWYWx1ZShkb3VibGUgZikKQEAg
LTMwMTEsNyArMzAxMSw3IEBAIFVSTCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiBpbnQgRWxlbWVudDo6Z2V0SW50ZWdy
YWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkp
LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3Jh
bEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUp
CkBAIC0zMDIxLDcgKzMwMjEsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZQogCiB1bnNpZ25l
ZCBFbGVtZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7CisgICAg
cmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSkpLnZhbHVlX29yKDApOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldFVuc2lnbmVkSW50ZWdy
YWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgdW5zaWduZWQg
dmFsdWUpCkBAIC0zNTEwLDEwICszNTEwLDEwIEBAIHZvaWQgRWxlbWVudDo6ZGlkRGV0YWNoUmVu
ZGVyZXJzKCkKICAgICBBU1NFUlQoaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwog
fQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8RWxl
bWVudFN0eWxlPiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2
ZUNhbGxiYWNrcygpKTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0
IEVsZW1lbnQmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMDE4MjI5MWM5OTgyNmRkNTRh
NTlhNzQ2MjVhMDY3MTk2YWQ4MGQ5OC4uNzIwMjQwOGU5NGZhZmZhOTQ5ZDFhZmViMzViYWYxZmZl
NWQ0MmQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01MTksNyArNTE5LDcgQEAgY2xhc3MgRWxl
bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNo
UmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGV0YWNoUmVuZGVyZXJzKCk7Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOworICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5
bGUpOwogCiAgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBp
bmNsdWRlc0ZpeGVkUG9zaXRpb25FbGVtZW50cykgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmluZGV4IGE3NjRhOWEwNGNjNmUy
MzcxYjgxOTcyN2I1ZDliZjlkNzUxZWI3ZmIuLmRmMzcwM2FjYTI0ODc3MjVlZjIwYzY0MDg3NmYx
NDI4NjRiMmQzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0
b3JBc3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFz
c2VydGlvbnMuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBFbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zIHsKIHByaXZhdGU6CiAgICAgY29uc3QgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgdWlu
dDY0X3QgbV9pbml0aWFsRE9NVHJlZVZlcnNpb247Ci0gICAgT3B0aW9uYWw8Tm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uPiBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb247CisgICAgc3RkOjpvcHRpb25h
bDxOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24+IG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbjsKIH07
CiAKIC8vIEZJWE1FOiBObyByZWFsIHBvaW50IGluIGRvaW5nIHRoZXNlIGFzIGlubGluZXM7IHRo
ZXkgYXJlIGZvciBkZWJ1Z2dpbmcgYW5kIHdlIHVzdWFsbHkgdHVybiBvZmYgaW5saW5pbmcgaW4g
ZGVidWcgYnVpbGRzLgpAQCAtNjAsMTQgKzYwLDE0IEBAIGlubGluZSBib29sIEVsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnM6OmRvbVRyZWVIYXNNdXRhdGVkKCkgY29uc3QKIAogaW5saW5lIHZvaWQg
RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6ZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQog
ewotICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IE51bGxvcHQ7CisgICAgbV9ldmVudERp
c3BhdGNoQXNzZXJ0aW9uID0gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50
SXRlcmF0b3JBc3NlcnRpb25zOjpjbGVhcigpCiB7CiAgICAgbV9kb2N1bWVudCA9IG51bGxwdHI7
CiAgICAgbV9pbml0aWFsRE9NVHJlZVZlcnNpb24gPSAwOwotICAgIG1fZXZlbnREaXNwYXRjaEFz
c2VydGlvbiA9IE51bGxvcHQ7CisgICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gc3RkOjpu
dWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oCmluZGV4IDc1N2E4NDVmYmRiOTQ2ODliMDAxYmNiNmI0ZDNlMDJiYTA1ZTZjYmQuLmVhYTQ1
ODFkYzkyNTdiMzBhMzZiMjRmNDQxNDhjMzVlNGYxNDY3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRp
b25Pci5oCkBAIC02OCw3ICs2OCw3IEBAIHRlbXBsYXRlPD4gY2xhc3MgRXhjZXB0aW9uT3I8dm9p
ZD4gewogICAgIEV4Y2VwdGlvbiYmIHJlbGVhc2VFeGNlcHRpb24oKTsKIAogcHJpdmF0ZToKLSAg
ICBPcHRpb25hbDxFeGNlcHRpb24+IG1fZXhjZXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiBtX2V4Y2VwdGlvbjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGU+
IGlubGluZSBFeGNlcHRpb25PcjxSZXR1cm5UeXBlPjo6RXhjZXB0aW9uT3IoRXhjZXB0aW9uJiYg
ZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAppbmRleCBkOGIyZGYzMGNlM2RhMThmMTRjYmU2NDg1NjQ0NWMxOTQ1OTNjYTc2Li5iY2U4YjYz
YTQyMmM3ZTc4NjlhZjI4NWY3MDc4YmU3Mzk4OGYyMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgQ1NT
UGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0Rm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxJbmxpbmVTdHls
ZVNoZWV0Q2FjaGVLZXk+IG1ha2VJbmxpbmVTdHlsZVNoZWV0Q2FjaGVLZXkoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW5s
aW5lU3R5bGVTaGVldENhY2hlS2V5PiBtYWtlSW5saW5lU3R5bGVTaGVldENhY2hlS2V5KGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICAvLyBPbmx5IGNh
Y2hlIGZvciBzaGFkb3cgdHJlZXMuIE1haW4gZG9jdW1lbnQgaW5saW5lIHN0eWxlc2hlZXRzIGFy
ZSBnZW5lcmFsbHkgdW5pcXVlIGFuZCBjYW4ndCBiZSBzaGFyZWQgYmV0d2VlbiBkb2N1bWVudHMu
CiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgcmVsYXhlZCB3aGVuIGEgc3R5bGVzaGVldCBk
b2VzIG5vdCBjb250YWluIGRvY3VtZW50LXJlbGF0aXZlIFVSTHMgKG9yICN1cmxzKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5oCmluZGV4IGVjN2RlOTZiOGQzNzczN2JmMTEwMTM2YjUyMjI5
NWI3ZTk4YTE2YWIuLmI2ZGRkZTNjM2IxZjA4MmI5YjNjZmMzMzc4NDBlYTMyZjI0MjZjODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBLZXli
b2FyZEV2ZW50IGZpbmFsIDogcHVibGljIFVJRXZlbnRXaXRoS2V5U3RhdGUgewogCiAgICAgICAg
IC8vIExlZ2FjeS4KICAgICAgICAgU3RyaW5nIGtleUlkZW50aWZpZXI7Ci0gICAgICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBrZXlMb2NhdGlvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4ga2V5TG9jYXRpb247CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8S2V5Ym9hcmRFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIs
IElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcAppbmRleCA0ZjVjYTk1M2EwNDgzN2VmZmMxMTRh
YzM0ZTMzNzkzNzkzOWI2MTA5Li40ZDNjODk4MDA5MGE5MTA1ZjEwYzBiMDBhZTQxZTNmY2I4MWQ2
MzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcApA
QCAtNTEsMTUgKzUxLDE1IEBAIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojppc0xvYWRlZCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpOwogfQogCi1PcHRp
b25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzRXJy
b3JlZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFi
bGVDbGFzc2ljU2NyaXB0Ojp3YXNFcnJvcmVkKCkgY29uc3QKIHsKICAgICBpZiAobV9lcnJvcikK
ICAgICAgICAgcmV0dXJuIG1fZXJyb3I7CiAKICAgICBpZiAobV9jYWNoZWRTY3JpcHQtPmVycm9y
T2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIEVycm9yIHsgRXJyb3JUeXBlOjpDYWNoZWRTY3Jp
cHQsIE51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIEVycm9yIHsgRXJyb3JUeXBlOjpDYWNoZWRT
Y3JpcHQsIHN0ZDo6bnVsbG9wdCB9OwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Ondhc0NhbmNl
bGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNz
aWNTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaApp
bmRleCBmZDM4Zjc3YWY3ZDM0NGI4OTMyOTEyZGEyOTkxNWE3MmFkOWJkNWMyLi5kMjIxODQ1OWVk
NDFkMjQxNTg0Y2RlNDM5NjkyNGIzNjY1MWRhODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIExvYWRhYmxlQ2xh
c3NpY1NjcmlwdCBmaW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRS
ZXNvdXJjCiAKICAgICBzdGF0aWMgUmVmPExvYWRhYmxlQ2xhc3NpY1NjcmlwdD4gY3JlYXRlKENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4mJik7CiAgICAgYm9vbCBpc0xvYWRlZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEVycm9yPiB3YXNFcnJvcmVkKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gd2FzRXJyb3JlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIENh
Y2hlZFNjcmlwdCYgY2FjaGVkU2NyaXB0KCkgeyByZXR1cm4gKm1fY2FjaGVkU2NyaXB0OyB9CkBA
IC01OCw3ICs1OCw3IEBAIGNsYXNzIExvYWRhYmxlQ2xhc3NpY1NjcmlwdCBmaW5hbCA6IHB1Ymxp
YyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjCiAgICAgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKLSAgICBPcHRpb25hbDxFcnJvcj4gbV9l
cnJvciB7IE51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgc3Rk
OjpudWxsb3B0IH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oCmluZGV4
IGE4YzUwZWQ1NTdiMzJlMGJiZTM2YTFkMzEwMDIxODYxZWE2ZTg4MjYuLmNiYjE1MGY2YTM3MGVh
MjNiN2VhMzg3MDQyYjNjMWFiMmZiNWIwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZVNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlw
dC5oCkBAIC01MSwxMyArNTEsMTMgQEAgY2xhc3MgTG9hZGFibGVTY3JpcHQgOiBwdWJsaWMgUmVm
Q291bnRlZDxMb2FkYWJsZVNjcmlwdD4gewogCiAgICAgc3RydWN0IEVycm9yIHsKICAgICAgICAg
RXJyb3JUeXBlIHR5cGU7Ci0gICAgICAgIE9wdGlvbmFsPENvbnNvbGVNZXNzYWdlPiBjb25zb2xl
TWVzc2FnZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1l
c3NhZ2U7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxvYWRhYmxlU2NyaXB0KCkgeyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxFcnJvcj4gd2FzRXJyb3JlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8RXJyb3I+IHdhc0Vycm9yZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHdhc0Nh
bmNlbGVkKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoU2NyaXB0RWxl
bWVudCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggNzEzZDczZDQ1
MTQ4NjBmNDUyYWIwYTUwMDNlNWQyNDI1YzQzYjBjYi4uZmU5YzJjNTkxZDhkYjZkNzJjMmI0NzZm
M2U2NjQyYzZmYzNiNDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KEV4ZWNTdGF0ZSYg
c3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgSW4KIHsKIH0KIAotaW5saW5lIE1lc3Nh
Z2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlv
bmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYmIHBvcnRzKQoraW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYm
IHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiAgICAgOiBFdmVu
dChldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFU
eXBlKERhdGFUeXBlU2VyaWFsaXplZFNjcmlwdFZhbHVlKQogICAgICwgbV9kYXRhQXNTZXJpYWxp
emVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSkKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIE1l
c3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbikKIHsKIH0KIAotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UpCitS
ZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mJiBwb3J0cywgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRp
b25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBX
VEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9ydHMpKSk7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAg
TWVzc2FnZUV2ZW50Ojp+TWVzc2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6
OmluaXRNZXNzYWdlRXZlbnQoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBKU1ZhbHVlIGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNz
YWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBw
b3J0cykKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEV4ZWNTdGF0ZSYgc3Rh
dGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgSlNWYWx1ZSBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKIHsKICAgICBpZiAoZGlzcGF0Y2hl
ZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBNZXNzYWdlRXZl
bnQ6OmluaXRNZXNzYWdlRXZlbnQoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLAogICAgIG1fcG9ydHMgPSBXVEZNb3ZlKHBvcnRzKTsKIH0KIAotdm9pZCBNZXNzYWdl
RXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQs
IE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYmIHBvcnRzKQordm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2
ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMp
CiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5oCmluZGV4IDRlNjk0ZDQxNGE0OGUwYWZlZThiNmJmMDA1NDc4NTU1MmIxOGQy
ZTMuLjcxMGFhY2Y4NDFlZDM2MzBkNjdjZGIxMjgxMGJmZGNiMjE2MGEzOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgTWVzc2FnZUV2ZW50U291
cmNlID0gVmFyaWFudDxSZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47CiAK
IGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmln
aW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3Nh
Z2VFdmVudFNvdXJjZT4mJiBzb3VyY2UgPSBOdWxsb3B0KTsKKyAgICBzdGF0aWMgUmVmPE1lc3Nh
Z2VFdmVudD4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3Vy
Y2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQpOwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZShSZWY8QmxvYj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CkBA
IC01MywxNSArNTMsMTUgQEAgY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50
IHsKICAgICAgICAgSlNDOjpKU1ZhbHVlIGRhdGE7CiAgICAgICAgIFN0cmluZyBvcmlnaW47CiAg
ICAgICAgIFN0cmluZyBsYXN0RXZlbnRJZDsKLSAgICAgICAgT3B0aW9uYWw8TWVzc2FnZUV2ZW50
U291cmNlPiBzb3VyY2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNl
PiBzb3VyY2U7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKICAg
ICB9OwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkID0gSXNUcnVzdGVk
OjpObyk7CiAKICAgICB2aXJ0dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdE1l
c3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgSlNDOjpKU1ZhbHVlIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdl
RXZlbnRTb3VyY2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKLSAgICB2b2lk
IGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlv
bmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYp
OworICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgSlNDOjpKU1Zh
bHVlIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiYpOworICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RXZlbnRJZDsgfQpAQCAtOTIsNyArOTIsNyBAQCBj
bGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHJpdmF0ZToKICAgICBN
ZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBB
dG9taWNTdHJpbmcmLCBJbml0JiYsIElzVHJ1c3RlZCk7Ci0gICAgTWVzc2FnZUV2ZW50KFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIE1lc3NhZ2VFdmVudChSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4m
JiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOwogICAgIE1lc3NhZ2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwogICAg
IE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsK
ICAgICBNZXNzYWdlRXZlbnQoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
OwpAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBF
dmVudCB7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2RhdGFBc0FycmF5QnVmZmVyOwogICAg
IFN0cmluZyBtX29yaWdpbjsKICAgICBTdHJpbmcgbV9sYXN0RXZlbnRJZDsKLSAgICBPcHRpb25h
bDxNZXNzYWdlRXZlbnRTb3VyY2U+IG1fc291cmNlOworICAgIHN0ZDo6b3B0aW9uYWw8TWVzc2Fn
ZUV2ZW50U291cmNlPiBtX3NvdXJjZTsKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4g
bV9wb3J0czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRl
eCBmMTcwMDFmYjI2OWJiYzE5YmM4NjI3NGU1N2YyZDU1YWYxYzZkZjRkLi4zMjU1NzlkY2M0MzBm
N2ZhZmQ3MDE5OGMyZGU4YzdlNzEwYzZkYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCkBAIC04MCw5ICs4MCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE11dGF0aW9u
T2JzZXJ2ZXI6Om9ic2VydmUoTm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5pdCkKICAgICAgICAg
b3B0aW9ucyB8PSBDaGlsZExpc3Q7CiAgICAgaWYgKGluaXQuc3VidHJlZSkKICAgICAgICAgb3B0
aW9ucyB8PSBTdWJ0cmVlOwotICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlT3Io
ZmFsc2UpKQorICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlX29yKGZhbHNlKSkK
ICAgICAgICAgb3B0aW9ucyB8PSBBdHRyaWJ1dGVPbGRWYWx1ZTsKLSAgICBpZiAoaW5pdC5jaGFy
YWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuY2hhcmFjdGVy
RGF0YU9sZFZhbHVlLnZhbHVlX29yKGZhbHNlKSkKICAgICAgICAgb3B0aW9ucyB8PSBDaGFyYWN0
ZXJEYXRhT2xkVmFsdWU7CiAKICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gYXR0cmlidXRlRmls
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKaW5kZXggMDM1ZGI2NGY0MzZm
NTliZjY5NDhhNWE0OWJmZmU0NDcyODdlNjAwMC4uYjdjNzFiZDUxMTI4OTYzODk3ZjYzZDgyOWVk
Y2MxMTM5ZTg0MzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCkBAIC03
MywxMiArNzMsMTIgQEAgY2xhc3MgTXV0YXRpb25PYnNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PE11dGF0aW9uT2JzZXJ2ZXI+IHsKIAogICAgIHN0cnVjdCBJbml0IHsKICAgICAgICAgYm9vbCBj
aGlsZExpc3Q7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZXM7Ci0gICAgICAgIE9w
dGlvbmFsPGJvb2w+IGNoYXJhY3RlckRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
YXR0cmlidXRlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBjaGFyYWN0ZXJEYXRhOwog
ICAgICAgICBib29sIHN1YnRyZWU7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZU9s
ZFZhbHVlOwotICAgICAgICBPcHRpb25hbDxib29sPiBjaGFyYWN0ZXJEYXRhT2xkVmFsdWU7Ci0g
ICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhdHRyaWJ1dGVGaWx0ZXI7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYXR0cmlidXRlT2xkVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YU9sZFZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBhdHRyaWJ1dGVGaWx0ZXI7CiAgICAgfTsKIAogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IG9ic2VydmUoTm9kZSYsIGNvbnN0IEluaXQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKaW5kZXggZGQ5ZDRjZDc5OTIxZDFiNGMwY2Mw
NDg4MDgwYTcyMjM3Y2U4MjZlNi4uMjc3NTQyNTQyMzI1OWE1M2Q4Mjk5YzAzZGNiNDc4ZjM3YmRm
YzJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHls
ZVNoZWV0KCkKICNlbmRpZgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFN0cmluZyBj
aGFyc2V0ID0gYXR0cnMuZ2V0KCJjaGFyc2V0Iik7Ci0gICAgICAgICAgICAgICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSwgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgTnVsbG9wdCwg
Y2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVudCgpLmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNl
dCkpOworICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBk
b2N1bWVudCgpLmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOwogCiAgICAgICAgICAgICAg
ICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1
ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCAzY2JhOTRiZDBjMDU2MGI2YThhYTkyYmI5
YTlhZTYzMmUxMTg4YTg2Li40ZGFkZmJhYTRiZGU0MmRjMjdlMjcyNWY0YjhhMzU2MzcwM2E2NTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCkBAIC03NywxMSArNzcsMTEgQEAg
dm9pZCBQc2V1ZG9FbGVtZW50OjpjbGVhckhvc3RFbGVtZW50KCkKICAgICBtX2hvc3RFbGVtZW50
ID0gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBQc2V1ZG9FbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gUHNldWRvRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqKQogewogICAgIGF1dG8qIHN0eWxlID0gbV9ob3N0RWxlbWVudC0+cmVuZGVy
ZXIoKS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUobV9wc2V1ZG9JZCwgJnBhcmVudFN0eWxlKTsKICAg
ICBpZiAoIXN0eWxlKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gRWxlbWVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0
cigqc3R5bGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKaW5kZXggNTI2OWVk
YjE4YmU2MDMzNjUzZjNlZTViYjliZTBmOTY5MDhkNjM0YS4uMzY3YWRhNTc2YjI4NzJiOTc2NzNh
NDI0OTJmMTA5MTc1ZGEwOTVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVk
b0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCkBAIC00
Myw3ICs0Myw3IEBAIGNsYXNzIFBzZXVkb0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgRWxlbWVudCB7
CiAgICAgRWxlbWVudCogaG9zdEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hvc3RFbGVtZW50
OyB9CiAgICAgdm9pZCBjbGVhckhvc3RFbGVtZW50KCk7CiAKLSAgICBPcHRpb25hbDxFbGVtZW50
U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2VCb3VuZGFyeVBvaW50LmgKaW5kZXggNTk3YzkyZjU3Y2VlMzZmZDA3NjY0OTVlZGNkNjFm
YjE5MGE3ZTZjZi4uNzFjOTJjZGZjOWUxYTQ2ZTNjNmUxMTliMjJiYzNiZGY2YWVmNTIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaApAQCAtNTgsNyArNTgsNyBAQCBj
bGFzcyBSYW5nZUJvdW5kYXJ5UG9pbnQgewogCiBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBt
X2NvbnRhaW5lck5vZGU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZD4gbV9vZmZzZXRJ
bkNvbnRhaW5lciB7IDAgfTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1f
b2Zmc2V0SW5Db250YWluZXIgeyAwIH07CiAgICAgUmVmUHRyPE5vZGU+IG1fY2hpbGRCZWZvcmVC
b3VuZGFyeTsKIH07CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgdm9pZCBSYW5nZUJvdW5k
YXJ5UG9pbnQ6OnNldFRvQmVmb3JlQ2hpbGQoTm9kZSYgY2hpbGQpCiAgICAgQVNTRVJUKGNoaWxk
LnBhcmVudE5vZGUoKSk7CiAgICAgbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID0gY2hpbGQucHJldmlv
dXNTaWJsaW5nKCk7CiAgICAgbV9jb250YWluZXJOb2RlID0gY2hpbGQucGFyZW50Tm9kZSgpOwot
ICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVmb3JlQm91bmRhcnkgPyBOdWxsb3B0
IDogT3B0aW9uYWw8dW5zaWduZWQ+KDApOworICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2No
aWxkQmVmb3JlQm91bmRhcnkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PigwKTsKIH0KIAogaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0FmdGVyQ2hp
bGQoTm9kZSYgY2hpbGQpCkBAIC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3Vu
ZGFyeVBvaW50OjpzZXRUb0FmdGVyQ2hpbGQoTm9kZSYgY2hpbGQpCiAgICAgQVNTRVJUKGNoaWxk
LnBhcmVudE5vZGUoKSk7CiAgICAgbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID0gJmNoaWxkOwogICAg
IG1fY29udGFpbmVyTm9kZSA9IGNoaWxkLnBhcmVudE5vZGUoKTsKLSAgICBtX29mZnNldEluQ29u
dGFpbmVyID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gTnVsbG9wdCA6IE9wdGlvbmFsPHVuc2ln
bmVkPigwKTsKKyAgICBtX29mZnNldEluQ29udGFpbmVyID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5
ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oMCk7CiB9CiAKIGlubGlu
ZSB2b2lkIFJhbmdlQm91bmRhcnlQb2ludDo6c2V0VG9TdGFydE9mTm9kZShSZWY8Tm9kZT4mJiBj
b250YWluZXIpCkBAIC0xNjEsNyArMTYxLDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBv
aW50OjpzZXRUb0VuZE9mTm9kZShSZWY8Tm9kZT4mJiBjb250YWluZXIpCiAgICAgICAgIG1fY2hp
bGRCZWZvcmVCb3VuZGFyeSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9jaGls
ZEJlZm9yZUJvdW5kYXJ5ID0gbV9jb250YWluZXJOb2RlLT5sYXN0Q2hpbGQoKTsKLSAgICAgICAg
bV9vZmZzZXRJbkNvbnRhaW5lciA9IG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA/IE51bGxvcHQgOiBP
cHRpb25hbDx1bnNpZ25lZD4oMCk7CisgICAgICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2No
aWxkQmVmb3JlQm91bmRhcnkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PigwKTsKICAgICB9CiB9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUgdm9pZCBSYW5nZUJv
dW5kYXJ5UG9pbnQ6OmNoaWxkQmVmb3JlV2lsbEJlUmVtb3ZlZCgpCiAKIGlubGluZSB2b2lkIFJh
bmdlQm91bmRhcnlQb2ludDo6aW52YWxpZGF0ZU9mZnNldCgpIGNvbnN0CiB7Ci0gICAgbV9vZmZz
ZXRJbkNvbnRhaW5lciA9IE51bGxvcHQ7CisgICAgbV9vZmZzZXRJbkNvbnRhaW5lciA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSYW5nZUJvdW5kYXJ5
UG9pbnQmIGEsIGNvbnN0IFJhbmdlQm91bmRhcnlQb2ludCYgYikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcAppbmRleCBhNjhmNDFmNWIxM2RlNmYyZmRhNGMyMDAzNzhhZDg1ZDUwMDE0
YmQzLi40NTY2MDQ1YTdiNzU1ZDI2NGFkMWNiZjY2ZGZhY2FjNjdlNWJiNGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBTY3JpcHRF
bGVtZW50OjpkaXNwYXRjaEVycm9yRXZlbnQoKQogICAgIG1fZWxlbWVudC5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwog
fQogCi1PcHRpb25hbDxTY3JpcHRFbGVtZW50OjpTY3JpcHRUeXBlPiBTY3JpcHRFbGVtZW50Ojpk
ZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVTdXBwb3J0IHN1cHBvcnRMZWdhY3lUeXBlcykg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxl
bWVudDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXBlU3VwcG9ydCBzdXBwb3J0TGVnYWN5
VHlwZXMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGlzTGVnYWN5U3VwcG9ydGVkSmF2YVNjcmlw
dExhbmd1YWdlKCkgaXMgbm90IHZhbGlkIEhUTUw1LiBJdCBpcyB1c2VkIGhlcmUgdG8gbWFpbnRh
aW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBsYXlvdXQgdGVzdHMuIFRo
ZSBzcGVjaWZpYyB2aW9sYXRpb25zIGFyZToKICAgICAvLyAtIEFsbG93aW5nIHR5cGU9amF2YXNj
cmlwdC4gdHlwZT0gc2hvdWxkIG9ubHkgc3VwcG9ydCBNSU1FIHR5cGVzLCBzdWNoIGFzIHRleHQv
amF2YXNjcmlwdC4KQEAgLTE1Myw3ICsxNTMsNyBAQCBPcHRpb25hbDxTY3JpcHRFbGVtZW50OjpT
Y3JpcHRUeXBlPiBTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cAog
ICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFR5cGU6OkNsYXNzaWM7CiAgICAgICAgIGlmIChpc0xl
Z2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZShsYW5ndWFnZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gU2NyaXB0VHlwZTo6Q2xhc3NpYzsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZSh0eXBlLnN0cmlwV2hpdGVTcGFjZSgpKSkK
ICAgICAgICAgcmV0dXJuIFNjcmlwdFR5cGU6OkNsYXNzaWM7CkBAIC0xNjUsNyArMTY1LDcgQEAg
T3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6ZGV0ZXJt
aW5lU2NyaXB0VHlwZShMZWdhY3lUeXAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodHlwZSwgIm1vZHVsZSIpKQogICAgICAgICByZXR1cm4gU2NyaXB0VHlwZTo6TW9kdWxl
OwogI2VuZGlmCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI3ByZXBh
cmUtYS1zY3JpcHQKQEAgLTMyOCw4ICszMjgsOCBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1
dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIAogdm9pZCBTY3Jp
cHRFbGVtZW50OjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJsZVNjcmlwdCYg
bG9hZGFibGVTY3JpcHQpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJv
cj4gZXJyb3IgPSBsb2FkYWJsZVNjcmlwdC53YXNFcnJvcmVkKCkpIHsKLSAgICAgICAgaWYgKE9w
dGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5j
b25zb2xlTWVzc2FnZSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJy
b3I+IGVycm9yID0gbG9hZGFibGVTY3JpcHQud2FzRXJyb3JlZCgpKSB7CisgICAgICAgIGlmIChz
dGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVy
cm9yLT5jb25zb2xlTWVzc2FnZSkKICAgICAgICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFk
ZENvbnNvbGVNZXNzYWdlKG1lc3NhZ2UtPnNvdXJjZSwgbWVzc2FnZS0+bGV2ZWwsIG1lc3NhZ2Ut
Pm1lc3NhZ2UpOwogICAgICAgICBkaXNwYXRjaEVycm9yRXZlbnQoKTsKICAgICB9IGVsc2UgaWYg
KCFsb2FkYWJsZVNjcmlwdC53YXNDYW5jZWxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuaAppbmRleCAxOGUzM2I1NGVhNzUwZjA1OWMxY2QwZmZlZGEyMzkzYWFhYTI4Y2FjLi4wMTU5
YzIyZTc5OTk3YmYxOWRhMmM2NDkxMjgzMDIyY2QyNTMyMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgU2NyaXB0RWxlbWVudCB7CiAKICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRt
bCNjb25jZXB0LXNjcmlwdC10eXBlCiAgICAgZW51bSBjbGFzcyBTY3JpcHRUeXBlIHsgQ2xhc3Np
YywgTW9kdWxlIH07Ci0gICAgT3B0aW9uYWw8U2NyaXB0VHlwZT4gZGV0ZXJtaW5lU2NyaXB0VHlw
ZShMZWdhY3lUeXBlU3VwcG9ydCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTY3JpcHRUeXBl
PiBkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVTdXBwb3J0KSBjb25zdDsKICAgICBib29s
IGlnbm9yZXNMb2FkUmVxdWVzdCgpIGNvbnN0OwogICAgIGJvb2wgaXNTY3JpcHRGb3JFdmVudFN1
cHBvcnRlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdl
c3R1cmVJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmNwcAppbmRleCBjYjI4ZDFmMGYxZjgwMDBjYjdjOTQ0NDYyN2IxYzNmNTY3MjVlYTQwLi5l
Y2U2OGYxZDU4YmY3OTg0MTVkZWM1MTJlMzEwOWI4Y2QyMzgwZWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgVXNlckdl
c3R1cmVUb2tlbjo6flVzZXJHZXN0dXJlVG9rZW4oKQogICAgICAgICBvYnNlcnZlcigqdGhpcyk7
CiB9CiAKLVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGljYXRvcihPcHRpb25h
bDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4gc3RhdGUsIERvY3VtZW50KiBkb2N1bWVudCkK
K1VzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGljYXRvcihzdGQ6Om9wdGlvbmFs
PFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogbV9wcmV2aW91c1Rva2VuKGN1cnJlbnRUb2tlbigpKQogewogICAgIC8vIFNpbGVudGx5
IGlnbm9yZSBVc2VyR2VzdHVyZUluZGljYXRvcnMgb24gbm9uIG1haW4gdGhyZWFkcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKaW5kZXggMGFiMDc4NDU2ZjNjMTcw
ZDk5ZmNjN2U3ZjBlZDZmNTRmZGZiYzU2Mi4uZjA0NGY2NWFhMTZkMWVhNmQzNmE5YmJlZDU3MzAy
MzViODQxN2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5k
aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgK
QEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgVXNlckdlc3R1cmVJbmRpY2F0b3IgewogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCk7CiAK
ICAgICAvLyBJZiBhIGRvY3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgbGFzdCBrbm93biB1c2VyIGdl
c3R1cmUgdGltZXN0YW1wIGlzIHVwZGF0ZWQuCi0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
VXNlckdlc3R1cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+
LCBEb2N1bWVudCogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2Vy
R2VzdHVyZUluZGljYXRvcihzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PiwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVXNl
ckdlc3R1cmVJbmRpY2F0b3IoUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+KTsKICAgICBXRUJDT1JF
X0VYUE9SVCB+VXNlckdlc3R1cmVJbmRpY2F0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAwNGI1YjBjODlkZWVmNjMwNmQw
NmIzYmE5NDJkMTYxMzI1M2UzYWYxLi5jYmVhNjQyZTVmMDAxZWY0NzBjMWFlNDE0OGRhOTIxYmY4
NTIyMDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcApAQCAtMTUzNiwxMSArMTUzNiwxMSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAog
ICAgIH0KIH0KIAotT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OnNob3VsZEJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
VmlzaWJsZVNlbGVjdGlvbj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNob3VsZEJyZWFrT3V0T2ZF
bXB0eUxpc3RJdGVtKCkgY29uc3QKIHsKICAgICBhdXRvIGVtcHR5TGlzdEl0ZW0gPSBlbmNsb3Np
bmdFbXB0eUxpc3RJdGVtKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKTsKICAgICBp
ZiAoIWVtcHR5TGlzdEl0ZW0pCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBsaXN0Tm9kZSA9IGVtcHR5TGlzdEl0ZW0tPnBh
cmVudE5vZGUoKTsKICAgICAvLyBGSVhNRTogQ2FuJ3Qgd2UgZG8gc29tZXRoaW5nIGJldHRlciB3
aGVuIHRoZSBpbW1lZGlhdGUgcGFyZW50IHdhc24ndCBhIGxpc3Qgbm9kZT8KQEAgLTE1NDgsNyAr
MTU0OCw3IEBAIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpzaG91bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpCiAgICAgICAgIHx8ICghbGlzdE5vZGUt
Pmhhc1RhZ05hbWUodWxUYWcpICYmICFsaXN0Tm9kZS0+aGFzVGFnTmFtZShvbFRhZykpCiAgICAg
ICAgIHx8ICFsaXN0Tm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpCiAgICAgICAgIHx8IGxpc3ROb2Rl
ID09IGVtcHR5TGlzdEl0ZW0tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gVmlz
aWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLnByZXZpb3VzKEJhY2t3YXJk
RGVsZXRpb24pLCBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggYWQ3Yzc5ZmYxZGE2MTYwYjkz
ZDg3YjBkZTA5Y2Y0ZTc3OTI0NjM4Zi4uNGQ1NTk1N2M3MGU2YjY2YzE4OTdjMzk1MDU1MGNkMGM2
YTA2MDNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuaApAQCAtMjAxLDcgKzIwMSw3IEBAIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kIDogcHVi
bGljIEVkaXRDb21tYW5kIHsKICAgICB2b2lkIGNsb25lUGFyYWdyYXBoVW5kZXJOZXdFbGVtZW50
KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgTm9kZSogb3V0ZXJO
b2RlLCBFbGVtZW50KiBibG9ja0VsZW1lbnQpOwogICAgIHZvaWQgY2xlYW51cEFmdGVyRGVsZXRp
b24oVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uID0gVmlzaWJsZVBvc2l0aW9uKCkpOwogICAg
IAotICAgIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHNob3VsZEJyZWFrT3V0T2ZFbXB0eUxp
c3RJdGVtKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBzaG91
bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpIGNvbnN0OwogICAgIGJvb2wgYnJlYWtPdXRPZkVt
cHR5TGlzdEl0ZW0oKTsKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBh
cmFncmFwaCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBhZDEzNDM1YWFkOTk2MWEz
OGQzZjlmZGEwMGFmNzdjYzhhNTg2M2RiLi5kNTM0NDdhNWJiZmRkMmI4NmM3MjVjZTQ4MTBkYjQ5
M2I3OGQ3Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBG
aWxlIGZpbmFsIDogcHVibGljIEJsb2IgewogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5n
IG1fbmFtZTsKIAotICAgIE9wdGlvbmFsPGludDY0X3Q+IG1fb3ZlcnJpZGVMYXN0TW9kaWZpZWRE
YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbV9vdmVycmlkZUxhc3RNb2RpZmllZERh
dGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmgKaW5kZXggYjY2OTZlZTJmOWYyYWVjYTA5MWU2NjMzMzQ3NTM2Nzc2Y2MzYzI4MC4u
OGEzOWEzOGU1ZTZmYmQwYmUwYzEyYzUyMDI5Yzc1MjdiYWQzZTJhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuaApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJh
c2UgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4gbV9jYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YTsKICAgICBib29sIG1faXNNYWluRnJhbWU7CiAgICAgYm9vbCBt
X2lzQ29tcG9zaXRlZDsKLSAgICBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IG1faGFzSW5z
ZWN1cmVDb250ZW50OworICAgIHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBtX2hh
c0luc2VjdXJlQ29udGVudDsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkRnJh
bWU+PiBtX2NoaWxkRnJhbWVzOwogfTsKQEAgLTgwLDcgKzgwLDcgQEAgY2xhc3MgQ2FjaGVkRnJh
bWUgOiBwcml2YXRlIENhY2hlZEZyYW1lQmFzZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEqIGNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEhhc0luc2VjdXJlQ29udGVudChIYXNJbnNlY3VyZUNvbnRlbnQp
OwotICAgIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNJbnNlY3VyZUNvbnRlbnQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9oYXNJbnNlY3VyZUNvbnRlbnQ7IH0KIAogICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6ZG9j
dW1lbnQ7CiAgICAgdXNpbmcgQ2FjaGVkRnJhbWVCYXNlOjp2aWV3OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01Ub2tlbkxpc3QuY3BwCmluZGV4IGVjN2NjNDEwNDEyMzVhZjVmY2I5OTYxODQ3NzY5ZDNlNTdm
OGExMTQuLmQ2ODFjMjdjNjBlMzAzMTk5MmU5NzQ5YzVmY2Y3NGU0NGJmNzBjNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBET01Ub2tlbkxpc3Q6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQog
ICAgIHJldHVybiByZW1vdmVJbnRlcm5hbCgmdG9rZW4uc3RyaW5nKCksIDEpOwogfQogCi1FeGNl
cHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRv
a2VuLCBPcHRpb25hbDxib29sPiBmb3JjZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IERPTVRva2VuTGlz
dDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Zm9yY2UpCiB7CiAgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVRva2VuKHRva2VuKTsKICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMTQyLDcgKzE0Miw3IEBAIEV4Y2VwdGlvbk9y
PGJvb2w+IERPTVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIE9w
dGlvbmFsPGJvb2w+CiAgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5zKCk7CiAKICAgICBp
ZiAodG9rZW5zLmNvbnRhaW5zKHRva2VuKSkgewotICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3Io
ZmFsc2UpKSB7CisgICAgICAgIGlmICghZm9yY2UudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAg
ICAgICB0b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4pOwogICAgICAgICAgICAgdXBkYXRlQXNzb2Np
YXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5oCmluZGV4IDliOTg3ZDljOTQ3NmNkODUwMDRhMWM2NDE5
NjljMGMzMjY3NjE1OTYuLjUzYWM1ZTJmNGNiZTJiYzNlOTU2NDU5YTY3ZWY2NTVkYTZiNWZkY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBE
T01Ub2tlbkxpc3QgewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBBdG9taWNTdHJp
bmcmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgVmVjdG9yPFN0cmluZz4m
KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Ym9vbD4gdG9nZ2xlKGNvbnN0IEF0b21pY1N0
cmluZyYsIE9wdGlvbmFsPGJvb2w+IGZvcmNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25Pcjxib29sPiB0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxib29s
PiBmb3JjZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZShjb25zdCBBdG9taWNTdHJp
bmcmIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Rva2VuKTsKICAgICBFeGNlcHRpb25P
cjxib29sPiBzdXBwb3J0cyhTdHJpbmdWaWV3IHRva2VuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAxNmZhYzBlMmQ3OGI1N2JmOGZjODRlNmE1ODhm
ZTBjZDk4ZDQxYmRlLi4wMjQ4YTY1ZjI2ZTMyMzZmZjBlYjM1Mjc4ZGZiMWM1MWQwMGQwOWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzk1LDcgKzM5
NSw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkK
ICNlbmRpZgogCiAgICAgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciA9IGhh
c1JlbChSZWxhdGlvbjo6Tm9SZWZlcnJlcikgPyBOZXZlclNlbmRSZWZlcnJlciA6IE1heWJlU2Vu
ZFJlZmVycmVyOwotICAgIGF1dG8gbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBoYXNSZWwoUmVsYXRp
b246Ok5vT3BlbmVyKSA/IG1ha2VPcHRpb25hbChOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJl
c3MpIDogTnVsbG9wdDsKKyAgICBhdXRvIG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gaGFzUmVsKFJl
bGF0aW9uOjpOb09wZW5lcikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OlN1cHByZXNzKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2Vs
ZWN0ZWQoY29tcGxldGVkVVJMLCB0YXJnZXQoKSwgJmV2ZW50LCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBzaG91bGRTZW5kUmVmZXJyZXIsIGRvY3VtZW50KCkuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIG5ld0ZyYW1lT3BlbmVyUG9s
aWN5LCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAKICAgICBzZW5kUGluZ3MoY29tcGxldGVkVVJMKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZDFkM2YyNzVi
NjI3ZmY0MjllYmM1ZTliYTkxZjRjZDI1OWJkMTBjZS4uNjczYTU3NGJhMjE1ZGI0ZjMxMGI4NjBl
OWU3YzUzMWMwOTA1YTllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCBTdHJpbmcgSFRNTENhbnZhc0VsZW1lbnQ6OnRvRW5j
b2RpbmdNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBtaW1lVHlw
ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCi1FeGNlcHRpb25PcjxTdHJpbmc+IEhU
TUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5KQorRXhjZXB0aW9uT3I8U3RyaW5nPiBIVE1MQ2FudmFzRWxlbWVu
dDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5KQogewogICAgIGlmICghbV9vcmlnaW5DbGVhbikKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNFQ1VSSVRZX0VSUiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5oCmluZGV4IDJmNTc0MDVlNDQwODcyNzQwZDFhODAzZTM0MDJkM2YxYjc0MzU4YzQuLjU2
YzRmYWE5Mjc3MjAxYmU5OTBhZWYwZTk5ZTkyZDEyODhhN2YyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTkyLDggKzkyLDggQEAgY2xhc3MgSFRNTENhbnZh
c0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogI2VuZGlmCiAKICAgICBzdGF0
aWMgU3RyaW5nIHRvRW5jb2RpbmdNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IHRvRGF0YVVSTChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwotICAgIEV4Y2VwdGlvbk9y
PFN0cmluZz4gdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIHsgcmV0dXJuIHRvRGF0
YVVSTChtaW1lVHlwZSwgTnVsbG9wdCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjxTdHJpbmc+IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSk7CisgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgeyByZXR1cm4gdG9EYXRhVVJMKG1pbWVUeXBlLCBzdGQ6Om51
bGxvcHQpOyB9CiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKICAgICB2b2lkIGRpZERyYXco
Y29uc3QgRmxvYXRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGIz
MGQ3NmFkZmYyM2MyOGU5NzgwYjcxNjgwOTg4M2U1ZTI0Yjg1MzcuLjIwYzI4NDU1MzA3YmExYjEw
MDMxNGQ2NmFjYzc5NzgyZWNkOWM4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRp
QXR0cmlidXRlRm9yRGlyQXV0byhIVE1MRWxlbWVudCYgZWxlbWVudCkKIAogdW5zaWduZWQgSFRN
TEVsZW1lbnQ6OnBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGJvcmRlcldpZHRoID0g
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHZhbHVlKSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gYm9yZGVyV2lkdGggPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIodmFs
dWUpKQogICAgICAgICByZXR1cm4gYm9yZGVyV2lkdGgudmFsdWUoKTsKIAogICAgIHJldHVybiBo
YXNUYWdOYW1lKHRhYmxlVGFnKSA/IDEgOiAwOwpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgSFRN
TEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYKICAgICBpZiAobmFtZSA9PSB0YWJpbmRleEF0dHIpIHsKICAgICAgICAg
aWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5
SWZOZWVkZWQoKTsKLSAgICAgICAgZWxzZSBpZiAoT3B0aW9uYWw8aW50PiB0YWJJbmRleCA9IHBh
cnNlSFRNTEludGVnZXIodmFsdWUpKQorICAgICAgICBlbHNlIGlmIChzdGQ6Om9wdGlvbmFsPGlu
dD4gdGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgICAgIHNldFRh
YkluZGV4RXhwbGljaXRseSh0YWJJbmRleC52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGJkYjVhMzY3
ZjVlY2Q2NzdlMmMzNmYwNjYxZWExZWMwMmQyZDJmNmQuLjdmNDMwZTY0MjFmY2M2NjNhNGExMjM4
ZTBlOWJmZjRmODliMTlmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcApAQCAtODksNyArODksNyBAQCBIVE1MSW1hZ2VFbGVtZW50Ojp+SFRNTEltYWdlRWxlbWVu
dCgpCiAgICAgc2V0UGljdHVyZUVsZW1lbnQobnVsbHB0cik7CiB9CiAKLVJlZjxIVE1MSW1hZ2VF
bGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50
JiBkb2N1bWVudCwgT3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoLCBPcHRpb25hbDx1bnNpZ25lZD4g
aGVpZ2h0KQorUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZv
ckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB3aWR0aCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KQogewogICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdFJlZigqbmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCkpOwog
ICAgIGlmICh3aWR0aCkKQEAgLTM4MCw3ICszODAsNyBAQCB1bnNpZ25lZCBIVE1MSW1hZ2VFbGVt
ZW50Ojp3aWR0aChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKIHsKICAgICBpZiAoIXJl
bmRlcmVyKCkpIHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4g
ZXhwbGljaXQgcGl4ZWwgdmFsdWUKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoID0g
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24od2lkdGhBdHRyKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoID0g
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24od2lkdGhBdHRyKSk7CiAgICAgICAgIGlmICh3aWR0aCkKICAgICAgICAgICAgIHJldHVybiB3
aWR0aC52YWx1ZSgpOwogCkBAIC00MDUsNyArNDA1LDcgQEAgdW5zaWduZWQgSFRNTEltYWdlRWxl
bWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQogewogICAgIGlmICgh
cmVuZGVyZXIoKSkgewogICAgICAgICAvLyBjaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBh
biBleHBsaWNpdCBwaXhlbCB2YWx1ZQotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0
ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oaGVpZ2h0QXR0cikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBoZWln
aHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihoZWlnaHRBdHRyKSk7CiAgICAgICAgIGlmIChoZWlnaHQpCiAgICAgICAgICAgICBy
ZXR1cm4gaGVpZ2h0LnZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKaW5kZXggYzYzNTVhNDBhZDY0N2U2NzA2ZmM3OTNlZWE3YzQzNmQzNWIzYWRkYi4uNDFkNTkz
OWEyYjcxMTQ0ZDk5ZDg1MWJhNDA5ZmQ3YWMwZmY5NGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIEZvcm1OYW1lZEl0ZW0gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAgICAg
c3RhdGljIFJlZjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7Ci0gICAgc3RhdGljIFJlZjxIVE1MSW1hZ2VF
bGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHdpZHRoLCBPcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVmPEhU
TUxJbWFnZUVsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KTsK
IAogICAgIHZpcnR1YWwgfkhUTUxJbWFnZUVsZW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZjQwM2YyMzA1MWIwMjA2YTIzZTNiODY1N2M3NTNl
MDcwYjcyYTk3ZS4uMDNhNjJmM2Y5MDI4MmFlMjMxYTI4ZTIxMzYxYzhhYmEzZWFhYWVlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0zNjksNyArMzY5LDcg
QEAgU3RlcFJhbmdlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFu
ZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb24KIH0KIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQotT3B0aW9uYWw8RGVjaW1hbD4gSFRNTElucHV0RWxlbWVudDo6ZmluZENsb3Nlc3RUaWNr
TWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQorc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBI
VE1MSW5wdXRFbGVtZW50OjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYg
dmFsdWUpCiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5maW5kQ2xvc2VzdFRpY2tNYXJrVmFs
dWUodmFsdWUpOwogfQpAQCAtMTc2NSw3ICsxNzY1LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
Ojppc0VtcHR5VmFsdWUoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgdW5z
aWduZWQgb2xkRWZmZWN0aXZlTWF4TGVuZ3RoID0gZWZmZWN0aXZlTWF4TGVuZ3RoKCk7Ci0gICAg
aW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVl
KS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlmIChvbGRFZmZlY3Rp
dmVNYXhMZW5ndGggIT0gZWZmZWN0aXZlTWF4TGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVl
SWZOZWVkZWQoKTsKIApAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUp
CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpbnQgb2xkTWluTGVuZ3RoID0gbWluTGVu
Z3RoKCk7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlm
IChvbGRNaW5MZW5ndGggIT0gbWluTGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVlSWZOZWVk
ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAwZjcwNTcx
ZGFjN2RlYzhmMWRjZmMyZDEzMTJlMmYzOWIwYzZiNjNlLi5hNjllODVhZjU0ZWNhNjVlZGE1MTgw
OTdjZWUzMmMxNzU1NjA4NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50IDogcHVibGljIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50IHsKICAgICBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFu
eVN0ZXBIYW5kbGluZykgY29uc3Q7CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAg
ICBPcHRpb25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1h
bCYpOworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVl
KGNvbnN0IERlY2ltYWwmKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8dm9pZD4gc3RlcFVwKGludCA9IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCmluZGV4IGFlMDNmOTM4NGU0ZWFmODg5ZWJlNmJhYzRhNTAyYjNiOWI5N2RiZjguLmNk
ODJlYzZlZjk5MDY4NWI4Y2IyMjBlYjJlMzBjZDE0ZmRmMDZlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6cHJvY2VzcygpCiAKICAgICAgICAgYm9vbCBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IHRy
dWU7CiAgICAgICAgIGlmICghbV9tZWRpYS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE9wdGlv
bmFsPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgp
Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgICAgICAgICBkb2N1bWVudFN0eWxlID0g
U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIGF1dG8g
bWVkaWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGVBbGxvd2luZ0Rlc2NyaXB0aW9uU3ludGF4KG1f
bWVkaWEpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNz
KCkKICAgICAgICAgYWRkUGVuZGluZ1NoZWV0KGlzQWN0aXZlID8gQWN0aXZlU2hlZXQgOiBJbmFj
dGl2ZVNoZWV0KTsKIAogICAgICAgICAvLyBMb2FkIHN0eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBu
ZWVkZWQgZm9yIHRoZSByZW5kZXJpbmcgaW1tZWRpYXRlbHkgd2l0aCBsb3cgcHJpb3JpdHkuCi0g
ICAgICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgICAgIGlm
ICghaXNBY3RpdmUpCiAgICAgICAgICAgICBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5
OjpWZXJ5TG93OwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwsIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHByaW9y
aXR5LCBXVEZNb3ZlKGNoYXJzZXQpKTsKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpp
bml0aWFsaXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHN0eWxlU2hlZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQmIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgLy8g
RklYTUU6IG9yaWdpbkNsZWFuIHNob3VsZCBiZSB0dXJuZWQgdG8gZmFsc2UgZXhjZXB0IGlmIGZl
dGNoIG1vZGUgaXMgQ09SUy4KLSAgICBPcHRpb25hbDxib29sPiBvcmlnaW5DbGVhbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG9yaWdpbkNsZWFuOwogICAgIGlmIChjYWNoZWRTdHlsZVNoZWV0
Lm9wdGlvbnMoKS5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykKICAgICAgICAgb3Jp
Z2luQ2xlYW4gPSBjYWNoZWRTdHlsZVNoZWV0LmlzQ09SU1NhbWVPcmlnaW4oKTsKIApAQCAtNTA5
LDcgKzUwOSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTExpbmtFbGVtZW50Ojp0eXBlKCkg
Y29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0
cik7CiB9CiAKLU9wdGlvbmFsPExpbmtJY29uVHlwZT4gSFRNTExpbmtFbGVtZW50OjppY29uVHlw
ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExpbmtJY29uVHlwZT4gSFRNTExpbmtFbGVtZW50Ojpp
Y29uVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVsQXR0cmlidXRlLmljb25UeXBlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggZDFlYTc2ZDBkY2JkZWRk
ZTkwMjdmY2E0YmRhOWFmMjk1NzU0NzQ0NC4uZjE0ZTY5ZjhjODA0ZDA3ZmE1OGRjMjEwMzU1MmVk
ZGE3YzMzODkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIEhUTUxMaW5rRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCwgcHVibGljIENhY2hlZFN0eWxlU2hlZXRDbGllbnQsCiAKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUoKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPExpbmtJY29uVHlwZT4gaWNvblR5cGUo
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmtJY29uVHlwZT4gaWNvblR5cGUoKSBjb25z
dDsKIAogICAgIENTU1N0eWxlU2hlZXQqIHNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldC5n
ZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IGE4MzVi
ZDBhZGJiYjU0NzBjNDI1MGFlZDZiZDIzMjE0ODJiOWIxMmUuLmMzZmUyNDY3NWMwNTg5NTEyYmUw
NDg5NTE5MGNjY2ZiZmZjMDM3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVu
dC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIEhUTUxPTGlzdEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxpbnQ+
IG1fc3RhcnQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fc3RhcnQ7CiAgICAgdW5zaWduZWQg
bV9pdGVtQ291bnQ7CiAKICAgICBib29sIG1faXNSZXZlcnNlZCA6IDE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKaW5kZXggYTQ0ZTI0ZDQwMmYxNTQw
NGJiYzZjMGEyNzIxMDI5ZjVlMjZjMDY2Mi4uOTFiMDU4NDU0MWM4NzA5MjI2MjQ3NDE3ZTNjODI1
MWVhMzc4NTllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQCBSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYgc2VsZQogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEhUTUxPcHRpb25zQ29sbGVjdGlvbihzZWxlY3QpKTsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoY29uc3QgT3B0aW9u
T3JPcHRHcm91cEVsZW1lbnQmIGVsZW1lbnQsIE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+IGJl
Zm9yZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkKGNvbnN0
IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50JiBlbGVtZW50LCBzdGQ6Om9wdGlvbmFsPEhUTUxFbGVt
ZW50T3JJbnQ+IGJlZm9yZSkKIHsKICAgICByZXR1cm4gc2VsZWN0RWxlbWVudCgpLmFkZChlbGVt
ZW50LCBiZWZvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmgKaW5kZXggNWY1MTI4ZDVhMzJjOWQ1MzIyMTEyNGQ1Yjc4YWZhZDhiZWU2ZTMwMC4uNWFi
OTBiNWFmYmZjOWMwZmNkZTUzMjZlMjc3ZWRlNzU3YzE4ZjBhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEhU
TUxPcHRpb25zQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxI
VE1MT3B0aW9uc0NvbGxlCiAKICAgICB1c2luZyBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCA9IFZh
cmlhbnQ8UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiwgUmVmUHRyPEhUTUxPcHRHcm91cEVsZW1l
bnQ+PjsKICAgICB1c2luZyBIVE1MRWxlbWVudE9ySW50ID0gVmFyaWFudDxSZWZQdHI8SFRNTEVs
ZW1lbnQ+LCBpbnQ+OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChj
b25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYsIE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+
IGJlZm9yZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0
IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50Jiwgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50
PiBiZWZvcmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKGludCBpbmRleCk7CiAg
ICAgdm9pZCByZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA2NDMzMDQyZmQ4ZjcwNTBiZDc0YjRlOWUzNTU2
YWJjODI3OWFlODlmLi4zMDU3ODUyNTJiMDAzOWUwYTM3OTRmNDNhMjE4NGFjYjcxNGY4ZjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMjE5LDcgKzIx
OSw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6YWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4
KCkgY29uc3QKICAgICByZXR1cm4gbGFzdFNlbGVjdGVkTGlzdEluZGV4KCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IEhUTUxTZWxlY3RFbGVtZW50OjphZGQoY29uc3QgT3B0aW9uT3JPcHRHcm91
cEVsZW1lbnQmIGVsZW1lbnQsIE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+IGJlZm9yZSkKK0V4
Y2VwdGlvbk9yPHZvaWQ+IEhUTUxTZWxlY3RFbGVtZW50OjphZGQoY29uc3QgT3B0aW9uT3JPcHRH
cm91cEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4gYmVm
b3JlKQogewogICAgIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50ID0gbnVsbHB0cjsKICAgICBp
ZiAoYmVmb3JlKSB7CkBAIC00NjQsNyArNDY0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNl
bGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAgICAgaWYgKGRpZmYg
PCAwKSB7IC8vIEFkZCBkdW1teSBlbGVtZW50cy4KICAgICAgICAgZG8gewogICAgICAgICAgICAg
YXV0byBvcHRpb24gPSBkb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQob3B0aW9uVGFnLCBmYWxzZSk7
Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFkZChkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVu
dD4ob3B0aW9uLnB0cigpKSwgTnVsbG9wdCk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFk
ZChkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4ob3B0aW9uLnB0cigpKSwgc3RkOjpudWxsb3B0
KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfSB3aGlsZSAoKytkaWZmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCBiZWUxZGQzMGU1Mjk1NzhjY2U3ZTljOWJl
ZmE2MjY4YzNjM2VhYzgyLi5jOWViZDNjODJhNDEzYTE3MGVmYWE4ODlhMjIwZjc3YWIwMDZmZmE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC01Myw3ICs1Myw3
IEBAIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGUsIHByaXZhdGUgVHlwZUFoCiAKICAgICB1c2luZyBPcHRpb25Pck9wdEdyb3Vw
RWxlbWVudCA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiwgUmVmUHRyPEhUTUxP
cHRHcm91cEVsZW1lbnQ+PjsKICAgICB1c2luZyBIVE1MRWxlbWVudE9ySW50ID0gVmFyaWFudDxS
ZWZQdHI8SFRNTEVsZW1lbnQ+LCBpbnQ+OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IGFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYsIE9wdGlvbmFsPEhUTUxF
bGVtZW50T3JJbnQ+IGJlZm9yZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9p
ZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50Jiwgc3RkOjpvcHRpb25hbDxIVE1M
RWxlbWVudE9ySW50PiBiZWZvcmUpOwogCiAgICAgdXNpbmcgTm9kZTo6cmVtb3ZlOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggMWZkYmM1MTg0YWI2NzZjNTM1
ZDUyZTQyZDBlYzMwOTY0MDUyZTQ2NC4uYmNlYjU5YTZmODU5ZTVlMGE2NGI2MzliZjVhMTMyMjlj
NTJlOWFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CkBAIC0yMDUsMTMgKzIwNSwxMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwogCiB2b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNl
dE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29y
KC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVt
ZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpCiB7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIHVw
ZGF0ZVZhbGlkaXR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAK
aW5kZXggYzNjZTI4NTcyYjY5YmYxOWNlODNlNGNhODJmZDhlZGMzOTE5MjRhNC4uZjM5NmEzZTMx
NWUyYTgzYTRjYjE0YjhiMmVhOTdjNjJhZTE5ZWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUlucHV0VHlwZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlw
ZTo6aGVpZ2h0KCkgY29uc3QKIAogICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAg
ICAgICAvLyBDaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2
YWx1ZS4KLSAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQgPSBwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihoZWlnaHRBdHRyKSkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBoZWln
aHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSkpCiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0
LnZhbHVlKCk7CiAKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0
cyBoZWlnaHQuCkBAIC0yMDAsNyArMjAwLDcgQEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6Ondp
ZHRoKCkgY29uc3QKIAogICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAv
LyBDaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2YWx1ZS4K
LSAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCA9IHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRo
QXR0cikpKQorICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gd2lkdGggPSBwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbih3aWR0aEF0dHIpKSkKICAgICAgICAgICAgIHJldHVybiB3aWR0aC52YWx1ZSgpOwog
CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMgd2lkdGguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggZmNhMDhiYTEyMDFkOWFlYWYxZTNjYmI5YWRk
YTMzN2IzOGE0NGViOC4uZTRjMTYwYzMzYzJiZWE5ZTRiYzQzOTkwMzc2NjAwYzAwN2E1YzU4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtOTU2LDEwICs5NTYsMTAgQEAgdm9pZCBJ
bnB1dFR5cGU6Omxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKIHsKIH0KIAotT3B0aW9uYWw8
RGVjaW1hbD4gSW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1h
bCYpCitzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IElucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKGNvbnN0IERlY2ltYWwmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggODFhOGE3OWMwNzVjOTY5YWIwMWEzZDNkOGI4ZGFj
MTk4NzhjZTI5ZC4uY2Y4Y2FiNGE3ZmNmNTZjOTFjYTM0NjgxY2M1YmM5NTZiNDNkMTM4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0yOTcsNyArMjk3LDcgQEAgY2xhc3MgSW5wdXRUeXBl
IHsKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBsaXN0
QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RGVjaW1hbD4g
ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKKyAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2lt
YWwmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKaW5kZXggMTNlNzYwYWVmZmNjOWExN2JmNzcxNzUx
NTA5MGVkNDI5NDZkNjZiMi4uYjk4MTJiOTY2ZTRiNDU0NGRhZjkzNmUyZDYwY2UzNDk2MjRkNGNl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKQEAgLTk1LDcg
Kzk1LDcgQEAgYXV0byBMaW5rSWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5cGVzKE9wdGlvblNldDxM
aW5rSWNvblR5cGU+IGljb25UeXBlcykgLT4gVmVjdG8KICAgICAgICAgLy8gVGhpcyBpY29uIHNp
emUgcGFyc2luZyBpcyBhIGxpdHRsZSB3b25reSAtIGl0IG9ubHkgcGFyc2VzIHRoZSBmaXJzdAog
ICAgICAgICAvLyBwYXJ0IG9mIHRoZSBzaXplLCAiNjB4NzAiIGJlY29tZXMgIjYwIi4gVGhpcyBp
cyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zCiAgICAgICAgIC8vIGFuZCBpcyBwcm9iYWJseSBn
b29kIGVub3VnaCBmb3Igbm93LgotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gaWNvblNpemU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGljb25TaXplOwogCiAgICAgICAgIGlm
IChsaW5rRWxlbWVudC5zaXplcygpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBib29sIG9rOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5oCmluZGV4IDZmMTE0OTUzM2E5N2Fk
Nzk3YjBhMGY2ODUwOGFiNGEwMTM0NzgzNzkuLjc3YzEwNTUxMzNmZThkYjQ1MmJmMzlmOGRiOTJh
ZWE2M2FmOWE0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xs
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTGlua0ljb25Db2xsZWN0b3IgewogICAgICAgICBVUkwgdXJs
OwogCiAgICAgICAgIExpbmtJY29uVHlwZSB0eXBlOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gc2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKICAgICB9Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPEljb24+IGljb25zT2ZUeXBlcyhPcHRpb25TZXQ8
TGlua0ljb25UeXBlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxB
dHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oCmluZGV4
IDZiMDA5YTJhNDUyZmNjYzIxNjRkMzZmMWU3NmY2N2I2NDhkNjk4YjQuLjhlMjY2OTI3ZWRkYjEz
ZGI5ZTBiOGIxY2NhOTY4NTI1NjVmYmJkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTGlua1JlbEF0dHJpYnV0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0
dHJpYnV0ZS5oCkBAIC00MSw3ICs0MSw3IEBAIGVudW0gY2xhc3MgTGlua0ljb25UeXBlOwogCiBz
dHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZSB7CiAgICAgYm9vbCBpc1N0eWxlU2hlZXQgeyBmYWxzZSB9
OwotICAgIE9wdGlvbmFsPExpbmtJY29uVHlwZT4gaWNvblR5cGU7CisgICAgc3RkOjpvcHRpb25h
bDxMaW5rSWNvblR5cGU+IGljb25UeXBlOwogICAgIGJvb2wgaXNBbHRlcm5hdGUgeyBmYWxzZSB9
OwogICAgIGJvb2wgaXNETlNQcmVmZXRjaCB7IGZhbHNlIH07CiAgICAgYm9vbCBpc0xpbmtQcmVs
b2FkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXgg
NjM0ZDdlYzE4YWUxNWQ4OGFmZTNhNWFkODhjOWJiNzk1OGE0MmZhZC4uZGI3YzNkZTUzNTg5MTI3
NjIxODJlNTQ3YjRmMmNlOWVjNGU1MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5jcHAKQEAgLTM4MiwxMSArMzgyLDExIEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnVwZGF0
ZVRpY2tNYXJrVmFsdWVzKCkKICAgICBzdGQ6OnNvcnQobV90aWNrTWFya1ZhbHVlcy5iZWdpbigp
LCBtX3RpY2tNYXJrVmFsdWVzLmVuZCgpKTsKIH0KIAotT3B0aW9uYWw8RGVjaW1hbD4gUmFuZ2VJ
bnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkK
K3N0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gUmFuZ2VJbnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01h
cmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKIHsKICAgICB1cGRhdGVUaWNrTWFya1ZhbHVl
cygpOwogICAgIGlmICghbV90aWNrTWFya1ZhbHVlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGxlZnQg
PSAwOwogICAgIHNpemVfdCByaWdodCA9IG1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpOwpAQCAtNDA5
LDggKzQwOSw4IEBAIE9wdGlvbmFsPERlY2ltYWw+IFJhbmdlSW5wdXRUeXBlOjpmaW5kQ2xvc2Vz
dFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCiAgICAgICAgICAgICByaWdodCA9
IG1pZGRsZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0TGVmdCA9IG1p
ZGRsZSA/IG1ha2VPcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZSAtIDFdKSA6IE51bGxv
cHQ7Ci0gICAgT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdFJpZ2h0ID0gbWlkZGxlICE9IG1fdGlj
a01hcmtWYWx1ZXMuc2l6ZSgpID8gbWFrZU9wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlkZGxl
XSkgOiBOdWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdExlZnQgPSBt
aWRkbGUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV90aWNrTWFya1ZhbHVlc1ttaWRkbGUgLSAxXSkg
OiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0UmlnaHQg
PSBtaWRkbGUgIT0gbV90aWNrTWFya1ZhbHVlcy5zaXplKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwo
bV90aWNrTWFya1ZhbHVlc1ttaWRkbGVdKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2xv
c2VzdExlZnQpCiAgICAgICAgIHJldHVybiBjbG9zZXN0UmlnaHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmgKaW5kZXggYTU3ODRmNWQyMjc2NTA1Nzc4N2Q2M2Q4MjYwN2VhZjI3ZDc3
ZWYxYi4uYzZmNjJkODQ2NWVlODgyNzJmOGM2MWZmMjk2ZDZiOThkODA0ODMxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBSYW5nZUlu
cHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBJbnB1dFR5cGUgewogI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQogICAgIHZvaWQgbGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKSBmaW5hbDsKICAg
ICB2b2lkIHVwZGF0ZVRpY2tNYXJrVmFsdWVzKCk7Ci0gICAgT3B0aW9uYWw8RGVjaW1hbD4gZmlu
ZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKSBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJikg
ZmluYWw7CiAKICAgICBib29sIG1fdGlja01hcmtWYWx1ZXNEaXJ0eSB7IHRydWUgfTsKICAgICBW
ZWN0b3I8RGVjaW1hbD4gbV90aWNrTWFya1ZhbHVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDJhZDBl
ZjJjMDc5ZTgzMTQ2OWRhNDEwNWFhZTQ3NGZlNDIwZDRlYjMuLjY0NzFlOTQzOTI2ZDllMTM1MjIz
ZTI2NmRjMmU1MjM2YjE1MGNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzg3LDcgKzM4Nyw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXN0b3JlKCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fcGF0aC50cmFuc2Zvcm0oc3RhdGUoKS50cmFuc2Zvcm0pOwogICAgIG1fc3RhdGVT
dGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52
ZXJzZSA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkp
CiAgICAgICAgIG1fcGF0aC50cmFuc2Zvcm0oaW52ZXJzZS52YWx1ZSgpKTsKICAgICBHcmFwaGlj
c0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTgzMyw3ICs4
MzMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRUcmFuc2Zvcm0oKQog
ICAgIG1vZGlmaWFibGVTdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0gPSB0cnVlOwogfQog
Ci12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgU3Ry
aW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKQordm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGFscGhhKQogewogICAgIGlmIChhbHBoYSkgewogICAgICAgICBzZXRTdHJva2VT
dHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbG9y
LCBhbHBoYS52YWx1ZSgpKSk7CkBAIC04NjksNyArODY5LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZs
b2F0IGsKICAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZShjLCBtLCB5LCBrLCBhKSk7CiB9
CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3Ry
aW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKQordm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBhbHBoYSkKIHsKICAgICBpZiAoYWxwaGEpIHsKICAgICAgICAgc2V0RmlsbFN0eWxl
KENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEoY29sb3IsIGFs
cGhhLnZhbHVlKCkpKTsKQEAgLTExMTUsNyArMTExNSw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQg
eCwKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUoKS50
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZs
b2F0UG9pbnQoeCwgeSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRl
KCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQoRmxvYXRQb2ludCh4LCB5KSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3Jt
ZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgs
IGZsb2F0IHgKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3Rh
dGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9
IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5z
Zm9ybWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTI1MCw3ICsxMjUwLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
d2lkdGgsIGZsb2F0IGgKICAgICB9CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3Qg
U3RyaW5nJiBjb2xvclN0cmluZywgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKQordm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBhbHBoYSkKIHsKICAgICBDb2xvciBjb2xvciA9IHBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihj
b2xvclN0cmluZywgJmNhbnZhcygpKTsKICAgICBpZiAoIWNvbG9yU3RyaW5nLmlzTnVsbCgpICYm
ICFjb2xvci5pc1ZhbGlkKCkpCkBAIC0yMjYxLDEyICsyMjYxLDEyIEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJp
bmcpCiAgICAgbW9kaWZpYWJsZVN0YXRlKCkuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogfQogCi12
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4
LCBmbG9hdCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBkcmF3VGV4
dEludGVybmFsKHRleHQsIHgsIHksIHRydWUsIG1heFdpZHRoKTsKIH0KIAotdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4
LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0
IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGRyYXdUZXh0SW50ZXJu
YWwodGV4dCwgeCwgeSwgZmFsc2UsIG1heFdpZHRoKTsKIH0KQEAgLTIzMTQsNyArMjMxNCw3IEBA
IFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChj
b25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIG1ldHJpY3M7CiB9CiAKLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJp
bmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxmbG9h
dD4gbWF4V2lkdGgpCiB7CiAgICAgY29uc3QgYXV0byYgZm9udFByb3h5ID0gdGhpcy0+Zm9udFBy
b3h5KCk7CiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udFByb3h5LmZv
bnRNZXRyaWNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGVkOWQ0MDE3ZjRjODk5MzU5ZWM3OTc5YmFkM2Mw
ODYwMDU0ZDk3M2YuLmZjYjliOTU2NzBkNmI3NTc0MWJmYTM2NTA2NGE5Y2FlOTY4YTk1MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCkBAIC0xMTksMTIgKzExOSwxMiBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbgog
ICAgIHZvaWQgc2V0VHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZs
b2F0IG0yMiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHJlc2V0VHJhbnNmb3JtKCk7
CiAKLSAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFs
PGZsb2F0PiBhbHBoYSA9IE51bGxvcHQpOworICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBzdGQ6Om51bGxvcHQp
OwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSA9
IDEuMCk7CiAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBi
LCBmbG9hdCBhKTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGMsIGZsb2F0IG0sIGZs
b2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwogCi0gICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gTnVsbG9wdCk7CisgICAgdm9p
ZCBzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9hdD4g
YWxwaGEgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgc2V0RmlsbENvbG9yKGZsb2F0IGdyYXlM
ZXZlbCwgZmxvYXQgYWxwaGEgPSAxLjBmKTsKICAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBy
LCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKICAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9h
dCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKQEAgLTE1MSw3ICsxNTEs
NyBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbgogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAgICAgdm9pZCBzdHJva2VSZWN0
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCi0gICAgdm9p
ZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3Qg
U3RyaW5nJiBjb2xvciA9IFN0cmluZygpLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBOdWxsb3B0
KTsKKyAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBi
bHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yID0gU3RyaW5nKCksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhID0g
MS4wKTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKICAgICB2b2lkIHNl
dFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBjLCBm
bG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKQEAgLTIxNiw4ICsyMTYsOCBAQCBj
bGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCwgcHVibGljIENhbgogICAgIFN0cmluZyBkaXJlY3Rpb24oKSBjb25zdDsKICAg
ICB2b2lkIHNldERpcmVjdGlvbihjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgZmlsbFRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4
V2lkdGggPSBOdWxsb3B0KTsKLSAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBOdWxsb3B0KTsK
KyAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
c3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1ldHJp
Y3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKICAgICBMaW5lQ2FwIGdldExp
bmVDYXAoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLmxpbmVDYXA7IH0KQEAgLTMzMyw3ICszMzMs
NyBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbgogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJu
KCk7CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAKLSAgICB2b2lkIGRyYXdUZXh0SW50
ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9w
dGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IE51bGxvcHQpOworICAgIHZvaWQgZHJhd1RleHRJbnRl
cm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgLy8gVGhl
IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIEZvbnRDYXNjYWRlIGFuZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OkZvbnRQcm94eSBtdXN0IGhvbGQgY2VydGFpbiBpbnZhcmlhbnRzLgogICAgIC8vIFRo
ZXJlZm9yZSwgYWxsIGZvbnQgb3BlcmF0aW9ucyBtdXN0IHBhc3MgdGhyb3VnaCB0aGUgU3RhdGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IGMxY2YxODYwMmQzM2U4M2VkMjMxYjNjYmFiYmYwYWE1MDIwMjEyZjgu
LjJkYzlhMjJmOGRkZjVmYzQzZTY4ZGQ5MjY4NzNhNmNlYzg5YWI1YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC0xMTE5LDcgKzExMTksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaQogICAgICAgICBtX2Nv
bnRleHQtPnBpeGVsU3RvcmVpKEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5ULCBt
X3VucGFja0FsaWdubWVudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBPcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJiBzb3VyY2UpCitFeGNlcHRpb25Pcjx2
b2lkPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4m
JiBzb3VyY2UpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJ0ZXhTdWJJbWFnZTJEIiwgInNv
dXJjZSBpcyBudWxsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggZDcyNGNhZDNmOWU0MTQ4OWUyNzVkMmVlMGNlNTAw
OTExOTVkYWFjMS4uY2ZkMmFhMjIzZWY0MWMwYjM1ZTM4MGY5MmM0OTg2MmUwMmMyZjVjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaApAQCAtMTg0LDcgKzE4NCw3IEBAIGNsYXNzIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQgZmlu
YWwgOiBwdWJsaWMgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSB7CiAgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEQmFzZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNl
dCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdD
M0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNv
bnN0IHZvaWQqIHBpeGVscykgZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJESW1wbChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zm
c2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlKiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkltYWdlSHRtbERvbVNvdXJjZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhKSBmaW5hbDsKICAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIFJl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+JiYpIGZpbmFsOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBPcHRp
b25hbDxUZXhJbWFnZVNvdXJjZT4mJikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4
U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNl
dCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBpbml0aWFsaXpl
VmVydGV4QXJyYXlPYmplY3RzKCkgZmluYWw7CiAgICAgR0MzRGludCBnZXRNYXhEcmF3QnVmZmVy
cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNDljOGNkMTk1OWI1OTdmOGQ0ODhjZjg5YjU2OTA5ZWI3
YmE1ZTliOS4uN2U1YzU2YTQ0MzA2N2E0MjM0MmM1ZTNmMGQ1MTQzNDgzZDQ3ZWY1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1
YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW4KICAgICAgICAg
bV9jb250ZXh0LT5waXhlbFN0b3JlaShHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVO
VCwgbV91bnBhY2tBbGlnbm1lbnQpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBPcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJiBzb3VyY2UpCitFeGNlcHRpb25P
cjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNl
PiYmIHNvdXJjZSkKIHsKICAgICBpZiAoIXNvdXJjZSkgewogICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgInRleFN1YkltYWdlMkQiLCAi
c291cmNlIGlzIG51bGwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggNjcwOTQxMTFkNWEwMzdiZThlNTU0NTIzZGE3NzI1
YzliOThhNTMwOC4uY2M2MWMxMTU3MmQ4MTM4ZjE3ODE3ZGM2MDMxZTJhOTQwNGVkYmRlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0IGZpbmFsIDog
cHVibGljIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogICAgIHZvaWQgdGV4U3ViSW1hZ2Uy
REJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBjb25zdCB2
b2lkKiBwaXhlbHMpIGZpbmFsOwogICAgIHZvaWQgdGV4U3ViSW1hZ2UyREltcGwoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBJbWFnZSosIEdyYXBoaWNzQ29udGV4dDNE
OjpJbWFnZUh0bWxEb21Tb3VyY2UsIGJvb2wgZmxpcFksIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkg
ZmluYWw7CiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8
QXJyYXlCdWZmZXJWaWV3PiYmKSBmaW5hbDsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBH
QzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgT3B0aW9uYWw8
VGV4SW1hZ2VTb3VyY2U+JiYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBzdGQ6Om9wdGlv
bmFsPFRleEltYWdlU291cmNlPiYmKSBmaW5hbDsKIAogICAgIEdDM0RpbnQgZ2V0TWF4RHJhd0J1
ZmZlcnMoKSBmaW5hbDsKICAgICBHQzNEaW50IGdldE1heENvbG9yQXR0YWNobWVudHMoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMWExZjE2YTljODY3ZmZiNzkyMTAzYjI5MGEwNWU2ODUy
ODlhNTNlOS4uY2UxM2YwYzlmOGRhNzVmZWI4YjcyOTVjNDYxZGY0NTY2MTNjZDliMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKQEAgLTExMDYsNyArMTEwNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNE
CiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEo
R0MzRGVudW0gdGFyZ2V0LCBPcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEsIEdDM0Rl
bnVtIHVzYWdlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdD
M0RlbnVtIHRhcmdldCwgc3RkOjpvcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEsIEdD
M0RlbnVtIHVzYWdlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTExMzUsNyArMTEzNSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFT
CiAgICAgfSwgZGF0YS52YWx1ZSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwgT3B0
aW9uYWw8QnVmZmVyRGF0YVNvdXJjZT4mJiBkYXRhKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwg
c3RkOjpvcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzE1Myw3ICszMTUzLDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3Jl
aShHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGlnbm1lbnQp
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VT
b3VyY2U+IHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBzdGQ6Om9wdGlv
bmFsPFRleEltYWdlU291cmNlPiBzb3VyY2UpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJ0
ZXhJbWFnZTJEIiwgInNvdXJjZSBpcyBudWxsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggZDliMTZmODU0
MmYyMWFkYWViYTc3MWQ0ZDUxNzk5NzZlZmM4YWNhYS4uMWRjNGFkNDM1ZTIyOTgzZWY0Zjg1Mjcy
NmM5ZWRkY2UwZTZjNTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTM2LDggKzEzNiw4IEBAIGNsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCwgcHVibGljIEFjdGl2ZURPCiAKICAgICB1c2luZyBCdWZmZXJEYXRhU291cmNlID0gV1RGOjpW
YXJpYW50PFJlZlB0cjxBcnJheUJ1ZmZlcj4sIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+PjsKICAg
ICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc2l6ZSwgR0MzRGVu
dW0gdXNhZ2UpOwotICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIE9wdGlvbmFs
PEJ1ZmZlckRhdGFTb3VyY2U+JiYsIEdDM0RlbnVtIHVzYWdlKTsKLSAgICB2b2lkIGJ1ZmZlclN1
YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBPcHRpb25hbDxCdWZmZXJE
YXRhU291cmNlPiYmKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBzdGQ6
Om9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lk
IGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBzdGQ6Om9w
dGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYpOwogCiAgICAgR0MzRGVudW0gY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihHQzNE
Yml0ZmllbGQgbWFzaykgPSAwOwpAQCAtMjQxLDEzICsyNDEsMTMgQEAgY2xhc3MgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMg
QWN0aXZlRE8KICAgICB2b2lkIHRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBS
ZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmKTsKIAogICAgIHVzaW5nIFRleEltYWdlU291cmNlID0g
V1RGOjpWYXJpYW50PFJlZlB0cjxJbWFnZURhdGE+LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4s
IFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4sIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50Pj47Ci0g
ICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4g
dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVy
bmFsZm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8
VGV4SW1hZ2VTb3VyY2U+KTsKIAogICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pOwogICAgIHZvaWQgdGV4UGFyYW1l
dGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8
QXJyYXlCdWZmZXJWaWV3PiYmKSA9IDA7Ci0gICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiB0
ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zm
c2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgT3B0
aW9uYWw8VGV4SW1hZ2VTb3VyY2U+JiYpID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZv
aWQ+IHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50
IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmKSA9IDA7CiAKICAgICB2b2lkIHVuaWZv
cm0xZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4KTsKICAgICB2b2lk
IHVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyQXJyYXkmIHYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCmluZGV4IDI0NDY1ZjcwYTIwNjc4YzVjNzViMmJjZGNmNWUyNjFhMDI1NmMxZGEuLjhl
MTdkMDZkMjZhNGQ5NTZlZDYyZjIwM2RlNmY2M2E0N2QzZjEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTcwMSwx
NyArNzAxLDE3IEBAIFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3Jl
YXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhUTUxTdGFja0l0CiAgICAgcmV0dXJuIEhUTUxTdGFj
a0l0ZW06OmNyZWF0ZShjcmVhdGVIVE1MRWxlbWVudChmYWtlVG9rZW4pLCBmYWtlVG9rZW4sIGl0
ZW0ubmFtZXNwYWNlVVJJKCkpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gSFRNTENvbnN0cnVj
dGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RV
bm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWN0aXZlRm9ybWF0
dGluZ0VsZW1lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2FjdGl2ZUZvcm1h
dHRpbmdFbGVtZW50cy5zaXplKCk7CiAgICAgZG8gewogICAgICAgICAtLWluZGV4OwogICAgICAg
ICBjb25zdCBhdXRvJiBlbnRyeSA9IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmF0KGluZGV4
KTsKICAgICAgICAgaWYgKGVudHJ5LmlzTWFya2VyKCkgfHwgbV9vcGVuRWxlbWVudHMuY29udGFp
bnMoZW50cnkuZWxlbWVudCgpKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RVbm9wZW5F
bGVtZW50SW5kZXggPSBpbmRleCArIDE7Ci0gICAgICAgICAgICByZXR1cm4gZmlyc3RVbm9wZW5F
bGVtZW50SW5kZXggPCBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5zaXplKCkgPyBmaXJzdFVu
b3BlbkVsZW1lbnRJbmRleCA6IE9wdGlvbmFsPHVuc2lnbmVkPihOdWxsb3B0KTsKKyAgICAgICAg
ICAgIHJldHVybiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA8IG1fYWN0aXZlRm9ybWF0dGluZ0Vs
ZW1lbnRzLnNpemUoKSA/IGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDogc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4oc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGluZGV4KTsK
IApAQCAtNzIwLDcgKzcyMCw3IEBAIE9wdGlvbmFsPHVuc2lnbmVkPiBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6aW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQoKSBjCiAKIHZvaWQgSFRN
TENvbnN0cnVjdGlvblNpdGU6OnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRz
KCkKIHsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggPSBp
bmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpOworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGZpcnN0VW5vcGVuRWxlbWVudEluZGV4ID0gaW5kZXhPZkZpcnN0VW5vcGVuRm9y
bWF0dGluZ0VsZW1lbnQoKTsKICAgICBpZiAoIWZpcnN0VW5vcGVuRWxlbWVudEluZGV4KQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5oCmluZGV4IDVmYzQ1NjFkZDI0ZjZjNjIyNWUzNjczZTk3OGU2N2M1MDM5
OGNhMDguLjIyM2JhNTVkODZlM2U0NDJiMDdmMDIyOGRmNTYwYjQ4ZTQzMDk2ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaApAQCAt
MTMwLDcgKzEzMCw3IEBAIGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlIHsKICAgICBib29sIHNo
b3VsZEZvc3RlclBhcmVudCgpIGNvbnN0OwogICAgIHZvaWQgZm9zdGVyUGFyZW50KFJlZjxOb2Rl
PiYmKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0
aW5nRWxlbWVudCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4T2ZG
aXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29uc3Q7CiAgICAgdm9pZCByZWNvbnN0cnVj
dFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwogCiAgICAgdm9pZCBnZW5lcmF0ZUltcGxp
ZWRFbmRUYWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCmluZGV4IDNiOGNjNGQyMjUwY2JkNmI4YTc3NTVjN2ZhZThiY2Y2ZGQ1MTIzNWIu
LjM5OTBjYmRhNjA2M2I5ZGE0M2JiZjNhOGNiNWQzYjRjYzc4NDc3NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0xNTQsMTMgKzE1
NCwxMyBAQCBkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIE9w
dGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUq
IHBvc2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxpbnQ+IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3Np
dGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQogewogICAgIHdoaWxlIChwb3NpdGlvbiA8
IGVuZCAmJiBpc0hUTUxTcGFjZSgqcG9zaXRpb24pKQogICAgICAgICArK3Bvc2l0aW9uOwogCiAg
ICAgaWYgKHBvc2l0aW9uID09IGVuZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGlzTmVnYXRpdmUgPSBmYWxzZTsKICAg
ICBpZiAoKnBvc2l0aW9uID09ICctJykgewpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBPcHRp
b25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBw
b3NpdGlvbiwgY29uCiAgICAgICAgICsrcG9zaXRpb247CiAKICAgICBpZiAocG9zaXRpb24gPT0g
ZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKnBvc2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjb25zdGV4cHIgaW50IGludE1h
eCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CiAgICAgY29uc3RleHByIGludCBi
YXNlID0gMTA7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VI
VE1MSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb24KICAg
ICAgICAgaW50IGRpZ2l0VmFsdWUgPSAqcG9zaXRpb24gLSAnMCc7CiAKICAgICAgICAgaWYgKHJl
c3VsdCA+IG1heE11bHRpcGxpZXIgfHwgKHJlc3VsdCA9PSBtYXhNdWx0aXBsaWVyICYmIGRpZ2l0
VmFsdWUgPiAoaW50TWF4ICUgYmFzZSkgKyBpc05lZ2F0aXZlKSkKLSAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBy
ZXN1bHQgPSBiYXNlICogcmVzdWx0ICsgZGlnaXRWYWx1ZTsKICAgICAgICAgKytwb3NpdGlvbjsK
QEAgLTE5MSwxMSArMTkxLDExIEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVn
ZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uCiB9CiAKIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0bWwj
cnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKLU9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdl
cihTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIo
U3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgo
KTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoTElLRUxZKGlucHV0LmlzOEJpdCgpKSkgewog
ICAgICAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CkBAIC0yMDcsMzYgKzIw
NywzNiBAQCBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkK
IH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1
Y3R1cmUuaHRtbCNydWxlcy1mb3ItcGFyc2luZy1ub24tbmVnYXRpdmUtaW50ZWdlcnMKLU9wdGlv
bmFsPHVuc2lnbmVkPiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyBpbnB1
dCkKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihT
dHJpbmdWaWV3IGlucHV0KQogewotICAgIE9wdGlvbmFsPGludD4gc2lnbmVkVmFsdWUgPSBwYXJz
ZUhUTUxJbnRlZ2VyKGlucHV0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gc2lnbmVkVmFsdWUg
PSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKICAgICBpZiAoIXNpZ25lZFZhbHVlIHx8IHNpZ25l
ZFZhbHVlLnZhbHVlKCkgPCAwKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2ln
bmVkVmFsdWUudmFsdWUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXJJ
bnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogZW5kKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBlbmQpCiB7CiAgICAgLy8gQSBzdHJpbmcgaXMgYSB2YWxpZCBub24tbmVn
YXRpdmUgaW50ZWdlciBpZiBpdCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBBU0NJSSBkaWdpdHMu
CiAgICAgZm9yIChhdXRvKiBjID0gcG9zaXRpb247IGMgPCBlbmQ7ICsrYykgewogICAgICAgICBp
ZiAoIWlzQVNDSUlEaWdpdCgqYykpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50PiBz
aWduZWRWYWx1ZSA9IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChwb3NpdGlvbiwgZW5kKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gc2lnbmVkVmFsdWUgPSBwYXJzZUhUTUxJbnRlZ2VySW50ZXJu
YWwocG9zaXRpb24sIGVuZCk7CiAgICAgaWYgKCFzaWduZWRWYWx1ZSB8fCBzaWduZWRWYWx1ZS52
YWx1ZSgpIDwgMCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc2lnbmVkVmFsdWU7CiB9CiAKIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLW5vbi1uZWdhdGl2ZS1pbnRlZ2VyCi1PcHRpb25hbDxp
bnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCitz
dGQ6Om9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5n
VmlldyBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChMSUtFTFko
aW5wdXQuaXM4Qml0KCkpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVy
czgoKTsKQEAgLTI0OCwyNSArMjQ4LDI1IEBAIE9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxO
b25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRN
TEZsb2F0aW5nUG9pbnROdW1iZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlv
biwgc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxp
ZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9z
aXRpb24sIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA+IDApOwogCiAgICAg
Ly8gcGFyc2VEb3VibGUoKSBhbGxvd3MgdGhlIHN0cmluZyB0byBzdGFydCB3aXRoIGEgJysnIG9y
IHRvIGVuZCB3aXRoIGEgJy4nIGJ1dCB0aG9zZQogICAgIC8vIGFyZSBub3QgdmFsaWQgZmxvYXRp
bmcgcG9pbnQgbnVtYmVycyBhcyBwZXIgSFRNTC4KICAgICBpZiAoKnBvc2l0aW9uID09ICcrJyB8
fCAqKHBvc2l0aW9uICsgbGVuZ3RoIC0gMSkgPT0gJy4nKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHNpemVfdCBwYXJzZWRMZW5n
dGggPSAwOwogICAgIGRvdWJsZSBudW1iZXIgPSBwYXJzZURvdWJsZShwb3NpdGlvbiwgbGVuZ3Ro
LCBwYXJzZWRMZW5ndGgpOwotICAgIHJldHVybiBwYXJzZWRMZW5ndGggPT0gbGVuZ3RoICYmIHN0
ZDo6aXNmaW5pdGUobnVtYmVyKSA/IG51bWJlciA6IE9wdGlvbmFsPGRvdWJsZT4oKTsKKyAgICBy
ZXR1cm4gcGFyc2VkTGVuZ3RoID09IGxlbmd0aCAmJiBzdGQ6OmlzZmluaXRlKG51bWJlcikgPyBu
dW1iZXIgOiBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4oKTsKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy8jdmFsaWQtZmxvYXRpbmctcG9pbnQtbnVtYmVyCi1PcHRpb25hbDxkb3Vi
bGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3IGlucHV0KQor
c3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihT
dHJpbmdWaWV3IGlucHV0KQogewogICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKExJ
S0VMWShpbnB1dC5pczhCaXQoKSkpIHsKICAgICAgICAgYXV0byogc3RhcnQgPSBpbnB1dC5jaGFy
YWN0ZXJzOCgpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHN0YXRpYyBib29sIHBhcnNlSFRUUFJlZnJl
c2hJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjCiAg
ICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYmIGlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQogICAg
ICAgICArK3Bvc2l0aW9uOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG51bWJlciA9IHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KG51bWJlclN0YXJ0LCBwb3NpdGlvbiAt
IG51bWJlclN0YXJ0KSk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbnVtYmVyID0gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcobnVtYmVyU3RhcnQsIHBvc2l0aW9u
IC0gbnVtYmVyU3RhcnQpKTsKICAgICBpZiAoIW51bWJlcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5k
ZXggMmIzNDczYzZiZTliYmQ4YTJmMDEzOTE2ZGI3MDRjNTU0MDJiNGM5Ni4uMmY0MWM2MTlhODEx
MmI3NzJhMWM2OGQwNTUxYWMwNTBkNjljNDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtNjIsMTYgKzYyLDE2IEBAIGRvdWJsZSBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmKTsKIGRvdWJsZSBwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSk7CiAK
IC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1
bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxpbnQ+IHBh
cnNlSFRNTEludGVnZXIoU3RyaW5nVmlldyk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PGludD4gcGFyc2VIVE1MSW50ZWdlcihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctbm9u
LW5lZ2F0aXZlLWludGVnZXJzCi1XRUJDT1JFX0VYUE9SVCBPcHRpb25hbDx1bnNpZ25lZD4gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcpOworV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1Zp
ZXcpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1ub24tbmVnYXRp
dmUtaW50ZWdlcgotT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy8jdmFsaWQtZmxvYXRpbmctcG9pbnQtbnVtYmVyCi1PcHRpb25hbDxkb3VibGU+IHBhcnNlVmFs
aWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoU3RyaW5nVmlldyk7CiAKIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0dXJlLmh0
bWwjcnVsZXMtZm9yLXBhcnNpbmctZmxvYXRpbmctcG9pbnQtbnVtYmVyLXZhbHVlcwogVmVjdG9y
PGRvdWJsZT4gcGFyc2VIVE1MTGlzdE9mT2ZGbG9hdGluZ1BvaW50TnVtYmVyVmFsdWVzKFN0cmlu
Z1ZpZXcpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhU
TUxOb25OZWdhdGl2ZSh1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlCiBpbmxp
bmUgdW5zaWduZWQgbGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUoU3RyaW5nVmlldyBzdHJpbmdW
YWx1ZSwgdW5zaWduZWQgZGVmYXVsdFZhbHVlID0gMCkKIHsKICAgICBBU1NFUlQoZGVmYXVsdFZh
bHVlIDw9IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwotICAgIHVuc2lnbmVkIHZhbHVlID0g
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHN0cmluZ1ZhbHVlKS52YWx1ZU9yKGRlZmF1bHRW
YWx1ZSk7CisgICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
c3RyaW5nVmFsdWUpLnZhbHVlX29yKGRlZmF1bHRWYWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlIDw9
IG1heEhUTUxOb25OZWdhdGl2ZUludGVnZXIpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKaW5kZXggMzBi
MGY3MjI5ZDJjZWIwZDhhYzhkYjU4MmM0MjJlNTYwZjRiNDYzOS4uNjZhOTg2NGMyYjY2YjY4ZjEx
NzZmYjdkYTMzNGRlNTBiMGYzNGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFNyY3NldFBhcnNlci5jcHAKQEAgLTEzNCwxNCArMTM0LDE0IEBAIHN0YXRpYyBib29s
IHBhcnNlRGVzY3JpcHRvcnMoVmVjdG9yPFN0cmluZ1ZpZXc+JiBkZXNjcmlwdG9ycywgRGVzY3Jp
cHRvclBhcnNpbmdSCiAgICAgICAgIGlmIChkZXNjcmlwdG9yQ2hhciA9PSAneCcpIHsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRGVuc2l0eSgpIHx8IHJlc3VsdC5oYXNIZWlnaHQoKSB8fCBy
ZXN1bHQuaGFzV2lkdGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBPcHRpb25hbDxkb3VibGU+IGRlbnNpdHkgPSBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9p
bnROdW1iZXIoZGVzY3JpcHRvcik7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
ZGVuc2l0eSA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihkZXNjcmlwdG9yKTsK
ICAgICAgICAgICAgIGlmICghZGVuc2l0eSB8fCBkZW5zaXR5LnZhbHVlKCkgPCAwKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJlc3VsdC5zZXREZW5zaXR5KGRl
bnNpdHkudmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvckNoYXIgPT0gJ3cn
KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzV2lk
dGgoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBPcHRpb25h
bDxpbnQ+IHJlc291cmNlV2lkdGggPSBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihk
ZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiByZXNvdXJjZVdpZHRo
ID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoZGVzY3JpcHRvcik7CiAgICAgICAg
ICAgICBpZiAoIXJlc291cmNlV2lkdGggfHwgcmVzb3VyY2VXaWR0aC52YWx1ZSgpIDw9IDApCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgcmVzdWx0LnNldFJlc291
cmNlV2lkdGgocmVzb3VyY2VXaWR0aC52YWx1ZSgpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZURlc2NyaXB0b3JzKFZlY3RvcjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMs
IERlc2NyaXB0b3JQYXJzaW5nUgogICAgICAgICAgICAgLy8gVGhlIHZhbHVlIG9mIHRoZSAnaCcg
ZGVzY3JpcHRvciBpcyBub3QgdXNlZC4KICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRGVuc2l0
eSgpIHx8IHJlc3VsdC5oYXNIZWlnaHQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBPcHRpb25hbDxpbnQ+IHJlc291cmNlSGVpZ2h0ID0gcGFyc2VWYWxpZEhU
TUxOb25OZWdhdGl2ZUludGVnZXIoZGVzY3JpcHRvcik7CisgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPGludD4gcmVzb3VyY2VIZWlnaHQgPSBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihkZXNjcmlwdG9yKTsKICAgICAgICAgICAgIGlmICghcmVzb3VyY2VIZWlnaHQgfHwgcmVzb3Vy
Y2VIZWlnaHQudmFsdWUoKSA8PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHJlc3VsdC5zZXRSZXNvdXJjZUhlaWdodChyZXNvdXJjZUhlaWdodC52YWx1ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCmluZGV4IGQxMTFjMmQ5NjRlOTg1NzE1MzNhMDM5NGYxNWE3NzA0YmY4ZTExMDYuLjlhZjcz
NTIwNzM3MmM2MDEwMGU4ODgzMjExNmFhMmFiNDk0ZTY5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtMjk4LDcgKzI5OCw3
IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBM
YXlvdXRQb2ludCYgYWJzb2x1dGVQb2ludCkKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkK
ICAgICBjb25zdCBMYXlvdXRVbml0IHNuYXBwaW5nVGhyZXNob2xkID0gcmVuZGVyZXIoKS0+dGhl
bWUoKS5zbGlkZXJUaWNrU25hcHBpbmdUaHJlc2hvbGQoKTsKICAgICBpZiAoc25hcHBpbmdUaHJl
c2hvbGQgPiAwKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0ID0gaW5w
dXQtPmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZSh2YWx1ZSkpIHsKKyAgICAgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdCA9IGlucHV0LT5maW5kQ2xvc2VzdFRpY2tNYXJrVmFs
dWUodmFsdWUpKSB7CiAgICAgICAgICAgICBkb3VibGUgY2xvc2VzdEZyYWN0aW9uID0gc3RlcFJh
bmdlLnByb3BvcnRpb25Gcm9tVmFsdWUoKmNsb3Nlc3QpLnRvRG91YmxlKCk7CiAgICAgICAgICAg
ICBkb3VibGUgY2xvc2VzdFJhdGlvID0gaXNWZXJ0aWNhbCB8fCAhaXNMZWZ0VG9SaWdodERpcmVj
dGlvbiA/IDEuMCAtIGNsb3Nlc3RGcmFjdGlvbiA6IGNsb3Nlc3RGcmFjdGlvbjsKICAgICAgICAg
ICAgIExheW91dFVuaXQgY2xvc2VzdFBvc2l0aW9uID0gdHJhY2tMZW5ndGggKiBjbG9zZXN0UmF0
aW87CkBAIC01ODIsNyArNTgyLDcgQEAgSFRNTElucHV0RWxlbWVudCogU2xpZGVyVGh1bWJFbGVt
ZW50Ojpob3N0SW5wdXQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PihzaGFkb3dIb3N0KCkpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFNsaWRlclRo
dW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
UmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlk
ZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCiB7CiAgICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVh
bGx5IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBhIGhhY2sgdG8gcGljayBzaGFkb3cgcHNl
dWRvIGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4KIApAQCAtNTkwLDcgKzU5MCw3IEBAIE9w
dGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gbWVkaWFTbGlkZXJUaHVtYlNoYWRvd1BzZXVkb0lkKCItd2Via2l0LW1lZGlh
LXNsaWRlci10aHVtYiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAg
ICAgaWYgKCFob3N0U3R5bGUpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNoIChob3N0U3R5bGUtPmFwcGVhcmFuY2UoKSkg
ewogICAgIGNhc2UgTWVkaWFTbGlkZXJQYXJ0OgpAQCAtNjA1LDcgKzYwNSw3IEBAIE9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmCiAgICAgICAgIG1fc2hhZG93UHNldWRvSWQgPSBzbGlkZXJUaHVtYlNo
YWRvd1BzZXVkb0lkOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU2xpZGVyVGh1bWJFbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CkBAIC02MzYsNyArNjM2LDcgQEAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHkKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyQ29udGFp
bmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+
IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCitzdGQ6Om9wdGlvbmFsPEVsZW1l
bnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAvLyBU
aGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0
byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCkBAIC02
NDQsNyArNjQ0LDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3QKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBzbGlkZXJDb250YWluZXIoIi13ZWJraXQtc2xp
ZGVyLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAg
ICAgaWYgKCFob3N0U3R5bGUpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNoIChob3N0U3R5bGUtPmFwcGVhcmFuY2UoKSkg
ewogICAgIGNhc2UgTWVkaWFTbGlkZXJQYXJ0OgpAQCAtNjU5LDcgKzY1OSw3IEBAIE9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclN0CiAgICAgICAgIG1fc2hhZG93UHNldWRvSWQgPSBzbGlkZXJDb250YWlu
ZXI7CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oCmluZGV4IDE1Yjc0YWY2YzI0OTYyODdiZjhmOWQyMTg3OGI2YmVmZjE3
MTE3MmIuLjgwNWVjYjZjYzNmOTRmYzdkNTA5MjEwZmZmYzUyZDgwM2IwNWFhNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC03Nyw3
ICs3Nyw3IEBAIGNsYXNzIFNsaWRlclRodW1iRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2
RWxlbWVudCB7CiAjZW5kaWYKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlk
ZTsKIAotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHNoYWRvd1BzZXVkb0lkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0RHJhZ2dp
bmcoKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBjbGFzcyBTbGlkZXJDb250YWluZXJFbGVtZW50IGZp
bmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHByaXZhdGU6CiAgICAgU2xpZGVyQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOworICAg
IHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEF0b21pY1N0
cmluZyBtX3NoYWRvd1BzZXVkb0lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggZTBkN2YyZTFkMjhiM2Y5
MzViMmJiNzQ4MjlkZTE1MWNmYjkzYWUxYS4uNzkwMWM2YTNkNDA2NjQ2OGY5OTdmZmIyOTMzMTY3
ZDdhMzVmOTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFJlZjxUZXh0Q29u
dHJvbElubmVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJv
bElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0
eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBh
dXRvIGlubmVyQ29udGFpbmVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAgICAg
aW5uZXJDb250YWluZXJTdHlsZS0+aW5oZXJpdEZyb20oc2hhZG93SG9zdFN0eWxlKTsKQEAgLTEz
NCw3ICsxMzQsNyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcigpKTsKIH0K
IAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJl
c29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBz
aGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSBk
b3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRl
SW5uZXJUZXh0U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSk7CiAgICAgcmV0dXJuIEVsZW1lbnRTdHls
ZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOwpAQCAtMTQ5
LDcgKzE0OSw3IEBAIFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpUZXh0Q29udHJvbFBs
YWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgc2V0SGFzQ3VzdG9tU3R5
bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENv
bnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IHJlc29s
dmVTdHlsZSgmcGFyZW50U3R5bGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4IGVlZGEwOTRmMDFkMzA0N2Rh
MzQ1ZGRjYThlMmFlZmMyOTIyYzUwZmIuLmIxNmUxZTczNjQ2YmUzZThjNDhiZWI5NGNiM2ZkNGY2
YmRkNDgxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFRleHRDb250cm9s
SW5uZXJFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIAogcHJvdGVjdGVk
OgogICAgIFRleHRDb250cm9sSW5uZXJFbGVtZW50KERvY3VtZW50Jik7Ci0gICAgT3B0aW9uYWw8
RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHls
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgVGV4
dENvbnRyb2xJbm5lclRleHRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsK
IHByaXZhdGU6CiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Jik7CiAg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKSBvdmVycmlkZTsKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwpAQCAtNzYsNyArNzYsNyBA
QCBjbGFzcyBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
RGl2RWxlbWVudCB7CiBwcml2YXRlOgogICAgIFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50
KERvY3VtZW50Jik7CiAgICAgCi0gICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRT
dHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiB9OwogCiBjbGFz
cyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZF
bGVtZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmgKaW5kZXggZTZmMDZl
ODM2ZDhjMjY1NzRmZWYzZjgzMzc5ZjlhMDMwNTM0MzVlZC4uNWU5NDQ5YmZjZWJmN2RlOTNiM2Uy
MWQ2MDk3YTI5ZjEzNmNjYTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgVHJhY2tFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVu
dCB7CiAgICAgdXNpbmcgVHJhY2tFdmVudFRyYWNrID0gVmFyaWFudDxSZWZQdHI8VmlkZW9UcmFj
az4sIFJlZlB0cjxBdWRpb1RyYWNrPiwgUmVmUHRyPFRleHRUcmFjaz4+OwogCiAgICAgc3RydWN0
IEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICAgICAgT3B0aW9uYWw8VHJhY2tFdmVudFRy
YWNrPiB0cmFjazsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUcmFja0V2ZW50VHJhY2s+IHRyYWNr
OwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPFRyYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVz
dGVkID0gSXNUcnVzdGVkOjpObykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDgxZjJmNWI2NDQ5NzVkZmQ0OTI3NzRm
MTIyMzk1MjQ3MWMyMTI3ZjAuLjgzOTVlMjY1N2ExNzdkNWI1OGJjZGVjNDMyNmYwZjM0MzhiNjZj
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgRXhlY3V0YWJsZVdpdGhEYXRh
YmFzZTo6c3RhcnQoSURCRmFjdG9yeSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qLCBjb25z
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGlkYkZhY3Rvcnkt
Pm9wZW4oKmNvbnRleHQoKSwgZGF0YWJhc2VOYW1lLCBOdWxsb3B0KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGlkYkZhY3RvcnktPm9wZW4oKmNvbnRleHQoKSwgZGF0YWJhc2VOYW1lLCBzdGQ6Om51bGxv
cHQpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVxdWVzdENh
bGxiYWNrKCkuc2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVuIGRhdGFiYXNlLiIpOwogICAgICAg
ICByZXR1cm47CkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNl
OjpzdGFydChJREJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKIH0K
IAogCi1zdGF0aWMgUmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBP
cHRpb25hbDxJREJLZXlQYXRoPiYgaWRiS2V5UGF0aCkKK3N0YXRpYyBSZWZQdHI8S2V5UGF0aD4g
a2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGlk
YktleVBhdGgpCiB7CiAgICAgaWYgKCFpZGJLZXlQYXRoKQogICAgICAgICByZXR1cm4gS2V5UGF0
aDo6Y3JlYXRlKCkuc2V0VHlwZShLZXlQYXRoOjpUeXBlOjpOdWxsKS5yZWxlYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IGQyM2MyY2Y1ODc5ZDg1NTkxMzhmZTM5MjIxYzBkMGQzOGJkMTc2NjcuLmYzNmI1
ZWRjYzQyZDlhNDhiNGVjOWZmODkxNTg2YThmYzZlODQ1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02NDMs
NyArNjQzLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW4KICAgICAgICAgY29uc29sZUFnZW50
LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7IC8vIFRoaXMgc2hvdWxkIGNvbWUg
QUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMuCiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50KiBjbGllbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8U3Ry
aW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVS
TCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVS
TCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpCiB7
CiAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5kaWRGaW5pc2hY
SFJMb2FkaW5nKGlkZW50aWZpZXIsIHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIsIHNlbmRD
b2x1bW5OdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGVhNDg2ZmY2MmQ4NGM3NzMzZDk0ODJhYmI2OWFlOTdi
ZDQxNDNkMzIuLjhkMjg0NWRhY2I2NTZhMWIxYTBkZTBhYWIzN2QyMjZmZmZmNTU5NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gewog
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8
U3RyaW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2Vu
ZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIp
OworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNl
bmRDb2x1bW5OdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKQEAgLTM0MCw3ICszNDAsNyBAQCBjbGFzcyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24gewogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBVUkwmLCBib29sLCBSZWZQdHI8Rm9ybURhdGE+JiYsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmLCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgT3B0aW9uYWw8U3RyaW5n
PiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwg
dW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpOworICAg
IHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29s
dW1uTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRp
YyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJik7CkBAIC05MjQsNyArOTI0LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGUK
ICAgICAgICAgZGlkRmFpbExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlm
aWVyLCBsb2FkZXIsIGVycm9yKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBPcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2Vu
ZENvbHVtbk51bWJlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENvbHVt
bk51bWJlcikKIHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICBk
aWRGaW5pc2hYSFJMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY2xpZW50LCBpZGVu
dGlmaWVyLCBkZWNvZGVkVGV4dCwgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlciwgc2VuZENv
bHVtbk51bWJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKaW5kZXggYzJhOTUzZjRkM2ZlNjAzMTZmMDVkNDEzOTcwNjU4NTQzZDJhMjM2
Zi4uNzdmZDNkMDc3OGJhYjM0MWJiODI1NGJmODAxMmU5NGI0ODhjODlmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzA0LDcg
KzcwNCw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25z
dCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlCiAgICAgU3RyaW5nQnVpbGRlciBzdHls
ZVNoZWV0VGV4dDsKICAgICBzdHlsZVNoZWV0VGV4dC5hcHBlbmQodGV4dCk7CiAKLSAgICBhdXRv
IGFkZFJ1bGVSZXN1bHQgPSBtX3BhZ2VTdHlsZVNoZWV0LT5hZGRSdWxlKHNlbGVjdG9yLCBlbXB0
eVN0cmluZygpLCBOdWxsb3B0KTsKKyAgICBhdXRvIGFkZFJ1bGVSZXN1bHQgPSBtX3BhZ2VTdHls
ZVNoZWV0LT5hZGRSdWxlKHNlbGVjdG9yLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQpOwog
ICAgIGlmIChhZGRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVjID0gYWRk
UnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAppbmRleCA1MmEwMWM1OWM5MzA5OGY3MTI4ZGZiMDIxYzc0MzQ3OWNhOTZiZDk2
Li5hZTg4NTRiMGI4ZTk3NjczNzFiMWJiMWMyNmE2N2M1YjliOWY4OWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0x
NDMsNyArMTQzLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRJbnN0cnVtZW50
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3AKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPFByb3RvY29sOjpUaW1lbGluZTo6SW5z
dHJ1bWVudD4gaW5zdHJ1bWVudFR5cGUgPSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUaW1lbGluZTo6SW5zdHJ1bWVudD4oZW51
bVZhbHVlU3RyaW5nKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VGltZWxpbmU6
Okluc3RydW1lbnQ+IGluc3RydW1lbnRUeXBlID0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6
OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+
KGVudW1WYWx1ZVN0cmluZyk7CiAgICAgICAgIGlmICghaW5zdHJ1bWVudFR5cGUpIHsKICAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5leHBlY3RlZCBlbnVtIHZhbHVlOiAi
LCBlbnVtVmFsdWVTdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAxMWE0OGQ3
M2NhMzc4ZmI1NGE4ZWVkZDg4ZTZjNzY4YTIzZjkwZTEyLi5lODc4MWUzYmE1ZjA1ZGQ4MWUxNzcy
ODBkYjllZGE2Yzc1NjJlNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KFJl
c291cmNlUmVxdWVzCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKICAgICBpZiAobV9hc3luYykgewotICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBDcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIoKnRoaXMsIFdURk1vdmUocmVxdWVzdCkpOworICAgICAg
ICBtX3ByZWZsaWdodENoZWNrZXIuZW1wbGFjZSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSk7CiAg
ICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlci0+c3RhcnRQcmVmbGlnaHQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6Y2xlYXJSZXNvdXJjZSgpCiAgICAgICAgIHJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwogICAgIH0KICAgICBpZiAobV9wcmVmbGlnaHRDaGVja2VyKQotICAgICAgICBtX3ByZWZs
aWdodENoZWNrZXIgPSBOdWxsb3B0OworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXBvcnRDb250ZW50U2VjdXJpdHlQ
b2xpY3lFcnJvcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgdXJs
KQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVm
bGlnaHRTdWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgUmVzb3VyY2VSZXF1
ZXN0IGFjdHVhbFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZv
ckFjY2Vzc0NvbnRyb2woYWN0dWFsUmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4oKSwgbV9vcHRpb25z
LmFsbG93Q3JlZGVudGlhbHMpOwogCi0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gTnVsbG9wdDsK
KyAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJdCBzaG91
bGQgYmUgb2sgdG8gc2tpcCB0aGUgc2VjdXJpdHkgY2hlY2sgc2luY2Ugd2UgYWxyZWFkeSBhc2tl
ZCBhYm91dCB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCiAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShh
Y3R1YWxSZXF1ZXN0KSwgU2tpcFNlY3VyaXR5Q2hlY2spOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGln
aHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7Ci0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gTnVsbG9wdDsKKyAgICBtX3ByZWZs
aWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZhaWxMb2FkaW5nKG1fZG9jdW1lbnQuZnJhbWUoKSwgbV9kb2N1bWVudC5mcmFtZSgp
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlcnJvcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCAw
ZmYyOTBkODI1NjM4M2EwNzFiZmRmMWY4ZGQxYmU3NjhlZmU0ZTczLi4zZGE4YzVlZmRiY2MwNGU3
YzliNTJmZGJiMmQ1NWJjZmZiOWFmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMTcsOCArMTE3LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2ltcGxlUmVxdWVzdDsKICAgICAgICAgYm9vbCBt
X2FzeW5jOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICAgICAgT3B0aW9uYWw8Q3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyPiBtX3ByZWZsaWdodENoZWNrZXI7Ci0gICAgICAgIE9wdGlvbmFsPEhUVFBI
ZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcj4gbV9wcmVmbGlnaHRDaGVja2VyOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFkZXJzOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
aW5kZXggZjk2MGUzY2U5NmEzN2IzZjhjZWI1MDdiMTU2YzE3NTAwOTc3NjJiZS4uZDMwMGU3NmJk
NjE5ODI3YWNmNjNmZGYzMTRlOTlkYzAyZmJmYTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgY2xhc3MgRW1wdHlQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IHsKICAg
ICBib29sIHNob3dQYXltZW50VUkoY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFVSTD4mLCBjb25z
dCBQYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBj
b21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBQYXltZW50TWVyY2hhbnRTZXNzaW9uJikg
b3ZlcnJpZGUgeyB9CiAKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3Rh
bEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQ
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6
OlRvdGFsQW5kTGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFs
QW5kTGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+Jiwgc3RkOjpv
cHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlIHsgfQog
ICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA2NjBiMTJmODYzYzgzODY2MWZk
MjcwMTljMDYxMzMzOWJhNDNmZTM0Li5mMzdkZmI0YzAzZTI4ZWQyN2IyODA5NjYxOWU0MDYyZjI1
NWE0ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yOTYsNyArMjk2
LDcgQEAgY2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNs
aWVudCB7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgb3ZlcnJpZGUgeyB9CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGUgeyB9CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8
SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+KSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9j
dW1lbnRMb2FkKCkgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCBhYzQ4MjhiNjMyMzBhZmEzZWZjNmNmZTRmYjNiMjVlNjk0YWYwMGI5Li4xNGZhNDBk
MWM0YzA4MjFiYzQ5NjVkN2E2N2JhN2Y0Y2NmMDY4YmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTM0NCw5ICszNDQsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFu
Z2VMb2NhdGlvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHVybFNlbGVj
dGVkKHJlcXVlc3QsIG51bGxwdHIpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3Rl
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmln
Z2VyaW5nRXZlbnQsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0
IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJy
ZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OnVybFNl
bGVjdGVkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlbnQq
IHRyaWdnZXJpbmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2Fy
ZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRS
ZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBvcGVuZXJQb2xp
Y3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCiB7Ci0gICAgTmV3RnJh
bWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVP
cihzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5l
clBvbGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOworICAgIE5l
d0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gb3BlbmVyUG9saWN5LnZh
bHVlX29yKHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1l
T3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAg
ICAgdXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1cmwpLCBwYXNzZWRUYXJnZXQsIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdh
dGlvblRvSW52YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5lclBvbGljeSwgRG9Ob3RSZXBsYWNl
RG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGRv
d25sb2FkQXR0cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0KIApAQCAtNjMwLDcgKzYzMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBj
bGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wKIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRG
aXJzdERhdGEoKQogewotICAgIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChOdWxsb3B0KTsKKyAgICBk
aXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpudWxsb3B0KTsKICAgICBkaXNwYXRjaERpZENsZWFy
V2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAgICAgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFp
bGFibGVJbkFsbFdvcmxkcygpOwogCkBAIC0xODE5LDcgKzE4MTksNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICByZXF1ZXN0RnJvbURlbGVnYXRl
KG1haW5SZXNvdXJjZVJlcXVlc3QsIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdWNl
RXJyb3IpOwogICAgICAgICBub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGNh
Y2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIGNhY2hl
ZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkpOwogCi0gICAgICAgIE9wdGlvbmFs
PEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50ID0gY2FjaGVkUGFnZS0+Y2Fj
aGVkTWFpbkZyYW1lKCktPmhhc0luc2VjdXJlQ29udGVudCgpOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50ID0gY2FjaGVkUGFnZS0+
Y2FjaGVkTWFpbkZyYW1lKCktPmhhc0luc2VjdXJlQ29udGVudCgpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIEFQSSBzaG91bGQgYmUgdHVybmVkIGFyb3VuZCBzbyB0aGF0IHdlIGdyb3VuZCBD
YWNoZWRQYWdlIGludG8gdGhlIFBhZ2UuCiAgICAgICAgIGNhY2hlZFBhZ2UtPnJlc3RvcmUoKm1f
ZnJhbWUucGFnZSgpKTsKQEAgLTIxMDIsNyArMjEwMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9w
ZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBBU1NFUlQodmlldyk7CiAgICAg
dmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCi0gICAgT3B0aW9uYWw8SW50UmVj
dD4gcHJldmlvdXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3KCkgPyAgbV9mcmFtZS52aWV3
KCktPmZyYW1lUmVjdCgpIDogT3B0aW9uYWw8SW50UmVjdD4oTnVsbG9wdCk7CisgICAgc3RkOjpv
cHRpb25hbDxJbnRSZWN0PiBwcmV2aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/
ICBtX2ZyYW1lLnZpZXcoKS0+ZnJhbWVSZWN0KCkgOiBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+KHN0
ZDo6bnVsbG9wdCk7CiAgICAgbV9mcmFtZS5zZXRWaWV3KHZpZXcpOwogCiAgICAgLy8gVXNlIHRo
ZSBwcmV2aW91cyBTY3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KQEAgLTM1MzQsNyArMzUzNCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAjZW5kaWYKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9w
dGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCkKK3Zv
aWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0lu
c2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCkKIHsKICAgICBpZiAobV9z
dGF0ZU1hY2hpbmUuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1
cm47CkBAIC0zNTk4LDggKzM1OTgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpmb3JjZVBhZ2VUcmFu
c2l0aW9uSWZOZWVkZWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclRlc3RpbmdPdmVycmlk
ZXMoKQogewotICAgIG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcgPSBOdWxsb3B0Owot
ICAgIG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3RpbmcgPSBOdWxsb3B0Owor
ICAgIG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcgPSBzdGQ6Om51bGxvcHQ7CisgICAg
bV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZyA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBtX2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0
aW5nID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNGNk
NWRkZThkZmNhNmQ5ZmNhNzhhY2NhMjJmNTgxN2JiNWRkNTQyYy4uZTcwZjZiMGM3OGI3YjFjZDZm
ZmI2MDMxNDEzZmJmNjQ1NTRiMzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
QEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBGcmFtZUxvYWRlciB7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3Jl
ZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIHZvaWQg
Y2hhbmdlTG9jYXRpb24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2
ZW50KiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJl
ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQ
b2xpY3k+ID0gTnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9
IG51bGxBdG9tKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIExvY2tIaXN0b3J5LCBMb2NrQmFja0Zv
cndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBj
b25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20pOwogICAgIHZv
aWQgc3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UsIGJvb2wgY29u
dGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWUpOwpAQCAtMzUxLDcgKzM1MSw3IEBAIGNsYXNzIEZy
YW1lTG9hZGVyIHsKIAogICAgIGJvb2wgc2hvdWxkUmVsb2FkVG9IYW5kbGVVbnJlYWNoYWJsZVVS
TChEb2N1bWVudExvYWRlciopOwogCi0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0
aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50KTsKKyAg
ICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29u
dGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCk7CiAKICAgICB2b2lkIHVybFNlbGVjdGVk
KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBFdmVudCopOwogCkBAIC00NTMsOCArNDUzLDggQEAg
Y2xhc3MgRnJhbWVMb2FkZXIgewogCiAgICAgUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+
IG1fbmV0d29ya2luZ0NvbnRleHQ7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeT4gbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZzsKLSAgICBPcHRpb25hbDxS
ZXNvdXJjZUxvYWRQcmlvcml0eT4gbV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVz
dGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5PiBtX292
ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VM
b2FkUHJpb3JpdHk+IG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3Rpbmc7CiAg
ICAgYm9vbCBtX2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JU
ZXN0aW5nIHsgZmFsc2UgfTsKIAogICAgIFVSTCBtX3ByZXZpb3VzVVJMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxY2NiMjM1ODQ5YTVmNjYwMGQ5ZjIx
N2NlMjdiYWQzOGU4NjI0MjU2Li44MDE0YWIzYzJmYjJlNmY0YTJkZjdiYWJlNWY5ZDkwMzJjNjYx
NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTY0
LDcgKzE2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNl
Y3VyZUNvbnRlbnQ+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+KSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmluaXNoRG9jdW1lbnRMb2FkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
CmluZGV4IDU1YTRkNWY2MGRiOTA5MjNkY2FjYzA0ODliZjc0MzMxMDhlYWJmMGYuLmZhMDc4YjY2
OTJjMGI4YmZlMDAxNjJjNGQ2ZTc3MGNmZTkzMTU2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2Ug
PSBudWxscHRyOwogfQogCi1PcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gTGlua0xvYWRl
cjo6cmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXMpCitzdGQ6Om9w
dGlvbmFsPENhY2hlZFJlc291cmNlOjpUeXBlPiBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9t
QXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBhcykKIHsKICAgICBpZiAoYXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOwpAQCAtMTAxLDcgKzEw
MSw3IEBAIE9wdGlvbmFsPENhY2hlZFJlc291cmNlOjpUeXBlPiBMaW5rTG9hZGVyOjpyZXNvdXJj
ZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3RyCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGFzLCAidHJhY2siKSkKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNl
OjpUZXh0VHJhY2tSZXNvdXJjZTsKICNlbmRpZgotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxv
YWRSZXNvdXJjZUNsaWVudD4gY3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIExpbmtMb2FkZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgdHlwZSkKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNv
bnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLAogICAg
ICAgICBpZiAoIW1fY2xpZW50LnNob3VsZExvYWRMaW5rKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHByaW9yaXR5
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSA9IENhY2hlZFJlc291cmNlOjpMaW5r
UHJlZmV0Y2g7CiAgICAgICAgIGlmIChyZWxBdHRyaWJ1dGUuaXNMaW5rU3VicmVzb3VyY2UpIHsK
ICAgICAgICAgICAgIC8vIFdlIG9ubHkgbWFrZSBvbmUgcmVxdWVzdCB0byB0aGUgY2FjaGVkIHJl
c291cmNlIGxvYWRlciBpZiBtdWx0aXBsZSByZWwgdHlwZXMgYXJlIHNwZWNpZmllZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5oCmluZGV4IDJhNDkyMWM0MTVjZmFhNmRjMDRjNzdkYTdlYjgx
ODcyMjUwNDljM2UuLmU3NzNiNjRjMzkxZjU0NTZkNWIyZDQ5YTM0MzYzOTQ3MmU1MDBmNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBMaW5r
TG9hZGVyIDogcHJpdmF0ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgdmlydHVhbCB+TGlu
a0xvYWRlcigpOwogCiAgICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBhcywgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbiwg
RG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IHJl
c291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFzKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gcmVzb3VyY2VUeXBlRnJvbUFzQXR0
cmlidXRlKGNvbnN0IFN0cmluZyYgYXMpOwogCiAgICAgV2Vha1B0cjxMaW5rTG9hZGVyPiBjcmVh
dGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0K
ICAgICB2b2lkIHRyaWdnZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVkOTk4ZTA1OTM4YTI3
OGJhMTAxNTRmMzM2MmRiMTA1YmZkYzFiMTcuLjQyMDVkNWZkYTcwYWU2MWQ0MzY4YjE3OTkwMDE1
NjhkOTI1MzBjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBTdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2Fk
ZXIoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbgogICAgICwgbV9y
ZXNvdXJjZSgmcmVzb3VyY2UpCiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNl
KQogICAgICwgbV9zdGF0ZShVbmluaXRpYWxpemVkKQotICAgICwgbV9yZXF1ZXN0Q291bnRUcmFj
a2VyKEluUGxhY2UsIGZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIHJl
c291cmNlKQorICAgICwgbV9yZXF1ZXN0Q291bnRUcmFja2VyKHN0ZDo6aW5fcGxhY2UsIGZyYW1l
LmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIHJlc291cmNlKQogewogI2lmbmRl
ZiBOREVCVUcKICAgICBzdWJyZXNvdXJjZUxvYWRlckNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0z
MTAsNyArMzEwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBtX2xvYWRpbmdNdWx0
aXBhcnRDb250ZW50ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBtdWx0aVBh
cnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50Ci0gICAgICAgIG1f
cmVxdWVzdENvdW50VHJhY2tlciA9IE51bGxvcHQ7CisgICAgICAgIG1fcmVxdWVzdENvdW50VHJh
Y2tlciA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFtX3Jlc291cmNlLT5pc0ltYWdlKCkp
IHsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTgwLDcg
KzU4MCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUoKQogICAgIGlmIChy
ZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlcXVlc3RD
b3VudFRyYWNrZXIgPSBOdWxsb3B0OworICAgIG1fcmVxdWVzdENvdW50VHJhY2tlciA9IHN0ZDo6
bnVsbG9wdDsKICNpZiBQTEFURk9STShJT1MpCiAgICAgbV9kb2N1bWVudExvYWRlci0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5sb2FkRG9uZShtX3Jlc291cmNlLCBtX3N0YXRlICE9IENhbmNlbGxl
ZFdoaWxlSW5pdGlhbGl6aW5nKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCmluZGV4IGEzNGVlMDZlNmM5M2RkNzc0ODFhZDVlZjEwZTYzM2Y3YTFkNThj
MGUuLjg0YzBhYzRlY2M3YTNiOGI0YTg1N2ZhNDMwYmVmYjE1ODc0ZjNmMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC0xMjgsNyArMTI4LDcgQEAgY2xh
c3MgU3VicmVzb3VyY2VMb2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogICAg
IENhY2hlZFJlc291cmNlKiBtX3Jlc291cmNlOwogICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0
Q29udGVudDsKICAgICBTdWJyZXNvdXJjZUxvYWRlclN0YXRlIG1fc3RhdGU7Ci0gICAgT3B0aW9u
YWw8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0Q291bnRUcmFja2VyOworICAgIHN0ZDo6
b3B0aW9uYWw8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0Q291bnRUcmFja2VyOwogICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgdW5zaWduZWQgbV9yZWRpcmVj
dENvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IGUwNzkzOGM5Zjc1MDE3OTUyNzkxMGE0OTZjZTZmNGNhZGQyZTYw
MDQuLmFmYjBiNjU0NzMyZDZlYmI1NmE1NjRmYTY4MDQ3Nzk5ZTU2MjIwMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtODAyLDcgKzgw
Miw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFyZUFsbENsaWVudHNYTUxIdHRwUmVxdWVzdHMo
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpzZXRM
b2FkUHJpb3JpdHkoY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBsb2FkUHJp
b3JpdHkpCit2b2lkIENhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkoY29uc3Qgc3RkOjpv
cHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4mIGxvYWRQcmlvcml0eSkKIHsKICAgICBpZiAo
bG9hZFByaW9yaXR5KQogICAgICAgICBtX2xvYWRQcmlvcml0eSA9IGxvYWRQcmlvcml0eS52YWx1
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRl
eCA4NDY4OTUzMzg1ZjE5ZmViOTYwYjgxOGEyZDc5YTJmZmVlNjQzOThmLi5jOGJjMGRmNjM1MjY1
Nzc1ZTY1YmU1NWI0NTg5MDIyNzViM2I1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIENhY2hlZFJl
c291cmNlIHsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAg
IFJlc291cmNlTG9hZFByaW9yaXR5IGxvYWRQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9h
ZFByaW9yaXR5OyB9Ci0gICAgdm9pZCBzZXRMb2FkUHJpb3JpdHkoY29uc3QgT3B0aW9uYWw8UmVz
b3VyY2VMb2FkUHJpb3JpdHk+Jik7CisgICAgdm9pZCBzZXRMb2FkUHJpb3JpdHkoY29uc3Qgc3Rk
OjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5k
ZXggNmNlOGFhYjM5ZDk4MmVlOTU0OTdmZjJjNjU0OTdkYmVmYTQ0YmRhNS4uYmJkYTkxN2M3YWYy
NDA5MGNlZDU0YWZkMTUyMmFjM2FjNjU2ODdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hl
ZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJp
b3JpdHk+IHByaW9yaXR5LCBTdHJpbmcmJiBjaGFyc2V0KQorQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VMb2FkUHJpb3JpdHk+IHByaW9yaXR5LCBTdHJpbmcmJiBjaGFyc2V0KQogICAgIDogbV9y
ZXNvdXJjZVJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpKQogICAgICwgbV9jaGFyc2V0
KFdURk1vdmUoY2hhcnNldCkpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCBk
ODI2MzMxNjQ5MjM4MDZiNzU5N2JhM2JkMmIwMTQzNGJkZWNmOTUxLi42ZjMzNGRhOTcxMjRiZTQ5
NjZiZmZkMzYwYWFkZWJjM2RhNmE0MzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wg
aXNSZXF1ZXN0Q3Jvc3NPcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHJlcXVlc3RV
UkwsIGNvbnN0IFJlc291cmNlCiAKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCB7CiBwdWJs
aWM6Ci0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gPSBO
dWxsb3B0LCBTdHJpbmcmJiBjaGFyc2V0ID0gU3RyaW5nKCkpOworICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwg
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gPSBzdGQ6Om51bGxvcHQsIFN0cmlu
ZyYmIGNoYXJzZXQgPSBTdHJpbmcoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmJiByZWxlYXNl
UmVzb3VyY2VSZXF1ZXN0KCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc291cmNlUmVxdWVzdCk7IH0K
ICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIENhY2hlZFJl
c291cmNlUmVxdWVzdCB7CiAgICAgdm9pZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNl
dCkgeyBtX2NoYXJzZXQgPSBjaGFyc2V0OyB9CiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zJiBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAgICAgdm9pZCBzZXRP
cHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykgeyBtX29wdGlvbnMg
PSBvcHRpb25zOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBw
cmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpb3JpdHk7IH0KKyAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYgcHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBt
X3ByaW9yaXR5OyB9CiAgICAgdm9pZCBzZXRJbml0aWF0b3IoUGFzc1JlZlB0cjxFbGVtZW50Pik7
CiAgICAgdm9pZCBzZXRJbml0aWF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5hbWUoKSBjb25zdDsKQEAgLTkzLDcgKzkzLDcg
QEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXNvdXJjZVJlcXVlc3Q7CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMgbV9vcHRpb25zOwotICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBt
X3ByaW9yaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fcHJp
b3JpdHk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5pdGlhdG9yRWxlbWVudDsKICAgICBBdG9t
aWNTdHJpbmcgbV9pbml0aWF0b3JOYW1lOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9v
cmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBjZWIzNGYxMjE4
ZWU1YWYxNDAwMjg5ODNhZTBiNmFjYWQ5NzQ4Yzc3Li45ZGUxM2Q5ZDY2NzliZWY0OGYyZTQ2N2U1
MDdjNWMzNTU0N2NmODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAg
LTg0LDggKzg0LDggQEAgY2xhc3MgTWF0aE1MRWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50
IHsKICAgICAgICAgU3RyZXRjaGVkID0gMTgKICAgICB9OwogCi0gICAgdmlydHVhbCBPcHRpb25h
bDxib29sPiBzcGVjaWZpZWREaXNwbGF5U3R5bGUoKSB7IHJldHVybiBOdWxsb3B0OyB9Ci0gICAg
dmlydHVhbCBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSB7IHJl
dHVybiBOdWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNwZWNpZmll
ZERpc3BsYXlTdHlsZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5j
cHAKaW5kZXggMWE3ZTRhYjdiNGJjODExNWQ1OWZlN2JkODZhYmFmYWYzZDVhODBiNy4uZWUyMTgx
ZTM2NDlmMjJmNzI0NmU2YmM1Y2RmMmQyMWIxNTM0MTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgY29u
c3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmxpbmVUaGlj
a25lc3MoKQogICAgIHJldHVybiBtX2xpbmVUaGlja25lc3MudmFsdWUoKTsKIH0KIAotTWF0aE1M
RnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6
OmNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlv
bmFsPEZyYWN0aW9uQWxpZ25tZW50PiYgYWxpZ25tZW50KQorTWF0aE1MRnJhY3Rpb25FbGVtZW50
OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmNhY2hlZEZyYWN0aW9u
QWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8RnJhY3Rp
b25BbGlnbm1lbnQ+JiBhbGlnbm1lbnQpCiB7CiAgICAgaWYgKGFsaWdubWVudCkKICAgICAgICAg
cmV0dXJuIGFsaWdubWVudC52YWx1ZSgpOwpAQCAtOTcsMTEgKzk3LDExIEBAIE1hdGhNTEZyYWN0
aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpkZW5v
bWluYXRvckFsaWduCiB2b2lkIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAobmFtZSA9PSBsaW5ldGhpY2tuZXNzQXR0cikKLSAgICAgICAgbV9saW5lVGhpY2tu
ZXNzID0gTnVsbG9wdDsKKyAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gc3RkOjpudWxsb3B0Owog
ICAgIGVsc2UgaWYgKG5hbWUgPT0gbnVtYWxpZ25BdHRyKQotICAgICAgICBtX251bWVyYXRvckFs
aWdubWVudCA9IE51bGxvcHQ7CisgICAgICAgIG1fbnVtZXJhdG9yQWxpZ25tZW50ID0gc3RkOjpu
dWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVub21hbGlnbkF0dHIpCi0gICAgICAgIG1f
ZGVub21pbmF0b3JBbGlnbm1lbnQgPSBOdWxsb3B0OworICAgICAgICBtX2Rlbm9taW5hdG9yQWxp
Z25tZW50ID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEZyYWN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0
aW9uRWxlbWVudC5oCmluZGV4IDNiZjYzYTE4ZDQ2ZjA4Yjg4YWM4ZjE4YmI2ODAwMzI5MjUxMzYw
NzQuLmNmZmY1YjZiMzkyZWZmZTg4NDNkZWY0MjJiNjNlOTJmN2VmNDgzZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKQEAgLTQ4LDExICs0OCwx
MSBAQCBjbGFzcyBNYXRoTUxGcmFjdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudCB7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKIAotICAgIEZyYWN0aW9uQWxpZ25tZW50IGNhY2hlZEZy
YWN0aW9uQWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxGcmFjdGlvbkFs
aWdubWVudD4mKTsKKyAgICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgc3RkOjpvcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4m
KTsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9saW5lVGhpY2tuZXNzOwotICAgIE9wdGlvbmFs
PEZyYWN0aW9uQWxpZ25tZW50PiBtX251bWVyYXRvckFsaWdubWVudDsKLSAgICBPcHRpb25hbDxG
cmFjdGlvbkFsaWdubWVudD4gbV9kZW5vbWluYXRvckFsaWdubWVudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExlbmd0aD4gbV9saW5lVGhpY2tuZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25B
bGlnbm1lbnQ+IG1fbnVtZXJhdG9yQWxpZ25tZW50OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rp
b25BbGlnbm1lbnQ+IG1fZGVub21pbmF0b3JBbGlnbm1lbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAppbmRleCBmNjI2OTQyNzI3ODMxNzk4
NjMyNDVlMTI4OGIzMGFlMWI5NWI5NTE2Li43ODNlOWZmOTU2OTk0OGZhOGM5ZmVjMGVlYjRjYTBl
NWJhNTg3YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxNYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQogCi1PcHRpb25hbDxib29sPiBNYXRoTUxNYXRoRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0
eWxlKCkKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gTWF0aE1MTWF0aEVsZW1lbnQ6OnNwZWNpZmllZERp
c3BsYXlTdHlsZSgpCiB7CiAgICAgaWYgKGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoZGlzcGxheXN0
eWxlQXR0ciwgbV9kaXNwbGF5U3R5bGUpID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCkgewogICAg
ICAgICAvLyBUaGUgZGVmYXVsdCBkaXNwbGF5c3R5bGUgdmFsdWUgb2YgdGhlIDxtYXRoPiBkZXBl
bmRzIG9uIHRoZSBkaXNwbGF5IGF0dHJpYnV0ZSwgc28gd2UgcGFyc2UgaXQgaGVyZS4KQEAgLTcx
LDkgKzcxLDkgQEAgdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICBib29sIGRpc3BsYXlTdHls
ZUF0dHJpYnV0ZSA9IChuYW1lID09IGRpc3BsYXlzdHlsZUF0dHIgfHwgbmFtZSA9PSBkaXNwbGF5
QXR0cik7CiAgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9IG5hbWUgPT0gbWF0aHZhcmlh
bnRBdHRyOwogICAgIGlmIChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUpCi0gICAgICAgIG1fZGlzcGxh
eVN0eWxlID0gTnVsbG9wdDsKKyAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQotICAgICAgICBtX21hdGhWYXJpYW50ID0g
TnVsbG9wdDsKKyAgICAgICAgbV9tYXRoVmFyaWFudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
KGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSB8fCBtYXRoVmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVuZGVy
ZXIoKSkKICAgICAgICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVy
ZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKaW5kZXgg
ZmE2YzZlOWI1Mjc1MTc2YjE4MzdiY2NlMDllOGJiMDY1OWE4NjQzMi4uYTFlMzc3ZTM5MDFlYmFm
YTQyYWFmM2VmYmVkNzc4NDk3MDE5NzRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TE1hdGhFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTWF0aE1MTWF0aEVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgTWF0aE1MUm93RWxlbWVudCB7CiAKICAgICBib29sIGFjY2VwdHNEaXNw
bGF5U3R5bGVBdHRyaWJ1dGUoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBhY2Nl
cHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgT3B0
aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxlKCkgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBzcGVjaWZpZWREaXNwbGF5U3R5bGUoKSBmaW5hbDsKIAogICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAppbmRleCAxMzMwOTE5MmNlMTQ0YmRlNGVk
ZTk5ODNlMmYyYTkwNmRjOWUwNDc2Li43NDNjNDYxMWQzNjk1YmFkYmVhMzQ3NjY0NjFiZDMwYzFj
YmYyYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVt
ZW50LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIGJvb2wgTWF0aE1MTWVuY2xvc2VFbGVtZW50Ojpo
YXNOb3RhdGlvbihNZW5jbG9zZU5vdGF0aW9uRmxhZyBub3RhdGlvbkZsYWcpCiB2b2lkIE1hdGhN
TE1lbmNsb3NlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBub3RhdGlv
bkF0dHIpCi0gICAgICAgIG1fbm90YXRpb25GbGFncyA9IE51bGxvcHQ7CisgICAgICAgIG1fbm90
YXRpb25GbGFncyA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTFJvd0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxNZW5jbG9zZUVsZW1lbnQuaAppbmRleCBlZTc0NWNiYWRmOWY5NzI0ZjQzMmZhZGNmNzg4ZmU1
YmIwMWI0ZDZhLi5kYTFkMmE3NDYyNzYzODc4YjI0NDQ3MGE2NzkyZWJhZjdiMDRlYjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCkBAIC02Myw3
ICs2Myw3IEBAIGNsYXNzIE1hdGhNTE1lbmNsb3NlRWxlbWVudCBmaW5hbDogcHVibGljIE1hdGhN
TFJvd0VsZW1lbnQgewogICAgIHZvaWQgY2xlYXJOb3RhdGlvbnMoKSB7IG1fbm90YXRpb25GbGFn
cyA9IDA7IH0KICAgICB2b2lkIGFkZE5vdGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0
aW9uRmxhZykgeyBtX25vdGF0aW9uRmxhZ3MudmFsdWUoKSB8PSBub3RhdGlvbkZsYWc7IH0KICAg
ICB2b2lkIGFkZE5vdGF0aW9uRmxhZ3MoU3RyaW5nVmlldyBub3RhdGlvbik7Ci0gICAgT3B0aW9u
YWw8dWludDE2X3Q+IG1fbm90YXRpb25GbGFnczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBtX25vdGF0aW9uRmxhZ3M7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCmluZGV4IDdhOGEwNTRkNTgwYzBiMTFhYWU4
MGNhZWRmZTk0YzhiNWEzOTQ2MjUuLjY4NTRmMGRhZDdkOWY3NzliZjQ5YTZmOTQ5ODczNzhmNDgw
MzRhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRp
Y3Rpb25hcnkuY3BwCkBAIC0xMTA3LDE3ICsxMTA3LDE3IEBAIHN0YXRpYyBjb25zdCBVQ2hhcjMy
IGhvcml6b250YWxPcGVyYXRvcnNbXSA9IHsKICAgICAweDAwM0QsIDB4MDA1RSwgMHgwMDVGLCAw
eDAwN0UsIDB4MDBBRiwgMHgwMkM2LCAweDAyQzcsIDB4MDJDOSwgMHgwMkNELCAweDAyREMsIDB4
MDJGNywgMHgwMzAyLCAweDAzMzIsIDB4MjAzRSwgMHgyMEQwLCAweDIwRDEsIDB4MjBENiwgMHgy
MEQ3LCAweDIwRTEsIDB4MjE5MCwgMHgyMTkyLCAweDIxOTQsIDB4MjE5OCwgMHgyMTk5LCAweDIx
OUMsIDB4MjE5RCwgMHgyMTlFLCAweDIxQTAsIDB4MjFBMiwgMHgyMUEzLCAweDIxQTQsIDB4MjFB
NiwgMHgyMUE5LCAweDIxQUEsIDB4MjFBQiwgMHgyMUFDLCAweDIxQUQsIDB4MjFCNCwgMHgyMUI5
LCAweDIxQkMsIDB4MjFCRCwgMHgyMUMwLCAweDIxQzEsIDB4MjFDNCwgMHgyMUM2LCAweDIxQzcs
IDB4MjFDOSwgMHgyMUNCLCAweDIxQ0MsIDB4MjFEMCwgMHgyMUQyLCAweDIxRDQsIDB4MjFEQSwg
MHgyMURCLCAweDIxREMsIDB4MjFERCwgMHgyMUUwLCAweDIxRTIsIDB4MjFFNCwgMHgyMUU1LCAw
eDIxRTYsIDB4MjFFOCwgMHgyMUYwLCAweDIxRjYsIDB4MjFGRCwgMHgyMUZFLCAweDIxRkYsIDB4
MjNCNCwgMHgyM0I1LCAweDIzREMsIDB4MjNERCwgMHgyM0RFLCAweDIzREYsIDB4MjNFMCwgMHgy
M0UxLCAweDI1MDAsIDB4MjdGNSwgMHgyN0Y2LCAweDI3RjcsIDB4MjdGOCwgMHgyN0Y5LCAweDI3
RkEsIDB4MjdGQiwgMHgyN0ZDLCAweDI3RkQsIDB4MjdGRSwgMHgyN0ZGLCAweDI5MEMsIDB4Mjkw
RCwgMHgyOTBFLCAweDI5MEYsIDB4MjkxMCwgMHgyOTRFLCAweDI5NTAsIDB4Mjk1MiwgMHgyOTUz
LCAweDI5NTYsIDB4Mjk1NywgMHgyOTVBLCAweDI5NUIsIDB4Mjk1RSwgMHgyOTVGLCAweDJCNDUs
IDB4MkI0NiwgMHhGRTM1LCAweEZFMzYsIDB4RkUzNywgMHhGRTM4LCAweDFFRUYwLCAweDFFRUYx
CiB9OwogCi1PcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFy
Y2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCitzdGQ6
Om9wdGlvbmFsPFByb3BlcnR5PiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OnNlYXJjaChVQ2hh
cjMyIGNoYXJhY3RlciwgRm9ybSBmb3JtLCBib29sIGV4cGxpY2l0Rm9ybSkKIHsKICAgICBpZiAo
IWNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBXZSB0cnkgYW5kIGZpbmQgdGhlIGRlZmF1bHQgdmFsdWVzIGZy
b20gdGhlIG9wZXJhdG9yIGRpY3Rpb25hcnkuCiAgICAgaWYgKGF1dG8qIGVudHJ5ID0gdHJ5Qmlu
YXJ5U2VhcmNoPGNvbnN0IEVudHJ5LCBLZXk+KGRpY3Rpb25hcnksIGRpY3Rpb25hcnlTaXplLCBL
ZXkoY2hhcmFjdGVyLCBmb3JtKSwgRXh0cmFjdEtleSkpCiAgICAgICAgIHJldHVybiBFeHRyYWN0
UHJvcGVydHkoKmVudHJ5KTsKIAogICAgIGlmIChleHBsaWNpdEZvcm0pCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgd2Ug
ZGlkIG5vdCBmaW5kIHRoZSBkZXNpcmVkIG9wZXJhdG9yIGZvcm0gYW5kIGlmIGl0IHdhcyBub3Qg
c2V0IGV4cGxpY2l0ZWx5LCB3ZSB1c2UgdGhlIGZpcnN0IG9uZSBpbiB0aGUgZm9sbG93aW5nIG9y
ZGVyOiBJbmZpeCwgUHJlZml4LCBQb3N0Zml4LgogICAgIC8vIFRoaXMgaXMgdG8gaGFuZGxlIGJh
ZCBNYXRoTUwgbWFya3VwIHdpdGhvdXQgZXhwbGljaXQgPG1yb3c+IGRlbGltaXRlcnMgbGlrZSAi
PG1vPig8L21vPjxtaT5hPC9taT48bW8+KTwvbW8+PG1vPig8L21vPjxtaT5iPC9taT48bW8+KTwv
bW8+IiB3aGVyZSBpbm5lcmZlbmNlcyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgaW5maXguCkBA
IC0xMTMwLDcgKzExMzAsNyBAQCBPcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5OjpzZWFyY2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybQogICAgICAgICByZXR1
cm4gRXh0cmFjdFByb3BlcnR5KCplbnRyeSk7CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OmlzVmVydGljYWwoVUNoYXIzMiB0ZXh0Q29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaAppbmRleCAwMGVmNTBkNjhjN2Vk
MzRjMzIxMjYzMjdhYjY5ZjlmYWM5ZjRkZTFiLi5lMDMxNmQ3MTQ1MGYyYjI3N2FiMmY3NDQwZDI3
ZDgyM2NiYTA5MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeS5oCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBQcm9wZXJ0eSB7CiAgICAg
Ly8gRGVmYXVsdCBvcGVyYXRvciBwcm9wZXJ0aWVzIGFyZSBhbGwgc2V0IHRvICJmYWxzZSIuCiAg
ICAgdW5zaWduZWQgc2hvcnQgZmxhZ3MgeyAwIH07CiB9OwotT3B0aW9uYWw8UHJvcGVydHk+IHNl
YXJjaChVQ2hhcjMyLCBGb3JtLCBib29sIGV4cGxpY2l0Rm9ybSk7CitzdGQ6Om9wdGlvbmFsPFBy
b3BlcnR5PiBzZWFyY2goVUNoYXIzMiwgRm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pOwogYm9vbCBp
c1ZlcnRpY2FsKFVDaGFyMzIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxPcGVyYXRvckVsZW1lbnQuY3BwCmluZGV4IDk2OGFmZTFlZGUzNjNmY2U5MzhlYTQ3NGNjNGYx
ZDc4MmE0MTQyYzMuLjhkMzViZTMwMDM5ZjI0MTQ1MzQxOWZjZDgwMWU4Njg3NDkxOWUzYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwCkBA
IC0xMzMsNyArMTMzLDcgQEAgdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNvbXB1dGVPcGVy
YXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnIGYKIHsKICAgICBBU1NFUlQo
bV9wcm9wZXJ0aWVzLmRpcnR5RmxhZ3MgJiBmbGFnKTsKIAotICAgIE9wdGlvbmFsPEJvb2xlYW5W
YWx1ZT4gcHJvcGVydHk7CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuVmFsdWU+IHByb3BlcnR5
OwogICAgIGNvbnN0IGF1dG8mIG5hbWUgPSBwcm9wZXJ0eUZsYWdUb0F0dHJpYnV0ZU5hbWUoZmxh
Zyk7CiAgICAgY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSA9IGNhY2hlZEJvb2xlYW5BdHRyaWJ1
dGUobmFtZSwgcHJvcGVydHkpOwogICAgIHN3aXRjaCAodmFsdWUpIHsKQEAgLTIxMSwxMyArMjEx
LDEzIEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MT3BlcmF0b3JFbGVtZW50
OjptYXhTaXplKCkKIAogdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewotICAgIG1fb3BlcmF0b3JDaGFyID0gTnVs
bG9wdDsKLSAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IE51bGxvcHQ7CisgICAgbV9vcGVyYXRv
ckNoYXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV9wcm9wZXJ0aWVzLmRpcnR5RmxhZ3MgPSBNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OmFsbEZsYWdzOwogICAgIE1hdGhNTFRva2VuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZSk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6
OkZsYWc+IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyhjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFn
PiBhdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eUZsYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
IHsKICAgICBpZiAobmFtZSA9PSBhY2NlbnRBdHRyKQogICAgICAgICByZXR1cm4gQWNjZW50OwpA
QCAtMjMzLDI0ICsyMzMsMjQgQEAgc3RhdGljIE9wdGlvbmFsPE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeTo6RmxhZz4gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKGNvbnMKICAgICAgICAgcmV0
dXJuIFN0cmV0Y2h5OwogICAgIGlmIChuYW1lID09IHN5bW1ldHJpY0F0dHIpCiAgICAgICAgIHJl
dHVybiBTeW1tZXRyaWM7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKG5hbWUgPT0gZm9ybUF0dHIpIHsKLSAgICAgICAgbV9kaWN0aW9uYXJ5UHJvcGVydHkg
PSBOdWxsb3B0OworICAgICAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgbV9wcm9wZXJ0aWVzLmRpcnR5RmxhZ3MgPSBNYXRoTUxPcGVyYXRvckRpY3Rpb25h
cnk6OmFsbEZsYWdzOwogICAgIH0gZWxzZSBpZiAoYXV0byBmbGFnID0gYXR0cmlidXRlTmFtZVRv
UHJvcGVydHlGbGFnKG5hbWUpKQogICAgICAgICBtX3Byb3BlcnRpZXMuZGlydHlGbGFncyB8PSBm
bGFnLnZhbHVlKCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBsc3BhY2VBdHRyKQotICAgICAgICBt
X2xlYWRpbmdTcGFjZSA9IE51bGxvcHQ7CisgICAgICAgIG1fbGVhZGluZ1NwYWNlID0gc3RkOjpu
dWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gcnNwYWNlQXR0cikKLSAgICAgICAgbV90cmFp
bGluZ1NwYWNlID0gTnVsbG9wdDsKKyAgICAgICAgbV90cmFpbGluZ1NwYWNlID0gc3RkOjpudWxs
b3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gbWluc2l6ZUF0dHIpCi0gICAgICAgIG1fbWluU2l6
ZSA9IE51bGxvcHQ7CisgICAgICAgIG1fbWluU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNl
IGlmIChuYW1lID09IG1heHNpemVBdHRyKQotICAgICAgICBtX21heFNpemUgPSBOdWxsb3B0Owor
ICAgICAgICBtX21heFNpemUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKG5hbWUgPT0gc3Ry
ZXRjaHlBdHRyIHx8IG5hbWUgPT0gbHNwYWNlQXR0ciB8fCBuYW1lID09IHJzcGFjZUF0dHIgfHwg
bmFtZSA9PSBtb3ZhYmxlbGltaXRzQXR0cikgJiYgcmVuZGVyZXIoKSkgewogICAgICAgICBkb3du
Y2FzdDxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oKnJlbmRlcmVyKCkpLnVwZGF0ZUZyb21FbGVtZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmgKaW5k
ZXggMzgwOTY1NzBlOWU0NTZkODFmOTM5MTc1ZDFkNDIwYjM0ODg5MjgyMS4uNWRlZmQ3N2ZlZTFh
ZThlMDIyYmRkZDQxNDI4MDYyNDExMmQ4OWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBNYXRoTUxP
cGVyYXRvckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MVG9rZW5FbGVtZW50IHsKICAgICB9
OwogICAgIHN0YXRpYyBPcGVyYXRvckNoYXIgcGFyc2VPcGVyYXRvckNoYXIoY29uc3QgU3RyaW5n
Jik7CiAgICAgY29uc3QgT3BlcmF0b3JDaGFyJiBvcGVyYXRvckNoYXIoKTsKLSAgICB2b2lkIHNl
dE9wZXJhdG9yRm9ybURpcnR5KCkgeyBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IE51bGxvcHQ7IH0K
KyAgICB2b2lkIHNldE9wZXJhdG9yRm9ybURpcnR5KCkgeyBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9
IHN0ZDo6bnVsbG9wdDsgfQogICAgIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6Rm9ybSBmb3Jt
KCkgeyByZXR1cm4gZGljdGlvbmFyeVByb3BlcnR5KCkuZm9ybTsgfQogICAgIGJvb2wgaGFzUHJv
cGVydHkoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKTsKICAgICBMZW5ndGggZGVmYXVs
dExlYWRpbmdTcGFjZSgpOwpAQCAtNTcsOSArNTcsOSBAQCBjbGFzcyBNYXRoTUxPcGVyYXRvckVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MVG9rZW5FbGVtZW50IHsKICAgICB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwog
Ci0gICAgT3B0aW9uYWw8T3BlcmF0b3JDaGFyPiBtX29wZXJhdG9yQ2hhcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPE9wZXJhdG9yQ2hhcj4gbV9vcGVyYXRvckNoYXI7CiAKLSAgICBPcHRpb25hbDxNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5PiBtX2RpY3Rpb25hcnlQcm9wZXJ0eTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6UHJvcGVydHk+IG1fZGlj
dGlvbmFyeVByb3BlcnR5OwogICAgIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6UHJvcGVydHkg
Y29tcHV0ZURpY3Rpb25hcnlQcm9wZXJ0eSgpOwogICAgIGNvbnN0IE1hdGhNTE9wZXJhdG9yRGlj
dGlvbmFyeTo6UHJvcGVydHkmIGRpY3Rpb25hcnlQcm9wZXJ0eSgpOwogCkBAIC03MCwxMCArNzAs
MTAgQEAgY2xhc3MgTWF0aE1MT3BlcmF0b3JFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTFRv
a2VuRWxlbWVudCB7CiAgICAgT3BlcmF0b3JQcm9wZXJ0aWVzIG1fcHJvcGVydGllczsKICAgICB2
b2lkIGNvbXB1dGVPcGVyYXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKTsK
IAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9sZWFkaW5nU3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVu
Z3RoPiBtX3RyYWlsaW5nU3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21pblNpemU7Ci0g
ICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21heFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+
IG1fbGVhZGluZ1NwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3RyYWlsaW5nU3Bh
Y2U7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fbWluU2l6ZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPExlbmd0aD4gbV9tYXhTaXplOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCmluZGV4IDQ5YzA2ZWQyNTc3NzQwMGZhNzBkZjJjNzIz
ODNiMGI4NzEwNDljYTEuLmIyZjQ0NmQ4M2NlMzAzYmI2ZjI3MmEyMTE4YmY2ZTNlNWQ4YmQ5MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAKQEAg
LTczLDE1ICs3MywxNSBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFBhZGRl
ZEVsZW1lbnQ6OnZvZmZzZXQoKQogdm9pZCBNYXRoTUxQYWRkZWRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogewogICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aCA9IE51bGxv
cHQ7CisgICAgICAgIG1fd2lkdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodCA9IE51bGxvcHQ7CisgICAgICAgIG1faGVp
Z2h0ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVwdGhBdHRyKQotICAg
ICAgICBtX2RlcHRoID0gTnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBlbHNlIGlmIChuYW1lID09IGxzcGFjZUF0dHIpCi0gICAgICAgIG1fbHNwYWNlID0gTnVs
bG9wdDsKKyAgICAgICAgbV9sc3BhY2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSB2b2Zmc2V0QXR0cikKLSAgICAgICAgbV92b2Zmc2V0ID0gTnVsbG9wdDsKKyAgICAgICAg
bV92b2Zmc2V0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFBhZGRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRk
ZWRFbGVtZW50LmgKaW5kZXggMTE2YmIyNWU5MTBkN2VhN2NmYzFjMmM1YjJkMmI3ZTQ0Nzg2OWU5
ZC4uN2NhMzczZTQ1YTFhMmQ1ZDYyN2UxZjI3OTExODRiNjM2N2U3OTE5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oCkBAIC00NSwxMSArNDUsMTEgQEAg
Y2xhc3MgTWF0aE1MUGFkZGVkRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxSb3dFbGVtZW50
IHsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IGZpbmFsOwogCi0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOwotICAgIE9wdGlvbmFsPExl
bmd0aD4gbV9oZWlnaHQ7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOwotICAgIE9wdGlv
bmFsPExlbmd0aD4gbV9sc3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3ZvZmZzZXQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxMZW5n
dGg+IG1faGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOworICAgIHN0
ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2xzcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4g
bV92b2Zmc2V0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IDkzNTVkMzgzMGJmZDQwMDMxZGM0NjZiMDZh
YTMxNTYyOTY1Mjk0ZGUuLmRlOWJkNWQxYTc0ODQzZmMxODM5ODNkOTAxNzNhNjc0M2RmMmRiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBib29sIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQ6OmlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYgbm9kZSkKICAgICAgICAgfHwgaHRtbEVsZW1l
bnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnVsVGFnKTsKIH0KIAotY29uc3QgTWF0aE1MRWxlbWVu
dDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpjYWNoZWRCb29sZWFu
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPEJvb2xlYW5WYWx1
ZT4mIGF0dHJpYnV0ZSkKK2NvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1M
UHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mIGF0dHJpYnV0ZSkKIHsK
ICAgICBpZiAoYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlLnZhbHVlKCk7CkBA
IC0zMDYsNyArMzA2LDcgQEAgTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQ6OnBhcnNlTWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcGFy
c2VOYW1lZFNwYWNlKHN0cmluZ1ZpZXcpOwogfQogCi1jb25zdCBNYXRoTUxFbGVtZW50OjpMZW5n
dGgmIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxMZW5ndGg+JiBsZW5ndGgpCitjb25zdCBNYXRo
TUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmNhY2hlZE1hdGhN
TExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPExlbmd0aD4m
IGxlbmd0aCkKIHsKICAgICBpZiAobGVuZ3RoKQogICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVl
KCk7CkBAIC0zMTksMTAgKzMxOSwxMCBAQCBib29sIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6
OmFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKQogICAgIHJldHVybiBoYXNUYWdOYW1lKG10
YWJsZVRhZyk7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6
OnNwZWNpZmllZERpc3BsYXlTdHlsZSgpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IE1hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZERpc3BsYXlTdHlsZSgpCiB7CiAgICAgaWYgKCFhY2Nl
cHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xl
YW5WYWx1ZSYgc3BlY2lmaWVkRGlzcGxheVN0eWxlID0gY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShk
aXNwbGF5c3R5bGVBdHRyLCBtX2Rpc3BsYXlTdHlsZSk7CiAgICAgcmV0dXJuIHRvT3B0aW9uYWxC
b29sKHNwZWNpZmllZERpc3BsYXlTdHlsZSk7CiB9CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBNYXRo
TUxFbGVtZW50OjpNYXRoVmFyaWFudCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1h
dGhWYXJpYW50QXR0cmlidXRlKAogICAgIHJldHVybiBNYXRoVmFyaWFudDo6Tm9uZTsKIH0KIAot
T3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKK3N0ZDo6b3B0aW9uYWw8TWF0aE1MRWxlbWVu
dDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhW
YXJpYW50KCkKIHsKICAgICBpZiAoIWFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIW1fbWF0aFZhcmlhbnQpCiAgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBwYXJzZU1hdGhWYXJp
YW50QXR0cmlidXRlKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWF0aHZhcmlhbnRB
dHRyKSk7Ci0gICAgcmV0dXJuIG1fbWF0aFZhcmlhbnQudmFsdWUoKSA9PSBNYXRoVmFyaWFudDo6
Tm9uZSA/IE51bGxvcHQgOiBtX21hdGhWYXJpYW50OworICAgIHJldHVybiBtX21hdGhWYXJpYW50
LnZhbHVlKCkgPT0gTWF0aFZhcmlhbnQ6Ok5vbmUgPyBzdGQ6Om51bGxvcHQgOiBtX21hdGhWYXJp
YW50OwogfQogCiB2b2lkIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBA
IC0zODMsOSArMzgzLDkgQEAgdm9pZCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAogICAgIGJvb2wgZGlzcGxh
eVN0eWxlQXR0cmlidXRlID0gbmFtZSA9PSBkaXNwbGF5c3R5bGVBdHRyICYmIGFjY2VwdHNEaXNw
bGF5U3R5bGVBdHRyaWJ1dGUoKTsKICAgICBib29sIG1hdGhWYXJpYW50QXR0cmlidXRlID0gbmFt
ZSA9PSBtYXRodmFyaWFudEF0dHIgJiYgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCk7CiAg
ICAgaWYgKGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSkKLSAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBO
dWxsb3B0OworICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
bWF0aFZhcmlhbnRBdHRyaWJ1dGUpCi0gICAgICAgIG1fbWF0aFZhcmlhbnQgPSBOdWxsb3B0Owor
ICAgICAgICBtX21hdGhWYXJpYW50ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICgoZGlzcGxheVN0
eWxlQXR0cmlidXRlIHx8IG1hdGhWYXJpYW50QXR0cmlidXRlKSAmJiByZW5kZXJlcigpKQogICAg
ICAgICBNYXRoTUxTdHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgK
aW5kZXggMWFmOGI4MWQxZGIzMGYzZjBiNWY1NzczMGY0YzlhMjRjMWU4MzljMS4uMjM3MDU1N2I0
Y2MyZWRhMDEzYjYyZDQwMDUwZWMzNmU0YjI1ZmUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCkBAIC00NCwyMCArNDQsMjAgQEAg
Y2xhc3MgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudCA6IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsK
ICAgICBzdGF0aWMgYm9vbCBpc1BocmFzaW5nQ29udGVudChjb25zdCBOb2RlJik7CiAgICAgc3Rh
dGljIGJvb2wgaXNGbG93Q29udGVudChjb25zdCBOb2RlJik7CiAKLSAgICBzdGF0aWMgT3B0aW9u
YWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUgPT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8gTnVsbG9wdCA6IE9wdGlvbmFsPGJv
b2w+KHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KLSAgICBjb25zdCBCb29sZWFuVmFs
dWUmIGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFs
PEJvb2xlYW5WYWx1ZT4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiB0b09wdGlv
bmFsQm9vbChjb25zdCBCb29sZWFuVmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBCb29s
ZWFuVmFsdWU6OkRlZmF1bHQgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+KHZh
bHVlID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KKyAgICBjb25zdCBCb29sZWFuVmFsdWUmIGNh
Y2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIHN0ZDo6b3B0aW9uYWw8
Qm9vbGVhblZhbHVlPiYpOwogCiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1hdGhNTExlbmd0aChj
b25zdCBTdHJpbmcmKTsKLSAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChjb25z
dCBRdWFsaWZpZWROYW1lJiwgT3B0aW9uYWw8TGVuZ3RoPiYpOworICAgIGNvbnN0IExlbmd0aCYg
Y2FjaGVkTWF0aE1MTGVuZ3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBzdGQ6Om9wdGlvbmFsPExl
bmd0aD4mKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRl
KCk7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxlKCkgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzcGVjaWZpZWREaXNwbGF5U3R5bGUoKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgYm9vbCBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFy
aWFudCgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1h
dGhWYXJpYW50KCkgZmluYWw7CiAKLSAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IG1fZGlzcGxh
eVN0eWxlOwotICAgIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBtX21hdGhWYXJpYW50OworICAgIHN0
ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2Rpc3BsYXlTdHlsZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPE1hdGhWYXJpYW50PiBtX21hdGhWYXJpYW50OwogCiBwcml2YXRlOgogICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcAppbmRleCBjOGI5MWYwMzU2Y2Q2Nzk0NTIzNzYy
YTIwYzZiNGMwODNhNjMzYzQxLi4zOTNlZGMxMTI5MzAwOWVhYzVkMDQ0OTg1MWNkM2MyZDc2Yzk4
NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5j
cHAKQEAgLTU4LDkgKzU4LDkgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxT
Y3JpcHRzRWxlbWVudDo6c3VwZXJzY3JpcHRTaGlmdCgpCiB2b2lkIE1hdGhNTFNjcmlwdHNFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHN1YnNjcmlwdHNoaWZ0QXR0cikK
LSAgICAgICAgbV9zdWJzY3JpcHRTaGlmdCA9IE51bGxvcHQ7CisgICAgICAgIG1fc3Vic2NyaXB0
U2hpZnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBzdXBlcnNjcmlwdHNo
aWZ0QXR0cikKLSAgICAgICAgbV9zdXBlcnNjcmlwdFNoaWZ0ID0gTnVsbG9wdDsKKyAgICAgICAg
bV9zdXBlcnNjcmlwdFNoaWZ0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MU2NyaXB0c0VsZW1lbnQuaAppbmRleCA2M2M5ZDg4MGZkYmVkNzk5Y2RlN2E0OWE3YjU1
MDk4YmNmMmUzMTJhLi5iNGE2MDg5ZjBkODI5MDBiMGYzNGE1YzU1ZWRjZjQ1ZDdiNTU4MzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaApAQCAtNDQs
OCArNDQsOCBAQCBjbGFzcyBNYXRoTUxTY3JpcHRzRWxlbWVudCA6IHB1YmxpYyBNYXRoTUxQcmVz
ZW50YXRpb25FbGVtZW50IHsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3N1
YnNjcmlwdFNoaWZ0OwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdXBlcnNjcmlwdFNoaWZ0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3N1YnNjcmlwdFNoaWZ0OworICAgIHN0ZDo6b3B0
aW9uYWw8TGVuZ3RoPiBtX3N1cGVyc2NyaXB0U2hpZnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCmluZGV4IGY4OTI1OTVlNzQ0Nzg0ZmFk
NzNmZDJiZWU4Nzc1NzhmZTNlMDNlZTUuLjk2ZTliOTA3NDdiZTk1ODY2NzQ1ZjYwYTk3YWEwYTQ3
Y2M3MjE1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQu
Y3BwCkBAIC02MywxMSArNjMsMTEgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRo
TUxTcGFjZUVsZW1lbnQ6OmRlcHRoKCkKIHZvaWQgTWF0aE1MU3BhY2VFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aCA9IE51
bGxvcHQ7CisgICAgICAgIG1fd2lkdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodCA9IE51bGxvcHQ7CisgICAgICAgIG1f
aGVpZ2h0ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVwdGhBdHRyKQot
ICAgICAgICBtX2RlcHRoID0gTnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFj
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaApp
bmRleCAwMjc4N2E3MGQzMGJmN2I4MTg4OTRkY2IzY2YzMTMwOWMxZmJjMjhjLi4zZjE2Zjc4NTE3
MjlkYjcyZmVmZWY1NzI5ZDgyMDUyZTNlZDU5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNwYWNlRWxlbWVudC5oCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIE1hdGhNTFNwYWNl
RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50IHsKIAogICAg
IGJvb2wgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fd2lkdGg7Ci0gICAgT3B0aW9uYWw8TGVuZ3Ro
PiBtX2hlaWdodDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fZGVwdGg7CisgICAgc3RkOjpvcHRp
b25hbDxMZW5ndGg+IG1fd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0
OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNwcAppbmRleCA0MzVhZjEzNjAzNjI0
NjkyNmNhZWE4YzU2ZTUyOWVhMDI5M2IzNzMzLi5jZTFjY2E2YThlM2FhNzQyMWJiODljZWJkZjQ1
Zjg0NTZlYzYwZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9r
ZW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVt
ZW50LmNwcApAQCAtNzcsMTUgKzc3LDE1IEBAIGJvb2wgTWF0aE1MVG9rZW5FbGVtZW50OjpjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVy
biBpc1BocmFzaW5nQ29udGVudChjaGlsZCkgJiYgU3R5bGVkRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjaGlsZCk7CiB9CiAKLU9wdGlvbmFsPFVDaGFyMzI+IE1hdGhNTFRva2Vu
RWxlbWVudDo6Y29udmVydFRvU2luZ2xlQ29kZVBvaW50KFN0cmluZ1ZpZXcgc3RyaW5nKQorc3Rk
OjpvcHRpb25hbDxVQ2hhcjMyPiBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNv
ZGVQb2ludChTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBhdXRvIGNvZGVQb2ludHMgPSBzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2Uoc3RyaW5nKS5jb2RlUG9pbnRzKCk7CiAgICAg
YXV0byBpdGVyYXRvciA9IGNvZGVQb2ludHMuYmVnaW4oKTsKICAgICBpZiAoaXRlcmF0b3IgPT0g
Y29kZVBvaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8
VUNoYXIzMj4gY2hhcmFjdGVyID0gKml0ZXJhdG9yOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gY2hhcmFjdGVyID0gKml0ZXJhdG9yOwog
ICAgICsraXRlcmF0b3I7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yID09IGNvZGVQb2ludHMuZW5kKCkg
PyBjaGFyYWN0ZXIgOiBOdWxsb3B0OworICAgIHJldHVybiBpdGVyYXRvciA9PSBjb2RlUG9pbnRz
LmVuZCgpID8gY2hhcmFjdGVyIDogc3RkOjpudWxsb3B0OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmgKaW5kZXggNGQ0MmMwNzAzZDY1OTJiNzZkZDNl
ZjFhN2M2MjQxYjNmYWI3YzBmOC4uYmVkNDBmM2NmZmI3OGYyOTQ1MTQ1MzEzNTIwMzUzYmE5MWI0
ZDc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBNYXRoTUxUb2tlbkVsZW1lbnQgOiBwdWJsaWMgTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNYXRoTUxUb2tlbkVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwog
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFVDaGFyMzI+IGNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludChT
dHJpbmdWaWV3KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBjb252ZXJ0VG9T
aW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyk7CiAKIHByb3RlY3RlZDoKICAgICBNYXRoTUxUb2tl
bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAppbmRleCA1
Y2NjMGM1MmRhYmJkNTRjMzVhNmIwZmQ4OTUwYjUzMzMxMmZmZmRhLi4xNDEzYWFkNjE3ZDQ2NGM1
NTBiMzg0ZjIyNGE5YjljZTUzNTQ4ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCkBAIC01OCw5ICs1OCw5IEBAIGNvbnN0IE1hdGhN
TEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6YWNjZW50VW5k
ZXIoKQogdm9pZCBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlm
IChuYW1lID09IGFjY2VudEF0dHIpCi0gICAgICAgIG1fYWNjZW50ID0gTnVsbG9wdDsKKyAgICAg
ICAgbV9hY2NlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBhY2NlbnR1
bmRlckF0dHIpCi0gICAgICAgIG1fYWNjZW50VW5kZXIgPSBOdWxsb3B0OworICAgICAgICBtX2Fj
Y2VudFVuZGVyID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxV
bmRlck92ZXJFbGVtZW50LmgKaW5kZXggOWVjNmRiNzAwMmM1MDBjNDQ2ZmVkNDZjN2Y5NDEyODA0
YmU5M2YyYi4uMDdmNGQ5NmY4NjA3ZmY5ZjIxOTkzMmRlYjZiMjcyZjZkNDU4OWNkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oCkBAIC00Miw4
ICs0Miw4IEBAIGNsYXNzIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0
aE1MU2NyaXB0c0VsZW1lbnQgewogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
ZmluYWw7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IG1f
YWNjZW50OwotICAgIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnRVbmRlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxC
b29sZWFuVmFsdWU+IG1fYWNjZW50VW5kZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCBhNjg3NDEyN2MzYzBhYjJlY2U0MWZmMDQ4MzlhMmIwYzFlYWI1YWZhLi41
M2FiYTZkMjNiOTZlYWVkYzE3MmVmODQ3MzllZjc0ODg5NGQ3ZDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTM5MCw3ICszOTAsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBD
aHJvbWVDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNp
YmxlSW5SZWN0KGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5k
ZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShTY3JvbGxiYXJTdHlsZSkgeyB9CiAKLSAgICB2aXJ0
dWFsIFdURjo6T3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OyB9
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVy
cmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgeyByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
RGVmYXVsdDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQo
Ym9vbCBoYXNIYW5kbGVycykgPSAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAK
aW5kZXggZDAzYzFiMDJmZTYwMjNiNjIzMTdjMzExZDM2YzNkYTVmYWRjNGZkNS4uYTk2OWQ5NDhl
N2UzOWMwMjY5YzVhMzBmZjljZDAxN2M5MmRkOTU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5j
cHAKQEAgLTQyNiwxMSArNDI2LDExIEBAIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgRE9NVGlt
ZXI6OmludGVydmFsQ2xhbXBlZFRvTWluaW11bSgpIGNvbnN0CiAgICAgcmV0dXJuIGludGVydmFs
OwogfQogCi1PcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBET01UaW1lcjo6YWxp
Z25lZEZpcmVUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZmlyZVRpbWUpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+IERPTVRpbWVyOjphbGlnbmVk
RmlyZVRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBmaXJlVGltZSkgY29uc3QKIHsKICAg
ICBhdXRvIGFsaWdubWVudEludGVydmFsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT50aW1l
ckFsaWdubWVudEludGVydmFsKG1fbmVzdGluZ0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xldmVs
KTsKICAgICBpZiAoYWxpZ25tZW50SW50ZXJ2YWwgPT0gMG1zKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBzdGF0aWMgY29u
c3QgZG91YmxlIHJhbmRvbWl6ZWRQcm9wb3J0aW9uID0gcmFuZG9tTnVtYmVyKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NVGltZXIuaAppbmRleCA5NmM4YjNiYjY1YTdmY2YyNjdlOGUwYWRlNmNmY2UwZmI5YWRh
N2Q0Li4zOWEwNDYxZGFlZWVlMjVlYWJhMzM5OTZlN2EwZGM4ZGQ5MWE2Nzg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01UaW1lci5oCkBAIC03MSw3ICs3MSw3IEBAIGNsYXNzIERPTVRpbWVyIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8RE9NVGltZXI+LCBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CiAgICAg
Ly8gU3VzcGVuZGFibGVUaW1lcgogICAgIHZvaWQgZmlyZWQoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFN0b3AoKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzPiBhbGlnbmVkRmlyZVRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcykgY29uc3Qgb3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBhbGln
bmVkRmlyZVRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcykgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCAzNGRkNTA5NzFlYTg3ZjI0NzM2MjFkYmYwYTY3MWZiMDI0NjRlYjJjLi41NmMyNzkxZTQ1ZTMz
OGI2NGQ4ODMxNTY2MGM1NGY0MzEzODdkMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0xNDkyLDcgKzE0OTIsNyBAQCBkb3VibGUgRE9NV2luZG93OjpkZXZpY2VQaXhlbFJhdGlv
KCkgY29uc3QKIAogdm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKIHsKLSAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZh
bHVlT3IoMCksIG9wdGlvbnMudG9wLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShv
cHRpb25zLmxlZnQudmFsdWVfb3IoMCksIG9wdGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAog
dm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGRvdWJsZSB4LCBkb3VibGUgeSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCmluZGV4IDczYzY2NzI0YWYzODI5ZTEzMDIyYWQyOGEyNGRkZGVmYmI5
NGNlZWMuLjRiOGNjZGQ1OTIzZDQwYzE5MjM0MmFmN2FkNWE5OTcwMzQ0NzM1OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaApAQCAtMzY2LDcgKzM2Niw3IEBAIGNsYXNzIERPTVdpbmRvdyBmaW5h
bAogCiAgICAgYm9vbCBtX3Nob3VsZFByaW50V2hlbkZpbmlzaGVkTG9hZGluZyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3N1c3BlbmRlZEZvckRvY3VtZW50U3VzcGVuc2lvbiB7IGZhbHNlIH07Ci0g
ICAgT3B0aW9uYWw8Ym9vbD4gbV9jYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IG1fY2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGU7CiAKICAgICBIYXNo
U2V0PERPTVdpbmRvd1Byb3BlcnR5Kj4gbV9wcm9wZXJ0aWVzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuY3BwCmluZGV4IDQ3NDIyODgwNzJjZTVhNWExZWI3YTkwNGY1MjE1MzNmNWU1MjQ1
YzcuLmQ1NTU1ZWQyYzBmYjU3Yjk2M2I3YjYwMDIxOTg3MTcxMjZmNjVmZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC0yODAsOCArMjgwLDggQEAgdm9pZCBFdmVudFNvdXJj
ZTo6cGFyc2VFdmVudFN0cmVhbSgpCiAgICAgICAgICAgICBtX2Rpc2NhcmRUcmFpbGluZ05ld2xp
bmUgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsaW5l
TGVuZ3RoOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGg7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxpbmVMZW5ndGg7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3Np
dGlvbjsgIWxpbmVMZW5ndGggJiYgaSA8IHNpemU7ICsraSkgewogICAgICAgICAgICAgc3dpdGNo
IChtX3JlY2VpdmVCdWZmZXJbaV0pIHsKICAgICAgICAgICAgIGNhc2UgJzonOgpAQCAtMzE3LDcg
KzMxNyw3IEBAIHZvaWQgRXZlbnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW0oKQogICAgICAgICBt
X3JlY2VpdmVCdWZmZXIucmVtb3ZlKDAsIHBvc2l0aW9uKTsKIH0KIAotdm9pZCBFdmVudFNvdXJj
ZTo6cGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaWVsZExlbmd0aCwgdW5zaWduZWQgbGluZUxlbmd0aCkKK3ZvaWQgRXZlbnRTb3VyY2U6
OnBhcnNlRXZlbnRTdHJlYW1MaW5lKHVuc2lnbmVkIHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBmaWVsZExlbmd0aCwgdW5zaWduZWQgbGluZUxlbmd0aCkKIHsKICAgICBpZiAoIWxp
bmVMZW5ndGgpIHsKICAgICAgICAgaWYgKCFtX2RhdGEuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5oCmluZGV4IDAzYWVjMmJiMzFiOGFhZTUyOTRiNmY3OTk4NDY4ZGRiOTE2YTk4
ZGQuLjJiZTNmOWYxYjc1ZDM5ZDUzYjJmZTM5MTI5M2Y1OGNjMGYxODI3ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgRXZlbnRTb3VyY2UgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVudFNvdXJjZT4sIHB1YmxpYyBFdmVudFRhcmdldFdp
dGgKICAgICB2b2lkIHNjaGVkdWxlUmVjb25uZWN0KCk7CiAgICAgdm9pZCBhYm9ydENvbm5lY3Rp
b25BdHRlbXB0KCk7CiAgICAgdm9pZCBwYXJzZUV2ZW50U3RyZWFtKCk7Ci0gICAgdm9pZCBwYXJz
ZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZp
ZWxkTGVuZ3RoLCB1bnNpZ25lZCBsaW5lTGVuZ3RoKTsKKyAgICB2b2lkIHBhcnNlRXZlbnRTdHJl
YW1MaW5lKHVuc2lnbmVkIHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExl
bmd0aCwgdW5zaWduZWQgbGluZUxlbmd0aCk7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVu
dCgpOwogCiAgICAgYm9vbCByZXNwb25zZUlzVmFsaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDAyNzkxN2RmNTJiYmIzMzZh
N2MzMzk3NmEyMWNlOWI0YmY2ODlmNDQuLmM4ZTY4MjMxMmNlYTUxMzFiYzkwODllZTEzMGI5MWYw
YjY4ZDA3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ0OSw3ICs0NDksNyBA
QCB2b2lkIEZyYW1lVmlldzo6ZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpCiB2b2lkIEZyYW1lVmll
dzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKQogewogICAgIFNjcm9sbGJhck92
ZXJsYXlTdHlsZSBvbGRPdmVybGF5U3R5bGUgPSBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKLSAg
ICBXVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gY2xpZW50T3ZlcmxheVN0eWxl
ID0gZnJhbWUoKS5wYWdlKCkgPyBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucHJl
ZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgOiBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZh
dWx0OworICAgIHN0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBjbGllbnRPdmVy
bGF5U3R5bGUgPSBmcmFtZSgpLnBhZ2UoKSA/IGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5jbGll
bnQoKS5wcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSA6IFNjcm9sbGJhck92ZXJsYXlT
dHlsZURlZmF1bHQ7CiAgICAgaWYgKGNsaWVudE92ZXJsYXlTdHlsZSkgewogICAgICAgICBpZiAo
Y2xpZW50T3ZlcmxheVN0eWxlLnZhbHVlKCkgIT0gb2xkT3ZlcmxheVN0eWxlKQogICAgICAgICAg
ICAgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKGNsaWVudE92ZXJsYXlTdHlsZS52YWx1ZSgpKTsK
QEAgLTUxMTgsNyArNTExOCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzKFdpZGdl
dE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiAgICAgICAgIHdpZGdldC0+bm90aWZ5V2lkZ2V0
KG5vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJlY3Qo
T3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCit2b2lkIEZyYW1lVmlldzo6c2V0
Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3Qp
CiB7CiAgICAgaWYgKG1fdmlld0V4cG9zZWRSZWN0ID09IHZpZXdFeHBvc2VkUmVjdCkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggOTE0MGE4NWFiNDdiMmUxMDZk
NjcxM2JkZWM1MWQwMjg0NDBlMGE5My4uMDQxODc5ZWYzNzIyNmU0ZDY1OTUwNGI5MzIyMGE0YTMz
YzlkNmIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01NjAsOCArNTYwLDggQEAgY2xh
c3MgRnJhbWVWaWV3IGZpbmFsIDogcHVibGljIFNjcm9sbFZpZXcgewogICAgIC8vIG9mIHRoZSB2
aWV3IGlzIGFjdHVhbGx5IGV4cG9zZWQgb24gc2NyZWVuICh0YWtpbmcgaW50byBhY2NvdW50CiAg
ICAgLy8gY2xpcHBpbmcgYnkgb3RoZXIgVUkgZWxlbWVudHMpLCB3aGVyZWFzIHZpc2libGVDb250
ZW50UmVjdCBpcwogICAgIC8vIGludGVybmFsIHRvIFdlYkNvcmUgYW5kIGRvZXNuJ3QgcmVzcGVj
dCB0aG9zZSB0aGluZ3MuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3RXhwb3NlZFJl
Y3QoT3B0aW9uYWw8RmxvYXRSZWN0Pik7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
Pik7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQogICAgIHZvaWQgdXBkYXRlU25hcE9mZnNldHMoKSBvdmVycmlkZTsKQEAgLTc3Nyw3ICs3
NzcsNyBAQCBjbGFzcyBGcmFtZVZpZXcgZmluYWwgOiBwdWJsaWMgU2Nyb2xsVmlldyB7CiAKICAg
ICBib29sIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW47CiAKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBt
X3ZpZXdFeHBvc2VkUmVjdDsKICAgICAKICAgICBMYXlvdXRQb2ludCBtX2xheW91dFZpZXdwb3J0
T3JpZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9sbFRvT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxUb09wdGlvbnMuaAppbmRleCBjOTg5OWQ3
OTVhYTVmNDY1NDNkMzM2NzMwNzU0MjczZGY5OWUyMWRmLi44NGE5ZDlkZGIyODA1ZDdmMmIzOTQz
NzY0YTMxOTBhOWNjZjVkMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9s
bFRvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsVG9PcHRpb25zLmgK
QEAgLTMzLDggKzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNjcm9sbFRv
T3B0aW9ucyB7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBsZWZ0OwotICAgIE9wdGlvbmFsPGRvdWJs
ZT4gdG9wOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBsZWZ0OworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiB0b3A7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCmluZGV4IGUzNWEyMzdlNGQ4MzNjNTJjNTAwZWY2NWQ4ZjUwY2YyNTA0ZmQyNDMuLjIzNmEy
ZDVmYWY3Yjg2NjEwMDc1NTlkNzdjZmJhOTkwNDA2ZGY3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgU2VjdXJpdHlPcmlnaW46OlNl
Y3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogICAgIG1fZG9tYWluID0gbV9ob3N0OwogCiAg
ICAgaWYgKG1fcG9ydCAmJiBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCks
IG1fcHJvdG9jb2wpKQotICAgICAgICBtX3BvcnQgPSBOdWxsb3B0OworICAgICAgICBtX3BvcnQg
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIFNlY3VyaXR5
T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAgbV9jYW5Mb2FkTG9jYWxSZXNv
dXJjZXMgPSBpc0xvY2FsKCk7CkBAIC01NDksNyArNTQ5LDcgQEAgUmVmPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGQKICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKIH0KIAotUmVmPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCitSZWY8U2VjdXJpdHlPcmlnaW4+
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3Ry
aW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogewogICAgIFN0cmluZyBk
ZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9y
aWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7
CkBAIC01NzIsNyArNTcyLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50
aWZpZXIoKSBjb25zdAogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rl
cik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZW5jb2RlRm9yRmlsZU5hbWUobV9ob3N0KSk7
CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZE51bWJlcihtX3BvcnQudmFsdWVPcigwKSk7CisgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmROdW1iZXIobV9wb3J0LnZhbHVlX29yKDApKTsKIAogICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgK
aW5kZXggNzg3NWExZWJkMGY0NjcwOTM2OWJiMDE1YWMxYmMzZDRmNjExZjg5ZS4uN2FiZjNhZDVm
MDdkZjZiNmIwZjZiYzZhMWM5M2M4NzljNmEwZGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZWN1cml0eU9yaWdpbj4gewogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQpOwogCiAgICAgLy8gU29tZSBVUkwgc2NoZW1lcyB1c2UgbmVzdGVk
IFVSTHMgZm9yIHRoZWlyIHNlY3VyaXR5IGNvbnRleHQuIEZvciBleGFtcGxlLAogICAgIC8vIGZp
bGVzeXN0ZW0gVVJMcyBsb29rIGxpa2UgdGhlIGZvbGxvd2luZzoKQEAgLTg3LDcgKzg3LDcgQEAg
Y2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJp
dHlPcmlnaW4+IHsKICAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4g
bV9wcm90b2NvbDsgfQogICAgIGNvbnN0IFN0cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aG9zdDsgfQogICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21h
aW47IH0KLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9y
dDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7IHJldHVybiBt
X3BvcnQ7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIGdpdmVuIFVSTCBpcyBzZWN1cmUs
IGJhc2VkIGVpdGhlciBkaXJlY3RseSBvbiBpdHMKICAgICAvLyBvd24gcHJvdG9jb2wsIG9yLCB3
aGVuIHJlbGV2YW50LCBvbiB0aGUgcHJvdG9jb2wgb2YgaXRzICJpbm5lciBVUkwiCkBAIC0yMjUs
NyArMjI1LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKICAgICBTdHJpbmcgbV9ob3N0OwogICAgIFN0cmluZyBt
X2RvbWFpbjsKICAgICBTdHJpbmcgbV9maWxlUGF0aDsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4g
bV9wb3J0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IG1fcG9ydDsKICAgICBib29sIG1f
aXNVbmlxdWU7CiAgICAgYm9vbCBtX3VuaXZlcnNhbEFjY2VzczsKICAgICBib29sIG1fZG9tYWlu
V2FzU2V0SW5ET007CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAK
aW5kZXggYjVkODk5YmVhMWViODE1Y2IwMzBlYTBjMjA0OTE3MmVhNzkzNDZlMi4uMTk4N2JjYjA5
NmVjNzhkYzZiZGNmYjk1YTMwZTdlOGMzZjFjNGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtNDksNyArNDksNyBAQCBTZWN1cml0eU9yaWdpbkRh
dGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mCiAjaWYgIUxPR19ESVNBQkxFRAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVi
dWdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8v
IiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlT3IoMCkpKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIo
cG9ydC52YWx1ZV9vcigwKSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oCmluZGV4IGI4YmVhYjNhNWM2NGNiMjJhMDEwZWI5ZWE5MzkwNzNiODYw
ZWVjNjMuLmExZmRmZjk3OTFjNmJmYjk2OTI0NTFmMjliZTMxYmRjODI0NGJmOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKIAogICAgIFN0cmluZyBwcm90b2NvbDsKICAgICBTdHJp
bmcgaG9zdDsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2VjdXJpdHlPcmlnaW5EYXRh
IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkhhc2guaAppbmRleCA1MGViMjk1NmYyM2I3Y2YxMmVjYjkwY2Y3NmZkOGI5ODFlYTNiNTVhLi5i
N2E1YWVmZWRhMWI2ZGVmZDcyYTliZTdjNmJhMjA2MmUxYmQyZDk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0IFNlY3Vy
aXR5T3JpZ2luSGFzaCB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsKICAgICAg
ICAgICAgIG9yaWdpbi0+cHJvdG9jb2woKS5pbXBsKCkgPyBvcmlnaW4tPnByb3RvY29sKCkuaW1w
bCgpLT5oYXNoKCkgOiAwLAogICAgICAgICAgICAgb3JpZ2luLT5ob3N0KCkuaW1wbCgpID8gb3Jp
Z2luLT5ob3N0KCkuaW1wbCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgb3JpZ2luLT5wb3J0
KCkudmFsdWVPcigwKQorICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVfb3IoMCkKICAg
ICAgICAgfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2Yo
aGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVh
dHVyZXMuY3BwCmluZGV4IDdjNzZhZTEyODIwOGY4NDNjZTcyN2Q0YzZlMWI0YTZlMzZiOTVmNTMu
LmI4YWRjYjQ0OTQyZmE1ZWJiZTVhYjVkNzE1NDE5MjgyNzAwZjEyZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCkBAIC0zNiw4ICszNiw4IEBAIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBEaWFsb2dGZWF0dXJl
c01hcDsKIHN0YXRpYyB2b2lkIHNldFdpbmRvd0ZlYXR1cmUoV2luZG93RmVhdHVyZXMmLCBTdHJp
bmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSk7CiAKIHN0YXRpYyBEaWFsb2dGZWF0dXJlc01h
cCBwYXJzZURpYWxvZ0ZlYXR1cmVzTWFwKGNvbnN0IFN0cmluZyYpOwotc3RhdGljIE9wdGlvbmFs
PGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hhciog
a2V5KTsKLXN0YXRpYyBPcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0Zl
YXR1cmVzTWFwJiwgY29uc3QgY2hhcioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCk7CitzdGF0
aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01h
cCYsIGNvbnN0IGNoYXIqIGtleSk7CitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxvYXRG
ZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hhcioga2V5LCBmbG9hdCBt
aW4sIGZsb2F0IG1heCk7CiAKIHN0YXRpYyBib29sIGlzU2VwYXJhdG9yKFVDaGFyIGNoYXJhY3Rl
cikKIHsKQEAgLTE1OCw4ICsxNTgsOCBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1
cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZl
YXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSA9IGZhbHNlOwogICAgIGZlYXR1cmVzLmRpYWxvZyA9
IHRydWU7CiAKLSAgICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRp
YWxvZ3dpZHRoIiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlT3IoNjIw
KTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJ
RQotICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hl
aWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVPcig0NTApOyAv
LyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisg
ICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIs
IDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAvLyBkZWZh
dWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAgZmxv
YXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0IiwgMTAw
LCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZV9vcig0NTApOyAvLyBkZWZhdWx0
IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCiAKICAgICBmZWF0
dXJlcy53aWR0aCA9IHdpZHRoOwogICAgIGZlYXR1cmVzLmhlaWdodCA9IGhlaWdodDsKQEAgLTE2
NywyNSArMTY3LDI1IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3Qg
U3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvCiAgICAgZmVhdHVyZXMueCA9
IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2xlZnQiLCBzY3JlZW5BdmFpbGFibGVS
ZWN0LngoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhYKCkgLSB3aWR0aCk7CiAgICAgZmVhdHVy
ZXMueSA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ3RvcCIsIHNjcmVlbkF2YWls
YWJsZVJlY3QueSgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAKLSAg
ICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZU9yKHRydWUpKSB7
CisgICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVfb3IodHJ1
ZSkpIHsKICAgICAgICAgaWYgKCFmZWF0dXJlcy54KQogICAgICAgICAgICAgZmVhdHVyZXMueCA9
IHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpICsgKHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSAt
IHdpZHRoKSAvIDI7CiAgICAgICAgIGlmICghZmVhdHVyZXMueSkKICAgICAgICAgICAgIGZlYXR1
cmVzLnkgPSBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0Lmhl
aWdodCgpIC0gaGVpZ2h0KSAvIDI7CiAgICAgfQogCi0gICAgZmVhdHVyZXMucmVzaXphYmxlID0g
Ym9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZU9yKGZhbHNlKTsKLSAg
ICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAi
c2Nyb2xsIikudmFsdWVPcih0cnVlKTsKLSAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0g
Ym9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1ZU9yKGZhbHNlKTsKKyAgICBm
ZWF0dXJlcy5yZXNpemFibGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIp
LnZhbHVlX29yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xG
ZWF0dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVfb3IodHJ1ZSk7CisgICAgZmVhdHVy
ZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic3RhdHVzIiku
dmFsdWVfb3IoZmFsc2UpOwogCiAgICAgcmV0dXJuIGZlYXR1cmVzOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVz
LCBjb25zdCBjaGFyKiBrZXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBib29sRmVhdHVy
ZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSkKIHsK
ICAgICBhdXRvIGl0ID0gZmVhdHVyZXMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJl
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvJiB2YWx1ZSA9IGl0LT52YWx1ZTsKICAgICByZXR1cm4gdmFsdWUu
aXNOdWxsKCkKQEAgLTE5NCwxOCArMTk0LDE4IEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBib29s
RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqCiAg
ICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAib24iKTsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVy
ZXNNYXAmIGZlYXR1cmVzLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0
dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgp
CiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVh
dHVyZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gRklYTUU6IFRoZSB0b0RvdWJsZSBmdW5jdGlvbiBkb2VzIG5v
dCBvZmZlciBhIHdheSB0byB0ZWxsICIwcSIgZnJvbSBzdHJpbmcgd2l0aCBubyBkaWdpdHMgaW4g
aXQ6IEJvdGgKICAgICAvLyByZXR1cm4gdGhlIG51bWJlciAwIGFuZCBmYWxzZSBmb3Igb2suIEJ1
dCAiMHEiIHNob3VsZCB5aWVsZCB0aGUgbWluaW11bSByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdC4K
ICAgICBib29sIG9rOwogICAgIGRvdWJsZSBwYXJzZWROdW1iZXIgPSBpdC0+dmFsdWUudG9Eb3Vi
bGUoJm9rKTsKICAgICBpZiAoKCFwYXJzZWROdW1iZXIgJiYgIW9rKSB8fCBzdGQ6OmlzbmFuKHBh
cnNlZE51bWJlcikpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmIChwYXJzZWROdW1iZXIgPCBtaW4gfHwgbWF4IDw9IG1pbikKICAg
ICAgICAgcmV0dXJuIG1pbjsKICAgICBpZiAocGFyc2VkTnVtYmVyID4gbWF4KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9XaW5kb3dGZWF0dXJlcy5oCmluZGV4IDBjYjZkOWZmOTBmZmVhMWU1YWI0ODlhMzNjNzUw
NjkwZDYwYTQ4Y2MuLjkxYTczNGRkOTdmZTNkZTBiZjA4MWM3ZjY2M2Q0MjRlZDg3M2U1ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKQEAgLTM5LDEwICszOSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFJlY3Q7CiAKIHN0cnVjdCBXaW5kb3dGZWF0dXJl
cyB7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHg7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IHk7Ci0gICAg
T3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwotICAgIE9wdGlvbmFsPGZsb2F0PiBoZWlnaHQ7CisgICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4geDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB5OworICAg
IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGhl
aWdodDsKIAogICAgIGJvb2wgbWVudUJhclZpc2libGUgeyB0cnVlIH07CiAgICAgYm9vbCBzdGF0
dXNCYXJWaXNpYmxlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggZWE2ZmY5MmQyNDFhNTBm
NzU3YzU3ODk2OGM1MjJhNjkxMDMzNmY3Yi4uYzgzMjZkZmY0NTQyNTlkNWJiYzNkM2Y4MzE5NzA3
MGRmYWJjOTQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0
IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBw
b3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRI
YXNXaWxkY2FyZCkKK0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5LCBjb25zdCBT
dHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBv
cnRIYXNXaWxkY2FyZCkKICAgICA6IG1fcG9saWN5KHBvbGljeSkKICAgICAsIG1fc2NoZW1lKHNj
aGVtZSkKICAgICAsIG1faG9zdChob3N0KQpAQCAtODYsNyArODYsNyBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAg
ICAgaWYgKG1fcG9ydEhhc1dpbGRjYXJkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIE9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKIAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCmluZGV4IGFiYWFlOTYzNDg2M2YzZTBlODgwZjMy
NDVlMDE4MGRjZTQyMWE1ZTYuLjI4YTFhNjgzMGZlOTk5YmExMDJiMmQ1MTViYzQxMGE2MDM0MWI1
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFVSTDsKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeSYsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dp
bGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYsIGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0
IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJk
KTsKIAogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBVUkwmLCBib29sIGRpZFJlY2VpdmVSZWRpcmVj
dFJlc3BvbnNlID0gZmFsc2UpIGNvbnN0OwogCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZSB7CiAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
JiBtX3BvbGljeTsKICAgICBTdHJpbmcgbV9zY2hlbWU7CiAgICAgU3RyaW5nIG1faG9zdDsKLSAg
ICBPcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+
IG1fcG9ydDsKICAgICBTdHJpbmcgbV9wYXRoOwogCiAgICAgYm9vbCBtX2hvc3RIYXNXaWxkY2Fy
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggMDk2M2Y0MjkzMTkwYzQ0YWRhOGE5M2UwNTQw
NDcwYTAyOGRjY2NjZC4uNWQ1MWY2OGUwODA5Y2I4NDVmZjM3NTE1OWE2MDE0YTI1YjQ5MTcyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3Qg
VUNoYXIqIGVuZAogICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzU291cmNlQ2hhcmFjdGVyPihw
b3NpdGlvbiwgZW5kKTsKIAogICAgICAgICBTdHJpbmcgc2NoZW1lLCBob3N0LCBwYXRoOwotICAg
ICAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gcG9ydDsKICAgICAgICAgYm9vbCBob3N0SGFzV2lsZGNhcmQgPSBmYWxzZTsKICAgICAg
ICAgYm9vbCBwb3J0SGFzV2lsZGNhcmQgPSBmYWxzZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2UoY29uc3QgVUNoYXIqIGJl
Z2luLCBjb25zdCBVQ2hhciogZW5kCiAvLyAgICAgICAgICAgICAgICAgICAvICggWyBzY2hlbWUg
IjovLyIgXSBob3N0IFsgcG9ydCBdIFsgcGF0aCBdICkKIC8vICAgICAgICAgICAgICAgICAgIC8g
IidzZWxmJyIKIC8vCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNl
U291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5nJiBzY2hl
bWUsIFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+JiBwb3J0LCBTdHJpbmcmIHBhdGgs
IGJvb2wmIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKQorYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZVNvdXJjZShjb25zdCBVQ2hhciogYmVn
aW4sIGNvbnN0IFVDaGFyKiBlbmQsIFN0cmluZyYgc2NoZW1lLCBTdHJpbmcmIGhvc3QsIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+JiBwb3J0LCBTdHJpbmcmIHBhdGgsIGJvb2wmIGhvc3RIYXNXaWxk
Y2FyZCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKQogewogICAgIGlmIChiZWdpbiA9PSBlbmQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29u
c3QgVUNoYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJlZ2luUG9ydCkKLSAg
ICAgICAgcG9ydCA9IE51bGxvcHQ7CisgICAgICAgIHBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGlmICghcGFyc2VQb3J0KGJlZ2luUG9ydCwgYmVnaW5QYXRoLCBwb3J0
LCBwb3J0SGFzV2lsZGNhcmQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk0LDcg
KzM5NCw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQYXRo
KGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqCiAKIC8vIHBvcnQgICAgICAgICAgICAg
ID0gIjoiICggMSpESUdJVCAvICIqIiApCiAvLwotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0OjpwYXJzZVBvcnQoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5k
LCBPcHRpb25hbDx1aW50MTZfdD4mIHBvcnQsIGJvb2wmIHBvcnRIYXNXaWxkY2FyZCkKK2Jvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQb3J0KGNvbnN0IFVDaGFyKiBi
ZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4mIHBvcnQsIGJv
b2wmIHBvcnRIYXNXaWxkY2FyZCkKIHsKICAgICBBU1NFUlQoYmVnaW4gPD0gZW5kKTsKICAgICBB
U1NFUlQoIXBvcnQpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdDo6cGFyc2VQb3J0KGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIq
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAoZW5kIC0gYmVnaW4gPT0gMSAm
JiAqYmVnaW4gPT0gJyonKSB7Ci0gICAgICAgIHBvcnQgPSBOdWxsb3B0OworICAgICAgICBwb3J0
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBwb3J0SGFzV2lsZGNhcmQgPSB0cnVlOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggYmZlYjg1NDVkZDk5
MmIzMWJhNWE4OTlmZmFhNjAyNTk4ODFhN2UxMS4uMDRkYzI5YzMzZjRjYWMxMGE5MTg3OTAyYTIy
NjVhOTdhOTM4NThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtNTgsMTAgKzU4LDEwIEBAIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QgewogcHJpdmF0ZToKICAgICB2b2lk
IHBhcnNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCk7CiAKLSAgICBib29s
IHBhcnNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5n
JiBzY2hlbWUsIFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+JiBwb3J0LCBTdHJpbmcm
IHBhdGgsIGJvb2wmIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKTsKKyAg
ICBib29sIHBhcnNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwg
U3RyaW5nJiBzY2hlbWUsIFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4mIHBv
cnQsIFN0cmluZyYgcGF0aCwgYm9vbCYgaG9zdEhhc1dpbGRjYXJkLCBib29sJiBwb3J0SGFzV2ls
ZGNhcmQpOwogICAgIGJvb2wgcGFyc2VTY2hlbWUoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBV
Q2hhciogZW5kLCBTdHJpbmcmIHNjaGVtZSk7CiAgICAgYm9vbCBwYXJzZUhvc3QoY29uc3QgVUNo
YXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcmIGhvc3QsIGJvb2wmIGhvc3RIYXNX
aWxkY2FyZCk7Ci0gICAgYm9vbCBwYXJzZVBvcnQoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBV
Q2hhciogZW5kLCBPcHRpb25hbDx1aW50MTZfdD4mIHBvcnQsIGJvb2wmIHBvcnRIYXNXaWxkY2Fy
ZCk7CisgICAgYm9vbCBwYXJzZVBvcnQoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciog
ZW5kLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJk
KTsKICAgICBib29sIHBhcnNlUGF0aChjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBl
bmQsIFN0cmluZyYgcGF0aCk7CiAKICAgICBib29sIHBhcnNlTm9uY2VTb3VyY2UoY29uc3QgVUNo
YXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwCmluZGV4IGQxMjFkMjNkNzFjN2Y2OGMwNmZjM2YyNTkwNjc3ZmE5ZGNhZDI2MWUuLmFh
NTY2YWYzMzg0ZmFlMGMxMzAzMmNkM2NiMWMwNTNlMmQzN2MyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMTQzLDggKzE0Myw4IEBAIHN0cnVjdCBTY29wZWRGcmFt
ZVNlbGVjdGlvblN0YXRlIHsKICAgICBjb25zdCBGcmFtZSYgZnJhbWU7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdGFydFJlbmRlcmVyOwogICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXI7Ci0gICAg
T3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBl
bmRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OwogfTsKIAogRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZv
cmNlQmxhY2tUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaAppbmRleCA2NDYwOGRlNmYyNTA3YzBkOThjZDIxMWI2Yjg3N2UzNzJlMGE2MDgw
Li5hYWFmY2RjMTc2Mjk0YzYwYzVmZDE4ZGY1Mjk0YWZhZTkyN2Y2YzA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtMTU0LDcgKzE1
NCw3IEBAIGNsYXNzIE1lbW9yeVByZXNzdXJlSGFuZGxlciB7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCByZWFkQW5kTm90aWZ5KCkgY29uc3Q7CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiBt
X2ZkOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9mZDsKICAgICAgICAgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBtX25vdGlmeUhhbmRsZXI7CiAjaWYgVVNFKEdMSUIpCiAgICAgICAgIEdS
ZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CkBAIC0xNzgsOCArMTc4LDggQEAgY2xhc3MgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyIHsKICAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBtX29ic2VydmVyOwog
ICAgIExvY2sgbV9vYnNlcnZlck11dGV4OwogI2VsaWYgT1MoTElOVVgpCi0gICAgT3B0aW9uYWw8
aW50PiBtX2V2ZW50RkQ7Ci0gICAgT3B0aW9uYWw8aW50PiBtX3ByZXNzdXJlTGV2ZWxGRDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gbV9ldmVudEZEOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBt
X3ByZXNzdXJlTGV2ZWxGRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRGRFBvbGxlcj4gbV9l
dmVudEZEUG9sbGVyOwogICAgIFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4g
bV9ob2xkT2ZmVGltZXI7CiAgICAgdm9pZCBob2xkT2ZmVGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCA4MzEwNGUzNWMxMzM5OTMxNDNkM2MwOGZl
ZGZkZjAyYzdjYjY4MTY3Li43NzYzMzk0ZjdlMTUxNWY0N2IwYjc2NDg5OGY1YzkyNTc4MThlYzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNDU0LDggKzQ1NCw4
IEBAIHZvaWQgU2Nyb2xsVmlldzo6aGFuZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRl
bnRTaXplQ2hhbmdlKCkKICAgICBlbHNlIGlmIChtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cykKICAg
ICAgICAgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChtX2RlZmVycmVk
U2Nyb2xsT2Zmc2V0cy52YWx1ZSgpLmZpcnN0LCBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cy52YWx1
ZSgpLnNlY29uZCk7CiAgICAgCi0gICAgbV9kZWZlcnJlZFNjcm9sbERlbHRhID0gTnVsbG9wdDsK
LSAgICBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cyA9IE51bGxvcHQ7CisgICAgbV9kZWZlcnJlZFNj
cm9sbERlbHRhID0gc3RkOjpudWxsb3B0OworICAgIG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzID0g
c3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbFRvKGNvbnN0IFNjcm9s
bFBvc2l0aW9uJiBuZXdQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApp
bmRleCBlMjY1MDRmZDFkMzdmZTE3ZTY4OTY4NjkyZTlhMjU1YTZjZTY0ZTVhLi5iMmUxYzRlZjhk
NjExNjVmMjRmNjIxZmQ1NDVjNGY0NjgxZjEzNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCkBAIC00NjIsOCArNDYyLDggQEAgY2xhc3MgU2Nyb2xsVmlldyA6IHB1YmxpYyBX
aWRnZXQsIHB1YmxpYyBTY3JvbGxhYmxlQXJlYSB7CiAgICAgSW50U2l6ZSBtX2ZpeGVkTGF5b3V0
U2l6ZTsKICAgICBJbnRTaXplIG1fY29udGVudHNTaXplOwogCi0gICAgT3B0aW9uYWw8SW50U2l6
ZT4gbV9kZWZlcnJlZFNjcm9sbERlbHRhOyAvLyBOZWVkZWQgZm9yIFdlYktpdCBzY3JvbGxpbmcK
LSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8U2Nyb2xsT2Zmc2V0LCBTY3JvbGxPZmZzZXQ+PiBtX2Rl
ZmVycmVkU2Nyb2xsT2Zmc2V0czsgLy8gTmVlZGVkIGZvciBwbGF0Zm9ybSB3aWRnZXQgc2Nyb2xs
aW5nCisgICAgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBtX2RlZmVycmVkU2Nyb2xsRGVsdGE7IC8v
IE5lZWRlZCBmb3IgV2ViS2l0IHNjcm9sbGluZworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWly
PFNjcm9sbE9mZnNldCwgU2Nyb2xsT2Zmc2V0Pj4gbV9kZWZlcnJlZFNjcm9sbE9mZnNldHM7IC8v
IE5lZWRlZCBmb3IgcGxhdGZvcm0gd2lkZ2V0IHNjcm9sbGluZwogCiAgICAgYm9vbCBtX3Njcm9s
bGJhcnNTdXBwcmVzc2VkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRleCAzNTg2M2JjODIw
MTRjMzk3N2MzYzY5NGZhNDI3NmMwNTQxMWVmMWIxLi41OTExOTc4YWVlYzE4ZjA4M2ZkYmY4NWYx
YWYzZWQyNDE3OTAxMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAgLTg0LDcgKzg0LDcg
QEAgY2xhc3MgVGhlbWUgewogICAgIC8vIE1ldGhvZHMgdXNlZCB0byBhZGp1c3QgdGhlIFJlbmRl
clN0eWxlcyBvZiBjb250cm9scy4KICAgICAKICAgICAvLyBUaGUgZm9udCBkZXNjcmlwdGlvbiBy
ZXN1bHQgc2hvdWxkIGhhdmUgYSB6b29tZWQgZm9udCBzaXplLgotICAgIHZpcnR1YWwgT3B0aW9u
YWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIE51bGxv
cHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4g
Y29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6b29t
RmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIAogICAgIC8vIFRo
ZSBzaXplIGhlcmUgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzIGFscmVhZHkuIElmIGEgbmV3IHNp
emUgaXMgcmV0dXJuZWQsIGl0IGFsc28gbmVlZHMgdG8gYmUgaW4gem9vbWVkIGNvb3JkaW5hdGVz
LgogICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3Qg
Rm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCAvKnpvb21G
YWN0b3IqLykgY29uc3QgeyByZXR1cm4gem9vbWVkU2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmgKaW5kZXggYTc5NjBiMzE2M2UzNDM4OGQ5OTNiZGZjZmMwYzk1NDg2ODY2YzEwMi4uY2Y1OWE4
ZTViY2I0ZTVjYzBmNzAxMjJjMmI5ZjcwYjUzYjBjZmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5oCkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFRpbWVyQmFzZSB7CiBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8c3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcz4gYWxpZ25lZEZpcmVUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMpIGNvbnN0IHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4gYWxpZ25lZEZpcmVUaW1lKHN0ZDo6Y2hyb25vOjpt
aWxsaXNlY29uZHMpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAgICAgdm9pZCBjaGVja0hlYXBJbmRleCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5kZXggYjMxOTA0OWJiMmQ4OGJhNDYxZWU1Y2Y5NWRi
NmUxYTI1NDBhNjMwYy4uZTQyYjcyYjJlMmUwNzRkNDQ4NjU2YTczYTgwYmE0N2Y2ZWJhZWI1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC03MTIsMTAgKzcxMiwxMCBAQCBTdHJpbmcgVVJM
Ojpob3N0KCkgY29uc3QKICAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBtX2hv
c3RFbmQgLSBzdGFydCk7CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25z
dAorc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcG9ydEVuZCB8fCBtX2hvc3RFbmQgPj0gbV9wb3J0RW5kIC0gMSkKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIG9rID0g
ZmFsc2U7CiAgICAgdW5zaWduZWQgbnVtYmVyOwpAQCAtNzI0LDcgKzcyNCw3IEBAIE9wdGlvbmFs
PHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zdAogICAgIGVsc2UKICAgICAgICAgbnVtYmVyID0g
Y2hhcmFjdGVyc1RvVUludFN0cmljdChtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKSArIG1faG9zdEVu
ZCArIDEsIG1fcG9ydEVuZCAtIG1faG9zdEVuZCAtIDEsICZvayk7CiAgICAgaWYgKCFvayB8fCBu
dW1iZXIgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBu
dW1iZXI7CiB9CiAKQEAgLTIyMzQsNyArMjIzNCw3IEBAIGJvb2wgVVJMOjppc0JsYW5rVVJMKCkg
Y29uc3QKIAogYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBPcHRpb25h
bDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gcG9ydCA9IHVybC5wb3J0KCk7CiAKICAgICAvLyBTaW5jZSBtb3N0IFVSTHMgZG9uJ3QgaGF2
ZSBhIHBvcnQsIHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0IiBjYXNlLgogICAgIGlmICgh
cG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKaW5kZXggNzEwZWE1MTNiOGUyOTViMTFiN2NhOTYzNjhk
MmU2OGNkMmMyZDQxOC4uZmM2MmQyNTBmYmVlZTQ4NzExNjdiYWU5ZTI5ZTZmNDY3NDExN2ZmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBVUkwgewogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBob3N0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHVz
ZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGFzcygpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXRoKCkgY29uc3Q7CkBAIC0zMTEsNyArMzExLDcgQEAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBj
aGFyKiBwcm90b2NvbCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNKYXZhU2NyaXB0
KGNvbnN0IFN0cmluZyYgdXJsKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xJc0luSFRU
UEZhbWlseShjb25zdCBTdHJpbmcmIHVybCk7CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0
UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOworc3RkOjpvcHRpb25hbDx1aW50
MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVpbnQxNl90IHBvcnQsIFN0
cmluZ1ZpZXcgcHJvdG9jb2wpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBwb3J0QWxsb3dlZChjb25z
dCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9y
IFdlYiByZXNvdXJjZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCmluZGV4
IDRiZGQ5Nzg0ZjAxMjhlNzFhOTI3NWY4ZWUwMTA5ZWNlZGMyOTNiOTIuLmI1MTdhN2UxODMyNjUz
ODJmYzI3ZWM0YzhkYTI5MGJmZWJkM2E2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFy
c2VyLmNwcApAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgVVJMUGFyc2VyOjplbmNvZGVRdWVyeShj
b25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jCiAgICAg
fQogfQogCi1PcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdW
aWV3IHNjaGVtZSkKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woU3RyaW5nVmlldyBzY2hlbWUpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGZ0cFBv
cnQgPSAyMTsKICAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZ29waGVyUG9ydCA9IDcwOwpAQCAt
NjM1LDE5ICs2MzUsMTkgQEAgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgCiAgICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CiAgICAgY2Fz
ZSAndyc6CiAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAgIGNhc2UgMjoKICAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQogICAgICAgICAgICAgICAgIHJldHVybiB3c1Bv
cnQ7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0g
J3MnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKICAgICAgICAgICAgICAg
ICByZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNjU4LDE2ICs2NTgsMTYgQEAgT3B0aW9uYWw8dWlu
dDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgICAg
ICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNjaGVtZVsz
XSA9PSAncCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBQb3J0OwotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBjYXNlIDU6CiAgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwogICAgICAgICAgICAg
ICAgICYmIHNjaGVtZVsyXSA9PSAndCcKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0g
J3AnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKICAgICAgICAgICAgICAg
ICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAgICAgY2FzZSAnZyc6CiAgICAgICAgIGlmIChsZW5ndGggPT0gNgpAQCAtNjc3LDE1ICs2
NzcsMTUgQEAgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5n
VmlldyBzY2hlbWUpCiAgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ2UnCiAgICAgICAgICAg
ICAmJiBzY2hlbWVbNV0gPT0gJ3InKQogICAgICAgICAgICAgcmV0dXJuIGdvcGhlclBvcnQ7Ci0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGNhc2UgJ2YnOgogICAgICAgICBpZiAobGVuZ3RoID09IDMKICAgICAgICAgICAgICYmIHNjaGVt
ZVsxXSA9PSAndCcKICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCiAgICAgICAgICAg
ICByZXR1cm4gZnRwUG9ydDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC0yMDYzLDkgKzIwNjMs
OSBAQCBzdGF0aWMgc2l6ZV90IHplcm9TZXF1ZW5jZUxlbmd0aChjb25zdCBzdGQ6OmFycmF5PHVp
bnQxNl90LCA4PiYgYWRkcmVzcywgc2l6ZV90CiAgICAgcmV0dXJuIGVuZCAtIGJlZ2luOwogfQog
Ci1zdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBz
dGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwg
OD4mIGFkZHJlc3MpCiB7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBsb25nZXN0OworICAgIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBsb25nZXN0OwogICAgIHNpemVfdCBsb25nZXN0TGVuZ3RoID0gMDsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgewogICAgICAgICBzaXplX3QgbGVu
Z3RoID0gemVyb1NlcXVlbmNlTGVuZ3RoKGFkZHJlc3MsIGkpOwpAQCAtMjEyMiw3ICsyMTIyLDcg
QEAgdm9pZCBVUkxQYXJzZXI6OnNlcmlhbGl6ZUlQdjYoVVJMUGFyc2VyOjpJUHY2QWRkcmVzcyBh
ZGRyZXNzKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotT3B0aW9uYWw8
dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBib29sJiBkaWRTZWVTeW50YXhWaW9sYXRpb24pCitzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0
ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgYm9vbCYgZGlkU2VlU3ludGF4VmlvbGF0
aW9uKQogewogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKICAgICAgICAgVW5rbm93
bkJhc2UsCkBAIC0yMTM0LDcgKzIxMzQsNyBAQCBPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2Vy
OjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaQogICAg
IFN0YXRlIHN0YXRlID0gU3RhdGU6OlVua25vd25CYXNlOwogICAgIENoZWNrZWQ8dWludDMyX3Qs
IFJlY29yZE92ZXJmbG93PiB2YWx1ZSA9IDA7CiAgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpICYm
ICppdGVyYXRvciA9PSAnLicpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAg
ICBpZiAoaXNUYWJPck5ld2xpbmUoKml0ZXJhdG9yKSkgewogICAgICAgICAgICAgZGlkU2VlU3lu
dGF4VmlvbGF0aW9uID0gdHJ1ZTsKQEAgLTIxNjUsMzEgKzIxNjUsMzEgQEAgT3B0aW9uYWw8dWlu
dDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0YXRlOjpEZWNp
bWFsOgogICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnOScp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHZhbHVlICo9IDEwOwogICAgICAgICAgICAgdmFs
dWUgKz0gKml0ZXJhdG9yIC0gJzAnOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhh
c092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICsraXRlcmF0b3I7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdGF0ZTo6T2N0YWw6CiAgICAgICAgICAg
ICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKICAgICAgICAgICAgIGlmICgqaXRlcmF0
b3IgPCAnMCcgfHwgKml0ZXJhdG9yID4gJzcnKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB2
YWx1ZSAqPSA4OwogICAgICAgICAgICAgdmFsdWUgKz0gKml0ZXJhdG9yIC0gJzAnOwogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgICsraXRlcmF0b3I7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBTdGF0ZTo6SGV4OgogICAgICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7
CiAgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICB2YWx1ZSAqPSAxNjsKICAgICAgICAgICAgIHZhbHVlICs9IHRvQVND
SUlIZXhWYWx1ZSgqaXRlcmF0b3IpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhh
c092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICsraXRlcmF0b3I7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjIwNiw3ICsyMjA2LDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdWludDY0X3QgcG93MjU2KHNpemVfdCBleHBvbmVudCkKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NEFk
ZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiBpdGVyYXRvcikKK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4g
VVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
IGl0ZXJhdG9yKQogewogICAgIGF1dG8gaG9zdEJlZ2luID0gaXRlcmF0b3I7CiAKQEAgLTIyMjAs
MzAgKzIyMjAsMzAgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2Vy
OjpwYXJzZUlQdjRIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpdGVtcy5zaXplKCkgPj0gNCkKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IHBhcnNlSVB2NFBpZWNlKGl0ZXJhdG9yLCBkaWRTZWVTeW50
YXhWaW9sYXRpb24pKQogICAgICAgICAgICAgaXRlbXMuYXBwZW5kKGl0ZW0udmFsdWUoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpKSB7CiAgICAg
ICAgICAgICBpZiAoaXRlbXMuc2l6ZSgpID49IDQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
IGlmICgqaXRlcmF0b3IgPT0gJy4nKQogICAgICAgICAgICAgICAgICsraXRlcmF0b3I7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWl0
ZXJhdG9yLmF0RW5kKCkgfHwgIWl0ZW1zLnNpemUoKSB8fCBpdGVtcy5zaXplKCkgPiA0KQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoaXRlbXMuc2l6ZSgpID4gMSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0
ZW1zLnNpemUoKSAtIDE7IGkrKykgewogICAgICAgICAgICAgaWYgKGl0ZW1zW2ldID4gMjU1KQot
ICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGl0ZW1zW2l0ZW1zLnNpemUo
KSAtIDFdID49IHBvdzI1Nig1IC0gaXRlbXMuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoZGlkU2VlU3ludGF4
VmlvbGF0aW9uKQogICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKQEAgLTIyNjIs
MjcgKzIyNjIsMjcgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2Vy
OjpwYXJzZUlQdjRIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNl
SVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRl
cmF0b3IpCitzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNl
SW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCiB7
CiAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVpbnQzMl90IHBpZWNlID0gMDsKICAgICBi
b29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOwogICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKICAg
ICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQo
Kml0ZXJhdG9yKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgKytkaWdpdENvdW50OwogICAgICAgICBpZiAoIXBp
ZWNlICYmICppdGVyYXRvciA9PSAnMCcpIHsKICAgICAgICAgICAgIGlmIChsZWFkaW5nWmVyb3Mp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQogICAgICAgICAgICAg
bGVhZGluZ1plcm9zID0gdHJ1ZTsKICAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJh
dG9yIC0gJzAnOwogICAgICAgICBpZiAocGllY2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGFkdmFu
Y2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwog
ICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjI5
MCw1MSArMjI5MCw1MSBAQCBPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQ
aWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGlmIChwaWVjZSAmJiBsZWFkaW5nWmVyb3MpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBwaWVj
ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFVSTFBh
cnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCitzdGQ6Om9wdGlvbmFs
PFVSTFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lk
ZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiB7CiAgICAg
SVB2NEFkZHJlc3MgYWRkcmVzcyA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyAr
K2kpIHsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBwaWVjZSA9IHBhcnNlSVB2NFBp
ZWNlSW5zaWRlSVB2NihpdGVyYXRvcikpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBwaWVjZSA9IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihpdGVyYXRvcikpCiAgICAgICAg
ICAgICBhZGRyZXNzID0gKGFkZHJlc3MgPDwgOCkgKyBwaWVjZS52YWx1ZSgpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmIChpIDwgMykgewogICAgICAgICAgICAgaWYgKGl0ZXJhdG9y
LmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4n
KQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9y
dFN5bnRheFZpb2xhdGlvbjo6Tm8+KGl0ZXJhdG9yKTsKICAgICAgICAgfSBlbHNlIGlmICghaXRl
cmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkp
OwogICAgIHJldHVybiBhZGRyZXNzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgotT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQ
djZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCitzdGQ6Om9wdGlvbmFs
PFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBjKQogewogICAgIEFTU0VSVCgqYyA9PSAnWycpOwog
ICAgIGF1dG8gaG9zdEJlZ2luID0gYzsKICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAgICAg
aWYgKGMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBJUHY2QWRkcmVzcyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAw
LCAwLCAwLCAwfX07CiAgICAgc2l6ZV90IHBpZWNlUG9pbnRlciA9IDA7Ci0gICAgT3B0aW9uYWw8
c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNvbXBy
ZXNzUG9pbnRlcjsKIAogICAgIGlmICgqYyA9PSAnOicpIHsKICAgICAgICAgYWR2YW5jZShjLCBo
b3N0QmVnaW4pOwogICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoKmMg
IT0gJzonKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAgICAgICAgICsr
cGllY2VQb2ludGVyOwogICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CkBA
IC0yMzQyLDE5ICsyMzQyLDE5IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVS
TFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgCiAgICAg
d2hpbGUgKCFjLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA4KQotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBpZiAoKmMgPT0gJzonKSB7CiAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2lu
dGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAg
ICAgICAgICAgICArK3BpZWNlUG9pbnRlcjsKICAgICAgICAgICAgIGNvbXByZXNzUG9pbnRlciA9
IHBpZWNlUG9pbnRlcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
IGlmIChwaWVjZVBvaW50ZXIgPT0gNiB8fCAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRl
ciA8IDYpKSB7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8SVB2NEFkZHJlc3M+IGlwdjRBZGRy
ZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsKKyAgICAgICAgICAgIGlmIChz
dGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJ
bnNpZGVJUHY2KGMpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlciAmJiBw
aWVjZVBvaW50ZXIgPT0gNSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAg
c3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CiAgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVj
ZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpID4+IDE2OwogICAgICAgICAgICAgICAg
IGFkZHJlc3NbcGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSAmIDB4RkZGRjsK
QEAgLTIzODUsMTIgKzIzODUsMTIgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4g
VVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKICAgICAgICAg
aWYgKGMuYXRFbmQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAocGllY2VQb2lu
dGVyID09IDggfHwgKmMgIT0gJzonKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdp
bik7CiAgICAgfQogICAgIAogICAgIGlmICghYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoY29tcHJl
c3NQb2ludGVyKSB7CiAgICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXBy
ZXNzUG9pbnRlci52YWx1ZSgpOwpAQCAtMjM5OCw5ICsyMzk4LDkgQEAgT3B0aW9uYWw8VVJMUGFy
c2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXIKICAgICAgICAgd2hpbGUgKHN3YXBzKQogICAgICAgICAgICAgc3RkOjpzd2FwKGFk
ZHJlc3NbcGllY2VQb2ludGVyLS1dLCBhZGRyZXNzW2NvbXByZXNzUG9pbnRlci52YWx1ZSgpICsg
c3dhcHMtLSAtIDFdKTsKICAgICB9IGVsc2UgaWYgKHBpZWNlUG9pbnRlciAhPSA4KQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIE9w
dGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21wcmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9T
ZXF1ZW5jZShhZGRyZXNzKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcG9zc2libGVDb21w
cmVzc1BvaW50ZXIgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShhZGRyZXNzKTsKICAgICBpZiAo
cG9zc2libGVDb21wcmVzc1BvaW50ZXIpCiAgICAgICAgIHBvc3NpYmxlQ29tcHJlc3NQb2ludGVy
LnZhbHVlKCkrKzsKICAgICBpZiAoVU5MSUtFTFkoY29tcHJlc3NQb2ludGVyICE9IHBvc3NpYmxl
Q29tcHJlc3NQb2ludGVyKSkKQEAgLTI0NjEsNyArMjQ2MSw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIGJvb2wgY29udGFpbnNPbmx5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1PcHRpb25hbDxWZWN0b3I8TENoYXIsIFVS
TFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBVUkxQYXJzZXI6OmRvbWFpblRvQVND
SUkoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3Rl
clR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBVUkxQ
YXJzZXI6OmRvbWFpblRvQVNDSUkoY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0
aW9uKQogewogICAgIFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+IGFzY2lp
OwogICAgIGlmIChjb250YWluc09ubHlBU0NJSShkb21haW4pKSB7CkBAIC0yNTEyLDcgKzI1MTIs
NyBAQCBPcHRpb25hbDxWZWN0b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZl
clNpemU+PiBVUkxQYXJzZXI6OmRvbWFpblRvQQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBDaGVj
ayBmb3IgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IgYW5kIHJldHJ5IHdpdGggYW4gYWxsb2NhdGVk
IGJ1ZmZlci4KLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBib29sIFVSTFBhcnNlcjo6aGFzSW52YWxpZERvbWFpbkNoYXJhY3Rlcihjb25zdCBWZWN0
b3I8TENoYXIsIFVSTFBhcnNlcjo6ZGVmYXVsdElubGluZUJ1ZmZlclNpemU+JiBhc2NpaURvbWFp
bikKQEAgLTI3MDUsMTEgKzI3MDUsMTEgQEAgYm9vbCBVUkxQYXJzZXI6OnBhcnNlSG9zdEFuZFBv
cnQoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLU9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJM
RGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChT
dHJpY3RDb252ZXJzaW9uKTsKICAgICBpZiAodXRmOC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwZXJjZW50
RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHV0
ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
cGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAppbmRleCBkNTdjZGUxZTE4NDk3MmU5ODg0MTAwN2FmZGU4
MTIyYjhkMjFmODBiLi4wMDllOGU0NDdkODEwNTNlNzY2NjA3NjAwMTIyMzQ5Yzc1MjUzNWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaApAQCAtODcsMTAgKzg3LDEwIEBAIGNsYXNz
IFVSTFBhcnNlciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4g
dm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUpOwogICAg
IHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
dXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8VmVjdG9yPExD
aGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IGRvbWFpblRvQVNDSUkoY29uc3QgU3RyaW5n
JiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3lu
dGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+
IGRvbWFpblRvQVNDSUkoY29uc3QgU3RyaW5nJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGlu
ZUJ1ZmZlclNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNvbnN0IENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlv
blBvc2l0aW9uKTsKICAgICBzdGF0aWMgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVy
U2l6ZT4gcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3RhdGljIE9w
dGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCk7
CiAgICAgc3RhdGljIGJvb2wgaGFzSW52YWxpZERvbWFpbkNoYXJhY3Rlcihjb25zdCBWZWN0b3I8
TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiYpOwogICAgIHZvaWQgcGVyY2VudEVuY29k
ZUJ5dGUodWludDhfdCk7CiAgICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKFVDaGFyMzIpOwpA
QCAtMTAyLDEyICsxMDIsMTIgQEAgY2xhc3MgVVJMUGFyc2VyIHsKIAogICAgIHVzaW5nIElQdjRB
ZGRyZXNzID0gdWludDMyX3Q7CiAgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRyZXNzKTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJUHY0QWRkcmVz
cz4gcGFyc2VJUHY0SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNl
SVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgYm9vbCYgc3ludGF4
VmlvbGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9w
dGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7CiAgICAgdXNpbmcgSVB2NkFkZHJlc3Mg
PSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBPcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IE9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2VJbnNp
ZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJ
UHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwog
ICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKICAgICB2b2lkIHNl
cmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCBkMDE4MmE3MTdhZWFmNTY4ODJmNDY0YTBiZDE2
MTU1MGU5MjgzOWVhLi45MTFlODI3OGU3YzliOWI3OTY0MWQyMDZjZTNkYjQ4YzUwNDI1YjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAg
LTczLDcgKzczLDcgQEAgY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2Ugewog
ICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZnJhbWVDb3Vu
dCgpOyB9CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlLnJlcGV0aXRpb25Db3VudCgpOyB9CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UuZmlsZW5hbWVFeHRlbnNp
b24oKTsgfQotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zb3VyY2UuaG90U3BvdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2lu
dD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLmhvdFNwb3QoKTsg
fQogCiAgICAgLy8gRmxvYXRTaXplIGR1ZSB0byBvdmVycmlkZS4KICAgICBGbG9hdFNpemUgc2l6
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLnNpemUoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXggNjM3Mzk1YzY2M2IzMTE2NGEzZDRm
Y2EzZWIwNWRmMGRjMWQzYzgyYS4uYzc1NDUwMGIxMjA5MjFkMWQ1MWY5NmZhMzgyMTc5ODczYTI4
NjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC02OSw3
ICs2OSw3IEBAIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBnLCBpbnQg
YiwgaW50IGEpOwogUkdCQTMyIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywg
aW50IGIsIGludCBhKTsKIAogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRl
QWxwaGEoUkdCQTMyIGNvbG9yLCBmbG9hdCBvdmVycmlkZUFscGhhKTsKLVJHQkEzMiBjb2xvcldp
dGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxw
aGEpOworUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9yLCBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhKTsKIAogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIG1h
a2VSR0JBMzJGcm9tRmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwog
UkdCQTMyIG1ha2VSR0JBRnJvbUhTTEEoZG91YmxlIGgsIGRvdWJsZSBzLCBkb3VibGUgbCwgZG91
YmxlIGEpOwpAQCAtMzkyLDcgKzM5Miw3IEBAIGlubGluZSB1aW50MTZfdCBmYXN0RGl2aWRlQnky
NTUodWludDE2X3QgdmFsdWUpCiAgICAgcmV0dXJuIGFwcHJveGltYXRpb24gKyAocmVtYWluZGVy
ID4+IDgpOwogfQogCi1pbmxpbmUgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMy
IGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gb3ZlcnJpZGVBbHBoYSkKK2lubGluZSBSR0JBMzIgY29s
b3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG92
ZXJyaWRlQWxwaGEpCiB7CiAgICAgcmV0dXJuIG92ZXJyaWRlQWxwaGEgPyBjb2xvcldpdGhPdmVy
cmlkZUFscGhhKGNvbG9yLCBvdmVycmlkZUFscGhhLnZhbHVlKCkpIDogY29sb3I7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5oCmluZGV4IGM2NjlkY2I0YzBmMGUyNTUwY2Q3MWZkNWNlMThk
NzY1YTc5NDJmN2MuLjhmYTExNGM0NTE0NDU5OGYxZTc1NGYzZTFjNjFhYWZjMmRjODYzMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCkBAIC01Niw3ICs1Niw3IEBAIGNsYXNzIERpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudCB7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX3NjaGVkdWxl
ZCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlzcGxheUlE
OworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlzcGxheUlEOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDJiOTE0ZWU4
YjMzOWZkZGMwNDM4NzEyZDY5N2VjODQ3ZWY0YTdkMmYuLjUzNzRlNzI3MmJjODM3OGUzYzIxYjcw
NWJmY2U4ZjU5MDk2OWJhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKQEAgLTI4NCwxMCArMjg0LDEwIEBAIGNsYXNzIEZvbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxG
b250PiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBtX25vbktlcm5lZENGU3RyaW5nQXR0cmlidXRlczsKICAgICBtdXRhYmxlIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fa2VybmVkQ0ZTdHJpbmdBdHRyaWJ1dGVzOwotICAg
IG11dGFibGUgT3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5U21hbGxDYXBz
OwotICAgIG11dGFibGUgT3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5QWxs
U21hbGxDYXBzOwotICAgIG11dGFibGUgT3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBv
cnRlZEJ5UGV0aXRlQ2FwczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlw
aHNTdXBwb3J0ZWRCeUFsbFBldGl0ZUNhcHM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPEJp
dFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2FwczsKKyAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5QWxsU21hbGxDYXBzOworICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlQZXRp
dGVDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3Vw
cG9ydGVkQnlBbGxQZXRpdGVDYXBzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKEhBUkZCVVpaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCmluZGV4IGFlOTc1MThiMTY5ZTEwMWM3YmZlYzE4MzAyODgzMTAzMGE4MmU2
YjguLjdlNjgzMTEzOGI5NzQwNjg5NWExNzVjY2M2YzE1MmNkNTU0YjM4MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTMwMSw3
ICszMDEsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JUZXh0UnVuKENvZGVQ
YXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mCiAgICAgcmV0dXJuIGdldEdseXBoc0Fu
ZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIpOwogfQog
Ci1mbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9t
LCBPcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsK
ICAgICAvLyBEb24ndCBkcmF3IGFueXRoaW5nIHdoaWxlIHdlIGFyZSB1c2luZyBjdXN0b20gZm9u
dHMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZywKICAgICAvLyBleGNlcHQgaWYg
dGhlICdmb3JjZScgYXJndW1lbnQgaXMgc2V0IHRvIHRydWUgKGluIHdoaWNoIGNhc2UgaXQgd2ls
bCB1c2UgYSBmYWxsYmFjawpAQCAtMzA5LDcgKzMwOSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSAmJiBjdXN0b21Gb250Tm90UmVhZHlB
Y3Rpb24gPT0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAg
IHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKIAogICAg
IENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBV
c2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBr
ZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApAQCAt
MzI3LDEyICszMjcsMTIgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJldHVybiBzdGFy
dFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZy
b20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdF
bXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKICAgICBpZiAo
aXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQg
ZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVz
dGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogCiAgICAgQ29kZVBhdGggY29k
ZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBj
b2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxp
Z2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCkBAIC00OTAsOSArNDkwLDkg
QEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9h
dCYgd2lkdGgpIGNvbnN0CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQgRm9udENhc2Nh
ZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRv
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9t
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBkZXN0
aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5h
dGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBjb2RlUGF0
aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUg
cGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1
cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAgLTExNzksMjcgKzExNzksMjcg
QEAgR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGUgY29tcHV0ZVVuZGVy
bGluZVR5cGUoY29uc3QgVGV4dFJ1biYgdGUKIAogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gbWF5
IG5vdCB3b3JrIGlmIHRoZSBlbXBoYXNpcyBtYXJrIHVzZXMgYSBjb21wbGV4IHNjcmlwdCwgYnV0
IG5vbmUgb2YgdGhlCiAvLyBzdGFuZGFyZCBlbXBoYXNpcyBtYXJrcyBkbyBzby4KLU9wdGlvbmFs
PEdseXBoRGF0YT4gRm9udENhc2NhZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmspIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gRm9udENh
c2NhZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9taWNTdHJpbmcmIG1hcmsp
IGNvbnN0CiB7CiAgICAgaWYgKG1hcmsuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFVDaGFyMzIgY2hhcmFjdGVy
OwogICAgIGlmICghbWFyay5pczhCaXQoKSkgewogICAgICAgICBTdXJyb2dhdGVQYWlyQXdhcmVU
ZXh0SXRlcmF0b3IgaXRlcmF0b3IobWFyay5jaGFyYWN0ZXJzMTYoKSwgMCwgbWFyay5sZW5ndGgo
KSwgbWFyay5sZW5ndGgoKSk7CiAgICAgICAgIHVuc2lnbmVkIGNsdXN0ZXJMZW5ndGg7CiAgICAg
ICAgIGlmICghaXRlcmF0b3IuY29uc3VtZShjaGFyYWN0ZXIsIGNsdXN0ZXJMZW5ndGgpKQotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0gZWxzZQogICAgICAgICBjaGFyYWN0ZXIgPSBtYXJrWzBdOwogCi0gICAgT3B0aW9u
YWw8R2x5cGhEYXRhPiBnbHlwaERhdGEoZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlciwg
ZmFsc2UsIEVtcGhhc2lzTWFya1ZhcmlhbnQpKTsKLSAgICByZXR1cm4gZ2x5cGhEYXRhLnZhbHVl
KCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRhIDogTnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEds
eXBoRGF0YT4gZ2x5cGhEYXRhKGdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGZhbHNl
LCBFbXBoYXNpc01hcmtWYXJpYW50KSk7CisgICAgcmV0dXJuIGdseXBoRGF0YS52YWx1ZSgpLmlz
VmFsaWQoKSA/IGdseXBoRGF0YSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogaW50IEZvbnRDYXNjYWRl
OjplbXBoYXNpc01hcmtBc2NlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAogewot
ICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0ds
eXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0
YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAoIW1hcmtHbHlwaERh
dGEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBpbnQgRm9udENh
c2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudChjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIGNvbnN0
CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudChjb25zdCBBdG9taWNTdHJp
bmcmIG1hcmspIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRh
ID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOworICAgIHN0ZDo6b3B0aW9uYWw8R2x5
cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwog
ICAgIGlmICghbWFya0dseXBoRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEyMjcsNyAr
MTIyNyw3IEBAIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudChjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmspIGNvbnN0CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVp
Z2h0KGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBPcHRpb25hbDxHbHlw
aERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFyayk7Cisg
ICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01h
cmtHbHlwaERhdGEobWFyayk7CiAgICAgaWYgKCFtYXJrR2x5cGhEYXRhKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtMTMyOSw3ICsxMzI5LDcgQEAgaW5saW5lIHN0YXRpYyBmbG9hdCBvZmZzZXRU
b01pZGRsZU9mR2x5cGhBdEluZGV4KGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKIAog
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGNvbnN0IEF0b21pY1N0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8R2x5
cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNN
YXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICghbWFya0dseXBoRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
aAppbmRleCBhNDYzZTM3NWMwNjJlYjY0NmZiNmIzM2YzYmM5Y2JlMGQxMWJkNGM2Li4zMmRlYzJm
M2IyZTY2MjQ1YzRhZWJkNzQ5NzZhODM5MzEyNzgzYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTEzMiw5ICsxMzIsOSBAQCBjbGFz
cyBGb250Q2FzY2FkZSB7CiAgICAgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJikg
Y29uc3Q7CiAKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFpbnRJ
ZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwotICAgIFdFQkNPUkVf
RVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBj
b25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0
byA9IE51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnRO
b3RSZWFkeSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJhd1RleHQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBm
cm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQsIEN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CiAg
ICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7Ci0gICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFs
PHVuc2lnbmVkPiB0byA9IE51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFy
a3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBEYXNoQXJyYXkgZGFz
aGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKIApA
QCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzIEZvbnRDYXNjYWRlIHsKICAgICBzdGF0aWMgZmxvYXQg
d2lkdGgoVGV4dExheW91dCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgSGFzaFNldDxj
b25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwKTsKIAogICAgIGludCBvZmZzZXRGb3JQb3Np
dGlvbihjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxH
bHlwaHMpIGNvbnN0OwotICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3Qg
VGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20gPSAwLCBP
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBOdWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIGFkanVzdFNl
bGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25S
ZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NtYWxsQ2FwcygpIGNvbnN0IHsgcmV0dXJu
IG1fZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9udFZhcmlhbnRDYXBzOjpTbWFs
bDsgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgY2xhc3MgRm9udENhc2NhZGUgewogICAgIGludCBv
ZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0
aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKICAgICB2b2lkIGFkanVzdFNl
bGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxl
Y3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxHbHlwaERhdGE+IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gZ2V0RW1waGFzaXNNYXJr
R2x5cGhEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wg
Y2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCk7CiAgICAgc3RhdGljIGJvb2wg
Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDg4
YjdmNWI5MTVlNDdjNTgxYTcyOGQ2NWVkMzMwYjE3ZmU1ODFkMzkuLjE1N2M5MmZkYzQ5YTVkZDAz
MzkxOTBlMzczNGVjMzU3ZjEwZGMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNjM2LDcgKzYzNiw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgLS1tX3RyYW5z
cGFyZW5jeUNvdW50OwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCitmbG9hdCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0bykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTY1OCw3ICs2NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0dseXBocyhjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUsIGNvbnN0IEZvbnQmIGZv
bgogICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwg
bnVtR2x5cGhzLCBwb2ludCwgZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290
aGluZygpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlv
bmFsPHVuc2lnbmVkPiB0bykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYg
cnVuLAogICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gUlRMIDogTFRSKTsKICAg
ICAgICAgc3VicnVuLnNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYmlkaVJ1bi0+ZGlyT3ZlcnJpZGUo
ZmFsc2UpKTsKIAotICAgICAgICBmbG9hdCB3aWR0aCA9IGZvbnQuZHJhd1RleHQoKnRoaXMsIHN1
YnJ1biwgY3VyclBvaW50LCAwLCBOdWxsb3B0LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwor
ICAgICAgICBmbG9hdCB3aWR0aCA9IGZvbnQuZHJhd1RleHQoKnRoaXMsIHN1YnJ1biwgY3VyclBv
aW50LCAwLCBzdGQ6Om51bGxvcHQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAg
IGN1cnJQb2ludC5tb3ZlKHdpZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+
bmV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAppbmRleCA1Njk3YzA5Zjc2ZWQ2M2EwYzlmODk3ZTkwMTU1MTlkNTA3ODJjNDQx
Li40NTA4YjcyODYzNTMzNjY0M2VkZTMyM2E0MDNjOGRjZTVjYTVhMWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzg3
LDkgKzM4Nyw5IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgdm9pZCBzZXRUZXh0RHJh
d2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MpOwogICAgIFRleHREcmF3aW5nTW9kZUZsYWdz
IHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudGV4dERyYXdpbmdNb2Rl
OyB9CiAKLSAgICBmbG9hdCBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2ln
bmVkPiB0byA9IE51bGxvcHQpOworICAgIGZsb2F0IGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgZHJh
d0dseXBocyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYp
OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBU
ZXh0UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5z
aWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IE51bGxvcHQpOworICAgIHZv
aWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJv
bSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICB2
b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZv
bnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCiAgICAgdm9pZCBhcHBseVN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CkBAIC02ODksNyArNjg5LDcgQEAgY2xh
c3MgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIHsKICAgICAgICAgICAgIG1fZ3JhcGhp
Y3NDb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxp
dHlUb1VzZSk7CiAgICAgfQogCi0gICAgZXhwbGljaXQgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWlu
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBPcHRpb25hbDxJbnRlcnBv
bGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkpCisgICAgZXhwbGljaXQgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0
eSkKICAgICAgICAgOiBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIoZ3JhcGhpY3NDb250
ZXh0LCBpbnRlcnBvbGF0aW9uUXVhbGl0eSA/IGludGVycG9sYXRpb25RdWFsaXR5LnZhbHVlKCkg
OiBncmFwaGljc0NvbnRleHQuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBjYzE4MmNk
Mzg4YTJkNGNiNGE1MTZiYjgxN2U0NjdjYjIwMTVhZjZjLi41NmI3ZmYxZGQ5ODVhOTcxZTU3Y2Rh
MTgyNzBiMzdlYjk1OWNiYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEltYWdlPiB7CiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKCkpOyB9CiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVy
biBzaXplKCkud2lkdGgoKTsgfQogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHNp
emUoKS5oZWlnaHQoKTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Qo
KSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPElu
dFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3Qg
eyByZXR1cm4gc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaAppbmRleCBmMGU2NWI4NzAwMTg5NGQ2Nzc3NWUwNWZjNmFhZWFiMjI3Mzgx
YjJjLi4zOTdiZWVlNWE3MTIxMDcyNDFiOTg3ZjI5YTgwMjdlMDdmMTMyZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiAgICAgCiAgICAgdm9pZCBjb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKCk7CiAgICAgCi0gICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBOdWxsb3B0LCBDb29yZGluYXRlU3lz
dGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworICAgIFN0cmluZyB0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkg
PSBzdGQ6Om51bGxvcHQsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3Rl
bSkgY29uc3Q7CiAjaWYgIVVTRShDRykKICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOyB9CiAgICAgdm9pZCB0cmFuc2Zv
cm1Db2xvclNwYWNlKENvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgQ29sb3JTcGFjZSBkc3RDb2xv
clNwYWNlKTsKQEAgLTE4MCw3ICsxODAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciB7CiB9OwogCiAj
aWYgVVNFKENHKQotU3RyaW5nIGRhdGFVUkwoY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KTsKK1N0cmluZyBkYXRhVVJMKGNv
bnN0IEltYWdlRGF0YSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KTsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApp
bmRleCA0Yjk0OGU1NDg4NTA2N2NkYmMxZGJjMGQyYjU2OTY0ODM0NTAxNmQ1Li5iMWMyYTJiMzM1
NjEyMzRlZDFkNDI0YjllNGZhYzRiYTZmMDhiZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKQEAgLTI0MSwxMyArMjQx
LDEzIEBAIGNvbnN0IEltYWdlRnJhbWUmIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzCiAKIHZvaWQgSW1hZ2VGcmFtZUNhY2hlOjpj
bGVhck1ldGFkYXRhKCkKIHsKLSAgICBtX2ZyYW1lQ291bnQgPSBOdWxsb3B0OwotICAgIG1fc2lu
Z2xlUGl4ZWxTb2xpZENvbG9yID0gTnVsbG9wdDsKLSAgICBtX21heGltdW1TdWJzYW1wbGluZ0xl
dmVsID0gTnVsbG9wdDsKKyAgICBtX2ZyYW1lQ291bnQgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9z
aW5nbGVQaXhlbFNvbGlkQ29sb3IgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9tYXhpbXVtU3Vic2Ft
cGxpbmdMZXZlbCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAo
SW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4KLVQgSW1hZ2VGcmFtZUNhY2hlOjptZXRh
ZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkKK1Qg
SW1hZ2VGcmFtZUNhY2hlOjptZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIHN0ZDo6b3B0
aW9uYWw8VD4qIGNhY2hlZFZhbHVlKQogewogICAgIGlmIChjYWNoZWRWYWx1ZSAmJiAqY2FjaGVk
VmFsdWUpCiAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKQEAgLTI2NCw3ICsy
NjQsNyBAQCBUIEltYWdlRnJhbWVDYWNoZTo6bWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVl
LCBPcHRpb25hbDxUPiogY2FjaGVkVmFsdWUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQg
KEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0PgotVCBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1l
TWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsLCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIE9wdGlvbmFsPFQ+KiBjYWNoZWRW
YWx1ZSkKK1QgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZTo6Q2FjaGlu
ZyBjYWNoaW5nLCBzdGQ6Om9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkKIHsKICAgICBpZiAoY2Fj
aGVkVmFsdWUgJiYgKmNhY2hlZFZhbHVlKQogICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWUtPnZh
bHVlKCk7CkBAIC0zMDcsOSArMzA3LDkgQEAgU3RyaW5nIEltYWdlRnJhbWVDYWNoZTo6ZmlsZW5h
bWVFeHRlbnNpb24oKQogICAgIHJldHVybiBtZXRhZGF0YTxTdHJpbmcsICgmSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik+KFN0cmluZygpLCAmbV9maWxlbmFtZUV4dGVuc2lvbik7CiB9
CiAKLU9wdGlvbmFsPEludFBvaW50PiBJbWFnZUZyYW1lQ2FjaGU6OmhvdFNwb3QoKQorc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gSW1hZ2VGcmFtZUNhY2hlOjpob3RTcG90KCkKIHsKLSAgICByZXR1
cm4gbWV0YWRhdGE8T3B0aW9uYWw8SW50UG9pbnQ+LCAoJkltYWdlRGVjb2Rlcjo6aG90U3BvdCk+
KE51bGxvcHQsICZtX2hvdFNwb3QpOworICAgIHJldHVybiBtZXRhZGF0YTxzdGQ6Om9wdGlvbmFs
PEludFBvaW50PiwgKCZJbWFnZURlY29kZXI6OmhvdFNwb3QpPihzdGQ6Om51bGxvcHQsICZtX2hv
dFNwb3QpOwogfQogCiBJbnRTaXplIEltYWdlRnJhbWVDYWNoZTo6c2l6ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCmluZGV4IDYx
Nzc1YzhiYTZmMWMzYmI2NjZhOTIwNzFlMzhlMzNhZTc2Y2Y2MjQuLjczODQ0ZTUzYzQxNDA3MzIz
NTgyYjVhYTUwMDUzM2RlNDVkNGJlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIElt
YWdlRnJhbWVDYWNoZSB7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKICAgICBSZXBldGl0aW9u
Q291bnQgcmVwZXRpdGlvbkNvdW50KCk7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCk7
Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPElu
dFBvaW50PiBob3RTcG90KCk7CiAgICAgCiAgICAgLy8gSW1hZ2UgbWV0YWRhdGEgd2hpY2ggaXMg
Y2FsY3VsYXRlZCBmcm9tIHRoZSBmaXJzdCBJbWFnZUZyYW1lLgogICAgIEludFNpemUgc2l6ZSgp
OwpAQCAtODQsMTAgKzg0LDEwIEBAIGNsYXNzIEltYWdlRnJhbWVDYWNoZSB7CiAKIHByaXZhdGU6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBj
b25zdD4KLSAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgT3B0aW9uYWw8VD4q
IGNhY2hlZFZhbHVlID0gbnVsbHB0cik7CisgICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0
VmFsdWUsIHN0ZDo6b3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlID0gbnVsbHB0cik7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdD4KLSAg
ICBUIGZyYW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OlVuZGVmaW5kZWQsIEltYWdlRnJhbWU6OkNhY2hpbmcgPSBJbWFn
ZUZyYW1lOjpDYWNoaW5nOjpFbXB0eSwgT3B0aW9uYWw8VD4qID0gbnVsbHB0cik7CisgICAgVCBm
cmFtZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpVbmRlZmluZGVkLCBJbWFnZUZyYW1lOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZTo6Q2FjaGluZzo6RW1wdHksIHN0ZDo6b3B0aW9uYWw8VD4qID0gbnVsbHB0cik7CiAKICAgICBi
b29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAg
IHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBkZWNvZGVkU2l6ZSk7CkBAIC0xMTYs
MTcgKzExNiwxNyBAQCBjbGFzcyBJbWFnZUZyYW1lQ2FjaGUgewogICAgIFZlY3RvcjxJbWFnZUZy
YW1lLCAxPiBtX2ZyYW1lczsKIAogICAgIC8vIEltYWdlIG1ldGFkYXRhLgotICAgIE9wdGlvbmFs
PGJvb2w+IG1faXNTaXplQXZhaWxhYmxlOwotICAgIE9wdGlvbmFsPHNpemVfdD4gbV9mcmFtZUNv
dW50OwotICAgIE9wdGlvbmFsPFJlcGV0aXRpb25Db3VudD4gbV9yZXBldGl0aW9uQ291bnQ7Ci0g
ICAgT3B0aW9uYWw8U3RyaW5nPiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOwotICAgIE9wdGlvbmFsPE9w
dGlvbmFsPEludFBvaW50Pj4gbV9ob3RTcG90OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9p
c1NpemVBdmFpbGFibGU7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fZnJhbWVDb3VudDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlcGV0aXRpb25Db3VudD4gbV9yZXBldGl0aW9uQ291bnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1fZmlsZW5hbWVFeHRlbnNpb247CisgICAgc3RkOjpv
cHRpb25hbDxzdGQ6Om9wdGlvbmFsPEludFBvaW50Pj4gbV9ob3RTcG90OwogCiAgICAgLy8gSW1h
Z2UgbWV0YWRhdGEgd2hpY2ggaXMgY2FsY3VsYXRlZCBmcm9tIHRoZSBmaXJzdCBJbWFnZUZyYW1l
LgotICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKLSAgICBPcHRpb25hbDxJbnRTaXplPiBt
X3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247Ci0gICAgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZl
bD4gbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbDsKLSAgICBPcHRpb25hbDxDb2xvcj4gbV9zaW5n
bGVQaXhlbFNvbGlkQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBtX3NpemU7Cisg
ICAgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247Cisg
ICAgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiBtX21heGltdW1TdWJzYW1wbGluZ0xl
dmVsOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yOwog
fTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCmluZGV4IDc2ZTk4MDlhOTc2ODNhYTcyNDgyN2E5YzJjZGRiYTc4MzgzNDJiOGMuLjBh
NTU1N2E2ODRmOTE4ZjkxNGQ0NDFjNzg2MWViZjE0NDcxMDg5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNzAsNyArNzAsNyBAQCBj
bGFzcyBJbWFnZVNvdXJjZSB7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSB7IHJldHVybiBtX2Zy
YW1lQ2FjaGUuZnJhbWVDb3VudCgpOyB9CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25D
b3VudCgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS5yZXBldGl0aW9uQ291bnQoKTsgfQogICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS5maWxlbmFtZUV4
dGVuc2lvbigpOyB9Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSB7IHJldHVybiBt
X2ZyYW1lQ2FjaGUuaG90U3BvdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90
U3BvdCgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS5ob3RTcG90KCk7IH0KIAogICAgIC8vIEltYWdl
IG1ldGFkYXRhIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZmlyc3QgSW1hZ2VGcmFtZS4K
ICAgICBJbnRTaXplIHNpemUoKSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUuc2l6ZSgpOyB9CkBAIC0x
MDYsNyArMTA2LDcgQEAgY2xhc3MgSW1hZ2VTb3VyY2UgewogICAgIEltYWdlRnJhbWVDYWNoZSBt
X2ZyYW1lQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9kZWNvZGVy
OwogCi0gICAgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4gbV9tYXhpbXVtU3Vic2FtcGxpbmdM
ZXZlbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWw7CiAKICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBtX2FsbG93U3Vic2Ft
cGxpbmcgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHRJbWFnZVN1YnNhbXBsaW5nRW5hYmxl
ZCBpbiBTZXR0aW5ncy5jcHAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4IDI1ZmU0MzMzNjg3
NDdkODBhOTg1NTFiOTY1NzUxYzQzZDE3Y2VhM2YuLmE3ZDkwNzEyOTRmNTcyOTY2YjU4Yjc0NTRh
NzNlZTIzNWMzZmI3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCkBAIC00NjIsMTMgKzQ2MiwxMyBAQCBzdGF0aWMgRmxvYXRS
b3VuZGVkUmVjdDo6UmFkaWkgYWRqdXN0ZWR0UmFkaWlGb3JIdWdnaW5nQ3VydmUoY29uc3QgRmxv
YXRTaXplJiB0bwogICAgIHJldHVybiByYWRpaTsKIH0KICAgICAKLXN0YXRpYyBPcHRpb25hbDxG
bG9hdFJlY3Q+IHJlY3RGcm9tUG9seWdvbihjb25zdCBGbG9hdFBvaW50R3JhcGg6OlBvbHlnb24m
IHBvbHkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3RGcm9tUG9seWdvbihj
b25zdCBGbG9hdFBvaW50R3JhcGg6OlBvbHlnb24mIHBvbHkpCiB7CiAgICAgaWYgKHBvbHkuc2l6
ZSgpICE9IDQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxGbG9hdFJlY3Q+KCk7CisgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4oKTsKIAotICAgIE9wdGlvbmFsPEZsb2F0
UG9pbnQ+IHRvcExlZnQ7Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gYm90dG9tUmlnaHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiB0b3BMZWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRQb2ludD4gYm90dG9tUmlnaHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBv
bHkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgdG9FZGdlID0gcG9seVtpXTsK
ICAgICAgICAgY29uc3QgYXV0byYgZnJvbUVkZ2UgPSAoaSA+IDApID8gcG9seVtpIC0gMV0gOiBw
b2x5W3BvbHkuc2l6ZSgpIC0gMV07CkBAIC00ODIsNyArNDgyLDcgQEAgc3RhdGljIE9wdGlvbmFs
PEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdv
biYgcG9seSkKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIXRvcExlZnQgfHwgIWJvdHRvbVJp
Z2h0KQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8RmxvYXRSZWN0PigpOworICAgICAgICByZXR1
cm4gc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KCk7CiAgICAgcmV0dXJuIEZsb2F0UmVjdCh0b3BM
ZWZ0LnZhbHVlKCksIGJvdHRvbVJpZ2h0LnZhbHVlKCkpOwogfQogCkBAIC01MTYsNyArNTE2LDcg
QEAgUGF0aCBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZWRSZWN0c0Zvck91dGxp
bmUoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4KICAgICAgICAgcmV0dXJuIFBhdGgoKTsKICAgICBj
b25zdCBhdXRvJiBwb2x5ID0gcG9seXMuYXQoMCk7CiAgICAgLy8gRmFzdCBwYXRoIHdoZW4gcG9s
eSBoYXMgb25lIHJlY3Qgb25seS4KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QgPSByZWN0
RnJvbVBvbHlnb24ocG9seSk7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QgPSBy
ZWN0RnJvbVBvbHlnb24ocG9seSk7CiAgICAgaWYgKHJlY3QpCiAgICAgICAgIHJldHVybiByb3Vu
ZGVkUmVjdChyZWN0LnZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDg5OGQ2NWJkNTI0ZWU2MzU2ZjI5YTAzMDVjODhm
ZTEwMTBjNmM3YmMuLmZmMDk1YjUyMTlmYWEzM2MxYjYyMjFkZmFkNWNlNTBjZWQwYzAwMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBA
IC00MDAsNyArNDAwLDcgQEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICBpZiAobV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAg
ICBGbG9hdFF1YWQgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRR
dWFkKHNoYWRvd2VkUmVjdCkpOwogICAgICAgICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29m
ZnNldCk7Ci0gICAgICAgIGxheWVyUmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94
KCk7CisgICAgICAgIGxheWVyUmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxheWVyUmVjdCA9IHNoYWRvd2VkUmVjdDsKICAgICAg
ICAgbGF5ZXJSZWN0Lm1vdmUobV9vZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAppbmRleCBlM2U4MzQyYTI1MDkxM2I2ODg0Y2YzNWFl
NThhYjJjY2Y5NWJiMzU0Li5mYzY4MTc1ZDQ3NzQwOTU5Y2E0MWQ2MWNiY2NjNTE4Yzg2MTBiNjUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcu
aApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBUaWxlZEJhY2tpbmcgewogICAgIHZpcnR1YWwgRmxv
YXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgLy8gT25seSB1c2VkIHRvIHVw
ZGF0ZSB0aGUgdGlsZSBjb3ZlcmFnZSBtYXAuIAotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRW
aWV3cG9ydFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCA5MzNmZWMyOGE1YTlhNzY1Y2U1MGI4OWJlNjY2NWMwN2ZlOGZlMGMx
Li43ODI4NTVlZDU5OTkzZjMwM2I5MTYyYTBhZDcyN2I0MDg5NjBmOTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTIzNTYsNyArMjM1Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBj
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAg
IEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKG1fbGFzdEltYWdlLmdl
dCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5nZXQoKSkpOwogICAgIEFmZmluZVRy
YW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJsZWRWaWRlb1RyYWNrIHByZWZlcnJl
ZFRyYW5zZm9ybV07Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0cHV0UmVjdCA9IHZpZGVv
VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KG91
dHB1dFJlY3QpOworICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QgPSB2aWRlb1Ry
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qob3V0
cHV0UmVjdCk7CiAKICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CiAgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXpl
KCksIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDU1M2RlOGZi
ZWEwN2U2NmEwYTI0MjNkMGVkYWY1NTBmNzBhNTJiNTguLjA2NGVmOGY1MDdmOTJjODRkZWQxMTIx
YmFlNzU0YzMwMzJlYjc0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtMTU4LDcgKzE1OCw3IEBAIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDIGZpbmFsIDogcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGUg
ewogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fY2xpZW50OwogICAgIENETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMqIG1fc2Vzc2lvbiB7IG51bGxwdHIgfTsKIAotICAgIE9wdGlv
bmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXpl
PiBtX2NhY2hlZFNpemU7CiAgICAgRmxvYXRTaXplIG1fY3VycmVudFNpemU7CiAgICAgYm9vbCBt
X3BhcnNpbmdTdWNjZWVkZWQ7CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQppbmRleCBmYTdjYjcxZjQxYThhMjU4ZWYwZTRkNjAwOWMyY2Q3NmNiM2VjMGQ4
Li42Mzg2NjlkNjg3MGU5M2JiY2RiNDk4ZGQ5ZTg2MWZkODVhOTRmZWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAt
OTAzLDcgKzkwMyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKEF0
b21pY1N0cmluZyB0cmFja0lEU3RyaW5nKQogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6Zmx1c2goQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKnJlbmRlcmVyKQogewogICAgIFty
ZW5kZXJlciBmbHVzaF07Ci0gICAgbV9jYWNoZWRTaXplID0gTnVsbG9wdDsKKyAgICBtX2NhY2hl
ZFNpemUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobV9tZWRpYVNvdXJjZSkgewogICAgICAg
ICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2V0SGFzQXZhaWxhYmxlVmlkZW9GcmFtZShmYWxz
ZSk7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpzZWVrVG9UaW1lKE1lZGlhVGltZSB0aW1lKQogCiBGbG9hdFNpemUgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKCkKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZh
bHVlT3IoRmxvYXRTaXplKCkpOworICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVfb3IoRmxv
YXRTaXplKCkpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNv
bWVSZWFkeUZvck1vcmVTYW1wbGVzKGludCB0cmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYjVk
NjA1NDg5OGFmNzM1ZjQ1YWZhOGNkMjJkMjlmZDFjMWVjODdkNy4uM2RjNzNmOWZjY2RlYzViMDIy
NmZkYTcyNThiNjVmZjExM2ZmNGQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjc0LDcgKzEyNzQs
NyBAQCBHcmFwaGljc0xheWVyQ0E6OlZpc2libGVBbmRDb3ZlcmFnZVJlY3RzIEdyYXBoaWNzTGF5
ZXJDQTo6Y29tcHV0ZVZpc2libGVBbmRDb3ZlcgogICAgIH0KIAogICAgIEZsb2F0UmVjdCBjb3Zl
cmFnZVJlY3QgPSBjbGlwUmVjdEZvclNlbGY7Ci0gICAgT3B0aW9uYWw8RmxvYXRRdWFkPiBxdWFk
ID0gc3RhdGUubWFwcGVkU2Vjb25kYXJ5UXVhZCgmbWFwV2FzQ2xhbXBlZCk7CisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFF1YWQ+IHF1YWQgPSBzdGF0ZS5tYXBwZWRTZWNvbmRhcnlRdWFkKCZtYXBX
YXNDbGFtcGVkKTsKICAgICBpZiAocXVhZCAmJiAhbWFwV2FzQ2xhbXBlZCAmJiAhYXBwbHlXYXND
bGFtcGVkKQogICAgICAgICBjb3ZlcmFnZVJlY3QgPSAoKnF1YWQpLmJvdW5kaW5nQm94KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250
cm9sbGVyLmNwcAppbmRleCBmN2Y1YWRmNzEzMDk5OGYwZDQ2Nzk5OTJlYzI0M2U5ZjA1ZmNhYmVl
Li4xMGVmNGY0ODcwYjdlNTAwN2I4Zjc2YTZmNDhmOGQzYmYyYjM0ZDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3Bw
CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0VmlzaWJsZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHVwZGF0ZVRpbGVDb3ZlcmFnZU1hcCgpOwogfQog
Ci12b2lkIFRpbGVDb250cm9sbGVyOjpzZXRMYXlvdXRWaWV3cG9ydFJlY3QoT3B0aW9uYWw8Rmxv
YXRSZWN0PiByZWN0KQordm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0TGF5b3V0Vmlld3BvcnRSZWN0
KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0KQogewogICAgIGlmIChyZWN0ID09IG1fbGF5
b3V0Vmlld3BvcnRSZWN0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAppbmRleCBjM2VlNDFlMDZi
ZDg4MjAwMzFlZDI5MjEyODYxNWZlNzlkOTMzYWM4Li44Yzg0YzdjYzkyNzY2YzQ2Zjk3NTkxMTcx
MWY4OTdiZGViYjE4ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgY2xhc3MgVGlsZUNv
bnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsKIAogICAgIEZsb2F0UmVjdCB2
aXNpYmxlUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmlzaWJsZVJlY3Q7IH0KICAg
ICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb3Zl
cmFnZVJlY3Q7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxheW91dFZpZXdwb3J0UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Vmlld3BvcnRSZWN0OyB9CisgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGxheW91dFZpZXdwb3J0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
Vmlld3BvcnRSZWN0OyB9CiAKICAgICB1bnNpZ25lZCBibGFua1BpeGVsQ291bnQoKSBjb25zdDsK
ICAgICBzdGF0aWMgdW5zaWduZWQgYmxhbmtQaXhlbENvdW50Rm9yVGlsZXMoY29uc3QgUGxhdGZv
cm1MYXllckxpc3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRQb2ludCYpOwpAQCAtMTQx
LDcgKzE0MSw3IEBAIGNsYXNzIFRpbGVDb250cm9sbGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFj
a2luZyB7CiAKICAgICAvLyBUaWxlZEJhY2tpbmcgbWVtYmVyIGZ1bmN0aW9ucy4KICAgICB2b2lk
IHNldFZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0
TGF5b3V0Vmlld3BvcnRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0TGF5b3V0Vmlld3BvcnRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0Pikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRDb3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
CiAgICAgYm9vbCB0aWxlc1dvdWxkQ2hhbmdlRm9yQ292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JQ
b3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CkBAIC0xOTIsNyArMTkyLDcgQEAg
Y2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGlsZUdyaWQ7CiAKICAgICBGbG9h
dFJlY3QgbV92aXNpYmxlUmVjdDsgLy8gT25seSB1c2VkIGZvciBzY3JvbGwgcGVyZm9ybWFuY2Ug
bG9nZ2luZy4KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fbGF5b3V0Vmlld3BvcnRSZWN0OyAv
LyBPbmx5IHVzZWQgYnkgdGhlIHRpbGVkIHNjcm9sbGluZyBpbmRpY2F0b3IuCisgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IG1fbGF5b3V0Vmlld3BvcnRSZWN0OyAvLyBPbmx5IHVzZWQgYnkg
dGhlIHRpbGVkIHNjcm9sbGluZyBpbmRpY2F0b3IuCiAgICAgRmxvYXRSZWN0IG1fY292ZXJhZ2VS
ZWN0OwogICAgIEludFJlY3QgbV9ib3VuZHNBdExhc3RSZXZhbGlkYXRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCmluZGV4IGNmYzY2ZmEwN2Y0NzA1NzViYTFjMWRiMTUyYTYwMzMzMDViZDlkYzQu
LjBiMGU2OTU2OWI0NTVlMDg5M2VkNGU2MDljNDNmZDZlNWI3NjVkZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY2Fp
cm9fc3VyZmFjZV90KiBpbWFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVmVjdG9yPGMKICAg
ICByZXR1cm4gY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmdfc3RyZWFtKGltYWdlLCB3cml0ZUZ1
bmN0aW9uLCBvdXRwdXQpID09IENBSVJPX1NUQVRVU19TVUNDRVNTOwogfQogCi1TdHJpbmcgSW1h
Z2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+LCBDb29yZGlu
YXRlU3lzdGVtKSBjb25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IGNmMDliMmI5ZjhmMDM3MWE5MGQyNzFkZjFlYjgzZmMxNzM2NDIzZTQuLjY2YjgxM2EwNGRmYTU3
ZTYyMmYzZmNlMTBkYWY1M2U2OWM5NWVmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC00NTgsNyArNDU4LDcg
QEAgc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbU1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiAjZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoQ0dJ
bWFnZVJlZiBpbWFnZSwgQ0ZTdHJpbmdSZWYgdXRpLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IENGTXV0YWJsZURhdGFSZWYgZGF0YSkKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKENHSW1hZ2VS
ZWYgaW1hZ2UsIENGU3RyaW5nUmVmIHV0aSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IENGTXV0YWJsZURhdGFSZWYgZGF0YSkKIHsKICAgICBpZiAoIWltYWdlIHx8ICF1dGkgfHwgIWRh
dGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ4Myw3ICs0ODMsNyBAQCBzdGF0aWMgYm9v
bCBlbmNvZGVJbWFnZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiB1dGksIE9wdGlvbmFs
PGRvdWJsZT4gcXVhbAogICAgIHJldHVybiBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0
aW5hdGlvbi5nZXQoKSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZGF0YVVSTChDR0ltYWdlUmVmIGlt
YWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCitz
dGF0aWMgU3RyaW5nIGRhdGFVUkwoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCiB7CiAgICAgYXV0byB1dGkgPSB1
dGlGcm9tTUlNRVR5cGUobWltZVR5cGUpOwogICAgIEFTU0VSVCh1dGkpOwpAQCAtNDk4LDcgKzQ5
OCw3IEBAIHN0YXRpYyBTdHJpbmcgZGF0YVVSTChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+CiAgICAgcmV0dXJuICJkYXRhOiIgKyBtaW1l
VHlwZSArICI7YmFzZTY0LCIgKyBiYXNlNjREYXRhOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXI6
OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwg
Q29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIApAQCAtNTM5
LDcgKzUzOSw3IEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwKICAgICByZXR1cm4gZGF0YVVSTChp
bWFnZS5nZXQoKSwgbWltZVR5cGUsIHF1YWxpdHkpOwogfQogCi1TdHJpbmcgZGF0YVVSTChjb25z
dCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KQorU3RyaW5nIGRhdGFVUkwoY29uc3QgSW1hZ2VEYXRhJiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewog
ICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JF
bmNvZGluZyhtaW1lVHlwZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggNzBiZGUxODhhOWQ3M2U1NGZh
ODg3N2I3MDA2N2I0MWIwZjM0NzQ5MC4uYzY3ZWNlZjE2MjY2MzBiNmEzYjc0NDY2MmQ5YjgxOTA4
ZGQxYjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjAzLDIzICsyMDMsMjMgQEAgUmVwZXRpdGlvbkNv
dW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKICAgICByZXR1cm4gUmVw
ZXRpdGlvbkNvdW50Tm9uZTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rlcjo6
aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXI6Omhv
dFNwb3QoKSBjb25zdAogewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRp
ZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVE
ZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAgIGlmICgh
cHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgaW50IHggPSAtMSwgeSA9IC0xOwogICAgIENGTnVtYmVyUmVm
IG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgp
LCBDRlNUUigiaG90c3BvdFgiKSk7CiAgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUo
bnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmeCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIG51bSA9IChDRk51bWJlclJlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFkiKSk7
CiAgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmeSkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIGlmICh4IDwgMCB8fCB5IDwgMCkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIEludFBv
aW50KHgsIHkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggNmJjMjM2ODFhYTYxOTllMjE5MjcxYWMzZjUwMGYw
NjRmNTFiNWFmZC4uNGUwZjY3NWQzYjhkYzczMzc2ZmQyNDZhMTA1NjBiNWFmMTRiYmQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlciB7CiAgICAgc2l6ZV90
IGZyYW1lQ291bnQoKSBjb25zdDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50
KCkgY29uc3Q7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFBv
aW50PiBob3RTcG90KCkgY29uc3Q7CiAKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7
CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KaW5k
ZXggNTEwMmMyMWQxYmQ2NTdmZDdhNGMzMDUzM2Y4ZjhiODVlMmQ2Y2I4OC4uOWMxODZjZDI0MGM1
NzQyOWU0OGViODg1ZmQ4MmRhODg1ODlmZjBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQpAQCAtNDA0LDcgKzQwNCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RydWVUeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVh
dHVyZSkKICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmVhdHVyZSwga0NURm9u
dEZlYXR1cmVUeXBlSWRlbnRpZmllcktleSkgJiYgQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmVh
dHVyZSwga0NURm9udEZlYXR1cmVTZWxlY3RvcklkZW50aWZpZXJLZXkpOwogfQogCi1zdGF0aWMg
aW5saW5lIE9wdGlvbmFsPENGU3RyaW5nUmVmPiBvcGVuVHlwZUZlYXR1cmUoQ0ZEaWN0aW9uYXJ5
UmVmIGZlYXR1cmUpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q0ZTdHJpbmdSZWY+IG9w
ZW5UeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKIHsKICAgICBBU1NFUlQoaXNP
cGVuVHlwZUZlYXR1cmUoZmVhdHVyZSkpOwogICAgIENGU3RyaW5nUmVmIHRhZyA9IHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShmZWF0dXJlLCBrQ1RGb250T3Bl
blR5cGVGZWF0dXJlVGFnKSk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIGlubGluZSBPcHRp
b25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJl
KQogICAgIENGTnVtYmVyUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKGZlYXR1cmUsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSkpOwog
ICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFsdWUodmFsdWUsIGtDRk51bWJlckludFR5
cGUsICZyYXdWYWx1ZSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLSAg
ICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25hbDxDRlN0cmluZ1JlZj4odGFnKSA6IE51bGxvcHQ7
CisgICAgcmV0dXJuIHJhd1ZhbHVlID8gc3RkOjpvcHRpb25hbDxDRlN0cmluZ1JlZj4odGFnKSA6
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8aW50LCBpbnQ+IHRy
dWVUeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKQEAgLTU5MiwxMSArNTkyLDEx
IEBAIEZsb2F0UmVjdCBGb250OjpwbGF0Zm9ybUJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBj
b25zdAogfQogCiAjaWYgISgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKSkKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q0dT
aXplPiBhZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSwgR2x5cGggZ2x5cGgpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q0dT
aXplPiBhZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSwgR2x5cGggZ2x5cGgpCiB7CiAgICAgQ1RGb250UmVmIGZvbnQgPSBwbGF0Zm9y
bURhdGEuZm9udCgpOwogICAgIGlmICghZm9udCB8fCAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRt
YXBGb250KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIENHU2l6ZSBhZHZhbmNlOwogICAgIENURm9udEdldEFkdmFuY2VzRm9yR2x5
cGhzKGZvbnQsIGtDVEZvbnRPcmllbnRhdGlvbkRlZmF1bHQsICZnbHlwaCwgJmFkdmFuY2UsIDEp
OwogICAgIHJldHVybiBhZHZhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CmluZGV4IDRhZjE4MjY1ZTQ4YWQ3MTAyZDNmNTVjZGVkMjAwN2I5NTE2MWY3NjUuLjBmY2ExMjNk
YTBhYTVjNTAxZjIzZjA5NTU4NDlkZDNlZmNlNzQzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIERyYXdHbHlwaHM6OmNvbXB1
dGVCb3VuZHMoKQogICAgIH0KIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3R2x5cGhzOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IERyYXdHbHlwaHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gbV9ib3VuZHM7CiAgICAgbG9j
YWxCb3VuZHMubW92ZShtX2Jsb2NrTG9jYXRpb24ueCgpLCBtX2Jsb2NrTG9jYXRpb24ueSgpKTsK
QEAgLTU3NSw3ICs1NzUsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd1JlY3QmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRp
b25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lOjpsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIEZsb2F0UmVjdCBib3VuZHM7
CiAgICAgYm91bmRzLmZpdFRvUG9pbnRzKG1fcG9pbnQxLCBtX3BvaW50Mik7CkBAIC02MDAsNyAr
NjAwLDcgQEAgdm9pZCBEcmF3TGluZXNGb3JUZXh0OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5kcmF3TGluZXNGb3JUZXh0KHBvaW50KCksIG1fd2lk
dGhzLCBtX3ByaW50aW5nLCBtX2RvdWJsZUxpbmVzKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0
PiBEcmF3TGluZXNGb3JUZXh0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lc0ZvclRleHQ6OmxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlv
biBuZWVkcyB0byByZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBvciBlbmNsb3Npbmcgd2hhdCBHcmFw
aGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQo
KSByZXR1cm5zLgogCkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBEcmF3TGluZUZvckRvY3VtZW50
TWFya2VyOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4
dC5kcmF3TGluZUZvckRvY3VtZW50TWFya2VyKG1fcG9pbnQsIG1fd2lkdGgsIG1fc3R5bGUpOwog
fQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXI6OmxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcjo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVy
biBhIHZhbHVlIGVxdWFsIHRvIG9yIGVuY2xvc2luZyB3aGF0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0xpbmVGb3JEb2N1bWVudE1hcmtlcigpIHJldHVybnMuCiAKQEAgLTY3OSw3ICs2NzksNyBAQCB2
b2lkIERyYXdGb2N1c1JpbmdQYXRoOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiAgICAgY29udGV4dC5kcmF3Rm9jdXNSaW5nKG1fcGF0aCwgbV93aWR0aCwgbV9vZmZzZXQs
IG1fY29sb3IpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdGb2N1c1JpbmdQYXRoOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IERyYXdGb2N1c1JpbmdQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdAogewogICAgIEZsb2F0UmVjdCByZXN1bHQgPSBtX3BhdGguZmFzdEJvdW5k
aW5nUmVjdCgpOwogICAgIHJlc3VsdC5pbmZsYXRlKHBsYXRmb3JtRm9jdXNSaW5nV2lkdGgpOwpA
QCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1JlY3RzOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5kcmF3Rm9jdXNSaW5nKG1fcmVj
dHMsIG1fd2lkdGgsIG1fb2Zmc2V0LCBtX2NvbG9yKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0
PiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3VzUmluZ1JlY3RzOjpsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIEZsb2F0UmVjdCBy
ZXN1bHQ7CiAgICAgZm9yIChhdXRvJiByZWN0IDogbV9yZWN0cykKQEAgLTgyNSw3ICs4MjUsNyBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmls
bEVsbGlwc2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+
IFN0cm9rZVJlY3Q6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlUmVjdDo6bG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgYm91bmRzID0gbV9yZWN0Owog
ICAgIGJvdW5kcy5leHBhbmQobV9saW5lV2lkdGgsIG1fbGluZVdpZHRoKTsKQEAgLTg0NSw3ICs4
NDUsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU3Ryb2tlUmVjdCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLU9wdGlvbmFsPEZsb2F0
UmVjdD4gU3Ryb2tlUGF0aDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZVBhdGg6OmxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICAvLyBGSVhN
RTogTmVlZCB0byB0YWtlIHN0cm9rZSB0aGlja25lc3MgaW50byBhY2NvdW50IGNvcnJlY3RseSwg
dmlhIENHUGF0aEJ5U3Ryb2tpbmdQYXRoKCkuCiAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0g
Y29udGV4dC5zdHJva2VUaGlja25lc3MoKTsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3Ryb2tlUGF0aCYgaXRl
bSkKICAgICByZXR1cm4gdHM7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlRWxsaXBz
ZTo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZUVsbGlwc2U6OmxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBmbG9hdCBzdHJva2VUaGlja25l
c3MgPSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAppbmRleCBhNzFlMzE0OWI4ODM2NGNiMDlkY2NjYzNjY2RhODNmYjA1YzhkZGZjLi5h
NzBmZDZkMWU0MWRjMDdlYTIwNDJiMTBiNTMxZjgzYjkyYTE5ZDQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE3MiwxMiArMTcyLDEyIEBAIGNsYXNzIERyYXdpbmdJdGVt
IDogcHVibGljIEl0ZW0gewogCiAgICAgLy8gUmV0dXJuIGJvdW5kcyBvZiB0aGlzIGRyYXdpbmcg
b3BlcmF0aW9uIGluIGxvY2FsIGNvb3JkaW5hdGVzLgogICAgIC8vIERvZXMgbm90IGluY2x1ZGUg
ZWZmZXRzIG9mIHRyYW5zZm9ybSwgc2hhZG93IGV0YyBpbiB0aGUgc3RhdGUuCi0gICAgdmlydHVh
bCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNEcmF3aW5n
SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bV9leHRlbnQ7IC8vIEluIGJhc2UgY29vcmRpbmF0ZXMsIHRha2luZyBzaGFkb3dzIGFuZCB0cmFu
c2Zvcm1zIGludG8gYWNjb3VudC4KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9leHRl
bnQ7IC8vIEluIGJhc2UgY29vcmRpbmF0ZXMsIHRha2luZyBzaGFkb3dzIGFuZCB0cmFuc2Zvcm1z
IGludG8gYWNjb3VudC4KIH07CiAKIGNsYXNzIFNhdmUgOiBwdWJsaWMgSXRlbSB7CkBAIC01NDMs
NyArNTQzLDcgQEAgY2xhc3MgRHJhd0dseXBocyA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBHbHlwaEJ1ZmZlciBn
ZW5lcmF0ZUdseXBoQnVmZmVyKCkgY29uc3Q7CiAKQEAgLTU3Miw3ICs1NzIsNyBAQCBjbGFzcyBE
cmF3SW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uOyB9CiAKICAgICBtdXRhYmxlIFJlZjxJbWFnZT4gbV9pbWFnZTsgLy8gRklYTUU6IERy
YXdpbmcgaW1hZ2VzIGNhbiBjYXVzZSB0aGVpciBhbmltYXRpb25zIHRvIHByb2dyZXNzLiBUaGlz
IHNob3VsZG4ndCBoYXZlIHRvIGJlIG11dGFibGUuCiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRp
b247CkBAIC01OTksNyArNTk5LDcgQEAgY2xhc3MgRHJhd1RpbGVkSW1hZ2UgOiBwdWJsaWMgRHJh
d2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICAgICBtdXRh
YmxlIFJlZjxJbWFnZT4gbV9pbWFnZTsgLy8gRklYTUU6IERyYXdpbmcgaW1hZ2VzIGNhbiBjYXVz
ZSB0aGVpciBhbmltYXRpb25zIHRvIHByb2dyZXNzLiBUaGlzIHNob3VsZG4ndCBoYXZlIHRvIGJl
IG11dGFibGUuCiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247CkBAIC02MjUsNyArNjI1LDcg
QEAgY2xhc3MgRHJhd1RpbGVkU2NhbGVkSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICAgICBtdXRhYmxlIFJlZjxJbWFnZT4g
bV9pbWFnZTsgLy8gRklYTUU6IERyYXdpbmcgaW1hZ2VzIGNhbiBjYXVzZSB0aGVpciBhbmltYXRp
b25zIHRvIHByb2dyZXNzLiBUaGlzIHNob3VsZG4ndCBoYXZlIHRvIGJlIG11dGFibGUuCiAgICAg
RmxvYXRSZWN0IG1fZGVzdGluYXRpb247CkBAIC02NTIsNyArNjUyLDcgQEAgY2xhc3MgRHJhd05h
dGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZGVzdGluYXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0
aW5hdGlvbjsgfQogCiAjaWYgVVNFKENHKQogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2lt
YWdlOwpAQCAtNjg3LDcgKzY4Nyw3IEBAIGNsYXNzIERyYXdQYXR0ZXJuIDogcHVibGljIERyYXdp
bmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiAgICAgbXV0YWJs
ZSBSZWY8SW1hZ2U+IG1faW1hZ2U7IC8vIEZJWE1FOiBEcmF3aW5nIGltYWdlcyBjYW4gY2F1c2Ug
dGhlaXIgYW5pbWF0aW9ucyB0byBwcm9ncmVzcy4gVGhpcyBzaG91bGRuJ3QgaGF2ZSB0byBiZSBt
dXRhYmxlLgogICAgIEFmZmluZVRyYW5zZm9ybSBtX3BhdHRlcm5UcmFuc2Zvcm07CkBAIC03NTYs
NyArNzU2LDcgQEAgY2xhc3MgRHJhd1JlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0K
IAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIGZsb2F0IG1f
Ym9yZGVyVGhpY2tuZXNzOwpAQCAtNzgxLDcgKzc4MSw3IEBAIGNsYXNzIERyYXdMaW5lIDogcHVi
bGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBtX3BvaW50MTsKICAgICBGbG9hdFBvaW50IG1fcG9p
bnQyOwpAQCAtODE2LDcgKzgxNiw3IEBAIGNsYXNzIERyYXdMaW5lc0ZvclRleHQgOiBwdWJsaWMg
RHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgRmxvYXRQb2ludCBtX2Jsb2NrTG9jYXRpb247CiAgICAgRmxvYXRTaXplIG1fbG9jYWxB
bmNob3I7CkBAIC04NDcsNyArODQ3LDcgQEAgY2xhc3MgRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtl
ciA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBGbG9hdFBvaW50IG1fcG9pbnQ7CiAgICAgZmxvYXQgbV93aWR0aDsK
QEAgLTg3MSw3ICs4NzEsNyBAQCBjbGFzcyBEcmF3RWxsaXBzZSA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiB9
OwpAQCAtODk0LDcgKzg5NCw3IEBAIGNsYXNzIERyYXdQYXRoIDogcHVibGljIERyYXdpbmdJdGVt
IHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXRoLmZhc3RCb3VuZGluZ1JlY3Qo
KTsgfQogCiAgICAgY29uc3QgUGF0aCBtX3BhdGg7CiB9OwpAQCAtOTIzLDcgKzkyMyw3IEBAIGNs
YXNzIERyYXdGb2N1c1JpbmdQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0IFBhdGggbV9wYXRoOwog
ICAgIGludCBtX3dpZHRoOwpAQCAtOTU1LDcgKzk1NSw3IEBAIGNsYXNzIERyYXdGb2N1c1JpbmdS
ZWN0cyA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX3JlY3RzOwogICAgIGludCBt
X3dpZHRoOwpAQCAtOTgwLDcgKzk4MCw3IEBAIGNsYXNzIEZpbGxSZWN0IDogcHVibGljIERyYXdp
bmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVj
dDsKIH07CkBAIC0xMDA1LDcgKzEwMDUsNyBAQCBjbGFzcyBGaWxsUmVjdFdpdGhDb2xvciA6IHB1
YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIEZsb2F0
UmVjdCBtX3JlY3Q7CiAgICAgQ29sb3IgbV9jb2xvcjsKQEAgLTEwMjksNyArMTAyOSw3IEBAIGNs
YXNzIEZpbGxSZWN0V2l0aEdyYWRpZW50IDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKICAgICBtdXRhYmxlIFJl
ZjxHcmFkaWVudD4gbV9ncmFkaWVudDsgLy8gRklYTUU6IE1ha2UgdGhpcyBub3QgbXV0YWJsZQpA
QCAtMTA1OCw3ICsxMDU4LDcgQEAgY2xhc3MgRmlsbENvbXBvc2l0ZWRSZWN0IDogcHVibGljIERy
YXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1f
cmVjdDsKICAgICBDb2xvciBtX2NvbG9yOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgY2xhc3MgRmls
bFJvdW5kZWRSZWN0IDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZWN0LnJlY3QoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JlY3QucmVjdCgpOyB9CiAKICAgICBGbG9hdFJvdW5kZWRSZWN0IG1fcmVjdDsKICAgICBD
b2xvciBtX2NvbG9yOwpAQCAtMTExNSw3ICsxMTE1LDcgQEAgY2xhc3MgRmlsbFJlY3RXaXRoUm91
bmRlZEhvbGUgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9
CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9yb3VuZGVk
SG9sZVJlY3Q7CkBAIC0xMTM5LDcgKzExMzksNyBAQCBjbGFzcyBGaWxsUGF0aCA6IHB1YmxpYyBE
cmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91
bmRpbmdSZWN0KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXRoLmZh
c3RCb3VuZGluZ1JlY3QoKTsgfQogCiAgICAgY29uc3QgUGF0aCBtX3BhdGg7CiB9OwpAQCAtMTE2
Miw3ICsxMTYyLDcgQEAgY2xhc3MgRmlsbEVsbGlwc2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CkBAIC0xMTg2
LDcgKzExODYsNyBAQCBjbGFzcyBTdHJva2VSZWN0IDogcHVibGljIERyYXdpbmdJdGVtIHsKICAg
ICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRS
ZWN0IG1fcmVjdDsKICAgICBmbG9hdCBtX2xpbmVXaWR0aDsKQEAgLTEyMDksNyArMTIwOSw3IEBA
IGNsYXNzIFN0cm9rZVBhdGggOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBQYXRoIG1fcGF0aDsK
ICAgICBGbG9hdFBvaW50IG1fYmxvY2tMb2NhdGlvbjsKQEAgLTEyMzIsNyArMTIzMiw3IEBAIGNs
YXNzIFN0cm9rZUVsbGlwc2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0Owog
fTsKQEAgLTEyNTQsNyArMTI1NCw3IEBAIGNsYXNzIENsZWFyUmVjdCA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGM5YzNj
NGQ0OWQxNTQyMWUwYjU5OWZkNGZlOThiZGI2ZTRjYWNiNjEuLjZkNjg1MzM0NTBiOTA5MjEzM2Jm
NzA4NjJmM2VmNjJkYmVmMDMyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKQEAgLTM3NCw3ICszNzQsNyBAQCBJdGVtJiBSZWNvcmRlcjo6YXBwZW5kSXRlbShS
ZWY8SXRlbT4mJiBpdGVtKQogCiB2b2lkIFJlY29yZGVyOjp1cGRhdGVJdGVtRXh0ZW50KERyYXdp
bmdJdGVtJiBpdGVtKSBjb25zdAogewotICAgIGlmIChPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Qg
PSBpdGVtLmxvY2FsQm91bmRzKG1fZ3JhcGhpY3NDb250ZXh0KSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IHJlY3QgPSBpdGVtLmxvY2FsQm91bmRzKG1fZ3JhcGhpY3NDb250ZXh0
KSkKICAgICAgICAgaXRlbS5zZXRFeHRlbnQoZXh0ZW50RnJvbUxvY2FsQm91bmRzKHJlY3QudmFs
dWUoKSkpOwogfQogCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBSZWNvcmRlcjo6Q29udGV4dFN0
YXRlOjpyb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHJv
dGF0aW9uOwogICAgIHJvdGF0aW9uLnJvdGF0ZShhbmdsZUluRGVncmVlcyk7CiAKLSAgICBpZiAo
T3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gcm90YXRpb24uaW52ZXJzZSgpKQor
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHJvdGF0aW9u
LmludmVyc2UoKSkKICAgICAgICAgY2xpcEJvdW5kcyA9IGludmVyc2UudmFsdWUoKS5tYXBSZWN0
KGNsaXBCb3VuZHMpOwogfQogCkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBSZWNvcmRlcjo6Q29u
dGV4dFN0YXRlOjpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCiB7CiAg
ICAgY3RtICo9IG1hdHJpeDsKIAotICAgIGlmIChPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGlu
dmVyc2UgPSBtYXRyaXguaW52ZXJzZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPEFmZmluZVRy
YW5zZm9ybT4gaW52ZXJzZSA9IG1hdHJpeC5pbnZlcnNlKCkpCiAgICAgICAgIGNsaXBCb3VuZHMg
PSBpbnZlcnNlLnZhbHVlKCkubWFwUmVjdChjbGlwQm91bmRzKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHAK
aW5kZXggOGExYzllMjA5NzZlODZhYmQyMDVhMGRkNjc4Y2U0MTc1YzU2NzFjYS4uYTExMmRiNGRh
ODUzN2UwNDI0ZGE3NDIxYmY2ZGVjNWRhNGMyMjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCkBAIC00Nywx
MiArNDcsMTIgQEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2VQTkcoY2Fpcm9fc3VyZmFjZV90KiBp
bWFnZSwgVmVjdG9yPGNoYXI+KiBvdXRwdXQpCiAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vfd3Jp
dGVfdG9fcG5nX3N0cmVhbShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0KSA9PSBDQUlST19T
VEFUVVNfU1VDQ0VTUzsKIH0KIAotc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2VKUEVHKHVuc2lnbmVk
IGNoYXIqIGRhdGEsIEludFNpemUgc2l6ZSwgVmVjdG9yPGNoYXI+KiBvdXRwdXQsIE9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSkKK3N0YXRpYyBib29sIGVuY29kZUltYWdlSlBFRyh1bnNpZ25lZCBj
aGFyKiBkYXRhLCBJbnRTaXplIHNpemUsIFZlY3RvcjxjaGFyPiogb3V0cHV0LCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsgICAgCiAgICAgcmV0dXJuIGNvbXByZXNzUkdCQUJpZ0Vu
ZGlhblRvSlBFRyhkYXRhLCBzaXplLCAqb3V0cHV0LCBxdWFsaXR5KTsKIH0KIAotU3RyaW5nIElt
YWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5nIEltYWdlQnVmZmVy
Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHF1YWxpdHksIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oCmluZGV4IDI1YTVkYmIxMjYxODM0NzUzZDU0NzY4ODkwODQwNWJmZjcwMjA5OGMuLjNhZmZk
NDIxZTBlM2Q3MzE4N2YyZTM0MjdmYjZkNGYxM2ViNTg1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0ZXI+IHsKICAgICB2b2lkIHNl
dEZpbHRlclNjYWxlKGZsb2F0IHNjYWxlKSB7IG1fZmlsdGVyU2NhbGUgPSBzY2FsZTsgfQogCiAg
ICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0KLSAgICBGbG9hdFBvaW50IG1hcEFic29sdXRlUG9p
bnRUb0xvY2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0dXJuIG1f
YWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KHBvaW50KTsgfQorICAgIEZsb2F0UG9pbnQgbWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQ
b2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBv
aW50KTsgfQogCiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNb2RlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VC
dWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdl
QnVmZmVyR3RrLmNwcAppbmRleCAzYmZhMjYwZGVhYjI2NTQ5ZGFkYWU2MzVlMWE4NTY0NzNjODRj
MDU2Li5iMmZlMmE5MDkyOTg1YjJlYTI0MzM1NTdkZjNhY2EwYWZhMmNmM2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0
ay5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
Ym9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4m
IGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCitzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LCBHVW5pcXVlT3V0UHRyPGdjaGFyPiYgYnVmZmVyLCBnc2l6ZSYg
YnVmZmVyU2l6ZSkKIHsKICAgICAvLyBMaXN0IG9mIHN1cHBvcnRlZCBpbWFnZSBlbmNvZGluZyB0
eXBlcyBjb21lcyBmcm9tIHRoZSBHZGtQaXhidWYgZG9jdW1lbnRhdGlvbi4KICAgICAvLyBodHRw
Oi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nZGstcGl4YnVmL3N0YWJsZS9nZGstcGl4YnVmLUZpbGUt
c2F2aW5nLmh0bWwjZ2RrLXBpeGJ1Zi1zYXZlLXRvLWJ1ZmZlcnYKQEAgLTc1LDcgKzc1LDcgQEAg
c3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBPcHRpb24KICAgICByZXR1cm4gIWVycm9yOwogfQogCi1TdHJpbmcg
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZm
ZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovSGFyZkJ1enpTaGFwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwCmluZGV4IDU1ZDU5ZTI2OTNkYmY0NDQ4M2QxMTIz
OTJiYWU4MGUxMTBjYTZlM2QuLjEyMzM4YTc3YmJiZDhjYzllYjNlMGY4MDcyZWU0MTA2ZGU3MzUy
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L0hhcmZCdXp6U2hhcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAKQEAgLTY0Nyw4ICs2NDcsOCBAQCBGbG9hdFJl
Y3QgSGFyZkJ1enpTaGFwZXI6OnNlbGVjdGlvblJlY3QoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBoZWlnaHQsIHVucwogICAgIGJvb2wgZm91bmRGcm9tWCA9IGZhbHNlOwogICAgIGJvb2wg
Zm91bmRUb1ggPSBmYWxzZTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tSW5kZXggPSBm
cm9tOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0b0luZGV4ID0gdG87CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gZnJvbUluZGV4ID0gZnJvbTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB0b0luZGV4ID0gdG87CiAKICAgICBpZiAobV9ydW4ucnRsKCkpCiAgICAgICAgIGN1cnJl
bnRYID0gbV90b3RhbFdpZHRoOwpAQCAtNjYzLDcgKzY2Myw3IEBAIEZsb2F0UmVjdCBIYXJmQnV6
elNoYXBlcjo6c2VsZWN0aW9uUmVjdChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGhlaWdo
dCwgdW5zCiAgICAgICAgICAgICBpZiAoZnJvbUluZGV4ICYmIGZyb21JbmRleC52YWx1ZSgpID49
IG51bUNoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAgZnJvbUluZGV4LnZhbHVlKCkgLT0gbnVt
Q2hhcmFjdGVyczsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcm9tSW5kZXgg
PSBOdWxsb3B0OworICAgICAgICAgICAgICAgIGZyb21JbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghZm91bmRUb1ggJiYgdG9JbmRleC52YWx1ZSgpIDwgbnVt
Q2hhcmFjdGVycykgewpAQCAtNjczLDcgKzY3Myw3IEBAIEZsb2F0UmVjdCBIYXJmQnV6elNoYXBl
cjo6c2VsZWN0aW9uUmVjdChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGhlaWdodCwgdW5z
CiAgICAgICAgICAgICBpZiAodG9JbmRleCAmJiB0b0luZGV4LnZhbHVlKCkgPj0gbnVtQ2hhcmFj
dGVycykKICAgICAgICAgICAgICAgICB0b0luZGV4LnZhbHVlKCkgLT0gbnVtQ2hhcmFjdGVyczsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0b0luZGV4ID0gTnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICB0b0luZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKGZvdW5kRnJvbVggJiYgZm91bmRUb1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CmluZGV4IGI5NDExYjQyYjUyN2RkNDQ3MzI1NmRhNDg4YzMzZGJlZDMzMGE2NDUuLjhkZmFmN2Iy
YTk5MmZlNTMxZmM5OTRkNjNhMTg5ZmJkNjQzZTEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCkBAIC0yNzYsMTkgKzI3NiwxOSBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQnlDb21iaW5p
bmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciomIGl0ZXJhdG9yLCBjb25zdCBVQwogfQog
CiAvLyBGSVhNRTogQ2FwaXRhbGl6YXRpb24gaXMgbGFuZ3VhZ2UtZGVwZW5kZW50IGFuZCBjb250
ZXh0LWRlcGVuZGVudCBhbmQgc2hvdWxkIG9wZXJhdGUgb24gZ3JhcGhlbWUgY2x1c3RlcnMgaW5z
dGVhZCBvZiBjb2RlcG9pbnRzLgotc3RhdGljIGlubGluZSBPcHRpb25hbDxVQ2hhcjMyPiBjYXBp
dGFsaXplZChVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIpCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9u
YWw8VUNoYXIzMj4gY2FwaXRhbGl6ZWQoVUNoYXIzMiBiYXNlQ2hhcmFjdGVyKQogewogICAgIGlm
IChVX0dFVF9HQ19NQVNLKGJhc2VDaGFyYWN0ZXIpICYgVV9HQ19NX01BU0spCi0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVUNoYXIz
MiB1cHBlcmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3Rlcik7CiAgICAgQVNT
RVJUKHVwcGVyY2FzZUNoYXJhY3RlciA9PSBiYXNlQ2hhcmFjdGVyIHx8IChVX0lTX0JNUChiYXNl
Q2hhcmFjdGVyKSA9PSBVX0lTX0JNUCh1cHBlcmNhc2VDaGFyYWN0ZXIpKSk7CiAgICAgaWYgKHVw
cGVyY2FzZUNoYXJhY3RlciAhPSBiYXNlQ2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gdXBwZXJj
YXNlQ2hhcmFjdGVyOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFN5bnRoZXNpemUoY29uc3QgRm9udCogbmV4dEZv
bnQsIFVDaGFyMzIgYmFzZUNoYXJhY3RlciwgT3B0aW9uYWw8VUNoYXIzMj4gY2FwaXRhbGl6ZWRC
YXNlLCBGb250VmFyaWFudENhcHMgZm9udFZhcmlhbnRDYXBzLCBib29sIGVuZ2FnZUFsbFNtYWxs
Q2Fwc1Byb2Nlc3NpbmcpCitzdGF0aWMgYm9vbCBzaG91bGRTeW50aGVzaXplKGNvbnN0IEZvbnQq
IG5leHRGb250LCBVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIsIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4g
Y2FwaXRhbGl6ZWRCYXNlLCBGb250VmFyaWFudENhcHMgZm9udFZhcmlhbnRDYXBzLCBib29sIGVu
Z2FnZUFsbFNtYWxsQ2Fwc1Byb2Nlc3NpbmcpCiB7CiAgICAgaWYgKCFuZXh0Rm9udCB8fCBuZXh0
Rm9udCA9PSBGb250OjpzeXN0ZW1GYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDg5NWQzN2YzOWNmMDU3MmY1ZDQ5NmUwZWI2
MGFiYjFmMjkwNmZhNWMuLjQ5MTBjZjBhYzdlMmQ4NzYwMDE5OGI4NDk1ZTU4ZDczZjhhMTUyYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuV2l0aFJlcGxpY2EoY29uc3Qg
VGV4dHVyZU1hcHBlclBhaW4KICAgICAgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyByZXBs
aWNhT3B0aW9ucyhvcHRpb25zKTsKICAgICAgICAgcmVwbGljYU9wdGlvbnMudHJhbnNmb3JtCiAg
ICAgICAgICAgICAubXVsdGlwbHkobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5z
Zm9ybS5jb21iaW5lZCgpKQotICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9y
bS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsK
KyAgICAgICAgICAgIC5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZl
cnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgICAgICBwYWludFNl
bGZBbmRDaGlsZHJlbihyZXBsaWNhT3B0aW9ucyk7CiAgICAgfQogCkBAIC0yMzAsNyArMjMwLDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldEFuaW1hdGVkT3BhY2l0eShmbG9hdCBvcGFj
aXR5KQogCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FU
cmFuc2Zvcm0oKQogewotICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3N0YXRlLnJl
cGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpLm11bHRpcGx5KG1fY3Vy
cmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0ZS5yZXBs
aWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKS5tdWx0aXBseShtX2N1cnJl
bnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRGaWx0
ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCkBAIC03MzEsNyArNzMxLDcgQEAg
VGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZpbmRTY3JvbGxhYmxlQ29u
dGVudHNMYXllckF0KGNvbnN0IEZsb2EKIEZsb2F0U2l6ZSBUZXh0dXJlTWFwcGVyTGF5ZXI6Om1h
cFNjcm9sbE9mZnNldChjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKIHsKICAgICBkb3VibGUgemVy
b1gsIHplcm9ZLCBvZmZzZXRYLCBvZmZzZXRZOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybSA9IG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZU9y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5z
Zm9ybSA9IG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKICAgICB0cmFuc2Zvcm0ubWFwKDAsIDAsIHplcm9YLCB6
ZXJvWSk7CiAgICAgdHJhbnNmb3JtLm1hcChvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgp
LCBvZmZzZXRYLCBvZmZzZXRZKTsKICAgICByZXR1cm4gRmxvYXRTaXplKG9mZnNldFggLSB6ZXJv
WCwgb2Zmc2V0WSAtIHplcm9ZKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNzQ4YWQ4ZTllMzgwYTNlZTcyYTZhMDIx
NTgyNGVmOGQ0MTdlYzMxMC4uNDYyYjYyZWQ0Nzc3YmY2MzU3ZDU0NDM0YTgxZWU1ZmZhODMyOWFh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTk0Nyw3ICs5NDcsNyBAQCBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgLy8gUmV0dXJuIGEgcHJvamVj
dGlvbiBvZiB0aGUgdmlzaWJsZSByZWN0IChzdXJmYWNlIGNvb3JkaW5hdGVzKSBvbnRvIHRoZSBs
YXllcidzIHBsYW5lIChsYXllciBjb29yZGluYXRlcykuCiAgICAgLy8gVGhlIHJlc3VsdGluZyBx
dWFkIG1pZ2h0IGJlIHNxdWV3ZWQgYW5kIHRoZSB2aXNpYmxlIHJlY3QgaXMgdGhlIGJvdW5kaW5n
IGJveCBvZiB0aGlzIHF1YWQsCiAgICAgLy8gc28gaXQgbWlnaHQgc3ByZWFkIGZ1cnRoZXIgdGhh
biB0aGUgcmVhbCB2aXNpYmxlIGFyZWEgKGFuZCB0aGVuIGV2ZW4gbW9yZSBhbXBsaWZpZWQgYnkg
dGhlIGNvdmVyIHJlY3QgbXVsdGlwbGllcikuCi0gICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRy
YW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3Io
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgIEFTU0VSVChtX2NhY2hlZEludmVyc2VUcmFu
c2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAgICAgRmxvYXRSZWN0IHJlY3QgPSBtX2NhY2hlZElu
dmVyc2VUcmFuc2Zvcm0uY2xhbXBlZEJvdW5kc09mUHJvamVjdGVkUXVhZChGbG9hdFF1YWQobV9j
b29yZGluYXRvci0+dmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CiAgICAgY2xhbXBUb0NvbnRlbnRz
UmVjdElmUmVjdElzSW5maW5pdGUocmVjdCwgc2l6ZSgpKTsKICAgICByZXR1cm4gZW5jbG9zaW5n
SW50UmVjdChyZWN0KTsKQEAgLTExMzksNyArMTEzOSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgbV9sYXllclRy
YW5zZm9ybS5zZXRDaGlsZHJlblRyYW5zZm9ybShjaGlsZHJlblRyYW5zZm9ybSgpKTsKICAgICBt
X2xheWVyVHJhbnNmb3JtLmNvbWJpbmVUcmFuc2Zvcm1zKHBhcmVudCgpID8gZG93bmNhc3Q8Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyPigqcGFyZW50KCkpLm1fbGF5ZXJUcmFuc2Zvcm0uY29tYmlu
ZWRGb3JDaGlsZHJlbigpIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKLSAgICBtX2NhY2hl
ZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgp
LnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgbV9jYWNoZWRJbnZlcnNlVHJh
bnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKIAogICAgIC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zvcm0g
d2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QuCiAgICAgc2V0TmVl
ZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcApp
bmRleCBjMTc2ZjBkMWFiNjc4NmEyYzEyMjZiMzQzNWI5YjA5ZDkwMzY1MGFiLi44ZWJkZDk4ZjE4
MTAyNzJhNjliZjgwM2U3Y2NhYTQ1M2MyYTA3MmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zv
cm0uY3BwCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBib29sIEFmZmluZVRyYW5zZm9ybTo6aXNJbnZl
cnRpYmxlKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjppc2Zpbml0ZShkZXRlcm1pbmFudCkgJiYg
ZGV0ZXJtaW5hbnQgIT0gMDsKIH0KIAotT3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBBZmZpbmVU
cmFuc2Zvcm06OmludmVyc2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+
IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgZG91YmxlIGRldGVybWlu
YW50ID0gZGV0KG1fdHJhbnNmb3JtKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGV0ZXJtaW5h
bnQpIHx8IGRldGVybWluYW50ID09IDApCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHJlc3VsdDsKICAg
ICBpZiAoaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3Jt
LmgKaW5kZXggODJkM2Q2YTRiMDYzYWJmZTExNzBlYTk1Yzc5ZGJjY2MzYWQ4N2FjMi4uYTBiMWY3
YmQzZmU3ZThiOTU0MTEwZTRlYzEzZWI4YTY0OGM5NjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5z
Zm9ybS5oCkBAIC0xMjgsNyArMTI4LDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtIHsKICAgICBX
RUJDT1JFX0VYUE9SVCBkb3VibGUgeVNjYWxlKCkgY29uc3Q7CiAKICAgICBib29sIGlzSW52ZXJ0
aWJsZSgpIGNvbnN0OyAvLyBJZiB5b3UgY2FsbCB0aGlzIHRoaXMsIHlvdSdyZSBwcm9iYWJseSBk
b2luZyBpdCB3cm9uZy4KLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxBZmZpbmVUcmFuc2Zv
cm0+IGludmVyc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFm
ZmluZVRyYW5zZm9ybT4gaW52ZXJzZSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBibGVuZChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZyb20sIGRvdWJsZSBwcm9ncmVzcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggZTc2M2NjMTM5M2RiY2RlNjExMzIxMThm
ZmI0MzE5MWM2NDhlNDVlNC4uNWVmMGU1YmY0MGI5ZGViNGU3OGNlNzQzOTE3YTgyMjEwODMxZWU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBGbG9h
dFBvaW50IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRQb2ludChib29sKiB3YXNDbGFtcGVkKSBjb25z
dAogICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVjdGlvbikKICAgICAg
ICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm1hcFBvaW50KHBvaW50KTsKIAotICAg
IHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOworICAgIHJl
dHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFtcGVkKTsKIH0KIAogRmxv
YXRRdWFkIFRyYW5zZm9ybVN0YXRlOjptYXBwZWRRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0
CkBAIC0xODMsMTMgKzE4MywxMyBAQCBGbG9hdFF1YWQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFF1
YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICByZXR1cm4gcXVhZDsKIH0KIAotT3B0aW9u
YWw8RmxvYXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3
YXNDbGFtcGVkKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IFRyYW5zZm9ybVN0YXRl
OjptYXBwZWRTZWNvbmRhcnlRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiB7CiAgICAgaWYg
KHdhc0NsYW1wZWQpCiAgICAgICAgICp3YXNDbGFtcGVkID0gZmFsc2U7CiAKICAgICBpZiAoIW1f
bGFzdFBsYW5hclNlY29uZGFyeVF1YWQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxGbG9hdFF1
YWQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4oKTsKIAogICAg
IEZsb2F0UXVhZCBxdWFkID0gKm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQ7CiAgICAgbWFwUXVh
ZChxdWFkLCBtX2RpcmVjdGlvbiwgd2FzQ2xhbXBlZCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9p
ZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVj
dGlvbiBkaXJlY3Rpb24sIGJvb2wKICAgICBpZiAoZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3Jt
RGlyZWN0aW9uKQogICAgICAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bWFwUXVh
ZChxdWFkKTsKIAotICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCku
dmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVhZChxdWFkLCB3YXNDbGFt
cGVkKTsKKyAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVl
X29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQp
OwogfQogCiB2b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwgYm9vbCogd2FzQ2xhbXBlZCkKQEAgLTIzMyw3ICsyMzMs
NyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdCwgYm9vbCogdwogICAgICAgICB9CiAKICAgICB9IGVsc2Ugewot
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNl
KCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOwogICAgICAgICBpZiAobV9tYXBQb2ludCkKICAgICAgICAgICAgIG1f
bGFzdFBsYW5hclBvaW50ID0gaW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0UG9pbnQobV9sYXN0UGxh
bmFyUG9pbnQpOwogICAgICAgICBpZiAobV9tYXBRdWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRl
LmgKaW5kZXggNzI4Nzg2MjQ0ZDgzMzU3NDdmZmIzNjYxODE2Mzc3MDc0MTUyMDI0Yi4uY2Q5NTVh
YmY0YWIyZjIxNmY5YjUxMDVmNGJhNWE5OTRkY2IxNjY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3Rh
dGUuaApAQCAtODAsNyArODAsNyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAgICAgIG1f
bGFzdFBsYW5hclF1YWQgPSBxdWFkOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiB3ZWJraXQub3Jn
L2IvMTQ0MjI2IHVzZSBPcHRpb25hbDxGbG9hdFF1YWQ+LiAKKyAgICAvLyBGSVhNRTogd2Via2l0
Lm9yZy9iLzE0NDIyNiB1c2Ugc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+LiAKICAgICB2b2lkIHNl
dFNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFkKiBxdWFkKQogICAgIHsKICAgICAgICAgLy8g
V2UgbXVzdCBiZSBpbiBhIGZsYXR0ZW5lZCBzdGF0ZSAobm8gYWNjdW11bGF0ZWQgb2Zmc2V0KSB3
aGVuIHNldHRpbmcgdGhpcyBzZWNvbmRhcnkgcXVhZC4KQEAgLTkxLDcgKzkxLDcgQEAgY2xhc3Mg
VHJhbnNmb3JtU3RhdGUgewogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9
IG51bGxwdHI7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHdlYmtpdC5vcmcvYi8xNDQyMjYgdXNl
IE9wdGlvbmFsPEZsb2F0UXVhZD4uCisgICAgLy8gRklYTUU6IHdlYmtpdC5vcmcvYi8xNDQyMjYg
dXNlIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPi4KICAgICB2b2lkIHNldExhc3RQbGFuYXJTZWNv
bmRhcnlRdWFkKGNvbnN0IEZsb2F0UXVhZCopOwogCiAgICAgdm9pZCBtb3ZlKExheW91dFVuaXQg
eCwgTGF5b3V0VW5pdCB5LCBUcmFuc2Zvcm1BY2N1bXVsYXRpb24gYWNjdW11bGF0ZSA9IEZsYXR0
ZW5UcmFuc2Zvcm0pCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgVHJhbnNmb3JtU3RhdGUgewog
ICAgIC8vIFJldHVybiB0aGUgcG9pbnQgb3IgcXVhZCBtYXBwZWQgdGhyb3VnaCB0aGUgY3VycmVu
dCB0cmFuc2Zvcm0KICAgICBGbG9hdFBvaW50IG1hcHBlZFBvaW50KGJvb2wqIHdhc0NsYW1wZWQg
PSBudWxscHRyKSBjb25zdDsKICAgICBGbG9hdFF1YWQgbWFwcGVkUXVhZChib29sKiB3YXNDbGFt
cGVkID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8RmxvYXRRdWFkPiBtYXBwZWRTZWNv
bmRhcnlRdWFkKGJvb2wqIHdhc0NsYW1wZWQgPSBudWxscHRyKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UXVhZD4gbWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkID0g
bnVsbHB0cikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0cmFuc2xhdGVUcmFuc2Zvcm0o
Y29uc3QgTGF5b3V0U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cAppbmRleCA0ZDFmMGJmZjg4MzlhNjAzOWMxNDNkYjUyYjlkNGYwMDIzMDhkZGVlLi4yNDI3YjAx
YzE3YWNkZmE4OGUxNzkyMDE4NzRmNTkxN2I1ODllNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgYm9vbCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6aXNJbnZlcnRpYmxlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
T3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZl
cnNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5zZm9y
bWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBpZiAoaXNJZGVudGl0eU9yVHJh
bnNsYXRpb24oKSkgewogICAgICAgICAvLyBpZGVudGl0eSBtYXRyaXgKQEAgLTE0NjMsNyArMTQ2
Myw3IEBAIE9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6aW52ZXJzZSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFVzZSBMVSBkZWNvbXBvc2l0aW9uIHRv
IGFwcGx5IHRoZSBpbnZlcnNlIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgZXhw
bGljaXRseS4KICAgICAvLyBDYWxjdWxhdGluZyB0aGUgaW52ZXJzZSBvZiBhIDR4NCBtYXRyaXgg
dXNpbmcgY29mYWN0b3JzIGlzIG51bWVyaWNhbGx5IHVuc3RhYmxlIGFuZCB1bm5lY2Vzc2FyeSB0
byBhcHBseSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHBvaW50LgogICAgIGlmICgh
V2ViQ29yZTo6aW52ZXJzZShtX21hdHJpeCwgaW52TWF0Lm1fbWF0cml4KSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
aW52TWF0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDA2NTQ3
ZDRjODEzNDZlMDFlY2YwZDU5NTdlNTBhNGEzNDI2YjFmOTUuLjVkYjBjMDAyYTJkOGZiNGVlYTBm
Y2NmODRkZTBlNTNmMzE5NDY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmgKQEAgLTI1OCw3ICsyNTgsNyBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlY3RUb1JlY3QoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBib29sIGlzSW52ZXJ0aWJs
ZSgpIGNvbnN0OyAvLyBJZiB5b3UgY2FsbCB0aGlzIHRoaXMsIHlvdSdyZSBwcm9iYWJseSBkb2lu
ZyBpdCB3cm9uZy4KLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4gaW52ZXJzZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2UoKSBjb25zdDsKIAogICAgIC8vIERlY29tcG9z
ZSB0aGUgbWF0cml4IGludG8gaXRzIGNvbXBvbmVudCBwYXJ0cy4KICAgICBzdHJ1Y3QgRGVjb21w
b3NlZDJUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAppbmRleCA3MTBhMGJiZjRkOWIzYjM1
ZjZmMDBhYmIyNTEwMWZjYzZlMjMzODNiLi45Y2ExNTNiNTAwODlkYWNiMjkyOTdkZjE4OWIyOTdj
NTQwMGZiOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAg
dm9pZCBJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4
Q2xhbXBlZEFycmF5KiBzb3VyY2UsIGMKICAgICBtX2RhdGEucHV0RGF0YShzb3VyY2UsIHNjYWxl
ZFNvdXJjZVNpemUsIHNjYWxlZFNvdXJjZVJlY3QsIGRlc3RQb2ludCwgaW50ZXJuYWxTaXplKCks
IGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlw
bGllZCwgMSk7CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYsIE9wdGlvbmFsPGRvdWJsZT4sIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1h
Z2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4s
IENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJkYXRhOiwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmlu
ZGV4IGIwNzFkMzFmZDM1Mjg3OTU2NWY1MmRlYjNlNDA0YzQ4OTBjZjk4ODQuLmFkMDliMGM3YTli
MWFhZGI4NTlhZDAzMzBkYzVjMzM0OTlkNGRlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNw
cApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlcGV0aXRpb25Db3VudCBJbWFnZURlY29kZXI6OnJlcGV0
aXRpb25Db3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIFJlcGV0aXRpb25Db3VudE5vbmU7CiB9CiAK
LU9wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAorc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gSW50UG9pbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggZTUzODI2NzA4
NDQ2ZTBkMjllMDBkZTk5MGJlYmViY2FjODdjYmEyZS4uYWNiMzJhOWY1ODE3YTE2MzE1ZDU5ZjRi
N2FmOGRjZjZjN2I5M2UzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTU2LDcgKzU2LDcg
QEAgY2xhc3MgSW1hZ2VEZWNvZGVyIHsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0Owog
CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwotICAgIE9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2lu
dD4gaG90U3BvdCgpIGNvbnN0OwogICAgIAogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25z
dDsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3Bs
YXlYMTEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3Jt
RGlzcGxheVgxMS5jcHAKaW5kZXggMWNhM2ZhMWQwMzQ4NmUyN2UyNzhiYmI1ZWE5M2Y3YmZlYzY2
OTcwMS4uNmRhMDYyZjQwZDYwMTczYWRlNThiMTcxNDEyZTM1MDQwMWU0MmIzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgx
MS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3Jt
RGlzcGxheVgxMS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6
OnN1cHBvcnRzWENvbXBvc2l0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VwcG9ydHNYQ29tcG9z
aXRlLnZhbHVlKCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1EaXNwbGF5WDExOjpzdXBwb3J0c1hEYW1h
Z2UoT3B0aW9uYWw8aW50PiYgZGFtYWdlRXZlbnRCYXNlKSBjb25zdAorYm9vbCBQbGF0Zm9ybURp
c3BsYXlYMTE6OnN1cHBvcnRzWERhbWFnZShzdGQ6Om9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50
QmFzZSkgY29uc3QKIHsKICAgICBpZiAoIW1fc3VwcG9ydHNYRGFtYWdlKSB7CiAgICAgICAgIG1f
c3VwcG9ydHNYRGFtYWdlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKaW5kZXggMTBiYzFlMjQ2
MmQ5OTk3Yjk4YjEzMzk4NmRkNDQxYzIwYmQwM2U5MS4uMWUwYWRkMjk4MTBjZjMyY2Y2YmNhZDI4
Njc1NGFhZGMzMTRmZDdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBQbGF0Zm9ybURpc3BsYXlYMTEgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsK
IAogICAgIERpc3BsYXkqIG5hdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQogICAg
IGJvb2wgc3VwcG9ydHNYQ29tcG9zaXRlKCkgY29uc3Q7Ci0gICAgYm9vbCBzdXBwb3J0c1hEYW1h
Z2UoT3B0aW9uYWw8aW50PiYgZGFtYWdlRXZlbnRCYXNlKSBjb25zdDsKKyAgICBib29sIHN1cHBv
cnRzWERhbWFnZShzdGQ6Om9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZv
cm1EaXNwbGF5OjpUeXBlOjpYMTE7IH0KQEAgLTU0LDkgKzU0LDkgQEAgY2xhc3MgUGxhdGZvcm1E
aXNwbGF5WDExIGZpbmFsIDogcHVibGljIFBsYXRmb3JtRGlzcGxheSB7CiAKICAgICBEaXNwbGF5
KiBtX2Rpc3BsYXk7CiAgICAgYm9vbCBtX293bmVkRGlzcGxheTsKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPGJvb2w+IG1fc3VwcG9ydHNYQ29tcG9zaXRlOwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9v
bD4gbV9zdXBwb3J0c1hEYW1hZ2U7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxpbnQ+IG1fZGFtYWdl
RXZlbnRCYXNlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX3N1cHBvcnRzWENv
bXBvc2l0ZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hEYW1h
Z2U7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGludD4gbV9kYW1hZ2VFdmVudEJhc2U7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDVmZDRmMWI3NzcxODU3
NzQ2YmEyNjEzNWZlNDg2OTgyNTVmNjQ5YWYuLmRiY2JhOTFjMmI0M2QzMjY0OGQ5MjY4NjY1YTQ3
YWRlOThiODRhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xODUsNyArMTg1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3Qs
IHN0b3JlcyBpdCBpbiB0aGUgYXJndW1lbnQKICAgICAgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4g
T3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCi0gICAgICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CisgICAgICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHByZXBhcmVTY2FsZURhdGFJ
Zk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkMGEyYWZmNjUy
ZDc1ZDU1NmRlNGZhNmY4ZDc4OTMyMjA1ZDVmYjYxLi42NGMyYzM1OGE2Njg3YTFiNWMxM2FhOWE3
N2Q1MmRmZDAyYWJmODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKQogICAgIHJldHVybiBJ
bWFnZURlY29kZXI6OnNldEZhaWxlZCgpOwogfQogCi1PcHRpb25hbDxJbnRQb2ludD4gSUNPSW1h
Z2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IElDT0lt
YWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiB1bnNwZWNpZmllZCwg
dGhlIGRlZmF1bHQgZnJhbWUgaXMgYWx3YXlzIGZyYW1lIDAuIFRoaXMgaXMgY29uc2lzdGVudCB3
aXRoCiAgICAgLy8gQml0bWFwSW1hZ2Ugd2hlcmUgY3VycmVudEZyYW1lKCkgc3RhcnRzIGF0IDAg
YW5kIG9ubHkgaW5jcmVhc2VzIHdoZW4gYW5pbWF0aW9uIGlzCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCBPcHRpb25hbDxJbnRQb2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKICAg
ICByZXR1cm4gaG90U3BvdEF0SW5kZXgoMCk7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50PiBJQ09J
bWFnZURlY29kZXI6OmhvdFNwb3RBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA+PSBtX2RpckVudHJpZXMuc2l6ZSgpIHx8IG1f
ZmlsZVR5cGUgIT0gQ1VSU09SKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtX2RpckVudHJpZXNbaW5kZXhdLm1faG90
U3BvdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAyZDQ3YTdiYzU5ZTJmYmE2YjE0
YTQ2NDQ5MWIwNTNiM2M2NTU3Y2NmLi5iMWJjNWFkZTY3MTJmNDI1ZjAwNTEwZWZjMTg1YzI4ZGI5
Yjc4Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gYXZvaWQgYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5
LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20KICAgICAgICAgLy8gaW5zaWRlIEJN
UEltYWdlUmVhZGVyIQogICAgICAgICBib29sIHNldEZhaWxlZCgpIG92ZXJyaWRlOwotICAgICAg
ICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBlbnVtIEltYWdlVHlwZSB7CkBAIC0xMTUsOCArMTE1LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBjb3VsZCBiZSBkZWNvZGVkLgogICAgICAgICBi
b29sIHByb2Nlc3NEaXJlY3RvcnlFbnRyaWVzKCk7CiAKLSAgICAgICAgLy8gUmV0dXJucyB0aGUg
aG90LXNwb3QgZm9yIHxpbmRleHwsIHJldHVybnMgTnVsbG9wdCBpZiB0aGVyZSBpcyBub25lLgot
ICAgICAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdEF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KyAgICAgICAgLy8gUmV0dXJucyB0aGUgaG90LXNwb3QgZm9yIHxpbmRleHwsIHJldHVybnMgc3Rk
OjpudWxsb3B0IGlmIHRoZXJlIGlzIG5vbmUuCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3RBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKICAgICAgICAgLy8gUmVhZHMgYW5k
IHJldHVybnMgYSBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBvZmZzZXQgaW50bwog
ICAgICAgICAvLyB8ZGF0YXwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWVuY29kZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCmluZGV4IGU0MTBhN2Q4YzRi
NjRkYzc3YzJhMzdjZWYxMzAyM2M5YWE2Yzk0OGQuLjA1N2UwMzMxZDdmMjIyOTg2NjFmMTNmOWI5
OGZkY2Y0NmFlYzA5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWVuY29kZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWVuY29kZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IHN0YXRpYyB2b2lkIGpwZWdFcnJvckV4aXQoal9jb21tb25fcHRyIGNvbXByZXNzRGF0YSkKICAg
ICBsb25nam1wKGVyci0+bV9zZXRqbXBCdWZmZXIsIC0xKTsKIH0KIAotYm9vbCBjb21wcmVzc1JH
QkFCaWdFbmRpYW5Ub0pQRUcodW5zaWduZWQgY2hhciogcmdiYUJpZ0VuZGlhbkRhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIFZlY3RvcjxjaGFyPiYganBlZ0RhdGEsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkKK2Jvb2wgY29tcHJlc3NSR0JBQmlnRW5kaWFuVG9KUEVHKHVuc2lnbmVkIGNoYXIq
IHJnYmFCaWdFbmRpYW5EYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBWZWN0b3I8Y2hhcj4mIGpw
ZWdEYXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICBzdHJ1Y3QganBl
Z19jb21wcmVzc19zdHJ1Y3QgY29tcHJlc3NEYXRhOwogICAgIEpQRUdDb21wcmVzc0Vycm9yTWdy
IGVycjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJz
L0pQRUdJbWFnZUVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuaAppbmRleCAzMjg0MzRiMjBhMjUwNTY1NGZiYmM2ZTZhZjc1
ZmJlOTA2YTQ2NzFiLi45ZjMxYTkxYzNjNmU3MGQ3Y2MyNjRjODNkZTIyZjllYjg3ZDBlNDVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9KUEVHSW1h
Z2VFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMv
SlBFR0ltYWdlRW5jb2Rlci5oCkBAIC0yNyw2ICsyNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW50U2l6ZTsKIAotYm9vbCBjb21wcmVzc1JHQkFCaWdFbmRpYW5Ub0pQRUcodW5z
aWduZWQgY2hhciogcmdiYUJpZ0VuZGlhbkRhdGEsIGNvbnN0IEludFNpemUmLCBWZWN0b3I8Y2hh
cj4mIGpwZWdEYXRhLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBOdWxsb3B0KTsKK2Jvb2wg
Y29tcHJlc3NSR0JBQmlnRW5kaWFuVG9KUEVHKHVuc2lnbmVkIGNoYXIqIHJnYmFCaWdFbmRpYW5E
YXRhLCBjb25zdCBJbnRTaXplJiwgVmVjdG9yPGNoYXI+JiBqcGVnRGF0YSwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKaW5kZXggMmYyYzQ4Y2RhOGExMjBhMGNm
YzJkYWRhZTVjZGRhODRlMTE5ZWVlNC4uOTJjMjFkMjRiMzAxOWVkNDEzN2U2ZTgxNDY5MjZjMzU0
MDhjMThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUuaApAQCAtMTQwLDcgKzE0MCw3IEBAIGNsYXNzIExlZ2FjeVRpbGVDYWNoZSB7CiAgICAgQ0FM
YXllciogaG9zdExheWVyKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdGlsZUNhcGFjaXR5Rm9yR3Jp
ZChMZWdhY3lUaWxlR3JpZCopOwogICAgIENvbG9yIGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIoTGVn
YWN5VGlsZUdyaWQqKSBjb25zdDsKLSAgICB2b2lkIHNldE92ZXJyaWRlVmlzaWJsZVJlY3QoT3B0
aW9uYWw8RmxvYXRSZWN0Pik7CisgICAgdm9pZCBzZXRPdmVycmlkZVZpc2libGVSZWN0KHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0Pik7CiAKICAgICB2b2lkIGRvUGVuZGluZ1JlcGFpbnRzKCk7CiAK
QEAgLTE4NSw3ICsxODUsNyBAQCBjbGFzcyBMZWdhY3lUaWxlQ2FjaGUgewogICAgIC8vIEVuc3Vy
ZSB0aGVyZSBhcmUgbm8gYXN5bmMgY2FsbHMgb24gYSBkZWFkIHRpbGUgY2FjaGUuCiAgICAgUmV0
YWluUHRyPExlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZT4gbV90b21ic3RvbmU7CiAKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gbV9vdmVycmlkZVZpc2libGVSZWN0OwogCiAgICAgVGlsaW5nTW9kZSBtX3Rp
bGluZ01vZGU7CiAgICAgVGlsaW5nRGlyZWN0aW9uIG1fdGlsaW5nRGlyZWN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggYjBiN2Jm
ZGEyZGI4MWVlZjc0MWNmNjY0M2MxMGY4MGVmN2QyOWVmMy4uNjZhMjZlMWU2OGUzYzRkNTc3YWIz
ZWI1Njg1MThmYWM1OGY1OTY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tCkBAIC0xMTcsNyArMTE3LDcgQEAgRmxvYXRSZWN0IExlZ2FjeVRp
bGVDYWNoZTo6dmlzaWJsZVJlY3RJbkxheWVyKENBTGF5ZXIgKmxheWVyKSBjb25zdAogICAgIHJl
dHVybiBbbGF5ZXIgY29udmVydFJlY3Q6W21fd2luZG93IGV4dGVuZGVkVmlzaWJsZVJlY3RdIGZy
b21MYXllcjpob3N0TGF5ZXIoKV07CiB9CiAKLXZvaWQgTGVnYWN5VGlsZUNhY2hlOjpzZXRPdmVy
cmlkZVZpc2libGVSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCkKK3ZvaWQgTGVnYWN5VGls
ZUNhY2hlOjpzZXRPdmVycmlkZVZpc2libGVSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBy
ZWN0KQogewogICAgIG1fb3ZlcnJpZGVWaXNpYmxlUmVjdCA9IHJlY3Q7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQppbmRleCA3NzgyYjI1ZjQ4
MDlhOWQ2ZGZkY2JjMWJjZDM4ZTczOTdlYTAxYjM0Li41Y2EyMTJhM2M0ZjJiZWMyMTJkNmJkZjVm
YjExMjdkMTM0NjY5ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlTGF5ZXIubW0KQEAgLTY0LDcgKzY0LDcgQEAgLSAodm9pZClyZW5kZXJJbkNvbnRleHQ6
KENHQ29udGV4dFJlZiljb250ZXh0CiAKICAgICBbc3VwZXIgcmVuZGVySW5Db250ZXh0OmNvbnRl
eHRdOwogCi0gICAgX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5zZXRPdmVycmlkZVZpc2libGVSZWN0
KE51bGxvcHQpOworICAgIF90aWxlR3JpZC0+dGlsZUNhY2hlKCkuc2V0T3ZlcnJpZGVWaXNpYmxl
UmVjdChzdGQ6Om51bGxvcHQpOwogfQogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKaW5k
ZXggOTBjZjY0MGZiYjRkYWM4NzZmM2Q1NzNiNzVjYmFmNTgzZWRiNWE2Ny4uM2NlZGZlODEwY2Jj
NTAxZGFlNjRkNmQ5ZDMzZGY0ODMyMDVkZGE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6RXZlbnRGRFBvbGxlcjo6
RXZlbnRGRFBvbGxlcihpbnQgZmQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoCiAKIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6RXZlbnRGRFBvbGxlcjo6fkV2ZW50RkRQb2xsZXIoKQogewotICAgIG1fZmQg
PSBOdWxsb3B0OworICAgIG1fZmQgPSBzdGQ6Om51bGxvcHQ7CiAjaWYgVVNFKEdMSUIpCiAgICAg
Z19zb3VyY2VfZGVzdHJveShtX3NvdXJjZS5nZXQoKSk7CiAjZWxzZQpAQCAtMTg1LDExICsxODUs
MTEgQEAgaW5saW5lIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpsb2dFcnJvckFuZENsb3Nl
RkRzKGNvbnN0IGNoYXIqIGxvZykKIAogICAgIGlmIChtX2V2ZW50RkQpIHsKICAgICAgICAgY2xv
c2UobV9ldmVudEZELnZhbHVlKCkpOwotICAgICAgICBtX2V2ZW50RkQgPSBOdWxsb3B0OworICAg
ICAgICBtX2V2ZW50RkQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGlmIChtX3ByZXNzdXJl
TGV2ZWxGRCkgewogICAgICAgICBjbG9zZShtX3ByZXNzdXJlTGV2ZWxGRC52YWx1ZSgpKTsKLSAg
ICAgICAgbV9wcmVzc3VyZUxldmVsRkQgPSBOdWxsb3B0OworICAgICAgICBtX3ByZXNzdXJlTGV2
ZWxGRCA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTI3MSwxMiArMjcxLDEyIEBAIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKQogCiAgICAgaWYgKG1fcHJlc3N1
cmVMZXZlbEZEKSB7CiAgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZELnZhbHVlKCkpOwot
ICAgICAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IE51bGxvcHQ7CisgICAgICAgIG1fcHJlc3N1cmVM
ZXZlbEZEID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIE9ubHkgY2xvc2UgdGhlIGV2ZW50
RkQgdXNlZCBmb3IgY2dyb3Vwcy4KICAgICAgICAgaWYgKG1fZXZlbnRGRCkgewogICAgICAgICAg
ICAgY2xvc2UobV9ldmVudEZELnZhbHVlKCkpOwotICAgICAgICAgICAgbV9ldmVudEZEID0gTnVs
bG9wdDsKKyAgICAgICAgICAgIG1fZXZlbnRGRCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAppbmRleCBlNGM3Mjcx
NzliZTgwNzQyY2Y1ZWJjMzM5OTgyZGRjMjhiMmU3ZDY0Li5iMzQ2YTY1ZWQwMTZhNDgwNzkxMDRl
OTNlMjg1ODRhNjJiMGNhZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
aApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBUaGVtZU1hYyA6IHB1YmxpYyBUaGVtZUNvY29hIHsK
ICAgICAKICAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gY29u
dHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3Rv
cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0
aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6
b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBMZW5ndGhTaXplIGNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmLCBm
bG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKICAgICBMZW5ndGhTaXplIG1pbmltdW1D
b250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5t
bQppbmRleCBjMTZiOWU2ZTNkMDM5NzJkOGRhNzQ5Yjk5ZThmNTVhNzhhOTIxYzQ0Li44YWE3ZjVm
MDQ2NzA4MTUxZDc4ZjgxODUxZWJkNjZkMjI4M2RkNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tCkBAIC03MDQsNyArNzA0LDcgQEAgaW50IFRoZW1lTWFjOjpiYXNl
bGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCBwYXJ0KSBjb25zdAogICAgIHJldHVy
biBUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQocGFydCk7CiB9CiAKLU9wdGlvbmFs
PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IFRoZW1lTWFjOjpjb250cm9sRm9udChDb250cm9sUGFy
dCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVNYWM6OmNvbnRyb2xG
b250KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB6b29t
RmFjdG9yKSBjb25zdAogewogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIFB1c2hC
dXR0b25QYXJ0OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwCmluZGV4IGM5NzY4ZGIyMzMxZjIzNzU5ZWYxMDll
Yjg5NmJhZmZmODIzMzNlNTEuLjc4OTM3MTYyMTc5NTdlOGNkMGE1NGRlMDkxMjhlNmJiMWE2Y2Yy
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcDo6ZmlsdGVyKHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBNZWRpYUNv
bnN0cmFpbnQKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8
SW50Q29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9u
YWw8SW50Q29uc3RyYWludD4mJiBjb25zdHJhaW50KQogewogICAgIHN3aXRjaCAoY29uc3RyYWlu
dFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgpAQCAtMjM4LDcg
KzIzOCw3IEBAIHZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0
cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hCiAgICAgfQogfQogCi12b2lkIE1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50
VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWlu
dFR5cGUsIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQogewog
ICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkFzcGVjdFJhdGlvOgpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRp
b25hCiAgICAgfQogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVk
aWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFp
bnQ+JiYgY29uc3RyYWludCkKK3ZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChN
ZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5D
b25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkg
ewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RWNob0NhbmNlbGxhdGlvbjoKQEAgLTI4
OCw3ICsyODgsNyBAQCB2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFD
b25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYQogICAgIH0KIH0KIAotdm9pZCBN
ZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3Ry
YWludFR5cGUsIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKK3ZvaWQg
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0
cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkK
IHsKICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFp
bnRUeXBlOjpGYWNpbmdNb2RlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IDk2NGFkYmU5OGNiYjExZDhhMTFi
OWI3MjE2ZmMxMDk1Y2M0ZTdmNzEuLmZkNTQ2MWU5OGE3MWI1NGI0MWU5ZTlmNDc5MmJjYmZmOWVk
OTM5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTI5MywxMCArMjkzLDEwIEBAIGNsYXNzIE51bWVyaWND
b25zdHJhaW50IDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1fbWluOwotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4g
bV9tYXg7Ci0gICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtX2V4YWN0OwotICAgIE9wdGlvbmFsPFZh
bHVlVHlwZT4gbV9pZGVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbV9taW47Cisg
ICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IG1fbWF4OworICAgIHN0ZDo6b3B0aW9uYWw8VmFs
dWVUeXBlPiBtX2V4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtX2lkZWFsOwog
fTsKIAogY2xhc3MgSW50Q29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWlu
dDxpbnQ+IHsKQEAgLTQyNiw4ICs0MjYsOCBAQCBjbGFzcyBCb29sZWFuQ29uc3RyYWludCBmaW5h
bCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPcHRp
b25hbDxib29sPiBtX2V4YWN0OwotICAgIE9wdGlvbmFsPGJvb2w+IG1faWRlYWw7CisgICAgc3Rk
OjpvcHRpb25hbDxib29sPiBtX2V4YWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pZGVh
bDsKIH07CiAKIGNsYXNzIFN0cmluZ0NvbnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50
IHsKQEAgLTUzNSwxMCArNTM1LDEwIEBAIGNsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
IHsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJh
aW50VHlwZSwgT3B0aW9uYWw8SW50Q29uc3RyYWludD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4m
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgT3B0
aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
KE1lZGlhQ29uc3RyYWludFR5cGUsIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9u
YWw8SW50Q29uc3RyYWludD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFD
b25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFs
PEJvb2xlYW5Db25zdHJhaW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRp
YUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+JiYpOwogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgewpAQCAtNTkwLDIwICs1OTAsMjAgQEAgY2xhc3MgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxJbnRDb25zdHJh
aW50PiBtX3dpZHRoOwotICAgIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1faGVpZ2h0OwotICAg
IE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1fc2FtcGxlUmF0ZTsKLSAgICBPcHRpb25hbDxJbnRD
b25zdHJhaW50PiBtX3NhbXBsZVNpemU7CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50
PiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9oZWlnaHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBsZVJhdGU7CisgICAgc3RkOjpv
cHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3NhbXBsZVNpemU7CiAKLSAgICBPcHRpb25hbDxEb3Vi
bGVDb25zdHJhaW50PiBtX2FzcGVjdFJhdGlvOwotICAgIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFp
bnQ+IG1fZnJhbWVSYXRlOwotICAgIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1fdm9sdW1l
OworICAgIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV9hc3BlY3RSYXRpbzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1fZnJhbWVSYXRlOworICAgIHN0ZDo6
b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV92b2x1bWU7CiAKLSAgICBPcHRpb25hbDxCb29s
ZWFuQ29uc3RyYWludD4gbV9lY2hvQ2FuY2VsbGF0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Qm9v
bGVhbkNvbnN0cmFpbnQ+IG1fZWNob0NhbmNlbGxhdGlvbjsKIAotICAgIE9wdGlvbmFsPFN0cmlu
Z0NvbnN0cmFpbnQ+IG1fZmFjaW5nTW9kZTsKLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50
PiBtX2RldmljZUlkOwotICAgIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZ3JvdXBJZDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZmFjaW5nTW9kZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZGV2aWNlSWQ7CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmdDb25zdHJhaW50PiBtX2dyb3VwSWQ7CiB9OwogCiBjbGFzcyBGbGF0dGVuZWRD
b25zdHJhaW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmgKaW5kZXggYzRkMWU1
NjM5OTJjZDAxMTY3NDc5Y2E4NDUwMmZkODQzMzRjODczOC4uMWYzYTM2ZTQ1OGE5OGE3OTA2Mjgz
N2ZhZTM3MjliMjc2Mjk1NzFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmgK
QEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBNZWRpYUVuZHBvaW50T3dyIDogcHVibGljIE1lZGlh
RW5kcG9pbnQgewogICAgIHZvaWQgZW5zdXJlVHJhbnNwb3J0QWdlbnRBbmRUcmFuc2NlaXZlcnMo
Ym9vbCBpc0luaXRpYXRvciwgY29uc3QgVmVjdG9yPFRyYW5zY2VpdmVyQ29uZmlnPiYpOwogICAg
IHZvaWQgaW50ZXJuYWxBZGRSZW1vdGVDYW5kaWRhdGUoT3dyU2Vzc2lvbiosIGNvbnN0IEljZUNh
bmRpZGF0ZSYsIGNvbnN0IFN0cmluZyYgdWZyYWcsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpOwog
Ci0gICAgT3B0aW9uYWw8TWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlv
bjsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247CiAgICAgR1JlZ2V4KiBtX2hlbHBlclNlcnZlclJlZ0V4OwogCiAgICAgT3dyVHJh
bnNwb3J0QWdlbnQqIG1fdHJhbnNwb3J0QWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggMWYxYzM4MDU1NTExMWY0
NGExZjFlN2U2ZTAzMmEyNzMwZGQ5NGJmZC4uYjM4ZTcwNzIwMjM4ZTBjOGVlN2VjYjBkZWI5MDZj
MmExYjI1NjU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
YWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0ZDo6Y2hyb25vOjptaWNy
b3NlY29uZHMgY29tcHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIHN0CiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRoYXQgaXMgbm90
IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZS4KICAgICBhdXRvIGRhdGVWYWx1ZSA9IHJl
c3BvbnNlLmRhdGUoKTsKICAgICBhdXRvIGFwcGFyZW50QWdlID0gZGF0ZVZhbHVlID8gc3RkOjpt
YXgoMHVzLCBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4ocmVzcG9uc2VUaW1lIC0gKmRhdGVW
YWx1ZSkpIDogMHVzOwotICAgIGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52YWx1ZU9y
KDB1cyk7CisgICAgYXV0byBhZ2VWYWx1ZSA9IHJlc3BvbnNlLmFnZSgpLnZhbHVlX29yKDB1cyk7
CiAgICAgYXV0byBjb3JyZWN0ZWRJbml0aWFsQWdlID0gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFn
ZVZhbHVlKTsKICAgICBhdXRvIHJlc2lkZW50VGltZSA9IGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNv
bmRzPihzeXN0ZW1fY2xvY2s6Om5vdygpIC0gcmVzcG9uc2VUaW1lKTsKICAgICByZXR1cm4gY29y
cmVjdGVkSW5pdGlhbEFnZSArIHJlc2lkZW50VGltZTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1p
bHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICByZXR1cm4gKm1heEFnZTsKIAogICAgIGF1dG8g
ZGF0ZSA9IHJlc3BvbnNlLmRhdGUoKTsKLSAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZh
bHVlT3IocmVzcG9uc2VUaW1lKTsKKyAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZhbHVl
X29yKHJlc3BvbnNlVGltZSk7CiAgICAgaWYgKGF1dG8gZXhwaXJlcyA9IHJlc3BvbnNlLmV4cGly
ZXMoKSkKICAgICAgICAgcmV0dXJuIGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPigqZXhwaXJl
cyAtIGVmZmVjdGl2ZURhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DYWNoZVZhbGlkYXRpb24uaAppbmRleCBkMzc2ZWJjMTU4YmFmNGE2Y2Q3ZTdjOTM3MGYx
NTI0MGU3YzhiZWFmLi4xYmJiZWRlZDY1NmI3NzQ1Yjg4Y2ZmYzZjNTc0MjdmZGRiYWEzNGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmgKQEAgLTYxLDggKzYxLDggQEAgZW51bSBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90IHsg
RG9Ob3RSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbiwgUmV1c2VFeHBpcmVkUmUKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1
cywgUmV1c2VFeHBpcmVkUmVkaXJlY3Rpb25Pck5vdCk7CiAKIHN0cnVjdCBDYWNoZUNvbnRyb2xE
aXJlY3RpdmVzIHsKLSAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhB
Z2U7Ci0gICAgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhBZ2U7CisgICAg
c3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFsZTsKICAgICBi
b29sIG5vQ2FjaGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbm9TdG9yZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtdXN0UmV2YWxpZGF0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggODkwMWM3MzMwNTEwN2JlYTgxM2Q4
ZDlhNDE2NDQ5MmMxOTBkMDU0OS4uZTVkYjE1NDI2Njg3NDQyODVjNWM4ZDFjMzNiYWU1MmRlOTZi
ZmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgUmVzdWx0IHsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOwogfTsKIAotdXNpbmcgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgPSBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFJlc3VsdD4pPjsKK3VzaW5nIERlY29kZUNvbXBs
ZXRpb25IYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJlc3VsdD4p
PjsKIHN0cnVjdCBTY2hlZHVsZUNvbnRleHQgewogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKICAg
ICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVkdWxlZFBhaXJzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCAxNDk1YTZjOTI0ZWIzMWUw
NGRkZmRjNWVjZWRkYmNkNWM5OTY4MzBkLi42NDU1OWUxMjVjNjE1N2I1M2FhNTU1MTMwYzZkMTA0
YWM0NmQzMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBI
ZWFkZXJNYXAuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBIVFRQSGVhZGVyTWFwIHsKIAogICAg
ICAgICBzdHJ1Y3QgS2V5VmFsdWUgewogICAgICAgICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAg
ICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJOYW1lPiBrZXlBc0hUVFBIZWFkZXJOYW1lOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxIVFRQSGVhZGVyTmFtZT4ga2V5QXNIVFRQSGVhZGVyTmFtZTsK
ICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKICAgICAgICAgfTsKIApAQCAtOTksNyArOTksNyBA
QCBjbGFzcyBIVFRQSGVhZGVyTWFwIHsKICAgICAgICAgICAgIGlmIChpdCA9PSBtX3RhYmxlLnVu
Y29tbW9uSGVhZGVycygpLmVuZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIG1fa2V5VmFsdWUua2V5ID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1fa2V5VmFs
dWUua2V5QXNIVFRQSGVhZGVyTmFtZSA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2tleVZhbHVl
LmtleUFzSFRUUEhlYWRlck5hbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2tleVZh
bHVlLnZhbHVlID0gaXQtPnZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
aW5kZXggNWZlZDM4OTU3NzM3MGQ4NmFkZGZiZmQxYWFkNDI2MmFjZDFiM2U3Yi4uNDkyOGEzNWU4
YWI3MTg2OTQxNTI2OGJlNWU4MTM4YWRmYTMyNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29s
IHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNoLCBkb3VibGUmIGRlbGF5LCBT
dHJpbmcmIHVybCkKICAgICB9CiB9CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0ZDo6
b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VIVFRQ
RGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGRvdWJsZSBkYXRlSW5NaWxsaXNlY29u
ZHNTaW5jZUVwb2NoID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2YWx1
ZS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWlsbGlzZWNv
bmRzU2luY2VFcG9jaCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmgKaW5kZXggN2Y2YjQyNmFjMDk1Y2Q5NTY4YmFlOTRjNzMzZDJlMzM5MjgzZjBlOS4u
ZGVjYzFiMDNiYjUwN2Y3NDg0YmMxYTljMDQ4Y2IxZTc2MzdiN2U1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApAQCAtNzEsNyArNzEsNyBAQCBi
b29sIGlzVmFsaWRSZWFzb25QaHJhc2UoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFsaWRIVFRQ
SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3Qg
U3RyaW5nJik7CiBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNoLCBk
b3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCk7Ci1PcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOworc3RkOjpv
cHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZUhUVFBE
YXRlKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9z
aXRpb24oY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlw
ZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29u
c3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDJjMTIyNzhkNWFmMGNjNzgxMDNiNmIx
ZWEzOGU5ODFlMmRlNzQ4NjAuLmZhNDU4YTI0ZGZjMGVhMjYwOTBjOTAzZDVmN2FkMDdjY2ZkZTJk
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC00MzMsMTQgKzQzMywxNCBAQCBib29sIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpoYXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIGNvbnN0CiAgICAgcmV0dXJu
ICFtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpLmlz
RW1wdHkoKSB8fCAhbV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6RVRhZyku
aXNFbXB0eSgpOwogfQogCi1PcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hl
Q29udHJvbE1heEFnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhdmVQYXJzZWRDYWNoZUNvbnRy
b2xIZWFkZXIpCiAgICAgICAgIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpOwogICAgIHJl
dHVybiBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXMubWF4QWdlOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VEYXRlVmFsdWVJ
bkhlYWRlcihjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBIVFRQSGVhZGVyTmFtZSBoZWFk
ZXJOYW1lKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludD4gcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzLCBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lKQogewogICAgIFN0cmluZyBoZWFkZXJW
YWx1ZSA9IGhlYWRlcnMuZ2V0KGhlYWRlck5hbWUpOwogICAgIGlmIChoZWFkZXJWYWx1ZS5pc0Vt
cHR5KCkpCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY28KICAgICBy
ZXR1cm4gcGFyc2VIVFRQRGF0ZShoZWFkZXJWYWx1ZSk7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRl
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRhdGUoKSBjb25zdAogewogICAgIGxhenlJbml0
KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC00NjMsNyArNDYzLDcgQEAgT3B0aW9uYWw8c3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRh
dGUoKSBjb24KICAgICByZXR1cm4gbV9kYXRlOwogfQogCi1PcHRpb25hbDxzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFn
ZSgpIGNvbnN0CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwogCkBAIC00ODAs
NyArNDgwLDcgQEAgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYWdlOwogfQogCi1PcHRpb25h
bDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZXhwaXJlcygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgY29uc3QK
IHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNDkxLDcgKzQ5MSw3IEBA
IE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNl
UmVzcG9uc2VCYXNlOjpleHBpcmVzKCkKICAgICByZXR1cm4gbV9leHBpcmVzOwogfQogCi1PcHRp
b25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2Rp
ZmllZCgpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAKQEAgLTUw
Miw3ICs1MDIsNyBAQCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaQogICAgICAgICAvLyBhbiBpbnZh
bGlkIHZhbHVlIChyZGFyOi8vcHJvYmxlbS8yMjM1MjgzOCkuCiAgICAgICAgIGNvbnN0IHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZXBvY2g7CiAgICAgICAgIGlmIChtX2xh
c3RNb2RpZmllZCAmJiBtX2xhc3RNb2RpZmllZC52YWx1ZSgpID09IGVwb2NoKQotICAgICAgICAg
ICAgbV9sYXN0TW9kaWZpZWQgPSBOdWxsb3B0OworICAgICAgICAgICAgbV9sYXN0TW9kaWZpZWQg
PSBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAgICAgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVk
SGVhZGVyID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggZDg5NjYxNWZkZmNjNDA3MzNm
MTdhZmQzYzhhN2M3ZWU0OGU2ZDM3MC4uYjAzMGQ5ZjU3M2I2ZTU5ODZlNjg3MWYzYmM3ZTBjYzQ0
ZDMwMDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMTE1LDcgKzExNSw3IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2VCYXNlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jbHVkZUNlcnRpZmljYXRl
SW5mbygpIGNvbnN0OwotICAgIGNvbnN0IE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRp
ZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9OworICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29u
c3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH07CiAgICAgCiAgICAgLy8gVGhlc2UgZnVu
Y3Rpb25zIHJldHVybiBwYXJzZWQgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNl
IGhlYWRlcnMuCiAgICAgLy8gTmFOIG1lYW5zIHRoYXQgdGhlIGhlYWRlciB3YXMgbm90IHByZXNl
bnQgb3IgaGFkIGludmFsaWQgdmFsdWUuCkBAIC0xMjMsMTEgKzEyMywxMSBAQCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYWNoZUNvbnRyb2xD
b250YWluc05vU3RvcmUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29u
dHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc0NhY2hlVmFsaWRhdG9yRmllbGRzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gY2FjaGVDb250cm9sTWF4QWdlKCkg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludD4gZGF0ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IGFnZSgpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGV4
cGlyZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBsYXN0TW9kaWZpZWQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IGNhY2hl
Q29udHJvbE1heEFnZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZGF0ZSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4g
YWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBleHBpcmVzKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50PiBsYXN0TW9kaWZpZWQoKSBjb25zdDsKICAgICBQYXJzZWRDb250ZW50UmFuZ2UmIGNvbnRl
bnRSYW5nZSgpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBpcyBwcmltYXJpbHkgZm9yIHRlc3Rpbmcg
c3VwcG9ydC4gSXQgaXMgbm90IG5lY2Vzc2FyaWx5IGFjY3VyYXRlIGluIGFsbCBzY2VuYXJpb3Mu
CkBAIC0xODksMTUgKzE4OSwxNSBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAg
SFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgbXV0YWJsZSBOZXR3b3JrTG9h
ZFRpbWluZyBtX25ldHdvcmtMb2FkVGltaW5nOwogCi0gICAgbXV0YWJsZSBPcHRpb25hbDxDZXJ0
aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogCiAgICAgaW50IG1faHR0cFN0
YXR1c0NvZGU7CiAKIHByaXZhdGU6Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzPiBtX2FnZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZGF0ZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJlczsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fbGFz
dE1vZGlmaWVkOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9z
ZWNvbmRzPiBtX2FnZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludD4gbV9kYXRlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBtX2V4cGlyZXM7CisgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQ+IG1fbGFzdE1vZGlmaWVkOwogICAgIG11dGFibGUgUGFyc2VkQ29udGVudFJhbmdlIG1fY29u
dGVudFJhbmdlOwogICAgIG11dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29u
dHJvbERpcmVjdGl2ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IGEyZGJiOWNlOTRiZDZkZWNkZjY4NTY2OWRj
MjNlZTE2M2JiZDEyZDMuLmZiYWQ2NDE5NWFiZGUzMDg3OWY5ODBhOGEyN2VjYzQ4NTdhOTAzMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJl
YW1IYW5kbGUuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiB7CiAgICAgU29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYpOwog
CiAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEoKTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPHNpemVf
dD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsKKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3Nl
KCkgPSAwOwogCiAgICAgVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKaW5kZXggNGM0MmQ4
NWJjZjZjNDg0ZjYzMjg4ODk3ZmJiMzQzYzU4YzczOGFjMi4uZTI2YjlhNjIzYzMwYmRlMzhhZDk4
N2NlMzNlNTIzYzk2ZWMzZTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFu
ZGxlJiwgY29uc3QgY2hhciogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFu
ZGxlJiwgY29uc3QgY2hhciogZGF0YSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChTb2NrZXRTdHJlYW1I
YW5kbGUmLCBzaXplX3QgYnVmZmVyZWRBbW91bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBTb2NrZXRTdHJlYW1F
cnJvciYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IDg3NmNmMjQxZjg2MmNj
NmZkYmQxYTdhNWZlZjI4YmRhYmZiY2Y3NTcuLjRlZGQzOTBkY2I4OTZmMTBhM2M1NjA5MDNkMmVk
OTI3YmE3OWFkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsK
ICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBPcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9y
bVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ2xvc2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNvY2tldFN0cmVhbUhhbmRs
ZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50JiwgU2Vzc2lvbklEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCBiYTM5Y2RiMTc0NDE0Y2Fh
ZWI5NmE2ZGQ0NTU1YmIxODQxZWMzZDNhLi5jY2IxNGVhMWIyMDc2OTc2ZTJjNWE3ZjRkMzZkMTJm
Nzg4NDVjZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC01MzYs
NyArNTM2LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJh
Y2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBvcHRpb25hbExlbmd0aDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG9wdGlvbmFsTGVuZ3RoOwogICAgICAgICBp
ZiAobGVuZ3RoICE9IC0xKQogICAgICAgICAgICAgb3B0aW9uYWxMZW5ndGggPSBsZW5ndGg7CiAg
ICAgICAgIApAQCAtNjUzLDE0ICs2NTMsMTQgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNv
Y2tldFN0cmVhbUhhbmRsZUltcGwoKQogICAgIEFTU0VSVCghbV9wYWNSdW5Mb29wU291cmNlKTsK
IH0KIAotT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNl
bmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKIHsKICAgICBpZiAoIUNGV3JpdGVTdHJlYW1DYW5BY2NlcHRCeXRlcyht
X3dyaXRlU3RyZWFtLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDRkluZGV4IHJlc3VsdCA9IENGV3JpdGVTdHJlYW1X
cml0ZShtX3dyaXRlU3RyZWFtLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4o
ZGF0YSksIGxlbmd0aCk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBU1NFUlQocmVzdWx0
ID49IDApOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuaAppbmRleCA3NTRhMjM2YjRlYzg3MDdiNGNlYmZlYTg3OWVjYjkxNjZm
YzNjMTU1Li42MjY0ODBmZGIyNzYwYzdiOTAwNDdkOTYzYThkYWFkMDQ2OWQxYjc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogcHJpdmF0ZToKICAgICBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCYpOwogCi0gICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRm
b3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lk
IHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKIAogICAgIGJvb2wgcmVhZERhdGEoQ1VSTCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNTdhNmE3M2Q0ZTA3ZGRmY2Ex
NjAwYzE5ZDJjNTMxMmEyMmNiYWI2My4uZTk0Zjg0YTY4MjMzOTUyZDRjMmM2NTJjNmIyYWZmMjVk
MjY2ZGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC02Niw3
ICs2Niw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6On5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
KCkKICAgICBBU1NFUlQoIW1fd29ya2VyVGhyZWFkKTsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBM
T0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
SmFyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFy
TWFjLm1tCmluZGV4IGE0Y2RhZGZiOTZkMTVmOTA5ZTNjOWMzNzJmMTQ5Y2M5MmQ2Zjk0NDYuLmM3
Y2MwZjA5YmIyNTQ1ODVkZDlhN2Y1OWQzNTQyMmQ2MWIwZWYyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTExNSw3
ICsxMTUsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0luUGFydGl0aW9uRm9yVVJMKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgYwogICAgICAgICBjb29raWVTdG9yYWdl
ID0gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdOwogCiAgICAg
Ly8gVGhlIF9nZXRDb29raWVzRm9yVVJMOiBtZXRob2QgY2FsbHMgdGhlIGNvbXBsZXRpb25IYW5k
bGVyIHN5bmNocm9ub3VzbHkuCi0gICAgT3B0aW9uYWw8UmV0YWluUHRyPE5TQXJyYXkgKj4+IGNv
b2tpZXNQdHI7CisgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJheSAqPj4gY29va2ll
c1B0cjsKICAgICBbY29va2llU3RvcmFnZSBfZ2V0Q29va2llc0ZvclVSTDp1cmwgbWFpbkRvY3Vt
ZW50VVJMOmZpcnN0UGFydHkgcGFydGl0aW9uOnBhcnRpdGlvbiBjb21wbGV0aW9uSGFuZGxlcjpb
JmNvb2tpZXNQdHJdKE5TQXJyYXkgKmNvb2tpZXMpIHsKICAgICAgICAgY29va2llc1B0ciA9IHJl
dGFpblB0cihjb29raWVzKTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4
IDdmMDM4NDZlYzg0ZjA1NDczZTVkNTViOWRhNDRlOWM4MGI2NjU4Y2IuLjU4MTBkOWJjOTdmNDcy
OTNjMDM2N2ExZWIyOTRiZjdiMzIzNzIxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApA
QCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIGZpbmFsIDogcHVi
bGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiBwcml2YXRlOgogICAgIFNvY2tldFN0cmVhbUhhbmRs
ZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKLSAgICBPcHRp
b25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgp
IGZpbmFsOwogCiAgICAgdm9pZCBiZWdpbldhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggMDg3ZGFmZGE0OTMyZWYw
NGE5NTczNDNiMDlhN2VhZThiYzE3Yjk5NS4uMjQxMTMyMzBmMzhkZDdkZmQwZmYyMmUyZjk0Nzc1
MTkxOTU2MTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCkBAIC0x
MjgsNyArMTI4LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkQnl0ZXMoZ3Nz
aXplIGJ5dGVzUmVhZCkKIAogICAgIC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBoYW5kbGUs
IHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KICAgICBSZWZQdHI8U29j
a2V0U3RyZWFtSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIE9wdGlvbmFsPHNpemVf
dD4gb3B0aW9uYWxMZW5ndGg7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG9wdGlvbmFsTGVu
Z3RoOwogICAgIGlmIChieXRlc1JlYWQgIT0gLTEpCiAgICAgICAgIG9wdGlvbmFsTGVuZ3RoID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpOwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVT
b2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBtX3JlYWRCdWZmZXIuZ2V0KCksIG9wdGlvbmFsTGVuZ3Ro
KTsKQEAgLTE3MSwxMSArMTcxLDExIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6d3Jp
dGVSZWFkeSgpCiAgICAgc2VuZFBlbmRpbmdEYXRhKCk7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4g
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAg
TE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7
CiAgICAgaWYgKCFtX291dHB1dFN0cmVhbSB8fCAhZGF0YSkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgZ3NzaXplIHdyaXR0ZW4gPSBnX3BvbGxhYmxlX291dHB1dF9zdHJl
YW1fd3JpdGVfbm9uYmxvY2tpbmcobV9vdXRwdXRTdHJlYW0uZ2V0KCksIGRhdGEsIGxlbmd0aCwg
bV9jYW5jZWxsYWJsZS5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKQEAgLTE4NCw3ICsxODQsNyBA
QCBPcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbAogICAgICAgICAgICAgYmVnaW5XYWl0aW5nRm9yU29j
a2V0V3JpdGFiaWxpdHkoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGlkRmFpbChTb2Nr
ZXRTdHJlYW1FcnJvcihlcnJvci0+Y29kZSwgU3RyaW5nKCksIGVycm9yLT5tZXNzYWdlKSk7Ci0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIElmIHdlIGRpZCBub3Qgc2VuZCBhbGwgdGhlIGJ5dGVzIHdlIHdlcmUgZ2l2
ZW4sIHdlIGtub3cgdGhhdApAQCAtMTkzLDcgKzE5Myw3IEBAIE9wdGlvbmFsPHNpemVfdD4gU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsCiAgICAgICAgIGJlZ2luV2FpdGluZ0ZvclNvY2tldFdyaXRhYmlsaXR5KCk7CiAKICAgICBp
ZiAod3JpdHRlbiA9PSAtMSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih3cml0dGVu
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCmluZGV4IGYyNjE3OTU2ODNh
ZjI1OTU1OGM4MWMyMTY4NDM0Njk5ZDI3NzQ4MmQuLjg4ZDdlOTk1ODIwMzU4OTcwZjBlOGExZTYx
NzExNWNmZjA4MDY5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVh
a0xpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaApAQCAt
ODUsNyArODUsNyBAQCBpbmxpbmUgYm9vbCBuZWVkc0xpbmVCcmVha0l0ZXJhdG9yKFVDaGFyIGNo
YXJhY3RlcikKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5vbkJyZWFraW5nU3Bh
Y2VCZWhhdmlvciBub25CcmVha2luZ1NwYWNlQmVoYXZpb3I+CiBpbmxpbmUgdW5zaWduZWQgbmV4
dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlC
cmVha0l0ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKIHsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4
dEJyZWFrOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhazsKIAogICAgIENo
YXJhY3RlclR5cGUgbGFzdExhc3RDaGFyYWN0ZXIgPSBzdGFydFBvc2l0aW9uID4gMSA/IHN0cmlu
Z1tzdGFydFBvc2l0aW9uIC0gMl0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJl
YWtJdGVyYXRvci5zZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSk7CiAgICAgQ2hhcmFjdGVyVHlwZSBs
YXN0Q2hhcmFjdGVyID0gc3RhcnRQb3NpdGlvbiA+IDAgPyBzdHJpbmdbc3RhcnRQb3NpdGlvbiAt
IDFdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3IubGFzdENo
YXJhY3RlcigpKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFr
YWJsZVBvc2l0aW9uTm9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVhawog
ICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9y
LCBpIC0gMSArIHByaW9yQ29udGV4dExlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlID09IFRleHRCcmVha0RvbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV4dEJyZWFrID0gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0
QnJlYWsgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBjYW5kaWRhdGU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA+PSBwcmlvckNvbnRleHRM
ZW5ndGgpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxl
UG9zaXRpb25Ob25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBOb25CcmVha2luZ1NwYWNlQmVoYXZpb3Igbm9u
QnJlYWtpbmdTcGFjZUJlaGF2aW9yPgogc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWth
YmxlUG9zaXRpb25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0
b3IsIGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCBzdGFydFBvc2l0aW9uKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWs7Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOwogCiAgICAgQ2hhcmFjdGVyVHlw
ZSBsYXN0Q2hhcmFjdGVyID0gc3RhcnRQb3NpdGlvbiA+IDAgPyBzdHJpbmdbc3RhcnRQb3NpdGlv
biAtIDFdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4obGF6eUJyZWFrSXRlcmF0b3IubGFz
dENoYXJhY3RlcigpKTsKICAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGggPSBsYXp5QnJl
YWtJdGVyYXRvci5wcmlvckNvbnRleHRMZW5ndGgoKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkoTGF6eUxpbmVC
cmVha0l0ZXJhdG9yJiBsYXp5QgogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaSArIHByaW9y
Q29udGV4dExlbmd0aCA+PSAxKTsKICAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9
IHRleHRCcmVha0ZvbGxvd2luZyhicmVha0l0ZXJhdG9yLCBpICsgcHJpb3JDb250ZXh0TGVuZ3Ro
IC0gMSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9u
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IE51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
Y2FuZGlkYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA+IHByaW9y
Q29udGV4dExlbmd0aCk7CkBAIC0yMjgsNyArMjI4LDcgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRC
cmVha2FibGVQb3NpdGlvbklnbm9yaW5nTkJTUExvb3NlKExhenlMaW5lQnJlYWtJdGVyYXRvciYg
bGEKICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseTxVQ2hhciwgTm9uQnJl
YWtpbmdTcGFjZUJlaGF2aW9yOjpJZ25vcmVOb25CcmVha2luZ1NwYWNlPihsYXp5QnJlYWtJdGVy
YXRvciwgc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSwgc3Rh
cnRQb3NpdGlvbik7CiB9CiAKLWlubGluZSBib29sIGlzQnJlYWthYmxlKExhenlMaW5lQnJlYWtJ
dGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIE9wdGlv
bmFsPHVuc2lnbmVkPiYgbmV4dEJyZWFrYWJsZSwgYm9vbCBicmVha05CU1AsIGJvb2wgaXNMb29z
ZU1vZGUsIGJvb2wga2VlcEFsbFdvcmRzKQoraW5saW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxp
bmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlv
biwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4mIG5leHRCcmVha2FibGUsIGJvb2wgYnJlYWtOQlNQ
LCBib29sIGlzTG9vc2VNb2RlLCBib29sIGtlZXBBbGxXb3JkcykKIHsKICAgICBpZiAobmV4dEJy
ZWFrYWJsZSAmJiBuZXh0QnJlYWthYmxlLnZhbHVlKCkgPj0gc3RhcnRQb3NpdGlvbikKICAgICAg
ICAgcmV0dXJuIHN0YXJ0UG9zaXRpb24gPT0gbmV4dEJyZWFrYWJsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXgg
ZmY5MDQ1MGI4MWUyMTdkYTkwNTI1OWE4OTQ4ZjBjMWQ2YThjNjkxOC4uNjMxNmIzYTgyZjc4NmNj
NDNhNmM5MDgzMjQxMjRiZTZmMmVkYzNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
dm9pZCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW4oKQogCiB2b2lkIEhpdFRlc3Rp
bmdUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHQpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBp
bnZlcnNlID0gdC5pbnZlcnNlKCkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4gaW52ZXJzZSA9IHQuaW52ZXJzZSgpKSB7CiAgICAgICAgIG1fbGFzdFBsYW5h
clBvaW50ID0gaW52ZXJzZS52YWx1ZSgpLnByb2plY3RQb2ludChtX2xhc3RQbGFuYXJQb2ludCk7
CiAgICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBpbnZlcnNlLnZhbHVlKCkucHJvamVjdFF1YWQo
bV9sYXN0UGxhbmFyUXVhZCk7CiAgICAgICAgIG1fbGFzdFBsYW5hckFyZWEgPSBpbnZlcnNlLnZh
bHVlKCkucHJvamVjdFF1YWQobV9sYXN0UGxhbmFyQXJlYSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggNGVjZDg1YTYx
MWQzNDJhNzkzYmMyMmJiZGNkY2Y3MTA0ZmYyYTliYS4uYTFmZThmY2MxYzg4ZjI2ZTE2YTYzZjEy
YjY0MzJkNWEwZTgxY2VkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIEltYWdlUXVh
bGl0eUNvbnRyb2xsZXI6OnJlc3RhcnRUaW1lcigpCiAgICAgbV90aW1lci5zdGFydE9uZVNob3Qo
Y0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkKTsKIH0KIAotT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1
YWxpdHk+IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25RdWFsaXR5RnJvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK3N0ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlv
blF1YWxpdHk+IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25RdWFsaXR5RnJv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlLmlt
YWdlUmVuZGVyaW5nKCkpIHsKICAgICBjYXNlIEltYWdlUmVuZGVyaW5nT3B0aW1pemVTcGVlZDoK
QEAgLTExMCw3ICsxMTAsNyBAQCBPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VR
dWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tUwogICAgIGNhc2UgSW1h
Z2VSZW5kZXJpbmdBdXRvOgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogSW50ZXJwb2xhdGlvblF1YWxpdHkg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSYg
aW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQpAQCAtMTE5
LDcgKzExOSw3IEBAIEludGVycG9sYXRpb25RdWFsaXR5IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6
OmNob29zZUludGVycG9sYXRpb25RdWFsaXR5KEdyYXBoaWNzCiAgICAgaWYgKCEoaW1hZ2UuaXNC
aXRtYXBJbWFnZSgpIHx8IGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25EZWZhdWx0Owog
Ci0gICAgaWYgKE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBzdHlsZUludGVycG9sYXRp
b24gPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShvYmplY3QtPnN0eWxlKCkpKQorICAg
IGlmIChzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBzdHlsZUludGVycG9sYXRp
b24gPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShvYmplY3QtPnN0eWxlKCkpKQogICAg
ICAgICByZXR1cm4gc3R5bGVJbnRlcnBvbGF0aW9uLnZhbHVlKCk7CiAKICAgICAvLyBNYWtlIHN1
cmUgdG8gdXNlIHRoZSB1bnpvb21lZCBpbWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFnZSB6
b29tIGlzIGluIGVmZmVjdCwgdGhlIGltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRleCA0ZmY4NDZmN2IwZWI0NmVlMDMzODAw
Zjk1NDQ3MzJkNGE1M2YyYzQ1Li5hZjVmNGI1Nzg3OGU1M2Q5MDkzOTcyMmFmMTAzOTNhNjUwNTY2
Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250
cm9sbGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcihjb25zdCBSZW5k
ZXJWaWV3Jik7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGlu
dGVycG9sYXRpb25RdWFsaXR5RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFs
aXR5RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyQm94
TW9kZWxPYmplY3QqLCBJbWFnZSYsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXpl
Jik7CiAKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2Jq
ZWN0JiByZW5kZXJlcikgeyByZW1vdmVPYmplY3QoJnJlbmRlcmVyKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCBiM2NkOWE3NjE1MTg2NWNkZDcxYTQz
YzljMzNiNGU3NDE3OTYwZDBmLi4yZWFlYjhmN2E3ZDNiY2Y3ZTJiOTc5MGYxYzg2NmEyZjcxMjU4
NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApAQCAtNzUs
NyArNzUsNyBAQCBjbGFzcyBJbmxpbmVJdGVyYXRvciB7CiAgICAgICAgIG1vdmVUbyhvYmplY3Qs
IDApOwogICAgIH0KIAotICAgIHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNp
Z25lZCBvZmZzZXQsIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBPcHRpb25hbDx1bnNp
Z25lZD4oKSkKKyAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQg
b2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPigpKQogICAgIHsKICAgICAgICAgc2V0UmVuZGVyZXIoJm9iamVjdCk7CiAgICAg
ICAgIHNldE9mZnNldChvZmZzZXQpOwpAQCAtODcsOCArODcsOCBAQCBjbGFzcyBJbmxpbmVJdGVy
YXRvciB7CiAgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9wb3M7IH0KICAg
ICB2b2lkIHNldE9mZnNldCh1bnNpZ25lZCBwb3NpdGlvbik7CiAgICAgUmVuZGVyRWxlbWVudCog
cm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBu
ZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX25leHRCcmVha2FibGVQb3Np
dGlvbjsgfQotICAgIHZvaWQgc2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKE9wdGlvbmFsPHVuc2ln
bmVkPiBwb3NpdGlvbikgeyBtX25leHRCcmVha2FibGVQb3NpdGlvbiA9IHBvc2l0aW9uOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXh0QnJlYWthYmxlUG9zaXRpb247IH0KKyAgICB2b2lkIHNldE5leHRCcmVh
a2FibGVQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwb3NpdGlvbikgeyBtX25leHRC
cmVha2FibGVQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CiAgICAgYm9vbCByZWZlcnNUb0VuZE9mUHJl
dmlvdXNOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnNUb0VuZE9mUHJldmlvdXNOb2RlOyB9
CiAgICAgdm9pZCBzZXRSZWZlcnNUb0VuZE9mUHJldmlvdXNOb2RlKCk7CiAKQEAgLTExOSw3ICsx
MTksNyBAQCBjbGFzcyBJbmxpbmVJdGVyYXRvciB7CiAgICAgUmVuZGVyRWxlbWVudCogbV9yb290
IHsgbnVsbHB0ciB9OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlciB7IG51bGxwdHIgfTsK
IAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX25leHRCcmVha2FibGVQb3NpdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX25leHRCcmVha2FibGVQb3NpdGlvbjsKICAgICB1bnNp
Z25lZCBtX3BvcyB7IDAgfTsKIAogICAgIC8vIFRoZXJlIGFyZSBhIGNvdXBsZSBwbGFjZXMgd2hl
cmUgd2Ugd2FudCB0byBkZWNyZW1lbnQgYW4gSW5saW5lSXRlcmF0b3IuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMjNhZGNkMzQzMTcyMWQwNjViYjIy
M2UyNjY4ZDhhMDVmNTIwMjU1Ny4uM2YzMDU1NWFhNGQzYmMwNzU2ZDgzNzZlZjdmNWJiZjlmOWU4
MjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAt
NjUwLDcgKzY1MCw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBiCiAgICAgYm9vbCByZXNwZWN0
SHlwaGVuID0gc2VsZWN0aW9uRW5kID09IGxlbmd0aCAmJiBoYXNIeXBoZW4oKTsKICAgICBpZiAo
cmVzcGVjdEh5cGhlbikKICAgICAgICAgaHlwaGVuYXRlZFN0cmluZyA9IGh5cGhlbmF0ZWRTdHJp
bmdGb3JUZXh0UnVuKHN0eWxlLCBsZW5ndGgpOwotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0
cnVjdFRleHRSdW4oc3R5bGUsIGh5cGhlbmF0ZWRTdHJpbmcsIE9wdGlvbmFsPHVuc2lnbmVkPihs
ZW5ndGgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlLCBo
eXBoZW5hdGVkU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPihsZW5ndGgpKTsKICAgICBp
ZiAocmVzcGVjdEh5cGhlbikKICAgICAgICAgc2VsZWN0aW9uRW5kID0gdGV4dFJ1bi5sZW5ndGgo
KTsKIApAQCAtMTAxNSwxOCArMTAxNSwxOCBAQCBmbG9hdCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlv
bkZvck9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiAgICAgcmV0dXJuIHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigp
LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKS5tYXhYKCk7CiB9CiAK
LVN0cmluZ1ZpZXcgSW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIoT3B0aW9uYWw8dW5z
aWduZWQ+IG92ZXJyaWRpbmdMZW5ndGgpIGNvbnN0CitTdHJpbmdWaWV3IElubGluZVRleHRCb3g6
OnN1YnN0cmluZ1RvUmVuZGVyKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRpbmdMZW5n
dGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0KCkpLnN1
YnN0cmluZyhzdGFydCgpLCBvdmVycmlkaW5nTGVuZ3RoLnZhbHVlT3IobGVuKCkpKTsKKyAgICBy
ZXR1cm4gU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0KCksIG92
ZXJyaWRpbmdMZW5ndGgudmFsdWVfb3IobGVuKCkpKTsKIH0KIAotU3RyaW5nIElubGluZVRleHRC
b3g6Omh5cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
T3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCkgY29uc3QKK1N0cmluZyBJbmxpbmVU
ZXh0Qm94OjpoeXBoZW5hdGVkU3RyaW5nRm9yVGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaGFzSHlwaGVuKCkpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKHN1YnN0cmluZ1Rv
UmVuZGVyKGFsdGVybmF0ZUxlbmd0aCksIHN0eWxlLmh5cGhlblN0cmluZygpKTsKIH0KIAotVGV4
dFJ1biBJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgU3RyaW5nVmlldyBhbHRlcm5hdGVTdHJpbmdUb1JlbmRlciwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGFsdGVybmF0ZUxlbmd0aCkgY29uc3QKK1RleHRSdW4gSW5saW5lVGV4dEJveDo6Y29uc3Ry
dWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFN0cmluZ1ZpZXcgYWx0ZXJuYXRl
U3RyaW5nVG9SZW5kZXIsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCkg
Y29uc3QKIHsKICAgICBpZiAoYWx0ZXJuYXRlU3RyaW5nVG9SZW5kZXIuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlLCBzdWJzdHJpbmdUb1JlbmRlcihhbHRl
cm5hdGVMZW5ndGgpLCByZW5kZXJlcigpLnRleHRMZW5ndGgoKSAtIHN0YXJ0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNTI1OGFhYjcwY2QxM2JhODg2
MzlkYTEyMmIxZWFjYzBmOGFjM2ZjYi4uYjU4MGVjOThkZDQ1Yjk3YzA1YjAwOGY2Zjc3ZTIzN2Ey
OWM4MDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0x
MDcsOSArMTA3LDkgQEAgY2xhc3MgSW5saW5lVGV4dEJveCA6IHB1YmxpYyBJbmxpbmVCb3ggewog
ICAgIExheW91dFVuaXQgc2VsZWN0aW9uQm90dG9tKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBz
ZWxlY3Rpb25IZWlnaHQoKSBjb25zdDsKIAotICAgIFN0cmluZ1ZpZXcgc3Vic3RyaW5nVG9SZW5k
ZXIoT3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRpbmdMZW5ndGggPSB7IH0pIGNvbnN0OwotICAg
IFN0cmluZyBoeXBoZW5hdGVkU3RyaW5nRm9yVGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYsIE9w
dGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVMZW5ndGggPSB7IH0pIGNvbnN0OwotICAgIFRleHRS
dW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYsIFN0cmluZ1ZpZXcgYWx0ZXJu
YXRlU3RyaW5nVG9SZW5kZXIgPSB7IH0sIE9wdGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVMZW5n
dGggPSB7IH0pIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgc3Vic3RyaW5nVG9SZW5kZXIoc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0aCA9IHsgfSkgY29uc3Q7CisgICAgU3Ry
aW5nIGh5cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVuZ3RoID0geyB9KSBjb25zdDsKKyAgICBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmLCBTdHJpbmdWaWV3IGFsdGVy
bmF0ZVN0cmluZ1RvUmVuZGVyID0geyB9LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5h
dGVMZW5ndGggPSB7IH0pIGNvbnN0OwogICAgIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25z
dCBSZW5kZXJTdHlsZSYsIFN0cmluZ1ZpZXcsIHVuc2lnbmVkIG1heGltdW1MZW5ndGgpIGNvbnN0
OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAK
aW5kZXggMmY5NGY4NTExYWFkNTVhMGY4ZTdhMjExZTM3OTJmOTcwMTUwODcyZS4uZmFkZTkzODhj
ZTA4YTdkNDdhZDlhOTZmNzE2MThmYWUxNDQ2ZGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9PcmRlckl0ZXJhdG9yLmNwcApAQCAtNzMsNyArNzMsNyBAQCBSZW5kZXJCb3gqIE9yZGVy
SXRlcmF0b3I6Om5leHQoKQogdm9pZCBPcmRlckl0ZXJhdG9yOjpyZXNldCgpCiB7CiAgICAgbV9j
dXJyZW50Q2hpbGQgPSBudWxscHRyOwotICAgIG1fb3JkZXJJbmRleCA9IE51bGxvcHQ7CisgICAg
bV9vcmRlckluZGV4ID0gc3RkOjpudWxsb3B0OwogfQogCiBPcmRlckl0ZXJhdG9yUG9wdWxhdG9y
OjpPcmRlckl0ZXJhdG9yUG9wdWxhdG9yKE9yZGVySXRlcmF0b3ImIGl0ZXJhdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmgKaW5kZXggN2ZlN2U5YWE1MDc1ZDBiOTcx
ODZhMDVmNTE2OGM5OGI0Y2ZjMDMxMS4uNWQwYWU3N2FjNTVhNzkyOGZmZjNmMDhmMWExZjdkMDlj
YTFmYzNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oCkBAIC01
Nyw3ICs1Nyw3IEBAIGNsYXNzIE9yZGVySXRlcmF0b3IgewogICAgIFJlbmRlckJveCogbV9jdXJy
ZW50Q2hpbGQ7CiAKICAgICBWZWN0b3I8aW50LCAxPiBtX29yZGVyVmFsdWVzOwotICAgIE9wdGlv
bmFsPHNpemVfdD4gbV9vcmRlckluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX29y
ZGVySW5kZXg7CiB9OwogCiBjbGFzcyBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludEluZm8uaAppbmRleCA1MTFhNmJjYzU0ZmE4MTQ5NzRjMjBlNmNmODhk
MTMxYzJlYjg0NjRmLi40YWIzODkzNWU5NGI4ZjMwNjJlZTA5ZDNhMjIyN2QyYTg4OTQwZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC0xMDksNyArMTA5LDcgQEAgc3Ry
dWN0IFBhaW50SW5mbyB7CiAgICAgICAgIGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0Fu
Y2VzdG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBS
ZWN0KHJlY3QpKTsKKyAgICAgICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNl
c3RvclRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QocmVjdCkpOwogICAgICAgICByZWN0LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5mb3Jt
ZWRSZWN0LmxvY2F0aW9uKCkpKTsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUodHJh
bmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggYjJkMTFkZDdlZTExYzdiYjljOWZjYTQ4YTU4YWMwNmI4YWU0OWY3
Mi4uNjEwMmZhNTZlOGM0NTNmMmMwYWNlOGVlMDgwYmUzNTgyMjZjNDBiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDgsMTQgKzI0OCwxNCBAQCBzdHJ1
Y3QgUmVuZGVyQmxvY2tSYXJlRGF0YSB7CiAgICAgUmVuZGVyQmxvY2tSYXJlRGF0YSgpCiAgICAg
ICAgIDogbV9wYWdpbmF0aW9uU3RydXQoMCkKICAgICAgICAgLCBtX3BhZ2VMb2dpY2FsT2Zmc2V0
KDApCi0gICAgICAgICwgbV9mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKE51bGxvcHQpCisgICAg
ICAgICwgbV9mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKHN0ZDo6bnVsbG9wdCkKICAgICB7CiAg
ICAgfQogCiAgICAgTGF5b3V0VW5pdCBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBMYXlvdXRVbml0
IG1fcGFnZUxvZ2ljYWxPZmZzZXQ7CiAKLSAgICBPcHRpb25hbDxSZW5kZXJGbG93VGhyZWFkKj4g
bV9mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyRmxv
d1RocmVhZCo+IG1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jazsKIH07CiAKIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBSZW5kZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1JhcmVE
YXRhPj4gUmVuZGVyQmxvY2tSYXJlRGF0YU1hcDsKQEAgLTI5NDksNyArMjk0OSw3IEBAIGludCBS
ZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBi
b29sIGZpcnN0TGluZSwgTGluCiAgICAgICAgIGJvb2wgaWdub3JlQmFzZWxpbmUgPSAobGF5ZXIo
KSAmJiAobGF5ZXIoKS0+bWFycXVlZSgpIHx8IChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUg
PyAobGF5ZXIoKS0+dmVydGljYWxTY3JvbGxiYXIoKSB8fCBsYXllcigpLT5zY3JvbGxPZmZzZXQo
KS55KCkgIT0gMCkKICAgICAgICAgICAgIDogKGxheWVyKCktPmhvcml6b250YWxTY3JvbGxiYXIo
KSB8fCBsYXllcigpLT5zY3JvbGxPZmZzZXQoKS54KCkgIT0gMCkpKSkgfHwgKGlzV3JpdGluZ01v
ZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKTsKICAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPGlu
dD4gYmFzZWxpbmVQb3MgPSBpZ25vcmVCYXNlbGluZSA/IE9wdGlvbmFsPGludD4oKSA6IGlubGlu
ZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGJh
c2VsaW5lUG9zID0gaWdub3JlQmFzZWxpbmUgPyBzdGQ6Om9wdGlvbmFsPGludD4oKSA6IGlubGlu
ZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0RlcHJl
Y2F0ZWRGbGV4aWJsZUJveCgpKSB7CiAgICAgICAgICAgICAvLyBIaXN0b3JpY2FsbHksIHdlIGRp
ZCB0aGlzIGNoZWNrIGZvciBhbGwgYmFzZWxpbmVzLiBCdXQgd2UgY2FuJ3QKQEAgLTI5NTksNyAr
Mjk1OSw3IEBAIGludCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluCiAgICAgICAgICAgICAvLyBGb3Igc2lt
cGxpY2l0eSwgd2UgdXNlIHRoaXMgZm9yIGFsbCB1c2VzIG9mIGRlcHJlY2F0ZWQgZmxleGJveC4K
ICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZDb250ZW50ID0gZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBjb250ZW50SGVpZ2h0
KCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBjb250ZW50V2lkdGgoKTsKICAg
ICAgICAgICAgIGlmIChiYXNlbGluZVBvcyAmJiBiYXNlbGluZVBvcy52YWx1ZSgpID4gYm90dG9t
T2ZDb250ZW50KQotICAgICAgICAgICAgICAgIGJhc2VsaW5lUG9zID0gT3B0aW9uYWw8aW50Pigp
OworICAgICAgICAgICAgICAgIGJhc2VsaW5lUG9zID0gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGJhc2VsaW5lUG9zKQogICAgICAgICAgICAgcmV0dXJuIGRp
cmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpICsgYmFzZWxpbmVQb3MudmFs
dWUoKSA6IG1hcmdpblJpZ2h0KCkgKyBiYXNlbGluZVBvcy52YWx1ZSgpOwpAQCAtMjk4NCw0MyAr
Mjk4NCw0MyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjptaW5MaW5lSGVpZ2h0Rm9yUmVwbGFj
ZWRSZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlvdQogICAgIHJldHVybiBzdGQ6Om1heDxM
YXlvdXRVbml0PihyZXBsYWNlZEhlaWdodCwgbGluZUhlaWdodChpc0ZpcnN0TGluZSwgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3Np
dGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9j
azo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlckJs
b2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVS
b290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOwor
ICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICBmb3IgKFJlbmRlckJv
eCogY3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5n
Qm94KCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ+IHJlc3VsdCA9IGN1cnItPmZp
cnN0TGluZUJhc2VsaW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4o
Y3Vyci0+bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3Vy
IGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IHJl
c3VsdCA9IGN1cnItPmZpcnN0TGluZUJhc2VsaW5lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8aW50PihjdXJyLT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSk7
IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAgICAgfQogICAgIH0K
IAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
aW50PigpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PGludD4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUg
bGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAh
aXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAogICAgIGJvb2wgaGF2ZU5vcm1hbEZsb3dDaGls
ZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byogYm94ID0gbGFzdENoaWxkQm94KCk7IGJveDsgYm94
ID0gYm94LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAoYm94LT5pc0Zsb2F0
aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IHRydWU7Ci0gICAgICAgIGlmIChPcHRpb25hbDxpbnQ+
IHJlc3VsdCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKSkKLSAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGJveC0+bG9naWNhbFRvcCgpICsgcmVzdWx0LnZh
bHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgIGlm
IChzdGQ6Om9wdGlvbmFsPGludD4gcmVzdWx0ID0gYm94LT5pbmxpbmVCbG9ja0Jhc2VsaW5lKGxp
bmVEaXJlY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50Pihib3gt
PmxvZ2ljYWxUb3AoKSArIHJlc3VsdC52YWx1ZSgpKTsgLy8gVHJhbnNsYXRlIHRvIG91ciBjb29y
ZGluYXRlIHNwYWNlLgogICAgIH0KIAogICAgIGlmICghaGF2ZU5vcm1hbEZsb3dDaGlsZCAmJiBo
YXNMaW5lSWZFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZmlyc3RMaW5l
U3R5bGUoKS5mb250TWV0cmljcygpOwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihmb250
TWV0cmljcy5hc2NlbnQoKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGZvbnRN
ZXRyaWNzLmFzY2VudCgpCiAgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJl
Y3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5oZWlnaHQo
KSkgLyAyCiAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8g
Ym9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0
KCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPGludD4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzUmVuZGVyQmxv
Y2tGbG93T3JSZW5kZXJCdXR0b24oUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCkKQEAgLTMz
NTksNyArMzM1OSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OmNhY2hlZEZsb3dUaHJlYWRDb250YWlu
aW5nQmxvY2tOZWVkc1VwZGF0ZSgpIGNvbnN0CiB2b2lkIFJlbmRlckJsb2NrOjpzZXRDYWNoZWRG
bG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrTmVlZHNVcGRhdGUoKQogewogICAgIFJlbmRlckJsb2Nr
UmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlQmxvY2tSYXJlRGF0YSh0aGlzKTsKLSAgICByYXJl
RGF0YS5tX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2sgPSBOdWxsb3B0OworICAgIHJhcmVEYXRh
Lm1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVuZGVy
Rmxvd1RocmVhZCogUmVuZGVyQmxvY2s6OnVwZGF0ZUNhY2hlZEZsb3dUaHJlYWRDb250YWluaW5n
QmxvY2soUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZGRhYjc2MDk5ZGE5YmQ2YzdkMDcwMWViOTc5ODMx
YmE1NjQ1OTAwZS4uOGQ4NWRjZjQ1YjlkZWE5MTBkOWJmMTkxNWIzMTM1NTM2NzgyYzI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTM0MSw4ICszNDEsOCBAQCBj
bGFzcyBSZW5kZXJCbG9jayA6IHB1YmxpYyBSZW5kZXJCb3ggewogICAgIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRV
bml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKICAgICAKLSAgICBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9u
TW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBEZWxheSB1cGRhdGluZyBzY3JvbGxiYXJz
IHVudGlsIGVuZEFuZENvbW1pdFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9u
KCkgaXMgY2FsbGVkLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQKICAgICAvLyB3aGVuIGEgZmxl
eGJveCBpcyBsYXlpbmcgb3V0IGl0cyBkZXNjZW5kYW50cy4gSWYgbXVsdGlwbGUgY2FsbHMgYXJl
IG1hZGUgdG8gYmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGU5ZWI5
MDQ3MDZhNGVlMzE1NzFlMzUwNWJjMzI4NmM2NmVhYzRmNmUuLmRlZTNmMmM1NmFiY2Q0NTc5YmU2
OGNlYjJkZGU1YzI4ODBlZGFiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCkBAIC0zMDM0LDQzICszMDM0LDQzIEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExh
eW91dFVuCiAgICAgfQogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgp
ICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCiAgICAgaWYgKCFjaGlsZHJlbklubGlu
ZSgpKQogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7CiAK
ICAgICBpZiAoIWhhc0xpbmVzKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAogICAgIGlmIChhdXRvIHNpbXBs
ZUxpbmVMYXlvdXQgPSB0aGlzLT5zaW1wbGVMaW5lTGF5b3V0KCkpCi0gICAgICAgIHJldHVybiBP
cHRpb25hbDxpbnQ+KFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVGbG93Rmlyc3RMaW5lQmFzZWxp
bmUoKnRoaXMsICpzaW1wbGVMaW5lTGF5b3V0KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPGludD4oU2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZUZsb3dGaXJzdExpbmVCYXNlbGluZSgq
dGhpcywgKnNpbXBsZUxpbmVMYXlvdXQpKTsKIAogICAgIEFTU0VSVChmaXJzdFJvb3RCb3goKSk7
CiAgICAgcmV0dXJuIGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSk7
CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5l
KExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGlu
dD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2Rl
IGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYg
IWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICAvLyBOb3RlIHRoYXQgaGVyZSB3ZSBv
bmx5IHRha2UgdGhlIGxlZnQgYW5kIGJvdHRvbSBpbnRvIGNvbnNpZGVyYXRpb24uIE91ciBjYWxs
ZXIgdGFrZXMgdGhlIHJpZ2h0IGFuZCB0b3AgaW50byBjb25zaWRlcmF0aW9uLgogICAgIGZsb2F0
IGJveEhlaWdodCA9IGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBoZWlnaHQoKSAr
IG1fbWFyZ2luQm94LmJvdHRvbSgpIDogd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQoKTsKICAg
ICBmbG9hdCBsYXN0QmFzZWxpbmU7CiAgICAgaWYgKCFjaGlsZHJlbklubGluZSgpKSB7Ci0gICAg
ICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZSA9IFJlbmRlckJsb2NrOjppbmxp
bmVCbG9ja0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24pOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gaW5saW5lQmxvY2tCYXNlbGluZSA9IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5l
KGxpbmVEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIWlubGluZUJsb2NrQmFzZWxpbmUpCiAgICAg
ICAgICAgICByZXR1cm4gaW5saW5lQmxvY2tCYXNlbGluZTsKICAgICAgICAgbGFzdEJhc2VsaW5l
ID0gaW5saW5lQmxvY2tCYXNlbGluZS52YWx1ZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghaGFzTGluZXMoKSkgewogICAgICAgICAgICAgaWYgKCFoYXNMaW5lSWZFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogICAgICAgICAgICAgY29uc3QgYXV0byYgZm9udE1l
dHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8aW50Pihmb250TWV0cmljcy5hc2NlbnQoKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8aW50Pihmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAgICAgICAg
ICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGlu
ZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICAgICArIChs
aW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9w
KCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKTsKICAgICAgICAgfQpAQCAtMzA4
Niw3ICszMDg2LDcgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGkKICAgICAvLyBBY2NvcmRpbmcg
dG8gdGhlIENTUyBzcGVjIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCwg
d2Ugc2hvdWxkbid0IGJlIHBlcmZvcm1pbmcgdGhpcyBtaW4sIGJ1dCBzaG91bGQKICAgICAvLyBp
bnN0ZWFkIGJlIHJldHVybmluZyBib3hIZWlnaHQgZGlyZWN0bHkuIEhvd2V2ZXIsIHdlIGZlZWwg
dGhhdCBhIG1pbiBoZXJlIGlzIGJldHRlciBiZWhhdmlvciAoYW5kIGlzIGNvbnNpc3RlbnQKICAg
ICAvLyBlbm91Z2ggd2l0aCB0aGUgc3BlYyB0byBub3QgY2F1c2UgdG9ucyBvZiBicmVha2FnZXMp
LgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT1ZJU0lC
TEUgPyBsYXN0QmFzZWxpbmUgOiBzdGQ6Om1pbihib3hIZWlnaHQsIGxhc3RCYXNlbGluZSkpOwor
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPVklT
SUJMRSA/IGxhc3RCYXNlbGluZSA6IHN0ZDo6bWluKGJveEhlaWdodCwgbGFzdEJhc2VsaW5lKSk7
CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzZXRTZWxlY3Rpb25TdGF0ZShTZWxlY3Rpb25T
dGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApp
bmRleCAwMmQyNzc3YzA0ZDU4MjNhZDA3ZGQ2MDIyYzdmZmI1NDIyZTI3OWJhLi5hMDYyOTM5ZTAw
NDQ2MTE3N2NiMmE5ZmY3ZTU5YmUyMjgzMjI4ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC00NDksOCArNDQ5LDggQEAgY2xhc3MgUmVuZGVyQmxv
Y2tGbG93IDogcHVibGljIFJlbmRlckJsb2NrIHsKIAogICAgIHZvaWQgY3JlYXRlRmxvYXRpbmdP
YmplY3RzKCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzTXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
dWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCAwNjZjZmI4ZmJiZGU1NzVkZjc0ZDhhM2U5YzI4NWRkMzNiY2FjNTU5
Li45N2Y1ZjNiN2JiY2UxOGY3ODQ3ZDExNjljM2E0MTU0ZDMwYjBiNDgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgT3ZlcnJp
ZGVTaXplTWFwKiBnT3ZlcnJpZGVXaWR0aE1hcCA9IG51bGxwdHI7CiAKICNpZiBFTkFCTEUoQ1NT
X0dSSURfTEFZT1VUKQogLy8gVXNlZCBieSBncmlkIGVsZW1lbnRzIHRvIHByb3Blcmx5IHNpemUg
dGhlaXIgZ3JpZCBpdGVtcy4KLXR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCos
IE9wdGlvbmFsPExheW91dFVuaXQ+PiBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKK3R5cGVkZWYg
V1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4+
IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwogc3RhdGljIE92ZXJyaWRlT3B0aW9uYWxTaXplTWFw
KiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwID0gbnVsbHB0cjsKIHN0
YXRpYyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcCogZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9n
aWNhbFdpZHRoTWFwID0gbnVsbHB0cjsKIHN0YXRpYyBPdmVycmlkZVNpemVNYXAqIGdFeHRyYUlu
bGluZU9mZnNldE1hcCA9IG51bGxwdHI7CkBAIC02NjcsMjYgKzY2NywyNiBAQCBMYXlvdXRVbml0
IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heChMYXlvdXRV
bml0IGxvZ2ljYWxXaQogICAgIHJldHVybiBzdGQ6Om1heChsb2dpY2FsV2lkdGgsIGNvbXB1dGVM
b2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbldp
ZHRoKCksIGF2YWlsYWJsZVdpZHRoLCBjYiwgcmVnaW9uKSk7CiB9CiAKLUxheW91dFVuaXQgUmVu
ZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25z
dAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmlu
c2ljQ29udGVudEhlaWdodCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVU
b1VzZSA9IHN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKS5p
c1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBtYXhIID0g
Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhI
ZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1heFNpemUs
IHN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkK
ICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1pbihsb2dpY2FsSGVpZ2h0LCBtYXhI
LnZhbHVlKCkpOwogICAgIH0KLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRM
b2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRv
VXNlLmxvZ2ljYWxNaW5IZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0
ZUxvZ2ljYWxIZWlnaHRVc2luZyhNaW5TaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNaW5IZWlnaHQo
KSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heChsb2dp
Y2FsSGVpZ2h0LCBjb21wdXRlZExvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CiAgICAgcmV0dXJuIGxv
Z2ljYWxIZWlnaHQ7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Db250ZW50
Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3QKK0xheW91dFVuaXQg
UmVuZGVyQm94Ojpjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWND
b250ZW50SGVpZ2h0KSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNl
ID0gc3R5bGUoKTsKICAgICBpZiAoIXN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLmlzVW5k
ZWZpbmVkKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEggPSBjb21w
dXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVp
Z2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQorICAgICAgICBpZiAoc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBtYXhIID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUs
IHN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkK
ICAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1pbihsb2dpY2FsSGVpZ2h0LCBtYXhI
LnZhbHVlKCkpOwogICAgIH0KLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRD
b250ZW50TG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNaW5TaXpl
LCBzdHlsZVRvVXNlLmxvZ2ljYWxNaW5IZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkp
CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRDb250ZW50TG9naWNh
bEhlaWdodCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNaW5TaXplLCBzdHlsZVRvVXNl
LmxvZ2ljYWxNaW5IZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om1heChsb2dpY2FsSGVpZ2h0LCBjb21wdXRlZENvbnRlbnRMb2dpY2FsSGVpZ2h0
LnZhbHVlKCkpOwogICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0OwogfQpAQCAtMTEyMywxMyArMTEy
MywxMyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdo
dCgpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGgoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6Om92ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkpOwogICAgIHJldHVy
biBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAtPmdldCh0aGlzKTsKIH0K
IAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94OjpvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVp
Z2h0KCkpOwogICAgIHJldHVybiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0
TWFwLT5nZXQodGhpcyk7CkBAIC0xMTQ1LDE0ICsxMTQ1LDE0IEBAIGJvb2wgUmVuZGVyQm94Ojpo
YXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVy
biBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwICYmIGdPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRNYXAtPmNvbnRhaW5zKHRoaXMpOwogfQogCi12b2lk
IFJlbmRlckJveDo6c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRo
KE9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxXaWR0aCkKK3ZvaWQgUmVuZGVyQm94OjpzZXRP
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBsb2dpY2FsV2lkdGgpCiB7CiAgICAgaWYgKCFnT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGhNYXApCiAgICAgICAgIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxXaWR0aE1hcCA9IG5ldyBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKICAgICBnT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAtPnNldCh0aGlzLCBsb2dpY2FsV2lkdGgp
OwogfQogCi12b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0KQordm9pZCBS
ZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQo
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0KQogewogICAgIGlmICghZ092
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcCkKICAgICAgICAgZ092ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcCA9IG5ldyBPdmVycmlkZU9wdGlvbmFsU2l6
ZU1hcDsKQEAgLTEyMjgsNyArMTIyOCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RD
b250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKExheW91dFVuaXQgd2lkdGgpCiAgICAg
cmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIHdpZHRoKTsKIH0KIAotTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKE9wdGlv
bmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94OjphZGp1
c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGhlaWdodCkgY29uc3QKIHsKICAgICBpZiAoIWhlaWdodCkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgICAg
ICBMYXlvdXRVbml0IGhlaWdodFJlc3VsdDsKICAgICAgICAgaWYgKGNoZWNrTWluTWF4SGVpZ2h0
KSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGludHJpbnNpY0hlaWdodCA9IGNvbXB1dGVkVmFs
dWVzLm1fZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAg
ICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVy
cmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFsdWVP
cihjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CisgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBj
b21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9n
aWNhbEhlaWdodCgpLCBpbnRyaW5zaWNIZWlnaHQpLnZhbHVlX29yKGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50KTsKICAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbnN0cmFpbkxvZ2ljYWxIZWln
aHRCeU1pbk1heChoZWlnaHRSZXN1bHQsIGludHJpbnNpY0hlaWdodCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBUaGUgb25seSB0aW1lcyB3ZSBkb24ndCBjaGVjayBtaW4vbWF4
IGhlaWdodCBhcmUgd2hlbiBhIGZpeGVkIGxlbmd0aCBoYXMKQEAgLTI4OTUsMjEgKzI4OTUsMjEg
QEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICB9CiB9CiAKLU9wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRU
eXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2lj
Q29udGVudEhlaWdodCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExl
bmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWln
aHQgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhoZWlnaHRU
eXBlLCBoZWlnaHQsIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQorICAgIGlmIChzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHRVc2luZyhoZWlnaHRUeXBlLCBoZWlnaHQsIGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpKQogICAgICAgICByZXR1cm4gYWRqdXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyhsb2dpY2FsSGVpZ2h0LnZhbHVlKCkpOwotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJv
eDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0
IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVp
Z2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVD
b250ZW50TG9naWNhbEhlaWdodChTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhl
aWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBj
b25zdAogewotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRpbmdTY3Jv
bGxiYXIgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhoZWln
aHRUeXBlLCBoZWlnaHQsIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQorICAgIGlmIChzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250
ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50
cmluc2ljQ29udGVudEhlaWdodCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0
PigwLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhoZWlnaHRJbmNs
dWRpbmdTY3JvbGxiYXIpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKTsKLSAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5n
KExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxD
b250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJB
bmRQYWRkaW5nKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGUgQ1NTIHNpemluZyBzcGVjIGlz
IGNvbnNpZGVyaW5nIGNoYW5naW5nIHdoYXQgbWluLWNvbnRlbnQvbWF4LWNvbnRlbnQgc2hvdWxk
IHJlc29sdmUgdG8uCiAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB0aGlzIGNvZGUgd2lsbCBoYXZl
IHRvIGNoYW5nZS4KQEAgLTI5MjYsMTAgKzI5MjYsMTAgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5n
dGgKICAgICByZXR1cm4gTGF5b3V0VW5pdCgwKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhT
aXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRV
c2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAogewogICAgIGlm
IChoZWlnaHQuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybiBoZWlnaHRUeXBlID09IE1pblNpemUg
PyBPcHRpb25hbDxMYXlvdXRVbml0PigwKSA6IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBoZWln
aHRUeXBlID09IE1pblNpemUgPyBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogc3RkOjpu
dWxsb3B0OwogICAgIC8vIEZJWE1FOiBUaGUgQ1NTIHNpemluZyBzcGVjIGlzIGNvbnNpZGVyaW5n
IGNoYW5naW5nIHdoYXQgbWluLWNvbnRlbnQvbWF4LWNvbnRlbnQgc2hvdWxkIHJlc29sdmUgdG8u
CiAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB0aGlzIGNvZGUgd2lsbCBoYXZlIHRvIGNoYW5nZS4K
ICAgICBpZiAoaGVpZ2h0LmlzSW50cmluc2ljKCkpCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCBPcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9n
aWNhbEhlaWdodFVzaW5nKFNpegogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChoZWlnaHQudmFs
dWUoKSk7CiAgICAgaWYgKGhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAg
cmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwotICAgIHJldHVy
biBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgUmVuZGVyQm94
Ojpza2lwQ29udGFpbmluZ0Jsb2NrRm9yUGVyY2VudEhlaWdodENhbGN1bGF0aW9uKGNvbnN0IFJl
bmRlckJveCYgY29udGFpbmluZ0Jsb2NrLCBib29sIGlzUGVycGVuZGljdWxhcldyaXRpbmdNb2Rl
KSBjb25zdApAQCAtMjk2OCw5ICsyOTY4LDkgQEAgc3RhdGljIGJvb2wgdGFibGVDZWxsU2hvdWxk
SGF2ZVplcm9Jbml0aWFsU2l6ZShjb25zdCBSZW5kZXJCbG9jayYgYmxvY2ssIGJvb2wgc2MKICAg
ICByZXR1cm4gc2Nyb2xsc092ZXJmbG93WSAmJiAoIWNlbGwuc3R5bGUoKS5sb2dpY2FsSGVpZ2h0
KCkuaXNBdXRvKCkgfHwgIWNlbGwudGFibGUoKS0+c3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNB
dXRvKCkpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJj
ZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWln
aHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gYXZhaWxhYmxlSGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlSGVpZ2h0OwogCiAgICAgYm9vbCBza2lwcGVkQXV0b0hlaWdodENvbnRhaW5pbmdCbG9jayA9
IGZhbHNlOwogICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwpAQCAtMzAw
OCwyMyArMzAwOCwyMyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQ
ZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaQogICAgICAgICAgICAgLy8g
ZG9uJ3QgY2FyZSBpZiB0aGUgY2VsbCBzcGVjaWZpZWQgYSBoZWlnaHQgb3Igbm90LiBXZSBqdXN0
IGFsd2F5cyBtYWtlIG91cnNlbHZlcwogICAgICAgICAgICAgLy8gYmUgYSBwZXJjZW50YWdlIG9m
IHRoZSBjZWxsJ3MgY3VycmVudCBjb250ZW50IGhlaWdodC4KICAgICAgICAgICAgIGlmICghY2It
Pmhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gdGFibGVDZWxsU2hvdWxkSGF2ZVplcm9Jbml0aWFsU2l6ZSgqY2IsIHNjcm9sbHNPdmVyZmxv
d1koKSkgPyBPcHRpb25hbDxMYXlvdXRVbml0PigpIDogTnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2ZVplcm9Jbml0aWFsU2l6ZSgqY2IsIHNjcm9sbHNP
dmVyZmxvd1koKSkgPyBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KCkgOiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNiLT5vdmVycmlkZUxvZ2ljYWxDb250
ZW50SGVpZ2h0KCk7CiAgICAgICAgICAgICBpbmNsdWRlQm9yZGVyUGFkZGluZyA9IHRydWU7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGNic3R5bGUubG9naWNhbEhlaWdodCgpLmlzRml4ZWQo
KSkgewogICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQgPSBjYi0+YWRqdXN0Q29u
dGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdChjYnN0eWxlLmxvZ2lj
YWxIZWlnaHQoKS52YWx1ZSgpKSk7Ci0gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4
PExheW91dFVuaXQ+KDAsIGNiLT5jb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWlu
TWF4KGNvbnRlbnRCb3hIZWlnaHQgLSBjYi0+c2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpLCBOdWxs
b3B0KSk7CisgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDAs
IGNiLT5jb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KGNvbnRlbnRCb3hI
ZWlnaHQgLSBjYi0+c2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpKTsKICAg
ICB9IGVsc2UgaWYgKGNic3R5bGUubG9naWNhbEhlaWdodCgpLmlzUGVyY2VudE9yQ2FsY3VsYXRl
ZCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7CiAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gcmVjdXIgYW5kIGNvbXB1dGUgdGhlIHBlcmNlbnRhZ2UgaGVpZ2h0
IGZvciBvdXIgY29udGFpbmluZyBibG9jay4KLSAgICAgICAgaWYgKE9wdGlvbmFsPExheW91dFVu
aXQ+IGhlaWdodFdpdGhTY3JvbGxiYXIgPSBjYi0+Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVp
Z2h0KGNic3R5bGUubG9naWNhbEhlaWdodCgpKSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBoZWlnaHRXaXRoU2Nyb2xsYmFyID0gY2ItPmNvbXB1dGVQZXJjZW50YWdl
TG9naWNhbEhlaWdodChjYnN0eWxlLmxvZ2ljYWxIZWlnaHQoKSkpIHsKICAgICAgICAgICAgIExh
eW91dFVuaXQgY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxiYXIgPSBjYi0+YWRqdXN0Q29udGVu
dEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoaGVpZ2h0V2l0aFNjcm9sbGJhcik7CiAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCBmb3IgbWluL21heCBoZWlnaHQgYmVjYXVzZSB0
aGlzIG1ldGhvZCBkb2VzIG5vdAogICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBtaW4vbWF4IG9m
IHRoZSBjdXJyZW50IGJsb2NrLCBpdHMgY2FsbGVyIGRvZXMuIFNvIHRoZQogICAgICAgICAgICAg
Ly8gcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpbGwgbm90IGhhdmUgYmVl
biBhZGp1c3RlZAogICAgICAgICAgICAgLy8geWV0LgotICAgICAgICAgICAgTGF5b3V0VW5pdCBj
b250ZW50Qm94SGVpZ2h0ID0gY2ItPmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlN
aW5NYXgoY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxiYXIgLSBjYi0+c2Nyb2xsYmFyTG9naWNh
bEhlaWdodCgpLCBOdWxsb3B0KTsKKyAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudEJveEhl
aWdodCA9IGNiLT5jb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KGNvbnRl
bnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyIC0gY2ItPnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwg
c3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4PExh
eW91dFVuaXQ+KDAsIGNvbnRlbnRCb3hIZWlnaHQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7CkBAIC0zMTI3LDcg
KzMxMjcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIExlbgogewogICAgIEFTU0VSVChoZWlnaHRU
eXBlID09IE1pblNpemUgfHwgaGVpZ2h0VHlwZSA9PSBNYWluT3JQcmVmZXJyZWRTaXplIHx8ICFs
b2dpY2FsSGVpZ2h0LmlzQXV0bygpKTsKICAgICBpZiAoaGVpZ2h0VHlwZSA9PSBNaW5TaXplICYm
IGxvZ2ljYWxIZWlnaHQuaXNBdXRvKCkpCi0gICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94
TG9naWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PigwKSk7CisgICAg
ICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+KDApKTsKIAogICAgIHN3aXRjaCAobG9naWNhbEhlaWdodC50
eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaXhlZDoKQEAgLTMxOTEsNyArMzE5MSw3IEBAIExheW91
dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5
cGUgaGVpZ2h0VHlwZSwgTGVuCiAKIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dp
Y2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5cGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChhdmFpbGFibGVMb2dp
Y2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGhlaWdodFR5cGUpLCBOdWxs
b3B0KTsKKyAgICByZXR1cm4gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KGF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaGVpZ2h0VHlwZSks
IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dp
Y2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlw
ZSBoZWlnaHRUeXBlKSBjb25zdApAQCAtMzIxMSw3ICszMjExLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBMZW5ndGgmIGgsIEF2YWls
YWJsZUxvZ2kKICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9y
Qm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGgsIGF2YWlsYWJsZUhlaWdodCkpOwogICAgIH0KIAot
ICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIgPSBj
b21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJy
ZWRTaXplLCBoLCBOdWxsb3B0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBo
ZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2lj
YWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBoLCBzdGQ6Om51bGxvcHQpKQogICAg
ICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgYWRqdXN0Q29udGVudEJveExvZ2lj
YWxIZWlnaHRGb3JCb3hTaXppbmcoaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyKSAtIHNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgbG9naWNhbFRvcC9sb2dp
Y2FsQm90dG9tIGhlcmUgdG8gY29ycmVjdGx5IGhhbmRsZSB2ZXJ0aWNhbCB3cml0aW5nLW1vZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNGJiM2NhZDdiZWVkOTQ5ZGJh
NDk3ZGM5MWNlNTFlMTgyOTRkY2IyMS4uYzRhOTM5NWY5NmUxMjFlZDlkZjdjYjI5NmMxMGI1NjI3
MDQ4NjhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtODUsOCArODUs
OCBAQCBjbGFzcyBSZW5kZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogICAg
IExheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGhlaWdodCgpIDogd2lkdGgoKTsgfQogCiAgICAgTGF5b3V0
VW5pdCBjb25zdHJhaW5Mb2dpY2FsV2lkdGhJblJlZ2lvbkJ5TWluTWF4KExheW91dFVuaXQsIExh
eW91dFVuaXQsIFJlbmRlckJsb2NrJiwgUmVuZGVyUmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0Owot
ICAgIExheW91dFVuaXQgY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdo
dCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdo
dEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb25zdHJhaW5M
b2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIExheW91
dFVuaXQgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVu
dEhlaWdodCkgY29uc3Q7CiAKICAgICB2b2lkIHNldExvZ2ljYWxMZWZ0KExheW91dFVuaXQgbGVm
dCkKICAgICB7CkBAIC0zMTAsMTIgKzMxMCwxMiBAQCBjbGFzcyBSZW5kZXJCb3ggOiBwdWJsaWMg
UmVuZGVyQm94TW9kZWxPYmplY3QgewogICAgIHZvaWQgY2xlYXJPdmVycmlkZUxvZ2ljYWxDb250
ZW50V2lkdGgoKTsKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gb3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkg
Y29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gb3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNPdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRPdmVycmlkZUNvbnRhaW5p
bmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoT3B0aW9uYWw8TGF5b3V0VW5pdD4pOwotICAgIHZv
aWQgc2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodChPcHRpb25h
bDxMYXlvdXRVbml0Pik7CisgICAgdm9pZCBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsV2lkdGgoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pik7CisgICAgdm9pZCBzZXRP
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4pOwogICAgIHZvaWQgY2xlYXJDb250YWluaW5nQmxvY2tPdmVycmlkZVNpemUo
KTsKICAgICB2b2lkIGNsZWFyT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhl
aWdodCgpOwogICAgIExheW91dFVuaXQgZXh0cmFJbmxpbmVPZmZzZXQoKSBjb25zdDsKQEAgLTMz
MCw3ICszMzAsNyBAQCBjbGFzcyBSZW5kZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmpl
Y3QgewogICAgIExheW91dFVuaXQgYWRqdXN0Qm9yZGVyQm94TG9naWNhbFdpZHRoRm9yQm94U2l6
aW5nKExheW91dFVuaXQgd2lkdGgpIGNvbnN0OwogICAgIExheW91dFVuaXQgYWRqdXN0Qm9yZGVy
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IGhlaWdodCkgY29uc3Q7CiAg
ICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKExh
eW91dFVuaXQgd2lkdGgpIGNvbnN0OwotICAgIExheW91dFVuaXQgYWRqdXN0Q29udGVudEJveExv
Z2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25z
dDsKKyAgICBMYXlvdXRVbml0IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdDsKIAogICAgIHN0cnVj
dCBDb21wdXRlZE1hcmdpblZhbHVlcyB7CiAgICAgICAgIENvbXB1dGVkTWFyZ2luVmFsdWVzKCkK
QEAgLTQyMCw5ICs0MjAsOSBAQCBjbGFzcyBSZW5kZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94TW9k
ZWxPYmplY3QgewogICAgIExheW91dFVuaXQgc2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0
cyhMYXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcnQsIExheW91dFVuaXQgY2hpbGRNYXJnaW5FbmQs
IGNvbnN0IFJlbmRlckJsb2NrJiBjYiwgUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAKICAgICBMYXlv
dXRVbml0IGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKFNpemVUeXBlLCBMZW5ndGgg
bG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgY29uc3QgUmVu
ZGVyQmxvY2smIGNvbnRhaW5pbmdCbG9jaywgUmVuZGVyUmVnaW9uKikgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgY29u
c3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVDb250ZW50TG9n
aWNhbEhlaWdodChTaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVU
eXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2lj
Q29udGVudEhlaWdodCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21w
dXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChT
aXplVHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
aW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlw
ZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmlu
c2ljQ29udGVudEhlaWdodCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGhVc2luZyhTaXplVHlwZSwgTGVuZ3RoIHdpZHRoKSBjb25zdDsKICAgICBMYXlv
dXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChM
YXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRl
QWN0dWFsKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHRVc2luZyhTaXplVHlwZSwgTGVuZ3RoIGhlaWdodCkgY29uc3Q7CkBAIC00MzQsNyArNDM0LDcg
QEAgY2xhc3MgUmVuZGVyQm94IDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsKICAgICBi
b29sIGhhc0RlZmluaXRlTG9naWNhbFdpZHRoKCkgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgcGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGVGcm9tQmxvY2soY29uc3QgUmVuZGVyQmxv
Y2smIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBvdXRPZkZsb3dQb3NpdGlvbmVkLCBib29sIHNjcm9s
bHNPdmVyZmxvd1kpOwogICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0
KGNvbnN0IExlbmd0aCYgaGVpZ2h0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gY29udGVudExvZ2ljYWxXaWR0aCgpOyB9CiAgICAgdmlydHVhbCBMYXlv
dXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGUp
IGNvbnN0OwpAQCAtNTE2LDggKzUxNiw4IEBAIGNsYXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5k
ZXJCb3hNb2RlbE9iamVjdCB7CiAgICAgCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0Zsb2F0
UGFpbnRpbmdMYXllcigpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsgfQotICAg
IHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25N
b2RlKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxpbnQ+KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBp
ZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0aGUgYmFzZWxpbmUgb2Yg
YW4gaW5saW5lLWJsb2NrLgorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7IH0KKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCB7IHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsgfSAvLyBSZXR1cm5z
IGVtcHR5IGlmIHdlIHNob3VsZCBza2lwIHRoaXMgYm94IHdoZW4gY29tcHV0aW5nIHRoZSBiYXNl
bGluZSBvZiBhbiBpbmxpbmUtYmxvY2suCiAKICAgICBib29sIHNocmlua1RvQXZvaWRGbG9hdHMo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Q7CkBAIC02NDks
NyArNjQ5LDcgQEAgY2xhc3MgUmVuZGVyQm94IDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0
IHsKICAgICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyYsIFJlbmRlclJlZ2lvbiogPSBudWxscHRyKSBjb25zdDsKIAogICAgIExh
eW91dFVuaXQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKExlbmd0aCBsb2dpY2Fs
V2lkdGhMZW5ndGgsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0
IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0OwotICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2lj
YWxIZWlnaHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWln
aHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdo
dFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykg
Y29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNl
ZCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVwbGFjZWQoKSAmJiAhaXNJbmxpbmVCbG9ja09ySW5saW5l
VGFibGUoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q29tYmluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVU
ZXh0LmNwcAppbmRleCBiNTAzYTEzODA5MzQwZTdhYWEyOTZlMGJkNzhjNWU2YjAwMmE1OGU4Li4x
MjY1MTlmMTU0MTlkMDg5OThmNzhjYzA4YzNhNjRhZGMzNGJjZWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKQEAgLTcxLDEwICs3MSwxMCBA
QCBmbG9hdCBSZW5kZXJDb21iaW5lVGV4dDo6d2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBGb250Q2FzY2FkZQogICAgIHJldHVybiBSZW5kZXJUZXh0Ojp3aWR0aChm
cm9tLCBsZW5ndGgsIGZvbnQsIHhQb3NpdGlvbiwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxv
dyk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UG9pbnQ+IFJlbmRlckNvbWJpbmVUZXh0Ojpjb21wdXRl
VGV4dE9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PEZsb2F0UG9pbnQ+IFJlbmRlckNvbWJpbmVUZXh0Ojpjb21wdXRlVGV4dE9yaWdpbihjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzQ29tYmluZWQpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gVmlzdWFsbHkgY2VudGVyIG1fY29tYmluZWRUZXh0V2lkdGgvQXNjZW50L0Rlc2NlbnQgd2l0
aGluIGJveFJlY3QKICAgICBGbG9hdFBvaW50IHJlc3VsdCA9IGJveFJlY3QubWluWE1heFlDb3Ju
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5l
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKaW5k
ZXggN2YxOWUyODMxN2Y4ODUyNjEyYzRhMGZkODg3NDcxY2UzODNkMjUwNi4uM2MzMjEwMzM0ODNh
ZDBmMzI2NGU0MGFlNmJjZjE0MzAxNmU1MzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmVuZGVyQ29t
YmluZVRleHQgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGV4dCB7CiAgICAgVGV4dCYgdGV4dE5vZGUo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUZXh0Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CiAKICAgICB2b2lkIGNvbWJpbmVUZXh0KCk7Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gY29t
cHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGNvbXB1dGVUZXh0T3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYg
Ym94UmVjdCkgY29uc3Q7CiAgICAgU3RyaW5nIGNvbWJpbmVkU3RyaW5nRm9yUmVuZGVyaW5nKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0NvbWJpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbWJpbmVk
OyB9CiAgICAgZmxvYXQgY29tYmluZWRUZXh0V2lkdGgoY29uc3QgRm9udENhc2NhZGUmIGZvbnQp
IGNvbnN0IHsgcmV0dXJuIGZvbnQuc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDgyYWRi
Y2Q0MWYwOTg4YThiNDllZGYwOWVmOTIxZTA3YmY5Y2QyZDQuLjU2M2U1MzZkNmExNjYwMmY0Y2U5
NDUwMzk2NDBmNDEwZjJlOWM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC00MzMsNyArNDMzLDcg
QEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3go
Ym9vbCByZWxheW91dENoaWxkcmVuKQogCiAgICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdo
dCBhbmQgb3ZlcmZsb3cgaGVpZ2h0LgogICAgICAgICAgICAgaWYgKHN0eWxlKCkuYm94QWxpZ24o
KSA9PSBCQkFTRUxJTkUpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNo
aWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQt
Pm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNo
aWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxk
LT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5tYXJn
aW5Ub3AoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGRlc2NlbnQgPSAoY2hpbGQtPmhl
aWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpIC0gYXNjZW50OwogCkBAIC01
MDgsNyArNTA4LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhv
cml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgICAgICBj
aGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgKGNv
bnRlbnRIZWlnaHQoKSAtIChjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5F
eHRlbnQoKSkpIC8gMik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGNhc2UgQkJBU0VMSU5FOiB7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNj
ZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkg
KyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOworICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWln
aHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CiAgICAgICAgICAgICAgICAgICAgIGFzY2Vu
dCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSArPSBj
aGlsZC0+bWFyZ2luVG9wKCkgKyAobWF4QXNjZW50IC0gYXNjZW50KTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAppbmRleCA0OWNhMmFjZDI4NGFmMWNkMWYyYTc5ZWMwMmI3NmEwMzg5NDMzZGUyLi5j
NWQwZjcwMTUwZDNiOWNmNjA4NzUzNWQwOThmYjBmODM5YWU1NmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE3NSwxNiArMTc1LDE2
IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KGNvbnN0IFJl
bmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uCiAKIGludCBSZW5kZXJGbGV4aWJsZUJveDo6YmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVj
dGlvbiwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKLSAgICBpbnQgYmFzZWxpbmUgPSBmaXJz
dExpbmVCYXNlbGluZSgpLnZhbHVlT3Ioc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94
KCp0aGlzLCBkaXJlY3Rpb24pKTsKKyAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGlu
ZSgpLnZhbHVlX29yKHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGly
ZWN0aW9uKSk7CiAKICAgICBpbnQgbWFyZ2luQXNjZW50ID0gZGlyZWN0aW9uID09IEhvcml6b250
YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpOwogICAgIHJldHVybiBiYXNlbGlu
ZSArIG1hcmdpbkFzY2VudDsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhp
YmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01v
ZGVSb290KCkgfHwgbV9udW1iZXJPZkluRmxvd0NoaWxkcmVuT25GaXJzdExpbmUgPD0gMCkKLSAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8aW50PigpOwogICAgIFJlbmRlckJveCogYmFzZWxpbmVDaGlsZCA9IG51bGxwdHI7CiAgICAg
aW50IGNoaWxkTnVtYmVyID0gMDsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBtX29yZGVy
SXRlcmF0b3IuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLm5leHQoKSkg
ewpAQCAtMjAzLDI3ICsyMDMsMjcgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgIH0KIAogICAgIGlmICghYmFzZWxpbmVDaGls
ZCkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
b3B0aW9uYWw8aW50PigpOwogCiAgICAgaWYgKCFpc0NvbHVtbkZsb3coKSAmJiBoYXNPcnRob2dv
bmFsRmxvdygqYmFzZWxpbmVDaGlsZCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGNy
b3NzQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxv
Z2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oY3Jvc3NBeGlz
RXh0ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRv
cCgpKTsKICAgICBpZiAoaXNDb2x1bW5GbG93KCkgJiYgIWhhc09ydGhvZ29uYWxGbG93KCpiYXNl
bGluZUNoaWxkKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4obWFpbkF4aXNFeHRlbnRG
b3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOwor
ICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KG1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQo
KmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKIAotICAgIE9w
dGlvbmFsPGludD4gYmFzZWxpbmUgPSBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgp
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0
TGluZUJhc2VsaW5lKCk7CiAgICAgaWYgKCFiYXNlbGluZSkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50byBmaXJzdExpbmVCb3hCYXNlbGluZSBhbmQg
c3RvcCBiYWlsaW5nIG91dCBpZiB3ZSdyZSBhIHdyaXRpbmcgbW9kZSByb290LgogICAgICAgICAv
LyBUaGlzIHdvdWxkIGFsc28gZml4IHNvbWUgY2FzZXMgd2hlcmUgdGhlIGZsZXhib3ggaXMgb3J0
aG9nb25hbCB0byBpdHMgY29udGFpbmVyLgogICAgICAgICBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24gPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0
aWNhbExpbmU7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN5bnRoZXNpemVkQmFzZWxp
bmVGcm9tQ29udGVudEJveCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGJhc2VsaW5lQ2hp
bGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oc3lu
dGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCpiYXNlbGluZUNoaWxkLCBkaXJlY3Rpb24p
ICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gT3B0
aW9uYWw8aW50PihiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgp
KTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNl
bGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhp
YmxlQm94OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikg
Y29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0CiB7Ci0gICAgaWYgKE9w
dGlvbmFsPGludD4gYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpKQorICAgIGlmIChzdGQ6
Om9wdGlvbmFsPGludD4gYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpKQogICAgICAgICBy
ZXR1cm4gYmFzZWxpbmU7CiAKICAgICBpbnQgbWFyZ2luQXNjZW50ID0gZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpOwpAQCAtNDU1LDEyICs0
NTUsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bWFpbkF4aXNDb250ZW50RXh0
ZW50KExheW91dFVuaXQgY29udGVudExvZ2ljYWxIZWkKICAgICByZXR1cm4gY29udGVudExvZ2lj
YWxXaWR0aCgpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgU2l6
ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSkKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsIFNpemVUeXBlIHNpemVUeXBlLCBjb25zdCBMZW5ndGgmIHNp
emUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3JvbmcgZm9yIG9ydGhvZ29uYWwgZmxvd3Mu
IEl0IHNob3VsZCB1c2UgdGhlIGZsZXhib3gncyB3cml0aW5nLW1vZGUsIG5vdCB0aGUgY2hpbGQn
cyBpbiBvcmRlcgogICAgIC8vIHRvIGZpZ3VyZSBvdXQgdGhlIGxvZ2ljYWwgaGVpZ2h0L3dpZHRo
LgogICAgIGlmIChpc0NvbHVtbkZsb3coKSkgewotICAgICAgICAvLyBXZSBkb24ndCBoYXZlIHRv
IGNoZWNrIGZvciAiYXV0byIgaGVyZSAtIGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodCB3aWxs
IGp1c3QgcmV0dXJuIE51bGxvcHQgZm9yIHRoYXQgY2FzZSBhbnl3YXkuCisgICAgICAgIC8vIFdl
IGRvbid0IGhhdmUgdG8gY2hlY2sgZm9yICJhdXRvIiBoZXJlIC0gY29tcHV0ZUNvbnRlbnRMb2dp
Y2FsSGVpZ2h0IHdpbGwganVzdCByZXR1cm4gc3RkOjpudWxsb3B0IGZvciB0aGF0IGNhc2UgYW55
d2F5LgogICAgICAgICBpZiAoc2l6ZS5pc0ludHJpbnNpYygpKQogICAgICAgICAgICAgY29uc3Rf
Y2FzdDxSZW5kZXJCb3gmPihjaGlsZCkubGF5b3V0SWZOZWVkZWQoKTsgLy8gRklYTUU6IFNob3Vs
ZCBub3QgbmVlZCB0byBkbyBhIGxheW91dCBoZXJlLgogICAgICAgICByZXR1cm4gY2hpbGQuY29t
cHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KHNpemVUeXBlLCBzaXplLCBjaGlsZC5sb2dpY2FsSGVp
Z2h0KCkgLSBjaGlsZC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKQEAgLTY4NSw3
ICs2ODUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRNYWluQXhp
c0NvbnRlbnRFeHRlbnRGb3JDaGlsZChSZW5kZXJCb3gmCiAgICAgICAgIEFTU0VSVChtYWluQXhp
c0V4dGVudCAtIG1haW5BeGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNoaWxkKGNoaWxkKSA+
PSAwKTsKICAgICAgICAgcmV0dXJuIG1haW5BeGlzRXh0ZW50IC0gbWFpbkF4aXNCb3JkZXJBbmRQ
YWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOwogICAgIH0KLSAgICByZXR1cm4gY29tcHV0ZU1h
aW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIGZsZXhCYXNp
cykudmFsdWVPcigwKTsKKyAgICByZXR1cm4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQo
Y2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUsIGZsZXhCYXNpcykudmFsdWVfb3IoMCk7CiB9CiAK
IHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJdGVtcyhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIFZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cykKQEAgLTgyNSw3ICs4MjUs
NyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94Ojp1cGRhdGVBdXRvTWFyZ2luc0luQ3Jvc3NBeGlz
KFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaQogCiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxl
Qm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkKQogewotICAgIExh
eW91dFVuaXQgYXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNyb3Nz
QXhpc0V4dGVudEZvckNoaWxkKGNoaWxkKSk7CisgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGls
ZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKGNo
aWxkKSk7CiAgICAgcmV0dXJuIGFzY2VudCArIGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxk
KGNoaWxkKTsKIH0KIApAQCAtODY5LDEyICs4NjksMTIgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJv
eDo6Y3Jvc3NBeGlzTGVuZ3RoSXNEZWZpbml0ZShjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBjb25z
dAogfQogCiAgICAgCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29t
cHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
TGVuZ3RoIGNyb3NzU2l6ZUxlbmd0aCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGNoaWxkLmhhc0FzcGVjdFJhdGlvKCkpOwogICAgIEFTU0VSVChjaGlsZC5pbnRy
aW5zaWNTaXplKCkuaGVpZ2h0KCkgPiAwKTsKICAgICAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBjcm9zc1NpemU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjcm9zc1NpemU7CiAg
ICAgaWYgKGNyb3NzU2l6ZUxlbmd0aC5pc0ZpeGVkKCkpCiAgICAgICAgIGNyb3NzU2l6ZSA9IExh
eW91dFVuaXQoY3Jvc3NTaXplTGVuZ3RoLnZhbHVlKCkpOwogICAgIGVsc2UgewpAQCAtOTAwLDEz
ICs5MDAsMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXpl
Rm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY28KICAgICBMZW5ndGggY3Jvc3NNYXgg
PSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLm1heEhlaWdodCgpIDogY2hpbGQu
c3R5bGUoKS5tYXhXaWR0aCgpOwogCiAgICAgaWYgKGNyb3NzQXhpc0xlbmd0aElzRGVmaW5pdGUo
Y2hpbGQsIGNyb3NzTWF4KSkgewotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtYXhWYWx1
ZSA9IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjcm9zc01heCk7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4VmFsdWUgPSBjb21wdXRlTWFp
blNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY3Jvc3NNYXgpOwogICAgICAgICBpZiAo
bWF4VmFsdWUpCiAgICAgICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihtYXhWYWx1ZS52YWx1
ZSgpLCBjaGlsZFNpemUpOwogICAgIH0KICAgICAKICAgICBpZiAoY3Jvc3NBeGlzTGVuZ3RoSXNE
ZWZpbml0ZShjaGlsZCwgY3Jvc3NNaW4pKSB7Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IG1pblZhbHVlID0gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY2hpbGQsIGNy
b3NzTWluKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtaW5WYWx1ZSA9IGNv
bXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjcm9zc01pbik7CiAgICAg
ICAgIGlmIChtaW5WYWx1ZSkKICAgICAgICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWF4KG1pblZh
bHVlLnZhbHVlKCksIGNoaWxkU2l6ZSk7CiAgICAgfQpAQCAtOTI3LDE1ICs5MjcsMTUgQEAgYm9v
bCBSZW5kZXJGbGV4aWJsZUJveDo6dXNlQ2hpbGRBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gm
IGNoaWxkKSBjb25zdAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRT
aXplRm9yTWluQW5kTWF4KGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgY2hpbGRT
aXplKQogewogICAgIExlbmd0aCBtYXggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHls
ZSgpLm1heFdpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLm1heEhlaWdodCgpOwotICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IG1heEV4dGVudCA9IE51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBtYXhFeHRlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1heC5pc1NwZWNpZmll
ZE9ySW50cmluc2ljKCkpIHsKICAgICAgICAgbWF4RXh0ZW50ID0gY29tcHV0ZU1haW5BeGlzRXh0
ZW50Rm9yQ2hpbGQoY2hpbGQsIE1heFNpemUsIG1heCk7Ci0gICAgICAgIGNoaWxkU2l6ZSA9IHN0
ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY2hpbGRTaXplKSk7CisgICAgICAg
IGNoaWxkU2l6ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNoaWxk
U2l6ZSkpOwogICAgIH0KICAgICAKICAgICBMZW5ndGggbWluID0gaXNIb3Jpem9udGFsRmxvdygp
ID8gY2hpbGQuc3R5bGUoKS5taW5XaWR0aCgpIDogY2hpbGQuc3R5bGUoKS5taW5IZWlnaHQoKTsK
ICAgICBpZiAobWluLmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KGNoaWxkU2l6ZSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1p
blNpemUsIG1pbikudmFsdWVPcihjaGlsZFNpemUpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4
KGNoaWxkU2l6ZSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUs
IG1pbikudmFsdWVfb3IoY2hpbGRTaXplKSk7CiAgICAgCiAgICAgaWYgKCFpc0ZsZXhpYmxlQm94
SW1wbCgpICYmIG1pbi5pc0F1dG8oKSAmJiBtYWluQXhpc092ZXJmbG93Rm9yQ2hpbGQoY2hpbGQp
ID09IE9WSVNJQkxFICYmICEoaXNDb2x1bW5GbG93KCkgJiYgaXM8UmVuZGVyRmxleGlibGVCb3g+
KGNoaWxkKSkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ1NT
IGZsZXhib3ggc2VjdGlvbiA0LjUgd2hpY2ggZGVmaW5lcyB0aGUgbWluaW11bSBzaXplIG9mICJw
dXJlIiBmbGV4CkBAIC05NDcsMTcgKzk0NywxNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxl
Qm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY29uc3QgUmVuZGVyQm94JiBjaGlsZAog
ICAgICAgICBBU1NFUlQoY29udGVudFNpemUgPj0gMCk7CiAgICAgICAgIGlmIChjaGlsZC5oYXNB
c3BlY3RSYXRpbygpICYmIGNoaWxkLmludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA+IDApCiAgICAg
ICAgICAgICBjb250ZW50U2l6ZSA9IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NB
eGlzTWluQW5kTWF4KGNoaWxkLCBjb250ZW50U2l6ZSk7Ci0gICAgICAgIGNvbnRlbnRTaXplID0g
c3RkOjptaW4oY29udGVudFNpemUsIG1heEV4dGVudC52YWx1ZU9yKGNvbnRlbnRTaXplKSk7Cisg
ICAgICAgIGNvbnRlbnRTaXplID0gc3RkOjptaW4oY29udGVudFNpemUsIG1heEV4dGVudC52YWx1
ZV9vcihjb250ZW50U2l6ZSkpOwogICAgICAgICAKICAgICAgICAgTGVuZ3RoIG1haW5TaXplID0g
aXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQuc3R5bGUoKS53aWR0aCgpIDogY2hpbGQuc3R5bGUo
KS5oZWlnaHQoKTsKICAgICAgICAgaWYgKG1haW5BeGlzTGVuZ3RoSXNEZWZpbml0ZShjaGlsZCwg
bWFpblNpemUpKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHJlc29sdmVkTWFpblNpemUgPSBj
b21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwg
bWFpblNpemUpLnZhbHVlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzb2x2ZWRNYWluU2l6ZSA+
PSAwKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJl
c29sdmVkTWFpblNpemUsIG1heEV4dGVudC52YWx1ZU9yKHJlc29sdmVkTWFpblNpemUpKTsKKyAg
ICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFp
blNpemUsIG1heEV4dGVudC52YWx1ZV9vcihyZXNvbHZlZE1haW5TaXplKSk7CiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBzdGQ6Om1pbihzcGVjaWZpZWRTaXplLCBjb250
ZW50U2l6ZSkpOwogICAgICAgICB9IGVsc2UgaWYgKHVzZUNoaWxkQXNwZWN0UmF0aW8oY2hpbGQp
KSB7CiAgICAgICAgICAgICBMZW5ndGggY3Jvc3NTaXplTGVuZ3RoID0gaXNIb3Jpem9udGFsRmxv
dygpID8gY2hpbGQuc3R5bGUoKS5oZWlnaHQoKSA6IGNoaWxkLnN0eWxlKCkud2lkdGgoKTsKLSAg
ICAgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHRyYW5zZmVycmVkU2l6ZSA9IGNvbXB1dGVN
YWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjcm9zc1NpemVMZW5ndGgpOworICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB0cmFuc2ZlcnJlZFNpemUgPSBjb21w
dXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY3Jvc3NTaXplTGVuZ3RoKTsK
ICAgICAgICAgICAgIGlmICh0cmFuc2ZlcnJlZFNpemUpIHsKICAgICAgICAgICAgICAgICB0cmFu
c2ZlcnJlZFNpemUgPSBhZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFu
ZE1heChjaGlsZCwgdHJhbnNmZXJyZWRTaXplLnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1heChjaGlsZFNpemUsIHN0ZDo6bWluKHRyYW5zZmVycmVkU2l6ZS52YWx1ZSgp
LCBjb250ZW50U2l6ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guaAppbmRleCBlZWQyNTc1YTg2MjMyMDhhMjhiYjRhNTQ5ZGMzMTY0NjU2Yzg5MWY4Li5l
MWI4NzgzMDQyMGM0NGYyZTVmZjhmYmRlZjk4MzYzZGI0MWY1M2Y2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNDksOCArNDksOCBAQCBjbGFz
cyBSZW5kZXJGbGV4aWJsZUJveCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAgICAgdm9pZCBsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSAwKSBmaW5hbDsKIAogICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9u
TW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZv
JiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wg
dXNlUHJpbnRSZWN0KSBvdmVycmlkZTsKIApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZW5kZXJG
bGV4aWJsZUJveCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAgICAgTGF5b3V0VW5pdCBtYWluQXhp
c0V4dGVudCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgY3Jvc3NBeGlzQ29udGVudEV4dGVudCgp
IGNvbnN0OwogICAgIExheW91dFVuaXQgbWFpbkF4aXNDb250ZW50RXh0ZW50KExheW91dFVuaXQg
Y29udGVudExvZ2ljYWxIZWlnaHQpOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVN
YWluQXhpc0V4dGVudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIFNpemVUeXBlLCBj
b25zdCBMZW5ndGgmIHNpemUpOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0
ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUs
IGNvbnN0IExlbmd0aCYgc2l6ZSk7CiAgICAgV3JpdGluZ01vZGUgdHJhbnNmb3JtZWRXcml0aW5n
TW9kZSgpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyU3RhcnQoKSBjb25z
dDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUJvcmRlckVuZCgpIGNvbnN0OwpAQCAtMTYyLDcg
KzE2Miw3IEBAIGNsYXNzIFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJlbmRlckJsb2NrIHsK
ICAgICBib29sIG1haW5BeGlzTGVuZ3RoSXNEZWZpbml0ZShjb25zdCBSZW5kZXJCb3gmLCBjb25z
dCBMZW5ndGgmKSBjb25zdDsKICAgICBib29sIGNyb3NzQXhpc0xlbmd0aElzRGVmaW5pdGUoY29u
c3QgUmVuZGVyQm94JiwgY29uc3QgTGVuZ3RoJikgY29uc3Q7CiAgICAgYm9vbCB1c2VDaGlsZEFz
cGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZCwgTGVuZ3RoIGNyb3NzU2l6ZUxlbmd0aCkgY29uc3Q7CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGlzRmxleGlibGVCb3hJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRl
eCA0MDE4NDRjMTVlMTJmYzAyY2RiNDBiYmYxNmM4NWZjZWI1MDI1NzY3Li42Y2I2ZTVlZjhlNjY2
MzExNThhZDQ3MjZiMWJiNzZhMTMyZTFjMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0xMDkzLDcgKzEwOTMsNyBAQCBib29sIFJlbmRl
ckZsb3dUaHJlYWQ6OmFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNvbnN0IFJlbmRlckJsb2NrKiBibG9j
aywgTGF5b3V0VW5pdAogICAgICAgICBoYXNDb21wdXRlZEF1dG9IZWlnaHQgPSB0cnVlOwogCiAg
ICAgICAgIC8vIENvbXB1dGUgdGhlIHJlZ2lvbiBoZWlnaHQgcHJldGVuZGluZyB0aGF0IHRoZSBv
ZmZzZXRCcmVha0luQ3VycmVudFJlZ2lvbiBpcyB0aGUgbG9naWNhbEhlaWdodCBmb3IgdGhlIGF1
dG8taGVpZ2h0IHJlZ2lvbi4KLSAgICAgICAgTGF5b3V0VW5pdCByZWdpb25Db21wdXRlZEF1dG9I
ZWlnaHQgPSBuYW1lZEZsb3dGcmFnbWVudC5jb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdo
dEJ5TWluTWF4KG9mZnNldEJyZWFrSW5DdXJyZW50UmVnaW9uLCBOdWxsb3B0KTsKKyAgICAgICAg
TGF5b3V0VW5pdCByZWdpb25Db21wdXRlZEF1dG9IZWlnaHQgPSBuYW1lZEZsb3dGcmFnbWVudC5j
b25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KG9mZnNldEJyZWFrSW5DdXJy
ZW50UmVnaW9uLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIC8vIFRoZSBuZXcgaGVpZ2h0IG9m
IHRoaXMgcmVnaW9uIG5lZWRzIHRvIGJlIHNtYWxsZXIgdGhhbiB0aGUgaW5pdGlhbCB2YWx1ZSwg
dGhlIG1heCBoZWlnaHQuIEEgZm9yY2VkIGJyZWFrIGlzIHRoZSBvbmx5IHdheSB0byBjaGFuZ2Ug
dGhlIGluaXRpYWwKICAgICAgICAgLy8gaGVpZ2h0IG9mIGFuIGF1dG8taGVpZ2h0IHJlZ2lvbiBi
ZXNpZGVzIGNvbnRlbnQgZW5kaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCmluZGV4IDVmMGRkMDQ3YmE5MDc5MmUzMWM0NWZmZWE4MDJmNzk2NzQwY2ZlYTQuLjkxODZm
YzI5NDMzZGM1YzAwMmQ5ZmZjNWQzYTI5MzAyODZiMDc4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgR3JpZFRyYWNrIHsK
IAogICAgIHZvaWQgc2V0R3Jvd3RoTGltaXQoTGF5b3V0VW5pdCBncm93dGhMaW1pdCkKICAgICB7
Ci0gICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9PSBpbmZpbml0eSA/IGdyb3d0
aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3RoTGltaXRDYXAudmFsdWVPcihn
cm93dGhMaW1pdCkpOworICAgICAgICBtX2dyb3d0aExpbWl0ID0gZ3Jvd3RoTGltaXQgPT0gaW5m
aW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0LCBtX2dyb3d0aExpbWl0
Q2FwLnZhbHVlX29yKGdyb3d0aExpbWl0KSk7CiAgICAgICAgIGVuc3VyZUdyb3d0aExpbWl0SXNC
aWdnZXJUaGFuQmFzZVNpemUoKTsKICAgICB9CiAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIGNsYXNz
IEdyaWRUcmFjayB7CiAgICAgYm9vbCBpbmZpbml0ZWx5R3Jvd2FibGUoKSBjb25zdCB7IHJldHVy
biBtX2luZmluaXRlbHlHcm93YWJsZTsgfQogICAgIHZvaWQgc2V0SW5maW5pdGVseUdyb3dhYmxl
KGJvb2wgaW5maW5pdGVseUdyb3dhYmxlKSB7IG1faW5maW5pdGVseUdyb3dhYmxlID0gaW5maW5p
dGVseUdyb3dhYmxlOyB9CiAKLSAgICB2b2lkIHNldEdyb3d0aExpbWl0Q2FwKE9wdGlvbmFsPExh
eW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKQorICAgIHZvaWQgc2V0R3Jvd3RoTGltaXRDYXAoc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1pdENhcCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghZ3Jvd3RoTGltaXRDYXAgfHwgZ3Jvd3RoTGltaXRDYXAudmFsdWUoKSA+PSAwKTsKICAg
ICAgICAgbV9ncm93dGhMaW1pdENhcCA9IGdyb3d0aExpbWl0Q2FwOwogICAgIH0KIAotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKCkgY29uc3QgeyByZXR1cm4gbV9ncm93
dGhMaW1pdENhcDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZ3Jvd3RoTGltaXRD
YXAoKSBjb25zdCB7IHJldHVybiBtX2dyb3d0aExpbWl0Q2FwOyB9CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBncm93dGhMaW1pdElzSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2dyb3d0aExpbWl0
ID09IGluZmluaXR5OyB9CkBAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgR3JpZFRyYWNrIHsKICAg
ICBMYXlvdXRVbml0IG1fZ3Jvd3RoTGltaXQgeyAwIH07CiAgICAgTGF5b3V0VW5pdCBtX3BsYW5u
ZWRTaXplIHsgMCB9OwogICAgIExheW91dFVuaXQgbV90ZW1wU2l6ZSB7IDAgfTsKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBtX2dyb3d0aExpbWl0Q2FwOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gbV9ncm93dGhMaW1pdENhcDsKICAgICBib29sIG1faW5maW5pdGVseUdyb3dhYmxl
IHsgZmFsc2UgfTsKIH07CiAKQEAgLTI1MiwxMSArMjUyLDExIEBAIGNsYXNzIFJlbmRlckdyaWQ6
OkdyaWRTaXppbmdEYXRhIHsKICAgICBWZWN0b3I8R3JpZFRyYWNrKj4gZ3Jvd0JleW9uZEdyb3d0
aExpbWl0c1RyYWNrczsKICAgICBWZWN0b3I8R3JpZEl0ZW1XaXRoU3Bhbj4gaXRlbXNTb3J0ZWRC
eUluY3JlYXNpbmdTcGFuOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gZnJlZVNwYWNlRm9yQ29sdW1ucyA6IGZyZWVTcGFjZUZvclJvd3M7IH0KLSAg
ICB2b2lkIHNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGZyZWVTcGFjZSk7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVl
U3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgeyByZXR1cm4gZGlyZWN0
aW9uID09IEZvckNvbHVtbnMgPyBmcmVlU3BhY2VGb3JDb2x1bW5zIDogZnJlZVNwYWNlRm9yUm93
czsgfQorICAgIHZvaWQgc2V0RnJlZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gYXZhaWxhYmxlU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2F2YWlsYWJsZVNwYWNlOyB9
Ci0gICAgdm9pZCBzZXRBdmFpbGFibGVTcGFjZShPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFi
bGVTcGFjZSkgeyBtX2F2YWlsYWJsZVNwYWNlID0gYXZhaWxhYmxlU3BhY2U7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9h
dmFpbGFibGVTcGFjZTsgfQorICAgIHZvaWQgc2V0QXZhaWxhYmxlU3BhY2Uoc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSkgeyBtX2F2YWlsYWJsZVNwYWNlID0gYXZhaWxh
YmxlU3BhY2U7IH0KIAogICAgIFNpemluZ09wZXJhdGlvbiBzaXppbmdPcGVyYXRpb24geyBUcmFj
a1NpemluZyB9OwogCkBAIC0yOTYsMTQgKzI5NiwxNCBAQCBjbGFzcyBSZW5kZXJHcmlkOjpHcmlk
U2l6aW5nRGF0YSB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGZyZWVTcGFjZUZvckNvbHVtbnM7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNl
Rm9yUm93czsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZUZvckNvbHVt
bnM7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2VGb3JSb3dzOwogICAg
IC8vIE5vIG5lZWQgdG8gc3RvcmUgb25lIHBlciBkaXJlY3Rpb24gYXMgaXQgd2lsbCBiZSBvbmx5
IHVzZWQgZm9yIGNvbXB1dGF0aW9ucyBkdXJpbmcgZWFjaCBheGlzCiAgICAgLy8gdHJhY2sgc2l6
aW5nLiBJdCdzIGNhY2hlZCBoZXJlIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlIHJlbGF0
aXZlIHNpemVzLgotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1fYXZhaWxhYmxlU3BhY2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX2F2YWlsYWJsZVNwYWNlOwogfTsKIAotdm9p
ZCBSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6c2V0RnJlZVNwYWNlKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSkKK3Zv
aWQgUmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFj
ZSkKIHsKICAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAgICAgIGZyZWVTcGFj
ZUZvckNvbHVtbnMgPSBmcmVlU3BhY2U7CkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBSZW5kZXJH
cmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2Fs
SGVpZ2h0KCkgYnV0IGl0IGRvZXMgbm90IHdvcmsgZm9yIHBvc2l0aW9uZWQgc3R1ZmYuCiAgICAg
Ly8gRklYTUU6IENvbnNpZGVyIGNhY2hpbmcgdGhlIGhhc0RlZmluaXRlTG9naWNhbEhlaWdodCB2
YWx1ZSB0aHJvdWdob3V0IHRoZSBsYXlvdXQuCi0gICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxI
ZWlnaHQgPSBoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdo
dCgpLCBOdWxsb3B0KTsKKyAgICBib29sIGhhc0RlZmluaXRlTG9naWNhbEhlaWdodCA9IGhhc092
ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKSB8fCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIHN0ZDo6bnVs
bG9wdCk7CiAgICAgaWYgKCFoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQpCiAgICAgICAgIGNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KHNpemluZ0RhdGEpOwogICAgIGVsc2UKQEAgLTYyOSw4
ICs2MjksOCBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhz
KExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5bwogICAgICAgICBjb25zdF9jYXN0PFJl
bmRlckdyaWQqPih0aGlzKS0+cGxhY2VJdGVtc09uR3JpZChJbnRyaW5zaWNTaXplQ29tcHV0YXRp
b24pOwogCiAgICAgR3JpZFNpemluZ0RhdGEgc2l6aW5nRGF0YShncmlkQ29sdW1uQ291bnQoKSwg
Z3JpZFJvd0NvdW50KCkpOwotICAgIHNpemluZ0RhdGEuc2V0QXZhaWxhYmxlU3BhY2UoTnVsbG9w
dCk7Ci0gICAgc2l6aW5nRGF0YS5zZXRGcmVlU3BhY2UoRm9yQ29sdW1ucywgTnVsbG9wdCk7Cisg
ICAgc2l6aW5nRGF0YS5zZXRBdmFpbGFibGVTcGFjZShzdGQ6Om51bGxvcHQpOworICAgIHNpemlu
Z0RhdGEuc2V0RnJlZVNwYWNlKEZvckNvbHVtbnMsIHN0ZDo6bnVsbG9wdCk7CiAgICAgc2l6aW5n
RGF0YS5zaXppbmdPcGVyYXRpb24gPSBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb247CiAgICAgY29t
cHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvckNvbHVtbnMsIHNpemluZ0RhdGEsIG1pbkxv
Z2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKIApAQCAtNjQ5LDggKzY0OSw4IEBAIHZvaWQg
UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWlu
TG9naWNhbFdpZHRoLCBMYXlvCiB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsSGVpZ2h0KEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQogewogICAgIEFTU0VSVChzaXpp
bmdEYXRhLmlzVmFsaWRUcmFuc2l0aW9uKEZvclJvd3MpKTsKLSAgICBzaXppbmdEYXRhLnNldEF2
YWlsYWJsZVNwYWNlKE51bGxvcHQpOwotICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNlKEZvclJv
d3MsIE51bGxvcHQpOworICAgIHNpemluZ0RhdGEuc2V0QXZhaWxhYmxlU3BhY2Uoc3RkOjpudWxs
b3B0KTsKKyAgICBzaXppbmdEYXRhLnNldEZyZWVTcGFjZShGb3JSb3dzLCBzdGQ6Om51bGxvcHQp
OwogICAgIHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uID0gSW50cmluc2ljU2l6ZUNvbXB1dGF0
aW9uOwogICAgIExheW91dFVuaXQgbWluSGVpZ2h0LCBtYXhIZWlnaHQ7CiAgICAgY29tcHV0ZVVz
ZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvclJvd3MsIHNpemluZ0RhdGEsIG1pbkhlaWdodCwgbWF4
SGVpZ2h0KTsKQEAgLTY3MywxMCArNjczLDEwIEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxIZWlnaHQoR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiAgICAgc2l6
aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gPSBUcmFja1NpemluZzsKIH0KIAotT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0
VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGlu
dHJpbnNpY0xvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBi
b3JkZXJBbmRQYWRkaW5nKSBjb25zdAogewogICAgIGlmICghaW50cmluc2ljTG9naWNhbEhlaWdo
dCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc01pbkNvbnRlbnQoKSkKICAgICAgICAg
cmV0dXJuIG1fbWluQ29udGVudEhlaWdodDsKQEAgLTY4NiwxMyArNjg2LDEzIEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhl
aWdodFVzaW5nKExlbmd0CiAKICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc0ZpdENvbnRl
bnQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFibGVFeHRlbnQgPSBjb250YWlu
aW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVyUGFk
ZGluZyk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihtX21heENvbnRlbnRIZWlnaHQudmFsdWVP
cigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlT3IoMCksIGZpbGxBdmFpbGFi
bGVFeHRlbnQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4Q29udGVudEhlaWdodC52
YWx1ZV9vcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlX29yKDApLCBmaWxs
QXZhaWxhYmxlRXh0ZW50KSk7CiAgICAgfQogCiAgICAgaWYgKGxvZ2ljYWxIZWlnaHRMZW5ndGgu
aXNGaWxsQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2soKS0+YXZh
aWxhYmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZykgLSBib3JkZXJB
bmRQYWRkaW5nOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIG5v
cm1hbGl6ZWRGbGV4RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNrJiB0cmFjaywgZG91YmxlIGZsZXhG
YWN0b3IpCkBAIC03MDIsMTQgKzcwMiwxNCBAQCBzdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxp
emVkRmxleEZyYWN0aW9uKGNvbnN0IEdyaWRUcmFjayYgdHJhY2ssIGRvdWJsZSBmbGV4RgogCiB2
b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSwgTGF5
b3V0VW5pdCYgYmFzZVNpemVzV2l0aG91dE1heGltaXphdGlvbiwgTGF5b3V0VW5pdCYgZ3Jvd3Ro
TGltaXRzV2l0aG91dE1heGltaXphdGlvbikgY29uc3QKIHsKLSAgICBjb25zdCBPcHRpb25hbDxM
YXlvdXRVbml0PiBpbml0aWFsRnJlZVNwYWNlID0gc2l6aW5nRGF0YS5mcmVlU3BhY2UoZGlyZWN0
aW9uKTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGluaXRpYWxGcmVlU3Bh
Y2UgPSBzaXppbmdEYXRhLmZyZWVTcGFjZShkaXJlY3Rpb24pOwogICAgIFZlY3RvcjxHcmlkVHJh
Y2s+JiB0cmFja3MgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc2l6aW5nRGF0YS5jb2x1
bW5UcmFja3MgOiBzaXppbmdEYXRhLnJvd1RyYWNrczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGZs
ZXhpYmxlU2l6ZWRUcmFja3NJbmRleDsKICAgICBzaXppbmdEYXRhLmNvbnRlbnRTaXplZFRyYWNr
c0luZGV4LnNocmluaygwKTsKIAogICAgIC8vIEdyaWQgZ3V0dGVycyB3ZXJlIHJlbW92ZWQgZnJv
bSBmcmVlU3BhY2UgYnkgdGhlIGNhbGxlciAoaWYgZnJlZVNwYWNlIGlzIGRlZmluaXRlKSwKICAg
ICAvLyBidXQgd2UgbXVzdCB1c2UgdGhlbSB0byBjb21wdXRlIHJlbGF0aXZlIChpLmUuIHBlcmNl
bnRhZ2VzKSBzaXplcy4KLSAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heChMYXlvdXRV
bml0KCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKExheW91dFVuaXQoKSkp
OworICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgc2l6aW5n
RGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwogICAgIGNvbnN0
IGJvb2wgaGFzRGVmaW5pdGVGcmVlU3BhY2UgPSBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9
PSBUcmFja1NpemluZzsKIAogICAgIC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQgdHJhY2sgdmFy
aWFibGVzLgpAQCAtNzQ0LDcgKzc0NCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRC
cmVhZHRoT2ZHcmlkVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpCiAgICAg
ICAgIGdyb3d0aExpbWl0c1dpdGhvdXRNYXhpbWl6YXRpb24gKz0gdHJhY2suZ3Jvd3RoTGltaXQo
KTsKICAgICAgICAgLy8gVGhlIGdyb3d0aCBsaW1pdCBjYXBzIG11c3QgYmUgY2xlYXJlZCBub3cg
aW4gb3JkZXIgdG8gcHJvcGVybHkgc29ydCB0cmFja3MgYnkgZ3Jvd3RoCiAgICAgICAgIC8vIHBv
dGVudGlhbCBvbiBhbiBldmVudHVhbCAiTWF4aW1pemUgVHJhY2tzIi4KLSAgICAgICAgdHJhY2su
c2V0R3Jvd3RoTGltaXRDYXAoTnVsbG9wdCk7CisgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0
Q2FwKHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogICAgIExheW91dFVuaXQgZnJlZVNwYWNlID0gaW5p
dGlhbEZyZWVTcGFjZSA/IGluaXRpYWxGcmVlU3BhY2UudmFsdWUoKSAtIGJhc2VTaXplc1dpdGhv
dXRNYXhpbWl6YXRpb24gOiBMYXlvdXRVbml0KDApOwogCkBAIC04OTgsMTIgKzg5OCwxMiBAQCBz
dGF0aWMgYm9vbCBoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZAogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IGNoaWxkLmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkgOiBjaGls
ZC5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKTsKIH0KIAotc3RhdGlj
IE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVG
b3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgcmV0dXJuIGRpcmVjdGlv
biA9PSBGb3JDb2x1bW5zID8gY2hpbGQub3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9n
aWNhbFdpZHRoKCkgOiBjaGlsZC5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
SGVpZ2h0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29u
dGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQorc3RhdGljIHZvaWQgc2V0
T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hp
bGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gc2l6ZSkKIHsKICAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAg
ICAgIGNoaWxkLnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChz
aXplKTsKQEAgLTEwMDUsNyArMTAwNSw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bG9naWNh
bEhlaWdodEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CiAgICAgLy8gSWYgfGNoaWxk
fCBoYXMgYSByZWxhdGl2ZSBsb2dpY2FsIGhlaWdodCwgd2Ugc2hvdWxkbid0IGxldCBpdCBvdmVy
cmlkZSBpdHMgaW50cmluc2ljIGhlaWdodCwgd2hpY2ggaXMKICAgICAvLyB3aGF0IHdlIGFyZSBp
bnRlcmVzdGVkIGluIGhlcmUuIFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIGJsb2NrLWF4aXMgb3Zl
cnJpZGUgc2l6ZSB0byAtMSAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAgICAgaWYgKHNob3Vs
ZENsZWFyT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBG
b3JSb3dzKSkgewotICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXpl
Rm9yQ2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24sIE51bGxvcHQpOworICAgICAgICBz
ZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxk
QmxvY2tEaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGNoaWxkLnNldE5lZWRzTGF5
b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgfQogCkBAIC0xMDI5LDEzICsxMDI5LDEzIEBAIExheW91
dFVuaXQgUmVuZGVyR3JpZDo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvCiAgICAgYm9vbCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkID0gdXBk
YXRlT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGls
ZElubGluZURpcmVjdGlvbiwgc2l6aW5nRGF0YSk7CiAgICAgaWYgKGlzUm93QXhpcykgewogICAg
ICAgICBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxXaWR0aCA9IHNpemluZ0RhdGEuc2l6aW5nT3Bl
cmF0aW9uID09IFRyYWNrU2l6aW5nID8gY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQo
Y2hpbGRJbmxpbmVEaXJlY3Rpb24sIGNoaWxkKSA6IG1hcmdpbkludHJpbnNpY0xvZ2ljYWxXaWR0
aEZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsV2lk
dGhJblJlZ2lvblVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgb3ZlcnJpZGVDb250YWluaW5n
QmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbikudmFs
dWVPcigwKSwgKnRoaXMsIG51bGxwdHIpICsgbWFyZ2luTG9naWNhbFdpZHRoOworICAgICAgICBy
ZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgY2hp
bGRNaW5TaXplLCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hp
bGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uKS52YWx1ZV9vcigwKSwgKnRoaXMsIG51bGxwdHIpICsg
bWFyZ2luTG9naWNhbFdpZHRoOwogICAgIH0KIAogICAgIGlmIChvdmVycmlkZVNpemVIYXNDaGFu
Z2VkICYmIChkaXJlY3Rpb24gIT0gRm9yQ29sdW1ucyB8fCBzaXppbmdEYXRhLnNpemluZ09wZXJh
dGlvbiAhPSBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24pKQogICAgICAgICBjaGlsZC5zZXROZWVk
c0xheW91dChNYXJrT25seVRoaXMpOwogICAgIGNoaWxkLmxheW91dElmTmVlZGVkKCk7Ci0gICAg
cmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5T
aXplLCBOdWxsb3B0KS52YWx1ZU9yKDApICsgY2hpbGQubWFyZ2luTG9naWNhbEhlaWdodCgpICsg
Y2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOworICAgIHJldHVybiBjaGlsZC5jb21wdXRl
TG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgc3RkOjpudWxsb3B0KS52
YWx1ZV9vcigwKSArIGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHQoKTsKIH0KIAogYm9vbCBSZW5kZXJHcmlkOjp1cGRhdGVPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEp
IGNvbnN0CkBAIC0xMDUzLDkgKzEwNTMsOSBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6Om1pbkNv
bnRlbnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlYwogICAg
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IGZsb3dBd2Fy
ZURpcmVjdGlvbkZvckNoaWxkKGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICBpZiAoZGlyZWN0aW9u
ID09IGNoaWxkSW5saW5lRGlyZWN0aW9uKSB7CiAgICAgICAgIC8vIElmIHxjaGlsZHwgaGFzIGEg
cmVsYXRpdmUgbG9naWNhbCB3aWR0aCwgd2Ugc2hvdWxkbid0IGxldCBpdCBvdmVycmlkZSBpdHMg
aW50cmluc2ljIHdpZHRoLCB3aGljaCBpcwotICAgICAgICAvLyB3aGF0IHdlIGFyZSBpbnRlcmVz
dGVkIGluIGhlcmUuIFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIG92ZXJyaWRlIGxvZ2ljYWwgd2lk
dGggdG8gTnVsbG9wdCAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCisgICAgICAgIC8vIHdoYXQg
d2UgYXJlIGludGVyZXN0ZWQgaW4gaGVyZS4gVGh1cyB3ZSBuZWVkIHRvIHNldCB0aGUgb3ZlcnJp
ZGUgbG9naWNhbCB3aWR0aCB0byBzdGQ6Om51bGxvcHQgKG5vIHBvc3NpYmxlIHJlc29sdXRpb24p
LgogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRT
aXplRm9yQ2hpbGQoY2hpbGQsIEZvckNvbHVtbnMpKQotICAgICAgICAgICAgc2V0T3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVj
dGlvbiwgTnVsbG9wdCk7CisgICAgICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBzdGQ6Om51bGxv
cHQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgd2Ugc2hvdWxkIHJldHVy
biB0aGUgaW50cmluc2ljIHdpZHRoIG9yIHRoZSBwcmVmZXJyZWQgd2lkdGguCiAgICAgICAgIC8v
IFNlZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxM0ph
bi8wMjQ1Lmh0bWwKQEAgLTEwODMsNyArMTA4Myw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6
bWF4Q29udGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVj
CiAgICAgICAgIC8vIElmIHxjaGlsZHwgaGFzIGEgcmVsYXRpdmUgbG9naWNhbCB3aWR0aCwgd2Ug
c2hvdWxkbid0IGxldCBpdCBvdmVycmlkZSBpdHMgaW50cmluc2ljIHdpZHRoLCB3aGljaCBpcwog
ICAgICAgICAvLyB3aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGhlcmUuIFRodXMgd2UgbmVlZCB0
byBzZXQgdGhlIGlubGluZS1heGlzIG92ZXJyaWRlIHNpemUgdG8gLTEgKG5vIHBvc3NpYmxlIHJl
c29sdXRpb24pLgogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIEZvckNvbHVtbnMpKQotICAgICAgICAgICAgc2V0
T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElu
bGluZURpcmVjdGlvbiwgTnVsbG9wdCk7CisgICAgICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBz
dGQ6Om51bGxvcHQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgd2Ugc2hv
dWxkIHJldHVybiB0aGUgaW50cmluc2ljIHdpZHRoIG9yIHRoZSBwcmVmZXJyZWQgd2lkdGguCiAg
ICAgICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5
bGUvMjAxM0phbi8wMjQ1Lmh0bWwKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgUmVuZGVyR3Jp
ZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9yTm9uU3Bhbm5pbmdJ
dGVtcyhHcmlkCiAgICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFzTWF4Q29udGVudE9yQXV0b01h
eFRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZ3Jvd3RoTGltaXQgPSBtYXhD
b250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgc2l6aW5nRGF0YSk7CiAgICAgICAg
IGlmICh0cmFja1NpemUuaXNGaXRDb250ZW50KCkpCi0gICAgICAgICAgICBncm93dGhMaW1pdCA9
IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVu
dFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFs
dWVPcigwKSkpOworICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihncm93dGhMaW1p
dCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFkdGgoKS5sZW5n
dGgoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDApKSk7CiAgICAgICAg
IHRyYWNrLnNldEdyb3d0aExpbWl0KHN0ZDo6bWF4KHRyYWNrLmdyb3d0aExpbWl0KCksIGdyb3d0
aExpbWl0KSk7CiAgICAgfQogfQpAQCAtMTM4Nyw4ICsxMzg3LDggQEAgc3RhdGljIGJvb2wgc29y
dEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRUcmFjayogdHJhY2sxLCBjb25z
dCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5maW5pdGVHcm93dGhQb3RlbnRpYWxXaXRob3V0
Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcCkKICAgICAg
ICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcDsKIAot
ICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0aExpbWl0Q2FwKCkudmFs
dWVPcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwotICAgIExheW91dFVuaXQgdHJhY2syTGltaXQg
PSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazItPmdyb3d0aExpbWl0KCkp
OworICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0aExpbWl0Q2FwKCku
dmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlvdXRVbml0IHRyYWNrMkxp
bWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMi0+Z3Jvd3RoTGlt
aXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1pdCAtIHRyYWNrMS0+YmFzZVNpemUoKSkgPCAo
dHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXplKCkpOwogfQogCkBAIC0xNDU3LDcgKzE0NTcs
NyBAQCB2b2lkIFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlk
VHJhY2sqPiYgdHJhY2tzLCBWZWN0b3I8R3JpZAogYm9vbCBSZW5kZXJHcmlkOjp0cmFja3NBcmVX
aWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
biwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRU
cmFjaz4mIHRyYWNrcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzaXppbmdEYXRhLmNv
bHVtblRyYWNrcyA6IHNpemluZ0RhdGEucm93VHJhY2tzOwotICAgIGNvbnN0IExheW91dFVuaXQg
bWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApOworICAgIGNv
bnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1
ZV9vcigwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1Np
emUoZGlyZWN0aW9uLCBpLCBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbik7CiAgICAgICAgIGlm
IChjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aCh0cmFja1NpemUsIG1heFNpemUpID4gdHJh
Y2tzW2ldLmJhc2VTaXplKCkpCkBAIC0xNTAyLDE5ICsxNTAyLDE5IEBAIHVuc2lnbmVkIFJlbmRl
ckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjCiAgICAgaWYgKCFhdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemU7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplOwogICAgIGlmIChpc1Jvd0F4
aXMpIHsKICAgICAgICAgaWYgKHNpemluZ09wZXJhdGlvbiAhPSBJbnRyaW5zaWNTaXplQ29tcHV0
YXRpb24pCiAgICAgICAgICAgICBhdmFpbGFibGVTaXplID0gIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF2YWlsYWJsZVNpemUgPSBjb21wdXRlQ29udGVu
dExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0
KCksIE51bGxvcHQpOworICAgICAgICBhdmFpbGFibGVTaXplID0gY29tcHV0ZUNvbnRlbnRMb2dp
Y2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBz
dGQ6Om51bGxvcHQpOwogICAgICAgICBpZiAoIWF2YWlsYWJsZVNpemUpIHsKICAgICAgICAgICAg
IGNvbnN0IExlbmd0aCYgbWF4TGVuZ3RoID0gc3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCk7CiAg
ICAgICAgICAgICBpZiAoIW1heExlbmd0aC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAg
IGF2YWlsYWJsZVNpemUgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbWF4
TGVuZ3RoLCBOdWxsb3B0KTsKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVTaXplID0gY29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG1heExlbmd0aCwgc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoYXZhaWxhYmxlU2l6ZSkKLSAgICAgICAgICAgIGF2YWls
YWJsZVNpemUgPSBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KGF2YWls
YWJsZVNpemUudmFsdWUoKSwgTnVsbG9wdCk7CisgICAgICAgICAgICBhdmFpbGFibGVTaXplID0g
Y29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChhdmFpbGFibGVTaXplLnZh
bHVlKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc1RvRnVsZmlsbE1p
bmltdW1TaXplID0gZmFsc2U7CkBAIC0xODc1LDcgKzE4NzUsNyBAQCBzdGF0aWMgY29uc3QgU3R5
bGVDb250ZW50QWxpZ25tZW50RGF0YSYgY29udGVudEFsaWdubWVudE5vcm1hbEJlaGF2aW9yR3Jp
ZCgpCiAKIHZvaWQgUmVuZGVyR3JpZDo6YXBwbHlTdHJldGNoQWxpZ25tZW50VG9UcmFja3NJZk5l
ZWRlZChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYg
c2l6aW5nRGF0YSkKIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UgPSBzaXpp
bmdEYXRhLmZyZWVTcGFjZShkaXJlY3Rpb24pOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gZnJlZVNwYWNlID0gc2l6aW5nRGF0YS5mcmVlU3BhY2UoZGlyZWN0aW9uKTsKICAgICBpZiAo
IWZyZWVTcGFjZQogICAgICAgICB8fCBmcmVlU3BhY2UudmFsdWUoKSA8PSAwCiAgICAgICAgIHx8
IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyAmJiBzdHlsZSgpLnJlc29sdmVkSnVzdGlmeUNvbnRl
bnREaXN0cmlidXRpb24oY29udGVudEFsaWdubWVudE5vcm1hbEJlaGF2aW9yR3JpZCgpKSAhPSBD
b250ZW50RGlzdHJpYnV0aW9uU3RyZXRjaCkKQEAgLTE5MDAsNyArMTkwMCw3IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6YXBwbHlTdHJldGNoQWxpZ25tZW50VG9UcmFja3NJZk5lZWRlZChHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24KICAgICAgICAgYXV0byYgdHJhY2sgPSB0cmFja3NbdHJhY2tJbmRleF07
CiAgICAgICAgIHRyYWNrLnNldEJhc2VTaXplKHRyYWNrLmJhc2VTaXplKCkgKyBzaXplVG9JbmNy
ZWFzZSk7CiAgICAgfQotICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNlKGRpcmVjdGlvbiwgT3B0
aW9uYWw8TGF5b3V0VW5pdD4oMCkpOworICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNlKGRpcmVj
dGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSk7CiB9CiAKIHZvaWQgUmVuZGVyR3Jp
ZDo6bGF5b3V0R3JpZEl0ZW1zKEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQpAQCAtMTkxNyw4
ICsxOTE3LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMoR3JpZFNpemluZ0Rh
dGEmIHNpemluZ0RhdGEpCiAKICAgICAgICAgLy8gQmVjYXVzZSB0aGUgZ3JpZCBhcmVhIGNhbm5v
dCBiZSBzdHlsZWQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0CiAgICAgICAgIC8vIHRoZSBncmlk
IGJyZWFkdGggdG8gYWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgotICAgICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBvbGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgg
PSBjaGlsZC0+aGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGgoKSA/IGNoaWxk
LT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IExheW91dFVu
aXQoKTsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb2xkT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tDb250ZW50TG9naWNhbEhlaWdodCA9IGNoaWxkLT5oYXNPdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxIZWlnaHQoKSA/IGNoaWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KCkgOiBMYXlvdXRVbml0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gb2xkT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRo
ID0gY2hpbGQtPmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkgPyBjaGls
ZC0+b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgOiBMYXlvdXRV
bml0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb2xkT3ZlcnJpZGVDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCA9IGNoaWxkLT5oYXNPdmVycmlkZUNvbnRh
aW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSA/IGNoaWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgOiBMYXlvdXRVbml0KCk7CiAKICAgICAgICAgTGF5b3V0
VW5pdCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGggPSBncmlkQXJl
YUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMoKmNoaWxkLCBGb3JDb2x1
bW5zLCBzaXppbmdEYXRhKTsKICAgICAgICAgTGF5b3V0VW5pdCBvdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGRJbmNsdWRp
bmdBbGlnbm1lbnRPZmZzZXRzKCpjaGlsZCwgRm9yUm93cywgc2l6aW5nRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAzODA3MTYwMTMzZTgyMTEzNzhjYTQyNTk3
MDkyZTQ0MDk1NGVmNjM1Li40Yzg2NGRiYTRhZDcwZGVmNWNiNWZmYjY3Y2I0ZjE4NDVkMTIwNzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTc4LDcgKzc4LDcgQEAg
Y2xhc3MgUmVuZGVyR3JpZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAgICAgYm9vbCBp
c1JlbmRlckdyaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgs
IExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2lu
ZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmlu
c2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVuaXQgYm9y
ZGVyQW5kUGFkZGluZykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjbGFzcyBHcmlkSXRlcmF0b3I7
CiAgICAgY2xhc3MgR3JpZFNpemluZ0RhdGE7CkBAIC0yMDUsOCArMjA1LDggQEAgY2xhc3MgUmVu
ZGVyR3JpZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAgICAgSGFzaE1hcDxjb25zdCBS
ZW5kZXJCb3gqLCBHcmlkQXJlYT4gbV9ncmlkSXRlbUFyZWE7CiAgICAgT3JkZXJJdGVyYXRvciBt
X29yZGVySXRlcmF0b3I7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX21pbkNvbnRlbnRI
ZWlnaHQ7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9tYXhDb250ZW50SGVpZ2h0OworICAg
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9taW5Db250ZW50SGVpZ2h0OworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9tYXhDb250ZW50SGVpZ2h0OwogCiAgICAgaW50IG1fc21h
bGxlc3RDb2x1bW5TdGFydDsKICAgICBpbnQgbV9zbWFsbGVzdFJvd1N0YXJ0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjU5NWMzNDMxMjQxMmQ1MDg3Y2Iw
Y2MyMmM2MjAxYjBkODk2NjQxYS4uMWRiOWQzZGZlODcyYzU2OWJlMjBjYjNkZDhmZDI5YTljYjBl
MjhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00NDYz
LDcgKzQ0NjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5z
Zm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBOb3cgZG8gYSBw
YWludCB3aXRoIHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUgdXMuCiAgICAgTGF5b3V0U2l6
ZSBhZGp1c3RlZFN1YnBpeGVsT2Zmc2V0ID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6
ZShkZXZpY2VQaXhlbFNuYXBwZWRPZmZzZXRGb3JUaGlzTGF5ZXIpOwotICAgIExheWVyUGFpbnRp
bmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zZVJl
Y3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVG
YWN0b3IpKSwKKyAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyh0
aGlzLCBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFp
bnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAogICAgICAgICBwYWludGluZ0luZm8u
cGFpbnRCZWhhdmlvciwgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCwgcGFpbnRpbmdJbmZvLnN1YnRy
ZWVQYWludFJvb3QsIHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzKTsKICAgICBwYWlu
dExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzKTsKICAgICBjb250ZXh0LnNldENUTShvbGRUcmFuc2Zyb20pOwpAQCAt
NTA5Nyw3ICs1MDk3LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIo
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKIAogICAgIC8vIENoZWNr
IGZvciBoaXQgdGVzdCBvbiBiYWNrZmFjZSBpZiBiYWNrZmFjZS12aXNpYmlsaXR5IGlzICdoaWRk
ZW4nCiAgICAgaWYgKGxvY2FsVHJhbnNmb3JtU3RhdGUgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLmJh
Y2tmYWNlVmlzaWJpbGl0eSgpID09IEJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbikgewotICAgICAg
ICBPcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gaW52ZXJ0ZWRNYXRyaXggPSBsb2NhbFRy
YW5zZm9ybVN0YXRlLT5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gaW52ZXJ0ZWRNYXRyaXggPSBsb2Nh
bFRyYW5zZm9ybVN0YXRlLT5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtLmludmVyc2UoKTsKICAgICAg
ICAgLy8gSWYgdGhlIHotdmVjdG9yIG9mIHRoZSBtYXRyaXggaXMgbmVnYXRpdmUsIHRoZSBiYWNr
IGlzIGZhY2luZyB0b3dhcmRzIHRoZSB2aWV3ZXIuCiAgICAgICAgIGlmIChpbnZlcnRlZE1hdHJp
eCAmJiBpbnZlcnRlZE1hdHJpeC52YWx1ZSgpLm0zMygpIDwgMCkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBlMmYzNjdkNzg0MWQ4MmQzYTRiNjJhMDdiYjIwYzQyOWQyYmM5N2Q1Li4y
NDIzYzMzMGJiZDIwMzEyZDMwY2MzMTlkZDcwN2UwMWU5NjA2ODE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNzkwLDkgKzc5MCw5
IEBAIGNsYXNzIENvbXB1dGVkT2Zmc2V0cyB7CiAgICAgICAgIHJldHVybiBtX2Zyb21BbmNlc3Rv
ckdyYXBoaWNzTGF5ZXIudmFsdWUoKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxMYXlvdXRTaXpl
PiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5ZXI7Ci0gICAgT3B0aW9uYWw8TGF5b3V0U2l6ZT4g
bV9mcm9tUGFyZW50R3JhcGhpY3NMYXllcjsKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zy
b21QcmltYXJ5R3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1f
ZnJvbUFuY2VzdG9yR3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+
IG1fZnJvbVBhcmVudEdyYXBoaWNzTGF5ZXI7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRTaXpl
PiBtX2Zyb21QcmltYXJ5R3JhcGhpY3NMYXllcjsKICAgICAKICAgICBjb25zdCBSZW5kZXJMYXll
ciYgbV9yZW5kZXJMYXllcjsKICAgICAvLyBMb2NhdGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgcmVu
ZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXgg
YjcxNjNlNjZiM2M2ZmYxMTg3NzFhYzk4OTA5NzZjM2IzYmU0NjZmYi4uMmM2YThlZTdjNjVjNjEy
YTg1ODYyZDRlMWI1NzYwNzQyZmYxMDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlz
dEJveDo6aXRlbUJvdW5kaW5nQm94UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9m
ZnNlCiB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEZ1bmN0aW9uIHBhaW50RnVuY3Rp
b24pCiB7CiAgICAgaW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwotICAgIGludCBmaXJz
dFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BB
cmVhLnZhbHVlT3IobV9pbmRleE9mZnNldCk7CisgICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBt
X2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9p
bmRleE9mZnNldCk7CiAgICAgaW50IGVuZEluZGV4ID0gZmlyc3RWaXNpYmxlSXRlbSArIG51bVZp
c2libGVJdGVtcyhDb25zaWRlclBhZGRpbmc6Olllcyk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0
VmlzaWJsZUl0ZW07IGkgPCBsaXN0SXRlbXNTaXplICYmIGkgPCBlbmRJbmRleDsgKytpKQogICAg
ICAgICBwYWludEZ1bmN0aW9uKHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIGkpOwpAQCAtNTk3LDcg
KzU5Nyw3IEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0
SW5kZXgoaW50IGluZGV4KQogCiBib29sIFJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJs
ZShpbnQgaW5kZXgpCiB7Ci0gICAgaW50IGZpcnN0SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2li
bGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBp
bnQgZmlyc3RJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9w
QXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBtX2luZGV4
T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEKICAgICAgICAgPyBtX2lu
ZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEudmFsdWUoKSArIG51
bWJlck9mVmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkKICAgICAgICAgOiBtX2luZGV4T2Zm
c2V0ICsgbnVtVmlzaWJsZUl0ZW1zKCk7CkBAIC02NjksOCArNjY5LDggQEAgaW50IFJlbmRlckxp
c3RCb3g6Om51bWJlck9mVmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkgY29uc3QKIAogdm9p
ZCBSZW5kZXJMaXN0Qm94Ojpjb21wdXRlRmlyc3RJbmRleGVzVmlzaWJsZUluUGFkZGluZ1RvcEJv
dHRvbUFyZWFzKCkKIHsKLSAgICBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGlu
Z1RvcEFyZWEgPSBOdWxsb3B0OwotICAgIG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQ
YWRkaW5nQm90dG9tQXJlYSA9IE51bGxvcHQ7CisgICAgbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRl
bUluc2lkZVBhZGRpbmdUb3BBcmVhID0gc3RkOjpudWxsb3B0OworICAgIG1faW5kZXhPZkZpcnN0
VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90dG9tQXJlYSA9IHN0ZDo6bnVsbG9wdDsKIAogICAg
IGludCBtYXhpbXVtTnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdUb3BBcmVhID0gcGFkZGlu
Z1RvcCgpIC8gaXRlbUhlaWdodCgpOwogICAgIGlmIChtYXhpbXVtTnVtYmVyT2ZJdGVtc1RoYXRG
aXRJblBhZGRpbmdUb3BBcmVhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guaAppbmRleCA1ZWYzZWQzMmVmNzEyYzliZDZhYmI5OWJjZGFmYWJiNmU0ZmM2Y2Q4Li4yMDk4
OTk1MGViZGM2NWFhYWNhMzgzODllYWI3ZDY3ZTRmMWFiYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTE3Nyw4ICsxNzcsOCBAQCBjbGFzcyBSZW5kZXJM
aXN0Qm94IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVibGljIFNjcm9sbGFibGVB
cmVhIHsKICAgICBpbnQgbV9vcHRpb25zV2lkdGg7CiAgICAgaW50IG1faW5kZXhPZmZzZXQ7CiAK
LSAgICBPcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5n
VG9wQXJlYTsKLSAgICBPcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNp
ZGVQYWRkaW5nQm90dG9tQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9pbmRleE9mRmly
c3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWE7CiAKICAg
ICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZCYXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaAppbmRleCBmYWFjNTU1OWM1OTFjMmJhMGVmZWE4OTUxYmE0MjUwOTBj
NTA4MTVlLi5jNGUzN2Y5ZmVkM2Q3MGJhNjk5NzAzMTgyZGNiZjE2NDY3YTBmYzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTIzLDggKzEyMyw4IEBA
IGNsYXNzIFJlbmRlck1lbnVMaXN0IGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94LCBw
cml2YXRlIFBvcHVwTWVudUNsaWVudCB7CiAgICAgewogICAgICAgICByZXR1cm4gUmVuZGVyQmxv
Y2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBwb3Np
dGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQot
ICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBk
aXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9j
a0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5l
QmFzZWxpbmUoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5l
KExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVu
ZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQogCiAgICAgdm9pZCBn
ZXRJdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgQ29sb3ImLCBib29sJiBp
dGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggN2QyZmI0MzYyODE1
NGI5NDI1NjZmOTk3ODljZjUwOGY1MmI0OTdhZC4uOTIxMGQ3NDZmZmYwMTVlYjI3NDIxMDkyN2Uw
ZTQ1ZTE0MjU3ZWUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJN
dWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KCkgY29uc3QKICAgICBMYXlv
dXRVbml0IGF2YWlsYWJsZUhlaWdodCA9IG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5jb2x1bW5I
ZWlnaHRBdmFpbGFibGUoKTsKICAgICBMYXlvdXRVbml0IG1heENvbHVtbkhlaWdodCA9IGF2YWls
YWJsZUhlaWdodCA/IGF2YWlsYWJsZUhlaWdodCA6IFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2lj
YWxIZWlnaHQoKTsKICAgICBpZiAoIW11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgIG1heENvbHVtbkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVt
bkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNp
emUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBOdWxsb3B0KS52YWx1ZU9yKG1h
eENvbHVtbkhlaWdodCkpOworICAgICAgICBtYXhDb2x1bW5IZWlnaHQgPSBzdGQ6Om1pbihtYXhD
b2x1bW5IZWlnaHQsIG11bHRpY29sQmxvY2stPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChN
YXhTaXplLCBtdWx0aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgc3RkOjpudWxsb3B0KS52
YWx1ZV9vcihtYXhDb2x1bW5IZWlnaHQpKTsKICAgICByZXR1cm4gaGVpZ2h0QWRqdXN0ZWRGb3JT
ZXRPZmZzZXQobWF4Q29sdW1uSGVpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKaW5kZXggNjExZjQ2ZDJlMmRkYjU5ZjM5ZDBmODUxZWQ0M2Q0YmE5Nzk1
ODA4Yy4uMzg2YjUyNzgwMDJmMzA1NDUyNTUzN2MwNmY2YmMxMzkzYzJjYjA5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0zNzMsOSArMzczLDkgQEAgTGF5
b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRI
ZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdHlsZUxvZ2lj
YWxIZWlnaHQudmFsdWUoKSAtIGJvcmRlcnM7CiAgICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxI
ZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlUGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZU9yKDApOworICAg
ICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhl
aWdodCkudmFsdWVfb3IoMCk7CiAgICAgZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0LmlzSW50
cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRI
ZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFu
ZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBj
b21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWln
aHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcp
LnZhbHVlX29yKDApOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIExheW91dFVuaXQoKTsKQEAgLTE0NjgsMzcgKzE0NjgsMzcgQEAgdm9pZCBSZW5k
ZXJUYWJsZTo6dXBkYXRlRmlyc3RMZXR0ZXIoUmVuZGVyVHJlZU11dGF0aW9uSXNBbGxvd2VkKQog
CiBpbnQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5l
VHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBv
c2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewotICAgIHJldHVybiBmaXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgcmV0dXJuIHZhbHVlT3JDb21w
dXRlKGZpcnN0TGluZUJhc2VsaW5lKCksIFsmXSB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCb3g6
OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGlu
ZVBvc2l0aW9uTW9kZSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6
OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPGludD4gUmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUpIGNvbnN0CiB7CiAgICAgLy8gVGFibGVzIGFyZSBza2lwcGVkIHdoZW4gY29tcHV0aW5nIGFu
IGlubGluZS1ibG9jaydzIGJhc2VsaW5lLgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Cisg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRl
clRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVu
ZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmFzZWxp
bmUgb2YgYSAndGFibGUnIGlzIHRoZSBzYW1lIGFzIHRoZSAnaW5saW5lLXRhYmxlJyBiYXNlbGlu
ZSBwZXIgQ1NTIDMgRmxleGJveCAoQ1NTIDIuMQogICAgIC8vIGRvZXNuJ3QgZGVmaW5lIHRoZSBi
YXNlbGluZSBvZiBhICd0YWJsZScgb25seSBhbiAnaW5saW5lLXRhYmxlJykuCiAgICAgLy8gVGhp
cyBpcyBhbHNvIG5lZWRlZCB0byBwcm9wZXJseSBkZXRlcm1pbmUgdGhlIGJhc2VsaW5lIG9mIGEg
Y2VsbCBpZiBpdCBoYXMgYSB0YWJsZSBjaGlsZC4KIAogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9v
dCgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAKICAg
ICBjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcE5vbkVtcHR5U2VjdGlvbiA9IHRoaXMtPnRv
cE5vbkVtcHR5U2VjdGlvbigpOwogICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQotICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxp
bnQ+KCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IHRvcE5vbkVtcHR5U2Vj
dGlvbi0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4o
dG9wTm9uRW1wdHlTZWN0aW9uLT5sb2dpY2FsVG9wKCkgKyBiYXNlbGluZS52YWx1ZSgpKTsKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5m
aXJzdExpbmVCYXNlbGluZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHRv
cE5vbkVtcHR5U2VjdGlvbi0+bG9naWNhbFRvcCgpICsgYmFzZWxpbmUudmFsdWUoKSk7CiAKICAg
ICAvLyBGSVhNRTogQSB0YWJsZSByb3cgYWx3YXlzIGhhcyBhIGJhc2VsaW5lIHBlciBDU1MgMi4x
LiBXaWxsIHRoaXMgcmV0dXJuIHRoZSByaWdodCB2YWx1ZT8KLSAgICByZXR1cm4gT3B0aW9uYWw8
aW50PigpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIH0KIAogTGF5b3V0UmVj
dCBSZW5kZXJUYWJsZTo6b3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRp
b24sIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBy
ZWxldmFuY3ksIFBhaW50UGhhc2UgcGhhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5oCmluZGV4IGU2NjNjMTk5N2NkZmYxMTAxZjU3MGQ4YWY2MDkwMzUyYjQ2NmUxM2IuLmVh
MmJhNjJkMzEzYjliNGEwNTI3YTA1Njk3ZjNiNDA3MTJkMWZjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0yOTIsOCArMjkyLDggQEAgY2xhc3MgUmVuZGVyVGFi
bGUgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCiAgICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFs
PGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxp
bnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAgIFJlbmRlclRhYmxlQ29sKiBzbG93Q29sRWxlbWVu
dCh1bnNpZ25lZCBjb2wsIGJvb2wqIHN0YXJ0RWRnZSwgYm9vbCogZW5kRWRnZSkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYzAw
Y2JjYzk5MTNkMTNkNzZmMTdhZmQ4MzJjODY4ZjJhYjc4ZWI5ZC4uZTFhN2VhYTc1OWFkMzMxNjli
YTExMWEzNWY5MTVhNGMxZThjNzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRh
YmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAgIC8vIDxodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxlcy5odG1sI2hlaWdodC1sYXlv
dXQ+OiBUaGUgYmFzZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNlbGluZSBvZgogICAgIC8vIHRo
ZSBmaXJzdCBpbi1mbG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBvciB0aGUgZmlyc3QgaW4tZmxv
dyB0YWJsZS1yb3cgaW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gSWYgdGhlcmUK
ICAgICAvLyBpcyBubyBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJvdywgdGhlIGJhc2VsaW5lIGlz
IHRoZSBib3R0b20gb2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxsIGJveC4KLSAgICByZXR1cm4g
Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNv
bnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZh
bHVlX29yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkp
OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0NlbGxEaXJ0eVdoZW5Db2xsYXBzZWRCb3Jk
ZXJDaGFuZ2VzKFJlbmRlclRhYmxlQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZDg4NWU4ZTJjNjI1YzZkYzBiNWYy
ZGZmMTU3OTM0M2VlNWVlNTEwZi4uN2I0N2Q2Y2U2YTgzYzg4ZmJjN2JmMWRlMmJjNTZhODYwNGNk
ZTU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAKQEAgLTkxNywxNiArOTE3LDE2IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNh
bGNPdXRlckJvcmRlcigpCiAgICAgbV9vdXRlckJvcmRlckVuZCA9IGNhbGNPdXRlckJvcmRlckVu
ZCgpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmICghbV9ncmlkLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
aW50PigpOwogCiAgICAgaW50IGZpcnN0TGluZUJhc2VsaW5lID0gbV9ncmlkWzBdLmJhc2VsaW5l
OwogICAgIGlmIChmaXJzdExpbmVCYXNlbGluZSkKICAgICAgICAgcmV0dXJuIGZpcnN0TGluZUJh
c2VsaW5lICsgcm91bmRUb0ludChtX3Jvd1Bvc1swXSk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHJl
c3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gcmVzdWx0OwogICAgIGNvbnN0IFJvdyYgZmly
c3RSb3cgPSBtX2dyaWRbMF0ucm93OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlyc3RS
b3cuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3MgPSBmaXJzdFJv
dy5hdChpKTsKQEAgLTkzNCw3ICs5MzQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2Vj
dGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICAvLyBPbmx5IGNlbGxzIHdp
dGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwgJiYgY2VsbC0+Y29u
dGVudExvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHJvdW5k
VG9JbnQoY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgp
ICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5kaWRhdGUpOworICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlX29yKGNhbmRpZGF0ZSksIGNhbmRpZGF0
ZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uaAppbmRleCA2ZjliMjNlYzkzYjZmMzBhNWQzMjk5YjRkNTZlMTMyNzlk
MWExMGFjLi40YWE4OGVhZWMyYjY3MzgxYmI1OTgxN2E3NTdhODIxZGYwYmZjZWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC02NCw3ICs2
NCw3IEBAIGNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3gg
ewogCiAgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZENlbGwoUmVuZGVy
VGFibGVDZWxsKiwgUmVuZGVyVGFibGVSb3cqIHJvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAppbmRleCA0NGExYzUyMDM5YjVkNDdmZmNkMmExYTdlMTZjNTU4MDE5
MDFmZDA5Li4xMTJjOGM4MDZjMzZkZjBjMjYwZTJiOGE3YWI3NzA0NjExN2UwNTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC03OTksNyArNzk5LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBib29sIGlzU3BhY2UgPSBmYWxzZTsKICAgICBib29s
IGZpcnN0V29yZCA9IHRydWU7CiAgICAgYm9vbCBmaXJzdExpbmUgPSB0cnVlOwotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IG5leHRCcmVha2FibGU7CiAgICAgdW5zaWduZWQgbGFzdFdvcmRCb3VuZGFyeSA9IDA7CiAKICAg
ICAvLyBOb24temVybyBvbmx5IHdoZW4ga2VybmluZyBpcyBlbmFibGVkLCBpbiB3aGljaCBjYXNl
IHdlIG1lYXN1cmUgd29yZHMgd2l0aCB0aGVpciB0cmFpbGluZwpAQCAtODIxLDcgKzgyMSw3IEBA
IHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVh
ZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIG1pbmltdW1TdWZmaXhMZW5ndGggPSBh
ZnRlciA8IDAgPyAyIDogYWZ0ZXI7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdEds
eXBoTGVmdE92ZXJmbG93OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdEdseXBoTGVmdE92
ZXJmbG93OwogCiAgICAgYm9vbCBicmVha05CU1AgPSBzdHlsZS5hdXRvV3JhcCgpICYmIHN0eWxl
Lm5ic3BNb2RlKCkgPT0gU1BBQ0U7CiAgICAgCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBSZW5k
ZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhh
c2hTZXQ8Y29uc3QgRm8KICAgICAgICAgICAgIGZsb2F0IGN1cnJNaW5XaWR0aCA9IDA7CiAgICAg
ICAgICAgICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbikgJiYgaXNTcGFjZUFjY29yZGluZ1RvU3R5
bGUoYywgc3R5bGUpOwogICAgICAgICAgICAgZmxvYXQgdzsKLSAgICAgICAgICAgIE9wdGlvbmFs
PGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICAgICAgICAgIGlmIChpc1NwYWNl
KQogICAgICAgICAgICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdT
cGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAgIGlmICh3b3JkVHJhaWxpbmdT
cGFjZVdpZHRoKQpAQCAtOTE0LDcgKzkxNCw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAK
ICAgICAgICAgICAgICAgICBpZiAoc3VmZml4U3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgc3VmZml4V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPGZsb2F0PiB3
b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwogICAgICAgICAgICAgICAgICAgICBpZiAo
aXNTcGFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgg
PSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC05OTksNyArOTk5LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgfQogICAgIH0KIAotICAgIGdseXBoT3ZlcmZs
b3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVPcihnbHlwaE92ZXJmbG93Lmxl
ZnQpOworICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFs
dWVfb3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKIAogICAgIGlmICgobmVlZHNXb3JkU3BhY2luZyAm
JiBsZW4gPiAxKSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZpcnN0V29yZCkpCiAgICAgICAgIGN1
cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsKQEAgLTE2NzUsOSArMTY3NSw5IEBAIHZvaWQgUmVu
ZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zm
c2V0QWZ0ZXJMYXN0VHlwCiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFmdGVy
TGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIAotU3RyaW5nVmlldyBSZW5kZXJUZXh0OjpzdHJpbmdW
aWV3KHVuc2lnbmVkIHN0YXJ0LCBPcHRpb25hbDx1bnNpZ25lZD4gc3RvcCkgY29uc3QKK1N0cmlu
Z1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gc3RvcCkgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0
b3AudmFsdWVPcih0ZXh0TGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3Rv
cC52YWx1ZV9vcih0ZXh0TGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBsZW5ndGgoKSk7
CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uIDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoc3RhcnQg
PD0gZGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXgg
Zjg1NzBlZmMyYWE1ZTkwZTRmOGI4MTMyNTgzYjExM2M3NzQ5ZWFhNi4uMGQ0ZTE0NmJhZTUwM2I5
N2Q1MzZlZDNlYmNkMGEzMTIyMzAwYzBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oCkBAIC0xNjcsNyArMTY3LDcgQEAgY2xhc3MgUmVuZGVyVGV4dCA6IHB1YmxpYyBSZW5k
ZXJPYmplY3QgewogICAgIHZvaWQgZGVsZXRlTGluZUJveGVzQmVmb3JlU2ltcGxlTGluZUxheW91
dCgpOwogICAgIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dCogc2ltcGxlTGluZUxheW91
dCgpIGNvbnN0OwogCi0gICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0ID0g
MCwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0b3AgPSBOdWxsb3B0KSBjb25zdDsKKyAgICBTdHJpbmdW
aWV3IHN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQgPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBzdG9wID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIExheW91dFVuaXQgdG9wT2ZGaXJz
dFRleHQoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmgKaW5kZXggY2QyYTkxZWRlOGZiZjA0NmZhYjgwOWVkZjExNTQ1MWE1ZGYyYWQw
Yy4uMmFlZWQ0MWU5YWVkNjlhZmY5Yzk1M2MzOWJlN2M2ZTQyM2I2NTIyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKQEAgLTEwMCw4ICsxMDAsOCBA
QCBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJl
bmRlckZsZXhpYmxlQm94IHsKICAgICB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFz
ZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsK
ICAgICB9Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9Ci0gICAgT3B0
aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
bikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxp
bmUoZGlyZWN0aW9uKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGlu
ZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9j
azo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBpc0ZsZXhpYmxlQm94SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAwODYyMTQwMzhhYjUwNzdh
OTI1MDNhM2NmNzE4ZDFkNjg3N2VhYmE4Li4wODE1YzM2NWFhY2JiNzY3MjAyN2YyY2RiMjZlMzM0
MWZmOGQwOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC04
MzksNyArODM5LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFsPHVu
c2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIE9wdGlvbmFsPHVuc2lnbmVkPiBl
bmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpCit2b2lkIFJlbmRl
clZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKIHsKICAg
ICAvLyBNYWtlIHN1cmUgYm90aCBvdXIgc3RhcnQgYW5kIGVuZCBvYmplY3RzIGFyZSBkZWZpbmVk
LgogICAgIC8vIENoZWNrIHd3dy5tc25iYy5jb20gYW5kIHRyeSBjbGlja2luZyBhcm91bmQgdG8g
ZmluZCB0aGUgY2FzZSB3aGVyZSB0aGlzIGhhcHBlbmVkLgpAQCAtODc2LDcgKzg3Niw3IEBAIHZv
aWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFs
PHVuc2lnbmVkPiBzdGFydFBvcywKICAgICBzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhz
dGFydCwgc3RhcnRQb3MsIGVuZCwgZW5kUG9zLCBibG9ja1JlcGFpbnRNb2RlKTsKIH0KIAotdm9p
ZCBSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhjb25zdCBSZW5kZXJP
YmplY3QqIHN0YXJ0LCBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQb3MsIGNvbnN0IFJlbmRlck9i
amVjdCogZW5kLCBPcHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9k
ZSBibG9ja1JlcGFpbnRNb2RlKQordm9pZCBSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdl
ZW5TdWJ0cmVlcyhjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzdGFydFBvcywgY29uc3QgUmVuZGVyT2JqZWN0KiBlbmQsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKIHsK
ICAgICAvLyBDb21wdXRlIHRoZSB2aXNpYmxlIHNlbGVjdGlvbiBlbmQgcG9pbnRzIGZvciBlYWNo
IG9mIHRoZSBzdWJ0cmVlcy4KICAgICBSZW5kZXJTdWJ0cmVlc01hcCByZW5kZXJTdWJ0cmVlc01h
cDsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnNwbGl0U2VsZWN0aW9uQmV0
d2VlblN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbgogICAgICAgICAg
ICAgU2VsZWN0aW9uU3VidHJlZURhdGEgc2VsZWN0aW9uRGF0YSA9IHJlbmRlclN1YnRyZWVzTWFw
LmdldCgmcm9vdCk7CiAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25DbGVh
cigpKSB7CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25TdGFydChu
b2RlLT5yZW5kZXJlcigpKTsKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFNlbGVj
dGlvblN0YXJ0UG9zKG5vZGUgPT0gc3RhcnROb2RlID8gc3RhcnRQb3MgOiBPcHRpb25hbDx1bnNp
Z25lZD4oMCkpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0U2VsZWN0aW9uU3Rh
cnRQb3Mobm9kZSA9PSBzdGFydE5vZGUgPyBzdGFydFBvcyA6IHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+KDApKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRT
ZWxlY3Rpb25FbmQobm9kZS0+cmVuZGVyZXIoKSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lk
IFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVl
Um9vdCYgcm9vdCwgU2VsZWN0aQogICAgICAgICBzZWxlY3RlZEJsb2NrSW5mby52YWx1ZS0+cmVw
YWludCgpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmplY3Qq
JiBzdGFydFJlbmRlcmVyLCBPcHRpb25hbDx1bnNpZ25lZD4mIHN0YXJ0T2Zmc2V0LCBSZW5kZXJP
YmplY3QqJiBlbmRSZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+JiBlbmRPZmZzZXQpIGNvbnN0
Cit2b2lkIFJlbmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRl
cmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgc3RhcnRPZmZzZXQsIFJlbmRlck9iamVjdCom
IGVuZFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgZW5kT2Zmc2V0KSBjb25zdAog
ewogICAgIHN0YXJ0UmVuZGVyZXIgPSBtX3NlbGVjdGlvblVuc3BsaXRTdGFydDsKICAgICBzdGFy
dE9mZnNldCA9IG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0UG9zOwpAQCAtMTEwNyw3ICsxMTA3LDcg
QEAgdm9pZCBSZW5kZXJWaWV3OjpnZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5k
ZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+Jgogdm9pZCBSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlv
bigpCiB7CiAgICAgbGF5ZXIoKS0+cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOwotICAgIHNl
dFNlbGVjdGlvbihudWxscHRyLCBOdWxsb3B0LCBudWxscHRyLCBOdWxsb3B0LCBSZXBhaW50TmV3
TWludXNPbGQpOworICAgIHNldFNlbGVjdGlvbihudWxscHRyLCBzdGQ6Om51bGxvcHQsIG51bGxw
dHIsIHN0ZDo6bnVsbG9wdCwgUmVwYWludE5ld01pbnVzT2xkKTsKIH0KIAogYm9vbCBSZW5kZXJW
aWV3OjpwcmludGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApp
bmRleCA0ZmEyMTI4Nzk5ZDE4NWE0OGE0NmU2YjU0YjViNTRlOGRiMGVjMmIxLi4yM2EwZmRiY2Q1
ODRmMzMyNjc0OWU2M2Y0ZGEzMjk1MDUzODYxZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmgKQEAgLTg1LDggKzg1LDggQEAgY2xhc3MgUmVuZGVyVmlldyBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJCbG9ja0Zsb3csIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiAgICAg
dm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
b3ZlcnJpZGU7CiAKICAgICBlbnVtIFNlbGVjdGlvblJlcGFpbnRNb2RlIHsgUmVwYWludE5ld1hP
Uk9sZCwgUmVwYWludE5ld01pbnVzT2xkLCBSZXBhaW50Tm90aGluZyB9OwotICAgIHZvaWQgc2V0
U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBv
cywgUmVuZGVyT2JqZWN0KiBlbmRPYmplY3QsIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRQb3MsIFNl
bGVjdGlvblJlcGFpbnRNb2RlID0gUmVwYWludE5ld1hPUk9sZCk7Ci0gICAgdm9pZCBnZXRTZWxl
Y3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+JiBz
dGFydE9mZnNldCwgUmVuZGVyT2JqZWN0KiYgZW5kUmVuZGVyZXIsIE9wdGlvbmFsPHVuc2lnbmVk
PiYgZW5kT2Zmc2V0KSBjb25zdDsKKyAgICB2b2lkIHNldFNlbGVjdGlvbihSZW5kZXJPYmplY3Qq
IHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBl
bmRPYmplY3QsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWlu
dE1vZGUgPSBSZXBhaW50TmV3WE9ST2xkKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbihSZW5kZXJP
YmplY3QqJiBzdGFydFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgc3RhcnRPZmZz
ZXQsIFJlbmRlck9iamVjdComIGVuZFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYg
ZW5kT2Zmc2V0KSBjb25zdDsKICAgICB2b2lkIGNsZWFyU2VsZWN0aW9uKCk7CiAgICAgUmVuZGVy
T2JqZWN0KiBzZWxlY3Rpb25VbnNwbGl0U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlv
blVuc3BsaXRTdGFydDsgfQogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uVW5zcGxpdEVuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uVW5zcGxpdEVuZDsgfQpAQCAtMzExLDcgKzMxMSw3
IEBAIGNsYXNzIFJlbmRlclZpZXcgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJs
aWMgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogCiAgICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJl
cmJhbmRhYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNwbGl0U2VsZWN0aW9u
QmV0d2VlblN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgT3B0aW9u
YWw8dW5zaWduZWQ+IHN0YXJ0UG9zLCBjb25zdCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyLCBP
cHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFp
bnRNb2RlKTsKKyAgICB2b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKGNvbnN0IFJl
bmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQ
b3MsIGNvbnN0IFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSk7CiAgICAg
dm9pZCBjbGVhclN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmLCBT
ZWxlY3Rpb25SZXBhaW50TW9kZSwgT2xkU2VsZWN0aW9uRGF0YSYpIGNvbnN0OwogICAgIHZvaWQg
dXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmLCBTZWxlY3Rpb25S
ZXBhaW50TW9kZSk7CiAgICAgdm9pZCBhcHBseVN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0
aW9uU3VidHJlZVJvb3QmLCBTZWxlY3Rpb25SZXBhaW50TW9kZSwgY29uc3QgT2xkU2VsZWN0aW9u
RGF0YSYpOwpAQCAtMzIzLDggKzMyMyw4IEBAIGNsYXNzIFJlbmRlclZpZXcgZmluYWwgOiBwdWJs
aWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogCiAgICAg
UmVuZGVyT2JqZWN0KiBtX3NlbGVjdGlvblVuc3BsaXRTdGFydCB7IG51bGxwdHIgfTsKICAgICBS
ZW5kZXJPYmplY3QqIG1fc2VsZWN0aW9uVW5zcGxpdEVuZCB7IG51bGxwdHIgfTsKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQb3M7Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG1fc2VsZWN0aW9uVW5zcGxpdEVuZFBvczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBtX3NlbGVjdGlvblVuc3BsaXRTdGFydFBvczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBtX3NlbGVjdGlvblVuc3BsaXRFbmRQb3M7CiAKICAgICAvLyBJbmNsdWRlIHRoaXMg
UmVuZGVyVmlldy4KICAgICB1aW50NjRfdCBtX3JlbmRlcmVyQ291bnQgeyAxIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oCmluZGV4IGE4MjEy
MTFiYzNhNTk1MjI4NmY3YjI1NGU4ZmQ5ZGI2MDdjODA5ZjguLjA2OGExOTE1MGIzMTkyZGNkMTUy
MDNjYzM4ZDFjNjM0ZWQ0MmZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
ZWxlY3Rpb25TdWJ0cmVlUm9vdC5oCkBAIC00OCw4ICs0OCw4IEBAIGNsYXNzIFNlbGVjdGlvblN1
YnRyZWVSb290IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2Vs
ZWN0aW9uRW5kUG9zOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25T
dGFydFBvczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9z
OwogICAgICAgICBTZWxlY3RlZE9iamVjdE1hcCBzZWxlY3RlZE9iamVjdHM7CiAgICAgICAgIFNl
bGVjdGVkQmxvY2tNYXAgc2VsZWN0ZWRCbG9ja3M7CiAgICAgfTsKQEAgLTU4LDcgKzU4LDcgQEAg
Y2xhc3MgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogICAgIHB1YmxpYzoKICAgICAgICAgU2VsZWN0
aW9uU3VidHJlZURhdGEoKSA9IGRlZmF1bHQ7CiAKLSAgICAgICAgU2VsZWN0aW9uU3VidHJlZURh
dGEoUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVj
dGlvblN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVuZCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHNlbGVjdGlvbkVuZFBvcykKKyAgICAgICAgU2VsZWN0aW9uU3VidHJlZURhdGEoUmVuZGVy
T2JqZWN0KiBzZWxlY3Rpb25TdGFydCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9u
U3RhcnRQb3MsIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzZWxlY3Rpb25FbmRQb3MpCiAgICAgICAgICAgICA6IG1fc2VsZWN0aW9uU3RhcnQoc2Vs
ZWN0aW9uU3RhcnQpCiAgICAgICAgICAgICAsIG1fc2VsZWN0aW9uU3RhcnRQb3Moc2VsZWN0aW9u
U3RhcnRQb3MpCiAgICAgICAgICAgICAsIG1fc2VsZWN0aW9uRW5kKHNlbGVjdGlvbkVuZCkKQEAg
LTY3LDkgKzY3LDkgQEAgY2xhc3MgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogICAgICAgICB9CiAK
ICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZWN0aW9uU3RhcnQ7IH0KLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0
YXJ0UG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydFBvczsgfQorICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25TdGFydFBvcygpIGNvbnN0IHsgcmV0dXJu
IG1fc2VsZWN0aW9uU3RhcnRQb3M7IH0KICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25F
bmQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkVuZDsgfQotICAgICAgICBPcHRpb25hbDx1
bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmRQ
b3M7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9zKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmRQb3M7IH0KICAgICAgICAgYm9vbCBzZWxlY3Rp
b25DbGVhcigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAhbV9zZWxlY3Rp
b25TdGFydApAQCAtODQsMjIgKzg0LDIyIEBAIGNsYXNzIFNlbGVjdGlvblN1YnRyZWVSb290IHsK
ICAgICAgICAgICAgIGVuZFBvcyA9IG1fc2VsZWN0aW9uRW5kUG9zLnZhbHVlKCk7CiAgICAgICAg
IH0KICAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChSZW5kZXJPYmplY3QqIHNlbGVjdGlv
blN0YXJ0KSB7IG1fc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydDsgfQotICAgICAgICB2
b2lkIHNldFNlbGVjdGlvblN0YXJ0UG9zKE9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25TdGFy
dFBvcykgeyBtX3NlbGVjdGlvblN0YXJ0UG9zID0gc2VsZWN0aW9uU3RhcnRQb3M7fQorICAgICAg
ICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0UG9zKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVj
dGlvblN0YXJ0UG9zKSB7IG1fc2VsZWN0aW9uU3RhcnRQb3MgPSBzZWxlY3Rpb25TdGFydFBvczt9
CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5kKFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5k
KSB7IG1fc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kOyB9Ci0gICAgICAgIHZvaWQgc2V0U2Vs
ZWN0aW9uRW5kUG9zKE9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25FbmRQb3MpIHsgbV9zZWxl
Y3Rpb25FbmRQb3MgPSBzZWxlY3Rpb25FbmRQb3M7fQorICAgICAgICB2b2lkIHNldFNlbGVjdGlv
bkVuZFBvcyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25FbmRQb3MpIHsgbV9zZWxl
Y3Rpb25FbmRQb3MgPSBzZWxlY3Rpb25FbmRQb3M7fQogICAgICAgICB2b2lkIGNsZWFyU2VsZWN0
aW9uKCkKICAgICAgICAgewogICAgICAgICAgICAgbV9zZWxlY3Rpb25TdGFydCA9IG51bGxwdHI7
Ci0gICAgICAgICAgICBtX3NlbGVjdGlvblN0YXJ0UG9zID0gTnVsbG9wdDsKKyAgICAgICAgICAg
IG1fc2VsZWN0aW9uU3RhcnRQb3MgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX3NlbGVj
dGlvbkVuZCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbkVuZFBvcyA9IE51bGxv
cHQ7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkVuZFBvcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVuZGVyT2JqZWN0KiBtX3NlbGVjdGlvblN0
YXJ0IHsgbnVsbHB0ciB9OwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rpb25T
dGFydFBvczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rpb25TdGFy
dFBvczsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBtX3NlbGVjdGlvbkVuZCB7IG51bGxwdHIgfTsK
LSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9uRW5kUG9zOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3NlbGVjdGlvbkVuZFBvczsKICAgICB9OwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPFNlbGVjdGlvblN1YnRyZWVSb290KiwgU2VsZWN0aW9uU3VidHJlZURh
dGE+IFJlbmRlclN1YnRyZWVzTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwCmluZGV4IDA3MWZiMzA5ODFjZTk2YTQxM2U0YTE0YzA1ZmM2Njc0MDEx
MGRhYjMuLjVmODA5ZDg4MDA3YzFkM2FkZDRiODI2ZWQ5NjllMTIwNWQ1NjhhNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTQwMCwxMSAr
NDAwLDExIEBAIGNsYXNzIExpbmVTdGF0ZSB7CiAgICAgZmxvYXQgbG9naWNhbExlZnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxMZWZ0T2Zmc2V0OyB9CiAgICAgY29uc3QgVGV4dEZy
YWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudCYgb3ZlcmZsb3dlZEZyYWdtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9vdmVyZmxvd2VkRnJhZ21lbnQ7IH0KICAgICBib29sIGhhc1RyYWlsaW5nV2hp
dGVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoOyB9Ci0g
ICAgT3B0aW9uYWw8VGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudD4gbGFzdEZyYWdt
ZW50KCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0
RnJhZ21lbnQ+IGxhc3RGcmFnbWVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9mcmFn
bWVudHMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1fZnJhZ21lbnRzLmxhc3QoKTsKLSAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogICAgIGJvb2wgaXNXaGl0ZXNwYWNlT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGggJiYgbV9ydW5zV2lkdGggPT0gbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0
aDsgfQogICAgIGJvb2wgZml0cyhmbG9hdCBleHRyYSkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFi
bGVXaWR0aCA+PSBtX3J1bnNXaWR0aCArIGV4dHJhOyB9CkBAIC04MDcsNyArODA3LDcgQEAgc3Rh
dGljIEVUZXh0QWxpZ24gdGV4dEFsaWduRm9yTGluZShjb25zdCBUZXh0RnJhZ21lbnRJdGVyYXRv
cjo6U3R5bGUmIHN0eWxlLCBib28KICAgICByZXR1cm4gdGV4dEFsaWduOwogfQogCi1zdGF0aWMg
dm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKExpbmVTdGF0ZSYgbGluZSwgTGF5b3V0
OjpSdW5WZWN0b3ImIHJ1bnMsIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0UnVuSW5kZXhPZlByZXZp
b3VzTGluZSwgdW5zaWduZWQmIGxpbmVDb3VudCwKK3N0YXRpYyB2b2lkIGNsb3NlTGluZUVuZGlu
Z0FuZEFkanVzdFJ1bnMoTGluZVN0YXRlJiBsaW5lLCBMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdFJ1bkluZGV4T2ZQcmV2aW91c0xpbmUsIHVuc2ln
bmVkJiBsaW5lQ291bnQsCiAgICAgY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3ImIHRleHRGcmFn
bWVudEl0ZXJhdG9yLCBib29sIGxhc3RMaW5lSW5GbG93KQogewogICAgIGlmICghcnVucy5zaXpl
KCkgfHwgKGxhc3RSdW5JbmRleE9mUHJldmlvdXNMaW5lICYmIHJ1bnMuc2l6ZSgpIC0gMSA9PSBs
YXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZS52YWx1ZSgpKSkKQEAgLTgzOSw3ICs4MzksNyBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgUmVuZGVy
QmxvY2tGbG93JiBmbG93LCB1bnNpZwogICAgIExpbmVTdGF0ZSBsaW5lOwogICAgIGJvb2wgaXNF
bmRPZkNvbnRlbnQgPSBmYWxzZTsKICAgICBUZXh0RnJhZ21lbnRJdGVyYXRvciB0ZXh0RnJhZ21l
bnRJdGVyYXRvciA9IFRleHRGcmFnbWVudEl0ZXJhdG9yKGZsb3cpOwotICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZTsKICAgICBkbyB7CiAgICAgICAgIGZs
b3cuc2V0TG9naWNhbEhlaWdodChsaW5lSGVpZ2h0ICogbGluZUNvdW50ICsgYm9yZGVyQW5kUGFk
ZGluZ0JlZm9yZSk7CiAgICAgICAgIExpbmVTdGF0ZSBwcmV2aW91c0xpbmUgPSBsaW5lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlv
bnMuY3BwCmluZGV4IGVjMDI4NjUwNzA2NmIzMTliYzc3ZjE2ZDU4ZjgzMGNkOTlmZjM0ZDYuLjk1
YTM3NDg1ZTUxNWMyYWExMzEzMmJmOTMwY2QwYTM2MTBjZWVmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAg
LTk0LDExICs5NCwxMSBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZs
b3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogICAgIHRleHRQYWludGVy
LnNldEZvbnQoc3R5bGUuZm9udENhc2NhZGUoKSk7CiAgICAgdGV4dFBhaW50ZXIuc2V0VGV4dFBh
aW50U3R5bGUoY29tcHV0ZVRleHRQYWludFN0eWxlKGZsb3cuZnJhbWUoKSwgc3R5bGUsIHBhaW50
SW5mbykpOwogCi0gICAgT3B0aW9uYWw8VGV4dERlY29yYXRpb25QYWludGVyPiB0ZXh0RGVjb3Jh
dGlvblBhaW50ZXI7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0RGVjb3JhdGlvblBhaW50ZXI+IHRl
eHREZWNvcmF0aW9uUGFpbnRlcjsKICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKSAhPSBUZXh0RGVjb3JhdGlvbk5vbmUpIHsKICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCog
dGV4dFJlbmRlcmVyID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4oZmxvdykuZmlyc3QoKTsK
ICAgICAgICAgaWYgKHRleHRSZW5kZXJlcikgewotICAgICAgICAgICAgdGV4dERlY29yYXRpb25Q
YWludGVyID0gVGV4dERlY29yYXRpb25QYWludGVyKHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxl
LnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0ZXh0UmVuZGVyZXIsIGZhbHNlKTsKKyAgICAg
ICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci5lbXBsYWNlKHBhaW50SW5mby5jb250ZXh0KCks
IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0ZXh0UmVuZGVyZXIsIGZhbHNlKTsK
ICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci0+c2V0Rm9udChzdHlsZS5mb250Q2Fz
Y2FkZSgpKTsKICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci0+c2V0QmFzZWxpbmUo
c3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggMTFmMjgzMWJmZmQw
NTEzYjM0MjFhMTFiN2Y5MWFmNjBkYzNjYzNhNy4uZWQ3NjExZWY4OTA1MTA4N2IyMzE4NmE3YTA0
MWM0ZDUxNjBhNjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
QnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJl
YWtpbmdDb250ZXh0LmgKQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0IFdvcmRUcmFpbGluZ1NwYWNl
IHsKICAgICB7CiAgICAgfQogCi0gICAgV1RGOjpPcHRpb25hbDxmbG9hdD4gd2lkdGgoSGFzaFNl
dDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4g
d2lkdGgoSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCiAgICAgewogICAgICAg
ICBpZiAobV9zdGF0ZSA9PSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpDb21wdXRlZCkKICAgICAg
ICAgICAgIHJldHVybiBtX3dpZHRoOwpAQCAtODUsNyArODUsNyBAQCBzdHJ1Y3QgV29yZFRyYWls
aW5nU3BhY2UgewogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFdvcmRUcmFpbGluZ1NwYWNlU3Rh
dGUgeyBVbmluaXRpYWxpemVkLCBDb21wdXRlZCB9OwogICAgIFdvcmRUcmFpbGluZ1NwYWNlU3Rh
dGUgbV9zdGF0ZSB7IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OlVuaW5pdGlhbGl6ZWQgfTsKLSAg
ICBXVEY6Ok9wdGlvbmFsPGZsb2F0PiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IG1fd2lkdGg7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5bGU7CiAgICAgVGV4dExheW91
dCogbV90ZXh0TGF5b3V0IHsgbnVsbHB0ciB9OwogfTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBjbGFz
cyBCcmVha2luZ0NvbnRleHQgewogICAgICAgICBtX2hhbmdzQXRFbmQgPSBmYWxzZTsKICAgICB9
CiAKLSAgICB2b2lkIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKFJlbmRlck9iamVjdCYg
b2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFr
ID0gT3B0aW9uYWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBjb21taXRMaW5lQnJlYWtBdEN1cnJl
bnRXaWR0aChSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0ID0gMCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKSkK
ICAgICB7CiAgICAgICAgIG1fd2lkdGguY29tbWl0KCk7CiAgICAgICAgIG1fbGluZUJyZWFrSGlz
dG9yeS5tb3ZlVG8ob2JqZWN0LCBvZmZzZXQsIG5leHRCcmVhayk7CkBAIC0yMTAsMTQgKzIxMCwx
NCBAQCBjbGFzcyBCcmVha2luZ0NvbnRleHQgewogCiAgICAgICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiB0aGlzLT5hdCgwKS5yZW5kZXJlcigpOyB9CiAgICAgICAg
IHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLm9mZnNldCgpOyB9
Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiB0aGlzLT5hdCgwKS5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsgfQorICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiB0aGlzLT5hdCgwKS5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsgfQogICAgICAgICBi
b29sIGF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDAp
LmF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpOyB9CiAgICAgICAgIFVDaGFyIHByZXZpb3VzSW5T
YW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLnByZXZpb3VzSW5TYW1lTm9kZSgp
OyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZXJhdG9yJiBnZXQoc2l6ZV90IGkpIGNvbnN0IHsg
cmV0dXJuIHRoaXMtPmF0KGkpOyB9OwogICAgICAgICBjb25zdCBJbmxpbmVJdGVyYXRvciYgY3Vy
cmVudCgpIGNvbnN0IHsgcmV0dXJuIGdldCgwKTsgfQogICAgICAgICBzaXplX3QgaGlzdG9yeUxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnNpemUoKTsgfQogCi0gICAgICAgIHZvaWQgbW92
ZVRvKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIE9wdGlvbmFsPHVuc2ln
bmVkPiBuZXh0QnJlYWsgPSBOdWxsb3B0KQorICAgICAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmpl
Y3QmIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0
QnJlYWsgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHB1c2goWyZdKElu
bGluZUl0ZXJhdG9yJiBtb2RpZnlNZSkgewogICAgICAgICAgICAgICAgIG1vZGlmeU1lLm1vdmVU
byhvYmplY3QsIG9mZnNldCwgbmV4dEJyZWFrKTsKQEAgLTY2Miw3ICs2NjIsNyBAQCBpbmxpbmUg
dm9pZCBlbnN1cmVDaGFyYWN0ZXJHZXRzTGluZUJveChMaW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdT
dGF0ZSYgbGluZVdoaXRlcwogICAgIGxpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlLnN0b3BJ
Z25vcmluZ1NwYWNlcyhJbmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFyYWdyYXBoU2VwYXJhdG9yLnJl
bmRlcmVyKCksIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0KCkpKTsKIH0KIAotaW5saW5l
IHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgdW5zaWduZWQgY29u
c2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIGludCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lc0xp
bWl0LCBpbnQgbWluaW11bVByZWZpeExpbWl0LCBpbnQgbWluaW11bVN1ZmZpeExpbWl0LCB1bnNp
Z25lZCBsYXN0U3BhY2UsIHVuc2lnbmVkIHBvcywgZmxvYXQgeFBvcywgaW50IGF2YWlsYWJsZVdp
ZHRoLCBib29sIGlzRml4ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UsIGludCBsYXN0
U3BhY2VXb3JkU3BhY2luZywgSW5saW5lSXRlcmF0b3ImIGxpbmVCcmVhaywgT3B0aW9uYWw8dW5z
aWduZWQ+IG5leHRCcmVha2FibGUsIGJvb2wmIGh5cGhlbmF0ZWQpCitpbmxpbmUgdm9pZCB0cnlI
eXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5
cGhlbmF0ZWRMaW5lcywgaW50IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzTGltaXQsIGludCBt
aW5pbXVtUHJlZml4TGltaXQsIGludCBtaW5pbXVtU3VmZml4TGltaXQsIHVuc2lnbmVkIGxhc3RT
cGFjZSwgdW5zaWduZWQgcG9zLCBmbG9hdCB4UG9zLCBpbnQgYXZhaWxhYmxlV2lkdGgsIGJvb2wg
aXNGaXhlZFBpdGNoLCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRT
cGFjaW5nLCBJbmxpbmVJdGVyYXRvciYgbGluZUJyZWFrLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBuZXh0QnJlYWthYmxlLCBib29sJiBoeXBoZW5hdGVkKQogewogICAgIC8vIE1hcCAnaHlwaGVu
YXRlLWxpbWl0LXtiZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4KICAgICB1bnNpZ25lZCBtaW5p
bXVtUHJlZml4TGVuZ3RoOwpAQCAtNzQwLDcgKzc0MCw3IEBAIGlubGluZSBmbG9hdCBCcmVha2lu
Z0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgoUmVuZGVyVGV4dCYg
cmVuCiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0gbGFzdFNwYWNlOwogICAgIAog
ICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAgIFdURjo6T3B0aW9uYWw8Zmxv
YXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29y
ZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnICcpCiAg
ICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChm
YWxsYmFja0ZvbnRzKTsKICAgICBpZiAod29yZFRyYWlsaW5nU3BhY2VXaWR0aCkKQEAgLTg3MCw3
ICs4NzAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1l
YXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgbWlkV29yZEJy
ZWFrID0gbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcgKyBjaGFyV2lkdGggPiBtX3dp
ZHRoLmF2YWlsYWJsZVdpZHRoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3Np
dGlvbigpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9z
aXRpb24gPSBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7CiAgICAgICAgIGJvb2wg
YmV0d2VlbldvcmRzID0gYyA9PSAnXG4nIHx8IChtX2N1cnJXUyAhPSBQUkUgJiYgIW1fYXRTdGFy
dCAmJiBpc0JyZWFrYWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yLCBtX2N1
cnJlbnQub2Zmc2V0KCksIG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJlYWtOQlNQLCBpc0xvb3Nl
Q0pLTW9kZSwga2VlcEFsbFdvcmRzKQogICAgICAgICAgICAgJiYgKHN0eWxlLmh5cGhlbnMoKSAh
PSBIeXBoZW5zTm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5TYW1lTm9kZSgpICE9IHNvZnRI
eXBoZW4pKSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJlYWthYmxlUG9zaXRpb24obmV4
dEJyZWFrYWJsZVBvc2l0aW9uKTsKQEAgLTk3Miw3ICs5NzIsNyBAQCBpbmxpbmUgYm9vbCBCcmVh
a2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50
cywgYm9vbAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIENo
ZWNrIGlmIHRoZSBsYXN0IGJyZWFraW5nIHBvc2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCiAgICAg
ICAgICAgICAgICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlw
aGVuc05vbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBs
YXN0QnJlYWtpbmdQb3NpdG9uOworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gbGFzdEJyZWFraW5nUG9zaXRvbjsKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBudWxscHRy
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGluZUJyZWFrSGlzdG9yeS5vZmZzZXQo
KSB8fCBtX2xpbmVCcmVha0hpc3RvcnkubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0QnJlYWtpbmdQb3NpdG9uID0gbV9saW5lQnJlYWtI
aXN0b3J5Lm9mZnNldCgpOwpAQCAtOTgzLDcgKzk4Myw3IEBAIGlubGluZSBib29sIEJyZWFraW5n
Q29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBi
b29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRp
b24gPSBtX2N1cnJlbnQucmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0QnJlYWtpbmdQb3NpdG9uKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8VUNoYXI+IGNoYXJhY3RlckJlZm9yZUJyZWFr
aW5nUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxV
Q2hhcj4gY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXaGVuIGxhc3QgYnJlYWtpbmcgcG9zaXRpb24gcG9pbnRzIHRvIHRoZSBz
dGFydCBvZiB0aGUgY3VycmVudCBjb250ZXh0LCB3ZSBuZWVkIHRvIGxvb2sgYXQgdGhlIGxhc3Qg
Y2hhcmFjdGVyIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcHJldmlv
dXMgbm9uLWVtcHR5IHRleHQgcmVuZGVyZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkpCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCBp
bmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9j
YXRpb25Gb3JUcmFpbGluZ1dvcmQoKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwogICAgIGJv
b2wgaXNMb29zZUNKS01vZGUgPSBtX3JlbmRlclRleHRJbmZvLnRleHQgIT0gJnJlbmRlclRleHQg
JiYgbV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvci5pc0xvb3NlQ0pLTW9kZSgpOwog
ICAgIGJvb2wgYnJlYWtOQlNQID0gbV9hdXRvV3JhcCAmJiBtX2N1cnJlbnRTdHlsZS0+bmJzcE1v
ZGUoKSA9PSBTUEFDRTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0
aW9uID0gbGluZUJyZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IGxpbmVCcmVhay5uZXh0QnJlYWth
YmxlUG9zaXRpb24oKTsKICAgICBpc0JyZWFrYWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVh
a0l0ZXJhdG9yLCBsaW5lQnJlYWsub2Zmc2V0KCkgKyAxLCBuZXh0QnJlYWthYmxlUG9zaXRpb24s
IGJyZWFrTkJTUCwgaXNMb29zZUNKS01vZGUsIG1fY3VycmVudFN0eWxlLT53b3JkQnJlYWsoKSA9
PSBLZWVwQWxsV29yZEJyZWFrKTsKICAgICBpZiAoIW5leHRCcmVha2FibGVQb3NpdGlvbiB8fCBu
ZXh0QnJlYWthYmxlUG9zaXRpb24udmFsdWUoKSAhPSByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIGxpbmVCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKaW5kZXggNWYzMTZhNDgxYjRjMGVjOTczZWE2YzM2MjUy
MmRjMmVhMDBlMTBjNy4uY2E0NmMyZWJjZDAyZmRlMzRlNWU2YzBiZjBiZDhiNzJhMDRhMmUwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAK
QEAgLTEzNSwxMCArMTM1LDEwIEBAIHZvaWQgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHls
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIC8vIFRoZSBkaXNwbGF5c3R5bGUgYW5kIG1h
dGh2YXJpYW50IGF0dHJpYnV0ZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCiAgICAg
YXV0byogZWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS0+ZWxlbWVu
dCgpOwogICAgIGlmIChpczxNYXRoTUxFbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICBPcHRp
b25hbDxib29sPiBkaXNwbGF5U3R5bGUgPSBkb3duY2FzdDxNYXRoTUxFbGVtZW50PihlbGVtZW50
KS0+c3BlY2lmaWVkRGlzcGxheVN0eWxlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
ZGlzcGxheVN0eWxlID0gZG93bmNhc3Q8TWF0aE1MRWxlbWVudD4oZWxlbWVudCktPnNwZWNpZmll
ZERpc3BsYXlTdHlsZSgpOwogICAgICAgICBpZiAoZGlzcGxheVN0eWxlKQogICAgICAgICAgICAg
bV9kaXNwbGF5U3R5bGUgPSBkaXNwbGF5U3R5bGUudmFsdWUoKTsKLSAgICAgICAgT3B0aW9uYWw8
TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IG1hdGhWYXJpYW50ID0gZG93bmNhc3Q8TWF0aE1M
RWxlbWVudD4oZWxlbWVudCktPnNwZWNpZmllZE1hdGhWYXJpYW50KCk7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IG1hdGhWYXJpYW50ID0gZG93bmNh
c3Q8TWF0aE1MRWxlbWVudD4oZWxlbWVudCktPnNwZWNpZmllZE1hdGhWYXJpYW50KCk7CiAgICAg
ICAgIGlmIChtYXRoVmFyaWFudCkKICAgICAgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBtYXRoVmFy
aWFudC52YWx1ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggNWIyMTEyZjM1YTQ2ZDNiNWI3MTI5
Yzk1NmVhZDI4ODg3OTFhYmY1OS4uYTAyZmNkMzE1MDU1YjIwMWE0NGQ4YWRhNTc1NmI3NDI5OWZi
OWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbnQgUmVuZGVyTWF0aE1MQmxv
Y2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJz
dExpbgogICAgIGlmIChsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVC
b3hlcykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUo
KS52YWx1ZU9yKFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmly
c3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKKyAgICByZXR1cm4gZmlyc3RM
aW5lQmFzZWxpbmUoKS52YWx1ZV9vcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNl
bGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CiB9CiAK
ICNpZiBFTkFCTEUoREVCVUdfTUFUSF9MQVlPVVQpCkBAIC0xNzMsMTEgKzE3MywxMSBAQCBMYXlv
dXRVbml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBj
b25zdCBSZW5kZXJTdHlsZSYgcwogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRo
TUxUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJl
bmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gQnkg
ZGVmYXVsdCB0aGUgdmVydGljYWwgY2VudGVyIG9mIDxtdGFibGU+IGlzIGFsaWduZWQgb24gdGhl
IG1hdGggYXhpcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIFJlbmRlclRhYmxlOjpm
aXJzdExpbmVCb3hCYXNlbGluZSwgd2hpY2ggcmV0dXJucyB0aGUgYmFzZWxpbmUgb2YgdGhlIGZp
cnN0IHJvdyBvZiBhIDx0YWJsZT4uCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4obG9naWNhbEhl
aWdodCgpIC8gMiArIGF4aXNIZWlnaHQoc3R5bGUoKSkpOworICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPGludD4obG9naWNhbEhlaWdodCgpIC8gMiArIGF4aXNIZWlnaHQoc3R5bGUoKSkpOwogfQog
CiB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpsYXlvdXRJdGVtcyhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmgKaW5kZXggMGU3MzNiOWViMTM2NDJhODFmM2JmZTRhNGQyYTc5OGIyYWI3MDFkZC4u
ZTJmNjdhZjg5YjNmM2EzNTZjZDFkMmI2MzE2MjYwYWJjMzJkZmUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtODEs
NyArODEsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6IHB1YmxpYyBSZW5kZXJCbG9jayB7
CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBhc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gY2hpbGQuZmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0K
IAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CkBAIC0xMTAsNyArMTEwLDcgQEAgY2xh
c3MgUmVuZGVyTWF0aE1MVGFibGUgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGFibGUgewogcHJpdmF0
ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJSZW5kZXJNYXRoTUxUYWJsZSI7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1MU3R5bGU+IG1fbWF0aE1MU3R5bGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCBhYmVjMmYxMWQxZmM2YWEyMzBjN2QxNjUzNmE5NDIz
YzMzYmI1MzZmLi5kY2VhMThlNjM1NWEyOTM3ZDFiODliOWQzNjc1M2U3NTVhZTQwMTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcApAQCAtMjQ0LDEwICsyNDQsMTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3Vu
ZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBsb2dpY2Fs
V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSk7CiB9CiAKLU9wdGlvbmFsPGludD4g
UmVuZGVyTWF0aE1MRnJhY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dAogewogICAgIGlmIChpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0
ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihtX2FzY2VudCkpKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8aW50PihzdGQ6Omxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4obV9hc2Nl
bnQpKSk7CiAgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggYjk5OTQ4MDE5NTA5NTk2NGNjN2YzOGQ3Nzg5ODFlNDlm
Njg5ZjE1Mi4uMGFkOWRmZmFhOWM1Yzc5ZjYxYTk4MmJiMzc4M2M1OTZmYzBhZWVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJh
Y3Rpb24uaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxGcmFjdGlvbiBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKLSAg
ICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIFJlbmRl
ck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcAppbmRleCA3ZWZhMjczMDgyY2NhYzAxMTJiNzQyODNiMjk0ZDE1OGIyZGU1OWVmLi5i
MDA3MWJhZGNmOGJkMTBiNTk1NzIzMmNmYzQ3MTg2MGQ5MTMwYTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cApAQCAtMjkxLDEwICsyOTEsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
dmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3Ry
ZXRjaERlcHRoQmVsb3dCYXNlbGluZSAtIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBt
X21hdGhPcGVyYXRvci5kZXNjZW50KCkgKyBtX21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwog
fQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAodXNlTWF0aE9wZXJhdG9yKCkpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0Piht
X21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgp
KSkpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRp
Y19jYXN0PGZsb2F0PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVk
T3BlcmF0b3JTaGlmdCgpKSkpOwogICAgIHJldHVybiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RM
aW5lQmFzZWxpbmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IDIyNDczNzQzMDUwNmFlOTcxZThh
N2NhOWRkMmY2MmE3ZmM5MjVhNGUuLmExNTgzOTg4YjgyOTZiYWI0ODMwN2Y3YTY1YWI3NGY5YWFh
OWUyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1M
T3BlcmF0b3IgOiBwdWJsaWMgUmVuZGVyTWF0aE1MVG9rZW4gewogICAgIGJvb2wgaXNSZW5kZXJN
YXRoTUxPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlz
SW52aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJl
bGxpc2hlZE9wZXJhdG9yKCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQogCiAgICAgYm9vbCBzaG91
bGRBbGxvd1N0cmV0Y2hpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAppbmRleCBjMTM1YTI3NmY2MWIw
NjQ1OTFjMDIzM2YyMDU3MWQyMWI0OWE5NmNhLi41OWIyYjAxZGY2N2FmNTA5ZTYxNTE1ZGYxODQ3
MDBjZjZmN2Y1NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxQYWRkZWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0
VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
TWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGlu
dD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAg
Ly8gV2UgdHJ5IGFuZCBjYWxjdWxhdGUgdGhlIGJhc2VsaW5lIGZyb20gdGhlIHBvc2l0aW9uIG9m
IHRoZSBmaXJzdCBjaGlsZC4KICAgICBMYXlvdXRVbml0IGFzY2VudDsKQEAgLTExOCw3ICsxMTgs
NyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAogICAgICAgICBhc2NlbnQgPSBhc2NlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkg
KyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkgKyB2b2Zmc2V0KCk7CiAgICAgZWxzZQogICAg
ICAgICBhc2NlbnQgPSBtcGFkZGVkSGVpZ2h0KDApOwotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+
KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0Pihhc2NlbnQpKSk7CisgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8aW50PihzdGQ6Omxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4oYXNjZW50KSkp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxQYWRkZWQuaAppbmRleCAwYWMzYzg5MDcyNTQzZGNmNWEwYzRjN2JiNTU2NTBlODg0
ZDU1ZWNkLi5iMTU5OGQ4ZWE3NTMzNmQxYzE4NzI2ZDExNGQ3MDFiMDU2NDhmMWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVk
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MUGFkZGVkIGZpbmFsIDogcHVi
bGljIFJlbmRlck1hdGhNTFJvdyB7CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKLSAgICBPcHRpb25h
bDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBNYXRoTUxQYWRk
ZWRFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MUGFk
ZGVkRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KICAgICBMYXlvdXRVbml0IHZv
ZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm93LmNwcAppbmRleCBlNWYxMmIzM2VhMjhjMmIyMDhlZDQ5MWMyZTIzZmQ5
OGEyMDBkNTU4Li5jNGJlYmMyYTIzYzM5MjdiMWZhNTRkZGVmODJiNzUzYjE3MDI3N2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
Y3BwCkBAIC00OSwxMyArNDksMTMgQEAgTWF0aE1MUm93RWxlbWVudCYgUmVuZGVyTWF0aE1MUm93
OjplbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MUm93RWxlbWVu
dCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0
aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVu
ZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFz
ZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0g
ICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPGludD4oKTsKIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4o
bHJvdW5kZihhc2NlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5s
b2dpY2FsVG9wKCkpKSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihzdGF0aWNfY2Fz
dDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVD
aGlsZC0+bG9naWNhbFRvcCgpKSkpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTFJvdzo6Y29tcHV0
ZUxpbmVWZXJ0aWNhbFN0cmV0Y2goTGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNj
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um93LmgKaW5kZXggMjg5NDIxZDJmYjg5ZjJiM2E5NzQxODBjOTc5YzAzYzhlY2M4ZDM3Ny4uZjlj
MTY3ODliMTFjZWFjMjllNDMyMGY4N2Q5ODg0OTRjN2EyOTYzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvdyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiAK
IHByb3RlY3RlZDoKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwotICAgIE9wdGlvbmFs
PGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQg
bGF5b3V0Um93SXRlbXMoTGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50KTsK
ICAgICB2b2lkIGNvbXB1dGVMaW5lVmVydGljYWxTdHJldGNoKExheW91dFVuaXQmIGFzY2VudCwg
TGF5b3V0VW5pdCYgZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCAzNDE0MDQzNWRkMTNiMTg4
N2YzOWQwYzBiMzYyMWQ2OGRkZGIwYzBjLi5jYjc1ZDkyNmFlNGIwODljZTlkZTMxZjMwMmEzZTUw
YWU4Nzc2MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTc2LDEzICs3NiwxMyBAQCBSZW5kZXJNYXRo
TUxPcGVyYXRvciogUmVuZGVyTWF0aE1MU2NyaXB0czo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkK
ICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KGJhc2UpLT51bmVtYmVsbGlz
aGVkT3BlcmF0b3IoKTsKIH0KIAotT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJl
bmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW5kR2V0UmVmZXJlbmNl
Q2hpbGRyZW4oKQorc3RkOjpvcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VD
aGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbmRHZXRSZWZlcmVuY2VDaGls
ZHJlbigpCiB7CiAgICAgLy8gQWxsIHNjcmlwdGVkIGVsZW1lbnRzIG11c3QgaGF2ZSBhdCBsZWFz
dCBvbmUgY2hpbGQuCiAgICAgLy8gVGhlIGZpcnN0IGNoaWxkIGlzIHRoZSBiYXNlLgogICAgIGF1
dG8gYmFzZSA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmZXJlbmNl
Q2hpbGRyZW4gcmVmZXJlbmNlOwogICAgIHJlZmVyZW5jZS5iYXNlID0gYmFzZTsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJl
bj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbgogICAgICAgICAvLyA8bW92ZXI+IGJh
c2Ugb3ZlcnNjcmlwdCA8L21vdmVyPgogICAgICAgICBhdXRvIHNjcmlwdCA9IGJhc2UtPm5leHRT
aWJsaW5nQm94KCk7CiAgICAgICAgIGlmICghc2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVy
KCpzY3JpcHQpIHx8IHNjcmlwdC0+bmV4dFNpYmxpbmdCb3goKSkKLSAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVm
ZXJlbmNlLmZpcnN0UG9zdFNjcmlwdCA9IHNjcmlwdDsKICAgICAgICAgcmV0dXJuIHJlZmVyZW5j
ZTsKICAgICB9CkBAIC0xMTUsMTAgKzExNSwxMCBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxTY3Jp
cHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbgog
ICAgICAgICAvLyA8bXVuZGVyb3Zlcj4gYmFzZSBzdWJzY3JpcHQgc3VwZXJzY3JpcHQgPC9tdW5k
ZXJvdmVyPgogICAgICAgICBhdXRvIHN1YlNjcmlwdCA9IGJhc2UtPm5leHRTaWJsaW5nQm94KCk7
CiAgICAgICAgIGlmICghc3ViU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzdWJTY3Jp
cHQpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBhdXRvIHN1cGVyU2NyaXB0ID0gc3ViU2NyaXB0LT5uZXh0U2li
bGluZ0JveCgpOwogICAgICAgICBpZiAoIXN1cGVyU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1p
dGVyKCpzdXBlclNjcmlwdCkgfHwgc3VwZXJTY3JpcHQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJlZmVyZW5jZS5maXJzdFBvc3RTY3JpcHQgPSBzdWJTY3JpcHQ7CiAgICAgICAg
IHJldHVybiByZWZlcmVuY2U7CiAgICAgfQpAQCAtMTQ4LDE5ICsxNDgsMTkgQEAgT3B0aW9uYWw8
UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlw
dHM6OnZhbGlkYXRlQW4KICAgICAgICAgICAgIGlmIChpc1ByZXNjcmlwdERlbGltaXRlcigqc2Ny
aXB0KSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSA8bXByZXNjcmlwdHMvPi4gTGV0
J3MgY2hlY2sgMmEpIGFuZCAyYykuCiAgICAgICAgICAgICAgICAgaWYgKCFudW1iZXJPZlNjcmlw
dElzRXZlbiB8fCByZWZlcmVuY2UuZmlyc3RQcmVTY3JpcHQpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5maXJzdFByZVNjcmlwdCA9IHNjcmlwdC0+bmV4
dFNpYmxpbmdCb3goKTsgLy8gV2UgZG8gMSkuCiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLnBy
ZXNjcmlwdERlbGltaXRlciA9IHNjcmlwdDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG51bWJlck9mU2NyaXB0SXNFdmVuID0gIW51bWJlck9m
U2NyaXB0SXNFdmVuOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudW1iZXJPZlNjcmlwdElz
RXZlbiA/IE9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogTnVsbG9wdDsg
Ly8gV2UgdmVyaWZ5IDJiKS4KKyAgICAgICAgcmV0dXJuIG51bWJlck9mU2NyaXB0SXNFdmVuID8g
c3RkOjpvcHRpb25hbDxSZWZlcmVuY2VDaGlsZHJlbj4ocmVmZXJlbmNlKSA6IHN0ZDo6bnVsbG9w
dDsgLy8gV2UgdmVyaWZ5IDJiKS4KICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpzcGFjZUFmdGVyU2NyaXB0KCkKQEAg
LTQ2NywxMyArNDY3LDEzIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MU2NyaXB0czo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAg
ICAgYXV0byogYmFzZSA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAg
IHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGlj
X2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxU
b3AoKSkpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOworICAgIHJldHVy
biBzdGQ6Om9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNo
aWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAppbmRl
eCBkNDg3MGI0ZDk0ZDMxZjVhOGY3ZjkyZDMyYTYzNTViNDcxYzNmNjQzLi5mZjA0ZTg2YzVkODdj
YWRhY2ViZDE2OTI5YmYyN2UzOWUyMTg5MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApAQCAtNTIsMTQgKzUyLDE0
IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sg
ewogCiBwcml2YXRlOgogICAgIE1hdGhNTFNjcmlwdHNFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7
Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAg
IHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAgICAgICAgIFJlbmRlckJveCogYmFzZTsKICAg
ICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxpbWl0ZXI7CiAgICAgICAgIFJlbmRlckJveCog
Zmlyc3RQb3N0U2NyaXB0OwogICAgICAgICBSZW5kZXJCb3gqIGZpcnN0UHJlU2NyaXB0OwogICAg
IH07Ci0gICAgT3B0aW9uYWw8UmVmZXJlbmNlQ2hpbGRyZW4+IHZhbGlkYXRlQW5kR2V0UmVmZXJl
bmNlQ2hpbGRyZW4oKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPiB2YWxp
ZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKCk7CiAgICAgTGF5b3V0VW5pdCBzcGFjZUFmdGVy
U2NyaXB0KCk7CiAgICAgTGF5b3V0VW5pdCBpdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFJlZmVyZW5j
ZUNoaWxkcmVuJik7CiAgICAgc3RydWN0IFZlcnRpY2FsUGFyYW1ldGVycyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmlu
ZGV4IDRjMWZlOWU2OTBlMGMyY2IxYTg1NmEwMGVjYzliMzcxNjVmM2YzZGUuLjA3MGFlZTdmZGIx
ODNlZDg0NjYzYjM3NTNiN2E4YWM5NjBmZWFmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04MiwxMSArODIs
MTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9u
YWw8aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOwogICAgIGdldFNwYWNlSGVpZ2h0
QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oaGVpZ2h0
KTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGhlaWdodCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApp
bmRleCAwZWIyMDU2ZTg3ZGFmOTRiYjQ3NDM0YzMyMzVkZmU3Nzg3YWU0MjJlLi5mZDE5YmUyZDZm
Y2IwNjRkYThkNmE4NmFjYTZmMzk2ZTVlODkwYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC00Myw3ICs0Myw3IEBA
IGNsYXNzIFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2Nr
IHsKICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBm
aW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7
CiAKICAgICBMYXlvdXRVbml0IHNwYWNlV2lkdGgoKSBjb25zdDsKICAgICB2b2lkIGdldFNwYWNl
SGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0aCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uY3BwCmluZGV4IGJkMWU5NmJhM2ZjMTFmMTE2ODQ4ZGNkMGQ4MmQ1YjE4OWNjMmY5
ZDEuLjQzYmYyMDZmY2VmMWQ5YTJmZjY3MjE4ZmU0MjNlZDFjZDZmYTdhZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZh
cmlhbnRHbHlwaCgpCiB7CiAgICAgQVNTRVJUKG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5KTsKIAot
ICAgIG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgPSBOdWxsb3B0OworICAgIG1fbWF0aFZhcmlhbnRD
b2RlUG9pbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9tYXRoVmFyaWFudEdseXBoRGlydHkgPSBm
YWxzZTsKIAogICAgIC8vIEVhcmx5IHJldHVybiBpZiB0aGUgdG9rZW4gZWxlbWVudCBjb250YWlu
cyBSZW5kZXJFbGVtZW50cy4KQEAgLTU1MSwxMiArNTUxLDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1M
VG9rZW46OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBzZXRNYXRoVmFyaWFudEdseXBoRGlydHko
KTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpIHsK
ICAgICAgICAgYXV0byBtYXRoVmFyaWFudEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmds
eXBoRGF0YUZvckNoYXJhY3RlcihtX21hdGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1fbWF0
aFZhcmlhbnRJc01pcnJvcmVkKTsKICAgICAgICAgaWYgKG1hdGhWYXJpYW50R2x5cGguZm9udCkK
LSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5k
ZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBo
LmdseXBoKS55KCkpKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0
YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JH
bHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKSk7CiAgICAgfQogICAgIHJldHVybiBS
ZW5kZXJNYXRoTUxCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRleCBjMzMx
ZWM1ZjFkMmI5MThjMGU2Mzg4MTBhOGY1OTk2YTk0MzgyMmIxLi41MTAxZDZhZjFjNTAzZjgyMzcy
Y2NiZDJlNDU0ZWQ1NTY2MGM1ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFJl
bmRlck1hdGhNTFRva2VuIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHByb3RlY3RlZDoK
ICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIFJl
bmRlck1hdGhNTFRva2VuIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKICAgICAgICAgbV9t
YXRoVmFyaWFudEdseXBoRGlydHkgPSB0cnVlOwogICAgICAgICBzZXROZWVkc0xheW91dEFuZFBy
ZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9Ci0gICAgT3B0aW9uYWw8VUNoYXIzMj4gbV9tYXRoVmFy
aWFudENvZGVQb2ludCB7IE51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IG1f
bWF0aFZhcmlhbnRDb2RlUG9pbnQgeyBzdGQ6Om51bGxvcHQgfTsKICAgICBib29sIG1fbWF0aFZh
cmlhbnRJc01pcnJvcmVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF0aFZhcmlhbnRHbHlwaERp
cnR5IHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggZWVhNGYwZDgzMjA2ZjM0N2IxNzdmNzNmMDcy
NjU4ZDAxNjZlNjQwMy4uY2NkZjI0ZjljNjFlNjJkNTlhNWJiODViN2VjYWFiN2NhOWFlNzQ3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAg
aWYgKCFwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50
KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludElu
Q2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAKaW5kZXggMmJmMDg2ZmMxZjMwNzk4MzU5YmQ2NzY4YTYzODRhZjA5OWQ1NzNk
MC4uMTA5NWQyNGUxMTIxOWI2MjI3YzhjMmQ2OWUxNmYzMTc0YzVhMTBiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
Y3BwCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAo
aGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7Cisg
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAg
Ly8gRWFybHkgZXhpdCBpZiBsb2NhbCBwb2ludCBpcyBub3QgY29udGFpbmVkIGluIGNsaXBwZWQg
dmlld3BvcnQgYXJlYQogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVu
KCp0aGlzKSAmJiAhbV92aWV3cG9ydC5jb250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMTU4NDc2MTlh
NzEzYWRlNTAwMGY0YmVjNjdlNThjY2QzN2MwMTFmNi4uMGRjYjkxODA3MWQ4MTFhOTUyYjY3Zjgx
MzEzNjhjNWI5Mzg0YjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFJlbmRlclNWR0ltYWdl
Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdQogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0
UnVsZXM6OlNWR19JTUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVu
dHMoKSk7CiAgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsK
LSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFy
ZW50KTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5z
Zm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9p
bnRJblBhcmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0
Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBiNWNiZGU2YThlMTVkOGIyOTIxYmZj
MWJkOGRmOWYwY2FkNGNhYTM2Li41ZDgzNWZlMTcwNmQ4OTMwMGRlYWNhZTcyNWExZjEwMTBkZGQ4
YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNjcsMTAgKzI2NywxMCBAQCBib29sIFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYg
b2JqZWN0Qm91bmRpbgogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRp
bmdCb3gueSgpKTsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3Vu
ZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIHBv
aW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludCk7CisgICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIHBvaW50
ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52
YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQgPSBj
bGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVl
X29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CiAKICAgICBmb3IgKE5vZGUq
IGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxlbWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBj
aGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5k
ZXggYTQ5MDQ2NGI3OWVhMmZkOTMwNzA1ODU0Zjk1ZDMwNmRkOGE1YTA2ZS4uY2Q1YmY3NWY2YTAw
NTk4OTQ2Y2FjMzZkZThiZDE1ODg5OWY4OTM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI2OCw3
ICsyNjgsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVmZmVy
KiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmFzSW1hZ2VCdWZmZXIoKTsKICAgICAgICAgaWYg
KHJlc3VsdEltYWdlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0
YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5z
aGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpKTsKIAogICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0
ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0
YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRl
UGFpbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKaW5kZXggMWFjYTRlNTBjZTFiODNhMzdhNzJhYTM3ZTBhZTU1M2JkOWU0ZjRmMC4u
MzU5ZmQ0YmFjYmNkODc1NjI5ZTcxYTlmMjYyOWFmYTBmZTM2NTgyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC00MzEsNyArNDMxLDcg
QEAgYm9vbCBSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICAvLyBPbmx5IHRlc3QgU1ZHIGNvbnRlbnQg
aWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveC4KICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgYW4gaW50ZXJzZWN0aW9uIHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVzdHMgYXJlIHN1
cHBvcnRlZCBieSBub2RlQXRGbG9hdFBvaW50LgogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmNv
bnRhaW5zKHBvaW50SW5Cb3JkZXJCb3gpKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2lu
dCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CisgICAgICAgIEZs
b2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBh
cmVudCkpOwogCiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBub2RlQXRGbG9hdFBvaW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBo
aXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcAppbmRleCBmZTkxMjI2NGIyMzhmZDczMjg3MzVjYTdkY2JlYmIyNjU2ZGVhNTEz
Li43NDY4NTVlMTFhNjMwNWI1ZDMzOTIzMWY1YmUyNGY0YWZmNGRmZTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMjAxLDcgKzIw
MSw3IEBAIFBhdGgqIFJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5nU3Ryb2tlUGF0aChjb25zdCBQ
YXRoKiBwYXRoLCBjb25zdCBBZmZpbmVUcmFuc2ZvCiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNl
dHVwTm9uU2NhbGluZ1N0cm9rZUNvbnRleHQoQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFuc2Zv
cm0sIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIpCiB7Ci0gICAgT3B0aW9u
YWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gc3Ryb2tlVHJhbnNmb3JtLmludmVyc2UoKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHN0cm9rZVRyYW5z
Zm9ybS5pbnZlcnNlKCk7CiAgICAgaWYgKCFpbnZlcnNlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTMzOSw3ICszMzksNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIGlmICho
aXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAg
ICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICBp
ZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9p
bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MTEsNyArNDExLDcgQEAgRmxvYXRSZWN0
IFJlbmRlclNWR1NoYXBlOjpjYWxjdWxhdGVTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAg
ICAgIEJvdW5kaW5nUmVjdFN0cm9rZVN0eWxlQXBwbGllciBzdHJva2VTdHlsZSgqdGhpcyk7CiAg
ICAgICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkpIHsKICAgICAgICAgICAgIEFmZmluZVRy
YW5zZm9ybSBub25TY2FsaW5nVHJhbnNmb3JtID0gbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgp
OwotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IG5v
blNjYWxpbmdUcmFuc2Zvcm0uaW52ZXJzZSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBub25TY2FsaW5nVHJhbnNmb3JtLmludmVy
c2UoKSkgewogICAgICAgICAgICAgICAgIFBhdGgqIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tl
UGF0aChtX3BhdGguZ2V0KCksIG5vblNjYWxpbmdUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAg
IEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ1JlY3QgPSB1c2VQYXRoLT5zdHJva2VCb3VuZGluZ1Jl
Y3QoJnN0cm9rZVN0eWxlKTsKICAgICAgICAgICAgICAgICBzdHJva2VCb3VuZGluZ1JlY3QgPSBp
bnZlcnNlLnZhbHVlKCkubWFwUmVjdChzdHJva2VCb3VuZGluZ1JlY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMmJhYjdhN2ZjMGEy
NDMwYzMwZTg2ZDI1NjAxMGMwMzdjMDQ4MmNiYy4uODcwOGY0YjM5N2YxNTIxYjg0MjMwOWJkZDBk
NmEwMTQ1MzhlYTYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2Rl
QXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWwK
ICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAg
ICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1N0
cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKICAgICAgICAgICAgIHx8IChoaXRS
dWxlcy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFoaXRS
dWxlcy5yZXF1aXJlRmlsbCkpKSB7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQg
PSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICAgICAgRmxvYXRQb2ludCBs
b2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAgICAgICAg
IGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQ
b2ludCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDRjN2Rj
YzJjNzc5MzdlMjc4ZmUzOTQ5ZGM3NjYwYmU5YzUxNWIxZmQuLmFmODEwZmRlZDI2NTgzNzk5ZTQy
NmFmNmIwODkxNjliYzhiYjY1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgU1ZHUmVu
ZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVwYWludFJlY3RXaXRoU2hhZG93cyhjb25zdCBSZW5kZXJF
bGVtZW50JiByZW5kCiAgICAgaWYgKGxvY2FsVG9Sb290VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHJvb3RUb0xvY2FsVHJhbnNm
b3JtID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNm
b3JtKCkpOworICAgIEFmZmluZVRyYW5zZm9ybSByb290VG9Mb2NhbFRyYW5zZm9ybSA9IGxvY2Fs
VG9Sb290VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAg
ICAgcmVwYWludFJlY3QgPSByb290VG9Mb2NhbFRyYW5zZm9ybS5tYXBSZWN0KHJlcGFpbnRSZWN0
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
aW5nQ29udGV4dC5jcHAKaW5kZXggNGYzNWVkOWVhYTAzOTEzNGU3MGM4Y2UyMzE5NTg1Y2NkZjlk
OTY5NS4uYzRiM2FhYzViZmQxY2U4Y2M1NjYxYzhkYmJiZTRjNTMyNDY3ZWRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmkKIAogICAgIC8vIFRo
ZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUg
c3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNjYWxlZC4KICAgICAvLyBTbyB0aGUg
YWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9uZSBpbiB0aGUgYWJzb2x1dGUgY29v
cmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgotICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgY29udGV4
dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKSk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IGFic29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFu
c2Zvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5j
cHAKaW5kZXggZjQ5MWZmYmU5NDg0ZjlhZTZmNWQxMzM4NDYwODRhZmZmNWFkOWY1MC4uMGZkZTMx
YTE5YjEzZTAyOTA4MDJmYWE4MWI2NWI0ZGFmNzkzZmI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQg
U1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMo
RGF0YSogcXVlcnlEYXRhLCB1CiAgICAgYm9vbCBhbHRlclN0YXJ0UG9zaXRpb24gPSB0cnVlOwog
ICAgIGJvb2wgYWx0ZXJFbmRQb3NpdGlvbiA9IHRydWU7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbGFzdFBvc2l0aW9uT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RQ
b3NpdGlvbk9mZnNldDsKICAgICBmb3IgKDsgdGV4dE1ldHJpY3NPZmZzZXQgPCB0ZXh0TWV0cmlj
c1NpemUgJiYgcG9zaXRpb25PZmZzZXQgPCBwb3NpdGlvblNpemU7ICsrdGV4dE1ldHJpY3NPZmZz
ZXQpIHsKICAgICAgICAgU1ZHVGV4dE1ldHJpY3MmIG1ldHJpY3MgPSB0ZXh0TWV0cmljc1ZhbHVl
c1t0ZXh0TWV0cmljc09mZnNldF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAppbmRleCBjMGI1MzNmY2I5OTNlN2RiNjViMWQ0NThlYmY4NzZkOWM1ZWMxM2My
Li4yNjkwZDE3OTMyZTZiMGNjODJiYTczODNiODgzYzNiOWFlYmM5MDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFJlbmRl
clRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChDb250YWluZXJOb2RlJiByb290KQogUmVuZGVy
VHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIFN0eWxlOjpDaGFu
Z2Ugc3R5bGVDaGFuZ2UpCiAgICAgOiBlbGVtZW50KCZlbGVtZW50KQogICAgICwgc3R5bGVDaGFu
Z2Uoc3R5bGVDaGFuZ2UpCi0gICAgLCByZW5kZXJUcmVlUG9zaXRpb24oZWxlbWVudC5yZW5kZXJl
cigpID8gbWFrZU9wdGlvbmFsKFJlbmRlclRyZWVQb3NpdGlvbigqZWxlbWVudC5yZW5kZXJlcigp
KSkgOiBOdWxsb3B0KQorICAgICwgcmVuZGVyVHJlZVBvc2l0aW9uKGVsZW1lbnQucmVuZGVyZXIo
KSA/IHN0ZDo6bWFrZV9vcHRpb25hbChSZW5kZXJUcmVlUG9zaXRpb24oKmVsZW1lbnQucmVuZGVy
ZXIoKSkpIDogc3RkOjpudWxsb3B0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVy
VHJlZVVwZGF0ZXIuaAppbmRleCA4MzVjYWE1MzgxNjZiMTk2YzNhMmQ3MzAwNmY4NjY4YjExNDdj
YjMzLi42YzZhYmM0OWUwMTU2YTgzNzQ2NjZjNjk5MmYyOGU5ZGIwZGJhMWMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3Mg
UmVuZGVyVHJlZVVwZGF0ZXIgewogICAgIHN0cnVjdCBQYXJlbnQgewogICAgICAgICBFbGVtZW50
KiBlbGVtZW50IHsgbnVsbHB0ciB9OwogICAgICAgICBTdHlsZTo6Q2hhbmdlIHN0eWxlQ2hhbmdl
IHsgU3R5bGU6Ok5vQ2hhbmdlIH07Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRlclRyZWVQb3NpdGlv
bj4gcmVuZGVyVHJlZVBvc2l0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclRyZWVQ
b3NpdGlvbj4gcmVuZGVyVHJlZVBvc2l0aW9uOwogCiAgICAgICAgIFBhcmVudChDb250YWluZXJO
b2RlJiByb290KTsKICAgICAgICAgUGFyZW50KEVsZW1lbnQmLCBTdHlsZTo6Q2hhbmdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGUuaAppbmRleCBhOTYwMDJhZmFhZWI1ZDE0YTk5NDFlM2M5MjYy
OTAxNWE4NzE4NWE3Li5hZDUzZGM5ZjViZTljM2Y3ZDdhZTJkZmEzNTU1NDUxOTA3ZDRlNzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgY2xhc3MgU2Nv
cGUgewogICAgIGludCBtX3BlbmRpbmdTdHlsZVNoZWV0Q291bnQgeyAwIH07CiAgICAgYm9vbCBt
X2RpZFVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzIHsgZmFsc2UgfTsKIAotICAgIE9wdGlvbmFsPFVw
ZGF0ZVR5cGU+IG1fcGVuZGluZ1VwZGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFVwZGF0ZVR5cGU+
IG1fcGVuZGluZ1VwZGF0ZTsKICAgICBib29sIG1faGFzRGVzY2VuZGFudFdpdGhQZW5kaW5nVXBk
YXRlIHsgZmFsc2UgfTsKIAogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX3N0eWxlU2hlZXRDYW5k
aWRhdGVOb2RlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBhMjZhZTg0Mzc1OGY4
NTExMmRjZTg4YzAxNmY5MjAwNGM5Mjk1ZjllLi5lMjU1MzgyYWNlMDhkZjk5MWIzMWU4MDhmMjlk
MGJmMWI5NGIxYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC00NjIsNyArNDYy
LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHYKICAgICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6
OnRhYmluZGV4QXR0cikgewogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgY2xlYXJUYWJJbmRleEV4cGxpY2l0bHlJZk5lZWRlZCgpOwotICAgICAgICBlbHNlIGlmIChP
cHRpb25hbDxpbnQ+IHRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCisgICAgICAg
IGVsc2UgaWYgKHN0ZDo6b3B0aW9uYWw8aW50PiB0YWJJbmRleCA9IHBhcnNlSFRNTEludGVnZXIo
dmFsdWUpKQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHRhYkluZGV4LnZhbHVl
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQgU1ZH
RWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCkKICAgICBjb250ZXh0RWxlbWVudC0+c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpOwog
fQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0
ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAg
ICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUg
ZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgogICAgIGlmIChhdXRvKiBzdHlsZUVsZW1lbnQgPSB0
aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXgg
ZDEwYjM5Yzc4MzljMTQ4Mzk0M2MyYmFiNzJjNjE4YWE1ZjIwMDk1OC4uYjkwZWI5NjgwMjYxODBm
YzM2NzlkNGZlY2E5ZmUyMTQwNjNmOTRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0x
MDYsNyArMTA2LDcgQEAgY2xhc3MgU1ZHRWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50LCBw
dWJsaWMgU1ZHTGFuZ1NwYWNlIHsKICAgICB2b2lkIHN5bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHN5bmNo
cm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoU1ZHRWxlbWVudCopOwogIAotICAgIE9wdGlv
bmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKICAgICBzdGF0aWMgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggYWVl
OTQ3YzAxMzZkOWM2MGNlMDI1Y2I5MzcxN2YzNGExZjkyODU5MS4uNjJmYWNhZTZkYTU3NDY3MDlm
YTAwNzg1YWZiZTFhYzIwNmQ5NWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09U
RkZvbnRDb252ZXJzaW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIFNWR1RvT1RGRm9u
dENvbnZlcnRlciB7CiAKICAgICB1aW50MzJfdCBjYWxjdWxhdGVDaGVja3N1bShzaXplX3Qgc3Rh
cnRpbmdPZmZzZXQsIHNpemVfdCBlbmRpbmdPZmZzZXQpIGNvbnN0OwogCi0gICAgdm9pZCBwcm9j
ZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVt
ZW50LCBjb25zdCBTVkdHbHlwaEVsZW1lbnQqLCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFu
Y2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50
cywgT3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpOworICAgIHZvaWQgcHJvY2Vzc0ds
eXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwg
Y29uc3QgU1ZHR2x5cGhFbGVtZW50KiwgZmxvYXQgZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBm
bG9hdCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCBjb25zdCBTdHJpbmcmIGNvZGVwb2ludHMsIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpOwogCiAgICAgdHlwZWRlZiB2b2lk
IChTVkdUb09URkZvbnRDb252ZXJ0ZXI6OipGb250QXBwZW5kaW5nRnVuY3Rpb24pKCk7CiAgICAg
dm9pZCBhcHBlbmRUYWJsZShjb25zdCBjaGFyIGlkZW50aWZpZXJbNF0sIEZvbnRBcHBlbmRpbmdG
dW5jdGlvbik7CkBAIC0yMjEsNyArMjIxLDcgQEAgY2xhc3MgU1ZHVG9PVEZGb250Q29udmVydGVy
IHsKIAogICAgIHZvaWQgYXBwZW5kVmFsaWRDRkZTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKLSAg
ICBWZWN0b3I8Y2hhcj4gdHJhbnNjb2RlR2x5cGhQYXRocyhmbG9hdCB3aWR0aCwgY29uc3QgU1ZH
RWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIE9wdGlvbmFsPEZsb2F0UmVjdD4m
IGJvdW5kaW5nQm94KSBjb25zdDsKKyAgICBWZWN0b3I8Y2hhcj4gdHJhbnNjb2RlR2x5cGhQYXRo
cyhmbG9hdCB3aWR0aCwgY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1l
bnQsIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpIGNvbnN0OwogCiAgICAg
dm9pZCBhZGRDb2RlcG9pbnRSYW5nZXMoY29uc3QgVW5pY29kZVJhbmdlcyYsIEhhc2hTZXQ8R2x5
cGg+JiBnbHlwaFNldCkgY29uc3Q7CiAgICAgdm9pZCBhZGRDb2RlcG9pbnRzKGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgY29kZXBvaW50cywgSGFzaFNldDxHbHlwaD4mIGdseXBoU2V0KSBjb25zdDsK
QEAgLTExNTUsNyArMTE1NSw3IEBAIGNsYXNzIENGRkJ1aWxkZXIgZmluYWwgOiBwdWJsaWMgU1ZH
UGF0aENvbnN1bWVyIHsKICAgICAgICAgbV9jZmZEYXRhLmFwcGVuZChyTW92ZVRvKTsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kaW5nQm94KCkgY29uc3QKKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdCb3goKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fYm91bmRpbmdCb3g7CiAgICAgfQpAQCAtMTI0NiwxMSArMTI0NiwxMSBAQCBjbGFz
cyBDRkZCdWlsZGVyIGZpbmFsIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiAgICAgVmVjdG9y
PGNoYXI+JiBtX2NmZkRhdGE7CiAgICAgRmxvYXRQb2ludCBtX3N0YXJ0aW5nUG9pbnQ7CiAgICAg
RmxvYXRQb2ludCBtX2N1cnJlbnQ7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2JvdW5kaW5n
Qm94OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2JvdW5kaW5nQm94OwogICAgIGZs
b2F0IG1fdW5pdHNQZXJFbVNjYWxhcjsKIH07CiAKLVZlY3RvcjxjaGFyPiBTVkdUb09URkZvbnRD
b252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1l
bnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBib3Vu
ZGluZ0JveCkgY29uc3QKK1ZlY3RvcjxjaGFyPiBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnRyYW5z
Y29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNz
aW5nR2x5cGhFbGVtZW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KSBj
b25zdAogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CiAKQEAgLTEyODYsNyArMTI4Niw3IEBA
IFZlY3RvcjxjaGFyPiBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0aHMo
ZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVu
dCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0IFNWR0dseXBoRWxlbWVudCogZ2x5
cGhFbGVtZW50LCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1bHRW
ZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgT3B0aW9uYWw8RmxvYXRS
ZWN0PiYgYm91bmRpbmdCb3gpCit2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJvY2Vzc0ds
eXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwg
Y29uc3QgU1ZHR2x5cGhFbGVtZW50KiBnbHlwaEVsZW1lbnQsIGZsb2F0IGRlZmF1bHRIb3Jpem9u
dGFsQWR2YW5jZSwgZmxvYXQgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgY29uc3QgU3RyaW5nJiBj
b2RlcG9pbnRzLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KQogewogICAg
IGJvb2wgb2s7CiAgICAgZmxvYXQgaG9yaXpvbnRhbEFkdmFuY2UgPSBzY2FsZVVuaXRzUGVyRW0o
Z2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihTVkdOYW1lczo6aG9yaXpfYWR2X3hBdHRyKS50b0Zsb2F0KCZvaykpOwpAQCAtMTI5OCw3ICsx
Mjk4LDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQo
Y29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmcKICAgICAgICAgdmVydGljYWxBZHZhbmNl
ID0gZGVmYXVsdFZlcnRpY2FsQWR2YW5jZTsKICAgICBtX2FkdmFuY2VIZWlnaHRNYXggPSBzdGQ6
Om1heChtX2FkdmFuY2VIZWlnaHRNYXgsIHZlcnRpY2FsQWR2YW5jZSk7CiAKLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdseXBoQm91bmRpbmdCb3g7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGdseXBoQm91bmRpbmdCb3g7CiAgICAgYXV0byBwYXRoID0gdHJhbnNjb2RlR2x5cGhQYXRo
cyhob3Jpem9udGFsQWR2YW5jZSwgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGdseXBoQm91
bmRpbmdCb3gpOwogICAgIGlmICghcGF0aC5zaXplKCkpIHsKICAgICAgICAgLy8gSXQncyBiZXR0
ZXIgdG8gdXNlIGEgZmFsbGJhY2sgZm9udCByYXRoZXIgdGhhbiB1c2UgYSBmb250IHdpdGhvdXQg
YWxsIGl0cyBnbHlwaHMuCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENv
bnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlz
c2luZwogICAgIGlmIChnbHlwaEJvdW5kaW5nQm94KQogICAgICAgICBtX21pblJpZ2h0U2lkZUJl
YXJpbmcgPSBzdGQ6Om1pbihtX21pblJpZ2h0U2lkZUJlYXJpbmcsIGhvcml6b250YWxBZHZhbmNl
IC0gZ2x5cGhCb3VuZGluZ0JveC52YWx1ZSgpLm1heFgoKSk7CiAKLSAgICBtX2dseXBocy5hcHBl
bmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFu
Y2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVjdCgp
KSwgY29kZXBvaW50cykpOworICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShw
YXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBn
bHlwaEJvdW5kaW5nQm94LnZhbHVlX29yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOwogfQog
CiB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQpAQCAt
MTQyMSw3ICsxNDIxLDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252
ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogCiAgICAgcG9wdWxhdGVF
bXB0eUdseXBoQ2hhclN0cmluZyhtX2VtcHR5R2x5cGhDaGFyU3RyaW5nLCBzX291dHB1dFVuaXRz
UGVyRW0pOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ0JveDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdCb3g7CiAgICAgaWYgKG1fbWlzc2luZ0dseXBo
RWxlbWVudCkKICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudCgqbV9taXNzaW5nR2x5cGhFbGVt
ZW50LCBudWxscHRyLCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFk
dmFuY2UsIFN0cmluZygpLCBib3VuZGluZ0JveCk7CiAgICAgZWxzZSB7CkBAIC0xNDM1LDcgKzE0
MzUsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcihjb25z
dCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAgICAgICAgICBwcm9jZXNzR2x5cGhF
bGVtZW50KGdseXBoRWxlbWVudCwgJmdseXBoRWxlbWVudCwgZGVmYXVsdEhvcml6b250YWxBZHZh
bmNlLCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCB1bmljb2RlQXR0cmlidXRlLCBib3VuZGluZ0Jv
eCk7CiAgICAgfQogCi0gICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlT3IoRmxv
YXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZV9vcihGbG9h
dFJlY3QoKSk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPD0gMTAxMDAwCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzIwMDg2MjIzPiBDb2Nv
YSBoYXMgYSBidWcgd2hlcmUgZ2x5cGggYm91bmRpbmcgYm94ZXMgYXJlIG5vdCBjb3JyZWN0bHkg
cmVzcGVjdGVkIGZvciBmcnVzdHVtIGN1bGxpbmcuIFdvcmsgYXJvdW5kIHRoaXMgYnkKQEAgLTE1
ODQsMTMgKzE1ODQsMTMgQEAgYm9vbCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmNvbnZlcnRTVkdU
b09URkZvbnQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxWZWN0b3I8Y2hhcj4+
IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCitzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBTVkdUb09URkZvbnRDb252ZXJ0ZXIgY29udmVydGVy
KGVsZW1lbnQpOwogICAgIGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFjb252ZXJ0ZXIu
Y29udmVydFNWR1RvT1RGRm9udCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gY29udmVydGVyLnJlbGVhc2VSZXN1bHQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgKaW5k
ZXggMzBhNDMxMWI0MjVkOGU0NTcxMjAwZTA3M2RkNjRlMjhjZjVlNWFmMy4uZTRiMzhlZjg4M2Q0
ZGMzOGE3NjE0MjQyZjIyNGEwYzBiMzU3M2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VG9PVEZGb250Q29udmVyc2lvbi5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU1ZHRm9udEVsZW1lbnQ7CiAKLU9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29u
dmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOworc3RkOjpvcHRpb25hbDxW
ZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAppbmRleCAzYmYzMWU4Yzc3M2MwYjVkMTAyMTJl
NjEyOWY3ODhjYTBiNTlkZGRjLi5hYmRhNDI1YjI5OWRlZjNiMDczOWQzMTAwMDliMTE1YTBkYzJk
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV29y
a2VyIGZpbmFsIDogcHVibGljIEFic3RyYWN0V29ya2VyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwcml2YXRlIFdvcmsKIAogICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fc2NyaXB0
TG9hZGVyOwogICAgIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIG1fY29udGV4dFByb3h5OyAvLyBU
aGUgcHJveHkgb3V0bGl2ZXMgdGhlIHdvcmtlciB0byBwZXJmb3JtIHRocmVhZCBzaHV0ZG93bi4K
LSAgICBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8Q29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVyczsKICAgICBib29sIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5IHsgZmFsc2UgfTsKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRp
bWVGbGFnczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhNWJi
NTlkYmQxMWUxYWRlODE5NmIyNjc3MzIwNjExMDIyYTFkYTVmLi42MDM0NmY1MDQ5NWZjYzAyOGYx
YzI4NGQ1MGQ0MjNmZjg2Y2VlY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTQ3NiwxMCArNDc2LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0
OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybCwKICAgICByZXR1
cm4gb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMpOwogfQogCi1PcHRpb25h
bDxFeGNlcHRpb25Pcjx2b2lkPj4gWE1MSHR0cFJlcXVlc3Q6OnByZXBhcmVUb1NlbmQoKQorc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gWE1MSHR0cFJlcXVlc3Q6OnByZXBhcmVUb1Nl
bmQoKQogewotICAgIC8vIEEgcmV0dXJuIHZhbHVlIG90aGVyIHRoYW4gTnVsbG9wdCBtZWFucyB3
ZSBzaG91bGQgbm90IHRyeSB0byBzZW5kLCBhbmQgd2Ugc2hvdWxkIHJldHVybiB0aGF0IHZhbHVl
IHRvIHRoZSBjYWxsZXIuCi0gICAgLy8gTnVsbG9wdCBtZWFucyB3ZSBhcmUgcmVhZHkgdG8gc2Vu
ZCBhbmQgc2hvdWxkIGNvbnRpbnVlIHdpdGggdGhlIHNlbmQgYWxnb3JpdGhtLgorICAgIC8vIEEg
cmV0dXJuIHZhbHVlIG90aGVyIHRoYW4gc3RkOjpudWxsb3B0IG1lYW5zIHdlIHNob3VsZCBub3Qg
dHJ5IHRvIHNlbmQsIGFuZCB3ZSBzaG91bGQgcmV0dXJuIHRoYXQgdmFsdWUgdG8gdGhlIGNhbGxl
ci4KKyAgICAvLyBzdGQ6Om51bGxvcHQgbWVhbnMgd2UgYXJlIHJlYWR5IHRvIHNlbmQgYW5kIHNo
b3VsZCBjb250aW51ZSB3aXRoIHRoZSBzZW5kIGFsZ29yaXRobS4KIAogICAgIGlmICghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3I8dm9pZD4geyB9
OwpAQCAtNTAxLDcgKzUwMSw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRw
UmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgpCiAgICAgfQogCiAgICAgbV9lcnJvciA9IGZhbHNlOwot
ICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERvY3VtZW50JiBkb2N1bWVudCkKQEAg
LTk3OSw3ICs5NzksNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlKQogCiAgICAgbV9yZXNwb25zZUJ1aWxkZXIu
c2hyaW5rVG9GaXQoKTsKIAotICAgIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQ7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0OwogICAgIGlmICghbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIpCiAgICAgICAgIGRlY29kZWRUZXh0ID0gbV9yZXNwb25zZUJ1aWxkZXIudG9T
dHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hYSFJMb2FkaW5nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgaWRlbnRp
ZmllciwgZGVjb2RlZFRleHQsIG1fdXJsLCBtX2xhc3RTZW5kVVJMLCBtX2xhc3RTZW5kTGluZU51
bWJlciwgbV9sYXN0U2VuZENvbHVtbk51bWJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCmluZGV4IDc3YTNlYWJiYTBiMWM3N2Q0OWE3NDcxYzI3YjMyZjg0ZjNmZjgyYTYuLjExYjU3
ZWJhZTEzNWEyOWFkYjYzMGI1ZDUwNWMwNDY3ZTA0NTRkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgY2xhc3MgWE1MSHR0cFJlcXVlc3QgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxYTUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBYTUxIdHRwUmUK
IAogICAgIGJvb2wgcmVzcG9uc2VJc1hNTCgpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RXhjZXB0
aW9uT3I8dm9pZD4+IHByZXBhcmVUb1NlbmQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bk9yPHZvaWQ+PiBwcmVwYXJlVG9TZW5kKCk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZEJ5
dGVzRGF0YShjb25zdCB2b2lkKiwgc2l6ZV90KTsKIAogICAgIHZvaWQgY2hhbmdlU3RhdGUoU3Rh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29s
bGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rp
b24ubW0KaW5kZXggMDZkYjY2YTI1YzljODgwYWMzNWUwYTNhNjJkYWY3YjkxNDU3YzcyMS4uYjE1
NjUyMGIyYjMxNTBjZjMwMmVmYWRmMDg4MjNkYmQ0YzVhYTA0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCkBAIC05MCw3ICs5MCw3
IEBAIC0gKHZvaWQpYWRkOihET01IVE1MT3B0aW9uRWxlbWVudCAqKW9wdGlvbiBpbmRleDoodW5z
aWduZWQpaW5kZXgKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAg
ICAgaWYgKCFvcHRpb24pCiAgICAgICAgIHJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7Ci0gICAg
YXV0byBleGNlcHRpb24gPSBJTVBMLT5hZGQoY29yZShvcHRpb24pLCBPcHRpb25hbDxXZWJDb3Jl
OjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OkhUTUxFbGVtZW50T3JJbnQ+KHN0YXRpY19jYXN0PGlu
dD4oaW5kZXgpKSk7CisgICAgYXV0byBleGNlcHRpb24gPSBJTVBMLT5hZGQoY29yZShvcHRpb24p
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbjo6SFRNTEVsZW1l
bnRPckludD4oc3RhdGljX2Nhc3Q8aW50PihpbmRleCkpKTsKICAgICBpZiAoZXhjZXB0aW9uLmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICByYWlzZU9uRE9NRXJyb3IoZXhjZXB0aW9uLnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4
IDFiNGQzYTk2ZmE5YWU3YTE3N2U0NTEyZjQ1NjQxZGFhMjQzN2Q0YzkuLjE5ZTNiOWY0NWY1OWQ0
Mzg0ZjVhNTUyMmQ2MTE2ZjU4M2JkNDFhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KQEAgLTg5Miw3ICs4OTIsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
ZXZhbHVhdGUodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IFN0cmluZyYgc2NyaQogICAgIFN0cm9u
ZzxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0KHZtLCBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFs
T2JqZWN0KHBsdWdpbldvcmxkKCkpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoYWxsb3dQb3B1cHMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4o
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IE51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IoYWxsb3dQb3B1cHMgPyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3Np
bmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0
KTsKICAgICAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6ZXZhbHVhdGUoZXhlYywgbWFrZVNv
dXJjZShzY3JpcHQpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggZWVhYWJhODI0ODFlNzM5MGQzNjJlOGIzYTE0
MmFlNTIyMDMyMjRhYi4uZDllNThlMzM2OTRkNTBjYzFmNjc2YjA0ZmMxZjk4ZTNlZmE0YmQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0KQEAgLTY2Niw3ICs2NjYsNyBAQCAtIChCT09MKXNlbmRFdmVudDoodm9pZCopZXZlbnQg
aXNEcmF3UmVjdDooQk9PTClldmVudElzRHJhd1JlY3QKICAgICBBU1NFUlQoX2V2ZW50SGFuZGxl
cik7CiAgICAgewogICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2Nr
cyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkpOwotICAgICAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdl
c3R1cmUoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5n
VXNlckdlc3R1cmUpIDogTnVsbG9wdCk7CisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZSgp
ID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGFjY2VwdGVkRXZlbnQgPSBbX3Bs
dWdpblBhY2thZ2UuZ2V0KCkgcGx1Z2luRnVuY3NdLT5ldmVudChwbHVnaW4sIGV2ZW50KTsKICAg
ICB9CiAgICAgW3NlbGYgZGlkQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDM2MmRjNmQzNGM1MmMwOWNkNDUwYjllZTZhZjIwNjljYWFlZTQzZGIuLmExMWZiODhiZGJkOTFi
YWQ4ZmQ4ZGY5ZmQyOTJmODI1ODhmYzQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTExLDcgKzEx
MSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dp
dGhEaXJlY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChP
cHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggMTE0NzZhMDMyNzZlZGQ5NGU3NTU1MTM5MzBhYjQ2MTliY2VkZjk1
My4uNmU5NjE2ZTNkMzNiOTNhMjE4OGQ5MTc2YTQzNzc1OGQ4YjE0NWE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aQogICAgICAg
ICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpm
b3JGcmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmcoKSwgbV93ZWJGcmFtZS5nZXQoKSk7
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChP
cHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PikK
IHsKICAgICAvLyBUZWxsIHRoZSBjbGllbnQgd2UndmUgY29tbWl0dGVkIHRoaXMgVVJMLgogICAg
IEFTU0VSVChbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZpZXdd
ICE9IG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGNmZmMxMTNhZGViMzc3
NDQwYTQ3OGJmMTBmOTlkODBjNzU1OTAwMzAuLjAyMTAwNjRiNTc0NmFiNWU3ZTg5MmFlZDIwZDJh
YWM4YjY2YTFlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC00Miw5ICs0Miw5
IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllCiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNv
bnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsK
ICAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgV2ViQ29yZTo6UGF5bWVudFJlcXVl
c3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcz4gbmV3VG90YWxBbmRJdGVtcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mLCBP
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1Rv
dGFsQW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4pIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpIG92
ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRl
OworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBvdmVy
cmlkZTsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCmluZGV4IDgwYjRmN2Y0ZmQyY2U1ZjFiYmMxYWFh
ZTAzOWFkNmEyZWJhM2Y4MjYuLmViZmQ4MzU0MGYxMjJiZTdlOWNmZjc5YWY1OGQyN2YwNzJiOWE4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KQEAgLTcxLDE1ICs3MSwxNSBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UGF5bQogewogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
ckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cywgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcz4pCiB7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01l
dGhvZD4mLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRl
bXM+KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikKIHsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNDhiYmQzMGQ3NzY3
YmNhNTUyZmEwODEwNTJlMDIwZjFlMDFjM2MxNC4uYzc2N2Q5YmUwNDUwMTIwNmQ0MDJmNmZhOGY5
OWVhODRhZjZjMTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTkwLDcgKzkwLDcgQEAgLSAoTlNTdHJpbmcg
KilzdHJpbmdWYWx1ZQogCiAtICh1bnNpZ25lZCBzaG9ydClwb3J0CiB7Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPnBvcnQoKS52YWx1ZU9y
KDApOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZh
dGUpLT5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CiAKIC8vIEZJWE1FOiBPdmVycmlkaW5nIGlzRXF1
YWw6IHdpdGhvdXQgb3ZlcnJpZGluZyBoYXNoIHdpbGwgY2F1c2UgdHJvdWJsZSBpZiB0aGlzIGV2
ZXIgZ29lcyBpbnRvIGFuIE5TU2V0IG9yIGlzIHRoZSBrZXkgaW4gYW4gTlNEaWN0aW9uYXJ5LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNTVmMWFlMmQ0NThm
NTYxMzk1ZmMzMjZhYWNiYzYwZjRkYjMyMTNjNC4uYWMxYmQ4NDZlMzk0N2VlNGIzZTk4MGM2MTlh
ZTAzYzQ4ZDBiODUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CkBAIC0xODIsNyArMTgyLDcgQEAgLSAodm9pZClzZXRNZW51Q29udHJvbGxlcjooV2ViQ29yZTo6
Q29udGV4dE1lbnVDb250cm9sbGVyKiltZW51Q29udHJvbGxlcjsKIC0gKHZvaWQpZm9yd2FyZENv
bnRleHRNZW51QWN0aW9uOihpZClzZW5kZXI7CiBAZW5kCiAKLXN0YXRpYyBPcHRpb25hbDxDb250
ZXh0TWVudUFjdGlvbj4gdG9BY3Rpb24oTlNJbnRlZ2VyIHRhZykKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPENvbnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQogewogICAgIGlm
ICh0YWcgPj0gQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRhZyAmJiB0YWcgPD0gQ29udGV4dE1l
bnVJdGVtTGFzdEN1c3RvbVRhZykgewogICAgICAgICAvLyBKdXN0IHBhc3MgdGhlc2UgdGhyb3Vn
aC4KQEAgLTM1NywxNCArMzU3LDE0IEBAIHN0YXRpYyBPcHRpb25hbDxDb250ZXh0TWVudUFjdGlv
bj4gdG9BY3Rpb24oTlNJbnRlZ2VyIHRhZykKICAgICBjYXNlIFdlYk1lbnVJdGVtVGFnRGljdGF0
aW9uQWx0ZXJuYXRpdmU6CiAgICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRp
b25BbHRlcm5hdGl2ZTsKICAgICB9Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoQ29udGV4
dE1lbnVBY3Rpb24gYWN0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TlNJbnRlZ2VyPiB0b1Rh
ZyhDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uOgotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdzoKICAgICAgICAgcmV0dXJuIFdlYk1lbnVJdGVtVGFn
T3BlbkxpbmtJbk5ld1dpbmRvdzsKQEAgLTU0Nyw3ICs1NDcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
TlNJbnRlZ2VyPiB0b1RhZyhDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBXZWJNZW51VGFyZ2V0KiB0YXJnZXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA4NzRkYmMwN2I0ZjM2M2E2
ZDk5MmU4NWVlMjU3ZjNkMGQzYTAyOWZjLi41MDJhZDNiYjBjMTI4MTA1M2NlODc5Y2IyYzNmZWNh
NzExYjQ3MDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTQwNiw3ICs0MDYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJl
cXVlc3QqIHJlcXVlc3QpCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxvYWRS
ZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgU3RyaW5nIGpzU3RyaW5nID0g
c2NyaXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RVUkwpOwogCi0gICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygp
ID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSkgOiBOdWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkgPyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3Np
bmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0
KTsKIAogICAgIGlmIChqc1N0cmluZy5pc051bGwoKSkgewogICAgICAgICAvLyBpZiB0aGlzIGlz
IG5vdCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQuIG90aGVyd2lz
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3NDI3ZTBjMmYxMzhlMzcyYzI0NTFjODZkMzc1NGJk
YmI4MjE1YTc5Li4xNTYxODUyNzYzMGUzYjIwOTBmYTMwYzQ4OTU4NTNmZGYyMzAxOTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYg
dGkKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBC
U3RyaW5nKHRpdGxlLnN0cmluZygpKSwgbV93ZWJGcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNlY3VyZUNv
bnRlbnQ+KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PikKIHsKICAgICBXZWJWaWV3KiB3ZWJW
aWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViRnJhbWVMb2FkRGVs
ZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZjI3MmU2MGM0NGI5
MGJlMTM4N2I3MzRkN2ZiZDIyYTMxNTllYzliMC4uOGNhOWI5ZGVjZDE5Y2VjOTdlNGJhN2QzZDUx
Njg2NGNlMTg5ZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIFdl
YkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBw
dWJsaWMgV2ViQ29yZTo6CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdX
aXRoRGlyZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3Vy
ZUNvbnRlbnQ+KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFs
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNzg0YWFjZGUwNGU0Yjc2
MGRjOWZlZTlhZmM5MWJmNmIwNzA3MzMzOC4uMjc4MzhjY2IzOTgzOWRmMmExOWVkYTRjNzI3Y2Ix
OGI2ZTc4ZTdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQoX091dF8gdW5z
aWduZWQgc2hvcnQqIHJlc3VsdCkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5T3JpZ2luLT5wb3J0KCkudmFsdWVP
cigwKTsKKyAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDAp
OwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuaAppbmRleCAzZjYxMzAxNDY1NzQyOGExMjg3OTU4NjY0YThkMTVlZGMyNzlm
MjQ4Li41NzMwNDYyNzViMmJmZTg5NDQzNzU5NTBlZmUwYzQ4ZDA1YWQyZmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTEzNiw3ICsxMzYsNyBA
QCBjbGFzcyBOZXR3b3JrTG9hZCBmaW5hbCA6CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzIG1fcGFyYW1ldGVyczsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFJlZlB0cjxO
ZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7CiAjaWYgVVNFKFBST1RFQ1RJT05f
U1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBtX2No
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBkZmU1YzQ2NThh
OTEyY2QzZDVkMDVkMjg4YzhlYmFhZWM4ZmRkNjU4Li44ZjljZjMzOTYzNjcwMzUyZjUwNDk1MGRi
NzA1MTM0MDAxZjcxMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgYm9v
bCBjYWNoZVBvbGljeUFsbG93c0V4cGlyZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQ
b2xpY3kgcG9saWN5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgcmVzcG9u
c2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVzdGFtcCwgT3B0aW9uYWw8
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGUpCitzdGF0aWMgYm9vbCByZXNwb25z
ZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZXN0YW1wLCBzdGQ6Om9wdGlv
bmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heFN0YWxlKQogewogICAgIGlmIChyZXNw
b25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUNvZGVycy5oCmluZGV4IDNlOWUyMjhhNDEzMWU0N2NkYzQxYmE5ODg3ODU4MzUwMWMz
M2I3NjAuLjQxNzFhY2UwOWQxODYzZDhlMmM5Y2Q3YTZmOTBhZmMwOTc0MGVkNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUNvZGVycy5oCkBAIC04MCw4ICs4MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJlcCwgdHlwZW5h
bWUgUGVyaW9kPiBzdHJ1Y3QgQ29kZXI8c3RkOjpjaHJvbm86OmR1cmF0aW9uPFJlcCwKICAgICB9
CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29kZXI8T3B0aW9uYWw8VD4+IHsK
LSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uYWw8
VD4mIG9wdGlvbmFsKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvZGVyPHN0ZDo6b3B0
aW9uYWw8VD4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3Qgc3RkOjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewogICAgICAgICBpZiAoIW9wdGlv
bmFsKSB7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwpAQCAtOTIsMTQgKzkyLDE0IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxUPj4gewogICAgICAg
ICBlbmNvZGVyIDw8IG9wdGlvbmFsLnZhbHVlKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBPcHRpb25hbDxUPiYgb3B0aW9uYWwpCisgICAg
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIHN0ZDo6b3B0aW9uYWw8VD4mIG9w
dGlvbmFsKQogICAgIHsKICAgICAgICAgYm9vbCBpc0VuZ2FnZWQ7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIGlmICghaXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBvcHRpb25hbCA9IE51
bGxvcHQ7CisgICAgICAgICAgICBvcHRpb25hbCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCA4NTYxNzAyYTJiZDlhODc0M2YyYjYw
YjM1ZTQ3NDc0MjQ0ZDhkNjNmLi5jY2E5ODVmY2RhZjAxZDViNjhhNGIzZjE1N2FjNmYyYWQ5Y2Zh
ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OkV4cGly
aW5nRW50cnkgewogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnkg
OiBwcml2YXRlIEV4cGlyaW5nRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnks
IE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4mJiBzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBsaWZldGltZVJlYWNoZWRIYW5kbGVyKQorICAgIFBy
ZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIHN0ZDo6b3B0aW9uYWw8
UmVzb3VyY2VSZXF1ZXN0PiYmIHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCiAgICAgICAgIDogRXhwaXJp
bmdFbnRyeShXVEZNb3ZlKGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpKQogICAgICAgICAsIG1fZW50
cnkoV1RGTW92ZShlbnRyeSkpCiAgICAgICAgICwgbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1
ZXN0KFdURk1vdmUoc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCkpCkBAIC0xNDUsMTIgKzE0
NSwxMiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRyeSA6IHBy
aXZhdGUgRXhwaXJpbmdFbnRyeSB7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZW50cnkpOwog
ICAgIH0KIAotICAgIGNvbnN0IE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4mIHJldmFsaWRhdGlv
blJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3Q7
IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4mIHJldmFsaWRhdGlv
blJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3Q7
IH0KICAgICBib29sIHdhc1JldmFsaWRhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX3NwZWN1bGF0
aXZlVmFsaWRhdGlvblJlcXVlc3Q7IH0KIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IG1fZW50cnk7Ci0gICAgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiBtX3NwZWN1bGF0
aXZlVmFsaWRhdGlvblJlcXVlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+
IG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsKIH07CiAKIGNsYXNzIFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5n
RnJhbWVMb2FkPiB7CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUK
ICAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+cmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQocmVxdWVz
dCwgcmVzb3VyY2VLZXkpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFBy
ZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZy
YW1lSUQmIGZyYW1lSUQsIE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4mJiByZXZhbGlkYXRpb25S
ZXF1ZXN0KQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4mJiByZXZhbGlkYXRpb25SZXF1ZXN0KQog
ewogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVlZHNWYWxpZGF0aW9u
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCmluZGV4
IDQyNTUyMzZkOTU0YjJkNTJjNmJlNDczNTRkOTFmYjBkMzcyY2U2ODEuLmRkNjA2ZDU2NDE4MjFi
Mzg1NjYzYTI2ZmM1YTJmNjQ5ZmM2OGUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVM
b2FkTWFuYWdlciB7CiBwcml2YXRlOgogICAgIGNsYXNzIFByZWxvYWRlZEVudHJ5OwogCi0gICAg
dm9pZCBhZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBHbG9i
YWxGcmFtZUlEJiwgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRh
dGlvblJlcXVlc3QgPSBOdWxsb3B0KTsKKyAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD4mJiByZXZhbGlkYXRpb25SZXF1ZXN0ID0gc3RkOjpudWxs
b3B0KTsKICAgICB2b2lkIHByZWxvYWRFbnRyeShjb25zdCBLZXkmLCBjb25zdCBTdWJyZXNvdXJj
ZUluZm8mLCBjb25zdCBHbG9iYWxGcmFtZUlEJik7CiAgICAgdm9pZCByZXRyaWV2ZUVudHJ5RnJv
bVN0b3JhZ2UoY29uc3QgS2V5JiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2
b2lkIHJldmFsaWRhdGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBTdWJyZXNv
dXJjZUluZm8mLCBjb25zdCBHbG9iYWxGcmFtZUlEJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
Y3BwCmluZGV4IGU4ZGM2NDNjN2YyNDUyYmE5ZGM1MzNmNTE4ZTFmZmJhOTk4OGQ1MWIuLjEwYTUy
MDNlZmQ4MTgwZTBhY2EzNGJlNTRkZjUyNTgyZjU5Yzk1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRp
c3RpY3MuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmROb3RV
c2luZ0NhY2hlRm9yUmVxdWVzdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYga2UKICAg
ICBBU1NFUlQocmV0cmlldmVEZWNpc2lvbiAhPSBSZXRyaWV2ZURlY2lzaW9uOjpZZXMpOwogCiAg
ICAgYXV0byBoYXNoID0ga2V5Lmhhc2hBc1N0cmluZygpOwotICAgIHF1ZXJ5V2FzRXZlclJlcXVl
c3RlZChoYXNoLCBOZWVkVW5jYWNoZWRSZWFzb246Ok5vLCBbdGhpcywgaGFzaCwgcmVxdWVzdFVS
TCA9IHJlcXVlc3QudXJsKCksIHdlYlBhZ2VJRCwgcmV0cmlldmVEZWNpc2lvbl0oYm9vbCB3YXNF
dmVyUmVxdWVzdGVkLCBjb25zdCBPcHRpb25hbDxTdG9yZURlY2lzaW9uPiYpIHsKKyAgICBxdWVy
eVdhc0V2ZXJSZXF1ZXN0ZWQoaGFzaCwgTmVlZFVuY2FjaGVkUmVhc29uOjpObywgW3RoaXMsIGhh
c2gsIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpLCB3ZWJQYWdlSUQsIHJldHJpZXZlRGVjaXNp
b25dKGJvb2wgd2FzRXZlclJlcXVlc3RlZCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yZURlY2lz
aW9uPiYpIHsKICAgICAgICAgaWYgKHdhc0V2ZXJSZXF1ZXN0ZWQpIHsKICAgICAgICAgICAgIFN0
cmluZyBkaWFnbm9zdGljS2V5ID0gcmV0cmlldmVEZWNpc2lvblRvRGlhZ25vc3RpY0tleShyZXRy
aWV2ZURlY2lzaW9uKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1By
b2Nlc3MpIHdlYlBhZ2VJRCAlIiBQUkl1NjQgIjogJXMgd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVk
IGJ1dCB3ZSBhcmUgbm90IHVzaW5nIHRoZSBjYWNoZSwgcmVhc29uOiAlcyIsIHdlYlBhZ2VJRCwg
cmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgZGlhZ25vc3RpY0tleS51dGY4KCku
ZGF0YSgpKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMgU3RyaW5nIHN0b3JlRGVjaXNpb25U
b0RpYWdub3N0aWNLZXkoU3RvcmVEZWNpc2lvbiBzdG9yZURlY2lzaW9uKQogdm9pZCBTdGF0aXN0
aWNzOjpyZWNvcmRSZXRyaWV2YWxGYWlsdXJlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5
JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBh
dXRvIGhhc2ggPSBrZXkuaGFzaEFzU3RyaW5nKCk7Ci0gICAgcXVlcnlXYXNFdmVyUmVxdWVzdGVk
KGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbjo6WWVzLCBbdGhpcywgaGFzaCwgcmVxdWVzdFVSTCA9
IHJlcXVlc3QudXJsKCksIHdlYlBhZ2VJRF0oYm9vbCB3YXNQcmV2aW91c2x5UmVxdWVzdGVkLCBj
b25zdCBPcHRpb25hbDxTdG9yZURlY2lzaW9uPiYgc3RvcmVEZWNpc2lvbikgeworICAgIHF1ZXJ5
V2FzRXZlclJlcXVlc3RlZChoYXNoLCBOZWVkVW5jYWNoZWRSZWFzb246OlllcywgW3RoaXMsIGhh
c2gsIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpLCB3ZWJQYWdlSURdKGJvb2wgd2FzUHJldmlv
dXNseVJlcXVlc3RlZCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yZURlY2lzaW9uPiYgc3RvcmVE
ZWNpc2lvbikgewogICAgICAgICBpZiAod2FzUHJldmlvdXNseVJlcXVlc3RlZCkgewogICAgICAg
ICAgICAgU3RyaW5nIGRpYWdub3N0aWNLZXkgPSBzdG9yZURlY2lzaW9uVG9EaWFnbm9zdGljS2V5
KHN0b3JlRGVjaXNpb24udmFsdWUoKSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAi
KE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBwcmV2aW91c2x5
IHJlcXVlc3QgYnV0IGlzIG5vdCBpbiB0aGUgY2FjaGUsIHJlYXNvbjogJXMiLCB3ZWJQYWdlSUQs
IHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIGRpYWdub3N0aWNLZXkudXRmOCgp
LmRhdGEoKSk7CkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBTdGF0aXN0aWNzOjpxdWVyeVdhc0V2
ZXJSZXF1ZXN0ZWQoY29uc3QgU3RyaW5nJiBoYXNoLCBOZWVkVW5jYWNoZWRSZWFzb24gbmUKICAg
ICAvLyBRdWVyeSBwZW5kaW5nIHdyaXRlcyBmaXJzdC4KICAgICBib29sIHdhc0FscmVhZHlSZXF1
ZXN0ZWQgPSBtX2hhc2hlc1RvQWRkLmNvbnRhaW5zKGhhc2gpOwogICAgIGlmICh3YXNBbHJlYWR5
UmVxdWVzdGVkICYmIG5lZWRVbmNhY2hlZFJlYXNvbiA9PSBOZWVkVW5jYWNoZWRSZWFzb246Ok5v
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUsIE51bGxvcHQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChuZWVkVW5jYWNoZWRSZWFzb24gPT0gTmVlZFVuY2FjaGVkUmVhc29uOjpZ
ZXMgJiYgbV9zdG9yZURlY2lzaW9uc1RvQWRkLmNvbnRhaW5zKGhhc2gpKSB7CkBAIC0zNjUsNyAr
MzY1LDcgQEAgdm9pZCBTdGF0aXN0aWNzOjpxdWVyeVdhc0V2ZXJSZXF1ZXN0ZWQoY29uc3QgU3Ry
aW5nJiBoYXNoLCBOZWVkVW5jYWNoZWRSZWFzb24gbmUKICAgICBtX2FjdGl2ZVF1ZXJpZXMuYWRk
KFdURk1vdmUoZXZlclJlcXVlc3RlZFF1ZXJ5KSk7CiAgICAgc2VyaWFsQmFja2dyb3VuZElPUXVl
dWUoKS5kaXNwYXRjaChbdGhpcywgd2FzQWxyZWFkeVJlcXVlc3RlZCwgJnF1ZXJ5XSAoKSBtdXRh
YmxlIHsKICAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotICAgICAgICBPcHRpb25hbDxTdG9yZURlY2lzaW9u
PiBzdG9yZURlY2lzaW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0b3JlRGVjaXNpb24+IHN0
b3JlRGVjaXNpb247CiAgICAgICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKSB7CiAgICAgICAg
ICAgICBpZiAoIXdhc0FscmVhZHlSZXF1ZXN0ZWQpIHsKICAgICAgICAgICAgICAgICBXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCgiU0VM
RUNUIGhhc2ggRlJPTSBBbHJlYWR5UmVxdWVzdGVkIFdIRVJFIGhhc2g9PyIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRp
c3RpY3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuaAppbmRleCBjYzI5ZmFlN2NmYjlmZTA2NDg3ZTBiNjJiMTY2NWI0YzUwNWNl
ZmFhLi5iNjdjMjYwZTE5NGRlODMwZWJlMzFiYzg5MjNkZDcwODA3MzQxZTg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0
aWNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIFN0YXRpc3RpY3MgewogICAg
IHZvaWQgYWRkU3RvcmVEZWNpc2lvbnNUb0RhdGFiYXNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBO
ZXR3b3JrQ2FjaGU6OlN0b3JlRGVjaXNpb24+Jik7CiAgICAgdm9pZCB3cml0ZVRpbWVyRmlyZWQo
KTsKIAotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sIHdhc0V2ZXJSZXF1ZXN0
ZWQsIGNvbnN0IE9wdGlvbmFsPFN0b3JlRGVjaXNpb24+Jik+IFJlcXVlc3RlZENvbXBsZXRpb25I
YW5kbGVyOworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sIHdhc0V2ZXJSZXF1
ZXN0ZWQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4mKT4gUmVxdWVzdGVkQ29t
cGxldGlvbkhhbmRsZXI7CiAgICAgZW51bSBjbGFzcyBOZWVkVW5jYWNoZWRSZWFzb24geyBObywg
WWVzIH07CiAgICAgdm9pZCBxdWVyeVdhc0V2ZXJSZXF1ZXN0ZWQoY29uc3QgU3RyaW5nJiwgTmVl
ZFVuY2FjaGVkUmVhc29uLCBSZXF1ZXN0ZWRDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lk
IG1hcmtBc1JlcXVlc3RlZChjb25zdCBTdHJpbmcmIGhhc2gpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cAppbmRleCA5ZjQ5MWE4ZWYwYmM1MzI3YTE3MmUyYmNhNWMwZWM2ZjBhMTBkM2NiLi40NTMwODNh
NGE0OWIwN2Y3ZGEwMjMwODljOTdhODU0MTgxN2I3ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cApAQCAtNDcxLDcgKzQ3MSw3IEBAIHN0YXRpYyBEYXRhIGVuY29kZVJlY29yZE1ldGFEYXRhKGNv
bnN0IFJlY29yZE1ldGFEYXRhJiBtZXRhRGF0YSkKICAgICByZXR1cm4gRGF0YShlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKLU9wdGlvbmFsPEJsb2JTdG9yYWdl
OjpCbG9iPiBTdG9yYWdlOjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mIHdyaXRlT3Bl
cmF0aW9uKQorc3RkOjpvcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gU3RvcmFnZTo6c3RvcmVC
b2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJiB3cml0ZU9wZXJhdGlvbikKIHsKICAgICBhdXRvIGJs
b2JQYXRoID0gYmxvYlBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAKQEAg
LTQ5Niw3ICs0OTYsNyBAQCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gU3RvcmFnZTo6c3Rv
cmVCb2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJiB3cml0ZU9wZXJhdAogICAgIHJldHVybiBibG9i
OwogfQogCi1EYXRhIFN0b3JhZ2U6OmVuY29kZVJlY29yZChjb25zdCBSZWNvcmQmIHJlY29yZCwg
T3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IGJsb2IpCitEYXRhIFN0b3JhZ2U6OmVuY29kZVJl
Y29yZChjb25zdCBSZWNvcmQmIHJlY29yZCwgc3RkOjpvcHRpb25hbDxCbG9iU3RvcmFnZTo6Qmxv
Yj4gYmxvYikKIHsKICAgICBBU1NFUlQoIWJsb2IgfHwgYnl0ZXNFcXVhbChibG9iLnZhbHVlKCku
ZGF0YSwgcmVjb3JkLmJvZHkpKTsKIApAQCAtNzEwLDcgKzcxMCw3IEBAIHZvaWQgU3RvcmFnZTo6
ZGlzcGF0Y2hXcml0ZU9wZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdy
aXRlT3BlcmF0CiAgICAgICAgICsrd3JpdGVPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAKICAgICAg
ICAgYm9vbCBzaG91bGRTdG9yZUFzQmxvYiA9IHNob3VsZFN0b3JlQm9keUFzQmxvYih3cml0ZU9w
ZXJhdGlvbi5yZWNvcmQuYm9keSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IHNob3VsZFN0b3JlQXNC
bG9iID8gc3RvcmVCb2R5QXNCbG9iKHdyaXRlT3BlcmF0aW9uKSA6IE51bGxvcHQ7CisgICAgICAg
IGF1dG8gYmxvYiA9IHNob3VsZFN0b3JlQXNCbG9iID8gc3RvcmVCb2R5QXNCbG9iKHdyaXRlT3Bl
cmF0aW9uKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHJlY29yZERhdGEgPSBlbmNv
ZGVSZWNvcmQod3JpdGVPcGVyYXRpb24ucmVjb3JkLCBibG9iKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CmluZGV4IDA0Y2FjMjAxZTgwNzdlNmViYmJiYmI1OGJlZmEyNDg2NmQ0ZTg2ZDcuLmZlYzJjZGY4
NmY4NTViNDgwMDYzYWE3NGYxYTY5NjQ3YTU0Y2VkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAg
LTEyMiw4ICsxMjIsOCBAQCBjbGFzcyBTdG9yYWdlIHsKICAgICB2b2lkIGRpc3BhdGNoUGVuZGlu
Z1dyaXRlT3BlcmF0aW9ucygpOwogICAgIHZvaWQgZmluaXNoV3JpdGVPcGVyYXRpb24oV3JpdGVP
cGVyYXRpb24mKTsKIAotICAgIE9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBzdG9yZUJvZHlB
c0Jsb2IoV3JpdGVPcGVyYXRpb24mKTsKLSAgICBEYXRhIGVuY29kZVJlY29yZChjb25zdCBSZWNv
cmQmLCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4pOworICAgIHN0ZDo6b3B0aW9uYWw8Qmxv
YlN0b3JhZ2U6OkJsb2I+IHN0b3JlQm9keUFzQmxvYihXcml0ZU9wZXJhdGlvbiYpOworICAgIERh
dGEgZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYsIHN0ZDo6b3B0aW9uYWw8QmxvYlN0b3JhZ2U6
OkJsb2I+KTsKICAgICB2b2lkIHJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYsIGNvbnN0IERhdGEm
KTsKIAogICAgIHZvaWQgdXBkYXRlRmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBw
YXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5k
ZXggMDU2OGFjZWE5ZjQ3OTcxNDViMDBkOWRiNTc2YzNjMThjNzc1M2UxYy4uZjZkODhiN2NkYmI3
ZGU2ZmE2YTJkY2I1NGFmODZmYTNjYTc5NzZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTY5LDggKzY5LDggQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0aW9uU2V0PFQ+PiB7CiAgICAgfQogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpPcHRpb25hbDxU
Pj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6
Ok9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1
bWVudENvZGVyPHN0ZDo6b3B0aW9uYWw8VD4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewog
ICAgICAgICBpZiAoIW9wdGlvbmFsKSB7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwpA
QCAtODEsMTQgKzgxLDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdURjo6T3B0aW9uYWw8VD4+IHsKICAgICAgICAgZW5jb2RlciA8PCBvcHRpb25hbC52YWx1
ZSgpOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBX
VEY6Ok9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2Rlciwgc3RkOjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewogICAgICAgICBi
b29sIGlzRW5nYWdlZDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc0VuZ2FnZWQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmICghaXNFbmdhZ2VkKSB7Ci0g
ICAgICAgICAgICBvcHRpb25hbCA9IE51bGxvcHQ7CisgICAgICAgICAgICBvcHRpb25hbCA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IGVkNWRkZjI5ODgxYzU2YjRj
ZDZlNGRiYzM4YzUyM2IyN2UyMjFlYTQuLmExOWI4MzFhN2Y4NWI0NzdjNGZlZWY4ZDNlZjZjOWM1
ZjIyNThlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAt
MTY1LDcgKzE2NSw3IEBAIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q29ubmVjdGlvbj4gewogICAgIHZvaWQgcG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZSgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5k
KFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2Vu
ZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgRnVuY3Rpb25E
aXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPHR5cGVu
YW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6UmVwbHk+OjpUeXBlPik+JiYgcmVwbHlIYW5kbGVy
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRXaXRoUmVwbHkoVCYmIG1lc3Nh
Z2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNw
YXRjaGVyLCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8
dHlwZW5hbWUgVDo6UmVwbHk+OjpUeXBlPik+JiYgcmVwbHlIYW5kbGVyKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHRpbWVvdXQgPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKSwgT3B0aW9uU2V0
PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVz
dGluYXRpb25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOwogCkBAIC0zNDUsNyArMzQ1LDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZv
aWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZv
aWQgKE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6UmVwbHk+OjpUeXBl
Pik+JiYgcmVwbHlIYW5kbGVyKQordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KFQmJiBt
ZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5
RGlzcGF0Y2hlciwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdU
eXBlPHR5cGVuYW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcikKIHsKICAgICB1
aW50NjRfdCByZXF1ZXN0SUQgPSAwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNv
ZGVyID0gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQsIHJlcXVlc3RJRCk7CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBGdW5jdGlvbkRpc3AKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJl
cGx5SGFuZGxlcihOdWxsb3B0KTsKKyAgICAgICAgcmVwbHlIYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXgg
MGNjNjJkZDFmYjRjZGVhOTNkNWEwMjE1OTUzMjQ1NjlkMDkzNzRjYS4uN2RmOGUyZmZjZGFmNTJh
Y2M0N2Q2NWIwNTY2ZjBmZDMwZmIxMjk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnkgOiBwdWJsaWMg
UmVmQ291bnRlZDxTaGFyZWRNZW1vcnk+IHsKICAgICBQcm90ZWN0aW9uIG1fcHJvdGVjdGlvbjsK
IAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIE9wdGlvbmFsPGludD4gbV9maWxl
RGVzY3JpcHRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9maWxlRGVzY3JpcHRvcjsKICAg
ICBib29sIG1faXNXcmFwcGluZ01hcCB7IGZhbHNlIH07CiAjZWxpZiBPUyhEQVJXSU4pCiAgICAg
bWFjaF9wb3J0X3QgbV9wb3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
dW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgv
U2hhcmVkTWVtb3J5VW5peC5jcHAKaW5kZXggMjdiMjViN2U1YjNjN2QxNzQ5ODYxNDQ2ZjBlMDk2
OTgyMjM1Mzg0YS4uOWQ5MTE3OTI1OWQ1ZTI1MGU4NTFkYTk2NzlkZmExZjJlYmYzMDJmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3Bw
CkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpt
YXAoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rpb24gcHJvdGVjdGkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBpbnN0YW5jZSA9IHdyYXBN
YXAoZGF0YSwgaGFuZGxlLm1fYXR0YWNobWVudC5zaXplKCksIC0xKTsKLSAgICBpbnN0YW5jZS0+
bV9maWxlRGVzY3JpcHRvciA9IE51bGxvcHQ7CisgICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0
b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaW5zdGFuY2UtPm1faXNXcmFwcGluZ01hcCA9IGZhbHNl
OwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggMDU5ZWM4NWMyMjJiOWM5ZTM4NWJlMjZhN2JlMTRhMTcxZTY1NzUz
MC4uYWY5NDQ3YjEwNjljNjQzNmE1MDFiZjhkNmE0OTMzMzZhZGVlZGFmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI5MCw3ICsyOTAsNyBAQCBkZWYg
Y2xhc3NfdGVtcGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogCiAgICAgY2xhc3NfdGVt
cGxhdGVfdHlwZXMgPSB7CiAgICAgICAgICdIYXNoTWFwJzogeydoZWFkZXJzJzogWyc8d3RmL0hh
c2hNYXAuaD4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5o
IiddfSwKLSAgICAgICAgJ09wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvbmFsLmg+
J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisg
ICAgICAgICdzdGQ6Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvbmFsLmg+J10s
ICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAg
ICAgICdPcHRpb25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdW
ZWN0b3InOiB7J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9o
ZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7
J2hlYWRlcnMnOiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElTZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZWN1
cml0eU9yaWdpbi5oCmluZGV4IDdiYzNjNmY2YmE3MWVhYTNlNzA5MGYyNWUxMzE2MTlmOTdjOWVk
MjMuLjg5MTdjNjcwNDkwNGQzN2Y4NGI4MzE1YjkzMzk5ZGYyZGU3NGQ0YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpTZWN1cml0eU9yaWdpbj4KICAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzdHJpbmcpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcm
IHByb3RvY29sLCBjb25zdCBXVEY6OlN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQpCisgICAgc3RhdGljIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6
U3RyaW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUocHJvdG9jb2wsIGhvc3QsIHBvcnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlLm1tCmluZGV4IGIwZGE0YjYxZjM3ZGFmOWUxY2RmYzUwMzYwMTZiNjRjODYw
ZTgzMTkuLjJiNmEzMWRjNGQwOWJjYjgyNjFmNTFjMjFlZDU2N2UxM2U5NDgxMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlLm1tCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBNZXRob2RJbmZvIHsKICAg
ICAgICAgQ1N0cmluZyByZXBseVNpZ25hdHVyZTsKICAgICAgICAgVmVjdG9yPEhhc2hTZXQ8Q2xh
c3M+PiBhbGxvd2VkUmVwbHlDbGFzc2VzOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UmVwbHlJbmZv
PiByZXBseUluZm87CisgICAgc3RkOjpvcHRpb25hbDxSZXBseUluZm8+IHJlcGx5SW5mbzsKIH07
CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4
IGQ0YWEwMTNhMzg5YTlkNDE3NDY0MTU1OWYzYWU3MWU1ZmFhMDcwNjcuLjhkZjhmZmFhYjdjNGZh
Nzg4NjQ1ZTE3N2ZlYjZjMTUxYjdhMzNiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgV0tT
dHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2Vj
dXJpdHlPcmlnaW4pCiAKIHVuc2lnbmVkIHNob3J0IFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KFdL
U2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChz
ZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlT3IoMCk7CisgICAg
cmV0dXJuIHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZh
bHVlX29yKDApOwogfQogCiAvLyBGb3IgYmFja3dhcmRzIEFCSSBjb21wYXRpYmlsaXR5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IGRlZTc2OGI3Yzc2ZWJjZGM2MTMwZTll
OTNiZGY5NDNjNDI4ZjQ5YjguLjBmZjdiYmEwMTExYjZjNDM4NThkNDg1YTNlYWFhNWEwOTc3Mjk4
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTY2LDggKzY2LDggQEAg
c3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgLy8gRmlsZS4KICAgICAgICAgU3RyaW5nIGZpbGVQ
YXRoOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydDsKLSAgICAgICAgT3B0aW9uYWw8aW50NjRf
dD4gZmlsZUxlbmd0aDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGZpbGVMZW5ndGg7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lOwogCiAgICAgICAgIC8vIEJsb2IuCiAgICAgICAgIFN0cmluZyBibG9iVVJMU3RyaW5nOwpA
QCAtOTAsNyArOTAsNyBAQCBzdHJ1Y3QgRnJhbWVTdGF0ZSB7CiAgICAgU3RyaW5nIHRhcmdldDsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IGRvY3VtZW50U3RhdGU7Ci0gICAgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBzdGF0ZU9iamVjdERhdGE7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IHN0YXRlT2JqZWN0RGF0YTsKIAogICAgIGludDY0X3QgZG9jdW1lbnRTZXF1ZW5jZU51
bWJlcjsKICAgICBpbnQ2NF90IGl0ZW1TZXF1ZW5jZU51bWJlcjsKQEAgLTk4LDcgKzk4LDcgQEAg
c3RydWN0IEZyYW1lU3RhdGUgewogICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9u
OwogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcjsKIAotICAgIE9wdGlvbmFsPEhUVFBCb2R5PiBo
dHRwQm9keTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhUVFBCb2R5PiBodHRwQm9keTsKIAogICAgIC8v
IEZJWE1FOiBUaGVzZSBzaG91bGQgbm90IGJlIHBlciBmcmFtZS4KICNpZiBQTEFURk9STShJT1Mp
CkBAIC0xMzksNyArMTM5LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlIHsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQmFja0ZvcndhcmRMaXN0U3RhdGUmKTsK
IAogICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1zOwotICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBjdXJyZW50SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y3VycmVudEluZGV4OwogfTsKIAogc3RydWN0IFNlc3Npb25TdGF0ZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA4MjdkN2Iz
MDY3NGE5ZDQ5MDA5NTUwZDVhYzJhYzE1MDY1YzdhODczLi43NzBlNmNlNTE1MzQ0NDJkNWRmNDVm
OTM4ODU4OTQ5OGE2NjJiN2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTEwOCw5ICsxMDgsOSBAQCBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0Jl
aGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcjsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4sIGJ1dCB3
ZSB3b3VsZCBuZWVkIHRvCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiwgYnV0IHdlIHdvdWxkIG5lZWQgdG8K
ICAgICAvLyBjb3JyZWN0bHkgaGFuZGxlIGVudW1zIGluc2lkZSBPcHRpb25hbHMgd2hlbiBlbmNv
ZGluZyBhbmQgZGVjb2RpbmcuIAotICAgIFdURjo6T3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJh
ck92ZXJsYXlTdHlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJPdmVy
bGF5U3R5bGU7CiAKICAgICBib29sIGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCBkN2JkMzI3
OTY4YzhmN2Y3M2I4MTc0ZDc2YjMxMzY4MjY1OTRkODE1Li43MGRjOTA5ZWNmY2Y3NzcxNDRmZmQ0
Y2RlOGI2NDcxYjVmZjNhNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L09iakNPYmplY3RHcmFwaC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNP
YmplY3RHcmFwaC5tbQpAQCAtMTEzLDcgKzExMyw3IEBAIGVudW0gY2xhc3MgT2JqQ1R5cGUgewog
I2VuZGlmCiB9OwogCi1zdGF0aWMgT3B0aW9uYWw8T2JqQ1R5cGU+IHR5cGVGcm9tT2JqZWN0KGlk
IG9iamVjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE9iakNUeXBlPiB0eXBlRnJvbU9iamVjdChp
ZCBvYmplY3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8T2JqQ1R5cGU+IHR5cGVGcm9tT2JqZWN0KGlkIG9iamVjdCkKICAgICAg
ICAgcmV0dXJuIE9iakNUeXBlOjpXS1R5cGVSZWZXcmFwcGVyOwogI2VuZGlmCiAKLSAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE9iakNPYmpl
Y3RHcmFwaDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgaWQgb2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAppbmRleCA0MzcwMGQxYTNiZmM0NDRi
ZjkwMTBjYThhYzUxMDFlNmU3NTM4MmRiLi44NTQzM2JkNTk4NmMxMzZhOGJlY2M5ODFiZmQ3MGQ4
NGVlNDdkNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1T
aGltLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcApA
QCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgV29ya1F1ZXVlJiB3b3JrUXVldWUoKQogICAgIHJldHVy
biAqd29ya1F1ZXVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4g
c2VuZFNlY0l0ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwg
Q0ZEaWN0aW9uYXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2gg
PSAwKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0
ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9u
YXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQogewot
ICAgIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlOworICAgIHN0ZDo6b3B0
aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2U7CiAKICAgICBhdXRvIHNlbWFwaG9y
ZSA9IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgwKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5jcHAKaW5kZXggN2VhNmE5OGU2NDAxMTc0MWM0ZTNjNGY5ZGM2ZmE3ODM1ZGMz
ZmIzMC4uNTkwNjkxYjhjYzNiMzk0ZGZiNmNmMTAwMjNjYTE2ZGU5Y2EzY2VmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
UgogCiAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0T3JpZ2luS2V5KCkpLT5zdHJpbmcoKSwgb3JpZ2luKTsKICAgICAgICAgICAgIGlm
IChvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFw
LnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkp
LT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGlt
ZS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQ
STo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVfb3IoMCkp
KTsKICAgICAgICAgICAgIGlmIChvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUpCi0gICAg
ICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRl
KG9yaWdpbkRldGFpbHMubW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKDApKSk7CisgICAgICAgICAg
ICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1v
ZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdp
bkRldGFpbHMubW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcigwKSkpOwogCiAgICAgICAgICAgICBy
ZXN1bHQudW5jaGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUoZGV0
YWlsc01hcCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM1NTQzYTIwYjcxZThjOTc2
ZTIxMjJiOWI0YmVhNDhiMzc1MWZjNzAuLmI3MTEyY2VlMTdiZGNjMjY5YmM5ZjllMjcxZDI0MDJk
YTIxNjY4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTU4LDcgKzU4LDcgQEAgLSAoTlNTdHJpbmcgKilo
b3N0CiAKIC0gKE5TSW50ZWdlcilwb3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+
c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gX3NlY3VyaXR5
T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogI3ByYWdt
YSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDhiNGMxODgyZjgyOGM5
OWNhODRmNjNlN2I0MmFkZTgxNjNjOTJhYmUuLjk5NjAwNGQwZjkyNGQ4NDNiZmY1YjY3ODY0ZDhh
MzU1OGNmZjQ2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0yMjcsMTEgKzIyNywxMSBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJW
aWV3IHsKICAgICB1aW50NjRfdCBfZmlyc3RQYWludEFmdGVyQ29tbWl0TG9hZFRyYW5zYWN0aW9u
SUQ7CiAgICAgRHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRl
TW9kZTsKICAgICBDQVRyYW5zZm9ybTNEIF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1BZGp1c3Rt
ZW50czsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRy
YW5zYWN0aW9uSUQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gX3Jlc2l6ZUFuaW1hdGlv
blRyYW5zZm9ybVRyYW5zYWN0aW9uSUQ7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gX3Jlc2l6ZUFu
aW1hdGlvblZpZXc7CiAgICAgQ0dGbG9hdCBfbGFzdEFkanVzdG1lbnRGb3JTY3JvbGxlcjsKLSAg
ICBPcHRpb25hbDxDR1JlY3Q+IF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3Q7Ci0gICAgT3B0aW9u
YWw8Q0dSZWN0PiBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0OworICAgIHN0ZDo6b3B0aW9u
YWw8Q0dSZWN0PiBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8
Q0dSZWN0PiBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0OwogCiAgICAgQk9PTCBfbmVlZHNU
b1Jlc3RvcmVTY3JvbGxQb3NpdGlvbjsKICAgICBCT09MIF9jb21taXREaWRSZXN0b3JlU2Nyb2xs
UG9zaXRpb247CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCAtICh2b2lkKV9kaWRDb21taXRMYXllclRy
ZWU6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZQog
CiAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICE9IER5bmFtaWNWaWV3cG9ydFVw
ZGF0ZU1vZGU6Ok5vdFJlc2l6aW5nKSB7CiAgICAgICAgIGlmIChfcmVzaXplQW5pbWF0aW9uVHJh
bnNmb3JtVHJhbnNhY3Rpb25JRCAmJiBsYXllclRyZWVUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklE
KCkgPj0gX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9uSUQudmFsdWUoKSkgewot
ICAgICAgICAgICAgX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9uSUQgPSBOdWxs
b3B0OworICAgICAgICAgICAgX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9uSUQg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBbX3Jlc2l6ZUFuaW1hdGlvblZpZXcgbGF5ZXJd
LnN1YmxheWVyVHJhbnNmb3JtID0gX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybUFkanVzdG1lbnRz
OwogICAgICAgICAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IER5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGU6OlJlc2l6aW5nV2l0aERvY3VtZW50SGlkZGVuKSB7CiAgICAgICAg
ICAgICAgICAgW19jb250ZW50VmlldyBzZXRIaWRkZW46Tk9dOwpAQCAtMjI0Nyw4ICsyMjQ3LDgg
QEAgLSAodm9pZClfbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbgogCiAtICh2b2lkKV9uYXZpZ2F0
aW9uR2VzdHVyZURpZEVuZAogewotICAgIF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QgPSBOdWxs
b3B0OwotICAgIF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3QgPSBOdWxsb3B0OworICAgIF9m
cm96ZW5WaXNpYmxlQ29udGVudFJlY3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgX2Zyb3plblVub2Jz
Y3VyZWRDb250ZW50UmVjdCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmluZGV4IGY4NjBmODhhN2Q4YTdj
NzdmYWMyZjQzMjU2ZWIxNzg1ZjIxZTI4ZDQuLmZkZGQ2YTUzYTFlYjQ0YWIwZjM2OTEwODljNTAy
ZWVmNjYwNDNjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApAQCAtNDAsNyAr
NDAsNyBAQCBpbmxpbmUgV0tXZWJzaXRlRGF0YVJlY29yZCAqd3JhcHBlcihBUEk6OldlYnNpdGVE
YXRhUmVjb3JkJiB3ZWJzaXRlRGF0YVJlY29yZCkKICAgICByZXR1cm4gKFdLV2Vic2l0ZURhdGFS
ZWNvcmQgKil3ZWJzaXRlRGF0YVJlY29yZC53cmFwcGVyKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
T3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0cmluZyAqd2Vi
c2l0ZURhdGFUeXBlKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlw
ZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndlYnNpdGVEYXRhVHlwZSkKIHsKICAgICBp
ZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6V0tXZWJzaXRlRGF0YVR5cGVDb29r
aWVzXSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q29va2llczsKQEAgLTcxLDcg
KzcxLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0
ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVQKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OldlYnNpdGVEYXRhVHlwZVJlc291
cmNlTG9hZFN0YXRpc3RpY3M7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKE5TU2V0ICp3ZWJzaXRlRGF0YVR5cGVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCBjYWYwZDcy
M2YwNjU5NjllMGMwOGM0NmUwMmMyNGE2ZTQ3YzExOWQ4Li5kMjc3MDA1OTYxZDI5YWVkNjc1MDkz
Njk0YjIzZTRlODI1NWUxMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmNwcApAQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWQgRXdrVmlldzo6c2V0Q3Vyc29y
KGNvbnN0IEN1cnNvciYgY3Vyc29yKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIAot
ICAgICAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCA9IGN1cnNvckltYWdlLT5ob3RTcG90
KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QgPSBjdXJzb3JJbWFn
ZS0+aG90U3BvdCgpOwogICAgICAgICBFY29yZV9YX0N1cnNvciBjdXN0b21DdXJzb3IgPSBjcmVh
dGVDdXN0b21DdXJzb3Iod2luZG93LCBjdXJzb3JJbWFnZSwgSW50U2l6ZShjdXJzb3JJbWFnZS0+
c2l6ZSgpKSwgaG90U3BvdCA/IGhvdFNwb3QudmFsdWUoKSA6IEludFBvaW50KCkpOwogICAgICAg
ICBpZiAoIWN1c3RvbUN1cnNvcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAxZjkwM2VlN2Q2YjcyOTZjNDlkYzkw
ZTk5ZjRlYWM4MjhhNmM0ZDNlLi42ZDZjMDNhZTIwNTYyMDBlN2FiZmE5NDQzODQ1OWY0NDUyMDJh
MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0x
Mjk4LDcgKzEyOTgsNyBAQCAtIChDR0Zsb2F0KV90b3RhbEhlaWdodE9mQmFubmVycwogICAgIHJl
dHVybiBfZGF0YS0+X2ltcGwtPnRvdGFsSGVpZ2h0T2ZCYW5uZXJzKCk7CiB9CiAKLXN0YXRpYyBX
VEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xs
YmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHNjcm9sbGJhclN0eWxlKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiB0b0NvcmVTY3Jv
bGxiYXJTdHlsZShfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgc2Nyb2xsYmFyU3R5bGUpCiB7CiAg
ICAgc3dpdGNoIChzY3JvbGxiYXJTdHlsZSkgewogICAgIGNhc2UgX1dLT3ZlcmxheVNjcm9sbGJh
clN0eWxlRGFyazoKQEAgLTEzMTIsMTAgKzEzMTIsMTAgQEAgc3RhdGljIFdURjo6T3B0aW9uYWw8
V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiB0b0NvcmVTY3JvbGxiYXJTdHlsZShfV0tP
dmUKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSB0
b0FQSVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlPiBjb3JlU2Nyb2xsYmFyU3R5bGUpCitzdGF0aWMgX1dLT3ZlcmxheVNjcm9sbGJhclN0
eWxlIHRvQVBJU2Nyb2xsYmFyU3R5bGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJP
dmVybGF5U3R5bGU+IGNvcmVTY3JvbGxiYXJTdHlsZSkKIHsKICAgICBpZiAoIWNvcmVTY3JvbGxi
YXJTdHlsZSkKICAgICAgICAgcmV0dXJuIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZUF1dG9tYXRp
YzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDRmZTk0NWYyN2I4MWIyNmZm
MjdhOTY2Nzg4YWQ5YjkyNzdiNTJiZjguLjkyYTE5ZjhlM2UwYmZjODMwOTY5MTUxMTUzY2MyNTY2
NzhlZjY3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtMTUwLDcgKzE1
MCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlTWVyY2hhbnRW
YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lCiAgICAgbV9tZXJjaGFudFZhbGlkYXRpb25T
dGF0ZSA9IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpWYWxpZGF0aW9uQ29tcGxldGU7CiB9CiAK
LXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0
ZW1zKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBj
YW5jZWxlZCBhbHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTY4
LDcgKzE2OCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlCiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpBY3RpdmU7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5n
TWV0aG9kcywgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Ojpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBvcGFx
dWVTdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdN
ZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMp
CiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBwYXltZW50IGhhcyBiZWVuIGNhbmNl
bGVkIGFscmVhZHkuCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUpCkBAIC0xODYsNyAr
MTg2LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVTaGlwcGlu
Z0NvbnRhY3RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXUKICAgICBtX3N0YXRlID0gU3RhdGU6OkFj
dGl2ZTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVQYXlt
ZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
PiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRo
ZSBwYXltZW50IGhhcyBiZWVuIGNhbmNlbGVkIGFscmVhZHkuCiAgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OklkbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGExYjhkZGNlZjM5
MTZhZDM0ZWE0ZjI0MDVhYzExYTk3YjU3ODU2NDQuLmMyNmY3Y2VlZTFkNDJkNzllNjdjNjhhZjI5
YjQ2NTU2MjkwODE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC04MCw5ICs4
MCw5IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYg
bWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIHVpbnQ2NF90IHJl
cXVlc3RJRCk7CiAgICAgdm9pZCBzaG93UGF5bWVudFVJKGNvbnN0IFN0cmluZyYgb3JpZ2luYXRp
bmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0JiwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24mKTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odWludDMy
X3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXM+Jik7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKLSAg
ICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7CisgICAgdm9pZCBjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
Jik7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBv
cGFxdWVTdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBp
bmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOworICAgIHZvaWQgY29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOwogICAgIHZvaWQgY29tcGxldGVQYXlt
ZW50U2Vzc2lvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMpOwogICAgIHZvaWQgYWJvcnRQYXltZW50
U2Vzc2lvbigpOwogCkBAIC05OCw5ICs5OCw5IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgdm9pZCBwbGF0Zm9y
bU9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlv
bkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6
OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNv
blVSTHMsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Jiwgc3RkOjpmdW5jdGlvbjx2b2lk
IChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZU1l
cmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7
Ci0gICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdN
ZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cywgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+Jik7CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2Vs
ZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRo
b2RzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFu
ZExpbmVJdGVtcz4mKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFs
QW5kTGluZUl0ZW1zPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9u
KFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKTsKIAogICAgIFdlYlBhZ2VQcm94
eSYgbV93ZWJQYWdlUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggODVlYWI0YzY0ZWNlY2NkMDk3NWFlODQ0NzhlZjk0OTIzZmM0YWFlMC4u
ODY0OTgxNmJkOGIxYjE2MjcxM2M2YWY1MDUxN2Y3NzUxY2E3ZDJiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzIsOSArMzIsOSBAQCBtZXNz
YWdlcyAtPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSB7CiAKICAgICBTaG93UGF5bWVudFVJ
KFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxT
dHJpbmdzLCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wg
cmVzdWx0KQogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbik7Ci0gICAgQ29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIE9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykK
LSAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0
dXMsIFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+IG5ld1No
aXBwaW5nTWV0aG9kcywgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQotICAgIENvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRl
bXM+IG5ld1RvdGFsQW5kSXRlbXMpCisgICAgQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQorICAgIENvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgVmVjdG9yPFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gbmV3U2hpcHBpbmdNZXRob2Rz
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4gbmV3VG90YWxBbmRJdGVtcykKKyAgICBDb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24o
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
IG5ld1RvdGFsQW5kSXRlbXMpCiAgICAgQ29tcGxldGVQYXltZW50U2Vzc2lvbih1aW50MzJfdCBv
cGFxdWVTdGF0dXMpCiAgICAgQWJvcnRQYXltZW50U2Vzc2lvbigpCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IDU3OWFmYWZhOGIyNjZk
NTcyZmRkNmU4NDE2ZmJhZjJjMzMyOTFkZjAuLmU2NGVkYzM2NGJjNDQyOGM0NTA3NGJiZGU0MzFh
YTRjMWEzMzRlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tCkBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RlY2ltYWxO
dW1iZXI+IHRvRGVjaW1hbE51bWJlcihpbnQ2NF90IHZhbHVlKQogCiBzdGF0aWMgUmV0YWluUHRy
PFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtn
ZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0
ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFsdWVPcigw
KSkuZ2V0KCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07
CisgICAgcmV0dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1X
aXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5h
bW91bnQudmFsdWVfb3IoMCkpLmdldCgpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUo
bGluZUl0ZW0udHlwZSldOwogfQogCiBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01l
cmNoYW50Q2FwYWJpbGl0aWVzKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpNZXJjaGFu
dENhcGFiaWxpdGllcyYgbWVyY2hhbnRDYXBhYmlsaXRpZXMpCkBAIC00NjgsNyArNDY4LDcgQEAg
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihjb25zdCBXZWJDb3IKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS0+X3Nlc3Npb25CbG9jayA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5l
d1RvdGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzIHN0YXR1cywgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykKIHsK
ICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKICAgICBB
U1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwpAQCAt
NDkwLDcgKzQ5MCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
Q29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlCiAgICAgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZENvbXBsZXRpb24gPSBudWxscHRyOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBh
eW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3
VG90YWxBbmRMaW5lSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzIHN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3Rh
bEFuZExpbmVJdGVtcykKIHsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyKTsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29y
CiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGlu
ZUl0ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5l
d1RvdGFsQW5kTGluZUl0ZW1zKQogewogICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIpOwogICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMjdiMWYxNjBk
OGY3OGY3ZWFmNTVkZDFkODMzYTdkMTJlZDk3OTZhMS4uM2FiMzExODk4MDYzYzNiMjM2NjRjMGUw
NmQ1MmFmZmZhM2IyODAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNDcsNyArNDcs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IGVycm9yTmFtZUFuZERldGFpbHNTZXBhcmF0b3IgPSAiOyI7CiAKIC8vIE1ha2Ugc3VyZSB0aGUg
cHJlZGVmaW5lZCBlcnJvciBuYW1lIGlzIHZhbGlkLCBvdGhlcndpc2UgdXNlIEludGVybmFsRXJy
b3IuCi0jZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJp
bmcpLnZhbHVlT3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjpJbnRlcm5hbEVycm9yKQorI2RlZmluZSBWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0
cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3Nh
Z2U+KGVycm9yU3RyaW5nKS52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJyb3IpCiAKIC8vIElmIHRoZSBlcnJvciBuYW1lIGlz
IGluY29ycmVjdCBmb3IgdGhlc2UgbWFjcm9zLCBpdCB3aWxsIGJlIGEgY29tcGlsZS10aW1lIGVy
cm9yLgogI2RlZmluZSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShlcnJvck5hbWUp
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OmVycm9y
TmFtZSkKQEAgLTE2NiwxNCArMTY2LDE0IEBAIFN0cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
aGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAgICAg
cmV0dXJuIGhhbmRsZTsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkF1dG9tYXRpb25TZXNz
aW9uOjp3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYgaGFuZGxlKQorc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lSURGb3JIYW5kbGUo
Y29uc3QgU3RyaW5nJiBoYW5kbGUpCiB7CiAgICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgYXV0byBpdGVyID0gbV9oYW5kbGVXZWJGcmFtZU1hcC5maW5k
KGhhbmRsZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV9oYW5kbGVXZWJGcmFtZU1hcC5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gaXRlci0+dmFsdWU7CiB9CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0
cmluZyYgZXJyb3IKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
ID0gd2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJh
bWVIYW5kbGUgOiBlbXB0eVN0cmluZygpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlv
bmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpKTsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCkBAIC00NzYs
NyArNDc2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24oSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXIKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZy
YW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShvcHRp
b25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpKTsK
ICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZy
YW1lTm90Rm91bmQpOwogCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cmVzb2x2ZUNoaWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJy
b3IKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdp
bmRvd05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJh
bWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUg
OiBlbXB0eVN0cmluZygpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0g
d2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVI
YW5kbGUgOiBlbXB0eVN0cmluZygpKTsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCkBAIC01NjIsNyArNTYyLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUoZnJh
bWVIYW5kbGUpOwogICAgIGlmICghZnJhbWVJRCkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKQEAgLTU5MCw3ICs1OTAsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChJbnNwZWN0b3I6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cgogICAgIGlmICghcGFnZSkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQgPSB3ZWJGcmFtZUlERm9ySGFuZGxlKGZyYW1lSGFuZGxlKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CiAg
ICAgaWYgKCFmcmFtZUlEKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFt
ZU5vdEZvdW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggMjgwZDJkNThiODZlYzc5ZWIz
NGNiNzNmNmU0OWVjMzk0NjkzYWQ0Yi4uOTMyOWNlMGU1NmExOTBhMzc0YmJhNzE2ZjFkNzE4ODVk
YWExM2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3Mg
V2ViQXV0b21hdGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpBdXQKICAgICBTdHJpbmcgaGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0
IFdlYlBhZ2VQcm94eSYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpCcm93c2luZ0NvbnRleHQ+IGJ1aWxkQnJvd3NpbmdDb250ZXh0Rm9yUGFnZShXZWJQYWdl
UHJveHkmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB3ZWJGcmFtZUlERm9ySGFuZGxlKGNv
bnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHdlYkZyYW1lSURGb3JI
YW5kbGUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lSUQodWlu
dDY0X3QgZnJhbWVJRCk7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lUHJveHkoY29uc3Qg
V2ViRnJhbWVQcm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5oCmluZGV4IDczYmYyYmIwNDJkN2IzNDQ0ZTVkMDI2MWY0YzM5MGZkMzdhZTcyM2Mu
LjlmZmIyYTg4ZmY1NTdiNmY5MmFiMzg5OWRiMTVhYzZiMmM5NDBmZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0yMTksOCArMjE5LDggQEAg
Y2xhc3MgV2ViVmlld0ltcGwgewogICAgIE5TQ29sb3IgKnVuZGVybGF5Q29sb3IoKSBjb25zdDsK
ICAgICBOU0NvbG9yICpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKIAotICAg
IHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSk7Ci0gICAgV1RGOjpPcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNv
bnN0OworICAgIHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSk7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJT
dHlsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBiZWdpbkRlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5n
ZXMoKTsKICAgICAvLyBGSVhNRTogTWVyZ2UgdGhlc2UgdHdvPwpAQCAtNjMzLDcgKzYzMyw3IEBA
IGNsYXNzIFdlYlZpZXdJbXBsIHsKICAgICBTdHJpbmcgbV9wcm9taXNlZEZpbGVuYW1lOwogICAg
IFN0cmluZyBtX3Byb21pc2VkVVJMOwogCi0gICAgV1RGOjpPcHRpb25hbDxOU0ludGVnZXI+IG1f
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CisgICAgc3RkOjpvcHRpb25hbDxOU0ludGVnZXI+IG1f
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7CiAKICAgICBDR0Zsb2F0IG1fdG90YWxIZWlnaHRPZkJh
bm5lcnMgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCAzMmU2MzljNGQ5MTlhZDE2ZTlhOTQ4MmI5MzVjZWYwNDYzNzcxZmJhLi4y
MjY3Nzg3MzVkOTU4OTQzNzU1NzUyMWQwZDkyMTI1ZDcwMTM3ZGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC05MDIsNyArOTAyLDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVmlld0V4cG9zZWRSZWN0KCkKICAgICAgICAgZXhwb3Nl
ZFJlY3QgPSBDR1JlY3RVbmlvbihtX2NvbnRlbnRQcmVwYXJhdGlvblJlY3QsIGV4cG9zZWRSZWN0
KTsKIAogICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV9wYWdlLT5kcmF3aW5nQXJlYSgpKQot
ICAgICAgICBkcmF3aW5nQXJlYS0+c2V0Vmlld0V4cG9zZWRSZWN0KG1fY2xpcHNUb1Zpc2libGVS
ZWN0ID8gT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PihleHBvc2VkUmVjdCkgOiBOdWxsb3B0
KTsKKyAgICAgICAgZHJhd2luZ0FyZWEtPnNldFZpZXdFeHBvc2VkUmVjdChtX2NsaXBzVG9WaXNp
YmxlUmVjdCA/IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PihleHBvc2VkUmVjdCkg
OiBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRDbGlwc1RvVmlzaWJs
ZVJlY3QoYm9vbCBjbGlwc1RvVmlzaWJsZVJlY3QpCkBAIC0xMzUyLDEyICsxMzUyLDEyIEBAIE5T
Q29sb3IgKldlYlZpZXdJbXBsOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAog
ICAgIHJldHVybiBXZWJDb3JlOjpuc0NvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBXZWJWaWV3SW1w
bDo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNldE92
ZXJsYXlTY3JvbGxiYXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJs
YXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAgbV9wYWdlLT5zZXRPdmVybGF5U2Nyb2xs
YmFyU3R5bGUoc2Nyb2xsYmFyU3R5bGUpOwogfQogCi1XVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gV2Vi
Vmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cGFnZS0+b3ZlcmxheVNjcm9sbGJhclN0eWxlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggNjllOGM1YjMyMjMyMmRiMDM3MWJiY2Ix
ZjM2NDBmZTRjOTZkODU2NS4uYjQ1ZjIyNzllNzJiZWVlMGFlNzMzYzZlMTBhYjE0MTkyZTAxZjJl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApA
QCAtNzUsNyArNzUsNyBAQCBNYWNoU2VuZFJpZ2h0IERyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZUZl
bmNlKCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotdm9pZCBEcmF3aW5nQXJlYVByb3h5
OjpzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QpCit2b2lkIERyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdFeHBvc2VkUmVjdChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogewogICAgIGlm
ICghbV93ZWJQYWdlUHJveHkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCAzMjYwOWYxZDVkNjIwYTMx
YWI0ZWQwODhlNzA4NDJkMmE0ZGJlZGU0Li5lM2U4Mzk5NTEwYTBiMzg5NzM4NDAzZjY2YTdjYTg2
Mzg4ZjFjZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKQEAgLTgyLDggKzgyLDggQEAgY2xhc3MgRHJhd2luZ0FyZWFQcm94eSA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UmVjdD4pOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CiAgICAgdm9pZCB2aWV3RXhwb3NlZFJl
Y3RDaGFuZ2VkVGltZXJGaXJlZCgpOwogI2VuZGlmCiAKQEAgLTEzNiw4ICsxMzYsOCBAQCBjbGFz
cyBEcmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSdW5Mb29wOjpUaW1lcjxEcmF3aW5nQXJlYVByb3h5PiBtX3Zp
ZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IG1fdmlld0V4cG9zZWRSZWN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4g
bV9sYXN0U2VudFZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IG1fbGFzdFNlbnRWaWV3RXhwb3NlZFJlY3Q7CiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggZThhY2Q5NzE0NDcyNGM4YjFiNWMyNmJhZmYzNmRhOWZhYTQ5ODk4Yi4uN2FmODU0
MjE3M2Q1YmVjNjRkNjc1NGQwMGUyNGM4NDlkNDY4NGQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNv
Y2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBXZWJTb2Nr
ZXRTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5k
bGUmKQogICAgIG1fc2VydmVyLT5kaWRDbG9zZVdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24odGhp
cyk7CiB9CiAKLXZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVNvY2tl
dFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciogZGF0YSwgT3B0aW9u
YWw8c2l6ZV90PiBsZW5ndGgpCit2b2lkIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OmRpZFJl
Y2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRh
dGEsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGgpCiB7CiAgICAgLy8gRWFjaCBkaWRSZWNl
aXZlRGF0YSBjYWxsIGFkZHMgbW9yZSBkYXRhIHRvIG91ciBidWZmZXIuCiAgICAgLy8gV2UgY2xl
YXIgdGhlIGJ1ZmZlciB3aGVuIHdlIGhhdmUgaGFuZGxlZCBkYXRhIGZyb20gaXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNl
cnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGEyZDQxMTkzNTBmZjk4NmYxNTdl
MDI5Y2JiZGFkNGY1N2RmYTkwYmIuLjFlYWQ1MDFhOTg3MDdlNjU1NWM0MjE1MzA0OWY3YTJmNjhj
NTZmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCkBAIC02OSw3
ICs2OSw3IEBAIGNsYXNzIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CiAgICAgLy8gU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgZGlkT3BlblNvY2tldFN0cmVhbShX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZENsb3Nl
U29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxl
JiwgY29uc3QgY2hhciogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlJiwgY29uc3QgY2hhciogZGF0YSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGUmLCBzaXplX3QgYnVmZmVyZWRBbW91bnQpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bFNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1FcnJvciYpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCBmYTNmYTZlMWQxODkzMGYyNDAxODhmZGU4Mjg0OTVlOTAyMThiMTlmLi43
YWVlZjk2MmQ4NmQ5ZmM3OWFkYzEyNGRhMTdjMzkyZTQ3MGYwZTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAKQEAgLTEyNCwxNyArMTI0LDE3IEBAIHZvaWQgTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQogICAgIGRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHRp
bWVfdD4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVDcmVhdGlvblRpbWUo
ZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6IE9wdGlvbmFsPHRpbWVfdD4oTnVsbG9wdCk7CisgICAg
cmV0dXJuIGdldEZpbGVDcmVhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6IHN0ZDo6
b3B0aW9uYWw8dGltZV90PihzdGQ6Om51bGxvcHQpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dGlt
ZV90PiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwogICAgIGlmICghZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0aW1lOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuaAppbmRleCAwNGY2MWZkMGJkMDZkZTViMDY3MGQ2MzgyZGFlZmYyZTdh
Mzk5ZGZkLi5mZjlmYzE5Y2JhNzdkNjVkZDk4YWE0NWM4MjkwNWY2ZDMyZTU2OWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtNjIsOCArNjIsOCBAQCBjbGFzcyBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9y
YWdlRGF0YQogCiAgICAgc3RydWN0IE9yaWdpbkRldGFpbHMgewogICAgICAgICBTdHJpbmcgb3Jp
Z2luSWRlbnRpZmllcjsKLSAgICAgICAgT3B0aW9uYWw8dGltZV90PiBjcmVhdGlvblRpbWU7Ci0g
ICAgICAgIE9wdGlvbmFsPHRpbWVfdD4gbW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx0aW1lX3Q+IGNyZWF0aW9uVGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx0aW1l
X3Q+IG1vZGlmaWNhdGlvblRpbWU7CiAgICAgfTsKICAgICBWZWN0b3I8T3JpZ2luRGV0YWlscz4g
b3JpZ2luRGV0YWlscygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuY3BwCmluZGV4IGYyYTI4OTg5YjIyMzc4ZDAyZWM5YjY1OWEyNDZlYTc1YzZm
ZWIwNDYuLjM2OGQ5MmE5YmM3N2FiNjkwMzM2YTRiZDY3ZTgwZjg5NmE4NWU4ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC00MTUs
NyArNDE1LDcgQEAgQmFja0ZvcndhcmRMaXN0U3RhdGUgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNr
Rm9yd2FyZExpc3RTdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW8KICAgICB9CiAKICAgICBpZiAoYmFj
a0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuaXNFbXB0eSgpKQotICAgICAgICBiYWNrRm9yd2FyZExp
c3RTdGF0ZS5jdXJyZW50SW5kZXggPSBOdWxsb3B0OworICAgICAgICBiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAoYmFja0Zvcndh
cmRMaXN0U3RhdGUuaXRlbXMuc2l6ZSgpIDw9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJ
bmRleC52YWx1ZSgpKQogICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgg
PSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcy5zaXplKCkgLSAxOwogCkBAIC00MzIsNyArNDMy
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUoQmFja0Zvcndh
cmRMaXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3QKICAgICAgICAgaXRlbXMudW5jaGVja2VkQXBw
ZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpKTsKICAgICB9CiAgICAgbV9oYXNDdXJyZW50
SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleDsKLSAgICBtX2N1cnJl
bnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZU9yKDApOwor
ICAgIG1fY3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZh
bHVlX29yKDApOwogICAgIG1fZW50cmllcyA9IFdURk1vdmUoaXRlbXMpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDJiNGIwNTFkZjgyYjc1MjIx
ZWY0NWEwMjQzNzI3NmM5MTEyYTE4MmYuLmFmMmE3YjNiNzFhNDZkYTdlYTM1ZGRhZGE2N2RkYTU0
NDFkYTA5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0zMjY0LDcgKzMyNjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50
Q2FsbGJhY2tzKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxI
YXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVD
b250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkBAIC01
NTAzLDcgKzU1MDMsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICBpZiAobV9zY3JvbGxiYXJPdmVybGF5U3R5bGUpCiAg
ICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gbV9zY3JvbGxiYXJPdmVy
bGF5U3R5bGUudmFsdWUoKTsKICAgICBlbHNlCi0gICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlID0gTnVsbG9wdDsKKyAgICAgICAgcGFyYW1ldGVycy5zY3JvbGxiYXJPdmVy
bGF5U3R5bGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5k
c0JleW9uZFBhZ2UgPSBtX2JhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTsKICAgICBwYXJhbWV0
ZXJzLmxheWVySG9zdGluZ01vZGUgPSBtX2xheWVySG9zdGluZ01vZGU7CiAgICAgcGFyYW1ldGVy
cy5jb250cm9sbGVkQnlBdXRvbWF0aW9uID0gbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uOwpAQCAt
NjEzMCw3ICs2MTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdCZWhh
dmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKICAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZyks
IG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJT
dHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xs
YmFyU3R5bGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHls
ZSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlICYmICFzY3JvbGxiYXJTdHls
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjE0MCw3ICs2MTQwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXIKIAogICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc2Nyb2xsYmFyU3R5bGU7
CiAKLSAgICBXVEY6Ok9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2U7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlOwog
ICAgIGlmIChzY3JvbGxiYXJTdHlsZSkKICAgICAgICAgc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdl
ID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1
ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDIxZGI1
OTIwMTlhMDczYWU5ZjhlMTVkNWYyNzIxZTJmMWExYmY0MzUuLjVlZGI5NTdhMmM5YzRlMDAzN2Zl
NTQwYzZkZTY3OGZmMjgzMGY0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTEwMDYsOCArMTAwNiw4IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBzZXRTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKICAgICBX
ZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KIAotICAgIHZvaWQgc2V0T3Zl
cmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlPik7Ci0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5
bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlOyB9CisgICAgdm9pZCBzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+KTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gb3ZlcmxheVNjcm9sbGJhclN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KIAogICAgIGJvb2wgc2hv
dWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmVj
b3JkTmF2aWdhdGlvblNuYXBzaG90czsgfQogICAgIHZvaWQgc2V0U2hvdWxkUmVjb3JkTmF2aWdh
dGlvblNuYXBzaG90cyhib29sIHNob3VsZFJlY29yZFNuYXBzaG90cykgeyBtX3Nob3VsZFJlY29y
ZE5hdmlnYXRpb25TbmFwc2hvdHMgPSBzaG91bGRSZWNvcmRTbmFwc2hvdHM7IH0KQEAgLTExOTEs
NyArMTE5MSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBk
aWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
LCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFz
SW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTg3Nyw3ICsxODc3LDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
UGFnZT4KICAgICBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyOjpUb2tl
biBtX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnQ7CiAgICAg
ICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdC
ZWhhdmlvcjsKLSAgICBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
Y3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogCiAgICAgdWlu
dDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ3MGE4MGEzYTA3MDM2M2Y4ODBjNDdjZmNh
MWVhYWRkOGNiN2EwMWYuLjVmZDgwMzVjMzEyY2NmYTZiM2RjY2ViOTIzYWM0MWQwODI1ODgzNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMTI2LDcgKzEyNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsKQogICAgIERp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERpZENvbW1pdExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1l
VHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1
Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZENv
bW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90
IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29s
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1
cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5o
CmluZGV4IGU0YzhkNzVjOTJjMWNjMjY3YWRlOTkwMjU2Y2ZlMDI3ZTllZWMxZjQuLmZiMDMxMTlk
MzViZGQzMjZlOWJkNjI1MjNkOWIwNmQxOWY2YWQxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBAIC02
MSw3ICs2MSw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgICAgIHVpbnQ2NF90
IHRvdGFsU2l6ZTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdWludDY0X3Q+IHR5cGVTaXpl
czsKICAgICB9OwotICAgIE9wdGlvbmFsPFNpemU+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDxT
aXplPiBzaXplOwogCiAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
PiBvcmlnaW5zOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBjb29raWVIb3N0TmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAppbmRleCA1MDNjYTYwMzViMmQ2MzcxZmU3
MDMxYWZmYjQyNGU3YzUwYTE0YzYzLi5lY2RlMzRiNzBiMGMwMTM1ODhiOGUxZjI3YzFhMGY2NTNk
ODU1Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTM0
OCw3ICszNDgsNyBAQCB2b2lkIFdlYlZpZXc6OmRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHRhcmdldCwgY29uc3QgV2ViQ29yZQogCiBBZmZpbmVUcmFuc2Zvcm0g
V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJhbnNm
b3JtVG9TY2VuZSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSk7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Ub1NjZW5lKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKaW5kZXggMTQ5ZGUyYTE3OTk4NzRlOWI1ODQ3NmJi
ZGRhYWRmZjdiOTcwNmNmYy4uNzZhMzg5MTI1OGQ1MzkxOGJiNDFjZGVjYWVkYThhNzQ2YzJhNTQz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgT3B0aW9uYWw8aW50
PiBzX2RhbWFnZUV2ZW50QmFzZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gc19kYW1hZ2VF
dmVudEJhc2U7CiAKIGNsYXNzIFhEYW1hZ2VOb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoWERhbWFnZU5vdGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKaW5kZXggM2YwNTg1ZDUwYzMzMjJiODdhNDA4ZWIz
YzNmMDk3YjlkZjllYjNmMi4uY2I0OWJkNmEyNGM1N2Y5ZmNhZTc0MzQ2Zjc0NjViNzY1MTQzZDA2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNl
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNl
c0d0ay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1J
bml0aWFsaXplU3RvcmUoKQogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQog
ICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZv
cm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKICAgICAgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOwot
ICAgICAgICBPcHRpb25hbDxpbnQ+IGRhbWFnZUJhc2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiBkYW1hZ2VCYXNlOwogICAgICAgICBpZiAoIWRpc3BsYXkuc3VwcG9ydHNYQ29tcG9zaXRl
KCkgfHwgIWRpc3BsYXkuc3VwcG9ydHNYRGFtYWdlKGRhbWFnZUJhc2UpKQogICAgICAgICAgICAg
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggNmIwNDBhNTE1OTY4ZDRmMDQxNTQ4OTliMjEwYmY4N2VhYjgwNWQ3NS4uOTA4
ZjZmNTc3MDkzOTZkYTNhMWJmODQwOTc3OWYwYTRjNmNiYWNkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTMxODQsMTYgKzMxODQsMTYgQEAgLSAodm9pZClfZGlkSGFuZGxlS2V5RXZlbnQ6KFdlYklP
U0V2ZW50ICopZXZlbnQgZXZlbnRXYXNIYW5kbGVkOihCT09MKWV2ZW50V2FzSGEKICAgICBfdWlF
dmVudEJlaW5nUmVzZW50ID0gbmlsOwogfQogCi0tIChPcHRpb25hbDxGbG9hdFBvaW50Pilfc2Ny
b2xsT2Zmc2V0Rm9yRXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9uYWw8
RmxvYXRQb2ludD4pX3Njcm9sbE9mZnNldEZvckV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50CiB7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJTcGFjZUtleSA9IDB4MjA7CiAKICAgICBp
ZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTlNTdHJpbmcg
KmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczsKICAgICBpZiAoIWNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5sZW5ndGgpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgZW51bSBTY3JvbGxpbmdJbmNyZW1lbnQgeyBEb2N1bWVudCwgUGFnZSwgTGluZSB9OwogICAg
IGVudW0gU2Nyb2xsaW5nRGlyZWN0aW9uIHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07CkBAIC0z
MjQ1LDcgKzMyNDUsNyBAQCAtIChPcHRpb25hbDxGbG9hdFBvaW50Pilfc2Nyb2xsT2Zmc2V0Rm9y
RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQKICAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBdID09IGtXZWJTcGFjZUtleSkKICAgICAgICAgcmV0
dXJuIGNvbXB1dGVPZmZzZXQoUGFnZSwgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZs
YWdNYXNrU2hpZnQpID8gVXAgOiBEb3duKTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihXZWJJ
T1NFdmVudCAqKWV2ZW50IGlzQ2hhckV2ZW50OihCT09MKWlzQ2hhckV2ZW50CkBAIC0zMjYyLDcg
KzMyNjIsNyBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooV2ViSU9TRXZlbnQgKilldmVu
dCBpc0NoYXJFdmVudDooQk9PTClpc0NoYXJFdmVudAogICAgIGlmICghY29udGVudEVkaXRhYmxl
ICYmIGV2ZW50LmlzVGFiS2V5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBpZiAoT3B0aW9u
YWw8RmxvYXRQb2ludD4gc2Nyb2xsT2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2ZW50
OmV2ZW50XSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHNjcm9sbE9mZnNl
dCA9IFtzZWxmIF9zY3JvbGxPZmZzZXRGb3JFdmVudDpldmVudF0pIHsKICAgICAgICAgW193ZWJW
aWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KnNjcm9sbE9mZnNldF07CiAgICAgICAgIHJldHVy
biBZRVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDAxNmM2YjkzMzQ2NTNjZmVhMjI5
MGIyMTY1MDBhYjAwOTIxYmRlNmYuLjE3ZjY2YjcxNzc5YzA1NDljZjY4YWUyODE2NTgxOGE3Mjlk
NjYzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vz
c2lvblN0YXRlQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xl
Z2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTI4Miw4ICsyODIsOCBAQCBzdGF0aWMgdm9p
ZCBlbmNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5RGF0YUVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEhUVFBCbwogICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogCiAgICAgICAgIGVuY29k
ZXIgPDwgZWxlbWVudC5maWxlU3RhcnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxl
TGVuZ3RoLnZhbHVlT3IoLTEpOwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1
ZV9vcigtMSk7CisgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lLnZhbHVlX29yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6
OkJsb2I6CkBAIC03MDQsMTMgKzcwNCwxMyBAQCBjbGFzcyBIaXN0b3J5RW50cnlEYXRhRGVjb2Rl
ciB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYXV0byBvcGVyYXRv
cj4+KE9wdGlvbmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQorICAgIGF1
dG8gb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXIm
Pjo6dHlwZQogICAgIHsKICAgICAgICAgdWludDMyX3QgdW5kZXJseWluZ0VudW1WYWx1ZTsKICAg
ICAgICAgKnRoaXMgPj4gdW5kZXJseWluZ0VudW1WYWx1ZTsKIAogICAgICAgICBpZiAoIWlzVmFs
aWQoKSB8fCAhaXNWYWxpZEVudW0oc3RhdGljX2Nhc3Q8VD4odW5kZXJseWluZ0VudW1WYWx1ZSkp
KQotICAgICAgICAgICAgdmFsdWUgPSBOdWxsb3B0OworICAgICAgICAgICAgdmFsdWUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8
VD4odW5kZXJseWluZ0VudW1WYWx1ZSk7CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBjbGFzcyBIaXN0
b3J5RW50cnlEYXRhRGVjb2RlciB7CiAKIHN0YXRpYyB2b2lkIGRlY29kZUZvcm1EYXRhRWxlbWVu
dChIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgZGVjb2RlciwgSFRUUEJvZHk6OkVsZW1lbnQmIGZv
cm1EYXRhRWxlbWVudCkKIHsKLSAgICBPcHRpb25hbDxGb3JtRGF0YUVsZW1lbnRUeXBlPiBlbGVt
ZW50VHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvcm1EYXRhRWxlbWVudFR5cGU+IGVsZW1lbnRU
eXBlOwogICAgIGRlY29kZXIgPj4gZWxlbWVudFR5cGU7CiAgICAgaWYgKCFlbGVtZW50VHlwZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgc3RhdGljIGJvb2wgZGVjb2Rl
VjFTZXNzaW9uSGlzdG9yeShDRkRpY3Rpb25hcnlSZWYgc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5
LCBCYWMKICAgICBhdXRvIGN1cnJlbnRJbmRleE51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51
bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LCBz
ZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleEtleSkpOwogICAgIGlmICghY3VycmVudEluZGV4TnVt
YmVyKSB7CiAgICAgICAgIC8vIE5vIGN1cnJlbnQgaW5kZXggbWVhbnMgdGhlIGRpY3Rpb25hcnkg
cmVwcmVzZW50cyBhbiBlbXB0eSBzZXNzaW9uLgotICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0
ZS5jdXJyZW50SW5kZXggPSBOdWxsb3B0OworICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5j
dXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRl
Lml0ZW1zID0geyB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5oCmluZGV4IGYxNjFlNDg0ZDRkYWQyYzYyYTZmODQ4OGU4ODZlMjljZmZiZDY4
N2IuLjYzMTkwNDgyMWU1Njc2YjIxMmU3Zjk3Y2Y4NTg3MjlmNzE1N2RjNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5oCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkgZmluYWwgOiBwdWJsaWMgRHJhd2luZ0FyZWFQcm94eSB7CiAgICAg
dm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2
b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBmbG9hdCBpbmRpY2F0b3JTY2Fs
ZShXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkubW0KaW5kZXggNTY1NGJmOGI1YjFkYzZkZmFmODlkNzEwYmVlZDNkMTk3ODA1OTk5
ZS4uYTAyM2JlMjMyZTAyMDcyODM3NjMyM2NlNTBkZDg4OTY3YjdlZGEzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6YWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3Qg
bGF5ZXJJCiBzdGF0aWMgY29uc3QgZmxvYXQgaW5kaWNhdG9ySW5zZXQgPSAxMDsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6c2V0Vmll
d0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0
KQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJl
Y3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsK
ICAgICBEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3Qodmlld0V4cG9zZWRSZWN0
KTsKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvclBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5jcHAKaW5kZXggMWZmNTliZWRjZTMzZjc1MWQ5MzA4M2FiMDU4MDZlM2Q2OWQzZTg1NS4uMGRk
ZjYzZmQyM2VlYmQ5ODI3ZmM4MzBhMWQyZjFjYmRmZTVhNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcApAQCAtMTE3LDE3ICsxMTcsMTcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6
OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXIKICAg
ICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKHBheW1lbnRNZXJjaGFudFNlc3Npb24pKTsKIH0KIAot
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRl
bXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdU
b3RhbEFuZEl0ZW1zKQogewogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc3RhdHVzKSwgbmV3VG90YWxBbmRJdGVtcykpOwogfQogCi12b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2Vi
Q29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2Rz
LCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5l
d1RvdGFsQW5kSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMg
c3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0
aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKIHsKICAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGF0dXMpLCBu
ZXdTaGlwcGluZ01ldGhvZHMsIG5ld1RvdGFsQW5kSXRlbXMpKTsKIH0KIAotdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRl
bXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGlu
ZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogewogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKG5ld1RvdGFsQW5kSXRlbXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDM2YjJh
YTQ3MTdmNjJlNjIxY2RmOTk0OTNmNGEyMTk2ZjgyZjk0ZGYuLjIzOWNlNzczOTA3Mzk0NzE3MWRk
MDlhOGFkZWQ2NGY0ZjRjZTUxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTksOSArNTks
OSBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcgogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hp
cHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRl
UGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdU
b3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0
U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFu
ZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhYm9ydFBheW1l
bnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQppbmRleCA1ZWRl
NTZlZWU0MGFjZmRiOTkwMTE5ZGU3YWNlOTE4ZTY3OGJjNjY2Li5mOTYxYTM1OTE1NDExNTcxNDc4
ZDQwNzQ0NDIxMzQ0YWY5YTA4YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCkBAIC0xMTk2
LDcgKzExOTYsNyBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1Bs
dWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiBJbnRQb2ludCBQREZQbHVnaW46OmNv
bnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAog
ewogICAgIEludFBvaW50IHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyhwb2ludC54KCksIHNpemUo
KS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9p
bnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9p
bnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogRmxvYXRSZWN0IFBERlBsdWdpbjo6Y29udmVy
dEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdApAQCAtMTIw
Nyw3ICsxMjA3LDcgQEAgRmxvYXRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9T
Y3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gRmxvYXRS
ZWN0KCk7CiAKICAgICBGbG9hdFBvaW50IG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMocmVjdC54
KCksIHNpemUoKS5oZWlnaHQoKSAtIHJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7Ci0gICAgRmxv
YXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoRmxvYXRS
ZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJlY3Quc2l6ZSgpKSk7CisgICAgRmxvYXRS
ZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KEZsb2F0UmVj
dChvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0LnNpemUoKSkpOwogCiAgICAgcmV0dXJu
IGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RW
aWV3Q29vcmRpbmF0ZXMpKTsKIH0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIEludFJlY3QgUERGUGx1
Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAK
ICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsK
LSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1Bs
dWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVj
dChib3VuZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9y
b290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUmVjdChib3VuZHMpOwogICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9T
Y3JlZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAK
QEAgLTEyMzAsNyArMTIzMCw3IEBAIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7Ci0gICAgbV9yb290Vmlld1RvUGx1Z2lu
VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1
Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpOwogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNpemU6cGx1Z2luU2l6ZV07
CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGRiNGVjM2U0MTI5OWY2OTI5
NjFmNzRkZDIxNmM5N2M2ZGE0NjEyMzUuLjdlZmEwNzQzNDQzNTYxOTgyMjQxMDIwMDFmOTc5NTgw
NGZhMmYzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCkBAIC05MzIsNyArOTMyLDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJv
dW5kc09uU2NyZWVuKCkgY29uc3QKIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKQogewogICAgIG1fcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07Ci0gICAgbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNm
b3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpOwogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7CiAKICAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggN2NlMTYx
ZmNkZmNkN2FjMmE1Mjk3MDgzNDFiMjEyZWFlNGU4NDJiYS4uZjNiMDBlODY1OWI1MDFjYWZmMjBj
OTRmY2FmYmU4YmZkZTIyYTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBQbHVnaW5W
aWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihyZXF1ZXN0LT5hbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBOdWxsb3B0KTsKKyAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93UG9wdXBzKCkg
PyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIEZpcnN0LCB0cnkgdG8gZmluZCBh
IHRhcmdldCBmcmFtZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCku
ZmluZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50YXJnZXQoKSk7CkBAIC0xNTEzLDcgKzE1
MTMsNyBAQCBib29sIFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29u
c3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaQogICAgIC8vIHByb3RlY3QgdGhlIHBsdWct
aW4gdmlldyBmcm9tIGRlc3RydWN0aW9uLgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2lu
UHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9ucFJ1bnRpbWVPYmplY3RNYXApOwogCi0gICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlv
bmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDog
TnVsbG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxv
d1BvcHVwcyA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiBtX25wUnVudGlt
ZU9iamVjdE1hcC5ldmFsdWF0ZShucE9iamVjdCwgc2NyaXB0U3RyaW5nLCByZXN1bHQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuY3BwCmluZGV4IGM5OTMyNmRmMTIzZTg1MzlmNzZjNzNjMGEzNDg2
ODg0OTA0ZDc5NDkuLjlmZGI4NjU0ODVhMjA5NGJhNjk0ZTg2MGNmOWM1ODBlOTFlNWViMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZv
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYgcGFn
ZSkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2lu
TG9hZENsaWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50
UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbklu
Zm8mIGluZm8pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQ
b2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhv
c3QoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJiBpbmZvKSBj
b25zdAogewogICAgIFN0cmluZyBob3N0VG9Mb29rVXAgPSBob3N0OwogICAgIFN0cmluZyBpZGVu
dGlmaWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwpAQCAtMTgxLDcgKzE4MSw3IEBAIE9wdGlv
bmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRl
cjo6cGx1Z2luTG9hZENsaWVuCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHBvbGljaWVzQnlJ
ZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byYgcG9saWNpZXNCeUlkZW50aWZpZXIgPSBwb2xpY2llc0J5SWRlbnRpZmllckl0
ZXJhdG9yLT52YWx1ZTsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBs
dWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENs
aWVuCiAgICAgfQogCiAgICAgaWYgKGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9PSBwb2xpY2ll
c0J5SWRlbnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiB2ZXJzaW9uc1RvUG9saWNpZXMgPSBpZGVu
dGlmaWVyUG9saWN5SXRlcmF0b3ItPnZhbHVlOwogCkBAIC0yMDksNyArMjA5LDcgQEAgT3B0aW9u
YWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
OjpwbHVnaW5Mb2FkQ2xpZW4KICAgICB9CiAKICAgICBpZiAocG9saWN5SXRlcmF0b3IgPT0gdmVy
c2lvbnNUb1BvbGljaWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBwb2xpY3lJdGVyYXRvci0+dmFsdWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggN2E3MzJlZmU3MDYwYTIzZjZlOTFlN2UwNjczZDE3
YmM4YmUyYzRiYS4uZjc2ZDNmNTg1OGVlYTI2YzJkZWU3NmIxMjEzNjI5YmYyM2Q2ZjBmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Q
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVn
aW5JbmZvUHJvdmlkZXIuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBXZWJQbHVnaW5JbmZvUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luSW5mb1Byb3ZpZGVyIHsKICNlbmRp
ZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBwbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZv
JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpQbHVnaW5JbmZvJikgY29uc3Q7CiAgICAgU3RyaW5nIGxvbmdlc3RNYXRjaGVkV2ls
ZGNhcmRIb3N0Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0OwogICAgIGJvb2wgcmVw
bGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCmluZGV4IDFjYTdmNDQ5N2E3OThiM2U1ZGVkNGFlZWIxOGVhY2MyZjE5YWE3NzEuLjI4Zjc1
N2ZmZTBiNDM0NmYyNjM3OTlmMDQ3Zjc2MTQ3YjY4NDRjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6
Ci0gICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgs
IGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcihCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZh
bHVlT3IoaW52YWxpZEZpbGVUaW1lKCkpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRG
aWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmls
ZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29yKGludmFsaWRGaWxlVGltZSgpKSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBl
OjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGE0YjZlOTA5ZDAwMGVjZDdhMWU1
NjY4ZDZhZWNhOWI2MmIyNzc5ZGUuLjFiOWY5YmFiZDEwNzE2MzBjOTdkY2FjYjg0OWViZTM5OGQx
MzA4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShTY3Jv
bGxiYXJTdHlsZSBuZXdTdHlsZQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKHN0YXRpY19jYXN0PGludDMy
X3Q+KG5ld1N0eWxlKSkpOwogfQogCi1XVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gV2ViQ2hyb21lQ2xpZW50OjpwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKQorc3Rk
OjpvcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IFdlYkNocm9tZUNsaWVudDo6cHJlZmVy
cmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkKIHsKICAgICByZXR1cm4gbV9wYWdlLT5zY3JvbGxi
YXJPdmVybGF5U3R5bGUoKTsgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA4Yzg5YmVhYjNm
YTRkNWY0MmFjNTk5NDg5N2Q2OGExZGNjMDAxNTIyLi4xODI2YjczYTY0YWJlYjZiMTgxZTY1N2U5
ZWI5MGM5YTg3Mzc2MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI4MCw3ICsyODAsNyBA
QCBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsK
ICAgICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHls
ZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAK
LSAgICBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVy
cmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlT
dHlsZSgpIG92ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGI4
ZWQ5ZWIyYTIwZjU1MGUzOGY2NDg4YTQ5MDZkYzUyM2JjMjI0NDcuLjhhYmY1NGVjZjc2ODgyMGY3
OGQzMDUwODAyZThhMjZhYzRlZmI3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGkKICAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUuc3RyaW5nKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRp
b25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCkKIHsKICAgICBXZWJQ
YWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTQ1
NCw3ICs0NTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYQogICAgIHdlYlBhZ2UtPnNhbmRi
b3hFeHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwog
CiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRl
KFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3Vt
ZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JD
b21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsg
cmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3Vt
ZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
LmdldCgpKS5nZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZGQzMzBkN2ZkZWFlZTJlZjA4
NjQ4NmFjZDRiMTlhMWVkZGRlMWQ0ZC4uMTdkZGE3NjEwZWRhNTIwN2E3YjgwZDQ2MzQ3ZGRiMjhh
ZmNlOWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTYsNyArOTYsNyBA
QCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudCB7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9u
YWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNw
YXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRl
bnQ+KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDc4M2Fk
ZWMzNWYyY2YzODRlY2JkYzQ2MGU2NzcwZTk0ZDQwODkwYTcuLjhlNGQwOWM0ODQzYjFhYzEzNGE1
OTJiZWRhOGE2OTlkYzY3ZDc5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC04OCw4ICs4OCw4IEBAIGNsYXNzIERyYXdpbmdBcmVh
IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICB2aXJ0dWFsIHZvaWQgbWFpbkZy
YW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QoT3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PikgPSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4pID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2
aWV3RXhwb3NlZFJlY3QoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0
ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCAvKmxheWVySUQqLywgY29uc3QgU3RyaW5nJiAv
KmtleSovLCBkb3VibGUgLypzdGFydFRpbWUqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IC8qbGF5ZXJJRCovLCBjb25zdCBTdHJpbmcm
IC8qa2V5Ki8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4IDg0ODMyYjMzMzRhYzUxZTZhNmQx
Y2UxMjUzYWRhNzZjNjA0ZGNkZGIuLmIwNzZmMzRjMWFjNjhjMzlkMGQ4MDBmM2VhYWM0MDY1ZjA1
NzBlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4g
RHJhd2luZ0FyZWEgewogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1Np
emUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHksIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxl
RmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogICAgIFNldENvbG9yU3BhY2Uoc3RydWN0
IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKLSAgICBTZXRWaWV3RXhwb3NlZFJl
Y3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCisgICAgU2V0
Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QpCiAKICAgICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZTliYmIyYmE3OTk0MTBiM2IwNjQ2NDhj
MTQ5ODU5OWEzZGUxMTlmMy4uZTE4YTk3ODlmMWFkMzY4N2ExYWM5YmMxMDRiNDRkYmQyYjUwYjg1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC00MjAsNyArNDIwLDcgQEAgQ2VydGlmaWNhdGVJbmZvIFdlYkZyYW1lOjpjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdAogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJ
bmZvKCkudmFsdWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pOwor
ICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jZXJ0
aWZpY2F0ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pOwogfQogCiBT
dHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTExYTcwMWE1OTVmNDFiM2I5YzcwNmMx
YWQ5NWVkYmJiODJiZWUzMy4uMTdhZTIxM2MyNTMzMDFjZjE4YzY1OGY5NGRkNjAxYTRiOGI3YTc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNTA3LDcgKzUwNyw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIGlmIChwYXJhbWV0
ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSkKICAgICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5
bGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHBhcmFtZXRlcnMuc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlLnZhbHVlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JvbGxiYXJP
dmVybGF5U3R5bGUgPSBXVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4oKTsKKyAg
ICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBzdGQ6Om9wdGlvbmFsPFNjcm9sbGJhck92
ZXJsYXlTdHlsZT4oKTsKIAogICAgIHNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShwYXJh
bWV0ZXJzLmJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSk7CiAKQEAgLTU0MTksMTIgKzU0MTks
MTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlu
bmluZykKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsUGlubmluZ0Jl
aGF2aW9yKG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5
bGUpCit2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIHsKICAgICBpZiAoc2Nyb2xsYmFyU3R5bGUpCiAg
ICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
c2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gV1RGOjpPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5
bGU+KCk7CisgICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RkOjpvcHRpb25hbDxT
Y3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkt
PnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUzNmFiNWYxNDhkNTc1NWEzMjll
ZGY3MDVjNDdlNGQxYmQ5OTY3ZmQuLjAxM2FmNTQzMDI0NjU5ZDgxMmVlYjUxYjU5YjYwOGZhMDM5
ZmJiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtOTA1LDggKzkwNSw4IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29yZTo6
U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZp
b3IodWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yICovIHBpbm5pbmcp
OwogCi0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9
Ci0gICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJf
dCAvKiBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KKyAg
ICB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90IC8q
IFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZSAqLz4gc2Nyb2xsYmFyU3R5bGUpOwogCiAg
ICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJD
b3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRl
cihXZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CkBAIC0xNDgxLDcgKzE0ODEs
NyBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIHVuc2lnbmVkIG1fbWF4aW11bVJlbmRl
cmluZ1N1cHByZXNzaW9uVG9rZW47CiAgICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0Jl
aGF2aW9yIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOwotICAgIFdURjo6T3B0aW9uYWw8V2ViQ29y
ZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJP
dmVybGF5U3R5bGU7CiAKICAgICBib29sIG1fdXNlQXN5bmNTY3JvbGxpbmc7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggYTMxYzY0NmIzZTJkNzY2ZGM0ZWE3MzMyODg1MzlkODk0MjEwMDU3ZS4uODU2YjAxZWY3
YjQ3YmU2YjcxOTFhOGMzZjE0NDA0YTkzYmNmNjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQwMiw3ICs0
MDIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAg
ICAgU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCi0gICAgU2V0U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKE9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKKyAg
ICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xs
YmFyU3R5bGUpCiAKICAgICBHZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IGYzNDY1ZDJiNzA1ODY4
NGI0OTI0MTkyZTdjNTZjMWQ1YmM0N2FjZjAuLmZkMDcxNDhmYTM1ZjFhM2JiYWMzMmRkYTI4Njlj
OTM4NmIwOTA0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAgLTgz
LDggKzgzLDggQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJh
d2luZ0FyZWEsIHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0wKICAgICB2b2lkIGZvcmNlUmVwYWlu
dCgpIG92ZXJyaWRlOwogICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
c2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0OyB9CiAKICAgICB2b2lkIGFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5nJiBr
ZXksIGRvdWJsZSBzdGFydFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmlt
YXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRl
OwpAQCAtMTQxLDggKzE0MSw4IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIDog
cHVibGljIERyYXdpbmdBcmVhLCBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMCiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fdmlld1NpemU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IG1fdmlld0V4cG9zZWRSZWN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4g
bV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7CiAKICAgICBXZWJDb3JlOjpUaW1l
ciBtX2xheWVyRmx1c2hUaW1lcjsKICAgICBib29sIG1faXNGbHVzaGluZ1N1c3BlbmRlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDQxZTJiZTQ2MzI4MTJhMTg2
NWRjNTBmNTJjY2I0Njk2ODU1ZTdlYjYuLjJjOGU5MDlkZjMzZGI3YjkyZmYzNzk3MDNlY2NhZDY0
ZjQ2OTVjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMjMw
LDcgKzIzMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjY2VsZXJhdGVk
QW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIGNvCiAgICAgbV9yZW1vdGVMYXllclRy
ZWVDb250ZXh0LT5hbmltYXRpb25EaWRFbmQobGF5ZXJJRCwga2V5KTsKIH0KIAotdm9pZCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRS
ZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgbV92aWV3RXhwb3NlZFJlY3QgPSB2aWV3RXhw
b3NlZFJlY3Q7CiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGFhMjIwZmMxZjEzODRkMjdiNDFiZDky
YzA0ZThjZTExODUwNmZkMDYuLjJkN2EwODJlMWY1OTIzNDQwNTk0YzFhYjVlNTYyMDBmZDkzOTc1
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTcyLDgg
KzcyLDggQEAgY2xhc3MgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJh
d2luZ0FyZWEsIFdlYkNvcmU6OkxheWVyRmx1c2hTY2gKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1haW5G
cmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBv
c2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJl
Y3Q7IH0KKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRS
ZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGVk
Vmlld0V4cG9zZWRSZWN0OyB9CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNTY3JvbGxpbmcoKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTEzNSw4ICsxMzUsOCBAQCBjbGFzcyBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSA6IHB1YmxpYyBEcmF3aW5nQXJlYSwgV2ViQ29yZTo6
TGF5ZXJGbHVzaFNjaAogCiAgICAgYm9vbCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQ7CiAKLSAgICBP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwotICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJl
Y3Q7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fbGFzdFNlbnRJbnRyaW5zaWNDb250ZW50U2l6
ZTsKICAgICBib29sIG1faW5VcGRhdGVHZW9tZXRyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGM4Mzg1ODE5NTZiYWI0NWExOWZkYzVhNDM4NTRlMzZj
M2I2YmQ0MTQuLjQyNzhhMzZiYjViOGM2MGU3OGRjZTIyYzNlODQ5M2NjZDE4NjYyZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNDk5LDcgKzQ5OSw3
IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkK
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpuaWwg
dXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX2hvc3RpbmdMYXll
ci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3
RXhwb3NlZFJlY3QpCiB7CiAgICAgbV92aWV3RXhwb3NlZFJlY3QgPSB2aWV3RXhwb3NlZFJlY3Q7
CiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJkOWY1YjBkNTgyYzYxM2Q3NjIzZTVkZTAw
NDFmN2I5MzVjMzlkYWQuLjliNDMyY2I0OTE5NTllNzUwOGUxNmY3ZjczNjAwODcwZTkxOTMwZDcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0xMS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1w
bGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFBhcnNl
SFRNTEludGVnZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdFBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tS
ZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKwogMjAxNi0xMS0wMiAgT2xpdmllciBCbGluICA8b2xp
dmllci5ibGluQHNvZnRhdGhvbWUuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBsaWJnY3J5cHQg
aW5zdGVhZCBvZiBHbnVUTFMgZm9yIENyeXB0b0RpZ2VzdCBhbmQgU3VidGxlQ3J5cHRvIEhNQUMg
aW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L09wdGlvbmFsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNw
cAppbmRleCBhMDcxNWZkNjJmZTc2YzEwMmM0NDNhMWM3NzQ2ZjZkNGI4OGM3NGJiLi5hNzA4ODFm
MzVjOTgyNzA3ZDg3MzZkNjkxY2RhYTJmNzcwOWUyMGVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogVEVTVChXVEZfT3B0aW9uYWwsIERpc2VuZ2FnZWQpCiB7CiAgICAgewot
ICAgICAgICBPcHRpb25hbDxpbnQ+IG9wdGlvbmFsOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gb3B0aW9uYWw7CiAKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9w
dGlvbmFsKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBPcHRpb25hbDxpbnQ+IG9wdGlvbmFs
IHsgTnVsbG9wdCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gb3B0aW9uYWwgeyBzdGQ6
Om51bGxvcHQgfTsKIAogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0
aW9uYWwpKTsKICAgICB9CkBAIC00Niw3ICs0Niw3IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBEaXNl
bmdhZ2VkKQogCiBURVNUKFdURl9PcHRpb25hbCwgRW5nYWdlZCkKIHsKLSAgICBPcHRpb25hbDxp
bnQ+IG9wdGlvbmFsIHsgMTAgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gb3B0aW9uYWwgeyAx
MCB9OwogCiAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAg
ICBFWFBFQ1RfRVEoMTAsIG9wdGlvbmFsLnZhbHVlKCkpOwpAQCAtNjQsNyArNjQsNyBAQCBURVNU
KFdURl9PcHRpb25hbCwgRGVzdHJ1Y3RvcikKICAgICB9OwogCiAgICAgewotICAgICAgICBPcHRp
b25hbDxBPiBvcHRpb25hbCB7IEluUGxhY2UgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxBPiBv
cHRpb25hbCB7IHN0ZDo6aW5fcGxhY2UgfTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNf
Y2FzdDxib29sPihvcHRpb25hbCkpOwogICAgIH0KQEAgLTc1LDggKzc1LDggQEAgVEVTVChXVEZf
T3B0aW9uYWwsIERlc3RydWN0b3IpCiBURVNUKFdURl9PcHRpb25hbCwgQ2FsbGJhY2spCiB7CiAg
ICAgYm9vbCBjYWxsZWQgPSBmYWxzZTsKLSAgICBPcHRpb25hbDxpbnQ+IGE7Ci0gICAgaW50IHJl
c3VsdCA9IGEudmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gYTsK
KyAgICBpbnQgcmVzdWx0ID0gdmFsdWVPckNvbXB1dGUoYSwgWyZdIHsKICAgICAgICAgY2FsbGVk
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIDMwMDsKICAgICB9KTsKQEAgLTg1LDcgKzg1LDcgQEAg
VEVTVChXVEZfT3B0aW9uYWwsIENhbGxiYWNrKQogCiAgICAgYSA9IDI1MDsKICAgICBjYWxsZWQg
PSBmYWxzZTsKLSAgICByZXN1bHQgPSBhLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgcmVzdWx0
ID0gdmFsdWVPckNvbXB1dGUoYSwgWyZdIHsKICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKICAgICAg
ICAgcmV0dXJuIDMwMDsKICAgICB9KTsKQEAgLTk1LDIyICs5NSwyMiBAQCBURVNUKFdURl9PcHRp
b25hbCwgQ2FsbGJhY2spCiAKIFRFU1QoV1RGX09wdGlvbmFsLCBFcXVhbGl0eSkKIHsKLSAgICBP
cHRpb25hbDxpbnQ+IHVuZW5nYWdlZDE7Ci0gICAgT3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQxOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiB1bmVuZ2FnZWQyOwogCi0gICAgT3B0aW9uYWw8aW50PiBlbmdhZ2VkMSB7IDEgfTsKLSAgICBP
cHRpb25hbDxpbnQ+IGVuZ2FnZWQyIHsgMiB9OwotICAgIE9wdGlvbmFsPGludD4gZW5nYWdlZHgy
IHsgMiB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBlbmdhZ2VkMSB7IDEgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGludD4gZW5nYWdlZDIgeyAyIH07CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVu
Z2FnZWR4MiB7IDIgfTsKIAogICAgIEVYUEVDVF9UUlVFKHVuZW5nYWdlZDEgPT0gdW5lbmdhZ2Vk
Mik7CiAgICAgRVhQRUNUX0ZBTFNFKGVuZ2FnZWQxID09IGVuZ2FnZWQyKTsKICAgICBFWFBFQ1Rf
RkFMU0UoZW5nYWdlZDEgPT0gdW5lbmdhZ2VkMSk7CiAgICAgRVhQRUNUX1RSVUUoZW5nYWdlZDIg
PT0gZW5nYWdlZHgyKTsKIAotICAgIEVYUEVDVF9UUlVFKHVuZW5nYWdlZDEgPT0gTnVsbG9wdCk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGVuZ2FnZWQxID09IE51bGxvcHQpOwotICAgIEVYUEVDVF9UUlVF
KE51bGxvcHQgPT0gdW5lbmdhZ2VkMSk7Ci0gICAgRVhQRUNUX0ZBTFNFKE51bGxvcHQgPT0gZW5n
YWdlZDEpOworICAgIEVYUEVDVF9UUlVFKHVuZW5nYWdlZDEgPT0gc3RkOjpudWxsb3B0KTsKKyAg
ICBFWFBFQ1RfRkFMU0UoZW5nYWdlZDEgPT0gc3RkOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfVFJV
RShzdGQ6Om51bGxvcHQgPT0gdW5lbmdhZ2VkMSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0ZDo6bnVs
bG9wdCA9PSBlbmdhZ2VkMSk7CiAKICAgICBFWFBFQ1RfVFJVRShlbmdhZ2VkMSA9PSAxKTsKICAg
ICBFWFBFQ1RfVFJVRSgxID09IGVuZ2FnZWQxKTsKQEAgLTEyMCwyMiArMTIwLDIyIEBAIFRFU1Qo
V1RGX09wdGlvbmFsLCBFcXVhbGl0eSkKIAogVEVTVChXVEZfT3B0aW9uYWwsIEluZXF1YWxpdHkp
CiB7Ci0gICAgT3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQxOwotICAgIE9wdGlvbmFsPGludD4gdW5l
bmdhZ2VkMjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gdW5lbmdhZ2VkMTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludD4gdW5lbmdhZ2VkMjsKIAotICAgIE9wdGlvbmFsPGludD4gZW5nYWdlZDEgeyAx
IH07Ci0gICAgT3B0aW9uYWw8aW50PiBlbmdhZ2VkMiB7IDIgfTsKLSAgICBPcHRpb25hbDxpbnQ+
IGVuZ2FnZWR4MiB7IDIgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZW5nYWdlZDEgeyAxIH07
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVuZ2FnZWQyIHsgMiB9OworICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiBlbmdhZ2VkeDIgeyAyIH07CiAKICAgICBFWFBFQ1RfRkFMU0UodW5lbmdhZ2VkMSAh
PSB1bmVuZ2FnZWQyKTsKICAgICBFWFBFQ1RfVFJVRShlbmdhZ2VkMSAhPSBlbmdhZ2VkMik7CiAg
ICAgRVhQRUNUX1RSVUUoZW5nYWdlZDEgIT0gdW5lbmdhZ2VkMSk7CiAgICAgRVhQRUNUX0ZBTFNF
KGVuZ2FnZWQyICE9IGVuZ2FnZWR4Mik7CiAKLSAgICBFWFBFQ1RfRkFMU0UodW5lbmdhZ2VkMSAh
PSBOdWxsb3B0KTsKLSAgICBFWFBFQ1RfVFJVRShlbmdhZ2VkMSAhPSBOdWxsb3B0KTsKLSAgICBF
WFBFQ1RfRkFMU0UoTnVsbG9wdCAhPSB1bmVuZ2FnZWQxKTsKLSAgICBFWFBFQ1RfVFJVRShOdWxs
b3B0ICE9IGVuZ2FnZWQxKTsKKyAgICBFWFBFQ1RfRkFMU0UodW5lbmdhZ2VkMSAhPSBzdGQ6Om51
bGxvcHQpOworICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQxICE9IHN0ZDo6bnVsbG9wdCk7CisgICAg
RVhQRUNUX0ZBTFNFKHN0ZDo6bnVsbG9wdCAhPSB1bmVuZ2FnZWQxKTsKKyAgICBFWFBFQ1RfVFJV
RShzdGQ6Om51bGxvcHQgIT0gZW5nYWdlZDEpOwogCiAgICAgRVhQRUNUX0ZBTFNFKGVuZ2FnZWQx
ICE9IDEpOwogICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQxICE9IDIpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4
IDBmMWMwMmQ5ZTZjYTg1YzA5Y2I0OTZjYjM3ZjEyYzI5OWY1OGZlZjguLjZlOWU3MzhhYjViY2Ux
ZGZhYmZiNDJmNjBlYjdiMmYyYjY0NWNiNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgc3RhdGljIGludCB0ZXN0UGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQog
ewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxJbnRlZ2VyKGlucHV0KTsKICAg
ICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9uYWxSZXN1
bHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3IoMCk7CiB9
CiAKIHN0YXRpYyBib29sIHBhcnNlSFRNTEludGVnZXJGYWlscyhjb25zdCBTdHJpbmcmIGlucHV0
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyB1bnNpZ25lZCB0ZXN0UGFyc2VIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRpb25hbFJl
c3VsdCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RS
VUUoISFvcHRpb25hbFJlc3VsdCk7Ci0gICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3Io
MCk7CisgICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMg
Ym9vbCBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXJGYWlscyhjb25zdCBTdHJpbmcmIGlucHV0
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcApp
bmRleCBlZWE5YjkxOTljOGJjMTdlNmQ4NWM4ZTU5M2QxNGZkMGY3MWQyNzYzLi5kZmQyNTU3YmVk
NWEzZjY3ODJmNjE5NmU5YmQyMTJhZWI4NTExNzUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMg
dm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0
cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2Vy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1Rf
RVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFy
dHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1
cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMs
IFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1Rf
RVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEo
cGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdt
ZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBz
dGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVy
bC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3Mo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1Rf
RVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1
ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja1JlbGF0aXZlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkxTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIG9sZFVSTC51c2Vy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBF
Q1RfRVEocGFydHMucG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LmZyYWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTE4Nyw3ICsxODcs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3
LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29y
ZCwgdXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5o
b3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9y
KDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigw
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERpZmZlcmVuY2VzKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYQogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzT2xkLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c09sZC5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzT2xkLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNPbGQu
cG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNPbGQu
cG9ydCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNPbGQucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xk
LnF1ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmZy
YWdtZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTIzMiw3ICsyMzIsNyBA
QCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVz
ZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwg
dXJsLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0
KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDAp
KTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAg
LTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzT2xkLnVzZXIsIG9sZFVSTC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0c09sZC5wYXNzd29yZCwgb2xkVVJMLnBhc3MoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzT2xkLmhvc3QsIG9sZFVSTC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNPbGQucG9y
dCwgb2xkVVJMLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNPbGQucG9y
dCwgb2xkVVJMLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNP
bGQucGF0aCwgb2xkVVJMLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnF1
ZXJ5LCBvbGRVUkwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLmZyYWdt
ZW50LCBvbGRVUkwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTI4Miw3ICsyODIsNyBAQCBz
dGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgY29ucwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVy
bC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3Mo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBF
WFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1Rf
RVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1
ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
U3RyaW5nLCBjb25zdAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEo
cGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMu
cG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwu
cXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295448</attachid>
            <date>2016-11-26 16:28:36 -0800</date>
            <delta_ts>2016-11-26 16:44:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161126182732.patch</filename>
            <type>text/plain</type>
            <size>1227519</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
OWI0MjljMjk4ZDljZDEyMzEyOWIwNjE0OGQwZmU0ZmM5MjA5ODc5Li40Yjc3NGQ2OWE0M2YwZWQz
ODJkYzFmZThiNWRmZDY0ZTNmZTdkYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDggQEAKKzIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGlt
cGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpIGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFByZXZpb3VzIFdURjo6T3B0aW9uYWw6
Om9wZXJhdG9yPSBpcyBub3QgY29tcGF0aWJsZSB0byBzdGQ6Om9wdGlvbmFsOjpvcGVyYXRvcj0u
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw6OmVtcGxhY2UgaGFzIHRoZSBzYW1lIHNlbWFudGljcyB0
byB0aGUgcHJldmlvdXMgb25lLgorICAgICAgICBTbyB3ZSBjaGFuZ2UgdGhlIGNvZGUgdG8gdXNl
IGl0LgorCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHk6
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNl
cGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDoK
KyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rv
ci1Db21iaW5lZC5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVz
dWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlw
dENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJlc3VsdDoKKyAgICAgICAg
KiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQW5vdGhlckd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAq
IFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENh
c2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNvbW11
dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdCk6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNp
YWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAg
ICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAg
ICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmg6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2NhbGVGb3JTaGwpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKToKKyAgICAgICAgKiBiMy9C
M09wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjppbnZlcnRlZENvbXBhcmUpOgorICAgICAg
ICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAg
ICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2tt
YXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNp
YWwuaDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjppbnZlcnRlZENvbXBhcmUpOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkU2NhbGUpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpBcmc6OmlzVmFsaWRBZGRyRm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNW
YWxpZEluZGV4Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZEZvcm0p
OgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
UGF0Y2hDdXN0b206OnNob3VsZFRyeUFsaWFzaW5nRGVmKToKKyAgICAgICAgKiBiMy9haXIvQWly
Rml4T2J2aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuaDoKKyAgICAg
ICAgKiBiMy9haXIvQWlySW5zdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5z
dDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJl
Z2lzdGVyQ29hbGVzY2luZy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZik6Cisg
ICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFBDKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lOjpjdXJyZW50UG9zaXRpb24pOgorICAgICAgICAqIGRlYnVnZ2VyL0Rl
YnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJQYXVzZVBvc2l0aW9u
czo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbik6CisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXJQYXJzZURhdGEuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZmZWN0cyk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmZp
bmRQQyk6CisgICAgICAgICogZGZnL0RGR0pJVENvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5h
bCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkRGRzo6U2xvd1BhdGhHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpydW5T
bG93UGF0aEdlbmVyYXRvcnMpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzVGVtcG9y
YXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRVbnR5cGVkQml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhEaXYpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2FsbERPTUdldHRlcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAg
KiBmdGwvRlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZmluZFBD
KToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6
CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3RTeW5jKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEluVGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6cmVxdWVzdENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFw
Ojp3aWxsU3RhcnRDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmluaXNoQ29s
bGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24pOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0aW9uU2Nv
cGUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90LmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cFNuYXBzaG90Ojpub2RlRm9yQ2VsbCk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdDo6bm9k
ZUZvck9iamVjdElkZW50aWZpZXIpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9iamVjdCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcyk6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVy
LnB5OgorICAgICAgICAoX2dlbmVyYXRlX2RlY2xhcmF0aW9uc19mb3JfZW51bV9jb252ZXJzaW9u
X21ldGhvZHMpOgorICAgICAgICAoX2dlbmVyYXRlX2RlY2xhcmF0aW9uc19mb3JfZW51bV9jb252
ZXJzaW9uX21ldGhvZHMucmV0dXJuX3R5cGVfd2l0aF9leHBvcnRfbWFjcm8pOgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2lt
cGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLl9nZW5lcmF0ZV9lbnVtX2NvbnZlcnNpb25fbWV0aG9kc19mb3JfZG9tYWluLmdl
bmVyYXRlX2NvbnZlcnNpb25fbWV0aG9kX2JvZHkpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dl
ZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24t
cmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6
ZmluZFBDKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6UENUb0NvZGVPcmlnaW5NYXA6OmZpbmRQQyk6CisgICAgICAgICogaml0L1BD
VG9Db2RlT3JpZ2luTWFwLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6UnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1
bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uY3VycmVu
dEpTTG9jay5oOgorICAgICAgICAoSlNDOjpDb25jdXJyZW50SlNMb2NrZXI6OkNvbmN1cnJlbnRK
U0xvY2tlcik6CisgICAgICAgICogcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAg
ICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAg
ICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Okdl
bmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVu
dHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50
czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSGFzT3duUHJv
cGVydHlDYWNoZS5oOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0eUNhY2hlOjpnZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6Y29uY3VycmVu
dEpTTWFwSGFzaCk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChK
U0M6OnBhcnNlSW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJlckZyb21QcmltaXRp
dmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzo6dG9BZGFw
dG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OnNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25z
dCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKEpTQzo6dG9Qcm9wZXJ0eURlc2NyaXB0b3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChKU0M6OnBhcnNlSW5k
ZXgpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjppc1N0cmluZ093blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9U
b05hdGl2ZUZyb21WYWx1ZS5oOgorICAgICAgICAoSlNDOjp0b05hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbik6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaDoKKyAg
ICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzJX
aXRob3V0Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9y
Ojp0b05hdGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpJbnRl
Z3JhbFR5cGVkQXJyYXlBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24p
OgorICAgICAgICAoSlNDOjpGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQz
MldpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OkZsb2F0VHlwZWRBcnJheUFkYXB0b3I6
OnRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OlVpbnQ4
Q2xhbXBlZEFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKToKKyAgICAg
ICAgKEpTQzo6VWludDhDbGFtcGVkQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENv
ZXJjaW9uKToKKwogMjAxNi0xMS0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9BU1NFTUJMRVJfV1hfRVhDTFVTSVZFIGNvZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOWYzZjhmMjkxYzMzZGZjNjVkYTc1MzVkZmFiNTU4YjM5Nzc3Y2Q2ZS4uOTQyOTVhZjYx
MDI3ZGI0MmI4OWI0MjY3Y2E0MmJlMmQ0NjU0MjliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIw
MTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFz
IFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpIGFuZCBTYW0g
V2VpbmlnLgorCisgICAgICAgIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1l
bnRhdGlvbiBvZmZlcmVkIGJ5IHRoZSBDKysxNworICAgICAgICBvcmlnaW5hbCBwcm9wb3NhbCBw
YXBlci4gSXQgaGFzIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eQorICAgICAg
ICB0byB0aGUgQysrMTcncyBvbmUuIFByZXZpb3VzIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJh
bCBmdW5jdGlvbmFsaXRpZXMuCisgICAgICAgIFRoZSBsYXJnZXN0IG9uZSBpcyB0aGUgY29ycmVj
dCBjb25zdGV4cHIgY29uc3RydWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMg
ZnJvbSB1c2luZyBPcHRpb25hbDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGlu
IFdlYktpdC4KKworICAgICAgICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29u
c3RydWN0b3JzLiBTbyBvbmx5IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMg
dGhlIHdheSB0byB1c2UgV1RGOjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAg
IGdsb2JhbCB2YXJpYWJsZXMuIFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVj
dCBhbmQKKyAgICAgICAgd2Ugd291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwg
dmFyaWFibGVzIHRoYXQgaW5jbHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhh
dCBpcyB0aGUgbWFpbiBtb3RpdmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbmFsaXR5IGFsbG93cyB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisg
ICAgICAgIHNpZ25hdHVyZXMgYXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAg
ICAgICAgV2UgaW1wb3J0IHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIGluc3RlYWQg
b2YgTExWTSBsaWJjKysncyBvbmUuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBMTFZNIGxpYmMr
KydzIG9uZSBkZXBlbmRzIG9uIG1hbnkgbWFjcm8gYW5kIHR5cGVfdHJhaXRzCisgICAgICAgIG9m
ZmVyZWQgYnkgbGliYysrIGltcGxlbWVudGF0aW9uLiBBbmQgYWRvcHRpbmcgaXQgdG8gV2ViS2l0
IHJlcXVpcmVzCisgICAgICAgIGxhcmdlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGlzIHJl
ZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvbmUuCisgICAgICAgIEZ1cnRoZXJtb3JlLCBpdCBpcyBk
aWZmaWN1bHQgdG8gY29tcGlsZSBsaWJjKysncyBvcHRpb25hbCBpbiBvbGQgR0NDIGFuZCBWQysr
LgorICAgICAgICBJdCBhbHNvIHJlcXVpcmVzIHNvbWUgbW9yZSBtb2RpZmljYXRpb25zLiBUbyBr
ZWVwIHRoZSB0aGluZyBzaW1wbGUsCisgICAgICAgIHdlIGltcG9ydCB0aGUgcmVmZXJlbmNlIGlt
cGxlbWVudGF0aW9uIG9uZSBub3cuIE9uY2UgQysrMTcgaXMgcmVsZWFzZWQKKyAgICAgICAgYW5k
IHdlIHVwZGF0ZSB0aGUgY29tcGlsZXIgYmFzZWxpbmUsIHdlIGNhbiBzbW9vdGhseSBzd2l0Y2gg
dG8gdGhlIHN0YW5kYXJkCisgICAgICAgIGxpYnJhcnkncyBzdGQ6Om9wdGlvbmFsLgorCisgICAg
ICAgIFdlIGFsc28gYWRkIHN1cHBvcnQgZm9yIHRoZSBlbnZpcm9ubWVudCB0aGF0IGRvZXMgbm90
IHVzZSBleGNlcHRpb25zIHRvIHRoaXMKKyAgICAgICAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGFkZCB2YWx1ZU9yQ29tcHV0ZSBoZWxwZXIgZnVuY3Rp
b24uIFRoYXQga2VlcHMgdGhlIGV4dGVuZGVkCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgdGhhdCBw
cmV2aW91cyBXVEY6Ok9wdGlvbmFsIGhhcy4KKworICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFF1
ZXVlLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRN
ZXNzYWdlKToKKyAgICAgICAgKiB3dGYvRXhwZWN0ZWQuaDoKKyAgICAgICAgKFdURjo6bWFrZUV4
cGVjdGVkKToKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9IYXNoVHJh
aXRzLmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8UmVmPFA+Pjo6dGFrZSk6CisgICAgICAg
ICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplR0NUaHJlYWRz
KToKKyAgICAgICAgKFdURjo6bWF5QmVHQ1RocmVhZCk6CisgICAgICAgICogd3RmL01haW5UaHJl
YWQuaDoKKyAgICAgICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKHN0ZDo6ZGV0YWlsXzo6
aXNfYXNzaWduYWJsZTo6aGFzX2Fzc2lnbik6CisgICAgICAgIChzdGQ6OmRldGFpbF86Omhhc19v
dmVybG9hZGVkX2FkZHJlc3NvZjo6aGFzX292ZXJsb2FkKToKKyAgICAgICAgKHN0ZDo6ZGV0YWls
Xzo6c3RhdGljX2FkZHJlc3NvZik6CisgICAgICAgIChzdGQ6OmRldGFpbF86OmNvbnZlcnQpOgor
ICAgICAgICAoc3RkOjpudWxsb3B0X3Q6Om51bGxvcHRfdCk6CisgICAgICAgIChzdGQ6OmJhZF9v
cHRpb25hbF9hY2Nlc3M6OmJhZF9vcHRpb25hbF9hY2Nlc3MpOgorICAgICAgICAoc3RkOjpvcHRp
b25hbF9iYXNlOjpvcHRpb25hbF9iYXNlKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWxfYmFzZTo6
fm9wdGlvbmFsX2Jhc2UpOgorICAgICAgICAoc3RkOjpjb25zdGV4cHJfb3B0aW9uYWxfYmFzZTo6
Y29uc3RleHByX29wdGlvbmFsX2Jhc2UpOgorICAgICAgICAoc3RkOjpvcHRpb25hbDo6ZGF0YXB0
cik6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsOjpjb250YWluZWRfdmFsKToKKyAgICAgICAgKHN0
ZDo6b3B0aW9uYWw6Ol9fTk9FWENFUFRfKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wdGlv
bmFsKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yPSk6CisgICAgICAgIChzdGQ6
Om9wdGlvbmFsOjplbXBsYWNlKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yIC0+
KToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yICopOgorICAgICAgICAoc3RkOjpv
cHRpb25hbDo6dmFsdWUpOgorICAgICAgICAoc3RkOjpvcHRpb25hbDo6dmFsdWVfb3IpOgorICAg
ICAgICAoc3RkOjpvcGVyYXRvcj09KToKKyAgICAgICAgKHN0ZDo6b3BlcmF0b3IhPSk6CisgICAg
ICAgIChzdGQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChzdGQ6Om9wZXJhdG9yPik6CisgICAgICAg
IChzdGQ6Om9wZXJhdG9yPD0pOgorICAgICAgICAoc3RkOjpvcGVyYXRvcj49KToKKyAgICAgICAg
KHN0ZDo6X19OT0VYQ0VQVF8pOgorICAgICAgICAoc3RkOjptYWtlX29wdGlvbmFsKToKKyAgICAg
ICAgKHN0ZDo6aGFzaDxzdGQ6Om9wdGlvbmFsPFQ+Pjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChX
VEY6Ok51bGxvcHRUYWc6Ok51bGxvcHRUYWcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRp
b25hbDo6T3B0aW9uYWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6fk9wdGlv
bmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yPSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvciBib29sKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpPcHRpb25hbDo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6
OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6OnZhbHVlT3IpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPckNvbXB1dGUpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6YXNQdHIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpP
cHRpb25hbDo6ZGVzdHJveSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bWFrZU9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsOjpJbXBsKToK
KyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0
ZXJhdG9yKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisKIDIwMTYtMTEtMjIg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE9uZSBtb3JlIHRpbnkg
Yml0IG9mIGZvbGxvdy11cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwM2NhOTJiNzk5NmMwYjY2YTJiZDNjZTRk
ZTVkYzg1OGY5NzdhYmYwLi4zNzg3ZTk5NGE5NDk2YjdhMTRjOTk2YTAyZWFjODdhNDEyMGNjNzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0NCBAQAorMjAxNi0xMS0yNiAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpv
cHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkgYW5kIFNhbSBXZWluaWcuCisKKyAgICAgICAgUmVu
YW1lIHZhbHVlT3IgdG8gdmFsdWVfb3IuIFRoaXMgaXMgc3BlY2lmaWVkIGluIEMrKzE3IHByb3Bv
c2FsLgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6ZW1wbGFjZS4gQysrMTcgT3B0aW9uYWw6Om9w
ZXJhdG9yPShPcHRpb25hbCYmKSByZXF1aXJlcworICAgICAgICBlaXRoZXIgY29weSBhc3NpZ25t
ZW50IG9wZXJhdG9yIG9yIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4gQnV0CisgICAgICAgIERG
Rzo6SlNWYWx1ZU9wZXJhbmQgZXRjLiBvbmx5IGRlZmluZXMgbW92ZSBjb25zdHJ1Y3RvcnMgYW5k
IGRyb3AKKyAgICAgICAgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKworICAg
ICAgICBJdCB3YXMgT0sgaW4gdGhlIHByZXZpb3VzIFdURjo6T3B0aW9uYWwgc2luY2UgaXQgYWx3
YXlzIHVzZXMgbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMuIEJ1dCBpdCBpcyBub3QgdmFsaWQg
aW4gQysrMTcgT3B0aW9uYWwuIFdlIHVzZSBPcHRpb25hbDo6ZW1wbGFjZQorICAgICAgICBpbnN0
ZWFkLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHByZXZpb3Vz
IFdURjo6T3B0aW9uYWwncworICAgICAgICBvcGVyYXRvcj0uCisKKyAgICAgICAgTm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29udGFjdEZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjp0b0xpbmVJdGVtVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaW5lSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVMaW5lSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWVyY2hhbnRDYXBhYmls
aXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU3VwcG9ydGVkTmV0d29ya3MpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9TaGlwcGluZ1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U2hpcHBpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2hpcHBpbmdNZXRob2Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBheW1lbnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnRvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpOgorICAgICAgICAqIE1vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3QuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50Q29udGFjdDo6ZnJvbUpTKToKKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb246OmZyb21KUyk6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmV4dHJhY3Qp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlP
d25lcjo6RmV0Y2hCb2R5T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6
OmxvYWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9i
TG9hZGluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UmVmZXJyZXJQb2xpY3kpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWRpcmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UmVmZXJy
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVxdWVzdDo6Y2xvbmUpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdCk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUyk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNl
OjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
OgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmFsdGl0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjpoZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjpzcGVlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJz
b3I6OnN0cmluZ1RvRGlyZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rv
cnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGxL
ZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6Omlzb2xh
dGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Z2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUluZGV4OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9i
amVjdFN0b3JlQ2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9i
amVjdFN0b3JlQ3Vyc29yOjprZXlEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZpcnN0SW5SZW1haW5pbmdSYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRG
b3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0UmV2ZXJzZUl0ZXJhdG9yRnJvbVJl
bWFpbmluZ1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmVDdXJzb3I6OmluY3JlbWVudEZvcndhcmRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRSZXZlcnNlSXRl
cmF0b3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZUN1cnNvci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbyk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUluZm86OmNyZWF0ZU5ld09iamVjdFN0b3JlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm86OklEQk9iamVjdFN0b3JlSW5mbyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvOjprZXlQYXRoKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2spOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdHJlYW1FbmRlZFdpdGhFcnJvcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRl
T2ZmZXJTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpjcmVhdGVPZmZlckZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZUFuc3dlclN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZUFuc3dlckZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9u
RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVt
b3RlRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZUZhaWxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnN0b3ApOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDSWNlQ2FuZGlkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZTo6UlRDSWNlQ2FuZGlk
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDSWNlQ2FuZGlkYXRlOjpzZHBNTGluZUluZGV4KToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppY2VDYW5kaWRhdGVGcm9tSlNPTik6CisgICAgICAgICogTW9kdWxlcy9wcm94aW1pdHkv
RGV2aWNlUHJveGltaXR5RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNl
OjpzdGFydEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNl
OjpwdWxsRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Tb3VyY2U6
OmNsZWFuKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Lmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Lmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAg
ICAgICogYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SURM
VHlwZTo6bnVsbFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdDo6ZXJyb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rp
b25hcnk6OmdldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXJCYXNl
Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXJC
YXNlPElETEludGVyZmFjZTxUPj46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFZhcmlhZGljQXJndW1lbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvclRyYWl0cz46Om5leHQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlz
ZTo6RE9NUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpvcGVyYXRvcj0p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5
Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0ZpbGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bEhUTUxBbGxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rp
b246Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJM
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVN0cmluZ0NvbnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQm9vbGVhbkNv
bnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRG91YmxlQ29uc3RyYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnRDb25zdHJhaW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
bXBvcnRLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5k
bGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5lcmF0
ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlRW51
bWVyYXRpb25IZWFkZXJDb250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlRGVmYXVsdFZhbHVlKToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0
NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJyYXk6OnB1dCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4pOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4pOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4pOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4pOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4pOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4pOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPik6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQ2FsbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXJnQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdDYWxsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0NhbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUNhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEJvb2xlYW5DYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRDYWxsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMkNhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudENhbGxlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9u
ZURpY3Rpb25hcnlGaWxlPik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFk
b3dDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkZ1bmNXaXRoQ2xhbXBDYWxsZXIpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjppZGVudGlmaWVyKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnkuaDoKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oOgor
ICAgICAgICAqIGNyeXB0by9Kc29uV2ViS2V5Lmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OmltcG9ydEtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1I
TUFDOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFD
OjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRl
U2lnbmF0dXJlKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaDoKKyAgICAg
ICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmg6CisgICAgICAgICogY3J5cHRvL2tleXMv
Q3J5cHRvS2V5UlNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1wb3J0
SndrKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaDoKKyAgICAgICAgKiBj
cnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0tleVNlcmlhbGl6YXRpb25SYXc6OnJlY29uY2lsZUFsZ29yaXRobSk6CisgICAg
ICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oOgorICAgICAgICAq
IGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgICogY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oOgorICAgICAgICAqIGNyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmNhbGN1bGF0ZVN0eWxlTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayk6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGb250VHJhaXRzTWFzayk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjphZGRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5o
OgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6Zm9udFN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6CisgICAgICAg
ICogY3NzL0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpj
b21wbGV0ZWRMb2FkaW5nKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaDoKKyAgICAgICAg
KiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb3VibGVW
YWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNw
ZWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dE1hcnF1ZWVJbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KToKKyAgICAgICAgKiBjc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVMaW5lSGVpZ2h0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlSW1wb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxlU2hlZXQpOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvckZyb21WYWx1ZSk6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JD
b21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5jcHA6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpkcm9wRXZlbnREaXNwYXRjaEFz
c2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpj
bGVhcik6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgICogZG9tL0lubGlu
ZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlSW5saW5lU3R5bGVT
aGVldENhY2hlS2V5KToKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAq
IGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVDbGFzc2ljU2NyaXB0OjplcnJvcik6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6ZXJyb3IpOgorICAgICAgICAqIGRvbS9M
b2FkYWJsZU1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZVNjcmlwdC5oOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2
ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBkb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUp
OgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1JhbmdlQm91
bmRhcnlQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRU
b0JlZm9yZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6c2V0
VG9BZnRlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6c2V0
VG9FbmRPZk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50OjppbnZh
bGlkYXRlT2Zmc2V0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIGRvbS9U
ZXh0RGVjb2Rlci5oOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0
b3IpOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oOgorICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6Omhh
c0luc2VjdXJlQ29udGVudCk6CisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b2dnbGUpOgorICAgICAgICAqIGh0bWwvRE9N
VG9rZW5MaXN0Lmg6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZh
c0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnQ6OnBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9y
SlNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQpOgorICAgICAg
ICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpmaW5kQ2xvc2Vz
dFRpY2tNYXJrVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWF4
TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50Ojppbml0aWFsaXplU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6Omljb25UeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6YWRkKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
SW5wdXRUeXBlOjp3aWR0aCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUpOgorICAgICAg
ICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5j
cHA6CisgICAgICAgICogaHRtbC9MaW5rUmVsQXR0cmlidXRlLmg6CisgICAgICAgICogaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Zmlu
ZENsb3Nlc3RUaWNrTWFya1ZhbHVlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludElu
UGF0aEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFycmF5QnVmZmVyVmll
d0VsZW1lbnRTaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6cmVjb25zdHJ1Y3RU
aGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VIVE1MSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWYWxpZEhU
TUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVZh
bGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVZhbGlk
SFRNTEZsb2F0aW5nUG9pbnROdW1iZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VI
VFRQUmVmcmVzaEludGVybmFsKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmg6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZURlc2NyaXB0b3JzKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQ
b3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJDb250YWluZXJF
bGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwv
dHJhY2svVHJhY2tFdmVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
bmlzaFhIUkxvYWRpbmdJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldEluc3RydW1lbnRzKToK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNsZWFyUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGln
aHRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNw
YXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFy
VGVzdGluZ092ZXJyaWRlcyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJv
bUFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToK
KyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6U3Vi
cmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6
bm90aWZ5RG9uZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6
cHJpb3JpdHkpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6c3BlY2lmaWVkTWF0aFZhcmlhbnQpOgorICAgICAgICAq
IG1hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhN
TE1hdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50Ojpz
cGVjaWZpZWREaXNwbGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6c2VhcmNoKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNvbXB1dGVPcGVyYXRv
ckZsYWcpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MT3BlcmF0b3JFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFn
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE9wZXJhdG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaDoKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxQYWRkZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhN
TFBhZGRlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojpj
YWNoZWRCb29sZWFuQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6c3BlY2lmaWVkTWF0aFZhcmlhbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojp0b09wdGlvbmFsQm9v
bCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTFNjcmlwdHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhN
TFNwYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50Lmg6
CisgICAgICAgICogbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludCk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxVbmRlck92ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFVuZGVyT3Zl
ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVW5kZXJP
dmVyRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICog
cGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6YWxpZ25lZEZp
cmVUaW1lKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmg6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6CisgICAgICAg
ICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJy
aWRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVj
dCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcik6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpldmVudFRo
cm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUpOgorICAgICAgICAqIHBhZ2UvU2Nyb2xsVG9P
cHRpb25zLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnBvcnQpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpT
ZWN1cml0eU9yaWdpbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Ojppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YUhhc2g6Omhh
c2gpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkhhc2g6Omhhc2gpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVh
dHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEaWFsb2dGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpib29sRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9hdEZlYXR1
cmUpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0TWF0Y2hl
cyk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmg6Cisg
ICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJz
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0OjpwYXJzZVBvcnQpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNjaGVkdWxlZFNjcm9s
bFVwZGF0ZTo6U2NoZWR1bGVkU2Nyb2xsVXBkYXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2Nyb2xsUG9z
aXRpb25DaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWlu
dHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9T
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6OnNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZUlPUy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25z
dHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9MaW5rSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6aGFuZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRT
aXplQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICog
cGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sRm9udCk6
CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFz
ZTo6YWxpZ25lZEZpcmVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6cG9ydEFsbG93ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL1VSTC5oOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wpOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZExvbmdlc3RaZXJvU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJM
UGFyc2VyOjpwYXJzZUlQdjRQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBh
cnNlSVB2NEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVj
ZUluc2lkZUlQdjYpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRy
ZXNzSW5zaWRlSVB2Nik6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlSVB2Nkhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vVVJMUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyOjpJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldEFwcHJveGltYXRlUG9zaXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6aG90U3BvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpjbGVhck1ldGFkYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZUNhY2hlOjpmcmFtZU1ldGFkYXRhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lQ2FjaGU6OmhvdFNwb3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aG90U3BvdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWN0RnJvbVBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdp
dGhTaHJpbmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1
bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRw
dXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Zmx1c2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjpjb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldExheW91dFZpZXdwb3J0UmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6ZGF0YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlblR5cGVGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFuY2VGb3JDb2xvckJp
dG1hcEZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzOjpsb2NhbEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xp
bmU6OmxvY2FsQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGlu
ZXNGb3JUZXh0Ojpsb2NhbEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcjo6bG9jYWxCb3VuZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoOjpsb2NhbEJvdW5kcyk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzOjpsb2NhbEJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlUmVjdDo6bG9jYWxCb3VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg6OmxvY2FsQm91bmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VFbGxpcHNlOjpsb2NhbEJv
dW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nSXRlbTo6
bG9jYWxCb3VuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6dXBkYXRlSXRlbUV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpjb25jYXRDVE0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjplbmNvZGVJbWFnZUpQRUcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRv
RGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6bWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hh
cmZCdXp6U2hhcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpzZWxl
Y3Rpb25SZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhcGl0YWxpemVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZFN5bnRoZXNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9sbE9mZnNldCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybVN0YXRlOjptYXBRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojpob3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNw
bGF5WDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9y
dHNYRGFtYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNw
bGF5WDExLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6
OklDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bXByZXNzUkdCQUJpZ0VuZGlhblRvSlBFRyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZW5j
b2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlQ2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpzZXRPdmVycmlkZVZpc2libGVSZWN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tOgorICAgICAgICAo
LVtMZWdhY3lUaWxlSG9zdExheWVyIHJlbmRlckluQ29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmNvbnRyb2xGb250KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcDo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwOjpzYW1wbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjphc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmVjaG9DYW5jZWxsYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmZhY2luZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmRldmljZUlkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpncm91cElkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphcHBseVNpemVB
bmRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBw
bHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRw
b2ludE93ci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6SFRUUEhlYWRlck1h
cENvbnN0SXRlcmF0b3I6OnVwZGF0ZUtleVZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUERhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbE1heEFnZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZURhdGVWYWx1ZUluSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjphZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
dXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRm
b3JtU2VuZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0luUGFydGl0aW9uRm9yVVJMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkQnl0ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKToK
KyAgICAgICAgKiByZW5kZXJpbmcvQnJlYWtMaW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJl
YWthYmxlUG9zaXRpb25Mb29zZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQnJlYWthYmxlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zv
cm0pOgorICAgICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25RdWFs
aXR5RnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6
OmNob29zZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Om1vdmVUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpzZXROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OnN1YnN0cmluZ1RvUmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6Omh5cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzdWJzdHJpbmdUb1Jl
bmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpoeXBoZW5hdGVkU3RyaW5n
Rm9yVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RU
ZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yOjpyZXNldCk6CisgICAgICAgICogcmVuZGVyaW5nL09y
ZGVySXRlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYWludEluZm86OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tSYXJlRGF0
YTo6UmVuZGVyQmxvY2tSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RM
aW5lQmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlubGluZUJsb2Nr
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldENhY2hlZEZsb3dU
aHJlYWRDb250YWluaW5nQmxvY2tOZWVkc1VwZGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb25zdHJhaW5M
b2dpY2FsSGVpZ2h0QnlNaW5NYXgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb25z
dHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldE92ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphZGp1c3RDb250ZW50Qm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVD
b250ZW50TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphdmFpbGFibGVM
b2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9n
aWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6aW5saW5lQmxvY2tCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbWJp
bmVUZXh0Ojpjb21wdXRlVGV4dE9yaWdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNv
bWJpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5l
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJs
b2NrQmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhp
YmxlQm94OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluU2l6ZUZyb21B
c3BlY3RSYXRpb1VzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojph
ZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1heCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpzZXRHcm93dGhMaW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OnNldEdyb3d0aExpbWl0Q2FwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6Z3Jvd3RoTGltaXRDYXApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OmZyZWVTcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6YXZhaWxhYmxlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEF2YWlsYWJsZVNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRG
cmVlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Om92
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bG9naWNhbEhlaWdodEZvckNoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pblNpemVGb3JDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjptaW5Db250ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6bWF4Q29udGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvck5vblNwYW5u
aW5nSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6c29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50
aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1p
blRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlQXV0
b1JlcGVhdFRyYWNrc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmFwcGx5
U3RyZXRjaEFsaWdubWVudFRvVHJhY2tzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpjb21wdXRlRmlyc3RJbmRleGVzVmlzaWJs
ZUluUGFkZGluZ1RvcEJvdHRvbUFyZWFzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjppbmxpbmVCbG9ja0Jhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZVBvc2l0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHJpbmdW
aWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpnZXRTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6Y2xlYXJTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3Vi
dHJlZURhdGE6OlNlbGVjdGlvblN1YnRyZWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2VsZWN0aW9uU3RhcnRQb3Mp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRy
ZWVEYXRhOjpzZWxlY3Rpb25FbmRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3Vi
dHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZXRTZWxlY3Rpb25TdGFydFBvcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURh
dGE6OnNldFNlbGVjdGlvbkVuZFBvcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0
cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURhdGE6OmNsZWFyU2VsZWN0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpMaW5lU3RhdGU6Omxhc3RGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVMaW5lTGF5b3V0OjpjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0ZVRleHRSdW5zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3Bh
Y2U6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6Y29tbWl0TGlu
ZUJyZWFrQXRDdXJyZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0
OjpJbmxpbmVJdGVyYXRvckhpc3Rvcnk6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6bW92ZVRv
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUh5cGhlbmF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkJyZWFraW5nQ29udGV4dDo6Y29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFp
bGluZ1dvcmQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEJsb2NrOjphc2NlbnRGb3JDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUGFkZGVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFBh
ZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUGFkZGVkLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVC
YXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbmRHZXRSZWZlcmVu
Y2VDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJz
dExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxp
bmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6
Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzZXR1cE5vblNjYWxpbmdTdHJv
a2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9h
dFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpjYWxjdWxhdGVTdHJv
a2VCb3VuZGluZ0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhTaGFkb3dz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1
cmVzKToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQpOgorICAgICAgICAqIHN0
eWxlL1JlbmRlclRyZWVVcGRhdGVyLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5oOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09U
RkZvbnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRTVkdUb09URkZvbnQpOgorICAgICAgICAqIHN2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92
ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3JPdmVycmlkZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTYtMTEtMjUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIEZvbnQgTG9hZGluZ10gRm9udEZh
Y2UubG9hZCgpIHByb21pc2VzIGRvbid0IGFsd2F5cyBmaXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MWQyZThiMmFmYjM1YWM4OGM4YTI4NjFjMDFkMTY5NWRhMjRmMTk4MS4uMDY0MGFhYjczZGFhZWNj
YTE3NTJjYjI5NTcxZWE2YWNkMjU3MjUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDE2LTExLTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRh
dGlvbiBhcyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBh
bmQgU2FtIFdlaW5pZy4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6dmFsdWVfb3IuCisK
KyAgICAgICAgKiBET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tOgorICAgICAgICAoLVtE
T01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gYWRkOmluZGV4Ol0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSk6CisgICAgICAgICogUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2lu
VmlldyBzZW5kRXZlbnQ6aXNEcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYlBheW1lbnRDb29y
ZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgor
ICAgICAgICAoLVtXZWJTZWN1cml0eU9yaWdpbiBwb3J0XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKHRvQWN0aW9uKToKKyAgICAgICAgKHRvVGFnKToKKwog
MjAxNi0xMS0yMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtN
YWNdIEluIExlZ2FjeSBXZWJLaXQsIHByZXNzaW5nIGFuIGFycm93IGtleSBpbiBlZGl0YWJsZSBj
b250ZW50IGRvZXNu4oCZdCBoaWRlIHRoZSBtb3VzZSBjdXJzb3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCAzYmI4YTY0YjJlOTc2MDJlYjIxM2ViNzMxNTQzZWUwNTRjMjBjZjY5Li4yMmZiOWI0ZjQ3YWQx
YjE3MWQ5Nzk1NjcwZjMwZTQ2ZTFkN2FiZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVu
dGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRp
IGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFVzZSBXVEY6Ok9wdGlvbmFsOjp2YWx1ZV9vci4K
KworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJTZWN1cml0eU9yaWdpbjo6cG9ydCk6CisKIDIwMTYtMTEtMTkgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIFdoZW4gem9vbWVk
IGluIGFuZCBwYW5uaW5nIG9uIHBhZ2VzIHdpdGggZml4ZWQgYmFycywgcGFydHMgb2YgdGhlIGJh
cnMgYXJlIHNvbWV0aW1lcyBtaXNzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjMwZGQyMmI5ODEzNDU0ZTM5
ODdhZTBkNTVkNzQwMjJlMjE1OTI0Zi4uZjU2ZmEzMTJiM2RiZTNhZTc1ODFkOWI3MTNhY2RkNWEz
ZTgwOWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MSBAQAorMjAxNi0xMS0yNiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQg
c3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkgYW5kIFNhbSBXZWluaWcuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJlc3BvbnNl
SGFzRXhwaXJlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
Q29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8c3RkOjpvcHRp
b25hbDxUPj46OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8
c3RkOjpvcHRpb25hbDxUPj46OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6Q29kZXI8T3B0aW9uYWw8VD4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPE9wdGlvbmFsPFQ+Pjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZWFkT3JNYWtlU2FsdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlByZWxv
YWRlZEVudHJ5OjpQcmVsb2FkZWRFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnk6OnJldmFsaWRhdGlvblJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RhdGlzdGljczo6cmVjb3JkTm90VXNpbmdDYWNoZUZvclJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJl
dHJpZXZhbEZhaWx1cmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3Rp
Y3M6OnF1ZXJ5V2FzRXZlclJlcXVlc3RlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OnN0b3JlQm9keUFzQmxvYik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6ZW5jb2RlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpv
cHRpb25hbDxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpv
cHRpb25hbDxUPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V1RGOjpP
cHRpb25hbDxUPj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V1RGOjpPcHRpb25hbDxUPj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhS
ZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogUGxh
dGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
TWVtb3J5OjptYXApOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAoY2xhc3NfdGVtcGxhdGVfaGVhZGVycyk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElT
ZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAg
IChXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydCk6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25TdGF0
ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW06CisgICAgICAgIChXZWJLaXQ6OnR5
cGVGcm9tT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6c2VuZFNlY0l0ZW1SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV0tTZWN1cml0
eU9yaWdpbiBwb3J0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX25hdmlnYXRpb25HZXN0dXJlRGlkRW5kXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAg
KFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6c2V0Q3Vyc29yKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICh0b0NvcmVTY3JvbGxiYXJTdHls
ZSk6CisgICAgICAgICh0b0FQSVNjcm9sbGJhclN0eWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRT
dW1tYXJ5SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2ViRnJhbWVJREZvckhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29u
dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpldmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlVmlld0V4
cG9zZWRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE92ZXJsYXlTY3Jv
bGxiYXJTdHlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpvdmVybGF5U2Nyb2xs
YmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6c2V0Vmlld0V4cG9zZWRSZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVE
aWRTY3JvbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5n
VHJlZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGVDcmVhdGlvblRpbWUpOgorICAgICAg
ICAoV2ViS2l0OjpmaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgICogVUlQcm9jZXNzL1N0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1l
ZGlhRGV2aWNlc0ZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrRm9yd2Fy
ZExpc3RTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9y
ZUZyb21TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9zY3JvbGxPZmZzZXRGb3JFdmVudDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
aW50ZXJwcmV0S2V5RXZlbnQ6aXNDaGFyRXZlbnQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVG
b3JtRGF0YUVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVGb3JtRGF0YUVsZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVWMVNlc3Npb25IaXN0b3J5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdFeHBv
c2VkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZp
b3JPdmVycmlkZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVk
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERG
Vmlld1RvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9t
UERGVmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpib3VuZHNPblNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OnBlcmZvcm1GcmFtZUxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6ZXZhbHVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZv
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBs
dWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TY3JvbGxp
bmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNldFZpZXdFeHBvc2VkUmVjdCk6CisKIDIwMTYtMTEtMjUgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZvbGxv
dy11cCBmaXhlcyB0byByMjA4OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKaW5kZXggODcyOGFk
NzJiNTE0M2FhZGZjOGJjM2M4OGEyNDg0M2IxNDJmMjUwNy4uNWUzZWU4MmE2MTNiYTRiNzUzNDYy
NTVjNDI5NmFiZTAzNzBhYmU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtODUsNyAr
ODUsNyBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlczoKICNkZWZpbmUgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBCdWlsdGluc0dl
bmVyYXRvclRlbXBsYXRlczoKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVy
biB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9y
VGVtcGxhdGVzOgogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJu
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygp
LmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9y
VGVtcGxhdGVzOgogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJu
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygp
LmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8k
e29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVp
bHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJv
bWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKaW5kZXggZmFmNDQ5OTFmMGNiNTdhNDJlZDk4ZjNkZTA4
ZDdjYTExM2M0NDc5ZS4uOWJiMjFkNjAzNzlmYjQ0MDI0MjI2YjdmODcwMjc1Njg1N2IwMzBlZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CkBA
IC0xNTIsNyArMTUyLDcgQEAgY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7
IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAj
dW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDYxMWFlZWY0NDk5YThmNmU4NTJiNDQ5
ZjJjOWMzZTE4MDlhZTVlNGQuLjg3ZmRhZWUzOGVkYTY2OTc5YjJlODc5YTU0ZWRkYTNiYzRlYTEy
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJlc3Vs
dApAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxs
UHJvbWlzZUNvZGUgPQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5z
aWMpOyB9CiBKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0CmluZGV4
IDY4NzY4OGFiZjdiOGY5YmI4MzdkZmU3MWNhZGUxMDMwNTU3MTg2YmYuLjZiZjY5NmZkZGQ1MTJh
NWJhMzQwMTQ5OTNhYjAwMjRlMzNiNmU2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTE3Niw3ICsxNzYsNyBAQCBjb25zdCBj
aGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkg
XAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291
cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpz
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3Vs
dAppbmRleCA5ZGFkYzU2OGExMjA2YTUwMjE5ZDRhZjE3MTZlMGYzNTkyOGQ1MTcwLi5kMGM4ZjI2
ZWYxOGE2MmVmMWZhZDliNzM5MDliMTEyNTkyN2NmZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0xNzUsNyArMTc1LDcgQEAg
Y29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQogI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICBy
ZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6
bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CiBKU0NfRk9SRUFDSF9CVUlMVElO
LlBST1RPVFlQRV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVm
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWls
dGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNv
bnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdAppbmRleCA2N2JlZDY0OTUwMTBhYWJlNDdhNmIx
M2M5ZmNlZGQ0NDYwYWZhNzYzLi4wMjNhODI5OGM0Y2I0NTQ1YjUzYTcwNWJlN2ZmYjgyZGM3MjFj
MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQu
anMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5q
cy1yZXN1bHQKQEAgLTE4OSw3ICsxODksNyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1
Y3RvckZyb21Db2RlID0KICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1l
LCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmlu
c2ljKTsgfQogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMDk2MjAxMzI3YTI5
NmQxOWJmZTI4NDBjODY0Y2EyNGIwOWU0OTllYS4uODAwMGI2OTYzODQ3YzdiYjE4ZmJiNmRiMjg4
MzY3YzhlYTlhZjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9y
LVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3It
U2VwYXJhdGUuanMtcmVzdWx0CkBAIC0xODgsNyArMTg4LDcgQEAgY29uc3QgY2hhciogc19idWls
dGluQ29uc3RydWN0b3JGcm9tQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICBy
ZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5h
bWUjI0ludHJpbnNpYyk7IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMt
Q29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNv
bWJpbmVkLmpzLXJlc3VsdAppbmRleCBiZjhhNDZjZjE4NDliMTI3ZWUzNTViNTk0ZDNjNGYxYzk5
OGVkZGZhLi44Y2JiNTM5YmU3YTlkY2NlOGE1MTg3ZDFiMjI4Mjg3OTAxN2ExNDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1lcy1Db21iaW5lZC5qcy1yZXN1
bHQKQEAgLTEzOSw3ICsxMzksNyBAQCBjb25zdCBjaGFyKiBzX2ludGVybmFsQ2xhc2hpbmdOYW1l
c0lzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAot
ICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwg
TnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgcmV0dXJuIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgfQogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS1Bbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLUFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdAppbmRleCA4Zjg0NTExMjc4MjM3OTM1MmVjODU0ZDQ4MTJiNWU4NjQ3Mjc3ZmM5Li5hZDUz
MGIyZjU1YjdmOGI2MjU0NWNlMjcwNjRiYWM1ODkwZjViNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFu
b3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LUFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMjE0
LDcgKzIxNCw3IEBAIGNvbnN0IGNoYXIqIHNfYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5M
ZXRzRmV0Y2hDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJh
dG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVy
biBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0
aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFub3RoZXJH
dWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9BTk9USEVSR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5
Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMjljZTIxODYwYTU3OTc4
ZTMyMDM3NDI0OGE1Y2Q4OTE1ZjlkOWQxMi4uZjkxYjZkOWNjZTE0NjJmY2QzYzZkMTFlNzJlNGQx
OTI5MGMzMzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2Vw
YXJhdGUuanMtcmVzdWx0CkBAIC0xODQsNyArMTg0LDcgQEAgY29uc3QgY2hhciogc19hcmJpdHJh
cnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCiAg
ICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS5hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYXJiaXRy
YXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLmFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRCdWlsdGlucygpLmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS5hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCks
IHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZP
UkVBQ0hfQVJCSVRSQVJZQ09ORElUSU9OQUxHVUFSRF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
V2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA3YzIwMDI4ODIzMGQzNTUzYWUxYjBiZTJh
MDM4OWI3ZWE1YzcyMzA5Li5lOTcxNzU1MWI3MDlhYWE1YjdmNTA1ZDhlMTI3OWVmMTUxODhmM2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTg0LDcgKzE4NCw3
IEBAIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZSA9CiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXAoge1wKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1cm4gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3Vh
cmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVp
bHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5q
cy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0
CmluZGV4IDIyZTdhNzQ3NmZlZTk0M2U1MWI5Y2ZhOTUwZjQ1MDhlZTkxYjg5NzkuLjAzOWNjYzEy
ZDI2MjhlMjE1OTMzYTY4MWI2OTdjM2IzMzE5N2M1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50
ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMjE2LDcgKzIxNiw3IEBAIGNvbnN0
IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2Rl
ID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwg
TnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgp
LCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRl
ZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IGFjMTBhMTFhNTAwNGNlMzZkODRmNmIz
ZGJhMmYzYjQ0MjY2ZTMzODUuLmYxZGNhY2U5ZTQ3ZTg4YTc1MDU2OThkOGVhMGNkMTBiM2Q0Mjk0
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTc4LDcg
KzE3OCw3IEBAIGNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWRDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCku
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5n
dWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRF
REJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1T
ZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0
CmluZGV4IGQ1YmU2MmYwNzM3M2YyYTdmZWYyNzZhZGVjZWE0YmRlZTMxMDcxOTAuLmQyMTYyNmRh
NDAxYjM1Y2U1NzZkYTNmMjMxNWNjMWQ3MzhiNDMxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFy
YXRlLmpzLXJlc3VsdApAQCAtMjY3LDcgKzI2Nyw3IEBAIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5n
VGVzdFVybENhc2luZ1Rlc3RDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGll
bnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAot
ICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1
aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2Uo
KSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVu
dERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lO
R1RFU1RfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNjU0NjEwNzBhYjFkNjBkZGFjMDA3
YWM4MzgyNjJmOGRjM2JkNTNlZC4uZTM4MDU3Yjc0ODAzYzMxZjZjZTgyMTcwMGYzMjQ0ODA4ZTVi
MTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKQEAgLTMyOTIsNyArMzI5Miw3IEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwg
TWFjcm9BCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihB
Uk02NEFzc2VtYmxlcjo6aW52ZXJ0KHN0YXRpY19jYXN0PEFSTTY0QXNzZW1ibGVyOjpDb25kaXRp
b24+KGNvbmQpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFJlc3VsdENvbmRpdGlv
bj4gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQp
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29tcGFy
ZVRvWmVyb0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CiAgICAgICAg
IHN3aXRjaCAoY29uZCkgewogICAgICAgICBjYXNlIEVxdWFsOgpAQCAtMzMwNSw3ICszMzA1LDcg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFSTTY0QXNzZW1ibGVyLCBNYWNyb0EKICAgICAgICAgICAgIHJldHVybiBQb3NpdGl2ZU9y
WmVybzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2FmNzkyYTRiMjJlNDBiOGE2Nzc0
ODRlYTA1Mjc4ODUxMTFhODI2OC4uZGFhMjNjM2JiY2JmMGMxNzM4ZmNmNzQzZjFlODJmZTk5ODZh
N2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjY1Niw3ICsyNjU2LDcgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxYODZB
c3NlbWJsZXIsIE1hY3IKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxS
ZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdENvbmRpdGlvbj4g
Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKICAgICAgICAgY2FzZSBFcXVhbDoKQEAgLTI2
NjksNyArMjY2OSw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8WDg2QXNzZW1ibGVyLCBNYWNyCiAgICAgICAgICAgICByZXR1
cm4gUG9zaXRpdmVPclplcm87CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrU3BlY2lhbC5jcHAKaW5kZXggODY2MWJiZDVjYzdhZGFiM2I1YTVkMmZiZTIzMDYwZGIxYzA3
OTU3OC4uNmY3ODI2Y2I1ZjlkZjRjODk5MWVjZTBhNThkNjcxOTgyZGNmMDU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCkBAIC0xMTUsNyArMTE1LDcg
QEAgdm9pZCBDaGVja1NwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVk
TGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxsYmEKICAgICAgICAgICAgIGNhbGxiYWNrKGluc3QuYXJn
c1sxICsgaW5kZXhdLCByb2xlLCB0eXBlLCB3aWR0aCk7CiAgICAgICAgIH0pOwogCi0gICAgT3B0
aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXg7CiAgICAgaWYgKG1fY2hlY2tLaW5kLm9w
Y29kZSA9PSBCcmFuY2hBZGQzMiB8fCBtX2NoZWNrS2luZC5vcGNvZGUgPT0gQnJhbmNoQWRkNjQp
CiAgICAgICAgIGZpcnN0UmVjb3ZlcmFibGVJbmRleCA9IDE7CiAgICAgZm9yRWFjaEFyZ0ltcGwo
bnVtQjNBcmdzKGluc3QpLCBtX251bUNoZWNrQXJncyArIDEsIGluc3QsIG1fc3RhY2ttYXBSb2xl
LCBmaXJzdFJlY292ZXJhYmxlSW5kZXgsIGNhbGxiYWNrKTsKQEAgLTEzNSwxMSArMTM1LDExIEBA
IGJvb2wgQ2hlY2tTcGVjaWFsOjphZG1pdHNTdGFjayhJbnN0JiBpbnN0LCB1bnNpZ25lZCBhcmdJ
bmRleCkKICAgICByZXR1cm4gYWRtaXRzU3RhY2tJbXBsKG51bUIzQXJncyhpbnN0KSwgbV9udW1D
aGVja0FyZ3MgKyAxLCBpbnN0LCBhcmdJbmRleCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBD
aGVja1NwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGluc3QpCitzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBDaGVja1NwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGlu
c3QpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBicmFuY2hEZWYgPSBoaWRkZW5CcmFu
Y2goaW5zdCkuc2hvdWxkVHJ5QWxpYXNpbmdEZWYoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gYnJhbmNoRGVmID0gaGlkZGVuQnJhbmNoKGluc3QpLnNob3VsZFRyeUFsaWFzaW5n
RGVmKCkpCiAgICAgICAgIHJldHVybiAqYnJhbmNoRGVmICsgMTsKLSAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hl
Y2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJh
dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1NwZWNpYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3Bl
Y2lhbC5oCmluZGV4IGFlYzE4OTcxNWVjMDRmM2UwYmU5NDliZDM4NmZjZmUwYTc1OTNhY2QuLmFh
N2YyZmVhYjljODQxNTk4YzgxYTNhNTQxZTU5N2MzYzgzNGZiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgY2xhc3MgQ2hl
Y2tTcGVjaWFsIDogcHVibGljIFN0YWNrbWFwU3BlY2lhbCB7CiAgICAgdm9pZCBmb3JFYWNoQXJn
KEFpcjo6SW5zdCYsIGNvbnN0IFNjb3BlZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdDYWxsYmFj
az4mKSBvdmVycmlkZTsKICAgICBib29sIGlzVmFsaWQoQWlyOjpJbnN0Jikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBhZG1pdHNTdGFjayhBaXI6Okluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkgb3ZlcnJp
ZGU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEFpcjo6SW5z
dCYpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFz
aW5nRGVmKEFpcjo6SW5zdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gTk9URTogdGhlIGdlbmVyYXRl
IG1ldGhvZCB3aWxsIGdlbmVyYXRlIHRoZSBoaWRkZW4gYnJhbmNoIGFuZCB0aGVuIHJlZ2lzdGVy
IGEgTGF0ZVBhdGggdGhhdAogICAgIC8vIGdlbmVyYXRlcyB0aGUgc3RhY2ttYXAuIFN1cGVyIGNy
YXp5IGR1ZGUhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4
IDk3NTkyMjZlNTJiODgwOWFiNTA0YTk2YjViZGQ4MWI3NTEwODNkZDIuLjQ5MGJhZTQ0NTJjYTZj
ZTA5N2VkYTNlMDRiNDlhMzI0MGM3ZmUyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCkBAIC00MjcsMTIgKzQyNywxMiBAQCBjbGFzcyBMb3dlclRvQWlyIHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBzY2FsZUZvclNobChWYWx1ZSogc2hsLCBpbnQzMl90IG9mZnNldCwgT3B0aW9uYWw8QXJnOjpX
aWR0aD4gd2lkdGggPSBOdWxsb3B0KQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxl
Rm9yU2hsKFZhbHVlKiBzaGwsIGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEFyZzo6V2lk
dGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKHNobC0+b3Bjb2Rl
KCkgIT0gU2hsKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIXNobC0+Y2hpbGQoMSktPmhhc0ludDMyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHVuc2lnbmVkIGxvZ1NjYWxlID0gc2hsLT5jaGlsZCgxKS0+YXNJbnQz
MigpOwogICAgICAgICBpZiAoc2hsLT50eXBlKCkgPT0gSW50MzIpCiAgICAgICAgICAgICBsb2dT
Y2FsZSAmPSAzMTsKQEAgLTQ0MiwxMCArNDQyLDEwIEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAg
ICAgICAvLyB0byBzaWduZWQgc2luY2UgdGhhdCdzIHdoYXQgYWxsIG9mIG91ciBBUElzIHdhbnQu
CiAgICAgICAgIGludDY0X3QgYmlnU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvZ1NjYWxlKTsKICAgICAgICAgaWYgKCFpc1JlcHJlc2Vu
dGFibGVBczxpbnQzMl90PihiaWdTY2FsZSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHVuc2lnbmVkIHNjYWxl
ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYmlnU2NhbGUpOwogICAgICAgICBpZiAoIUFyZzo6aXNW
YWxpZEluZGV4Rm9ybShzY2FsZSwgb2Zmc2V0LCB3aWR0aCkpCi0gICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biBzY2FsZTsKICAgICB9CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsK
ICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IGFkZHJlc3MtPmNoaWxkKDEpOwogCiAgICAgICAg
ICAgICBhdXRvIHRyeUluZGV4ID0gWyZdIChWYWx1ZSogaW5kZXgsIFZhbHVlKiBiYXNlKSAtPiBB
cmcgewotICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9y
U2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXNjYWxlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgw
KSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCkBAIC0xOTM0LDcgKzE5MzQsNyBAQCBjbGFz
cyBMb3dlclRvQWlyIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYXV0byB0cnlTaGwg
PSBbJl0gKFZhbHVlKiBzaGwsIFZhbHVlKiBvdGhlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChzaGwsIG9mZnNldCk7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKHNobCwg
b2Zmc2V0KTsKICAgICAgICAgICAgIGlmICghc2NhbGUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKHNobCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRleCAzYzdmZWRlNDUwNGQ3NWYxM2ZlOWUyOTM0NWJj
YTI3Nzg3Mzc4MzkyLi5hMGFhNWE5OTA2OTc0OGUzOTRhYjliYmNlNjZkOWNhZmQ3ZTc2YTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLU9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0
ZWRDb21wYXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKK3N0ZDo6b3B0aW9uYWw8T3Bjb2Rl
PiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAob3Bjb2RlKSB7CiAgICAgY2FzZSBFcXVhbDoKQEAgLTQyLDE5ICs0MiwxOSBAQCBPcHRpb25h
bDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUpCiAgICAg
Y2FzZSBMZXNzVGhhbjoKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgcmV0
dXJuIEdyZWF0ZXJFcXVhbDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgaWYgKGlzSW50
KHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIExlc3NFcXVhbDsKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBMZXNzRXF1YWw6
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhh
bjsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgY2FzZSBHcmVhdGVyRXF1YWw6CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAg
ICAgICAgIHJldHVybiBMZXNzVGhhbjsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBBYm92ZToKICAgICAgICAgcmV0dXJuIEJl
bG93RXF1YWw7CiAgICAgY2FzZSBCZWxvdzoKQEAgLTY0LDcgKzY0LDcgQEAgT3B0aW9uYWw8T3Bj
b2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogICAgIGNhc2Ug
QmVsb3dFcXVhbDoKICAgICAgICAgcmV0dXJuIEFib3ZlOwogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCBjNjhhYWJiMGRiN2FjODE1ODI0
NTFhNDNiN2Q1ZDVkY2VlMzgyNGZiLi45NTZkYmE5OWFkYTJjYTAzMmQ4MjI0NDQ1YmE3MTZhY2Y5
ZmE4NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtMjY1LDcgKzI2NSw3
IEBAIGlubGluZSBib29sIGlzQ2hlY2tNYXRoKE9wY29kZSBvcGNvZGUpCiAgICAgfQogfQogCi1P
cHRpb25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOworc3RkOjpvcHRp
b25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOwogCiBpbmxpbmUgT3Bj
b2RlIGNvbnN0UHRyT3Bjb2RlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1BhdGNocG9pbnRTcGVjaWFsLmNwcAppbmRleCA3MWFkYWM5ZDJhOTgzY2M5Y2ZiYjlmODcxYjk1
NDRkZTFkMmMwMzQzLi5jNWZjNTg4NWQzYWNhZjg5NWM4YzljMDFkYWY4ODI3MWQ2YzFlMjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgUGF0Y2hwb2ludFNwZWNpYWw6OmZvckVhY2hBcmcoSW5z
dCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDCiAgICAgICAgIGNhbGxi
YWNrKGluc3QuYXJnc1thcmdJbmRleCsrXSwgcm9sZSwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSwg
aW5zdC5vcmlnaW4tPmFpcldpZHRoKCkpOwogICAgIH0KIAotICAgIGZvckVhY2hBcmdJbXBsKDAs
IGFyZ0luZGV4LCBpbnN0LCBTYW1lQXNSZXAsIE51bGxvcHQsIGNhbGxiYWNrKTsKKyAgICBmb3JF
YWNoQXJnSW1wbCgwLCBhcmdJbmRleCwgaW5zdCwgU2FtZUFzUmVwLCBzdGQ6Om51bGxvcHQsIGNh
bGxiYWNrKTsKICAgICBhcmdJbmRleCArPSBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsg
aS0tOykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3Bl
Y2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3Bw
CmluZGV4IDhjZjgxZDAzN2ExYzkwZmIwOGM4MjU3MTc4MmM3YmY4NTBmYjc2NDEuLmI1YWE2YzNm
ZmVjMDg5OTE2OWYxNjk4NTQwMGU3MDc4MzZiYWQ1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcApAQCAtNzMsNyArNzMsNyBAQCBSZWdpc3Rl
clNldCBTdGFja21hcFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3Qp
CiAKIHZvaWQgU3RhY2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCgKICAgICB1bnNpZ25lZCBu
dW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywKLSAgICBJbnN0JiBp
bnN0LCBSb2xlTW9kZSByb2xlTW9kZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFi
bGVJbmRleCwKKyAgICBJbnN0JiBpbnN0LCBSb2xlTW9kZSByb2xlTW9kZSwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4LAogICAgIGNvbnN0IFNjb3BlZExhbWJk
YTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKICAgICBTdGFja21hcFZhbHVl
KiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxTdGFja21hcFZhbHVlPigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAppbmRleCBiZDZhM2I1NDc0ODk4NzY1
OTNlNTUxZDZlMjgxYjNkYmJjNjc3YTE3Li45N2EwODEzZDFkYzU4MTllMGIxNzgyNGU3MGZiZThk
NDkyMDkyYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21h
cFNwZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNp
YWwuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBTdGFja21hcFNwZWNpYWwgOiBwdWJsaWMgQWly
OjpTcGVjaWFsIHsKICAgICAvLyBzdWJjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoYXQuCiAgICAg
dm9pZCBmb3JFYWNoQXJnSW1wbCgKICAgICAgICAgdW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywg
dW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsCi0gICAgICAgIEFpcjo6SW5zdCYsIFJvbGVNb2Rl
LCBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4LAorICAgICAgICBBaXI6
Okluc3QmLCBSb2xlTW9kZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJs
ZUluZGV4LAogICAgICAgICBjb25zdCBTY29wZWRMYW1iZGE8QWlyOjpJbnN0OjpFYWNoQXJnQ2Fs
bGJhY2s+Jik7CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkSW1wbCgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAppbmRleCA2NDQxMGFjNTRmYzk1ZDYzYTdkNTE5MDMzYTg4ZWUzMGYwMWM5
NzUwLi5iNGZjNDMzNjk5ZDAxYWE2MGIzM2ZmMGUxMDMzMWY4M2I0ZjRmMGVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgVmFsdWUqIFZhbHVl
OjppbnZlcnRlZENvbXBhcmUoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogewogICAgIGlmICghbnVt
Q2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKE9wdGlvbmFsPE9w
Y29kZT4gaW52ZXJ0ZWRPcGNvZGUgPSBCMzo6aW52ZXJ0ZWRDb21wYXJlKG9wY29kZSgpLCBjaGls
ZCgwKS0+dHlwZSgpKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRP
cGNvZGUgPSBCMzo6aW52ZXJ0ZWRDb21wYXJlKG9wY29kZSgpLCBjaGlsZCgwKS0+dHlwZSgpKSkg
ewogICAgICAgICBBU1NFUlQoIWtpbmQoKS5oYXNFeHRyYUJpdHMoKSk7CiAgICAgICAgIHJldHVy
biBwcm9jLmFkZDxWYWx1ZT4oKmludmVydGVkT3Bjb2RlLCB0eXBlKCksIG9yaWdpbigpLCBjaGls
ZHJlbigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCAy
ZTllNTdkNmNlMTFkMGY0MDkwZTIwMmI4ZTRiNWY5ZjVjNmY1YzZkLi4xM2RiMWNlN2VmOTc4Y2Rh
YjcxYjdhZjM3YzUyMWZkOGEyOGE4Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgKQEAgLTU0NSw3ICs1NDUsNyBAQCBjbGFzcyBBcmcgewogICAgIH0KIAogICAgIC8vIElm
IHlvdSBkb24ndCBwYXNzIGEgV2lkdGgsIHRoaXMgb3B0aW1pc3RpY2FsbHkgYXNzdW1lcyB0aGF0
IHlvdSdyZSB1c2luZyB0aGUgcmlnaHQgd2lkdGguCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFNj
YWxlKHVuc2lnbmVkIHNjYWxlLCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBOdWxsb3B0KQorICAg
IHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgc3RkOjpvcHRpb25hbDxX
aWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHNjYWxl
KSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTEwODUsNyArMTA4NSw3IEBAIGNsYXNzIEFyZyB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRk
ckZvcm0oaW50MzJfdCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IE51bGxvcHQpCisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChpc1g4
NigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCBjbGFz
cyBBcmcgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wg
aXNWYWxpZEluZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgaW50MzJfdCBvZmZzZXQsIE9wdGlvbmFs
PFdpZHRoPiB3aWR0aCA9IE51bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEluZGV4Rm9y
bSh1bnNpZ25lZCBzY2FsZSwgaW50MzJfdCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdp
ZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkU2NhbGUoc2Nh
bGUsIHdpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMjQsNyArMTEyNCw3
IEBAIGNsYXNzIEFyZyB7CiAgICAgLy8gSWYgeW91IGRvbid0IHBhc3MgYSB3aWR0aCB0aGVuIHRo
aXMgb3B0aW1pc3RpY2FsbHkgYXNzdW1lcyB0aGF0IHlvdSdyZSB1c2luZyB0aGUgcmlnaHQgd2lk
dGguIEJ1dAogICAgIC8vIHRoZSB3aWR0aCBpcyByZWxldmFudCB0byB2YWxpZGl0eSwgc28gcGFz
c2luZyBhIG51bGwgd2lkdGggaXMgb25seSB1c2VmdWwgZm9yIGFzc2VydGlvbnMuIERvbid0CiAg
ICAgLy8gcGFzcyBudWxsIHdpZHRocyB3aGVuIGNhc2NhZGluZyB0aHJvdWdoIEFyZ3MgaW4gdGhl
IGluc3RydWN0aW9uIHNlbGVjdG9yIQotICAgIGJvb2wgaXNWYWxpZEZvcm0oT3B0aW9uYWw8V2lk
dGg+IHdpZHRoID0gTnVsbG9wdCkgY29uc3QKKyAgICBib29sIGlzVmFsaWRGb3JtKHN0ZDo6b3B0
aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAgIHsKICAgICAgICAg
c3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnZhbGlkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKaW5kZXggYjBkNTVjZGZhYzM1MDlhZDAzOTNhNDFmMDFl
NWFmYTg1N2Y4NjU1MC4uNjQ0YjdhMWIyOWUwZWNjZTM5NjM4ZmJjMmZmNTlhM2NmMTlmODMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCkBAIC04Miw3ICs4Miw3
IEBAIHN0cnVjdCBQYXRjaEN1c3RvbSB7CiAgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uc3Bl
Y2lhbCgpLT5hZG1pdHNTdGFjayhpbnN0LCBhcmdJbmRleCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0
JiBpbnN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGluc3QuYXJnc1swXS5zcGVjaWFsKCktPnNo
b3VsZFRyeUFsaWFzaW5nRGVmKGluc3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IGVjODlhYzUyZjQz
YzhmZjdjNTcxYmU3NGViZTE4M2M5YWYzMDU5ZjcuLmQwMDBkNmM1ZDNiMjJiZDFkOTM0MDIwZjQw
MjAxYTVkMjAwNmJmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4T2J2aW91c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcApAQCAtMTI5LDEyICsxMjksMTIgQEAgY2xhc3MgRml4
T2J2aW91c1NwaWxscyB7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNTcGlsbFNsb3QoaW5z
dC5hcmdzWzFdKSkKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhTbG90Q29u
c3QoaW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCBpbnN0LmFyZ3NbMF0udmFsdWUoKSkpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMF0pICYmIGluc3QuYXJn
c1sxXS5pc1JlZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+IGNv
bnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAgICAg
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFu
dEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFz
KFJlZ0NvbnN0KGluc3QuYXJnc1sxXS5yZWcoKSwgKmNvbnN0YW50KSk7CiAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5hZGRBbGlhcygKICAgICAgICAgICAgICAgICAgICAgUmVnU2xvdChpbnN0LmFy
Z3NbMV0ucmVnKCksIGluc3QuYXJnc1swXS5zdGFja1Nsb3QoKSwgUmVnU2xvdDo6QWxsQml0cykp
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChpbnN0LmFyZ3NbMF0uaXNSZWcoKSAmJiBpc1NwaWxs
U2xvdChpbnN0LmFyZ3NbMV0pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0
X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAg
ICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5j
b25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLmFk
ZEFsaWFzKFNsb3RDb25zdChpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksICpjb25zdGFudCkpOwog
ICAgICAgICAgICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoCiAgICAgICAgICAgICAgICAgICAgIFJl
Z1Nsb3QoaW5zdC5hcmdzWzBdLnJlZygpLCBpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksIFJlZ1Ns
b3Q6OkFsbEJpdHMpKTsKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGNsYXNzIEZpeE9idmlvdXNTcGls
bHMgewogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzU3BpbGxTbG90KGluc3QuYXJnc1sxXSkp
CiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoU2xvdENvbnN0KGluc3QuYXJn
c1sxXS5zdGFja1Nsb3QoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGluc3QuYXJnc1swXS52YWx1
ZSgpKSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMF0p
ICYmIGluc3QuYXJnc1sxXS5pc1JlZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFs
PGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQor
ICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9z
dGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlLmFkZEFsaWFzKFJlZ0NvbnN0KGluc3QuYXJnc1sxXS5yZWcoKSwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KCpjb25zdGFudCkpKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFzKAog
ICAgICAgICAgICAgICAgICAgICBSZWdTbG90KGluc3QuYXJnc1sxXS5yZWcoKSwgaW5zdC5hcmdz
WzBdLnN0YWNrU2xvdCgpLCBSZWdTbG90OjpaRXh0MzIpKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaW5zdC5hcmdzWzBdLmlzUmVnKCkgJiYgaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzFdKSkgewot
ICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUu
Y29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBd
KSkKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhTbG90Q29uc3QoaW5zdC5h
cmdzWzFdLnN0YWNrU2xvdCgpLCBzdGF0aWNfY2FzdDxpbnQzMl90PigqY29uc3RhbnQpKSk7CiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcygKICAgICAgICAgICAgICAgICAgICAgUmVn
U2xvdChpbnN0LmFyZ3NbMF0ucmVnKCksIGluc3QuYXJnc1sxXS5zdGFja1Nsb3QoKSwgUmVnU2xv
dDo6TWF0Y2gzMikpOwpAQCAtNDU0LDE5ICs0NTQsMTkgQEAgY2xhc3MgRml4T2J2aW91c1NwaWxs
cyB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIE9w
dGlvbmFsPGludDY0X3Q+IGNvbnN0YW50Rm9yKGNvbnN0IEFyZyYgYXJnKQorICAgICAgICBzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50Rm9yKGNvbnN0IEFyZyYgYXJnKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoYXJnLmlzUmVnKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29u
c3QgUmVnQ29uc3QqIGFsaWFzID0gZ2V0UmVnQ29uc3QoYXJnLnJlZygpKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFsaWFzLT5jb25zdGFudDsKLSAgICAgICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGFyZy5pc1N0YWNrKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IGdldFNsb3RDb25zdChhcmcuc3RhY2tTbG90KCkp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxpYXMtPmNvbnN0YW50OwotICAgICAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGNsb2Ji
ZXIoY29uc3QgQXJnJiBhcmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpckluc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCmlu
ZGV4IDMwZjI0ZDg2NGJjZGZmMGRhZGE3NGFhZDc0NWEyOWJiM2ExMTQ3ZjMuLmYzOGMyMWRmODRh
ODM4ZjliMmZkNDdkOGMzZDM2MDg3NmFkYmVjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlySW5zdC5oCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RydWN0IEluc3QgewogICAgIC8vIEZv
ciBleGFtcGxlLAogICAgIC8vICAgICBBZGQgVG1wMSwgVG1wMiwgVG1wMwogICAgIC8vIHJldHVy
bnMgMiBpZiAwIGFuZCAxIGJlbmVmaXQgZnJvbSBhbGlhc2luZyB0byBUbXAzLgotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZigpOworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKCk7CiAgICAgCiAgICAgLy8gVGhpcyBjb21w
dXRlcyBhIGhhc2ggZm9yIGNvbXBhcmluZyB0aGlzIHRvIEpTQWlyJ3MgSW5zdC4KICAgICB1bnNp
Z25lZCBqc0hhc2goKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
SW5zdElubGluZXMuaAppbmRleCAxYWFhMDZjNTBjMDg2N2MxNWVjMTMzOGFlY2IyNzg3NzE4OWYw
NDY0Li5iNzUzOTIxZTE5YjEyNDUwZDA0NDA1MDU0YjliMzBkOTk4MTgzODNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCkBAIC0xMTEsMTAgKzEx
MSwxMCBAQCBpbmxpbmUgYm9vbCBJbnN0OjphZG1pdHNTdGFjayhBcmcmIGFyZykKICAgICByZXR1
cm4gYWRtaXRzU3RhY2soJmFyZyAtICZhcmdzWzBdKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPHVu
c2lnbmVkPiBJbnN0OjpzaG91bGRUcnlBbGlhc2luZ0RlZigpCitpbmxpbmUgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKQogewogICAgIGlmICghaXNY
ODYoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKSB7CiAgICAgY2FzZSBBZGQzMjoKQEAgLTE0
MCw3ICsxNDAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFs
aWFzaW5nRGVmKCkKICAgICBjYXNlIE11bEZsb2F0OgogI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpCiAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNBVlgoKSkKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogICAgICAgICBpZiAoYXJncy5zaXplKCkgPT0gMykKICAgICAgICAgICAgIHJldHVybiAy
OwpAQCAtMTcxLDcgKzE3MSw3IEBAIGlubGluZSBPcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hv
dWxkVHJ5QWxpYXNpbmdEZWYoKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxp
bmUgYm9vbCBpc1NoaWZ0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVz
Y2luZy5jcHAKaW5kZXggOTRkNjI5MTg4ZmE1NTRjMzhkYTVkN2UwMzVjZWFmODM3MWNjNmU4ZS4u
YmQxYTVjNzk2MmIzMmQwODcwMjA2Y2QyMDU1ZTY2ZmM4MTNlMThkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVy
Q29hbGVzY2luZy5jcHAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIGNsYXNzIENvbG9yaW5nQWxsb2Nh
dG9yIDogcHVibGljIEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+IHsKICAgICAg
ICAgbV93b3JrbGlzdE1vdmVzLnN0YXJ0QWRkaW5nTG93UHJpb3JpdHlNb3ZlcygpOwogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CiAgICAgICAgICAgICBmb3IgKElu
c3QmIGluc3QgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8dW5zaWdu
ZWQ+IGRlZkFyZ0luZGV4ID0gaW5zdC5zaG91bGRUcnlBbGlhc2luZ0RlZigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRlZkFyZ0luZGV4ID0gaW5zdC5z
aG91bGRUcnlBbGlhc2luZ0RlZigpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFyZyBvcDEgPSBp
bnN0LmFyZ3NbKmRlZkFyZ0luZGV4IC0gMl07CiAgICAgICAgICAgICAgICAgICAgIEFyZyBvcDIg
PSBpbnN0LmFyZ3NbKmRlZkFyZ0luZGV4IC0gMV07CiAgICAgICAgICAgICAgICAgICAgIEFyZyBk
ZXN0ID0gaW5zdC5hcmdzWypkZWZBcmdJbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGVjaWFsLmNwcAppbmRleCAwYTcyMmU4MTBhNTZkNTQ1NWMxMmFkMDExZTEzNzVm
OGViMzI3ZTI5Li5lODI1NzY3YjA0ZDhhYjNiOWNlYzc1YWY0ZTkxOTgwYTg5MjkwNTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTUwLDkgKzUw
LDkgQEAgQ1N0cmluZyBTcGVjaWFsOjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gb3V0LnRvQ1N0
cmluZygpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNp
bmdEZWYoSW5zdCYpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBTcGVjaWFsOjpzaG91bGRUcnlB
bGlhc2luZ0RlZihJbnN0JikKIHsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBib29sIFNwZWNpYWw6OmlzVGVybWluYWwoSW5zdCYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCmluZGV4IDZjMTBjYjU3ZjliNGNiOWU5
OGNiMjg1ZTY2NzU1YmFkZjIzMTZjZTkuLjQ4MGNiZmNiYTU4ZmRkZTgxMTYzNmQ4NmYyNjdiNTFj
OGE2YzhiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3Bl
Y2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCkBA
IC01NSw3ICs1NSw3IEBAIGNsYXNzIFNwZWNpYWwgewogICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNo
QXJnKEluc3QmLCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZChJbnN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBhZG1pdHNTdGFjayhJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFs
IE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7CisgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7
CiAKICAgICAvLyBUaGlzIGdldHMgY2FsbGVkIG9uIGZvciBlYWNoIEluc3QgdGhhdCB1c2VzIHRo
aXMgU3BlY2lhbC4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHdheSB0bwogICAgIC8vIGd1YXJhbnRl
ZSB0aGF0IGEgU3BlY2lhbCBnZXRzIHVzZWQgZnJvbSBqdXN0IG9uZSBJbnN0LCBiZWNhdXNlIEFp
ciBtaWdodCB0YWlsZHVwIGxhdGUuIFNvLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXgg
OTU5MDNlMjFlYmRmMTk0MGE5ZmQwNzgzYjEwZjgyZjJiYTdmYjdiMy4uZjdlMWU5YTNkNmQ5YmU4
ZTg3M2M2ZjcyODA4NTE1ODE1NDFmYmE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gewogCiAg
ICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgICAgIG1fc3Rv
cmFnZXMucmVzaXplKGluZGV4ICsgMSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBz
dG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPFN0
b3JhZ2U+IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKICAgICAgICAgICAgIHJldHVybiAq
c3RvcmFnZTsKIAogICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBjbGFzcyBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbiB7CiAKICAgICB1bnNpZ25lZCBtX2VudGVyUG9pbnQgeyAwIH07CiAgICAgQnl0
ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKLSAgICBWZWN0b3I8T3B0aW9u
YWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8U3RvcmFn
ZT4+IG1fc3RvcmFnZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwogICAgIFN0cm9uZzxTeW1ib2xU
YWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOwogICAgIGludCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggMjQ5ZDExM2ZhMDgzODkyZDk2ZTIwNzVkYTNjZjI2ZjE2MTY3N2Ix
Mi4uYTEyYmMwYTMwODRiNmEwMmM3NTJkNTU4OTFlYTI5ZmJjMDljNmM2NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ1MTIsMjkgKzQ1MTIs
MjkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5pcXVlX3B0
cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJiBtYXApCiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcCA9IFdU
Rk1vdmUobWFwKTsKIH0KIAotT3B0aW9uYWw8Q29kZU9yaWdpbj4gQ29kZUJsb2NrOjpmaW5kUEMo
dm9pZCogcGMpCitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZv
aWQqIHBjKQogewogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwKSB7Ci0gICAgICAgIGlmIChP
cHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gbV9wY1RvQ29kZU9yaWdpbk1hcC0+Zmlu
ZFBDKHBjKSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdp
biA9IG1fcGNUb0NvZGVPcmlnaW5NYXAtPmZpbmRQQyhwYykpCiAgICAgICAgICAgICByZXR1cm4g
Y29kZU9yaWdpbjsKICAgICB9CiAKICAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0
ZXJhdG9yIGl0ZXIgPSBtX3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YiA9ICppdGVyOwogICAgICAgICBpZiAoc3R1Yi0+
Y29udGFpbnNQQyhwYykpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdpbj4o
c3R1Yi0+Y29kZU9yaWdpbik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2Rl
T3JpZ2luPihzdHViLT5jb2RlT3JpZ2luKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8Q29k
ZU9yaWdpbj4gY29kZU9yaWdpbiA9IG1faml0Q29kZS0+ZmluZFBDKHRoaXMsIHBjKSkKKyAgICBp
ZiAoc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gbV9qaXRDb2RlLT5maW5k
UEModGhpcywgcGMpKQogICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsKIAotICAgIHJldHVybiBO
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKIAotT3B0aW9uYWw8dW5zaWduZWQ+IENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXRGcm9tQ2Fs
bFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgpCitzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4KQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29k
ZU9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldDsKICAg
ICBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUgPSB0aGlzLT5qaXRUeXBlKCk7CiAgICAgaWYgKGpp
dFR5cGUgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2YmI5MWRiNTJhZWZlZDcyZmIyZTdlNTMwODU0
ZTZiMWYxZWZlMmIyLi5hYWZlYTE5YWZiYmY2MTUzODU2MzViODEzNDIzZGNkYzQ2OTdjYzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMzMsNyAr
MjMzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBleHBy
ZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50
JiBkaXZvdCwKICAgICAgICAgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2ln
bmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOworICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgo
Q2FsbFNpdGVJbmRleCk7CiAKICAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U3R1YkluZm9N
YXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7CkBAIC04ODksNyArODg5LDcgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgc2V0UENU
b0NvZGVPcmlnaW5NYXAoc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiYmKTsKLSAg
ICBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEModm9pZCogcGMpOworICAgIHN0ZDo6b3B0aW9u
YWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBlM2FmNjFmNWM4ODg5OThlMDk1ZGFjYmY5Njhj
ZTYyN2JmMmIyZTc2Li45NTJlOThiYTMzYjJhMmI1ZjAyNmViOWY0OGE4NGIwY2RhNWZhYWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0bwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2Vk
Q29kZUJsb2NrRm9yQ29uc3RydWN0KTsKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVy
U291cmNlLCBPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciwgSW50cmluc2ljIGludHJp
bnNpYykKK0Z1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6Omxp
bmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBvd25lclNvdXJjZSwgc3RkOjpvcHRpb25hbDxp
bnQ+IG92ZXJyaWRlTGluZU51bWJlciwgSW50cmluc2ljIGludHJpbnNpYykKIHsKICAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1fc291cmNlT3ZlcnJpZGUgPyBTb3VyY2VDb2RlKG1fc291cmNlT3Zl
cnJpZGUpIDogb3duZXJTb3VyY2U7CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291cmNlLmZp
cnN0TGluZSgpICsgbV9maXJzdExpbmVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4
IDZmNTU4Y2Y3YTk3NGM4NTMzM2JhODUyMzAwMjE4ZmUyMzEyMmUxNjUuLmJmM2M1Mjg4YmNiYjAz
ZWQyYjk5ZDExZjllOTcwYjU3NzY1OTU2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0x
MDYsNyArMTA2LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCiAgICAgICAgIGludCBvdmVy
cmlkZUxpbmVOdW1iZXIpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVjdXRh
YmxlKiBsaW5rKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVM
aW5lTnVtYmVyID0gTnVsbG9wdCwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGluayhWTSYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBzdGQ6Om9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0
LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYyk7CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDA0NmQyYTc2NTgzNzlmMjA4MDExMmRkYWE0MGQ4ODgzZmU1Yzli
ZjAuLmJmMTMyMGZkOWQ2MTZhMTczZDFjZGQ3YTU5YzBiZGEwMTY2ZmNiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTkxMCw3ICs5MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKICAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFREWk5lY2Vzc2l0
eUxldmVsLCBJZGVudGlmaWVyUmVwSGFzaD4gVERaTWFwOwogICAgICAgICBWZWN0b3I8VERaTWFw
PiBtX1REWlN0YWNrOwotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVTeW1ib2xU
YWJsZUluZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV92YXJTY29wZVN5bWJv
bFRhYmxlSW5kZXg7CiAgICAgICAgIHZvaWQgcHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiwgVERaQ2hlY2tPcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50KTsKIAog
ICAgICAgICBTY29wZU5vZGUqIGNvbnN0IG1fc2NvcGVOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGVkYjY1ZDdk
ZWU5MGNjMmUyMjMwOGExZGUxYzI5NjBhOTY2ODY4NzMuLjY4YWViNWFhNGYyNmY0OTdjMDcyNmRi
NjE0MzI1MzEyM2E1ZTdlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjb25zdCBhdXRv
KiBpZGVudGlmaWVyID0gbm9kZS5uYW1lKCkpIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KCppZGVudGlmaWVyKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgoKmlkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIW9wdGlvbmFsSW5kZXgpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RGlyZWN0UHV0QnlJZChuZXdPYmosICppZGVudGlmaWVyLCB2YWx1ZS5nZXQoKSwgbm9kZS5w
dXRUeXBlKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzk2Nyw3ICszOTY3LDcgQEAgdm9p
ZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGlmICghdGFyZ2V0LnByb3BlcnR5RXhw
cmVzc2lvbikgewogICAgICAgICAgICAgLy8gU2hvdWxkIG5vdCBlbWl0IGdldF9ieV9pZCBmb3Ig
aW5kZXhlZCBvbmVzLgotICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5k
ZXggPSBwYXJzZUluZGV4KHRhcmdldC5wcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgodGFyZ2V0LnByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbmFsSW5kZXgpCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAuZ2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwCmluZGV4IDk4YWNkMzJkY2Y0MTI0NmIzZjRlYzJjZjhjM2FlYWIzYTI2
MTI3ODguLmRlMjNlMTM5ZDY0YzY1NWFhZjJiMDRjOWZjZmRiYjliMWQ5MzI3NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMzYwLDcgKzM2MCw3
IEBAIHZvaWQgRGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9p
bnQsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQCiAgICAgdW5zaWduZWQgY29sdW1uID0gYnJlYWtw
b2ludC5jb2x1bW4gPyBicmVha3BvaW50LmNvbHVtbiA6IEJyZWFrcG9pbnQ6OnVuc3BlY2lmaWVk
Q29sdW1uOwogCiAgICAgRGVidWdnZXJQYXJzZURhdGEmIHBhcnNlRGF0YSA9IGRlYnVnZ2VyUGFy
c2VEYXRhKGJyZWFrcG9pbnQuc291cmNlSUQsIHNvdXJjZVByb3ZpZGVyKTsKLSAgICBPcHRpb25h
bDxKU1RleHRQb3NpdGlvbj4gcmVzb2x2ZWRQb3NpdGlvbiA9IHBhcnNlRGF0YS5wYXVzZVBvc2l0
aW9ucy5icmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKChpbnQpbGluZSwgKGludCljb2x1
bW4pOworICAgIHN0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IHJlc29sdmVkUG9zaXRpb24g
PSBwYXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVt
bigoaW50KWxpbmUsIChpbnQpY29sdW1uKTsKICAgICBpZiAoIXJlc29sdmVkUG9zaXRpb24pCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggMTZhYzFhZGQ5ZjI3ZjJkOTkwMTQwNTBhM2Jj
NmIwYjNhNWI5MWU0NC4uN2Y4MjEyNzM5NTBjYTMzM2ZmNTdiZjQ2ZjUzNjQzMjE3MTgxM2JhOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgVGV4dFBvc2l0aW9uIERlYnVnZ2VyQ2FsbEZy
YW1lOjpjdXJyZW50UG9zaXRpb24oKQogCiAgICAgaWYgKGlzVGFpbERlbGV0ZWQoKSkgewogICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNvZGVCbG9j
azsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXRGcm9tQ2FsbFNpdGVJbmRleChtX3NoYWRvd0NoaWNrZW5GcmFt
ZS5jYWxsU2l0ZUluZGV4KSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Ynl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5k
ZXgobV9zaGFkb3dDaGlja2VuRnJhbWUuY2FsbFNpdGVJbmRleCkpIHsKICAgICAgICAgICAgIHJl
dHVybiBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGNvZGVCbG9j
ay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KCpieXRlY29kZU9mZnNldCkpLAogICAgICAg
ICAgICAgICAgIE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChjb2RlQmxvY2stPmNvbHVt
bk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KCpieXRlY29kZU9mZnNldCkpKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0
YS5jcHAKaW5kZXggZTcxYWFjNjRmMzIyYThmYmQ4MTRmMDI4MTVhODU2ZDYzMDI2YmY5Yy4uM2Iw
NThiYWJmYjEzNzEzN2Y0MDUzZTA4OTg1Yjk0MWY2MTFkYjIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1PcHRpb25hbDxKU1RleHRQb3NpdGlvbj4g
RGVidWdnZXJQYXVzZVBvc2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihp
bnQgbGluZSwgaW50IGNvbHVtbikKK3N0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVn
Z2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oaW50IGxp
bmUsIGludCBjb2x1bW4pCiB7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwogICAgIHVuc2lnbmVk
IGVuZCA9IG1fcG9zaXRpb25zLnNpemUoKTsKQEAgLTU0LDcgKzU0LDcgQEAgT3B0aW9uYWw8SlNU
ZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZv
ckxpbmVDb2x1bW4KICAgICAgICAgICAgIC8vIFdlIGFyZSBndWFyZW50ZWVkIHRvIGhhdmUgYSBM
ZWF2ZSBmb3IgYW4gRW50cnkgc28gd2UgZG9uJ3QgbmVlZCB0byBib3VuZHMgY2hlY2suCiAgICAg
ICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIGlmIChwYXVzZVBvc2l0aW9u
LnR5cGUgIT0gRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6RW50ZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4ocGF1c2VQb3NpdGlvbi5wb3Np
dGlvbik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBv
c2l0aW9uPihwYXVzZVBvc2l0aW9uLnBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICBwYXVzZVBv
c2l0aW9uID0gbV9wb3NpdGlvbnNbbWlkZGxlKytdOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNl
UG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uCiAKICAgICAvLyBQYXN0
IHRoZSBlbmQsIG5vIHBvc3NpYmxlIHBhdXNlIGxvY2F0aW9ucy4KICAgICBpZiAoc3RhcnQgPj0g
bV9wb3NpdGlvbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSBuZXh0IGxvY2F0aW9uIGlzIGEgZnVu
Y3Rpb24gRW50cnkgd2Ugd2lsbCBuZWVkIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgZ28gaW50bwog
ICAgIC8vIHRoZSBmdW5jdGlvbiBvciBnbyBwYXN0IHRoZSBmdW5jdGlvbi4gV2UgZGVjaWRlIHRv
IGdvIGludG8gdGhlIGZ1bmN0aW9uIGlmIHRoZQpAQCAtODcsNyArODcsNyBAQCBPcHRpb25hbDxK
U1RleHRQb3NpdGlvbj4gRGVidWdnZXJQYXVzZVBvc2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9u
Rm9yTGluZUNvbHVtbgogICAgIC8vIFZhbGlkIHBhdXNlIGxvY2F0aW9uLiBVc2UgaXQuCiAgICAg
RGVidWdnZXJQYXVzZVBvc2l0aW9uJiBmaXJzdFNsaWRlUG9zaXRpb24gPSBtX3Bvc2l0aW9uc1tz
dGFydF07CiAgICAgaWYgKGZpcnN0U2xpZGVQb3NpdGlvbi50eXBlICE9IERlYnVnZ2VyUGF1c2VQ
b3NpdGlvblR5cGU6OkVudGVyKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8SlNUZXh0UG9zaXRp
b24+KGZpcnN0U2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPEpTVGV4dFBvc2l0aW9uPihmaXJzdFNsaWRlUG9zaXRpb24ucG9zaXRpb24pOwogCiAg
ICAgLy8gRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBlbnRlciB0aGlzIGZ1bmN0aW9uIG9yIHNraXAg
cGFzdCBpdC4KICAgICAvLyBJZiBlbnRyeVN0YWNrU2l6ZSBpcyA+IDAgd2UgYXJlIHNraXBwaW5n
IGZ1bmN0aW9ucy4KQEAgLTExMywxMSArMTEzLDExIEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9u
PiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1u
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGb3VuZCBwYXVzZSBwb3NpdGlvbi4KLSAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihzbGlkZVBvc2l0aW9uLnBvc2l0aW9uKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+KHNsaWRlUG9zaXRp
b24ucG9zaXRpb24pOwogICAgIH0KIAogICAgIC8vIE5vIHBhdXNlIHBvc2l0aW9ucyBmb3VuZC4K
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OnNvcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuaAppbmRleCAwNjIyNTE1NWUxNDVjMzg4
MTY1ZDMxNDg4YWNlMjU5ZGExM2NiMDliLi5lY2M3OGQwZDRiZmRkMjNlNjE0YmI2MTdlNGYyNWUz
MzNlMjQxMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJQYXJzZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJQYXJzZURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBEZWJ1Z2dlclBhdXNlUG9z
aXRpb25zIHsKICAgICAgICAgbV9wb3NpdGlvbnMuYXBwZW5kKHsgRGVidWdnZXJQYXVzZVBvc2l0
aW9uVHlwZTo6TGVhdmUsIHBvc2l0aW9uIH0pOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEpTVGV4
dFBvc2l0aW9uPiBicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQg
Y29sdW1uKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBicmVha3BvaW50TG9j
YXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQgY29sdW1uKTsKIAogICAgIHZvaWQgc29y
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQ
cm9maWxpbmdTY29wZS5oCmluZGV4IDk5NjI0ZGJmMTBlMTQ4OGZlYWVkMzI5NTkzYjJhOTRmNjFk
MTBhNDEuLmU0MDMzN2ZlOWQzNmMzYjNkZTIxMjg0ZTRiZDFmNTZhZDI5MDY0OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29wZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29w
ZS5oCkBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGluZ1Njb3BlIHsKICAgICB9
CiAKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3QgeyBudWxscHRyIH07Ci0gICAg
T3B0aW9uYWw8ZG91YmxlPiBtX3N0YXJ0VGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bV9zdGFydFRpbWU7CiAgICAgUHJvZmlsaW5nUmVhc29uIG1fcmVhc29uOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCmluZGV4IDVkZjRkYTM1ODFmNTFmYTY2YTg4ZDE5MGY0Y2I4Y2E5MDZhMmY3ZmYu
LmQ0YmUxMmEyNzM0OWFkNDhhNzdiMTVkZGY1YjY5MDVhMzVhZmM4OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAKICAgICBjYXNlIERvdWJsZVJlcDogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4g
bnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUo
KSkgewogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoKm51bWJl
cikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU0OSw3ICs1NDksNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogCiAgICAgY2FzZSBBcml0aENsejMyOiB7CiAgICAgICAg
IEpTVmFsdWUgb3BlcmFuZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAg
ICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IG9wZXJhbmQudG9OdW1iZXJGcm9tUHJp
bWl0aXZlKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBv
cGVyYW5kLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAgICAgICB1aW50MzJfdCB2
YWx1ZSA9IHRvVUludDMyKCpudW1iZXIpOwogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIoY2x6MzIodmFsdWUpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTg1NSw3ICs4
NTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAg
IGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2
ZSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNo
aWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihmYWJzKCpudW1iZXIpKTsKICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBy
ZXN1bHQpOwpAQCAtODY1LDcgKzg2NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgICAgICBpZiAoT3B0
aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewor
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051
bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzRG91YmxlTnVtYmVyKGZhYnMoKm51bWJlcikpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KQEAgLTkwNyw3ICs5MDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgIGNhc2UgQXJpdGhDZWlsOgogICAgIGNhc2UgQXJpdGhUcnVuYzogewogICAgICAgICBK
U1ZhbHVlIG9wZXJhbmQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAg
ICBpZiAoT3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBvcGVyYW5kLnRvTnVtYmVyRnJvbVByaW1p
dGl2ZSgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gb3Bl
cmFuZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgZG91YmxlIHJvdW5k
ZWRWYWx1ZSA9IDA7CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcml0aFJvdW5kKQog
ICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IGpzUm91bmQoKm51bWJlcik7CkBAIC05OTUs
NyArOTk1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgTWFwSGFzaDog
ewogICAgICAgICBpZiAoSlNWYWx1ZSBrZXkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGhhc2ggPSBjb25jdXJy
ZW50SlNNYXBIYXNoKGtleSkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBoYXNoID0gY29uY3VycmVudEpTTWFwSGFzaChrZXkpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gQWx0aG91Z2ggQysrIGNvZGUgdXNlcyB1aW50MzJfdCBmb3IgdGhlIGhhc2gsIHRoZSBjbG9z
ZXN0IHR5cGUgaW4gREZHIElSIGlzIEludDMyCiAgICAgICAgICAgICAgICAgLy8gYW5kIHRoYXQn
cyB3aGF0IE1hcEhhc2ggcmV0dXJucy4gU28sIHdlIGhhdmUgdG8gY2FzdCB0byBpbnQzMl90IHRv
IGF2b2lkIGxhcmdlCiAgICAgICAgICAgICAgICAgLy8gdW5zaWduZWQgdmFsdWVzIGJlY29taW5n
IGRvdWJsZXMuIFRoaXMgY2FzdGluZyBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQKQEAgLTMx
NjUsNyArMzE2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogdm9p
ZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZURvdWJsZVVu
YXJ5T3BFZmZlY3RzKE5vZGUqIG5vZGUsIGRvdWJsZSgqZXF1aXZhbGVudEZ1bmN0aW9uKShkb3Vi
bGUpKQogewogICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpOwotICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJv
bVByaW1pdGl2ZSgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBj
aGlsZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc0RvdWJsZU51bWJlcihlcXVpdmFsZW50RnVuY3Rpb24oKm51bWJlcikpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCmlu
ZGV4IGU5YWMzZTU5ZGE4MDc2MzQwZWZhMzg5N2U5NDViMjJlNjc5YWRiYTYuLjdmYjlmNzE2Y2Jm
YzQ5Y2I0M2JiMzM2ZWM3NWM2ZGI4YTJiYjljNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmNwcApAQCAtMjE1LDE2ICsyMTUsMTYgQEAgdm9pZCBKSVRDb2RlOjp2YWxp
ZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2Vz
KQogICAgIG1pbmlmaWVkREZHLnZhbGlkYXRlUmVmZXJlbmNlcyh0cmFja2VkUmVmZXJlbmNlcyk7
CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2
b2lkKiBwYykKK3N0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVC
bG9jayosIHZvaWQqIHBjKQogewogICAgIGZvciAoT1NSRXhpdCYgZXhpdCA6IG9zckV4aXQpIHsK
ICAgICAgICAgaWYgKEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGV4aXQubV9jb2Rl
LmV4ZWN1dGFibGVNZW1vcnkoKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKSA8
PSBwYyAmJiBwYyA8IGhhbmRsZS0+ZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPENvZGVPcmlnaW4+KGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUpOworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KGV4aXQubV9jb2RlT3Jp
Z2luRm9yRXhpdFByb2ZpbGUpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCBlMWYxZDdjYTAx
M2FhYWQyYWE3MGM4YWZiNzgxMmQ0ZDVjMTE0NWVjLi5hZWU4NzQyZjM4NWQxN2JhZmE4NTQ5NDY3
M2M5NDVlYzg4YTg3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApA
QCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7
CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IGNvbW1vbkRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSklUQ29kZSwgY29tbW9uKTsgfQogCi0gICAgT3B0aW9uYWw8Q29kZU9yaWdp
bj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgb3ZlcnJpZGU7CiAg
ICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBKSVRDb21waWxlcjsgLy8gQWxsb3cgSklU
Q29tcGlsZXIgdG8gY2FsbCBzZXRDb2RlUmVmKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA1Mjk4NjllMDY0OWM2NWEwZTNiNjVlMjNiNDIxOWRh
YWE3YzJmNGUyLi4xMDI2YTg0MTUyZTkzMjIyZTA0NWJhODNiMjdiZWU0ZGI1MmE4MGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEzMiw3ICsx
MzIsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZQogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgc3RyaWN0KTsKICAgICBpZiAoZGlyZWN0KSB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
ICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgICAgIGFzT2JqZWN0KGJhc2VW
YWx1ZSktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBzdHJp
Y3QgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RU
aHJvdyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZXhlYywgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU0ludDhBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSgKQEAgLTExODgsNyArMTE4OCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5Pihl
eGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplKApAQCAtMTIw
Miw3ICsxMjAyLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50MzJBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQp
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUoCkBAIC0xMjE2LDcgKzEyMTYsNyBAQCBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQo
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5Pihl
eGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTVWludDhBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUoCkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50KAog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJy
YXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNVaW50OENsYW1wZWRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUoCkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50KAog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGV4
ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNVaW50MTZBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Vp
bnQzMkFycmF5V2l0aFNpemUoCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNV
aW50MzJBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdp
dGhTaXplKApAQCAtMTI3Miw3ICsxMjcyLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJy
YXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSgK
QEAgLTEyODYsNyArMTI4Niw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3Rmxv
YXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgTnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVj
LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJs
ZSogdGFibGUsIEVuY29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggNjA4MWM1
N2IyODYxOGU0M2Q5ZWEyOGQ1NTYxMDE1ODJhNjJjNThjYS4uNjdhYmE4MGI3ZGY3MDgzOTYzYmRh
ZmQ1OGY5YWI2MzI3YmNjZTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTbG93UGF0aEdl
bmVyYXRvciB7CiAgICAgICAgIGppdC0+bV9vdXRPZkxpbmVTdHJlYW1JbmRleCA9IG1fc3RyZWFt
SW5kZXg7CiAgICAgICAgIGppdC0+bV9vcmlnaW4gPSBtX29yaWdpbjsKICAgICAgICAgZ2VuZXJh
dGVJbnRlcm5hbChqaXQpOwotICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBO
dWxsb3B0OworICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICAgICAgaml0LT5tX2pp
dC5hYm9ydFdpdGhSZWFzb24oREZHU2xvd1BhdGhHZW5lcmF0b3JGZWxsVGhyb3VnaCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA2Y2UwNDViOGViZGRjY2IxMGE1MzFiY2ViMzgyMTEwYzRhNWFiMjI1Li5mYjhlNjE1ODRk
YjZjYTNjN2EwMWNmZjM3NmQ3MjBiNjJjMjA4OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXImIHBjVG9Db2RlT3JpCiAgICAgICAgIG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzbG93
UGF0aExhbWJkYS5zdHJlYW1JbmRleDsKICAgICAgICAgcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
LmFwcGVuZEl0ZW0obV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIGN1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBzbG93UGF0aExhbWJkYS5nZW5lcmF0b3IoKTsK
LSAgICAgICAgbV9vdXRPZkxpbmVTdHJlYW1JbmRleCA9IE51bGxvcHQ7CisgICAgICAgIG1fb3V0
T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC0xMjg3LDEx
ICsxMjg3LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCwgUmV1c2VUYWcsIFQmIG9w
ZXJhbmQsIFdoaWNoVmFsdWVXb3JkIHJlc3VsdFdvcmQpCiB7CiAgICAgaWYgKHJlc3VsdFdvcmQg
PT0gUGF5bG9hZFdvcmQpIHsKLSAgICAgICAgbV9wYXlsb2FkR1BSID0gR1BSVGVtcG9yYXJ5KGpp
dCwgUmV1c2UsIG9wZXJhbmQpOwotICAgICAgICBtX3RhZ0dQUiA9IEdQUlRlbXBvcmFyeShqaXQp
OworICAgICAgICBtX3BheWxvYWRHUFIuZW1wbGFjZShqaXQsIFJldXNlLCBvcGVyYW5kKTsKKyAg
ICAgICAgbV90YWdHUFIuZW1wbGFjZShqaXQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcGF5
bG9hZEdQUiA9IEdQUlRlbXBvcmFyeShqaXQpOwotICAgICAgICBtX3RhZ0dQUiA9IEdQUlRlbXBv
cmFyeShqaXQsIFJldXNlLCBvcGVyYW5kKTsKKyAgICAgICAgbV9wYXlsb2FkR1BSLmVtcGxhY2Uo
aml0KTsKKyAgICAgICAgbV90YWdHUFIuZW1wbGFjZShqaXQsIFJldXNlLCBvcGVyYW5kKTsKICAg
ICB9CiB9CiAjZW5kaWYKQEAgLTEzMDUsMTEgKzEzMDUsMTEgQEAgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnk6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiBqaXQsIFJldXNlVGFnLCBK
U1ZhbHUKIEpTVmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeShTcGVjdWxh
dGl2ZUpJVCogaml0LCBSZXVzZVRhZywgSlNWYWx1ZU9wZXJhbmQmIG9wZXJhbmQpCiB7CiAgICAg
aWYgKGppdC0+Y2FuUmV1c2Uob3BlcmFuZC5ub2RlKCkpKSB7Ci0gICAgICAgIG1fcGF5bG9hZEdQ
UiA9IEdQUlRlbXBvcmFyeShqaXQsIFJldXNlLCBvcGVyYW5kLCBQYXlsb2FkV29yZCk7Ci0gICAg
ICAgIG1fdGFnR1BSID0gR1BSVGVtcG9yYXJ5KGppdCwgUmV1c2UsIG9wZXJhbmQsIFRhZ1dvcmQp
OworICAgICAgICBtX3BheWxvYWRHUFIuZW1wbGFjZShqaXQsIFJldXNlLCBvcGVyYW5kLCBQYXls
b2FkV29yZCk7CisgICAgICAgIG1fdGFnR1BSLmVtcGxhY2Uoaml0LCBSZXVzZSwgb3BlcmFuZCwg
VGFnV29yZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wYXlsb2FkR1BSID0gR1BSVGVtcG9y
YXJ5KGppdCk7Ci0gICAgICAgIG1fdGFnR1BSID0gR1BSVGVtcG9yYXJ5KGppdCk7CisgICAgICAg
IG1fcGF5bG9hZEdQUi5lbXBsYWNlKGppdCk7CisgICAgICAgIG1fdGFnR1BSLmVtcGxhY2Uoaml0
KTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTMxODgsOCArMzE4OCw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OwotICAgIE9wdGlvbmFsPEpT
VmFsdWVPcGVyYW5kPiByaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBs
ZWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OwogCiAgICAgSlNW
YWx1ZVJlZ3MgbGVmdFJlZ3M7CiAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzOwpAQCAtMzIxOSwx
MSArMzIxOSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJpdE9wKE5vZGUq
IG5vZGUpCiAgICAgUkVMRUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmln
aHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkg
ewotICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAg
ICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVm
dC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgp
KSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7Cisg
ICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVn
cyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzMzNSw4ICszMzM1LDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9k
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5k
PiBsZWZ0OwotICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKKyAgICBzdGQ6Om9w
dGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9w
ZXJhbmQ+IHJpZ2h0OwogCiAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3M7CiAgICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzOwpAQCAtMzM3MiwxMSArMzM3MiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAgIFJFTEVBU0VfQVNT
RVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwog
CiAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgbGVmdCA9IEpTVmFs
dWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgIGxlZnQuZW1wbGFjZSh0aGlzLCBs
ZWZ0Q2hpbGQpOwogICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAg
fQogICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICByaWdodCA9IEpT
VmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICByaWdodC5lbXBsYWNlKHRo
aXMsIHJpZ2h0Q2hpbGQpOwogICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3Mo
KTsKICAgICB9CiAKQEAgLTM0OTcsOCArMzQ5Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJ
CiAgICAgRWRnZSYgbGVmdENoaWxkID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgRWRnZSYgcmlnaHRD
aGlsZCA9IG5vZGUtPmNoaWxkMigpOwogCi0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxl
ZnQ7Ci0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9u
YWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFu
ZD4gcmlnaHQ7CiAKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVnczsKICAgICBKU1ZhbHVlUmVncyBy
aWdodFJlZ3M7CkBAIC0zNTExLDE2ICszNTExLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJ
CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIEZQUlJlZyBzY3Jh
dGNoRlBSID0gSW52YWxpZEZQUlJlZzsKIAotICAgIE9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnBy
U2NyYXRjaDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZQUlRlbXBvcmFyeT4gZnByU2NyYXRjaDsKICAg
ICBpZiAobmVlZHNTY3JhdGNoRlBSUmVnKSB7Ci0gICAgICAgIGZwclNjcmF0Y2ggPSBGUFJUZW1w
b3JhcnkodGhpcyk7CisgICAgICAgIGZwclNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAg
c2NyYXRjaEZQUiA9IGZwclNjcmF0Y2gtPmZwcigpOwogICAgIH0KIAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBncHJTY3JhdGNoOworICAgIHN0ZDo6b3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBncHJTY3JhdGNoOwogICAgIGlmIChuZWVkc1NjcmF0Y2hHUFJS
ZWcpIHsKLSAgICAgICAgZ3ByU2NyYXRjaCA9IEdQUlRlbXBvcmFyeSh0aGlzKTsKKyAgICAgICAg
Z3ByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3JhdGNoR1BSID0gZ3ByU2NyYXRj
aC0+Z3ByKCk7CiAgICAgfQogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0zNTQ3
LDExICszNTQ3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSog
bm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgQVNTRVJUKCEoR2Vu
ZXJhdG9yOjppc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkgJiYgR2VuZXJh
dG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQocmlnaHRPcGVyYW5kKSkpOwogCiAgICAg
aWYgKCFHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkg
ewotICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAg
ICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVm
dC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAgICAgaWYgKCFHZW5lcmF0b3I6OmlzUmlnaHRPcGVy
YW5kVmFsaWRDb25zdGFudChyaWdodE9wZXJhbmQpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1
ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywg
cmlnaHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwog
ICAgIH0KIApAQCAtMzYxNiwxMCArMzYxNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQog
ICAgICAgICB9KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoR2VuZXJhdG9yOjppc0xlZnRP
cGVyYW5kVmFsaWRDb25zdGFudChsZWZ0T3BlcmFuZCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBK
U1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNl
KHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVS
ZWdzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoR2VuZXJhdG9yOjppc1JpZ2h0T3BlcmFuZFZhbGlk
Q29uc3RhbnQocmlnaHRPcGVyYW5kKSkgewotICAgICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3Bl
cmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywg
cmlnaHRDaGlsZCk7CiAgICAgICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3Mo
KTsKICAgICAgICAgfQogCkBAIC00MjU4LDkgKzQyNTgsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
R2VuZXJhdG9yLCB0eXBlbmFtZSBSZXBhdGNoaW5nRnVuY3Rpb24sIHR5cGVuYW1lIE5vblJlcGF0
Y2hpbgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRV
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMsIGJvb2wgbmVlZHNTY3JhdGNoR1BSUmVnLCBS
ZXBhdGNoaW5nRnVuY3Rpb24gcmVwYXRjaGluZ0Z1bmN0aW9uLCBOb25SZXBhdGNoaW5nRnVuY3Rp
b24gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogewogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52
YWxpZEdQUlJlZzsKLSAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CisgICAg
c3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CiAgICAgaWYgKG5lZWRzU2Ny
YXRjaEdQUlJlZykgewotICAgICAgICBncHJTY3JhdGNoID0gR1BSVGVtcG9yYXJ5KHRoaXMpOwor
ICAgICAgICBncHJTY3JhdGNoLmVtcGxhY2UodGhpcyk7CiAgICAgICAgIHNjcmF0Y2hHUFIgPSBn
cHJTY3JhdGNoLT5ncHIoKTsKICAgICB9CiAgICAgSlNWYWx1ZU9wZXJhbmQgY2hpbGRPcGVyYW5k
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTQ2ODcsOCArNDY4Nyw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdihOb2RlKiBub2RlKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Ci0g
ICAgICAgIE9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVl
T3BlcmFuZD4gcmlnaHQ7CiAKICAgICAgICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3M7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJpZ2h0UmVnczsKQEAgLTQ3MzUsMTEgKzQ3MzUsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkp
OwogCiAgICAgICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgICAgICBs
ZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgICAgIGxlZnQu
ZW1wbGFjZSh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5q
c1ZhbHVlUmVncygpOwogICAgICAgICB9CiAgICAgICAgIGlmICghcmlnaHRPcGVyYW5kLmlzQ29u
c3QoKSkgewotICAgICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENo
aWxkKTsKKyAgICAgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAg
ICAgICAgICByaWdodFJlZ3MgPSByaWdodC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfQogCkBA
IC03NjEyLDEwICs3NjEyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9N
R2V0dGVyKE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBi
YXNlRWRnZSk7CiAgICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0
YXRlLmZvck5vZGUoYmFzZUVkZ2UpLnZhbHVlKCkpKTsKIAotICAgIE9wdGlvbmFsPFNwZWN1bGF0
ZUNlbGxPcGVyYW5kPiBnbG9iYWxPYmplY3Q7CisgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVD
ZWxsT3BlcmFuZD4gZ2xvYmFsT2JqZWN0OwogICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xv
YmFsT2JqZWN0KSB7CiAgICAgICAgIEVkZ2UmIGdsb2JhbE9iamVjdEVkZ2UgPSBub2RlLT5jaGls
ZDIoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0ID0gU3BlY3VsYXRlQ2VsbE9wZXJhbmQodGhpcywg
Z2xvYmFsT2JqZWN0RWRnZSk7CisgICAgICAgIGdsb2JhbE9iamVjdC5lbXBsYWNlKHRoaXMsIGds
b2JhbE9iamVjdEVkZ2UpOwogICAgICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGdsb2Jh
bE9iamVjdC0+Z3ByKCksIG1fc3RhdGUuZm9yTm9kZShnbG9iYWxPYmplY3RFZGdlKS52YWx1ZSgp
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggYzhjOWVmMzRkYTE3MGQzNzNmOWJhODY3M2RmMjdmMjhmOGQ0M2NiZi4uNTE5
ZGY2NWYxNzJiMzQ5NGFhZTBiMmYyMzkxYWQ5YmE5MzYyMTk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjkyOCw3ICsyOTI4LDcgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIH07CiAgICAgVmVjdG9yPFNsb3dQYXRoTGFtYmRh
PiBtX3Nsb3dQYXRoTGFtYmRhczsKICAgICBWZWN0b3I8U2lsZW50UmVnaXN0ZXJTYXZlUGxhbj4g
bV9wbGFuczsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9vdXRPZkxpbmVTdHJlYW1JbmRleDsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX291dE9mTGluZVN0cmVhbUluZGV4OwogfTsK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCA2NTc0NDJmNmZkMTE1YjJhYTM2MmZmNWFkNGY2MGYzZWQ4MWZhNTdk
Li44ZDFiYzBiMzg1NGIxYzRkZmYwYWUxODE5NmQ0MDE3NjJmMjIzN2U0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAg
LTUwNTAsMTUgKzUwNTAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlSUQodGhpcyk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKLSAgICAgICAgT3B0aW9uYWw8U3BlY3VsYXRlQ2Vs
bE9wZXJhbmQ+IGtleUFzQ2VsbDsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGtl
eUFzVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtl
eUFzQ2VsbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1
ZTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mga2V5UmVnczsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICBrZXlBc1ZhbHVlID0g
SlNWYWx1ZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAga2V5QXNW
YWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleVJlZ3Mg
PSBrZXlBc1ZhbHVlLT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UgfHwgbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgICAgICAgICBrZXlBc0NlbGwg
PSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBrZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBr
ZXlSZWdzID0gSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KGtleUFzQ2VsbC0+Z3ByKCkpOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IDU4MDQ2ODg3NTJlZWY1OWY0MmVkYzEwNDdjNjNjODgyNmI0ZjBkZGIu
LmU1MzhmYmI1YTc4MTBiNGE0OTU4MjUzNzI1Nzc2MDBlMTg3OWI3NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTk0OSwx
MCArMTk0OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOb2Rl
KiBub2RlKQogCiAgICAgICAgIGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBPcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHNjcmF0Y2g7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzY3Jh
dGNoOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAg
IGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpIHsKLSAgICAgICAgICAgIHNj
cmF0Y2ggPSBHUFJUZW1wb3JhcnkodGhpcyk7CisgICAgICAgICAgICBzY3JhdGNoLmVtcGxhY2Uo
dGhpcyk7CiAgICAgICAgICAgICBzY3JhdGNoR1BSID0gc2NyYXRjaC0+Z3ByKCk7CiAgICAgICAg
IH0KICAgICAgICAgYm9vbCBuZWdhdGVSZXN1bHQgPSB0cnVlOwpAQCAtMjEwMywxMiArMjEwMywx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgRlBSVGVtcG9yYXJ5
IGZwclZhbHVlKHRoaXMpOwogICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IGZwclRlbXAodGhpcyk7
Ci0gICAgICAgICAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHNjcmF0Y2g7CisgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2NyYXRjaDsKIAogICAgICAgICAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgYm9vbCBzaG91bGRD
aGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnRJc1N0aWxsVmFsaWQoKTsKICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICBzY3JhdGNoID0gR1BSVGVtcG9yYXJ5
KHRoaXMpOworICAgICAgICAgICAgICAgIHNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAg
ICAgICAgICBzY3JhdGNoR1BSID0gc2NyYXRjaC0+Z3ByKCk7CiAgICAgICAgICAgICB9CiAKQEAg
LTQ3NjksMTEgKzQ3NjksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBjYXNlIFN0cmluZ1VzZTogewogICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgaW5wdXQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
dGVtcDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOwogCiAg
ICAgICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKLSAgICAgICAgICAgICAg
ICB0ZW1wID0gR1BSVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICAgICAgICAgIHRlbXAuZW1wbGFj
ZSh0aGlzKTsKICAgICAgICAgICAgICAgICB0ZW1wR1BSID0gdGVtcC0+Z3ByKCk7CiAgICAgICAg
ICAgICB9CiAKQEAgLTUyMDcsMTUgKzUyMDcsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlSUQodGhpcyk7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKLSAgICAgICAgT3B0aW9uYWw8
U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGtleUFzQ2VsbDsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1
ZU9wZXJhbmQ+IGtleUFzVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQ2Vs
bE9wZXJhbmQ+IGtleUFzQ2VsbDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFu
ZD4ga2V5QXNWYWx1ZTsKICAgICAgICAgR1BSUmVnIGtleUdQUjsKICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMigpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICBrZXlBc1Zh
bHVlID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
a2V5QXNWYWx1ZS5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtl
eUdQUiA9IGtleUFzVmFsdWUtPmdwcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UgfHwgbm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSk7Ci0gICAgICAgICAgICBrZXlBc0NlbGwgPSBT
cGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBr
ZXlBc0NlbGwuZW1wbGFjZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBrZXlH
UFIgPSBrZXlBc0NlbGwtPmdwcigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDEw
NDA2ZmE0MTU5NTc0OTVmMjQ4YTk5MmU1OWU2NGQ4NWY3OGIyODEuLjY2YzUwMDhlMjk5NzgwNTE5
ZDY4MDQ3Y2Q5MmI2ZGE1M2I3MTNkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMjA0LDcgKzIwNCw3
IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkKICAgICAgICAg
ICAgICAgICAmJiBtX25vZGUtPmNoaWxkMigpLT5pc051bWJlckNvbnN0YW50KCkpIHsKIAotICAg
ICAgICAgICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IHJlY2lwcm9jYWwgPSBzYWZlUmVjaXBy
b2NhbEZvckRpdkJ5Q29uc3QobV9ub2RlLT5jaGlsZDIoKS0+YXNOdW1iZXIoKSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlY2lwcm9jYWwgPSBzYWZlUmVj
aXByb2NhbEZvckRpdkJ5Q29uc3QobV9ub2RlLT5jaGlsZDIoKS0+YXNOdW1iZXIoKSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgTm9kZSogcmVjaXByb2NhbE5vZGUgPSBtX2luc2VydGlvblNldC5p
bnNlcnRDb25zdGFudChtX25vZGVJbmRleCwgbV9ub2RlLT5vcmlnaW4sIGpzRG91YmxlTnVtYmVy
KCpyZWNpcHJvY2FsKSwgRG91YmxlQ29uc3RhbnQpOwogICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPnNldE9wKEFyaXRoTXVsKTsKICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jaGlsZDIo
KSA9IEVkZ2UocmVjaXByb2NhbE5vZGUsIERvdWJsZVJlcFVzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExKSVRDb2RlLmNwcAppbmRleCAzYWM0MWQ5MGVlNzQ3NWQ2YmYwYWUxYWVjY2Y1
YjBmZWVkM2E4MGEwLi4xY2RiNTA5NTcyZDk5Y2U0MTVlZDc2MDIyMmQ4YmIxODUzOThkZWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKQEAgLTE0NiwyMyArMTQ2
LDIzIEBAIFJlZ2lzdGVyU2V0IEpJVENvZGU6OmxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNl
cHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9jCiAgICAgcmV0dXJuIFJlZ2lzdGVyU2V0KCk7
CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgdm9pZCogcGMpCitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZp
bmRQQyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogcGMpCiB7CiAgICAgZm9yIChPU1JFeGl0
JiBleGl0IDogb3NyRXhpdCkgewogICAgICAgICBpZiAoRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSog
aGFuZGxlID0gZXhpdC5tX2NvZGUuZXhlY3V0YWJsZU1lbW9yeSgpKSB7CiAgICAgICAgICAgICBp
ZiAoaGFuZGxlLT5zdGFydCgpIDw9IHBjICYmIHBjIDwgaGFuZGxlLT5lbmQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdpbj4oZXhpdC5tX2NvZGVPcmlnaW5Gb3JF
eGl0UHJvZmlsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29kZU9y
aWdpbj4oZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSk7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+JiBsYXp5U2xvd1BhdGgg
OiBsYXp5U2xvd1BhdGhzKSB7CiAgICAgICAgIGlmIChFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBo
YW5kbGUgPSBsYXp5U2xvd1BhdGgtPnN0dWIoKS5leGVjdXRhYmxlTWVtb3J5KCkpIHsKICAgICAg
ICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkgPD0gcGMgJiYgcGMgPCBoYW5kbGUtPmVuZCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihjb2RlQmxvY2stPmNv
ZGVPcmlnaW4obGF6eVNsb3dQYXRoLT5jYWxsU2l0ZUluZGV4KCkpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihjb2RlQmxvY2stPmNvZGVPcmlnaW4o
bGF6eVNsb3dQYXRoLT5jYWxsU2l0ZUluZGV4KCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKaW5k
ZXggOTg2YTkwYTc4NmY3YjFjZGE0YTU5MzQ4MDM4ZDU3NzFjYzk0MTM5Zi4uMmMyODA5ZTk3MmQx
OTVlNzE1OGM0NGM2YmE3MGMzY2VmYTE3ZjdjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExKSVRDb2RlLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgSklUQ29kZSA6IHB1YmxpYyBKU0M6
OkpJVENvZGUgewogCiAgICAgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4
Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoQ29kZUJsb2NrKiwgQ2FsbFNpdGVJbmRleCkgb3ZlcnJp
ZGU7CiAKLSAgICBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCog
cGMpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVC
bG9jayosIHZvaWQqIHBjKSBvdmVycmlkZTsKIAogICAgIENvZGVSZWYgYjNDb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9iM0NvZGU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
aW5kZXggMTI0ZDM2ZmE5YzU1MjM3ZDkwZWRjZTFlZWU0N2U4Y2FkMDQ1NjliYS4uODQ1NGRiZWQx
ZDMzYjJhODBhOGU2ZDJhNGM4YTQzOTM5MmU4MWE1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCBTaW1wbGVTdGF0cyYgdGltaW5nU3RhdHMoY29u
c3QgY2hhciogbmFtZSwgQ29sbGVjdGlvblNjb3BlIHNjb3BlKQogCiBjbGFzcyBUaW1pbmdTY29w
ZSB7CiBwdWJsaWM6Ci0gICAgVGltaW5nU2NvcGUoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBz
Y29wZSwgY29uc3QgY2hhciogbmFtZSkKKyAgICBUaW1pbmdTY29wZShzdGQ6Om9wdGlvbmFsPENv
bGxlY3Rpb25TY29wZT4gc2NvcGUsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIDogbV9zY29w
ZShzY29wZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICB7CkBAIC0yMDMsNyArMjAzLDcg
QEAgY2xhc3MgVGltaW5nU2NvcGUgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRT
Y29wZShPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQorICAgIHZvaWQgc2V0U2NvcGUo
c3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogICAgIHsKICAgICAgICAgbV9z
Y29wZSA9IHNjb3BlOwogICAgIH0KQEAgLTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBUaW1pbmdTY29w
ZSB7CiAgICAgICAgIH0KICAgICB9CiBwcml2YXRlOgotICAgIE9wdGlvbmFsPENvbGxlY3Rpb25T
Y29wZT4gbV9zY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9zY29w
ZTsKICAgICBkb3VibGUgbV9iZWZvcmU7CiAgICAgY29uc3QgY2hhciogbV9uYW1lOwogfTsKQEAg
LTEwODQsNyArMTA4NCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgIHN3
ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiB9CiAKLXZvaWQgSGVhcDo6Y29sbGVj
dEFzeW5jKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCit2b2lkIEhlYXA6OmNvbGxl
Y3RBc3luYyhzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAgaWYg
KCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5Miw3ICsxMDkyLDcg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29w
ZSkKICAgICBib29sIGFscmVhZHlSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICB7CiAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOwotICAgICAgICBmb3IgKE9wdGlvbmFsPENv
bGxlY3Rpb25TY29wZT4gcmVxdWVzdCA6IG1fcmVxdWVzdHMpIHsKKyAgICAgICAgZm9yIChzdGQ6
Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gcmVxdWVzdCA6IG1fcmVxdWVzdHMpIHsKICAgICAg
ICAgICAgIGlmIChzY29wZSkgewogICAgICAgICAgICAgICAgIGlmIChzY29wZSA9PSBDb2xsZWN0
aW9uU2NvcGU6OkVkZW4pIHsKICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeVJlcXVlc3RlZCA9
IHRydWU7CkBAIC0xMTE4LDcgKzExMTgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBc3luYyhPcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogICAgIHJlcXVlc3RDb2xsZWN0aW9uKHNjb3Bl
KTsKIH0KIAotdm9pZCBIZWFwOjpjb2xsZWN0U3luYyhPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+
IHNjb3BlKQordm9pZCBIZWFwOjpjb2xsZWN0U3luYyhzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25T
Y29wZT4gc2NvcGUpCiB7CiAgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0SW5UaHJlYWQoKQog
ewogICAgIG1fY3VycmVudEdDU3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAg
Ci0gICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PENvbGxlY3Rpb25TY29wZT4gc2NvcGU7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV90aHJlYWRMb2NrKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVxdWVzdHMuaXNF
bXB0eSgpKTsKQEAgLTExNjQsNyArMTE2NCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEluVGhyZWFk
KCkKICAgICAKICAgICBBU1NFUlQobV9pc1NhZmVUb0NvbGxlY3QpOwogICAgIGlmIChtX2NvbGxl
Y3Rpb25TY29wZSkgewotICAgICAgICBkYXRhTG9nKCJDb2xsZWN0aW9uIHNjb3BlIGFscmVhZHkg
c2V0IGR1cmluZyBHQzogIiwgbV9jb2xsZWN0aW9uU2NvcGUsICJcbiIpOworICAgICAgICBkYXRh
TG9nKCJDb2xsZWN0aW9uIHNjb3BlIGFscmVhZHkgc2V0IGR1cmluZyBHQzogIiwgKm1fY29sbGVj
dGlvblNjb3BlLCAiXG4iKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiAgICAgCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2b2lkIEhlYXA6OmZpbmFsaXplKCkK
ICAgICAgICAgY2FjaGUtPmNsZWFyKCk7CiB9CiAKLUhlYXA6OlRpY2tldCBIZWFwOjpyZXF1ZXN0
Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQorSGVhcDo6VGlja2V0
IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBz
Y29wZSkKIHsKICAgICBzdG9wSWZOZWNlc3NhcnkoKTsKICAgICAKQEAgLTE1ODIsNyArMTU4Miw3
IEBAIHZvaWQgSGVhcDo6c3VzcGVuZENvbXBpbGVyVGhyZWFkcygpCiAjZW5kaWYKIH0KIAotdm9p
ZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2Nv
cGUpCit2b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24oc3RkOjpvcHRpb25hbDxDb2xsZWN0
aW9uU2NvcGU+IHNjb3BlKQogewogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICBk
YXRhTG9nKCI9PiAiKTsKQEAgLTE3ODksNyArMTc4OSw3IEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNo
Q29sbGVjdGlvbihkb3VibGUgZ2NTdGFydFRpbWUpCiAKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nv
bGxlY3Rpb25TY29wZSk7CiAgICAgbV9sYXN0Q29sbGVjdGlvblNjb3BlID0gbV9jb2xsZWN0aW9u
U2NvcGU7Ci0gICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBOdWxsb3B0OworICAgIG1fY29sbGVjdGlv
blNjb3BlID0gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fb2Jz
ZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+ZGlkR2FyYmFnZUNvbGxlY3Qoc2NvcGUpOwpAQCAt
MTkxNSw3ICsxOTE1LDcgQEAgdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcihKU0Nl
bGwqIGNlbGwpCiAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIuYWRkKGNlbGwpOwogfQogCi1ib29s
IEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBz
Y29wZSkgY29uc3QKK2Jvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihzdGQ6Om9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpIGNvbnN0CiB7CiAgICAgaWYgKCFPcHRpb25zOjp1
c2VHZW5lcmF0aW9uYWxHQygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAppbmRleCA0MTFmOTJhNzkyZDY5MDg0M2UxOTczYTFlNjM5OTM0NDg1YTlmYmUy
Li43NzI2YWRlOWE0YzVkZGFlOTg1NTE4MDg0ODFlMjJkMzQ4NDJkMjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xhc3MgSGVhcCB7CiAgICAgdm9p
ZCByZW1vdmVPYnNlcnZlcihIZWFwT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXJzLnJl
bW92ZUZpcnN0KG9ic2VydmVyKTsgfQogCiAgICAgTXV0YXRvclN0YXRlIG11dGF0b3JTdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbXV0YXRvclN0YXRlOyB9Ci0gICAgT3B0aW9uYWw8Q29sbGVjdGlv
blNjb3BlPiBjb2xsZWN0aW9uU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29w
ZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBjb2xsZWN0aW9uU2NvcGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbGxlY3Rpb25TY29wZTsgfQogICAgIGJvb2wgaGFzSGVhcEFj
Y2VzcygpIGNvbnN0OwogICAgIGJvb2wgbXV0YXRvcklzU3RvcHBlZCgpIGNvbnN0OwogICAgIGJv
b2wgY29sbGVjdG9yQmVsaWV2ZXNUaGF0VGhlV29ybGRJc1N0b3BwZWQoKSBjb25zdDsKQEAgLTE4
NiwxOCArMTg2LDE4IEBAIGNsYXNzIEhlYXAgewogICAgIGJvb2wgc2hvdWxkQ29sbGVjdCgpOwog
ICAgIAogICAgIC8vIFF1ZXVlIHVwIGEgY29sbGVjdGlvbi4gUmV0dXJucyBpbW1lZGlhdGVseS4g
VGhpcyB3aWxsIG5vdCBxdWV1ZSBhIGNvbGxlY3Rpb24gaWYgYSBjb2xsZWN0aW9uCi0gICAgLy8g
b2YgZXF1YWwgb3IgZ3JlYXRlciBzdHJlbmd0aCBleGlzdHMuIEZ1bGwgY29sbGVjdGlvbnMgYXJl
IHN0cm9uZ2VyIHRoYW4gTnVsbG9wdCBjb2xsZWN0aW9ucwotICAgIC8vIGFuZCBOdWxsb3B0IGNv
bGxlY3Rpb25zIGFyZSBzdHJvbmdlciB0aGFuIEVkZW4gY29sbGVjdGlvbnMuIE51bGxvcHQgbWVh
bnMgdGhhdCB0aGUgR0MgY2FuCisgICAgLy8gb2YgZXF1YWwgb3IgZ3JlYXRlciBzdHJlbmd0aCBl
eGlzdHMuIEZ1bGwgY29sbGVjdGlvbnMgYXJlIHN0cm9uZ2VyIHRoYW4gc3RkOjpudWxsb3B0IGNv
bGxlY3Rpb25zCisgICAgLy8gYW5kIHN0ZDo6bnVsbG9wdCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25n
ZXIgdGhhbiBFZGVuIGNvbGxlY3Rpb25zLiBzdGQ6Om51bGxvcHQgbWVhbnMgdGhhdCB0aGUgR0Mg
Y2FuCiAgICAgLy8gY2hvb3NlIEVkZW4gb3IgRnVsbC4gVGhpcyBpbXBsaWVzIHRoYXQgaWYgeW91
IHJlcXVlc3QgYSBHQyB3aGlsZSB0aGF0IEdDIGlzIG9uZ29pbmcsIG5vdGhpbmcKICAgICAvLyB3
aWxsIGhhcHBlbi4KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBc3luYyhPcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gTnVsbG9wdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjb2xsZWN0QXN5bmMoc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gc3RkOjpu
dWxsb3B0KTsKICAgICAKICAgICAvLyBRdWV1ZSB1cCBhIGNvbGxlY3Rpb24gYW5kIHdhaXQgZm9y
IGl0IHRvIGNvbXBsZXRlLiBUaGlzIHdvbid0IHJldHVybiB1bnRpbCB5b3UgZ2V0IHlvdXIgb3du
CiAgICAgLy8gY29tcGxldGUgY29sbGVjdGlvbi4gRm9yIGV4YW1wbGUsIGlmIHRoZXJlIHdhcyBh
biBvbmdvaW5nIGFzeW5jaHJvbm91cyBjb2xsZWN0aW9uIGF0IHRoZSB0aW1lCiAgICAgLy8geW91
IGNhbGxlZCB0aGlzLCB0aGVuIHRoaXMgd291bGQgd2FpdCBmb3IgdGhhdCBvbmUgdG8gY29tcGxl
dGUgYW5kIHRoZW4gdHJpZ2dlciB5b3VyCiAgICAgLy8gY29sbGVjdGlvbiBhbmQgdGhlbiByZXR1
cm4uIEluIHdlaXJkIGNhc2VzLCB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBHQyByZXF1ZXN0cyBp
biB0aGUgYmFja2xvZwogICAgIC8vIGFuZCB0aGlzIHdpbGwgd2FpdCBmb3IgdGhhdCBiYWNrbG9n
IGJlZm9yZSBydW5uaW5nIGl0cyBHQyBhbmQgcmV0dXJuaW5nLgotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgY29sbGVjdFN5bmMoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiA9IE51bGxvcHQp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdFN5bmMoc3RkOjpvcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+ID0gc3RkOjpudWxsb3B0KTsKICAgICAKICAgICBib29sIGNvbGxlY3RJ
Zk5lY2Vzc2FyeU9yRGVmZXIoR0NEZWZlcnJhbENvbnRleHQqID0gbnVsbHB0cik7IC8vIFJldHVy
bnMgdHJ1ZSBpZiBpdCBkaWQgY29sbGVjdC4KICAgICB2b2lkIGNvbGxlY3RBY2NvcmRpbmdUb0Rl
ZmVyR0NQcm9iYWJpbGl0eSgpOwpAQCAtNDI1LDExICs0MjUsMTEgQEAgY2xhc3MgSGVhcCB7CiAg
ICAgdm9pZCBub3RpZnlUaHJlYWRTdG9wcGluZyhjb25zdCBMb2NrSG9sZGVyJik7CiAgICAgCiAg
ICAgdHlwZWRlZiB1aW50NjRfdCBUaWNrZXQ7Ci0gICAgVGlja2V0IHJlcXVlc3RDb2xsZWN0aW9u
KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4pOworICAgIFRpY2tldCByZXF1ZXN0Q29sbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4pOwogICAgIHZvaWQgd2FpdEZvckNvbGxl
Y3Rpb24oVGlja2V0KTsKICAgICAKICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsK
LSAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPik7
CisgICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPik7CiAgICAgdm9pZCBmbHVzaFdyaXRlQmFycmllckJ1ZmZlcigpOwogICAgIHZvaWQgcHJl
cGFyZUZvck1hcmtpbmcoKTsKICAgICAKQEAgLTQ2OSw3ICs0NjksNyBAQCBjbGFzcyBIZWFwIHsK
ICAgICB2b2lkIHN3ZWVwQWxsTG9naWNhbGx5RW1wdHlXZWFrQmxvY2tzKCk7CiAgICAgYm9vbCBz
d2VlcE5leHRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jaygpOwogCi0gICAgYm9vbCBzaG91bGREb0Z1
bGxDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gcmVxdWVzdGVkQ29sbGVjdGlv
blNjb3BlKSBjb25zdDsKKyAgICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oc3RkOjpvcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+IHJlcXVlc3RlZENvbGxlY3Rpb25TY29wZSkgY29uc3Q7CiAK
ICAgICB2b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgICB2b2lkIGRlY3JlbWVudERl
ZmVycmFsRGVwdGgoKTsKQEAgLTQ5Nyw4ICs0OTcsOCBAQCBjbGFzcyBIZWFwIHsKICAgICBzaXpl
X3QgbV90b3RhbEJ5dGVzVmlzaXRlZDsKICAgICBzaXplX3QgbV90b3RhbEJ5dGVzVmlzaXRlZFRo
aXNDeWNsZTsKICAgICAKLSAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fY29sbGVjdGlv
blNjb3BlOwotICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9sYXN0Q29sbGVjdGlvblNj
b3BlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX2NvbGxlY3Rpb25TY29w
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9sYXN0Q29sbGVjdGlvblNj
b3BlOwogICAgIE11dGF0b3JTdGF0ZSBtX211dGF0b3JTdGF0ZSB7IE11dGF0b3JTdGF0ZTo6UnVu
bmluZyB9OwogICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxlOwogICAgIE1h
cmtlZFNwYWNlIG1fb2JqZWN0U3BhY2U7CkBAIC01OTksNyArNTk5LDcgQEAgY2xhc3MgSGVhcCB7
CiAgICAgYm9vbCBtX2NvbGxlY3RvckJlbGlldmVzVGhhdFRoZVdvcmxkSXNTdG9wcGVkIHsgZmFs
c2UgfTsKICAgICBNb25vdG9uaWNUaW1lIG1fc3RvcFRpbWU7CiAgICAgCi0gICAgRGVxdWU8T3B0
aW9uYWw8Q29sbGVjdGlvblNjb3BlPj4gbV9yZXF1ZXN0czsKKyAgICBEZXF1ZTxzdGQ6Om9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4+IG1fcmVxdWVzdHM7CiAgICAgVGlja2V0IG1fbGFzdFNlcnZl
ZFRpY2tldCB7IDAgfTsKICAgICBUaWNrZXQgbV9sYXN0R3JhbnRlZFRpY2tldCB7IDAgfTsKICAg
ICBib29sIG1fdGhyZWFkU2hvdWxkU3RvcCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcAppbmRleCBmYTMzZGM5Nzc0NDVkZTJjNmQ0OGZlNThl
MWRhMjA2Y2ZlYzhlZWViLi4zNGRiMTJjM2RiYmM3MjcwNDI5MzUxYmUwYWJkYzkzZTZiNjI4ZDFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAKQEAgLTEz
MCw3ICsxMzAsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdDo6ZmluYWxpemUoKQogI2VuZGlmCiB9CiAK
LU9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvckNlbGwoSlND
ZWxsKiBjZWxsKQorc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6
Om5vZGVGb3JDZWxsKEpTQ2VsbCogY2VsbCkKIHsKICAgICBBU1NFUlQobV9maW5hbGl6ZWQpOwog
CkBAIC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBz
aG90Ojpub2RlRm9yQ2VsbChKU0NlbGwqIGNlbGwpCiAgICAgICAgICAgICB1bnNpZ25lZCBtaWRk
bGUgPSBzdGFydCArICgoZW5kIC0gc3RhcnQpIC8gMik7CiAgICAgICAgICAgICBIZWFwU25hcHNo
b3ROb2RlJiBub2RlID0gbV9ub2Rlc1ttaWRkbGVdOwogICAgICAgICAgICAgaWYgKGNlbGwgPT0g
bm9kZS5jZWxsKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxIZWFwU25hcHNob3RO
b2RlPihub2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxIZWFwU25h
cHNob3ROb2RlPihub2RlKTsKICAgICAgICAgICAgIGlmIChjZWxsIDwgbm9kZS5jZWxsKQogICAg
ICAgICAgICAgICAgIGVuZCA9IG1pZGRsZTsKICAgICAgICAgICAgIGVsc2UKQEAgLTE1MywzMiAr
MTUzLDMyIEBAIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZv
ckNlbGwoSlNDZWxsKiBjZWxsKQogICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICByZXR1cm4g
bV9wcmV2aW91cy0+bm9kZUZvckNlbGwoY2VsbCk7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBI
ZWFwU25hcHNob3Q6Om5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdElkZW50
aWZpZXIpCitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9k
ZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcikKIHsKICAgICBp
ZiAoaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICAgICAgcmV0
dXJuIG1fcHJldmlvdXMtPm5vZGVGb3JPYmplY3RJZGVudGlmaWVyKG9iamVjdElkZW50aWZpZXIp
OwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBpZiAob2JqZWN0SWRlbnRpZmllciA+IG1fbGFzdE9iamVjdElkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKG9iamVjdElkZW50aWZpZXIgPCBtX2ZpcnN0T2JqZWN0SWRlbnRpZmllcikg
ewogICAgICAgICBpZiAobV9wcmV2aW91cykKICAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3Vz
LT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihvYmplY3RJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiBub2RlIDogbV9ub2RlcykgewogICAgICAgICBpZiAobm9kZS5pZGVudGlmaWVy
ID09IG9iamVjdElkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4obm9kZSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxIZWFw
U25hcHNob3ROb2RlPihub2RlKTsKICAgICB9CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmgKaW5kZXggNjBkODI4NDU3MDVkMmJlMWMxYTNi
OTU0NmY0MTYzNzRhMzg4OWI2MC4uZmRkM2RlM2I1MGYwODhiMzU0MGMxNDE1MzdkOTMwZjNiNDkz
NGEwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmgKQEAgLTQ1
LDggKzQ1LDggQEAgY2xhc3MgSGVhcFNuYXBzaG90IHsKICAgICB2b2lkIGZpbmFsaXplKCk7CiAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX25vZGVzLmlzRW1wdHkoKTsgfQot
ICAgIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG5vZGVGb3JDZWxsKEpTQ2VsbCopOwotICAg
IE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVuc2ln
bmVkIG9iamVjdElkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9k
ZT4gbm9kZUZvckNlbGwoSlNDZWxsKik7CisgICAgc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3RO
b2RlPiBub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3RJZGVudGlmaWVyKTsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSGVhcFNuYXBzaG90QnVpbGRlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAKaW5kZXggZTI5NWY0MGJlOWNkMGI4NTNjMTBjNDU5Yjg4Y2Fl
NjNiYTE5MjE3YS4uMjM4OGMyODQ3OTYxOTc3YWI4YWQwNGYzOWEwMWFiNmVkNDc3M2YwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEJhY2tl
bmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewogICAg
ICAgICAvLyBJbiBjYXNlIHRoaXMgaXMgYSByZS1lbnRyYW50IGNhbGwgZnJvbSBhIG5lc3RlZCBy
dW4gbG9vcCwgd2UgZG9uJ3Qgd2FudCB0byBsb3NlCiAgICAgICAgIC8vIHRoZSBvdXRlciByZXF1
ZXN0J3MgaWQganVzdCBiZWNhdXNlIHRoZSBpbm5lciByZXF1ZXN0IGlzIGJvZ3VzLgotICAgICAg
ICBTZXRGb3JTY29wZTxPcHRpb25hbDxsb25nPj4gc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJl
cXVlc3RJZCwgTnVsbG9wdCk7CisgICAgICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8bG9u
Zz4+IHNjb3BlZFJlcXVlc3RJZChtX2N1cnJlbnRSZXF1ZXN0SWQsIHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBwYXJzZWRNZXNzYWdlOwogICAgICAgICBp
ZiAoIUluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSwgcGFyc2VkTWVzc2FnZSkpIHsK
QEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAKICAgICB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGJlIGNhbGxl
ZCByZS1lbnRyYW50bHkgZnJvbSBhIG5lc3RlZCBydW4gbG9vcCwgc28gcmVzdG9yZSB0aGUgcHJl
dmlvdXMgaWQuCi0gICAgICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1
ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCByZXF1ZXN0SWQpOworICAgICAgICBTZXRGb3JTY29w
ZTxzdGQ6Om9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElk
LCByZXF1ZXN0SWQpOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gbWV0aG9kVmFs
dWU7CiAgICAgICAgIGlmICghbWVzc2FnZU9iamVjdC0+Z2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJt
ZXRob2QiKSwgbWV0aG9kVmFsdWUpKSB7CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBCYWNrZW5k
RGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQogICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNl
bmRSZXNwb25zZShtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiAKICAgICBtX3Byb3RvY29sRXJy
b3JzLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50UmVxdWVzdElkID0gTnVsbG9wdDsKKyAgICBtX2N1
cnJlbnRSZXF1ZXN0SWQgPSBzdGQ6Om51bGxvcHQ7CiB9CiAgICAgCiB2b2lkIEJhY2tlbmREaXNw
YXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgQmFja2Vu
ZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29k
ZSwgY29uc3QgU3RyCiAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihtX2N1cnJlbnRSZXF1ZXN0SWQs
IGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAotdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6
cmVwb3J0UHJvdG9jb2xFcnJvcihPcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21t
b25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3ZvaWQg
QmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3Ioc3RkOjpvcHRpb25hbDxsb25n
PiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwgZXJyb3JDb2Rl
ID49IDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKaW5kZXggMzE3NmIyZDFhZjNlZGRjMzU5
MDU3NzY2Y2MxNDlkYzdiZDMzNjliYy4uOTI3NjQyYzIxYTM1NWEzNmE1NDA3OTI1ZjYzZjgzZjdh
YzMwZjM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaApAQCAtODcsNyArODcsNyBAQCBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBCYWNrZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEJhY2tlbmREaXNwYXRjaGVyPgogICAgIHZvaWQgc2VuZFBlbmRpbmdFcnJvcnMoKTsKIAogICAg
IHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoT3B0aW9uYWw8bG9u
Zz4gcmVsYXRlZFJlcXVlc3RJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CisgICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKHN0ZDo6b3B0aW9uYWw8bG9u
Zz4gcmVsYXRlZFJlcXVlc3RJZCwgQ29tbW9uRXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdURl9ISURERU5fREVD
TEFSQVRJT04KQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBCYWNr
ZW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tlbmREaXNwYXRjaGVyPgogCiAg
ICAgLy8gRm9yIHN5bmNocm9ub3VzbHkgaGFuZGxlZCByZXF1ZXN0cywgYXZvaWQgcGx1bWJpbmcg
cmVxdWVzdElkIHRocm91Z2ggZXZlcnkKICAgICAvLyBjYWxsIHRoYXQgY291bGQgcG90ZW50aWFs
bHkgZmFpbCB3aXRoIGEgcHJvdG9jb2wgZXJyb3IuCi0gICAgT3B0aW9uYWw8bG9uZz4gbV9jdXJy
ZW50UmVxdWVzdElkIHsgTnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8bG9uZz4gbV9jdXJy
ZW50UmVxdWVzdElkIHsgc3RkOjpudWxsb3B0IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDQwNDE2OWY3ZjU0ZmFmMGQ5Njgx
ZjJlZjAyMGZmNGE2ZDhjMWRjNGUuLjdlNmViNTBhYzRiMDY0NWNjOWJkOTllNjFhYjQwMzgxNjE2
YjE1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtMjEzLDI0ICsyMTMsMjQgQEAg
dm9pZCBJbnNwZWN0b3JIZWFwQWdlbnQ6OnN0b3BUcmFja2luZyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRyYWNraW5nQ29tcGxldGUodGltZXN0
YW1wLCBzbmFwc2hvdERhdGEpOwogfQogCi1PcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBJbnNw
ZWN0b3JIZWFwQWdlbnQ6Om5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyKQorc3RkOjpvcHRpb25h
bDxIZWFwU25hcHNob3ROb2RlPiBJbnNwZWN0b3JIZWFwQWdlbnQ6Om5vZGVGb3JIZWFwT2JqZWN0
SWRlbnRpZmllcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHVuc2lnbmVkIGhlYXBPYmplY3RJ
ZGVudGlmaWVyKQogewogICAgIEhlYXBQcm9maWxlciogaGVhcFByb2ZpbGVyID0gbV9lbnZpcm9u
bWVudC52bSgpLmhlYXBQcm9maWxlcigpOwogICAgIGlmICghaGVhcFByb2ZpbGVyKSB7CiAgICAg
ICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBoZWFwIHNuYXBzaG90Iik7Ci0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIEhlYXBTbmFwc2hvdCogc25hcHNob3QgPSBoZWFwUHJvZmlsZXItPm1vc3RSZWNlbnRT
bmFwc2hvdCgpOwogICAgIGlmICghc25hcHNob3QpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBB
U0NJSUxpdGVyYWwoIk5vIGhlYXAgc25hcHNob3QiKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgY29uc3QgT3B0aW9u
YWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gc25hcHNob3QtPm5vZGVGb3JPYmpl
Y3RJZGVudGlmaWVyKGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAgICBjb25zdCBzdGQ6Om9wdGlv
bmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9IHNuYXBzaG90LT5ub2RlRm9yT2Jq
ZWN0SWRlbnRpZmllcihoZWFwT2JqZWN0SWRlbnRpZmllcik7CiAgICAgaWYgKCFvcHRpb25hbE5v
ZGUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIG9iamVjdCBmb3Ig
aWRlbnRpZmllciwgaXQgbWF5IGhhdmUgYmVlbiBjb2xsZWN0ZWQiKTsKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0
dXJuIG9wdGlvbmFsTm9kZTsKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBB
Z2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0
SWQsCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogCiAgICAgdW5zaWduZWQgaGVhcE9i
amVjdElkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcE9iamVjdElkKTsKLSAg
ICBjb25zdCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBub2RlRm9y
SGVhcE9iamVjdElkZW50aWZpZXIoZXJyb3JTdHJpbmcsIGhlYXBPYmplY3RJZGVudGlmaWVyKTsK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9
IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0cmluZywgaGVhcE9iamVjdElkZW50
aWZpZXIpOwogICAgIGlmICghb3B0aW9uYWxOb2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTI5
Myw3ICsyOTMsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UmVtb3RlT2JqZWN0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplYwogICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKIAogICAgIHVuc2lnbmVkIGhlYXBPYmplY3RJZGVudGlmaWVyID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGhlYXBPYmplY3RJZCk7Ci0gICAgY29uc3QgT3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKGVy
cm9yU3RyaW5nLCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CisgICAgY29uc3Qgc3RkOjpvcHRpb25h
bDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBub2RlRm9ySGVhcE9iamVjdElkZW50
aWZpZXIoZXJyb3JTdHJpbmcsIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKICAgICBpZiAoIW9wdGlv
bmFsTm9kZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCmluZGV4IGJh
NzM4MmJkOTdmNmM5Yjk0NjQzMTZmNDM3MTA5MjNhMmRhNzBiM2YuLjQ3NTc2MDg4ODJiNGIyNjZl
ZmY0ZTA4ZWFhMWJkMjk1ODg1ZTA2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCkBAIC02Niw3
ICs2Niw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckhlYXBBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBICiAgICAgdm9pZCBjbGVhckhlYXBTbmFw
c2hvdHMoKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxKU0M6OkhlYXBTbmFwc2hvdE5vZGU+
IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihFcnJvclN0cmluZyYsIHVuc2lnbmVkIGhlYXBP
YmplY3RJZGVudGlmaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTQzo6SGVhcFNuYXBzaG90Tm9k
ZT4gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKEVycm9yU3RyaW5nJiwgdW5zaWduZWQgaGVh
cE9iamVjdElkZW50aWZpZXIpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcEZyb250ZW5kRGlzcGF0
Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dC5oCmluZGV4IDkzMTcwNWRjNWQ0Njg0OTBjZjcwZjcwOWVmMmE0NTMyNTliMzdhMWEuLmRiYTA2
MDE3OTlhZjkzMzMyOGQzMmUwMDRiNThmOThjMjMxYTA0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVDb25uZWN0
CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgdGFyZ2V0Q2xvc2VkKCk7CiAKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gdGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHRhcmdldElkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqY29u
bmVjdGlvbklkZW50aWZpZXIoKSBjb25zdDsKICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24oKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCmluZGV4IDEyZjk1NGMw
MzQ5YzFiZmM3MzMwM2Q2MjlmZGYxZmViYTU2MjU1N2MuLmQ2MGRhNDhhZmE4MzMxZjZjYmNkOWRj
NGZlNzkxNGEzMjhlZjIzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0K
QEAgLTExOSw5ICsxMTksOSBAQCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQoKQogICAgIHRlYXJkb3duUnVuTG9vcCgpOwogfQogCi1PcHRpb25hbDx1
bnNpZ25lZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFy
Z2V0SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdGFyZ2V0ID8gT3B0aW9uYWw8
dW5zaWduZWQ+KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCkpIDogTnVsbG9wdDsKKyAgICBy
ZXR1cm4gbV90YXJnZXQgPyBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPihtX3RhcmdldC0+dGFyZ2V0
SWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogTlNTdHJpbmcgKlJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldDo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdApAQCAtMTYzLDcgKzE2
Myw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21h
dGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGFyZ2V0TXV0ZXgpOwogICAgICAgICAgICAgaWYg
KCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNvbnRyb2xBbGxvd2VkKCkpIHsKLSAgICAg
ICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdl
dElkZW50aWZpZXIoKS52YWx1ZU9yKDApKTsKKyAgICAgICAgICAgICAgICBSZW1vdGVJbnNwZWN0
b3I6OnNpbmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdldElkZW50aWZpZXIoKS52YWx1ZV9vcigw
KSk7CiAgICAgICAgICAgICAgICAgbV90YXJnZXQgPSBudWxscHRyOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChpczxSZW1vdGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCkpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGNhc3RlZFRhcmdldCA9IGRvd25jYXN0PFJlbW90ZUluc3BlY3Rpb25UYXJn
ZXQ+KG1fdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKaW5kZXggNGVhN2YzOTI1ZjhkM2ViOWZiZDY2
OGQyYzI5YWQ1M2JmOWFhNjdhNS4uOTNmZDFhN2Q3YzBlNmRkYzMwOTIwMDM1NWFkMjYwZjZlY2Ez
ZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBjbGFzcyBKU19FWFBP
UlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3IgZmluYWwgOiBwdWJsaWMgUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdAogICAgIFJlZlB0cjxSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uPiBtX3Jl
bGF5Q29ubmVjdGlvbjsKIAogICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50KiBtX2NsaWVudCB7
IG51bGxwdHIgfTsKLSAgICBPcHRpb25hbDxSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJp
bGl0aWVzPiBtX2NsaWVudENhcGFiaWxpdGllczsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IG1fY2xpZW50Q2FwYWJpbGl0aWVzOwogCiAg
ICAgZGlzcGF0Y2hfcXVldWVfdCBtX3hwY1F1ZXVlOwogICAgIHVuc2lnbmVkIG1fbmV4dEF2YWls
YWJsZVRhcmdldElkZW50aWZpZXIgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KaW5kZXggY2IwYmFj
ZGY2ZjMwZWMzZjU2ZDFlNDRhYTlhZWI4NDY1NTY4MjY3ZS4uMjFjYjIzMmQ4YzRhYTNkOTRhMzc4
ODM2NTQ2OGQwMDE0YjAxNzA3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQpAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKQogICAg
IHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogCiAgICAgaWYgKCFtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBOdWxsb3B0OworICAgICAgICBtX2Ns
aWVudENhcGFiaWxpdGllcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIHsKICAgICAgICAgUmVt
b3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcyB1cGRhdGVkQ2FwYWJpbGl0aWVzID0g
ewogICAgICAgICAgICAgbV9jbGllbnQtPnJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgLy8gcmVt
b3RlQXV0b21hdGlvbkFsbG93ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFk
ZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CmluZGV4IGQ0M2Q1YTE5NjU2ZDBk
MTVkODkwNDEyN2ZiYWYzOWU1ZWJkNGFjOWEuLjA3MDRiM2UxZTBkMWRiYjUyODNhYjdiNmFmNjE0
YjExOTIwYjgxNjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQpAQCAtMzcwLDExICszNzAsMTEgQEAgZGVm
IF9nZW5lcmF0ZV9kZWNsYXJhdGlvbnNfZm9yX2VudW1fY29udmVyc2lvbl9tZXRob2RzKHNlbGYp
OgogICAgICAgICAgICAgJ25hbWVzcGFjZSAlcyB7JyAlIHNlbGYuaGVscGVyc19uYW1lc3BhY2Uo
KSwKICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgJ3RlbXBsYXRlPHR5cGVuYW1lIFByb3Rv
Y29sRW51bVR5cGU+JywKLSAgICAgICAgICAgICdPcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7JywKKyAgICAgICAgICAgICdz
dGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmKTsnLAogICAgICAgICBdKSkKIAogICAgICAgICBkZWYgcmV0dXJuX3R5cGVf
d2l0aF9leHBvcnRfbWFjcm8oY3BwX3Byb3RvY29sX3R5cGUpOgotICAgICAgICAgICAgZW51bV9y
ZXR1cm5fdHlwZSA9ICdPcHRpb25hbDwlcz4nICUgY3BwX3Byb3RvY29sX3R5cGUKKyAgICAgICAg
ICAgIGVudW1fcmV0dXJuX3R5cGUgPSAnc3RkOjpvcHRpb25hbDwlcz4nICUgY3BwX3Byb3RvY29s
X3R5cGUKICAgICAgICAgICAgIHJlc3VsdF90ZXJtcyA9IFtlbnVtX3JldHVybl90eXBlXQogICAg
ICAgICAgICAgZXhwb3J0X21hY3JvID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdl
eHBvcnRfbWFjcm8nLCBOb25lKQogICAgICAgICAgICAgaWYgZXhwb3J0X21hY3JvIGlzIG5vdCBO
b25lOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDU3Yjg0MmJjZjk0ZWRj
YjcyZTYxMzM5YzcxMWQ3NjMzMmJiNTUxN2UuLjdiYmI5MDMyN2M0NmI4YjhiNDZiYjA2MTFmYzY2
ODRkYWY0OTliYzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlv
bi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTk3LDcg
Kzk3LDcgQEAgZGVmIGdlbmVyYXRlX2NvbnZlcnNpb25fbWV0aG9kX2JvZHkoZW51bV90eXBlLCBj
cHBfcHJvdG9jb2xfdHlwZSk6CiAgICAgICAgICAgICBib2R5X2xpbmVzID0gW10KICAgICAgICAg
ICAgIGJvZHlfbGluZXMuZXh0ZW5kKFsKICAgICAgICAgICAgICAgICAndGVtcGxhdGU8PicsCi0g
ICAgICAgICAgICAgICAgJ09wdGlvbmFsPCVzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8JXM+
KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpJyAlIChjcHBfcHJvdG9jb2xfdHlwZSwgY3Bw
X3Byb3RvY29sX3R5cGUpLAorICAgICAgICAgICAgICAgICdzdGQ6Om9wdGlvbmFsPCVzPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8JXM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpJyAl
IChjcHBfcHJvdG9jb2xfdHlwZSwgY3BwX3Byb3RvY29sX3R5cGUpLAogICAgICAgICAgICAgICAg
ICd7JywKICAgICAgICAgICAgICAgICAnICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRW
YWx1ZXNbXSA9IHsnLAogICAgICAgICAgICAgXSkKQEAgLTExMiw3ICsxMTIsNyBAQCBkZWYgZ2Vu
ZXJhdGVfY29udmVyc2lvbl9tZXRob2RfYm9keShlbnVtX3R5cGUsIGNwcF9wcm90b2NvbF90eXBl
KToKICAgICAgICAgICAgICAgICAnICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9j
b25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKScsCiAgICAgICAgICAgICAgICAgJyAg
ICAgICAgICAgIHJldHVybiAoJXMpY29uc3RhbnRWYWx1ZXNbaV07JyAlIGNwcF9wcm90b2NvbF90
eXBlLAogICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICAgICcgICAgcmV0dXJuIE51
bGxvcHQ7JywKKyAgICAgICAgICAgICAgICAnICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7JywKICAg
ICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICBdKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGRmMzEwM2RjZjBlMjRm
ZjQ2ZDQ0ZWI3MTAxMTM5MWY1MWFjODBhOWMuLjQ0MmQ1Y2JmY2ExMGUyN2IxMGMwNzZkYzljMDAw
MTA2M2ZlMDViMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAg
LTcyMywxMSArNzIzLDExIEBAIHB1YmxpYzoKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1U
eXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlv
bmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1P
cHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4oY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTc5NSw3ICs3OTUsNyBAQCBT
dHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhl
ICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcm
IHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmIHByb3RvY29s
U3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsK
ICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNv
bG9yczo6UmVkLApAQCAtODA2LDcgKzgwNiw3IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8CiAg
ICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFu
dFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFu
ZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRl
eCA0YWQxNDZhNWI1Y2Y4NzY4YzI2NWFhODhkNDlmZGMxYjEwNzQyOWNhLi5lYjE2ODIwNjYyMDJm
OTk3NDVjODgzMDkxNGM4ZmZlZWRhOGYzOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTYyNCwxMSAr
NjI0LDExIEBAIHB1YmxpYzoKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAog
Ly8gRW51bXMgaW4gdGhlICdEYXRhYmFzZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
Pihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6
OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4oY29uc3QgU3RyaW5nJik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTY5Niw3ICs2OTYsNyBAQCBTdHJpbmcgZ2V0
RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdEYXRhYmFz
ZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmIHByb3RvY29s
U3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQog
ewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAg
KHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9yczo6UmVk
LApAQCAtNzA3LDcgKzcwNyw3IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8CiAgICAgICAgIGlm
IChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tp
XV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNv
bi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggM2U0NGZlMTEyMzRmMjY3OThk
ZTM3NDg2MDNkMmM2YjBlYmYyZWRiMy4uZTAzMzY0MjRiNmUxYTJhZDFjN2EzNWY0ZGY3ZmU1MTg4
NGJlODYxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVl
cy5qc29uLXJlc3VsdApAQCAtNDcxLDExICs0NzEsMTEgQEAgZW51bSBjbGFzcyBUeXBlRG9tYWlu
RW51bSB7CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90
b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBl
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGlu
IHRoZSAnVHlwZURvbWFpbicgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bT4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPihj
b25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURv
bWFpbjo6VHlwZURvbWFpbkVudW0+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6
OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bT4oY29uc3QgU3RyaW5nJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTU0NSw3ICs1NDUsNyBAQCBTdHJpbmcg
Z2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdUeXBl
RG9tYWluJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0+KGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5
cGVEb21haW46OlR5cGVEb21haW5FbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVj
dG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0+KGNvbnN0IFN0cmluZyYg
cHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVl
c1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5cGVEb21haW46
OlR5cGVEb21haW5FbnVtOjpTaGFyZWQsCkBAIC01NTcsNyArNTU3LDcgQEAgT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmkKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRf
dmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoSW5zcGVjdG9y
OjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0pY29uc3RhbnRWYWx1ZXNbaV07
CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hh
ZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDE0NWEwODY0OTNm
MWRlYTAyZTllNjNhMDkzZjNmNzg4ZjE3MzUzOTIuLjE1Y2E2YWMxNmViMzQ1NjZkZjg3YTgxNDE2
OWM5MjAxZWZjYzBjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3Vs
dApAQCAtNDEzLDExICs0MTMsMTEgQEAgcHVibGljOgogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29s
RW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6
b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ1J1bnRpbWUnIERvbWFpbgogdGVtcGxhdGU8
PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4g
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Oktl
eVBhdGg6OlR5cGU+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlBy
b3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4oY29uc3QgU3RyaW5n
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBT
dHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhl
ICdSdW50aW1lJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPihjb25zdCBTdHJpbmcmIHBy
b3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmlu
ZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAg
ICAgIChzaXplX3QpSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZTo6
TnVsbCwKQEAgLTQ5Miw3ICs0OTIsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpS
dW50aW1lOjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SQogICAgICAg
ICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1
ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpLZXlQYXRoOjpUeXBlKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5q
c29uLXJlc3VsdAppbmRleCA1YjI1NGUwYzgzN2VmZDZhMWE5NDE0MDg5N2JhM2MxZTJlZTY1YTlj
Li40ZGZjMWYyYjYzZmE1MTJmOWE2ZGIyMWQ0OTg3ZTQ1N2Q4ZjA5MTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9u
LWFycmF5LXR5cGUuanNvbi1yZXN1bHQKQEAgLTM2MywxMSArMzYzLDExIEBAIGVudW0gY2xhc3Mg
UmVhc29uIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBy
b3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5
cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMg
aW4gdGhlICdEZWJ1Z2dlcicgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4oY29uc3QgU3RyaW5nJik7CitzdGQ6
Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPihj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNDMxLDcg
KzQzMSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBF
bnVtcyBpbiB0aGUgJ0RlYnVnZ2VyJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmlu
ZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25zdCBTdHJpbmcmIHBy
b3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6UmVhc29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OlJlYXNvbj4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3Qp
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbjo6RGllZCwKQEAgLTQ0Miw3ICs0
NDIsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdAogICAgICAgICBpZiAocHJvdG9jb2xTdHJp
bmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAg
ICAgcmV0dXJuIChJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uKWNvbnN0YW50
VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggMmRiZGE3ODc5
MGE2YzZmMGZhMjA5OWQwZmMyNjRhZTc3MTQ3MTY2ZC4uNDlhODQ0MGY4MzRhYjIzOGRiNWFiYzRm
ZDAzODMyZWFmMDkwODExOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAt
MzYwLDEzICszNjAsMTMgQEAgZW51bSBjbGFzcyBUd29MZWdnZWRBbmltYWxzIHsKIG5hbWVzcGFj
ZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1P
cHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50aW1lJyBE
b21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkZhcm1BbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPihjb25z
dCBTdHJpbmcmKTsKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPihjb25zdCBTdHJpbmcmKTsK
K3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5p
bWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRp
bWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0SGVscGVycwogCkBAIC00MzQsNyArNDM0LDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZh
bHVlKGludCBjb2RlKSB7CiAKIC8vIEVudW1zIGluIHRoZSAnUnVudGltZScgRG9tYWluCiB0ZW1w
bGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFs
cz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkZhcm1BbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPihj
b25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
Y29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpGYXJtQW5pbWFsczo6UGlncywKQEAgLTQ0NiwxMSArNDQ2LDExIEBAIE9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPiBwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zCiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2Nv
bnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzKWNvbnN0YW50VmFsdWVzW2ld
OwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHdvTGVn
Z2VkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcp
CitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFu
aW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpUd29MZWdnZWRBbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNp
emVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzOjpEdWNr
cywKQEAgLTQ2Miw3ICs0NjIsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpUd29MZWdnZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbgogICAgICAgICBp
ZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNb
aV1dKQogICAgICAgICAgICAgcmV0dXJuIChJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpU
d29MZWdnZWRBbmltYWxzKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJp
bmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3Rz
Lmpzb24tcmVzdWx0CmluZGV4IGI5MDRhZjhkZTJmMWI0ZTdjZGVkODAyYTNkZGY1YmExMWVlZWFi
MTMuLjViZTk3MzM1ZmU4NjA0NTZjZjFhNjYzMWNlZGVkZWY3YWI5OWU0NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmlu
Zy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC01ODIsMTMgKzU4MiwxMyBAQCBzdGF0aWMg
dm9pZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
Kik7CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2Nv
bEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRo
ZSAnVGVzdCcgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOworc3Rk
OjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3Rl
ZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOwogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYp
Oworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxz
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2Fz
dGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJz
CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdUZXN0JyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFs
cz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPihjb25zdCBTdHJp
bmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRW
YWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpV
bmNhc3RlZEFuaW1hbHM6OlBpZ3MsCkBAIC02NjgsMTEgKzY2OCwxMSBAQCBPcHRpb25hbDxJbnNw
ZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbgogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92
YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChJbnNwZWN0b3I6
OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0
ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVk
QW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3N0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0
cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFu
dFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6
OkNhc3RlZEFuaW1hbHM6OkR1Y2tzLApAQCAtNjg0LDcgKzY4NCw3IEBAIE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwCiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3Zh
bHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggYzhmYjI1YTI4NWU0NDQ5NmUzMDViZGYzYzg4ZmE4
YmFlMDIzMDJjMC4uNzVjNzBjN2Y3YzgyYTQ4OTRlOTAxNTlhYmE5YmNmMDBhNzRhMjQwYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBK
SVRDb2RlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKIAogI2lmIEVO
QUJMRShKSVQpCiAgICAgdmlydHVhbCBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2
ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KTsK
LSAgICB2aXJ0dWFsIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lk
KiBwYykgeyBVTlVTRURfUEFSQU0ocGMpOyByZXR1cm4gTnVsbG9wdDsgfQorICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIHsg
VU5VU0VEX1BBUkFNKHBjKTsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogI2VuZGlmCiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKaW5k
ZXggYmU5MmQzZjk2ZTFiYzg4ZDYxMzYyMmM1ZmY1Y2JhOTBiM2Y0ODE1Mi4uYTVkYjdlMWIyNmUy
MzRiZDFkZDIxODEzYjVlZWUyOTI4ZjliNDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEpJVERpdkdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKICAgICBsb2FkT3Bl
cmFuZChqaXQsIG1fbGVmdE9wZXJhbmQsIG1fbGVmdCwgbV9sZWZ0RlBSKTsKIAogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWw7CiAgICAgaWYgKG1fcmlnaHRPcGVyYW5k
LmlzQ29uc3QoKSkgewogICAgICAgICBkb3VibGUgY29uc3RhbnQgPSBtX3JpZ2h0T3BlcmFuZC5h
c0NvbnN0TnVtYmVyKCk7CiAgICAgICAgIHNhZmVSZWNpcHJvY2FsID0gc2FmZVJlY2lwcm9jYWxG
b3JEaXZCeUNvbnN0KGNvbnN0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCmluZGV4IGYxN2E2YzE3NjMwNTU3M2U4ZDNhNjVhMzI5YjNkYWFlNWJjNDI2
OGEuLjEyYTU2ZjM4MTVmYmVhMDBhMTYyOGVkZDg3MjE2ZWVlZmUwMTkwMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNTcxLDcgKzU3MSw3IEBA
IHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVj
dCogYmFzZU9iamVjdCwgSlNWYWx1ZSBzCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50
b1Byb3BlcnR5S2V5KGNhbGxGcmFtZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5KSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHkpKSB7CiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0g
dHJ1ZTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoY2FsbEZyYW1lLCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCmluZGV4
IGI5M2UyYzYyYzE5NzkyMDlhOWMwZjJmOTJhN2JjNTZmMjAxZWNjMjIuLjQxMDAwOWFiMDI1Y2Mw
YThkNDI4Y2M3Yzg1YjI5ZjM5NWIzYTFiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCkBAIC0yNDYsMTEgKzI0NiwxMSBAQCBkb3VibGUg
UENUb0NvZGVPcmlnaW5NYXA6Om1lbW9yeVNpemUoKQogICAgIHJldHVybiBzaXplOwogfQogCi1P
cHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdpbk1hcDo6ZmluZFBDKHZvaWQqIHBjKSBj
b25zdAorc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdpbk1hcDo6ZmluZFBD
KHZvaWQqIHBjKSBjb25zdAogewogICAgIHVpbnRwdHJfdCBwY0FzSW50ID0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4ocGMpOwogICAgIGlmICghKG1fcGNSYW5nZVN0YXJ0IDw9IHBjQXNJbnQgJiYg
cGNBc0ludCA8PSBtX3BjUmFuZ2VFbmQpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnRwdHJfdCBjdXJyZW50UEMgPSAwOwog
ICAgIENvZGVPcmlnaW4gY3VycmVudENvZGVPcmlnaW4oMCwgbnVsbHB0cik7CkBAIC0yOTMsMTIg
KzI5MywxMiBAQCBPcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdpbk1hcDo6ZmluZFBD
KHZvaWQqIHBjKSBjb25zdAogICAgICAgICAgICAgLy8gV2Ugc3VidHJhY3QgMSBiZWNhdXNlIHdl
IGdlbmVyYXRlIGVuZCBwb2ludHMgaW5jbHVzaXZlbHkgaW4gdGhpcyB0YWJsZSwgZXZlbiB0aG91
Z2ggd2UgYXJlIGludGVyZXN0ZWQgaW4gcmFuZ2VzIG9mIHRoZSBmb3JtOiBbcHJldmlvdXNQQywg
Y3VycmVudFBDKQogICAgICAgICAgICAgdWludHB0cl90IGVuZE9mUmFuZ2UgPSBjdXJyZW50UEMg
LSAxOwogICAgICAgICAgICAgaWYgKHN0YXJ0T2ZSYW5nZSA8PSBwY0FzSW50ICYmIHBjQXNJbnQg
PD0gZW5kT2ZSYW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdp
bj4ocHJldmlvdXNPcmlnaW4pOyAvLyBXZSByZXR1cm4gcHJldmlvdXNPcmlnaW4gaGVyZSBiZWNh
dXNlIENvZGVPcmlnaW4ncyBhcmUgbWFwcGVkIHRvIHRoZSBzdGFydFZhbHVlIG9mIHRoZSByYW5n
ZS4KKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihwcmV2
aW91c09yaWdpbik7IC8vIFdlIHJldHVybiBwcmV2aW91c09yaWdpbiBoZXJlIGJlY2F1c2UgQ29k
ZU9yaWdpbidzIGFyZSBtYXBwZWQgdG8gdGhlIHN0YXJ0VmFsdWUgb2YgdGhlIHJhbmdlLgogICAg
ICAgICB9CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVP
cmlnaW5NYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAu
aAppbmRleCAxYzgwZWQ4NmVjY2Y2NTcxYzIxZjFiZWFjMmE2NWI4ZDgwZTQyZDNlLi5jMDFjNDQx
YTU4MTgwOTM5OWIzOTkwN2FmNDg5MmRiYTQzMWRjZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5oCkBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIFBD
VG9Db2RlT3JpZ2luTWFwIHsKICAgICBQQ1RvQ29kZU9yaWdpbk1hcChQQ1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXImJiwgTGlua0J1ZmZlciYpOwogICAgIH5QQ1RvQ29kZU9yaWdpbk1hcCgpOwogCi0g
ICAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyh2b2lkKiBwYykgY29uc3Q7CiAKICAgICBkb3Vi
bGUgbWVtb3J5U2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGZlOTllZGFkZjk0MjZl
MTk2MDAwNDMyODQwZmE2M2MxNDUwYzQwOWQuLmY3ZTYwMzViMzVmOTkzNjBmNzkxZWI5MjE5YmQ1
ZjdiOGViODZjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgY2xh
c3MgUnVudGltZUFycmF5IDogcHVibGljIEpTQXJyYXkgewogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGlu
ZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAoaW5kZXggJiYgaW5k
ZXgudmFsdWUoKSA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnREZWxldGUgfCBEb250RW51bSwganNOdW1iZXIodGhp
c09iamVjdC0+bV92ZWN0b3JbaW5kZXgudmFsdWUoKV0pKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
aW5kZXggMGQ1NmQxZDJmYjMwODM5MjA3MWMyN2MwNjk1YThkYzQ4MGVmMDcyNC4uZDM2YmIyODQ3
ZmRhNTFkOWE2NWRkNjM4ZmQyMzEzNDJiZjEzZGExZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIGlmIChVTkxJ
S0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKLSAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVl
KCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDog
UHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7CiAgICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IGMyMGFhODRmZGQw
MzY5YjZhOGE2ZmUwNTYwYTNmNjgzZmUzYTljOTkuLmE3YjE4MGIxMWU2MTNkOGJiNzI1YjkyY2Nh
NGJhZTY4ZTQyZjZiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9k
dWxlQW5hbHl6ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4
cG9ydFZhcmlhYmxlKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9ncmFtTm9kZSwgY29uc3QK
ICAgICAvLyBJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcuCiAgICAgLy8gaW1wb3J0IGEgZnJv
bSAibW9kIgogICAgIC8vIGV4cG9ydCB7IGEgfQotICAgIE9wdGlvbmFsPEpTTW9kdWxlUmVjb3Jk
OjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT50cnlH
ZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAgIHN0ZDo6b3B0aW9uYWw8SlNNb2R1
bGVSZWNvcmQ6OkltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3Jk
KCktPnRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5nZXQoKSk7CiAgICAgQVNTRVJUKG9wdGlv
bmFsSW1wb3J0RW50cnkpOwogICAgIGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSYg
aW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKICAgICBmb3IgKGF1dG8mIGV4cG9y
dE5hbWUgOiBtb2R1bGVQcm9ncmFtTm9kZS5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRlZEJpbmRp
bmdzKCkuZ2V0KGxvY2FsTmFtZS5nZXQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25jdXJyZW50SlNMb2NrLmgKaW5kZXggOTgxMWEzODIzZGJmOGYxMmYyMmJjZjdi
MjQwNzJlZjljMzRmZWZkOS4uYzg3ZDNjNjczY2U5Yzg5Y2FmOTllZTMxODNiZGM4YzQ4NDUzZThi
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpT
TG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xv
Y2suaApAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIENvbmN1cnJlbnRKU0xvY2tlciA6IHB1Ymxp
YyBDb25jdXJyZW50SlNMb2NrZXJCYXNlIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIoTm9Mb2Nr
aW5nTmVjZXNzYXJ5VGFnKQogICAgICAgICA6IENvbmN1cnJlbnRKU0xvY2tlckJhc2UoTm9Mb2Nr
aW5nTmVjZXNzYXJ5KQogI2lmIEVOQUJMRShDT05DVVJSRU5UX0pTKSAmJiAhZGVmaW5lZChOREVC
VUcpCi0gICAgICAgICwgbV9kaXNhbGxvd0dDKE51bGxvcHQpCisgICAgICAgICwgbV9kaXNhbGxv
d0dDKHN0ZDo6bnVsbG9wdCkKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcg
QEAgY2xhc3MgQ29uY3VycmVudEpTTG9ja2VyIDogcHVibGljIENvbmN1cnJlbnRKU0xvY2tlckJh
c2UgewogCiAjaWYgRU5BQkxFKENPTkNVUlJFTlRfSlMpICYmICFkZWZpbmVkKE5ERUJVRykKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOworICAgIHN0ZDo6
b3B0aW9uYWw8RGlzYWxsb3dHQz4gbV9kaXNhbGxvd0dDOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmli
dXRlcy5oCmluZGV4IGMyYWVlNzE2OTRhNzAxNDkxNTg3ZjBiOWUwNGFiMTgyMDQ4ZjdlODQuLmQ3
ZTNiOTEzMzMzNTcyNWE3NGEzMzY0MDRkNjYyOTcxMTAwZDQ1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
CkBAIC05OSwxMCArOTksMTAgQEAgY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKICAg
ICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBNaXhlZFRyaVN0
YXRlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlKCkgY29uc3QKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICgh
aGFzV3JpdGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0
YWJsZVNoaWZ0KSA9PSBUcnVlVHJpU3RhdGU7CiAgICAgfQogCkBAIC0xMTEsMTAgKzExMSwxMCBA
QCBjbGFzcyBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMgewogICAgICAgICByZXR1cm4gZXh0cmFj
dFRyaVN0YXRlKENvbmZpZ3VyYWJsZVNoaWZ0KSAhPSBNaXhlZFRyaVN0YXRlOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBjb25maWd1cmFibGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNDb25m
aWd1cmFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1
cmFibGVTaGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgIH0KIApAQCAtMTIzLDEwICsxMjMsMTAg
QEAgY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKICAgICAgICAgcmV0dXJuIGV4dHJh
Y3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3RhdGU7CiAgICAgfQogCi0g
ICAgT3B0aW9uYWw8Ym9vbD4gZW51bWVyYWJsZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBlbnVtZXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzRW51bWVyYWJs
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKEVudW1lcmFibGVTaGlm
dCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKaW5kZXggYTMwMWEzOTA5
NDkwMjc5YjY1MGJjYzJkMGMzNmUwMmI1ZDQzMWMxMi4uZWRkNjQ3NzU1ZDUzNGQ0ODAyZjkzYmU5
ZDNkZTA0OGViYzBiOWQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wg
R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKICAgICBpZiAoaW5kZXggJiYgdGhp
c09iamVjdC0+Y2FuQWNjZXNzSW5kZXhRdWlja2x5KGluZGV4LnZhbHVlKCkpKSB7CiAgICAgICAg
IHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgTm9uZSwgdGhpc09iamVjdC0+Z2V0SW5kZXhRdWlj
a2x5KGluZGV4LnZhbHVlKCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTcsNyArMTE3
LDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGUKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFs
dWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKICAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0
U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNs
b3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgoaWRlbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vz
c0luZGV4UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5zZXRJ
bmRleFF1aWNrbHkodm0sIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxl
dGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGUKICAgICAgICAg
ICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSkKICAgICAg
ICAgdGhpc09iamVjdC0+b3ZlcnJpZGVUaGluZ3Modm0pOwogICAgIAotICAgIE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNP
YmplY3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICB0
aGlzT2JqZWN0LT5vdmVycmlkZUFyZ3VtZW50KHZtLCBpbmRleC52YWx1ZSgpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBHZW5lcmljQXJndW1lbnRzPFR5
cGU+OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMK
ICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpCiAg
ICAgICAgIHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzSWZOZWNlc3Nhcnkodm0pOwogICAgIGVs
c2UgewotICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5k
ZXgoaWRlbnQpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4
ID0gcGFyc2VJbmRleChpZGVudCk7CiAgICAgICAgIGlmIChvcHRpb25hbEluZGV4ICYmIHRoaXNP
YmplY3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShvcHRpb25hbEluZGV4LnZhbHVlKCkpKSB7CiAg
ICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IG9wdGlvbmFsSW5kZXgudmFsdWUoKTsKICAgICAg
ICAgICAgIGlmICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5k
ZXggMjlhNTdlNjFjYjA3MTc1MGFiOTg5MzhjODM5NmM3NGUzYWU2NWQ2Yi4uMWJiZTZlOGM2Zjhi
ZGM5NTljNWQzNWRkZjUyZWRhZmQ5MjJjMTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaApAQCAtODQsNyArODQsNyBAQCBj
bGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlIHsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1
aW50MzJfdD4oc3RydWN0dXJlSUQpICsgaW1wbC0+aGFzaCgpOwogICAgIH0KIAotICAgIEFMV0FZ
U19JTkxJTkUgT3B0aW9uYWw8Ym9vbD4gZ2V0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcE5hbWUpCisgICAgQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdl
dChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BOYW1lKQogICAgIHsKICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwgPSBwcm9wTmFtZS51aWQoKTsKICAgICAgICAg
U3RydWN0dXJlSUQgaWQgPSBzdHJ1Y3R1cmUtPmlkKCk7CkBAIC05Miw3ICs5Miw3IEBAIGNsYXNz
IEhhc093blByb3BlcnR5Q2FjaGUgewogICAgICAgICBFbnRyeSYgZW50cnkgPSBiaXR3aXNlX2Nh
c3Q8RW50cnkqPih0aGlzKVtpbmRleF07CiAgICAgICAgIGlmIChlbnRyeS5zdHJ1Y3R1cmVJRCA9
PSBpZCAmJiBlbnRyeS5pbXBsLmdldCgpID09IGltcGwpCiAgICAgICAgICAgICByZXR1cm4gZW50
cnkucmVzdWx0OwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdHJ5QWRkKFZNJiB2bSwg
UHJvcGVydHlTbG90JiBzbG90LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcE5h
bWUsIGJvb2wgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGFzaE1hcEltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJ
bXBsLmgKaW5kZXggM2E5ZDJkNzA3NjlmMWY5YTU2MzJlZmZkNmViZDdjNWIxZTBlNWJkYi4uNWJk
MDExNzIyMGNmYTdiZjY3NDExNmRmNjQ4Yjg4YWI4NTMxYzJlNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCkBAIC0yNTMsMTYgKzI1MywxNiBAQCBBTFdB
WVNfSU5MSU5FIHVpbnQzMl90IGpzTWFwSGFzaChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gd2FuZ3NJbnQ2NEhhc2gocmF3VmFsdWUpOwogfQogCi1B
TFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQzMl90PiBjb25jdXJyZW50SlNNYXBIYXNoKEpTVmFs
dWUga2V5KQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb25jdXJyZW50
SlNNYXBIYXNoKEpTVmFsdWUga2V5KQogewogICAgIGtleSA9IG5vcm1hbGl6ZU1hcEtleShrZXkp
OwogICAgIGlmIChrZXkuaXNTdHJpbmcoKSkgewogICAgICAgICBKU1N0cmluZyogc3RyaW5nID0g
YXNTdHJpbmcoa2V5KTsKICAgICAgICAgaWYgKHN0cmluZy0+bGVuZ3RoKCkgPiAxMCAqIDEwMjQp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnRyeUdldFZh
bHVlSW1wbCgpOwogICAgICAgICBpZiAoIWltcGwpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBpbXBs
LT5jb25jdXJyZW50SGFzaCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCmluZGV4IDU4MWJhNDI0YzI5NWQ2ZGUxMGM0ZGRiYWJjM2JhNmM4ODc1
MDlmYTcuLjI1ZTE2YWUzNDE3ZDZkMDI2OWZmNGY3MzYxZGQ4YTI2ZjI0M2M4NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTM4LDQ2ICszOCw0NiBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJbmRleCh1aW50MzJfdCBpbmRleCkKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIENoYXJUeXBlPgotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4g
cGFyc2VJbmRleChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQor
QUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IENo
YXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgLy8gQW4gZW1wdHkg
c3RyaW5nIGlzIG5vdCBhIG51bWJlci4KICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBHZXQgdGhl
IGZpcnN0IGNoYXJhY3RlciwgdHVybmluZyBpdCBpbnRvIGEgZGlnaXQuCiAgICAgdWludDMyX3Qg
dmFsdWUgPSBjaGFyYWN0ZXJzWzBdIC0gJzAnOwogICAgIGlmICh2YWx1ZSA+IDkpCi0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
Q2hlY2sgZm9yIGxlYWRpbmcgemVyb3MuIElmIHRoZSBmaXJzdCBjaGFyYWNoZXIgaXMgMCwgdGhl
biB0aGUKICAgICAvLyBsZW5ndGggb2YgdGhlIHN0cmluZyBtdXN0IGJlIG9uZSAtIGUuZy4gIjA0
MiIgaXMgbm90IGVxdWFsIHRvICI0MiIuCiAgICAgaWYgKCF2YWx1ZSAmJiBsZW5ndGggPiAxKQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHdoaWxlICgtLWxlbmd0aCkgewogICAgICAgICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwg
Y2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAzMiBiaXRzLgogICAgICAgICBpZiAodmFsdWUg
PiAweEZGRkZGRkZGVSAvIDEwKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB2YWx1ZSAqPSAxMDsKIAogICAgICAg
ICAvLyBHZXQgdGhlIG5leHQgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBkaWdpdC4KICAg
ICAgICAgdWludDMyX3QgbmV3VmFsdWUgPSAqKCsrY2hhcmFjdGVycykgLSAnMCc7CiAgICAgICAg
IGlmIChuZXdWYWx1ZSA+IDkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gQWRkIGluIHRoZSBvbGQgdmFs
dWUsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4KICAgICAgICAgbmV3VmFs
dWUgKz0gdmFsdWU7CiAgICAgICAgIGlmIChuZXdWYWx1ZSA8IHZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB2YWx1ZSA9IG5ld1ZhbHVlOwogICAgIH0KIAogICAgIGlmICghaXNJbmRleCh2YWx1ZSkpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB2YWx1ZTsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFy
c2VJbmRleChTdHJpbmdJbXBsJiBpbXBsKQorQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBwYXJzZUluZGV4KFN0cmluZ0ltcGwmIGltcGwpCiB7CiAgICAgaWYgKGltcGwuaXM4
Qml0KCkpCiAgICAgICAgIHJldHVybiBwYXJzZUluZGV4KGltcGwuY2hhcmFjdGVyczgoKSwgaW1w
bC5sZW5ndGgoKSk7CkBAIC0yNzEsMTMgKzI3MSwxMyBAQCBpbmxpbmUgYm9vbCBJZGVudGlmaWVy
OjplcXVhbChjb25zdCBTdHJpbmdJbXBsKiByLCBjb25zdCBVQ2hhciogcywgdW5zaWduZWQgbGVu
ZwogICAgIHJldHVybiBXVEY6OmVxdWFsKHIsIHMsIGxlbmd0aCk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGF1dG8gdWlkID0gaWRlbnRpZmll
ci5pbXBsKCk7CiAgICAgaWYgKCF1aWQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCi0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBwYXJzZUluZGV4KCp1aWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuY3BwCmluZGV4IGQ3NDg0Mzk4YWIxYjAyMDA0OTkyY2FjNGQ4YzYyNjFiYzY1ODNkYmIu
LjUxODcyMjY5MmQyMDgyZGU4NDNhN2VhOWY5YmNjNWIyMDFhZDczM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBK
U0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZQogCiAgICAgLy8gNC4gRWxzZSBpZiBQIGlzIGFuIGFycmF5IGluZGV4
ICgxNS40KSwgdGhlbgogICAgIC8vIGEuIExldCBpbmRleCBiZSBUb1VpbnQzMihQKS4KLSAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICAvLyBiLiBSZWplY3QgaWYgaW5k
ZXggPj0gb2xkTGVuIGFuZCBvbGRMZW5EZXNjLltbV3JpdGFibGVdXSBpcyBmYWxzZS4KICAgICAg
ICAgdWludDMyX3QgaW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7CiAgICAgICAgIC8vIEZJ
WE1FOiBOb3RoaW5nIHByZXZlbnRzIHRoaXMgZnJvbSBiZWluZyBjYWxsZWQgb24gYSBSdW50aW1l
QXJyYXksIGFuZCB0aGUgbGVuZ3RoIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHJldHVybiAwIGluIHRo
YXQgY2FzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
aW5kZXggZDAxYTc3OTFhM2NmNGZhN2Q4MzJjYjRhNTI3ZWI0YjNlMmVjMTBmYS4uMWY4YzZkNTkw
NjNjMDUzNTFkYmNjMDhjYTQ0MmMwYWI3ZmQ2Y2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTc2LDEwICs3NiwxMCBAQCBkb3VibGUgSlNW
YWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJu
IGlzVW5kZWZpbmVkKCkgPyBQTmFOIDogMDsgLy8gbnVsbCBhbmQgZmFsc2UgYm90aCBjb252ZXJ0
IHRvIDAuCiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gSlNWYWx1ZTo6dG9OdW1iZXJGcm9tUHJpbWl0
aXZlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBKU1ZhbHVlOjp0b051bWJlckZyb21Q
cmltaXRpdmUoKSBjb25zdAogewogICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpc051bWJlcigp
KQogICAgICAgICByZXR1cm4gYXNOdW1iZXIoKTsKICAgICBpZiAoaXNCb29sZWFuKCkpCkBAIC04
OCw3ICs4OCw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gSlNWYWx1ZTo6dG9OdW1iZXJGcm9tUHJpbWl0
aXZlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIFBOYU47CiAgICAgaWYgKGlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CkBAIC0xNTAsNyArMTUw
LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KQogICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVl
KCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZXJl
IGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBkNDBjM2ZjNDdkMDkw
YzNjMGZjNmIyYjBiOTFlMDVhNjU5ZWEwM2E2Li44ODA5ZmRjYjE0ZmFiNzU0NDA1ZGM5YTkyZjJj
MmU5OWM0ZTExM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCkBAIC0yNTEsNyArMjUxLDcgQEAgY2xhc3MgSlNWYWx1ZSB7CiAgICAgZG91YmxlIHRvTnVt
YmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAgICAgLy8gdG9OdW1iZXIgY29udmVyc2lvbiBpZiBp
dCBjYW4gYmUgZG9uZSB3aXRob3V0IHNpZGUgZWZmZWN0cy4KLSAgICBPcHRpb25hbDxkb3VibGU+
IHRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKIAogICAgIEpTU3RyaW5nKiB0b1N0cmlu
ZyhFeGVjU3RhdGUqKSBjb25zdDsgLy8gT24gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMgdGhlIGVt
cHR5IHN0cmluZy4KICAgICBKU1N0cmluZyogdG9TdHJpbmdPck51bGwoRXhlY1N0YXRlKikgY29u
c3Q7IC8vIE9uIGV4Y2VwdGlvbiwgdGhpcyByZXR1cm5zIG51bGwsIHRvIG1ha2UgZXhjZXB0aW9u
IGNoZWNrcyBmYXN0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCAzNTUzOTBkNjU3MmYxMDBkYjZjNzU3
NDNmMzAyOWVkYTFiNzA4NWNhLi45Y2MwNWZhZDRjMWNlMGEwYTMyZTM1Y2FhZTBiOWRkNWJjNTk4
ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAgLTE4OSw3ICsxODksNyBAQCBjbGFzcyBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAKICAgICBzdGF0aWMg
RWxlbWVudFR5cGUgdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihleGVjLCBq
c1ZhbHVlKTsgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JO
YXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0
b05hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRUeXBlPiB0b0FkYXB0b3JOYXRpdmVGcm9tVmFs
dWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSBqc1ZhbHVlKSB7IHJldHVybiB0b05hdGl2ZUZyb21W
YWx1ZVdpdGhvdXRDb2VyY2lvbjxBZGFwdG9yPihqc1ZhbHVlKTsgfQogCiAgICAgdm9pZCBzb3J0
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aAppbmRleCBjYjJiNWVkYmEyMGVjNzQ5NmQ5N2RjMTZlNGM2NzRiMDc4MTVhZWJmLi42ODI1ZmZk
ZTA5NWY2MTQ2MmNjMzlmZTY4YzM3ZjgzZmYzOTljODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBpbmxpbmUg
SlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0Zyb21JdGVyYXRvcihFeGVj
U3RhdGUqIGV4ZWMsIFN0cgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1pbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmly
c3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0
KQoraW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1Zh
bHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gbGVuZ3RoT3B0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjMxLDcgKzIzMSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGxlbmd0aCA9IE51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3Ro
ID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihm
aXJzdFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0gZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMSkudG9JbmRleChleGVjLCAiYnl0ZU9mZnNldCIpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKaW5kZXggMzY3YjEzNTFlNDdkYThkMjU4MDdmZTViYzgxY2IxNDQ1NDky
MmE0Zi4uNzA4YzUyYzQ2MTNkYzYyZjcxZTI1NmJiMGI5NGNlMGIyNjcwNDI0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoCiB7CiAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKSB7CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBOb25lLCB0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTM3MSw3ICszNzEsNyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpwdXQoCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtaW50ZWdlci1pbmRleGVkLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVjZWl2ZXIK
ICAgICAvLyBJZ25vcmUgdGhlIHJlY2VpdmVyIGV2ZW4gaWYgdGhlIHJlY2VpdmVyIGlzIGFsdGVy
ZWQgdG8gbm9uIGJhc2UgdmFsdWUuCiAgICAgLy8gOS40LjUuNS0yLWItaSBSZXR1cm4gPyBJbnRl
Z2VySW5kZXhlZEVsZW1lbnRTZXQoTywgbnVtZXJpY0luZGV4LCBWKS4KLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIAogICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggMjIx
MzU3ZjFkODRhNjk4NzNmODE3ZTY1MzAzMTE2NTk5MWYwMDkyOS4uNzYxNzU3M2RjY2VmM2Y2YjY0
ODk4ZTYyZmJjNDIxZTI2ZWFmN2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtOTAsMjAgKzkwLDIwIEBAIHZvaWQgSlNNb2R1
bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkKICAgICBB
U1NFUlRfVU5VU0VEKGlzTmV3RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1YXJhbnRl
ZWQgYnkgdGhlIHBhcnNlci4KIH0KIAotYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0
RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gT3B0aW9uYWw8SW1wb3J0RW50
cnk+CithdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5n
SW1wbCogbG9jYWxOYW1lKSAtPiBzdGQ6Om9wdGlvbmFsPEltcG9ydEVudHJ5PgogewogICAgIGNv
bnN0IGF1dG8gaXRlcmF0b3IgPSBtX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpOwogICAg
IGlmIChpdGVyYXRvciA9PSBtX2ltcG9ydEVudHJpZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OwotICAgIHJldHVybiBPcHRpb25hbDxJbXBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxJbXBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAotYXV0byBKU01vZHVsZVJlY29y
ZDo6dHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IE9w
dGlvbmFsPEV4cG9ydEVudHJ5PgorYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0RXhwb3J0RW50
cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8RXhwb3J0
RW50cnk+CiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5k
KGV4cG9ydE5hbWUpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRy
eT4oaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAog
YXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4gRXhwb3J0
RW50cnkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBKU01vZHVsZVJlY29yZCogSlNNb2R1bGVSZWNvcmQ6
Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogCiBhdXRv
IEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgbG9jYWxOYW1lKSAtPiBSZXNvbHV0aW9uCiB7Ci0gICAgT3B0aW9uYWw8SW1wb3J0
RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSB0cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUu
aW1wbCgpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVu
dHJ5ID0gdHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmltcGwoKSk7CiAgICAgaWYgKCFvcHRp
b25hbEltcG9ydEVudHJ5KQogICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6bm90Rm91bmQoKTsK
IApAQCAtMjE1LDEyICsyMTUsMTIgQEAgaW5saW5lIGJvb2wgSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dmVRdWVyeTo6SGFzaDo6ZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiBsaHMsIGMKICAgICByZXR1
cm4gbGhzLm1vZHVsZVJlY29yZCA9PSByaHMubW9kdWxlUmVjb3JkICYmIGxocy5leHBvcnROYW1l
ID09IHJocy5leHBvcnROYW1lOwogfQogCi1hdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRDYWNo
ZWRSZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBPcHRpb25hbDxS
ZXNvbHV0aW9uPgorYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihV
bmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9u
PgogewogICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX3Jlc29sdXRpb25DYWNoZS5maW5kKGV4
cG9ydE5hbWUpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc29sdXRpb25DYWNoZS5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPFJlc29sdXRpb24+
KGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4oaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAogdm9p
ZCBKU01vZHVsZVJlY29yZDo6Y2FjaGVSZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBv
cnROYW1lLCBjb25zdCBSZXNvbHV0aW9uJiByZXNvbHV0aW9uKQpAQCAtNTU4LDE0ICs1NTgsMTQg
QEAgYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydEltcGwoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBSZXNvbHZlUXVlcnkmIHJvb3QKIAogICAgICAgICAgICAgLy8gIDQuIE9uY2Ugd2Ug
Zm9sbG93IHN0YXIgbGlua3MsIHdlIHNob3VsZCBub3QgcmV0cmlldmUgdGhlIHJlc3VsdCBmcm9t
IHRoZSBjYWNoZSBhbmQgc2hvdWxkIG5vdCBjYWNoZSB0aGUgcmVzdWx0LgogICAgICAgICAgICAg
aWYgKCFmb3VuZFN0YXJMaW5rcykgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxSZXNv
bHV0aW9uPiBjYWNoZWRSZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT50cnlHZXRDYWNoZWRSZXNv
bHV0aW9uKHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4gY2FjaGVkUmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+
dHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihxdWVyeS5leHBvcnROYW1lLmdldCgpKSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1lcmdlVG9DdXJyZW50VG9wKCpjYWNoZWRSZXNvbHV0aW9uKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBjb25zdCBPcHRpb25hbDxFeHBvcnRFbnRyeT4gb3B0aW9u
YWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0RXhwb3J0RW50cnkocXVlcnkuZXhw
b3J0TmFtZS5nZXQoKSk7CisgICAgICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVu
dHJ5PiBvcHRpb25hbEV4cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkLT50cnlHZXRFeHBvcnRFbnRy
eShxdWVyeS5leHBvcnROYW1lLmdldCgpKTsKICAgICAgICAgICAgIGlmICghb3B0aW9uYWxFeHBv
cnRFbnRyeSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhw
b3J0ZWQgYmluZGluZyBpbiB0aGUgY3VycmVudCBtb2R1bGUsCiAgICAgICAgICAgICAgICAgLy8g
d2UgbmVlZCB0byBsb29rIGludG8gdGhlIHN0YXJzLgpAQCAtNjQ4LDcgKzY0OCw3IEBAIGF1dG8g
SlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnRJbXBsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
UmVzb2x2ZVF1ZXJ5JiByb290CiBhdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkgLT4gUmVzb2x1dGlv
bgogewogICAgIC8vIExvb2sgdXAgdGhlIGNhY2hlZCByZXNvbHV0aW9uIGZpcnN0IGJlZm9yZSBl
bnRlcmluZyB0aGUgcmVzb2x2aW5nIGxvb3AsIHNpbmNlIHRoZSBsb29wIHNldHVwIHRha2VzIHNv
bWUgY29zdC4KLSAgICBpZiAoT3B0aW9uYWw8UmVzb2x1dGlvbj4gY2FjaGVkUmVzb2x1dGlvbiA9
IHRyeUdldENhY2hlZFJlc29sdXRpb24oZXhwb3J0TmFtZS5pbXBsKCkpKQorICAgIGlmIChzdGQ6
Om9wdGlvbmFsPFJlc29sdXRpb24+IGNhY2hlZFJlc29sdXRpb24gPSB0cnlHZXRDYWNoZWRSZXNv
bHV0aW9uKGV4cG9ydE5hbWUuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuICpjYWNoZWRSZXNvbHV0
aW9uOwogICAgIHJldHVybiByZXNvbHZlRXhwb3J0SW1wbChleGVjLCBSZXNvbHZlUXVlcnkodGhp
cywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDk0MjhkZGE1NWFmNzI5ZDhkYTBkMmVmYzcxZWM1
ODZiN2M4ZGQxMzAuLjg4YzllNzgwNGNhMmVlNzdiNDI2YTAyZjUwNDk1Nzk5MDljY2Y5N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAt
OTgsOCArOTgsOCBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiAgICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYpOwog
ICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmKTsKIAotICAgIE9wdGlv
bmFsPEltcG9ydEVudHJ5PiB0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogbG9j
YWxOYW1lKTsKLSAgICBPcHRpb25hbDxFeHBvcnRFbnRyeT4gdHJ5R2V0RXhwb3J0RW50cnkoVW5p
cXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1wb3J0RW50
cnk+IHRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpOworICAg
IHN0ZDo6b3B0aW9uYWw8RXhwb3J0RW50cnk+IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJp
bmdJbXBsKiBleHBvcnROYW1lKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtleTsgfQpAQCAtMTYyLDcgKzE2Miw3
IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
IAogICAgIHN0cnVjdCBSZXNvbHZlUXVlcnk7CiAgICAgc3RhdGljIFJlc29sdXRpb24gcmVzb2x2
ZUV4cG9ydEltcGwoRXhlY1N0YXRlKiwgY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7Ci0gICAgT3B0aW9u
YWw8UmVzb2x1dGlvbj4gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCog
ZXhwb3J0TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPiB0cnlHZXRDYWNoZWRS
ZXNvbHV0aW9uKFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKTsKICAgICB2b2lkIGNhY2hl
UmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSwgY29uc3QgUmVzb2x1dGlv
biYpOwogCiAgICAgLy8gVGhlIGxvYWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUg
dG8gdGhlIG1vZHVsZSBrZXkuIFRoZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlxdWUgdmFsdWUgdG8g
cmVwcmVzZW50IHRoaXMgbW9kdWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCmluZGV4IGQxZTA3MzE3OGYzYjYwY2IzM2I5MzJlMGZkNjM5ZThiZjM3NTBlZDcu
LmI1Y2NhNzQ0NDVkMTYxMmZmYTBjMGRkNWY5NGU5Nzk1YWU1ZTEwMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWCiB7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkgJiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAg
IHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgYXR0cmli
dXRlcywgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKIAogICAgIHJldHVybiBwdXREaXJl
Y3ROb25JbmRleEFjY2Vzc29yKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJp
YnV0ZXMpOwpAQCAtMTUyNyw3ICsxNTI3LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXIKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpbmRleC52YWx1ZSgpKTsKIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBA
IC0zMDE2LDcgKzMwMTYsNyBAQCBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRhcmdldCwgUHJvcGVydHlOYW1lIHByb3BlcgogCiBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0
dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlKTsKICAgICByZXR1
cm4gcHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogfQpAQCAtMzE2
OSw3ICszMTY5LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU4KIGJvb2wgSlNPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBib29sIHRocm93RXhjZXB0aW9uKQogewogICAgIC8vIElmIGl0J3MgYW4gYXJyYXkgaW5kZXgs
IHRoZW4gdXNlIHRoZSBpbmRleGVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
ewogICAgICAgICAvLyBjLiBMZXQgc3VjY2VlZGVkIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0
aGUgZGVmYXVsdCBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kICg4LjEyLjkp
IG9uIEEgcGFzc2luZyBQLCBEZXNjLCBhbmQgZmFsc2UgYXMgYXJndW1lbnRzLgogICAgICAgICAv
LyBkLiBSZWplY3QgaWYgc3VjY2VlZGVkIGlzIGZhbHNlLgogICAgICAgICAvLyBlLiBJZiBpbmRl
eCA+PSBvbGRMZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4
IDI5OTY4NjZhNmE4YzcyYzA2ZjhkY2M3YzZlZWNiZTcwYTNlZGIyMmMuLjcwNmFmZTRjNWM1MTBl
ZjdlMGU1YjFhZDA2MGU4Y2M1ZmRiMDExYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaApAQCAtMTMyMCw3ICsxMzIwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGUKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAg
ICBpZiAob2JqZWN0LT5nZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCh2bSwgc3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBleGVjLCBp
bmRleC52YWx1ZSgpLCBzbG90KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMzM4LDcgKzEz
MzgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZQogICAgICAgICAgICAgLy8gZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eVNsb3QpLCBzbyB3ZSBjYW5ub3Qgc2FmZWx5IGNhbGwgdGhlIG92ZXJyaWRk
ZW4gZ2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgICAgICAvLyAobGVzdCB3ZSByZXR1cm4gYSBw
cm9wZXJ0eSBmcm9tIGEgcHJvdG90eXBlIHRoYXQgaXMgc2hhZG93ZWQpLiBDaGVjayBub3cgZm9y
IGFuIGluZGV4LAogICAgICAgICAgICAgLy8gaWYgc28gd2UgbmVlZCB0byBzdGFydCBhZnJlc2gg
ZnJvbSB0aGlzIG9iamVjdC4KLSAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgICAgICAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGdldFByb3BlcnR5U2xvdChleGVjLCBpbmRleC52YWx1ZSgpLCBzbG90
KTsKICAgICAgICAgICAgIC8vIFNhZmUgdG8gY29udGludWUgc2VhcmNoaW5nIGZyb20gY3VycmVu
dCBwb3NpdGlvbjsgY2FsbCBnZXROb25JbmRleFByb3BlcnR5U2xvdCB0byBhdm9pZAogICAgICAg
ICAgICAgLy8gcGFyc2luZyB0aGUgaW50IGFnYWluLgpAQCAtMTM1NCw3ICsxMzU0LDcgQEAgQUxX
QVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QocHJvdG90eXBl
KTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGdldFByb3BlcnR5U2xv
dChleGVjLCBpbmRleC52YWx1ZSgpLCBzbG90KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0x
Mzk0LDcgKzEzOTQsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5
TWF5QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgIEFTU0VSVCghc3Ry
dWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUoKS0+aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKIAotICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwg
dmFsdWUsIDAsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKICAgICByZXR1cm4gcHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgMCwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oCmluZGV4IDYxM2VmYzU0MTBiM2ViMmQyMTBjYTA3ODE5YzMwMmJiMmU4MDIxYmMu
LmQwZDRkZjJhZjU5Y2U3Nzc1NDM3ZGNjNmIyYWUwMGNmMzZkMzUzOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCkBAIC0xOTYsNyArMTk2
LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKIAogICAgIC8vIFRyeSBpbmRleGVkIHB1dCBm
aXJzdC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgY29ycmVjdG5lc3MsIHNpbmNlIGxvYWRzIG9uIHBy
b3BlcnR5IG5hbWVzIHRoYXQgYXBwZWFyIGxpa2UKICAgICAvLyB2YWxpZCBpbmRpY2VzIHdpbGwg
bmV2ZXIgbG9vayBpbiB0aGUgbmFtZWQgcHJvcGVydHkgc3RvcmFnZS4KLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNh
blBlcmZvcm1GYXN0UHV0SW5saW5lKGV4ZWMsIHZtLCBwcm9wZXJ0eU5hbWUpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKaW5kZXggOTZiYjllYjUzM2YwODJm
Y2JlMjhiZTQ3Mzk5NDJkN2FlMTI5N2E4ZS4uZWI4YzkyMTliYjMxOWU5NjU2ZWFlMTgwMzZiYzQ2
MTUyOWY3ZDRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNw
cApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIGluZGV4LnZh
bHVlKCkgPCBsZW5ndGgoKSkgewogICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoZ2V0
SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSksIERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
aW5kZXggN2NkNzBmNjIzMTU3NDE5MzMxOGI3ZThhZTliNDllMDhlM2EwYTcwZi4uOTViMGIwZDBm
MjhkZDE5MmE5MDkwYTU2MGQ2YzVmYjU2YTRhMDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCkBAIC02NjgsNyArNjY4LDcgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRl
eCAmJiBpbmRleC52YWx1ZSgpIDwgbGVuZ3RoKCkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0
aGlzLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGdldEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCkp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDU2ZTAzODk0N2Q2NTA2NzQ3MTQzNTNhNDljNGU4
Y2JkZDY4ZDQ0M2IuLjU5OTNiMzIzNmRjMWQ3NGFjNzE2YzMzMTdmYjE5MzJmZjIwZDNkMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCkBA
IC02OTAsNyArNjkwLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2Uo
UGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QsIGNvZGVCbG9jayA/IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkg
OiBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmxhc3QoKS5wdXQobV9l
eGVjLCBpZGVudCwgbGFzdFZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChpZGVudCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0LT5wdXREaXJlY3RJbmRleChtX2V4ZWMsIGluZGV4LnZhbHVlKCksIGxhc3RWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0KHZtLCBpZGVudCwgbGFzdFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhDb21tb24uaAppbmRleCA0OWNlNzkxZWJjMTFiNDFiYzg2NDkyOWMyODc0
YjJlMWVmOTEyYjJjLi42MzI1Nzg2YmM0NmEwN2YyYTU5YmUyNDA5MzIwMWI3NzVkZjk5OGIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCkBAIC0xMTgsMTUg
KzExOCwxNSBAQCBpbmxpbmUgdWludDMyX3QgdG9VSW50MzIoZG91YmxlIG51bWJlcikKICAgICBy
ZXR1cm4gdG9JbnQzMihudW1iZXIpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8ZG91YmxlPiBzYWZl
UmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50
KQogewogICAgIC8vIE5vICJ3ZWlyZCIgbnVtYmVycyAoTmFOLCBEZW5vcm1hbCwgZXRjKS4KICAg
ICBpZiAoIWNvbnN0YW50IHx8ICFzdGQ6Omlzbm9ybWFsKGNvbnN0YW50KSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQgZXhw
b25lbnQ7CiAgICAgaWYgKHN0ZDo6ZnJleHAoY29uc3RhbnQsICZleHBvbmVudCkgIT0gMC41KQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIE5vdGUgdGhhdCBmcmV4cCgpIHJldHVybnMgdGhlIHZhbHVlIGRpdmlkZWQgYnkgdHdv
CiAgICAgLy8gc28gd2UgdG8gb2Zmc2V0IHRoaXMgZXhwb25lbnQgYnkgb25lLgpAQCAtMTM1LDcg
KzEzNSw3IEBAIGlubGluZSBPcHRpb25hbDxkb3VibGU+IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlD
b25zdChkb3VibGUgY29uc3RhbnQpCiAgICAgLy8gQSBkb3VibGUgZXhwb25lbnQgaXMgYmV0d2Vl
biAtMTAyMiBhbmQgMTAyMy4KICAgICAvLyBOb3RoaW5nIHdlIGNhbiBkbyB0byBpbnZlcnQgMTAy
My4KICAgICBpZiAoZXhwb25lbnQgPT0gMTAyMykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb3VibGUgcmVjaXByb2NhbCA9IHN0
ZDo6bGRleHAoMSwgLWV4cG9uZW50KTsKICAgICBBU1NFUlQoc3RkOjppc25vcm1hbChyZWNpcHJv
Y2FsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAppbmRleCBjZWEyNzc1NzA3ODQ0ZWE4NWEwNTEwMjE1MTNkYzFmYzE5NDRhODNhLi4y
MWNjYjZlNDcyOWI1ZGMyNzE1NmI0MWNiYzAzMTczNzQxMDU4ODc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093
blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBIYXNPd25Qcm9wZXJ0eUNhY2hlKiBoYXNP
d25Qcm9wZXJ0eUNhY2hlID0gdm0uZW5zdXJlSGFzT3duUHJvcGVydHlDYWNoZSgpOwotICAgIGlm
IChPcHRpb25hbDxib29sPiByZXN1bHQgPSBoYXNPd25Qcm9wZXJ0eUNhY2hlLT5nZXQoc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcmVzdWx0
ID0gaGFzT3duUHJvcGVydHlDYWNoZS0+Z2V0KHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSkgewog
ICAgICAgICBBU1NFUlQoKnJlc3VsdCA9PSB0aGlzT2JqZWN0LT5oYXNPd25Qcm9wZXJ0eShleGVj
LCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCpyZXN1bHQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKaW5k
ZXggY2U0NjNlMWQ0ODcxODMyNzI1ZGMwNjM0YzllNzliYmRjNTQ5MTM0Yi4uZWI0NjFkMzZmMDBk
N2FjMmJkYzEyZDBjYzNkYjYyN2I2YWU5ODVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKQEAgLTk4LDE2ICs5OCwxNiBAQCBp
bmxpbmUgUHJvcGVydHlEZXNjcmlwdG9yIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTVmFsdWUgdmFs
dWUsIEpTVmFsdWUgZ2V0dGVyLCBKUwogICAgIC8vIFdlIGFzc3VtZSB0aGF0IHZhbGlkYXRpb24g
aXMgYWxyZWFkeSBkb25lLgogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjOwogCi0gICAgaWYg
KE9wdGlvbmFsPGJvb2w+IGVudW1lcmFibGUgPSBhdHRyaWJ1dGVzLmVudW1lcmFibGUoKSkKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiBlbnVtZXJhYmxlID0gYXR0cmlidXRlcy5lbnVtZXJh
YmxlKCkpCiAgICAgICAgIGRlc2Muc2V0RW51bWVyYWJsZShlbnVtZXJhYmxlLnZhbHVlKCkpOwog
Ci0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSA9IGF0dHJpYnV0ZXMuY29uZmln
dXJhYmxlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29uZmlndXJhYmxlID0gYXR0
cmlidXRlcy5jb25maWd1cmFibGUoKSkKICAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoY29u
ZmlndXJhYmxlLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzVmFsdWUoKSkKICAg
ICAgICAgZGVzYy5zZXRWYWx1ZSh2YWx1ZSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gd3Jp
dGFibGUgPSBhdHRyaWJ1dGVzLndyaXRhYmxlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gd3JpdGFibGUgPSBhdHRyaWJ1dGVzLndyaXRhYmxlKCkpCiAgICAgICAgIGRlc2Muc2V0V3Jp
dGFibGUod3JpdGFibGUudmFsdWUoKSk7CiAKICAgICBpZiAoYXR0cmlidXRlcy5oYXNHZXQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5kZXggYzQ3
NmM4OGUxYWM5NTVmMmYyNmI5ZjAzNWFhMzQ3MzU1ZWJkYTYyOS4uZDFkNGQxOTk0NTNiYTg0M2M0
MzIyYmIwZDhlOGZhMzM3MjRjZWYyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlOYW1lLmgKQEAgLTExNCwxMyArMTE0LDEzIEBAIGlubGluZSBib29sIG9wZXJh
dG9yIT0oUHJvcGVydHlOYW1lIGEsIFByb3BlcnR5TmFtZSBiKQogICAgIHJldHVybiBhLnVpZCgp
ICE9IGIudWlkKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNl
SW5kZXgoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIGF1dG8gdWlkID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgIGlmICghdWlkKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
dWlkLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcGFyc2VJbmRleCgqdWlkKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRl
eCAzZDYxZGFjYzRjNmVmMTcyZWMwOGJjNjdmMDQ4MTAxMTViY2JmMzQwLi5iN2ZmNjM2OWQ4ZWNi
YTZiZjk5NDY1MDc4YjU3NDRjNWYxNTFjOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZv
aWQgU2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWRTdGFja1RyYWNlcygpCiAgICAg
ICAgICAgICAgICAgICAgIHN0b3JlQ2FsbGVlSW50b1RvcEZyYW1lKHVucHJvY2Vzc2VkU3RhY2tU
cmFjZS5mcmFtZXNbMF0udW52ZXJpZmllZENhbGxlZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0
YXJ0SW5kZXggPSAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
T3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IHRvcENvZGVCbG9jay0+ZmluZFBDKHVu
cHJvY2Vzc2VkU3RhY2tUcmFjZS50b3BQQykpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc3Rk
OjpvcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gdG9wQ29kZUJsb2NrLT5maW5kUEMo
dW5wcm9jZXNzZWRTdGFja1RyYWNlLnRvcFBDKSkgewogICAgICAgICAgICAgICAgIGNvZGVPcmln
aW4tPndhbGtVcElubGluZVN0YWNrKFsmXSAoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikg
ewogICAgICAgICAgICAgICAgICAgICBhcHBlbmRDb2RlQmxvY2soY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUgPyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2su
Z2V0KCkgOiB0b3BDb2RlQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgICAg
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcAppbmRleCA1ZWY3NWIwMDViYzE5OWY4MGNmOTcyZjI0ZjgxZDhlM2Y5NDBlMWRlLi4y
MjkyM2U4NDg5N2UyNmEzYWVlMDI1NmI3ZDU0MzBlNGQ4NjJmODA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAg
Ym9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBzbG90LmlzU3RyaWN0TW9kZSgpLCBBU0NJSUxpdGVyYWwoUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpKTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgoY2VsbCwg
ZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogICAgIHJl
dHVybiBKU09iamVjdDo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgYm9vbCBpc1N0cmluZ093blByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYywgU3RyaW5nT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TgogewogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAob2JqZWN0LT5pbnRl
cm5hbFZhbHVlKCktPmNhbkdldEluZGV4KGluZGV4LnZhbHVlKCkpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+
KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgdGhp
c09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1ZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHko
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oCmluZGV4IGY1NGZkMDY1ZWQ5NjBlNTUw
NjA0N2YwMzgyNjRlNGZhNGMwODM2NDMuLmZkNjE4NDMyNzc3Y2ViOTk1NDM5ZjhmNTg1YTczOGRh
ODRjMjY1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0
aXZlRnJvbVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRp
dmVGcm9tVmFsdWUuaApAQCAtNDgsMTAgKzQ4LDEwIEBAIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUg
dG9OYXRpdmVGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotT3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZT4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKK3N0ZDo6
b3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0
Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpCiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZy
b21JbnQzMldpdGhvdXRDb2VyY2lvbih2YWx1ZS5hc0ludDMyKCkpOwogICAgIHJldHVybiBBZGFw
dG9yOjp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24odmFsdWUuYXNEb3VibGUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRh
cHRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9y
cy5oCmluZGV4IDBmYWM0ZmU2MDJhZGNkMTZkM2IzMWZjMDJhNTJkMDk0MWRjNDRjM2IuLjBhZjcx
ZjRjNjFmYzI0MmNhOGE3OTEwN2ZjYmI2ZmM1NjMxNWFiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCkBAIC03OSwyNiArNzks
MjYgQEAgc3RydWN0IEludGVncmFsVHlwZWRBcnJheUFkYXB0b3IgewogICAgICAgICByZXR1cm4g
T3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMy
X3QgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50
MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICgodmFs
dWUgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUpID4gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1heFZhbHVlKSkgfHwgdmFsdWUgPCBzdGF0aWNfY2FzdDxpbnQzMl90PihtaW5WYWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAg
fQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbVVpbnQzMldpdGhvdXRD
b2VyY2lvbih1aW50MzJfdCB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0
b05hdGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24odWludDMyX3QgdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAodmFsdWUgPiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWF4VmFsdWUpKQotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lv
bihkb3VibGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVG
cm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIFR5
cGUgaW50ZWdlciA9IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKHZh
bHVlIDwgMCkKICAgICAgICAgICAgIHJldHVybiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2Vy
Y2lvbihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpOwpAQCAtMTQ5LDEyICsxNDksMTIgQEAg
c3RydWN0IEZsb2F0VHlwZWRBcnJheUFkYXB0b3IgewogICAgICAgICByZXR1cm4gT3RoZXJBZGFw
dG9yOjp0b05hdGl2ZUZyb21Eb3VibGUodmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRp
b25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVl
KQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91
dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VHlwZT4odmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05h
dGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24oZG91YmxlIHZhbHVlKQorICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3Vi
bGUgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkgfHwgc3RkOjpp
c2luZih2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUp
OwpAQCAtMTYyLDEwICsxNjIsMTAgQEAgc3RydWN0IEZsb2F0VHlwZWRBcnJheUFkYXB0b3Igewog
ICAgICAgICBUeXBlIHZhbHVlUmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogCiAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlUmVzdWx0KSAhPSB2YWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBpZiAodmFsdWUgPCBtaW5WYWx1ZSB8fCB2YWx1ZSA+IG1heFZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybiB2YWx1ZVJlc3VsdDsKICAgICB9CkBAIC0yNTUsMTkgKzI1
NSwxOSBAQCBzdHJ1Y3QgVWludDhDbGFtcGVkQWRhcHRvciB7CiAgICAgICAgIHJldHVybiBPdGhl
ckFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyKHZhbHVlKTsKICAgICB9CiAgICAgCi0gICAgc3Rh
dGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMy
X3QgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50
MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1
ZSA+IG1heFZhbHVlIHx8IHZhbHVlIDwgbWluVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8
VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29l
cmNpb24oZG91YmxlIHZhbHVlKQogICAgIHsKICAgICAgICAgdWludDhfdCBpbnRlZ2VyID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4odmFsdWUpOwogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihpbnRlZ2VyKSAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gaW50ZWdlcjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKaW5kZXggYTE1MGM2ZTk2YzdiYjc3M2M5Y2Mz
NjIwNmQ4Yjk2MjgwNjdmNmYyMS4uZTBiNDc4MWRmNDRjYjdiYjE2NWMxOGQzZjU2NmNmY2Q0NmRh
NDQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkUXVldWUuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFz
cyBDcm9zc1RocmVhZFF1ZXVlIHsKICAgICB2b2lkIGFwcGVuZChEYXRhVHlwZSYmKTsKIAogICAg
IERhdGFUeXBlIHdhaXRGb3JNZXNzYWdlKCk7Ci0gICAgT3B0aW9uYWw8RGF0YVR5cGU+IHRyeUdl
dE1lc3NhZ2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERhdGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7
CiAKICAgICBib29sIGlzS2lsbGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtODEs
NyArODEsNyBAQCBEYXRhVHlwZSBDcm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6d2FpdEZvck1l
c3NhZ2UoKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4KLU9wdGlvbmFsPERhdGFU
eXBlPiBDcm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6dHJ5R2V0TWVzc2FnZSgpCitzdGQ6Om9w
dGlvbmFsPERhdGFUeXBlPiBDcm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6dHJ5R2V0TWVzc2Fn
ZSgpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0V4cGVjdGVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCmluZGV4IGQ4
Zjc0ZTc5ZDVlMmZlYzVmOWRiNGFmOTQ3MWQ0MDc0ODlkYWE4MzAuLmNkN2ZhNTYwMzk2MDgwZTc2
NjQ4MjgzOGQ2ZmJlMDljYjkwYTRhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0V4cGVj
dGVkLmgKKysrIGIvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaApAQCAtNDA2LDE1ICs0MDYsMTUg
QEAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0o
Y29uc3QgVW5leHBlY3RlZFR5cGU8RT4mIHgKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEU+IHZvaWQgc3dhcChFeHBlY3RlZDxULCBFPiYgeCwgRXhwZWN0ZWQ8VCwgRT4mIHkpIHsg
eC5zd2FwKHkpOyB9CiAKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFID0gV1RGOjpOdWxsb3B0
VGFnPiBjb25zdGV4cHIgRXhwZWN0ZWQ8c3RkOjpkZWNheV90PFQ+LCBFPiBtYWtlRXhwZWN0ZWQo
VCYmIHYpCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRSA9IHN0ZDo6bnVsbG9wdF90PiBjb25z
dGV4cHIgRXhwZWN0ZWQ8c3RkOjpkZWNheV90PFQ+LCBFPiBtYWtlRXhwZWN0ZWQoVCYmIHYpCiB7
CiAgICAgcmV0dXJuIEV4cGVjdGVkPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUsIEU+KHN0
ZDo6Zm9yd2FyZDxUPih2KSk7CiB9CiB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3Rl
eHByIEV4cGVjdGVkPFQsIHN0ZDo6ZGVjYXlfdDxFPj4gbWFrZUV4cGVjdGVkRnJvbUVycm9yKEUm
JiBlKSB7IHJldHVybiBFeHBlY3RlZDxULCBzdGQ6OmRlY2F5X3Q8RT4+KG1ha2VVbmV4cGVjdGVk
KGUpKTsgfQogdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEUsIGNsYXNzIFU+IGNvbnN0ZXhwciBF
eHBlY3RlZDxULCBFPiBtYWtlRXhwZWN0ZWRGcm9tRXJyb3IoVSYmIHUpIHsgcmV0dXJuIEV4cGVj
dGVkPFQsIEU+KG1ha2VVbmV4cGVjdGVkKEUgeyBzdGQ6OmZvcndhcmQ8VT4odSkgfSApKTsgfQot
Ly8gdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEUgPSBXVEY6Ok51bGxvcHRUYWc+IGNvbnN0ZXhw
ciBFeHBlY3RlZDx0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxGPjo6dHlwZSwgRT4gbWFrZUV4cGVj
dGVkX2Zyb21fY2FsbChGIGYpOworLy8gdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIEUgPSBzdGQ6
Om51bGxvcHRfdD4gY29uc3RleHByIEV4cGVjdGVkPHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPEY+
Ojp0eXBlLCBFPiBtYWtlRXhwZWN0ZWRfZnJvbV9jYWxsKEYgZik7CiAKLWlubGluZSBFeHBlY3Rl
ZDx2b2lkLCBXVEY6Ok51bGxvcHRUYWc+IG1ha2VFeHBlY3RlZCgpIHsgcmV0dXJuIEV4cGVjdGVk
PHZvaWQsIFdURjo6TnVsbG9wdFRhZz4oKTsgfQoraW5saW5lIEV4cGVjdGVkPHZvaWQsIHN0ZDo6
bnVsbG9wdF90PiBtYWtlRXhwZWN0ZWQoKSB7IHJldHVybiBFeHBlY3RlZDx2b2lkLCBzdGQ6Om51
bGxvcHRfdD4oKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDEwM2Rm
YWNiMjQ5OThkODVhNTgwNTM1MjhmMTViY2ViMzQwOWQxNWIuLmQ2OGE5NDdkNDk4NWNmNzc0ODUw
ODQwZjBiMTM3YThjZDU0N2FlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTIyLDEzICsyMiwxNiBAQAogCiAj
aW5jbHVkZSA8c3RkZGVmLmg+CiAKK25hbWVzcGFjZSBzdGQgewordGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3Mgb3B0aW9uYWw7Cit9CisKIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBGdW5jdGlvbjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIExhenlO
ZXZlckRlc3Ryb3llZDsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE5ldmVyRGVzdHJveWVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3B0aW9uU2V0OwotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgT3B0aW9uYWw7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVm
UHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmOwogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmUHRyOwpAQCAtNjEsNyArNjQsNiBAQCB1c2luZyBXVEY6OkZ1bmN0aW9uRGlz
cGF0Y2hlcjsKIHVzaW5nIFdURjo6TGF6eU5ldmVyRGVzdHJveWVkOwogdXNpbmcgV1RGOjpOZXZl
ckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6T3B0aW9uU2V0OwotdXNpbmcgV1RGOjpPcHRpb25hbDsK
IHVzaW5nIFdURjo6T3JkaW5hbE51bWJlcjsKIHVzaW5nIFdURjo6UGFzc1JlZlB0cjsKIHVzaW5n
IFdURjo6UHJpbnRTdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgKaW5kZXggZWIwNDg0NzQ3ODM1MWI1NmEz
Yzk2NTBmM2U1MTQ5ODE1NjRjNjU0ZS4uNTQyZTdhZDJjYmQzZGYwZWUwOWUwMDRmMjMzOTg5YTJm
ZmMwMDk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaApAQCAtMTg4LDggKzE4OCw4IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJhaXRzPFJlZjxQPj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8UmVmPFA+PiB7CiAgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgUmVmPFA+JiB2YWx1
ZSkgeyByZXR1cm4gY29uc3RfY2FzdDxQZWVrVHlwZT4odmFsdWUucHRyQWxsb3dpbmdIYXNoVGFi
bGVFbXB0eVZhbHVlKCkpOyB9CiAgICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoUCogdmFsdWUpIHsg
cmV0dXJuIHZhbHVlOyB9CiAKLSAgICB0eXBlZGVmIE9wdGlvbmFsPFJlZjxQPj4gVGFrZVR5cGU7
Ci0gICAgc3RhdGljIFRha2VUeXBlIHRha2UoUmVmPFA+JiYgdmFsdWUpIHsgcmV0dXJuIGlzRW1w
dHlWYWx1ZSh2YWx1ZSkgPyBOdWxsb3B0IDogT3B0aW9uYWw8UmVmPFA+PihXVEZNb3ZlKHZhbHVl
KSk7IH0KKyAgICB0eXBlZGVmIHN0ZDo6b3B0aW9uYWw8UmVmPFA+PiBUYWtlVHlwZTsKKyAgICBz
dGF0aWMgVGFrZVR5cGUgdGFrZShSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVl
KHZhbHVlKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8UmVmPFA+PihXVEZNb3ZlKHZh
bHVlKSk7IH0KIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8U3RyaW5nPiA6IFNp
bXBsZUNsYXNzSGFzaFRyYWl0czxTdHJpbmc+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01haW5UaHJlYWQuY3BwIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKaW5kZXggZDU0
OGZiNzU4NzFkYmRiNjRhZjMwZWQ2YmRiM2ZkOGIyMGNmYzJkOC4uNDcyYmVlMjdhZGY0ZDdlMGEy
YmY2M2I4ZjUzZGYwYzgzNDQ1NTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKQEAgLTE5MCw3ICsx
OTAsNyBAQCBib29sIGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChUaHJlYWRJZGVu
dGlmaWVyIHRocmVhZElkKQogfQogI2VuZGlmCiAKLXN0YXRpYyBUaHJlYWRTcGVjaWZpYzxPcHRp
b25hbDxHQ1RocmVhZFR5cGU+LCBDYW5CZUdDVGhyZWFkOjpUcnVlPiogaXNHQ1RocmVhZDsKK3N0
YXRpYyBUaHJlYWRTcGVjaWZpYzxzdGQ6Om9wdGlvbmFsPEdDVGhyZWFkVHlwZT4sIENhbkJlR0NU
aHJlYWQ6OlRydWU+KiBpc0dDVGhyZWFkOwogCiB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKQog
ewpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgaW5pdGlhbGl6ZUdDVGhyZWFkcygpCiAgICAgc3Rk
OjpjYWxsX29uY2UoCiAgICAgICAgIGZsYWcsCiAgICAgICAgIFtdIHsKLSAgICAgICAgICAgIGlz
R0NUaHJlYWQgPSBuZXcgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPiwgQ2Fu
QmVHQ1RocmVhZDo6VHJ1ZT4oKTsKKyAgICAgICAgICAgIGlzR0NUaHJlYWQgPSBuZXcgVGhyZWFk
U3BlY2lmaWM8c3RkOjpvcHRpb25hbDxHQ1RocmVhZFR5cGU+LCBDYW5CZUdDVGhyZWFkOjpUcnVl
PigpOwogICAgICAgICB9KTsKIH0KIApAQCAtMjIxLDEyICsyMjEsMTIgQEAgYm9vbCBpc01haW5U
aHJlYWRPckdDVGhyZWFkKCkKICAgICByZXR1cm4gaXNNYWluVGhyZWFkKCk7CiB9CiAKLU9wdGlv
bmFsPEdDVGhyZWFkVHlwZT4gbWF5QmVHQ1RocmVhZCgpCitzdGQ6Om9wdGlvbmFsPEdDVGhyZWFk
VHlwZT4gbWF5QmVHQ1RocmVhZCgpCiB7CiAgICAgaWYgKCFpc0dDVGhyZWFkKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWlz
R0NUaHJlYWQtPmlzU2V0KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiAqKmlzR0NUaHJlYWQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJl
YWQuaAppbmRleCAyNGU1ZjMxMjc1OWRiZWRlM2QzMWJiZmY4MzFkMTViYmViZTcxMTY1Li5lZjM4
NmQ0NTA4ZTY3ZWQxZTI5OGIzZmFhMGM4YmNhZmEyNDQ1NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9NYWluVGhyZWFkLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBA
IC03OCw3ICs3OCw3IEBAIGVudW0gY2xhc3MgR0NUaHJlYWRUeXBlIHsKIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEdDVGhyZWFkVHlwZSk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHJlZ2lzdGVyR0NUaHJlYWQoR0NUaHJlYWRUeXBlKTsKLVdURl9FWFBPUlRfUFJJVkFURSBP
cHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFU
RSBzdGQ6Om9wdGlvbmFsPEdDVGhyZWFkVHlwZT4gbWF5QmVHQ1RocmVhZCgpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpOwogCiAvLyBOT1RFOiB0aGVz
ZSBmdW5jdGlvbnMgYXJlIGludGVybmFsIHRvIHRoZSBjYWxsT25NYWluVGhyZWFkIGltcGxlbWVu
dGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaCBiL1NvdXJjZS9X
VEYvd3RmL09wdGlvbmFsLmgKaW5kZXggOTI4NmU2YjU4ODExYzVhZWMxM2M5Y2E2MDNiOWIxOGUx
ZTNlOGQyMy4uNzZiYTM4OGQ1ZWYxZmJlODk5ZTBlOTQxOTBjYmI1YjNiOTFlNjRmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRp
b25hbC5oCkBAIC0xLDI4MyArMSwxMTA5IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBP
cHRpb25hbF9oCi0jZGVmaW5lIE9wdGlvbmFsX2gKLQotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotCi0vLyBXVEY6Ok9wdGlvbmFsIGlzIGEg
Y2xhc3MgYmFzZWQgb24gc3RkOjpvcHRpb25hbCwgZGVzY3JpYmVkIGhlcmU6Ci0vLyBodHRwOi8v
d3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL3BhcGVycy8yMDEzL24zNTI3Lmh0
bWwKLS8vIElmIHRoaXMgZW5kcyB1cCBpbiBhIEMrKyBzdGFuZGFyZCwgd2Ugc2hvdWxkIHJlcGxh
Y2Ugb3VyIGltcGxlbWVudGF0aW9uIHdpdGggaXQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTEgLSAy
MDEyIEFuZHJ6ZWogS3J6ZW1pZW5za2kuCisvLworLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBk
aXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKKy8vIExpY2Vuc2Us
IFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBj
b3B5IGF0CisvLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCisvLworLy8g
VGhlIGlkZWEgYW5kIGludGVyZmFjZSBpcyBiYXNlZCBvbiBCb29zdC5PcHRpb25hbCBsaWJyYXJ5
CisvLyBhdXRob3JlZCBieSBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbAorLy8KKy8v
IEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UgLSBWZXJzaW9uIDEuMCAtIEF1Z3VzdCAxN3RoLCAyMDAz
CisvLworLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb3Igb3JnYW5pemF0aW9uCisvLyBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBz
b2Z0d2FyZSBhbmQgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gY292ZXJlZCBieQorLy8gdGhp
cyBsaWNlbnNlICh0aGUgIlNvZnR3YXJlIikgdG8gdXNlLCByZXByb2R1Y2UsIGRpc3BsYXksIGRp
c3RyaWJ1dGUsCisvLyBleGVjdXRlLCBhbmQgdHJhbnNtaXQgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZQorLy8gU29mdHdhcmUsIGFuZCB0byBwZXJt
aXQgdGhpcmQtcGFydGllcyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8KKy8v
IGRvIHNvLCBhbGwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nOgorLy8KKy8vIFRoZSBjb3B5cmln
aHQgbm90aWNlcyBpbiB0aGUgU29mdHdhcmUgYW5kIHRoaXMgZW50aXJlIHN0YXRlbWVudCwgaW5j
bHVkaW5nCisvLyB0aGUgYWJvdmUgbGljZW5zZSBncmFudCwgdGhpcyByZXN0cmljdGlvbiBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLAorLy8gbXVzdCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgaW4gd2hvbGUgb3IgaW4gcGFydCwgYW5kCisvLyBhbGwgZGVy
aXZhdGl2ZSB3b3JrcyBvZiB0aGUgU29mdHdhcmUsIHVubGVzcyBzdWNoIGNvcGllcyBvciBkZXJp
dmF0aXZlCisvLyB3b3JrcyBhcmUgc29sZWx5IGluIHRoZSBmb3JtIG9mIG1hY2hpbmUtZXhlY3V0
YWJsZSBvYmplY3QgY29kZSBnZW5lcmF0ZWQgYnkKKy8vIGEgc291cmNlIGxhbmd1YWdlIHByb2Nl
c3Nvci4KKy8vCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorLy8gSU1QTElFRCwgSU5DTFVESU5HIEJV
VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisvLyBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgVElUTEUgQU5EIE5PTi1JTkZSSU5HRU1F
TlQuIElOIE5PIEVWRU5UCisvLyBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQU5ZT05F
IERJU1RSSUJVVElORyBUSEUgU09GVFdBUkUgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERBTUFHRVMg
T1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwKKy8vIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G
VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorLy8gREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgog
Ci1uYW1lc3BhY2UgV1RGIHsKKy8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6
ZW1pMS9PcHRpb25hbCAoNzI3YzcyOWRkMWQ5ZjA2ZjIyNTg2ODI4MGU1MDE1NDU5NGQ3ZTU5ZCkK
KworLy8gTW9kaWZpZWQgdG8gbWFrZSBpdCBjb21waWxlIHdpdGggZXhjZXB0aW9ucyBkaXNhYmxl
ZC4KKworI3ByYWdtYSBvbmNlCisKKyMgaW5jbHVkZSA8dXRpbGl0eT4KKyMgaW5jbHVkZSA8dHlw
ZV90cmFpdHM+CisjIGluY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CisjIGluY2x1ZGUgPGNhc3Nl
cnQ+CisjIGluY2x1ZGUgPGZ1bmN0aW9uYWw+CisjIGluY2x1ZGUgPHN0cmluZz4KKyMgaW5jbHVk
ZSA8c3RkZXhjZXB0PgorIyBpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorIyBpbmNsdWRlIDx3
dGYvQ29tcGlsZXIuaD4KKyMgaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjIGRlZmlu
ZSBUUjJfT1BUSU9OQUxfUkVRVUlSRVMoLi4uKSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxfX1ZB
X0FSR1NfXzo6dmFsdWUsIGJvb2w+Ojp0eXBlID0gZmFsc2UKKworIyBpZiBkZWZpbmVkIF9fR05V
Q19fIC8vIE5PVEU6IEdOVUMgaXMgYWxzbyBkZWZpbmVkIGZvciBDbGFuZworIyAgIGlmIChfX0dO
VUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gOCkKKyMgICAgIGRlZmluZSBUUjJfT1BU
SU9OQUxfR0NDXzRfOF9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQorIyAg
ICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF84X0FORF9ISUdIRVJfX18KKyMgICBlbmRpZgor
IworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNykKKyMgICAg
IGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19H
TlVDX18gPiA0KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF83X0FORF9ISUdIRVJf
X18KKyMgICBlbmRpZgorIworIyAgIGlmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9S
X18gPT0gOCkgJiYgKF9fR05VQ19QQVRDSExFVkVMX18gPj0gMSkKKyMgICAgIGRlZmluZSBUUjJf
T1BUSU9OQUxfR0NDXzRfOF8xX0FORF9ISUdIRVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA9PSA0
KSAmJiAoX19HTlVDX01JTk9SX18gPj0gOSkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0ND
XzRfOF8xX0FORF9ISUdIRVJfX18KKyMgICBlbGlmIChfX0dOVUNfXyA+IDQpCisjICAgICBkZWZp
bmUgVFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMgZW5k
aWYKKyMKKyMgaWYgZGVmaW5lZCBfX2NsYW5nX21ham9yX18KKyMgICBpZiAoX19jbGFuZ19tYWpv
cl9fID09IDMgJiYgX19jbGFuZ19taW5vcl9fID49IDUpCisjICAgICBkZWZpbmUgVFIyX09QVElP
TkFMX0NMQU5HXzNfNV9BTkRfSElHSFRFUl8KKyMgICBlbGlmIChfX2NsYW5nX21ham9yX18gPiAz
KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAg
ZW5kaWYKKyMgICBpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJf
CisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisjICAg
ZWxpZiAoX19jbGFuZ19tYWpvcl9fID09IDMgJiYgX19jbGFuZ19taW5vcl9fID09IDQgJiYgX19j
bGFuZ19wYXRjaGxldmVsX18gPj0gMikKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdf
M180XzJfQU5EX0hJR0hFUl8KKyMgICBlbmRpZgorIyBlbmRpZgorIworIyBpZiBkZWZpbmVkIF9N
U0NfVkVSCisjICAgaWYgKF9NU0NfVkVSID49IDE5MDApCisjICAgICBkZWZpbmUgVFIyX09QVElP
TkFMX01TVkNfMjAxNV9BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMgZW5kaWYKKworIyBpZiBk
ZWZpbmVkIF9fY2xhbmdfXworIyAgIGlmIChfX2NsYW5nX21ham9yX18gPiAyKSB8fCAoX19jbGFu
Z19tYWpvcl9fID09IDIpICYmIChfX2NsYW5nX21pbm9yX18gPj0gOSkKKyMgICAgIGRlZmluZSBP
UFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAxCisjICAgZWxzZQorIyAgICAgZGVmaW5lIE9Q
VElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTIDAKKyMgICBlbmRpZgorIyBlbGlmIGRlZmluZWQg
VFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZGVmaW5lIE9QVElPTkFM
X0hBU19USElTX1JWQUxVRV9SRUZTIDEKKyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9NU1ZD
XzIwMTVfQU5EX0hJR0hFUl9fXworIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVf
UkVGUyAxCisjIGVsc2UKKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMg
MAorIyBlbmRpZgorCisKKyMgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfR0NDXzRfOF8xX0FORF9I
SUdIRVJfX18KKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX0NPTlNURVhQUl9JTklUX0xJU1QgMQor
IyAgIGRlZmluZSBPUFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGNvbnN0ZXhwcgorIyBlbHNl
CisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19DT05TVEVYUFJfSU5JVF9MSVNUIDAKKyMgICBkZWZp
bmUgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVAorIyBlbmRpZgorCisvLyBGSVhNRTogVG8g
bWFrZSB0aGUgcmVzdWx0IG9mIHZhbHVlKCkgdHlwZSBjb25zaXN0ZW50IGFtb25nIHRoZSBjb21w
aWxlcnMsIHdlIG5vdyBpbnRlbnRpb25hbGx5IGRpc2FibGVzIG1vdmUgYWNjZXNzb3JzLgorIyAg
IGRlZmluZSBPUFRJT05BTF9IQVNfTU9WRV9BQ0NFU1NPUlMgMAorLy8gIyBpZiBkZWZpbmVkIFRS
Ml9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfICYmIChkZWZpbmVkIF9fY3BsdXNwbHVz
KSAmJiAoX19jcGx1c3BsdXMgIT0gMjAxMTAzTCkKKy8vICMgICBkZWZpbmUgT1BUSU9OQUxfSEFT
X01PVkVfQUNDRVNTT1JTIDEKKy8vICMgZWxzZQorLy8gIyAgIGRlZmluZSBPUFRJT05BTF9IQVNf
TU9WRV9BQ0NFU1NPUlMgMAorLy8gIyBlbmRpZgorCisjIC8vIEluIEMrKzExIGNvbnN0ZXhwciBp
bXBsaWVzIGNvbnN0LCBzbyB3ZSBuZWVkIHRvIG1ha2Ugbm9uLWNvbnN0IG1lbWJlcnMgYWxzbyBu
b24tY29uc3RleHByCisjIGlmIChkZWZpbmVkIF9fY3BsdXNwbHVzKSAmJiAoX19jcGx1c3BsdXMg
PT0gMjAxMTAzTCkKKyMgICBkZWZpbmUgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIKKyMgZWxz
ZQorIyAgIGRlZmluZSBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBjb25zdGV4cHIKKyMgZW5k
aWYKKworI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVYQ0VQVElPTlMpCisjZGVmaW5lIF9fVEhST1df
RVhDRVBUSU9OKF9fZXhjZXB0aW9uKSB0aHJvdyBfX2V4Y2VwdGlvbjsKKyNkZWZpbmUgX19OT0VY
Q0VQVCBub2V4Y2VwdAorI2RlZmluZSBfX05PRVhDRVBUXyhfX2V4Y2VwdGlvbikgbm9leGNlcHQo
X19leGNlcHRpb24pCisjZWxzZQorI2RlZmluZSBfX1RIUk9XX0VYQ0VQVElPTihfX2V4Y2VwdGlv
bikgZG8geyAodm9pZClfX2V4Y2VwdGlvbjsgQ1JBU0goKTsgfSB3aGlsZSAoMCk7CisjZGVmaW5l
IF9fTk9FWENFUFQKKyNkZWZpbmUgX19OT0VYQ0VQVF8oLi4uKQorI2VuZGlmCisKK25hbWVzcGFj
ZSBzdGQgeworbmFtZXNwYWNlIGRldGFpbF8geworCisvLyBOT1RFOiBBbGwgb3VyIHRhcmdldCBj
b21waWxlcnMgc3VwcG9ydCBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlLgorLy8gLy8gQkVHSU4g
d29ya2Fyb3VuZCBmb3IgbWlzc2luZyBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlCisvLyAjIGlm
IGRlZmluZWQgVFIyX09QVElPTkFMX0dDQ180XzhfQU5EX0hJR0hFUl9fXworLy8gICAgIC8vIGxl
YXZlIGl0OiBpdCBpcyBhbHJlYWR5IHRoZXJlCisvLyAjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9O
QUxfQ0xBTkdfM180XzJfQU5EX0hJR0hFUl8KKy8vICAgICAvLyBsZWF2ZSBpdDogaXQgaXMgYWxy
ZWFkeSB0aGVyZQorLy8gIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX01TVkNfMjAxNV9BTkRf
SElHSEVSX19fCisvLyAgICAgLy8gbGVhdmUgaXQ6IGl0IGlzIGFscmVhZHkgdGhlcmUKKy8vICMg
ZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9ESVNBQkxFX0VNVUxBVElPTl9PRl9UWVBFX1RSQUlU
UworLy8gICAgIC8vIGxlYXZlIGl0OiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgaXQKKy8vICMgZWxz
ZQorLy8gCXRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLy8gCXVzaW5nIGlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGUgPSBzdGQ6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD47CisvLyAjIGVuZGlmCisv
LyAvLyBFTkQgd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
CisKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhFWENFUFRJT05TKQorIyBpZiBkZWZpbmVkKFRSMl9P
UFRJT05BTF9HQ0NfNF83X0FORF9ISUdIRVJfX18pIHx8IGRlZmluZWQoVFIyX09QVElPTkFMX0NM
QU5HXzNfNF8yX0FORF9ISUdIRVJfKSB8fCBkZWZpbmVkKFRSMl9PUFRJT05BTF9NU1ZDXzIwMTVf
QU5EX0hJR0hFUl9fXykKKyAgICAvLyBsZWF2ZSBpdDsgb3VyIG1ldGFmdW5jdGlvbnMgYXJlIGFs
cmVhZHkgZGVmaW5lZC4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB1c2luZyBpc19u
b3Rocm93X21vdmVfY29uc3RydWN0aWJsZSA9IHN0ZDo6aXNfbm90aHJvd19tb3ZlX2NvbnN0cnVj
dGlibGU8VD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdXNpbmcgaXNfbm90aHJv
d19tb3ZlX2Fzc2lnbmFibGUgPSBzdGQ6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPFQ+Owor
IyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0RJU0FCTEVfRU1VTEFUSU9OX09GX1RZUEVfVFJB
SVRTCisgICAgLy8gbGVhdmUgaXQ6IHRoZSB1c2VyIGRvZXNuJ3Qgd2FudCBpdAorIyBlbHNlCisK
KworLy8gd29ya2Fyb3VuZCBmb3IgbWlzc2luZyB0cmFpdHMgaW4gR0NDIGFuZCBDTEFORwordGVt
cGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUKK3sK
KyAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gc3RkOjppc19ub3Rocm93X2NvbnN0cnVj
dGlibGU8VCwgVCYmPjo6dmFsdWU7Cit9OworCisKK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBV
Pgorc3RydWN0IGlzX2Fzc2lnbmFibGUKK3sKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+
CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfYXNzaWduKC4uLikgeyByZXR1cm4gZmFsc2U7
IH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWSwgc2l6ZV90IFMgPSBzaXplb2YoKHN0
ZDo6ZGVjbHZhbDxYPigpID0gc3RkOjpkZWNsdmFsPFk+KCksIHRydWUpKSA+CisgIC8vIHRoZSBj
b21tYSBvcGVyYXRvciBpcyBuZWNlc3NhcnkgZm9yIHRoZSBjYXNlcyB3aGVyZSBvcGVyYXRvcj0g
cmV0dXJucyB2b2lkCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfYXNzaWduKGJvb2wpIHsg
cmV0dXJuIHRydWU7IH0KKworICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBoYXNfYXNz
aWduPFQsIFU+KHRydWUpOworfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3N0cnVjdCBpc19u
b3Rocm93X21vdmVfYXNzaWduYWJsZQoreworICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgYm9vbCBoYXNf
YW55X21vdmVfYXNzaWduPgorICBzdHJ1Y3QgaGFzX25vdGhyb3dfbW92ZV9hc3NpZ24geworICAg
IGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IGZhbHNlOworICB9OworCisgIHRlbXBsYXRl
IDxjbGFzcyBYPgorICBzdHJ1Y3QgaGFzX25vdGhyb3dfbW92ZV9hc3NpZ248WCwgdHJ1ZT4gewor
ICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IF9fTk9FWENFUFRfKCBzdGQ6OmRlY2x2
YWw8WCY+KCkgPSBzdGQ6OmRlY2x2YWw8WCYmPigpICk7CisgIH07CisKKyAgY29uc3RleHByIHN0
YXRpYyBib29sIHZhbHVlID0gaGFzX25vdGhyb3dfbW92ZV9hc3NpZ248VCwgaXNfYXNzaWduYWJs
ZTxUJiwgVCYmPjo6dmFsdWU+Ojp2YWx1ZTsKK307CisvLyBlbmQgd29ya2Fyb3VuZAorCisKKyMg
ZW5kaWYKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBkZXRhaWxfCisKKy8vIDIwLjUuNCwgb3B0
aW9uYWwgZm9yIG9iamVjdCB0eXBlcwordGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIG9wdGlvbmFs
OworCisvLyAyMC41LjUsIG9wdGlvbmFsIGZvciBsdmFsdWUgcmVmZXJlbmNlIHR5cGVzCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY2xhc3Mgb3B0aW9uYWw8VCY+OworCituYW1lc3BhY2UgZGV0YWlsXyB7
CisKKy8vIHdvcmthcm91bmQ6IHN0ZCB1dGlsaXR5IGZ1bmN0aW9ucyBhcmVuJ3QgY29uc3RleHBy
IHlldAordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgVCYmIGNvbnN0ZXhwcl9m
b3J3YXJkKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYgdCkgX19OT0VY
Q0VQVAoreworICByZXR1cm4gc3RhdGljX2Nhc3Q8VCYmPih0KTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGlubGluZSBjb25zdGV4cHIgVCYmIGNvbnN0ZXhwcl9mb3J3YXJkKHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYmIHQpIF9fTk9FWENFUFQKK3sKKyAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlLCAiISEiKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VCYmPih0KTsKK30KIAotc3RydWN0IEluUGxhY2VUYWcgeyB9
OwotY29uc3RleHByIEluUGxhY2VUYWcgSW5QbGFjZSB7IH07Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
aW5saW5lIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUm
JiBjb25zdGV4cHJfbW92ZShUJiYgdCkgX19OT0VYQ0VQVAoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmJj4odCk7Cit9CisK
KyNpZiBkZWZpbmVkIE5ERUJVRworIyBkZWZpbmUgVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJF
U1NJT04oQ0hFQ0ssIEVYUFIpIChFWFBSKQorI2Vsc2UKKyMgZGVmaW5lIFRSMl9PUFRJT05BTF9B
U1NFUlRFRF9FWFBSRVNTSU9OKENIRUNLLCBFWFBSKSAoKENIRUNLKSA/IChFWFBSKSA6IChbXXth
c3NlcnQoISNDSEVDSyk7fSgpLCAoRVhQUikpKQorI2VuZGlmCisKKworLy8gc3RhdGljX2FkZHJl
c3NvZjogYSBjb25zdGV4cHIgdmVyc2lvbiBvZiBhZGRyZXNzb2YKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorc3RydWN0IGhhc19vdmVybG9hZGVkX2FkZHJlc3NvZgoreworICB0ZW1wbGF0ZSA8Y2xh
c3MgWD4KKyAgY29uc3RleHByIHN0YXRpYyBib29sIGhhc19vdmVybG9hZCguLi4pIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIHNpemVfdCBTID0gc2l6ZW9mKHN0ZDo6
ZGVjbHZhbDxYJj4oKS5vcGVyYXRvciYoKSkgPgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFz
X292ZXJsb2FkKGJvb2wpIHsgcmV0dXJuIHRydWU7IH0KKworICBjb25zdGV4cHIgc3RhdGljIGJv
b2wgdmFsdWUgPSBoYXNfb3ZlcmxvYWQ8VD4odHJ1ZSk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgVFIyX09QVElPTkFMX1JFUVVJUkVTKCFoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4p
PgorY29uc3RleHByIFQqIHN0YXRpY19hZGRyZXNzb2YoVCYgcmVmKQoreworICByZXR1cm4gJnJl
ZjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhoYXNf
b3ZlcmxvYWRlZF9hZGRyZXNzb2Y8VD4pPgorVCogc3RhdGljX2FkZHJlc3NvZihUJiByZWYpCit7
CisgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihyZWYpOworfQorCisKKy8vIHRoZSBjYWxsIHRvIGNv
bnZlcnQ8QT4oYikgaGFzIHJldHVybiB0eXBlIEEgYW5kIGNvbnZlcnRzIGIgdG8gdHlwZSBBIGlm
ZiBiIGRlY2x0eXBlKGIpIGlzIGltcGxpY2l0bHkgY29udmVydGlibGUgdG8gQQordGVtcGxhdGUg
PGNsYXNzIFU+Citjb25zdGV4cHIgVSBjb252ZXJ0KFUgdikgeyByZXR1cm4gdjsgfQorCit9IC8v
IG5hbWVzcGFjZSBkZXRhaWwKKworCitjb25zdGV4cHIgc3RydWN0IHRyaXZpYWxfaW5pdF90e30g
dHJpdmlhbF9pbml0e307CisKKworLy8gMjAuNS42LCBJbi1wbGFjZSBjb25zdHJ1Y3Rpb24KK2Nv
bnN0ZXhwciBzdHJ1Y3QgaW5fcGxhY2VfdHt9IGluX3BsYWNle307CiAKLXN0cnVjdCBOdWxsb3B0
VGFnIHsgZXhwbGljaXQgY29uc3RleHByIE51bGxvcHRUYWcoaW50KSB7IH0gfTsKLWNvbnN0ZXhw
ciBOdWxsb3B0VGFnIE51bGxvcHQgeyAwIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFz
cyBPcHRpb25hbCB7CisvLyAyMC41LjcsIERpc2VuZ2FnZWQgc3RhdGUgaW5kaWNhdG9yCitzdHJ1
Y3QgbnVsbG9wdF90Cit7CisgIHN0cnVjdCBpbml0e307CisgIGNvbnN0ZXhwciBleHBsaWNpdCBu
dWxsb3B0X3QoaW5pdCl7fQorfTsKK2NvbnN0ZXhwciBudWxsb3B0X3QgbnVsbG9wdHtudWxsb3B0
X3Q6OmluaXQoKX07CisKKworLy8gMjAuNS44LCBjbGFzcyBiYWRfb3B0aW9uYWxfYWNjZXNzCitj
bGFzcyBiYWRfb3B0aW9uYWxfYWNjZXNzIDogcHVibGljIHN0ZDo6bG9naWNfZXJyb3IgewogcHVi
bGljOgotICAgIE9wdGlvbmFsKCkKLSAgICAgICAgOiBtX2lzRW5nYWdlZChmYWxzZSkKLSAgICB7
Ci0gICAgfQorICBleHBsaWNpdCBiYWRfb3B0aW9uYWxfYWNjZXNzKGNvbnN0IHN0ZDo6c3RyaW5n
JiB3aGF0X2FyZykgOiBzdGQ6OmxvZ2ljX2Vycm9ye3doYXRfYXJnfSB7fQorICBleHBsaWNpdCBi
YWRfb3B0aW9uYWxfYWNjZXNzKGNvbnN0IGNoYXIqIHdoYXRfYXJnKSA6IHN0ZDo6bG9naWNfZXJy
b3J7d2hhdF9hcmd9IHt9Cit9OwogCi0gICAgT3B0aW9uYWwoTnVsbG9wdFRhZykKLSAgICAgICAg
OiBtX2lzRW5nYWdlZChmYWxzZSkKLSAgICB7Ci0gICAgfQogCi0gICAgT3B0aW9uYWwoY29uc3Qg
VCYgdmFsdWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1ZSkKLSAgICB7Ci0gICAgICAgIG5l
dyAoTm90TnVsbCwgJm1fdmFsdWUpIFQodmFsdWUpOwotICAgIH0KK3RlbXBsYXRlIDxjbGFzcyBU
PgordW5pb24gc3RvcmFnZV90Cit7CisgIHVuc2lnbmVkIGNoYXIgZHVtbXlfOworICBUIHZhbHVl
XzsKIAotICAgIE9wdGlvbmFsKGNvbnN0IE9wdGlvbmFsJiBvdGhlcikKLSAgICAgICAgOiBtX2lz
RW5nYWdlZChvdGhlci5tX2lzRW5nYWdlZCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzRW5nYWdl
ZCkKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoKm90aGVyLmFzUHRyKCkp
OwotICAgIH0KKyAgY29uc3RleHByIHN0b3JhZ2VfdCggdHJpdmlhbF9pbml0X3QgKSBfX05PRVhD
RVBUIDogZHVtbXlfKCkge307CiAKLSAgICBPcHRpb25hbChPcHRpb25hbCYmIG90aGVyKQotICAg
ICAgICA6IG1faXNFbmdhZ2VkKG90aGVyLm1faXNFbmdhZ2VkKQotICAgIHsKLSAgICAgICAgaWYg
KG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEZN
b3ZlKCpvdGhlci5hc1B0cigpKSk7Ci0gICAgfQorICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4K
KyAgY29uc3RleHByIHN0b3JhZ2VfdCggQXJncyYmLi4uIGFyZ3MgKSA6IHZhbHVlXyhkZXRhaWxf
Ojpjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KIAotICAgIE9wdGlvbmFsKFQm
JiB2YWx1ZSkKLSAgICAgICAgOiBtX2lzRW5nYWdlZCh0cnVlKQotICAgIHsKLSAgICAgICAgbmV3
IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEZNb3ZlKHZhbHVlKSk7Ci0gICAgfQorICB+c3RvcmFn
ZV90KCl7fQorfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgT3B0aW9u
YWwoSW5QbGFjZVRhZywgQXJncyYmLi4uIGFyZ3MpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1
ZSkKLSAgICB7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICB9CiAKLSAgICB+T3B0aW9uYWwoKQotICAgIHsKLSAgICAg
ICAgZGVzdHJveSgpOwotICAgIH0KK3RlbXBsYXRlIDxjbGFzcyBUPgordW5pb24gY29uc3RleHBy
X3N0b3JhZ2VfdAoreworICAgIHVuc2lnbmVkIGNoYXIgZHVtbXlfOworICAgIFQgdmFsdWVfOwog
Ci0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShOdWxsb3B0VGFnKQotICAgIHsKLSAgICAgICAgZGVz
dHJveSgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQorICAgIGNvbnN0ZXhwciBjb25z
dGV4cHJfc3RvcmFnZV90KCB0cml2aWFsX2luaXRfdCApIF9fTk9FWENFUFQgOiBkdW1teV8oKSB7
fTsKIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3QgT3B0aW9uYWwmIG90aGVyKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQotICAgICAgICAgICAgcmV0dXJuICp0aGlz
OwotCi0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgaWYgKG90aGVyLm1faXNFbmdhZ2VkKSB7
Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKCpvdGhlci5hc1B0cigpKTsK
LSAgICAgICAgICAgIG1faXNFbmdhZ2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICAgIGNvbnN0
ZXhwciBjb25zdGV4cHJfc3RvcmFnZV90KCBBcmdzJiYuLi4gYXJncyApIDogdmFsdWVfKGRldGFp
bF86OmNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgT3B0aW9uYWwm
IG9wZXJhdG9yPShPcHRpb25hbCYmIG90aGVyKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMgPT0g
Jm90aGVyKQotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICAgIGRlc3Ryb3koKTsK
LSAgICAgICAgaWYgKG90aGVyLm1faXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBuZXcgKE5vdE51
bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUoKm90aGVyLmFzUHRyKCkpKTsKLSAgICAgICAgICAgIG1f
aXNFbmdhZ2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAg
fQorICAgIH5jb25zdGV4cHJfc3RvcmFnZV90KCkgPSBkZWZhdWx0OworfTsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19z
YW1lPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSwgVD46OnZhbHVlPjo6
dHlwZT4KLSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KFUmJiB1KQotICAgIHsKLSAgICAgICAgZGVz
dHJveSgpOwotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6Zm9yd2FyZDxV
Pih1KSk7Ci0gICAgICAgIG1faXNFbmdhZ2VkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuICp0aGlz
OwotICAgIH0KIAotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBt
X2lzRW5nYWdlZDsgfQordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3Qgb3B0aW9uYWxfYmFzZQor
eworICAgIGJvb2wgaW5pdF87CisgICAgc3RvcmFnZV90PFQ+IHN0b3JhZ2VfOwogCi0gICAgY29u
c3QgVCogb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2Fn
ZWQpOwotICAgICAgICByZXR1cm4gYXNQdHIoKTsKLSAgICB9CisgICAgY29uc3RleHByIG9wdGlv
bmFsX2Jhc2UoKSBfX05PRVhDRVBUIDogaW5pdF8oZmFsc2UpLCBzdG9yYWdlXyh0cml2aWFsX2lu
aXQpIHt9OwogCi0gICAgVCogb3BlcmF0b3ItPigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9p
c0VuZ2FnZWQpOwotICAgICAgICByZXR1cm4gYXNQdHIoKTsKLSAgICB9CisgICAgZXhwbGljaXQg
Y29uc3RleHByIG9wdGlvbmFsX2Jhc2UoY29uc3QgVCYgdikgOiBpbml0Xyh0cnVlKSwgc3RvcmFn
ZV8odikge30KIAotICAgIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
KCk7IH0KLSAgICBUJiBvcGVyYXRvciooKSB7IHJldHVybiB2YWx1ZSgpOyB9CisgICAgZXhwbGlj
aXQgY29uc3RleHByIG9wdGlvbmFsX2Jhc2UoVCYmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2Vf
KGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQogCi0gICAgVCYgdmFsdWUoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuICphc1B0cigpOwot
ICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4gZXhwbGljaXQgb3B0aW9uYWxfYmFz
ZShpbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBpbml0Xyh0cnVlKSwgc3Rv
cmFnZV8oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CiAKLSAg
ICBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9pc0VuZ2Fn
ZWQpOwotICAgICAgICByZXR1cm4gKmFzUHRyKCk7Ci0gICAgfQorICAgIHRlbXBsYXRlIDxjbGFz
cyBVLCBjbGFzcy4uLiBBcmdzLCBUUjJfT1BUSU9OQUxfUkVRVUlSRVMoc3RkOjppc19jb25zdHJ1
Y3RpYmxlPFQsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPj4pPgorICAgIGV4cGxpY2l0IG9wdGlv
bmFsX2Jhc2UoaW5fcGxhY2VfdCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYu
Li4gYXJncykKKyAgICAgICAgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oaWwsIHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikge30KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2
YWx1ZU9yKFUmJiB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzRW5nYWdlZCkK
LSAgICAgICAgICAgIHJldHVybiAqYXNQdHIoKTsKKyAgICB+b3B0aW9uYWxfYmFzZSgpIHsgaWYg
KGluaXRfKSBzdG9yYWdlXy52YWx1ZV8uVDo6flQoKTsgfQorfTsKKworCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4KK3N0cnVjdCBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZQoreworICAgIGJvb2wgaW5pdF87
CisgICAgY29uc3RleHByX3N0b3JhZ2VfdDxUPiBzdG9yYWdlXzsKKworICAgIGNvbnN0ZXhwciBj
b25zdGV4cHJfb3B0aW9uYWxfYmFzZSgpIF9fTk9FWENFUFQgOiBpbml0XyhmYWxzZSksIHN0b3Jh
Z2VfKHRyaXZpYWxfaW5pdCkge307CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHBy
X29wdGlvbmFsX2Jhc2UoY29uc3QgVCYgdikgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8odikge30K
KworICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZShUJiYgdikg
OiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oZGV0YWlsXzo6Y29uc3RleHByX21vdmUodikpIHt9CisK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4gZXhwbGljaXQgY29uc3RleHByIGNvbnN0ZXhw
cl9vcHRpb25hbF9iYXNlKGluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBpbml0
Xyh0cnVlKSwgc3RvcmFnZV8oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncyku
Li4pIHt9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgVFIyX09QVElP
TkFMX1JFUVVJUkVTKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VT4+KT4KKyAgICBPUFRJT05BTF9DT05TVEVYUFJfSU5JVF9MSVNUIGV4cGxpY2l0IGNvbnN0
ZXhwcl9vcHRpb25hbF9iYXNlKGluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBp
bCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhpbCwgc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgICAgfmNvbnN0ZXhwcl9vcHRpb25hbF9i
YXNlKCkgPSBkZWZhdWx0OworfTsKKwordGVtcGxhdGUgPGNsYXNzIFQ+Cit1c2luZyBPcHRpb25h
bEJhc2UgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPAorICAgIHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBw
b3NzaWJsZQorICAgIGNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2NvbnN0PFQ+Ojp0eXBlPiwgLy8gdXNlIGJhc2Ugd2l0aCB0cml2aWFsIGRlc3RydWN0b3IKKyAg
ICBvcHRpb25hbF9iYXNlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlPgorPjo6
dHlwZTsKKworCisKK3RlbXBsYXRlIDxjbGFzcyBUPgorY2xhc3Mgb3B0aW9uYWwgOiBwcml2YXRl
IE9wdGlvbmFsQmFzZTxUPgoreworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPHR5cGVu
YW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUsIG51bGxvcHRfdD46OnZhbHVlLCAiYmFkIFQiICk7Cisg
IHN0YXRpY19hc3NlcnQoICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlw
ZSwgaW5fcGxhY2VfdD46OnZhbHVlLCAiYmFkIFQiICk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6
Zm9yd2FyZDxVPih2YWx1ZSk7Ci0gICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAg
ICBUIHZhbHVlT3JDb21wdXRlKFUgY2FsbGJhY2spIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAo
bV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgIGNvbnN0ZXhwciBi
b29sIGluaXRpYWxpemVkKCkgY29uc3QgX19OT0VYQ0VQVCB7IHJldHVybiBPcHRpb25hbEJhc2U8
VD46OmluaXRfOyB9CisgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFQ+Ojp0eXBlKiBkYXRh
cHRyKCkgeyAgcmV0dXJuIHN0ZDo6YWRkcmVzc29mKE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8u
dmFsdWVfKTsgfQorICBjb25zdGV4cHIgY29uc3QgVCogZGF0YXB0cigpIGNvbnN0IHsgcmV0dXJu
IGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YoT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1
ZV8pOyB9CiAKLSAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CisjIGlmIE9QVElPTkFMX0hBU19U
SElTX1JWQUxVRV9SRUZTID09IDEKKyAgY29uc3RleHByIGNvbnN0IFQmIGNvbnRhaW5lZF92YWwo
KSBjb25zdCYgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyMg
ICBpZiBPUFRJT05BTF9IQVNfTU9WRV9BQ0NFU1NPUlMgPT0gMQorICBPUFRJT05BTF9NVVRBQkxF
X0NPTlNURVhQUiBUJiYgY29udGFpbmVkX3ZhbCgpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShPcHRp
b25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXyk7IH0KKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05T
VEVYUFIgVCYgY29udGFpbmVkX3ZhbCgpICYgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9y
YWdlXy52YWx1ZV87IH0KKyMgICBlbHNlCisgIFQmIGNvbnRhaW5lZF92YWwoKSAmIHsgcmV0dXJu
IE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisgIFQmJiBjb250YWluZWRfdmFs
KCkgJiYgeyByZXR1cm4gc3RkOjptb3ZlKE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVf
KTsgfQorIyAgIGVuZGlmCisjIGVsc2UKKyAgY29uc3RleHByIGNvbnN0IFQmIGNvbnRhaW5lZF92
YWwoKSBjb25zdCB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQor
ICBUJiBjb250YWluZWRfdmFsKCkgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52
YWx1ZV87IH0KKyMgZW5kaWYKKworICB2b2lkIGNsZWFyKCkgX19OT0VYQ0VQVCB7CisgICAgaWYg
KGluaXRpYWxpemVkKCkpIGRhdGFwdHIoKS0+VDo6flQoKTsKKyAgICBPcHRpb25hbEJhc2U8VD46
OmluaXRfID0gZmFsc2U7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgdm9p
ZCBpbml0aWFsaXplKEFyZ3MmJi4uLiBhcmdzKSBfX05PRVhDRVBUXyhfX05PRVhDRVBUXyhUKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKQorICB7CisgICAgQVNTRVJUKCFPcHRpb25hbEJh
c2U8VD46OmluaXRfKTsKKyAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIoKSkp
IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBPcHRpb25hbEJhc2U8VD46Omlu
aXRfID0gdHJ1ZTsKKyAgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPgor
ICB2b2lkIGluaXRpYWxpemUoc3RkOjppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYuLi4g
YXJncykgX19OT0VYQ0VQVF8oX19OT0VYQ0VQVF8oVChpbCwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKSkpCisgIHsKKyAgICBBU1NFUlQoIU9wdGlvbmFsQmFzZTxUPjo6aW5pdF8pOworICAg
IDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVChpbCwgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBPcHRpb25hbEJhc2U8VD46OmluaXRfID0gdHJ1ZTsKKyAg
fQorCitwdWJsaWM6CisgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOworCisgIC8vIDIwLjUuNS4xLCBj
b25zdHJ1Y3RvcnMKKyAgY29uc3RleHByIG9wdGlvbmFsKCkgX19OT0VYQ0VQVCA6IE9wdGlvbmFs
QmFzZTxUPigpICB7fTsKKyAgY29uc3RleHByIG9wdGlvbmFsKG51bGxvcHRfdCkgX19OT0VYQ0VQ
VCA6IE9wdGlvbmFsQmFzZTxUPigpIHt9OworCisgIG9wdGlvbmFsKGNvbnN0IG9wdGlvbmFsJiBy
aHMpCisgIDogT3B0aW9uYWxCYXNlPFQ+KCkKKyAgeworICAgIGlmIChyaHMuaW5pdGlhbGl6ZWQo
KSkgeworICAgICAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIoKSkpIFQoKnJo
cyk7CisgICAgICAgIE9wdGlvbmFsQmFzZTxUPjo6aW5pdF8gPSB0cnVlOwogICAgIH0KKyAgfQog
Ci1wcml2YXRlOgotICAgIGNvbnN0IFQqIGFzUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUKj4oJm1fdmFsdWUpOyB9Ci0gICAgVCogYXNQdHIoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQqPigmbV92YWx1ZSk7IH0KLSAgICB2b2lkIGRlc3Ryb3koKQotICAg
IHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBhc1B0cigpLT5+VCgp
OwotICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSBmYWxzZTsKLSAgICAgICAgfQorICBvcHRpb25h
bChvcHRpb25hbCYmIHJocykgX19OT0VYQ0VQVF8oZGV0YWlsXzo6aXNfbm90aHJvd19tb3ZlX2Nv
bnN0cnVjdGlibGU8VD46OnZhbHVlKQorICA6IE9wdGlvbmFsQmFzZTxUPigpCisgIHsKKyAgICBp
ZiAocmhzLmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQq
PihkYXRhcHRyKCkpKSBUKHN0ZDo6bW92ZSgqcmhzKSk7CisgICAgICAgIE9wdGlvbmFsQmFzZTxU
Pjo6aW5pdF8gPSB0cnVlOwogICAgIH0KKyAgfQorCisgIGNvbnN0ZXhwciBvcHRpb25hbChjb25z
dCBUJiB2KSA6IE9wdGlvbmFsQmFzZTxUPih2KSB7fQorCisgIGNvbnN0ZXhwciBvcHRpb25hbChU
JiYgdikgOiBPcHRpb25hbEJhc2U8VD4oZGV0YWlsXzo6Y29uc3RleHByX21vdmUodikpIHt9CisK
KyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcHRpb25h
bChpbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAgOiBPcHRpb25hbEJhc2U8VD4oaW5fcGxh
Y2VfdHt9LCBkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgVFIyX09QVElPTkFMX1JFUVVJUkVT
KHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4+KT4KKyAg
T1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVCBleHBsaWNpdCBvcHRpb25hbChpbl9wbGFjZV90
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICA6IE9wdGlv
bmFsQmFzZTxUPihpbl9wbGFjZV90e30sIGlsLCBkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxB
cmdzPihhcmdzKS4uLikge30KKworICAvLyAyMC41LjQuMiwgRGVzdHJ1Y3RvcgorICB+b3B0aW9u
YWwoKSA9IGRlZmF1bHQ7CisKKyAgLy8gMjAuNS40LjMsIGFzc2lnbm1lbnQKKyAgb3B0aW9uYWwm
IG9wZXJhdG9yPShudWxsb3B0X3QpIF9fTk9FWENFUFQKKyAgeworICAgIGNsZWFyKCk7CisgICAg
cmV0dXJuICp0aGlzOworICB9CisKKyAgb3B0aW9uYWwmIG9wZXJhdG9yPShjb25zdCBvcHRpb25h
bCYgcmhzKQorICB7CisgICAgaWYgICAgICAoaW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMu
aW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSkgY2xlYXIoKTsKKyAgICBlbHNlIGlmIChpbml0aWFsaXpl
ZCgpID09IGZhbHNlICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICBpbml0aWFsaXplKCpy
aHMpOworICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxp
emVkKCkgPT0gdHJ1ZSkgIGNvbnRhaW5lZF92YWwoKSA9ICpyaHM7CisgICAgcmV0dXJuICp0aGlz
OworICB9CisKKyAgb3B0aW9uYWwmIG9wZXJhdG9yPShvcHRpb25hbCYmIHJocykKKyAgX19OT0VY
Q0VQVF8oZGV0YWlsXzo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlICYmIGRl
dGFpbF86OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKKyAgeworICAg
IGlmICAgICAgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0g
ZmFsc2UpIGNsZWFyKCk7CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSAmJiBy
aHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgaW5pdGlhbGl6ZShzdGQ6Om1vdmUoKnJocykpOwor
ICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkg
PT0gdHJ1ZSkgIGNvbnRhaW5lZF92YWwoKSA9IHN0ZDo6bW92ZSgqcmhzKTsKKyAgICByZXR1cm4g
KnRoaXM7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KKyAgYXV0byBvcGVyYXRvcj0oVSYm
IHYpCisgIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgIDwKKyAgICBzdGQ6OmlzX3NhbWU8
dHlwZW5hbWUgc3RkOjpkZWNheTxVPjo6dHlwZSwgVD46OnZhbHVlLAorICAgIG9wdGlvbmFsJgor
ICA+Ojp0eXBlCisgIHsKKyAgICBpZiAoaW5pdGlhbGl6ZWQoKSkgeyBjb250YWluZWRfdmFsKCkg
PSBzdGQ6OmZvcndhcmQ8VT4odik7IH0KKyAgICBlbHNlICAgICAgICAgICAgICAgeyBpbml0aWFs
aXplKHN0ZDo6Zm9yd2FyZDxVPih2KSk7ICB9CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKwor
ICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgdm9pZCBlbXBsYWNlKEFyZ3MmJi4uLiBhcmdz
KQorICB7CisgICAgY2xlYXIoKTsKKyAgICBpbml0aWFsaXplKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4KKyAg
dm9pZCBlbXBsYWNlKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYmLi4uIGFyZ3Mp
CisgIHsKKyAgICBjbGVhcigpOworICAgIGluaXRpYWxpemU8VSwgQXJncy4uLj4oaWwsIHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgIH0KKworICAvLyAyMC41LjQuNCwgU3dhcAorICB2
b2lkIHN3YXAob3B0aW9uYWw8VD4mIHJocykgX19OT0VYQ0VQVF8oZGV0YWlsXzo6aXNfbm90aHJv
d19tb3ZlX2NvbnN0cnVjdGlibGU8VD46OnZhbHVlICYmIF9fTk9FWENFUFRfKHN3YXAoc3RkOjpk
ZWNsdmFsPFQmPigpLCBzdGQ6OmRlY2x2YWw8VCY+KCkpKSkKKyAgeworICAgIGlmICAgICAgKGlu
aXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gZmFsc2UpIHsgcmhz
LmluaXRpYWxpemUoc3RkOjptb3ZlKCoqdGhpcykpOyBjbGVhcigpOyB9CisgICAgZWxzZSBpZiAo
aW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgeyBp
bml0aWFsaXplKHN0ZDo6bW92ZSgqcmhzKSk7IHJocy5jbGVhcigpOyB9CisgICAgZWxzZSBpZiAo
aW5pdGlhbGl6ZWQoKSA9PSB0cnVlICAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgeyB1
c2luZyBzdGQ6OnN3YXA7IHN3YXAoKip0aGlzLCAqcmhzKTsgfQorICB9CisKKyAgLy8gMjAuNS40
LjUsIE9ic2VydmVycworCisgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29u
c3QgX19OT0VYQ0VQVCB7IHJldHVybiBpbml0aWFsaXplZCgpOyB9CisKKyAgY29uc3RleHByIFQg
Y29uc3QqIG9wZXJhdG9yIC0+KCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNT
RVJURURfRVhQUkVTU0lPTihpbml0aWFsaXplZCgpLCBkYXRhcHRyKCkpOworICB9CisKKyMgaWYg
T1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTID09IDEKKworICBPUFRJT05BTF9NVVRBQkxFX0NP
TlNURVhQUiBUKiBvcGVyYXRvciAtPigpIHsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZl
ciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250
ZXhwciBjb250ZXh0LgorICAgIC8vIENPTlNURVhQUl9BU1NFUlQoaW5pdGlhbGl6ZWQoKSk7Cisg
ICAgcmV0dXJuIGRhdGFwdHIoKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0JiBvcGVyYXRv
ciAqKCkgY29uc3QmIHsKKyAgICByZXR1cm4gVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJ
T04oaW5pdGlhbGl6ZWQoKSwgY29udGFpbmVkX3ZhbCgpKTsKKyAgfQorCisgIE9QVElPTkFMX01V
VEFCTEVfQ09OU1RFWFBSIFQmIG9wZXJhdG9yICooKSAmIHsKKyAgICAvLyBGSVhNRTogV2UgbmVl
ZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVy
IHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIENPTlNURVhQUl9BU1NFUlQoaW5pdGlhbGl6
ZWQoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQorCisgIE9QVElPTkFMX01V
VEFCTEVfQ09OU1RFWFBSIFQmJiBvcGVyYXRvciAqKCkgJiYgeworICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5k
ZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gQ09OU1RFWFBSX0FTU0VSVChpbml0aWFs
aXplZCgpKTsKKyAgICByZXR1cm4gZGV0YWlsXzo6Y29uc3RleHByX21vdmUoY29udGFpbmVkX3Zh
bCgpKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0JiB2YWx1ZSgpIGNvbnN0JiB7CisgICAg
Ly8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBj
YW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNz
KCJiYWQgb3B0aW9uYWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7CisgICAgcmV0dXJuIGNv
bnRhaW5lZF92YWwoKTsKKyAgfQorCisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQmIHZh
bHVlKCkgJiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQg
ZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAg
ICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBiYWRf
b3B0aW9uYWxfYWNjZXNzKCJiYWQgb3B0aW9uYWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7
CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQorCisgIE9QVElPTkFMX01VVEFCTEVf
Q09OU1RFWFBSIFQmJiB2YWx1ZSgpICYmIHsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZl
ciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250
ZXhwciBjb250ZXh0LgorICAgIC8vIGlmICghaW5pdGlhbGl6ZWQoKSkgX19USFJPV19FWENFUFRJ
T04oYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpKTsKKyAgICByZXR1
cm4gc3RkOjptb3ZlKGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKworIyBlbHNlCisKKyAgVCogb3Bl
cmF0b3IgLT4oKSB7CisgICAgYXNzZXJ0IChpbml0aWFsaXplZCgpKTsKKyAgICByZXR1cm4gZGF0
YXB0cigpOworICB9CisKKyAgY29uc3RleHByIFQgY29uc3QmIG9wZXJhdG9yICooKSBjb25zdCB7
CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKGluaXRpYWxpemVk
KCksIGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKworICBUJiBvcGVyYXRvciAqKCkgeworICAgIGFz
c2VydCAoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQor
CisgIGNvbnN0ZXhwciBUIGNvbnN0JiB2YWx1ZSgpIGNvbnN0IHsKKyAgICAvLyBGSVhNRTogV2Ug
bmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVu
ZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIHJldHVybiBpbml0aWFsaXplZCgpID8g
Y29udGFpbmVkX3ZhbCgpIDogKHRocm93IGJhZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBvcHRpb25h
bCBhY2Nlc3MiKSwgY29udGFpbmVkX3ZhbCgpKTsKKyAgICByZXR1cm4gY29udGFpbmVkX3ZhbCgp
OworICB9CisKKyAgVCYgdmFsdWUoKSB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIg
c3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4
cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IGNvbnRhaW5lZF92YWwo
KSA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCJiYWQgb3B0aW9uYWwgYWNjZXNzIiksIGNv
bnRhaW5lZF92YWwoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQorCisjIGVu
ZGlmCisKKyMgaWYgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgPT0gMQorCisgIHRlbXBs
YXRlIDxjbGFzcyBWPgorICBjb25zdGV4cHIgVCB2YWx1ZV9vcihWJiYgdikgY29uc3QmCisgIHsK
KyAgICByZXR1cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86
OmNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorCisjICAgaWYgT1BUSU9OQUxfSEFTX01P
VkVfQUNDRVNTT1JTID09IDEKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KKyAgT1BUSU9OQUxfTVVU
QUJMRV9DT05TVEVYUFIgVCB2YWx1ZV9vcihWJiYgdikgJiYKKyAgeworICAgIHJldHVybiAqdGhp
cyA/IGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKGNvbnN0X2Nhc3Q8b3B0aW9uYWw8VD4mPigqdGhp
cykuY29udGFpbmVkX3ZhbCgpKSA6IGRldGFpbF86OmNvbnZlcnQ8VD4oZGV0YWlsXzo6Y29uc3Rl
eHByX2ZvcndhcmQ8Vj4odikpOworICB9CisKKyMgICBlbHNlCisKKyAgdGVtcGxhdGUgPGNsYXNz
IFY+CisgIFQgdmFsdWVfb3IoViYmIHYpICYmCisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyBkZXRh
aWxfOjpjb25zdGV4cHJfbW92ZShjb25zdF9jYXN0PG9wdGlvbmFsPFQ+Jj4oKnRoaXMpLmNvbnRh
aW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3
YXJkPFY+KHYpKTsKKyAgfQorCisjICAgZW5kaWYKKworIyBlbHNlCisKKyAgdGVtcGxhdGUgPGNs
YXNzIFY+CisgIGNvbnN0ZXhwciBUIHZhbHVlX29yKFYmJiB2KSBjb25zdAorICB7CisgICAgcmV0
dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25zdGV4
cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyBlbmRpZgorCit9OworCisKK3RlbXBsYXRlIDxj
bGFzcyBUPgorY2xhc3Mgb3B0aW9uYWw8VCY+Cit7CisgIHN0YXRpY19hc3NlcnQoICFzdGQ6Omlz
X3NhbWU8VCwgbnVsbG9wdF90Pjo6dmFsdWUsICJiYWQgVCIgKTsKKyAgc3RhdGljX2Fzc2VydCgg
IXN0ZDo6aXNfc2FtZTxULCBpbl9wbGFjZV90Pjo6dmFsdWUsICJiYWQgVCIgKTsKKyAgVCogcmVm
OworCitwdWJsaWM6CisKKyAgLy8gMjAuNS41LjEsIGNvbnN0cnVjdGlvbi9kZXN0cnVjdGlvbgor
ICBjb25zdGV4cHIgb3B0aW9uYWwoKSBfX05PRVhDRVBUIDogcmVmKG51bGxwdHIpIHt9CisKKyAg
Y29uc3RleHByIG9wdGlvbmFsKG51bGxvcHRfdCkgX19OT0VYQ0VQVCA6IHJlZihudWxscHRyKSB7
fQorCisgIGNvbnN0ZXhwciBvcHRpb25hbChUJiB2KSBfX05PRVhDRVBUIDogcmVmKGRldGFpbF86
OnN0YXRpY19hZGRyZXNzb2YodikpIHt9CisKKyAgb3B0aW9uYWwoVCYmKSA9IGRlbGV0ZTsKKwor
ICBjb25zdGV4cHIgb3B0aW9uYWwoY29uc3Qgb3B0aW9uYWwmIHJocykgX19OT0VYQ0VQVCA6IHJl
ZihyaHMucmVmKSB7fQorCisgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcHRpb25hbChpbl9wbGFjZV90
LCBUJiB2KSBfX05PRVhDRVBUIDogcmVmKGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2YodikpIHt9
CisKKyAgZXhwbGljaXQgb3B0aW9uYWwoaW5fcGxhY2VfdCwgVCYmKSA9IGRlbGV0ZTsKKworICB+
b3B0aW9uYWwoKSA9IGRlZmF1bHQ7CisKKyAgLy8gMjAuNS41LjIsIG11dGF0aW9uCisgIG9wdGlv
bmFsJiBvcGVyYXRvcj0obnVsbG9wdF90KSBfX05PRVhDRVBUIHsKKyAgICByZWYgPSBudWxscHRy
OworICAgIHJldHVybiAqdGhpczsKKyAgfQogCi0gICAgYm9vbCBtX2lzRW5nYWdlZDsKLSAgICB0
eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29m
PFQ+Ojp2YWx1ZT46OnR5cGUgbV92YWx1ZTsKKyAgLy8gb3B0aW9uYWwmIG9wZXJhdG9yPShjb25z
dCBvcHRpb25hbCYgcmhzKSBfX05PRVhDRVBUIHsKKyAgICAvLyByZWYgPSByaHMucmVmOworICAg
IC8vIHJldHVybiAqdGhpczsKKyAgLy8gfQorCisgIC8vIG9wdGlvbmFsJiBvcGVyYXRvcj0ob3B0
aW9uYWwmJiByaHMpIF9fTk9FWENFUFQgeworICAgIC8vIHJlZiA9IHJocy5yZWY7CisgICAgLy8g
cmV0dXJuICp0aGlzOworICAvLyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGF1dG8g
b3BlcmF0b3I9KFUmJiByaHMpIF9fTk9FWENFUFQKKyAgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWYKKyAgPAorICAgIHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFU+Ojp0eXBlLCBv
cHRpb25hbDxUJj4+Ojp2YWx1ZSwKKyAgICBvcHRpb25hbCYKKyAgPjo6dHlwZQorICB7CisgICAg
cmVmID0gcmhzLnJlZjsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVT4KKyAgYXV0byBvcGVyYXRvcj0oVSYmIHJocykgX19OT0VYQ0VQVAorICAtPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZgorICA8CisgICAgIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6
OmRlY2F5PFU+Ojp0eXBlLCBvcHRpb25hbDxUJj4+Ojp2YWx1ZSwKKyAgICBvcHRpb25hbCYKKyAg
Pjo6dHlwZQorICA9IGRlbGV0ZTsKKworICB2b2lkIGVtcGxhY2UoVCYgdikgX19OT0VYQ0VQVCB7
CisgICAgcmVmID0gZGV0YWlsXzo6c3RhdGljX2FkZHJlc3NvZih2KTsKKyAgfQorCisgIHZvaWQg
ZW1wbGFjZShUJiYpID0gZGVsZXRlOworCisKKyAgdm9pZCBzd2FwKG9wdGlvbmFsPFQmPiYgcmhz
KSBfX05PRVhDRVBUCisgIHsKKyAgICBzdGQ6OnN3YXAocmVmLCByaHMucmVmKTsKKyAgfQorCisg
IC8vIDIwLjUuNS4zLCBvYnNlcnZlcnMKKyAgY29uc3RleHByIFQqIG9wZXJhdG9yLT4oKSBjb25z
dCB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKHJlZiwgcmVm
KTsKKyAgfQorCisgIGNvbnN0ZXhwciBUJiBvcGVyYXRvciooKSBjb25zdCB7CisgICAgcmV0dXJu
IFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKHJlZiwgKnJlZik7CisgIH0KKworICBj
b25zdGV4cHIgVCYgdmFsdWUoKSBjb25zdCB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2Zm
ZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29u
dGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gcmVmID8gKnJlZiA6ICh0aHJvdyBiYWRfb3B0
aW9uYWxfYWNjZXNzKCJiYWQgb3B0aW9uYWwgYWNjZXNzIiksICpyZWYpOworICAgIHJldHVybiAq
cmVmOworICB9CisKKyAgZXhwbGljaXQgY29uc3RleHByIG9wZXJhdG9yIGJvb2woKSBjb25zdCBf
X05PRVhDRVBUIHsKKyAgICByZXR1cm4gcmVmICE9IG51bGxwdHI7CisgIH0KKworICB0ZW1wbGF0
ZSA8Y2xhc3MgVj4KKyAgY29uc3RleHByIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUgdmFs
dWVfb3IoViYmIHYpIGNvbnN0CisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyAqKnRoaXMgOiBkZXRh
aWxfOjpjb252ZXJ0PHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+KGRldGFpbF86OmNvbnN0
ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2Ns
YXNzIG9wdGlvbmFsPFQmJj4KK3sKKyAgc3RhdGljX2Fzc2VydCggc2l6ZW9mKFQpID09IDAsICJv
cHRpb25hbCBydmFsdWUgcmVmZXJlbmNlcyBkaXNhbGxvd2VkIiApOwogfTsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4m
IGxocywgY29uc3QgT3B0aW9uYWw8VD4mIHJocykKKworLy8gMjAuNS44LCBSZWxhdGlvbmFsIG9w
ZXJhdG9ycwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3Qgb3B0aW9uYWw8VD4mIHgsIGNvbnN0IG9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gYm9v
bCh4KSAhPSBib29sKHkpID8gZmFsc2UgOiBib29sKHgpID09IGZhbHNlID8gdHJ1ZSA6ICp4ID09
ICp5OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3Qgb3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAh
KHggPT0geSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoY29uc3Qgb3B0aW9uYWw8VD4mIHgsIGNvbnN0IG9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1
cm4gKCF5KSA/IGZhbHNlIDogKCF4KSA/IHRydWUgOiAqeCA8ICp5OworfQorCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBj
b25zdCBvcHRpb25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuICh5IDwgeCk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPFQ+JiB4
LCBjb25zdCBvcHRpb25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuICEoeSA8IHgpOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBvcHRpb25hbDxU
PiYgeCwgY29uc3Qgb3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAhKHggPCB5KTsKK30KKwor
CisvLyAyMC41LjksIENvbXBhcmlzb24gd2l0aCBudWxsb3B0Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBvcHRpb25hbDxUPiYgeCwgbnVsbG9wdF90
KSBfX05PRVhDRVBUCit7CisgIHJldHVybiAoIXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4
KSBfX05PRVhDRVBUCit7CisgIHJldHVybiAoIXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcHRpb25hbDxUPiYgeCwgbnVsbG9wdF90
KSBfX05PRVhDRVBUCit7CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+
JiB4KSBfX05PRVhDRVBUCit7CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9w
dF90KSBfX05PRVhDRVBUCit7CisgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+
JiB4KSBfX05PRVhDRVBUCit7CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYgeCwgbnVs
bG9wdF90KSBfX05PRVhDRVBUCit7CisgIHJldHVybiAoIXgpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFs
PFQ+JikgX19OT0VYQ0VQVAoreworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBvcHRpb25hbDxUPiYgeCwgbnVsbG9w
dF90KSBfX05PRVhDRVBUCit7CisgIHJldHVybiBib29sKHgpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9uYWw8
VD4mKSBfX05PRVhDRVBUCit7CisgIHJldHVybiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mLCBudWxsb3B0
X3QpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KG51bGxvcHRfdCwgY29uc3Qgb3B0aW9uYWw8VD4m
IHgpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuICgheCk7Cit9CisKKworCisvLyAyMC41LjEwLCBD
b21wYXJpc29uIHdpdGggVAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCit7CisgIHJldHVybiBib29s
KHgpID8gKnggPT0gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxUPiYgeCkKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBU
JiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ICE9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBv
cHRpb25hbDxUPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ICE9ICp4IDogdHJ1ZTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRp
b25hbDxUPiYgeCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4o
bGhzKSA9PSBzdGF0aWNfY2FzdDxib29sPihyaHMpICYmICghc3RhdGljX2Nhc3Q8Ym9vbD4obGhz
KSB8fCBsaHMudmFsdWUoKSA9PSByaHMudmFsdWUoKSk7CisgIHJldHVybiBib29sKHgpID8gKngg
PCB2IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oY29uc3QgT3B0aW9uYWw8VD4mIGxocywgY29uc3QgT3B0aW9uYWw8VD4mIHJocykK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgdiwg
Y29uc3Qgb3B0aW9uYWw8VD4mIHgpCiB7Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7CisgIHJl
dHVybiBib29sKHgpID8gdiA+ICp4IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwgTnVsbG9w
dFRhZykKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
b3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJuICFvcHQ7CisgIHJldHVy
biBib29sKHgpID8gKnggPiB2IDogZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1j
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRU
YWcpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFQm
IHYsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29s
PihvcHQpOworICByZXR1cm4gYm9vbCh4KSA/IHYgPCAqeCA6IGZhbHNlOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShOdWxsb3B0VGFnLCBjb25z
dCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJu
ICFvcHQ7CisgIHJldHVybiBib29sKHgpID8gKnggPj0gdiA6IGZhbHNlOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShOdWxsb3B0VGFnLCBjb25z
dCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPD0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VD4mIHgpCiB7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KG9wdCk7CisgIHJldHVybiBib29sKHgpID8gdiA8PSAqeCA6IGZh
bHNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBPcHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25z
dCBUJiB2KQogewotICAgIHJldHVybiBvcHQgJiYgb3B0LnZhbHVlKCkgPT0gdmFsdWU7CisgIHJl
dHVybiBib29sKHgpID8gKnggPD0gdiA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIGNvbnN0
IFQmIHZhbHVlKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0o
Y29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VD4mIHgpCiB7Ci0gICAgcmV0dXJuICEob3B0ID09
IHZhbHVlKTsKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID49ICp4IDogdHJ1ZTsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdmFsdWUs
IGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQpCisKKy8vIENvbXBhcmlzb24gb2Ygb3B0aW9uYWw8VCY+
IHdpdGggVAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3Qgb3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4
ID09IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4g
Ym9vbCh4KSA/IHYgPT0gKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQor
eworICByZXR1cm4gYm9vbCh4KSA/ICp4ICE9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25h
bDxUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6IHRydWU7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3Qgb3B0aW9uYWw8
VCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6IHRydWU7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
VCYgdiwgY29uc3Qgb3B0aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPiAq
eCA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj4oY29uc3Qgb3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4
KSA/ICp4ID4gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQmPiYgeCkKK3sKKyAgcmV0
dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2
KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgdiwgY29uc3Qgb3B0
aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPD0gKnggOiBmYWxzZTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qgb3B0
aW9uYWw8VCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4IDw9IHYg
OiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgp
ID8gdiA+PSAqeCA6IHRydWU7Cit9CisKKy8vIENvbXBhcmlzb24gb2Ygb3B0aW9uYWw8VCBjb25z
dCY+IHdpdGggVAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
Y29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9v
bCh4KSA/ICp4ID09IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4
KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPT0gKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8Y29uc3Qg
VCY+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiBvcHQgJiYgb3B0LnZhbHVlKCkgPT0g
dmFsdWU7CisgIHJldHVybiBib29sKHgpID8gKnggIT0gdiA6IHRydWU7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHZhbHVlLCBj
b25zdCBPcHRpb25hbDxUPiYgb3B0KQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4KQogewot
ICAgIHJldHVybiAhKHZhbHVlID09IG9wdCk7CisgIHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6
IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1PcHRpb25hbDx0eXBlbmFtZSBzdGQ6
OmRlY2F5PFQ+Ojp0eXBlPgotbWFrZU9wdGlvbmFsKFQmJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4
LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiBPcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5
PFQ+Ojp0eXBlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKTsKKyAgcmV0dXJuIGJvb2woeCkgPyAq
eCA8IHYgOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKK3RlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgdiwgY29uc3Qg
b3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPiAqeCA6IHRy
dWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29u
c3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4
KSA/ICp4ID4gdiA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sK
KyAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4
LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYg
diwgY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYg
PD0gKnggOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPD0oY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4LCBjb25zdCBUJiB2KQoreworICBy
ZXR1cm4gYm9vbCh4KSA/ICp4IDw9IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxjb25z
dCBUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA+PSAqeCA6IHRydWU7Cit9CisKKwor
Ly8gMjAuNS4xMiwgU3BlY2lhbGl6ZWQgYWxnb3JpdGhtcwordGVtcGxhdGUgPGNsYXNzIFQ+Cit2
b2lkIHN3YXAob3B0aW9uYWw8VD4mIHgsIG9wdGlvbmFsPFQ+JiB5KSBfX05PRVhDRVBUXyhfX05P
RVhDRVBUXyh4LnN3YXAoeSkpKQoreworICB4LnN3YXAoeSk7Cit9CisKKwordGVtcGxhdGUgPGNs
YXNzIFQ+Citjb25zdGV4cHIgb3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4g
bWFrZV9vcHRpb25hbChUJiYgdikKK3sKKyAgcmV0dXJuIG9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6
ZGVjYXk8VD46OnR5cGU+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPFQ+KHYpKTsKK30KKwor
dGVtcGxhdGUgPGNsYXNzIFg+Citjb25zdGV4cHIgb3B0aW9uYWw8WCY+IG1ha2Vfb3B0aW9uYWwo
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxYPiB2KQoreworICByZXR1cm4gb3B0aW9uYWw8WCY+KHYu
Z2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBzdGQKKworbmFtZXNwYWNlIFdURiB7CisKKy8v
IC0tIFdlYktpdCBBZGRpdGlvbnMgLS0KK3RlbXBsYXRlIDxjbGFzcyBPcHRpb25hbFR5cGUsIGNs
YXNzIENhbGxiYWNrPgorQUxXQVlTX0lOTElORQorYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25h
bFR5cGUgb3B0aW9uYWwsIENhbGxiYWNrIGNhbGxiYWNrKSAtPiB0eXBlbmFtZSBPcHRpb25hbFR5
cGU6OnZhbHVlX3R5cGUKIHsKICAgICBpZiAob3B0aW9uYWwpCi0gICAgICAgIG91dC5wcmludCgq
b3B0aW9uYWwpOwotICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCJOdWxsb3B0Iik7CisgICAg
ICAgIHJldHVybiAqb3B0aW9uYWw7CisgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OkluUGxhY2U7Ci11c2luZyBXVEY6Ok51bGxvcHQ7
Ci11c2luZyBXVEY6Ok9wdGlvbmFsOwotdXNpbmcgV1RGOjptYWtlT3B0aW9uYWw7CituYW1lc3Bh
Y2Ugc3RkCit7CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdHJ1Y3QgaGFzaDxzdGQ6Om9w
dGlvbmFsPFQ+PgorICB7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBoYXNoPFQ+OjpyZXN1bHRfdHlw
ZSByZXN1bHRfdHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6b3B0aW9uYWw8VD4gYXJndW1lbnRfdHlw
ZTsKKworICAgIGNvbnN0ZXhwciByZXN1bHRfdHlwZSBvcGVyYXRvcigpKGFyZ3VtZW50X3R5cGUg
Y29uc3QmIGFyZykgY29uc3QgeworICAgICAgcmV0dXJuIGFyZyA/IHN0ZDo6aGFzaDxUPnt9KCph
cmcpIDogcmVzdWx0X3R5cGV7fTsKKyAgICB9CisgIH07CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgIHN0cnVjdCBoYXNoPHN0ZDo6b3B0aW9uYWw8VCY+PgorICB7CisgICAgdHlwZWRlZiB0
eXBlbmFtZSBoYXNoPFQ+OjpyZXN1bHRfdHlwZSByZXN1bHRfdHlwZTsKKyAgICB0eXBlZGVmIHN0
ZDo6b3B0aW9uYWw8VCY+IGFyZ3VtZW50X3R5cGU7CisKKyAgICBjb25zdGV4cHIgcmVzdWx0X3R5
cGUgb3BlcmF0b3IoKShhcmd1bWVudF90eXBlIGNvbnN0JiBhcmcpIGNvbnN0IHsKKyAgICAgIHJl
dHVybiBhcmcgPyBzdGQ6Omhhc2g8VD57fSgqYXJnKSA6IHJlc3VsdF90eXBle307CisgICAgfQor
ICB9OworfQorCisjIHVuZGVmIFRSMl9PUFRJT05BTF9SRVFVSVJFUworIyB1bmRlZiBUUjJfT1BU
SU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTgogCi0jZW5kaWYgLy8gT3B0aW9uYWxfaAordXNpbmcg
V1RGOjp2YWx1ZU9yQ29tcHV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGNm
ZDJhYTMzNTRkMTdmZTBmOGQ3NDA1ZWRjMmZlYWVlNjQ4MjNlMGYuLjU5NjVkNjliODAyMDE5NWUy
ZDE0OWM4MjMxMTdmYmIxNmRmNTk1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApA
QCAtOTUsNyArOTUsNyBAQCBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChTdHJpbmdWaWV3IG1hdGNo
U3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKIAogY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGwgewogcHVibGljOgotICAgIEltcGwoY29uc3QgU3Ry
aW5nVmlldyYgc3RyaW5nVmlldywgT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcj4mJiBpdGVyYXRvciwgdW5zaWduZWQgaW5kZXgpCisgICAgSW1wbChjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmdWaWV3LCBzdGQ6Om9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3I+JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQogICAgICAgICA6IG1fc3RyaW5nVmll
dyhzdHJpbmdWaWV3KQogICAgICAgICAsIG1faXRlcmF0b3IoV1RGTW92ZShpdGVyYXRvcikpCiAg
ICAgICAgICwgbV9pbmRleChpbmRleCkKQEAgLTEzNiw3ICsxMzYsNyBAQCBjbGFzcyBTdHJpbmdW
aWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CiAKIHByaXZhdGU6CiAgICAg
Y29uc3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3OwotICAgIE9wdGlvbmFsPE5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3I+IG1faXRlcmF0b3I7CisgICAgc3RkOjpvcHRpb25hbDxOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIHVuc2lnbmVkIG1f
aW5kZXg7CiAgICAgdW5zaWduZWQgbV9pbmRleEVuZDsKIH07CkBAIC0xNTcsNyArMTU3LDcgQEAg
VmVjdG9yPFN0cmluZ1ZpZXc+IFN0cmluZ1ZpZXc6OnNwbGl0KFVDaGFyIHNlcGFyYXRvcikKIH0K
IAogU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQotICAgIDogbV9pbXBsKHN0
ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IE51
bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9p
bXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwo
KSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGlu
ZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBiNTQ1ZTk2OTgyMjBk
YzQ2ODZhOGQyZjlhY2FjYWEzYmNjYzQ1YzcxLi5hNjk0NWE1MDMyMDA4NmNlYjVkYTE2OTRmYjk1
ODljODFjMzg4YjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtNjczLDcgKzY3Myw3
IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yIHsKIAogcHJpdmF0ZToK
ICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFN0cmluZ1ZpZXc+IG1fc3RyaW5nVmll
dzsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9uZXh0Q29kZVBvaW50T2Zmc2V0OworICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dENvZGVQb2ludE9mZnNldDsKICAgICBVQ2hhcjMy
IG1fY29kZVBvaW50OwogfTsKIApAQCAtNzM4LDcgKzczOCw3IEBAIGlubGluZSBhdXRvIFN0cmlu
Z1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkgLT4gSXRlcmF0b3ImCiB7
CiAgICAgQVNTRVJUKG1fbmV4dENvZGVQb2ludE9mZnNldCk7CiAgICAgaWYgKG1fbmV4dENvZGVQ
b2ludE9mZnNldC52YWx1ZSgpID09IG1fc3RyaW5nVmlldy5nZXQoKS5sZW5ndGgoKSkgewotICAg
ICAgICBtX25leHRDb2RlUG9pbnRPZmZzZXQgPSBOdWxsb3B0OworICAgICAgICBtX25leHRDb2Rl
UG9pbnRPZmZzZXQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAgICAgaWYgKG1fc3RyaW5nVmlldy5nZXQoKS5pczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcAppbmRleCBjYzFkYTlh
ZTQxZmFkNjExZmFlOWYzNDE1YjMwMjk2YTg5OGY2ODg4Li42ZmM0NWZiYzNmZDEwOTBhYzFkZDNj
ODZhMzI0YmRhNDY2ZjBmMmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBib29s
IHBhcnNlRGlnaXQoVUNoYXIgZGlnaXQsIGJvb2wgaXNOZWdhdGl2ZSwgaW50NjRfdCYgYW1vdW50
KQogfQogCiAvLyBUaGUgYW1vdW50IGZvbGxvd3MgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAtP1sw
LTldKyhcLlswLTldWzAtOV0pPy4KLXN0YXRpYyBPcHRpb25hbDxpbnQ2NF90PiBwYXJzZUFtb3Vu
dChjb25zdCBTdHJpbmcmIGFtb3VudFN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0
X3Q+IHBhcnNlQW1vdW50KGNvbnN0IFN0cmluZyYgYW1vdW50U3RyaW5nKQogewogICAgIGludDY0
X3QgYW1vdW50ID0gMDsKIApAQCAtMTA1LDEzICsxMDUsMTMgQEAgc3RhdGljIE9wdGlvbmFsPGlu
dDY0X3Q+IHBhcnNlQW1vdW50KGNvbnN0IFN0cmluZyYgYW1vdW50U3RyaW5nKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIXBhcnNlRGlnaXQoYywgaXNOZWdhdGl2ZSwgYW1vdW50
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RGlnaXQ7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFN0YXRlOjpTaWduOgogICAgICAgICAgICAg
aWYgKCFwYXJzZURpZ2l0KGMsIGlzTmVnYXRpdmUsIGFtb3VudCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRpZ2l0OwogICAgICAgICAgICAgYnJlYWs7CiAKQEAg
LTEyMiwzMCArMTIyLDMwIEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ2NF90PiBwYXJzZUFtb3VudChj
b25zdCBTdHJpbmcmIGFtb3VudFN0cmluZykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKCFwYXJzZURpZ2l0KGMsIGlzTmVnYXRpdmUsIGFtb3VudCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU3RhdGU6OkRvdDoKICAgICAgICAgICAg
IGlmICghcGFyc2VEaWdpdChjLCBpc05lZ2F0aXZlLCBhbW91bnQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRvdERpZ2l0OwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBTdGF0ZTo6RG90RGlnaXQ6CiAgICAgICAgICAgICBpZiAoIXBhcnNl
RGlnaXQoYywgaXNOZWdhdGl2ZSwgYW1vdW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAg
ICBzdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIFN0YXRlOjpFbmQ6Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgaWYgKHN0YXRlICE9IFN0YXRlOjpEaWdpdCAmJiBzdGF0ZSAhPSBTdGF0ZTo6RG90RGlnaXQg
JiYgc3RhdGUgIT0gU3RhdGU6OkVuZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc3RhdGUgPT0gU3RhdGU6OkRvdERpZ2l0
KSB7CiAgICAgICAgIC8vIFRoZXJlIHdhcyBhIHNpbmdsZSBkaWdpdCBhZnRlciB0aGUgZGVjaW1h
bCBwb2ludC4KQEAgLTE2MywxOCArMTYzLDE4IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ2NF90PiBw
YXJzZUFtb3VudChjb25zdCBTdHJpbmcmIGFtb3VudFN0cmluZykKICAgICByZXR1cm4gYW1vdW50
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OkNvbnRhY3RGaWVsZHM+IGNy
ZWF0ZUNvbnRhY3RGaWVsZHMoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIGNv
bnRhY3RGaWVsZHNBcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpD
b250YWN0RmllbGRzPiBjcmVhdGVDb250YWN0RmllbGRzKERPTVdpbmRvdyYgd2luZG93LCBjb25z
dCBBcnJheVZhbHVlJiBjb250YWN0RmllbGRzQXJyYXkpCiB7CiAgICAgUGF5bWVudFJlcXVlc3Q6
OkNvbnRhY3RGaWVsZHMgcmVzdWx0OwogCiAgICAgc2l6ZV90IGNvbnRhY3RGaWVsZHNDb3VudDsK
ICAgICBpZiAoIWNvbnRhY3RGaWVsZHNBcnJheS5sZW5ndGgoY29udGFjdEZpZWxkc0NvdW50KSkK
LSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRhY3RGaWVsZHNDb3VudDsgKytpKSB7CiAg
ICAgICAgIFN0cmluZyBjb250YWN0RmllbGQ7CiAgICAgICAgIGlmICghY29udGFjdEZpZWxkc0Fy
cmF5LmdldChpLCBjb250YWN0RmllbGQpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChjb250YWN0Rmll
bGQgPT0gInBvc3RhbEFkZHJlc3MiKQogICAgICAgICAgICAgcmVzdWx0LnBvc3RhbEFkZHJlc3Mg
PSB0cnVlOwpAQCAtMTg3LDIxICsxODcsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1
ZXN0OjpDb250YWN0RmllbGRzPiBjcmVhdGVDb250YWN0RmllbGRzKERPTVdpbmRvdyYgd2kKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIg
KyBjb250YWN0RmllbGQsICJcIiBpcyBub3QgYSB2YWxpZCBjb250YWN0IGZpZWxkLiIpOwogICAg
ICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZT4gdG9MaW5lSXRlbVR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpU
eXBlPiB0b0xpbmVJdGVtVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUg
PT0gInBlbmRpbmciKQogICAgICAgICByZXR1cm4gUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpU
eXBlOjpQZW5kaW5nOwogICAgIGlmICh0eXBlID09ICJmaW5hbCIpCiAgICAgICAgIHJldHVybiBQ
YXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OkZpbmFsOwogCi0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZExp
bmVJdGVtUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtMjIwLDcg
KzIyMCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRMaW5lSXRlbVByb3BlcnR5TmFtZShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxQYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGNyZWF0ZUxpbmVJdGVtKERPTVdpbmRvdyYg
d2luZG93LCBjb25zdCBEaWN0aW9uYXJ5JiB0b3RhbCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gY3JlYXRlTGluZUl0ZW0oRE9NV2luZG93JiB3aW5kb3cs
IGNvbnN0IERpY3Rpb25hcnkmIHRvdGFsKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5
TmFtZXM7CiAgICAgdG90YWwuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wZXJ0eU5hbWVzKTsKQEAg
LTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVt
PiBjcmVhdGVMaW5lSXRlbShET01XaW5kb3cmIHdpbmRvdywgY29ucwogICAgICAgICBpZiAoIWlz
VmFsaWRMaW5lSXRlbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBh
dXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyBwcm9wZXJ0eU5hbWUsICJcIiBpcyBub3Qg
YSB2YWxpZCBsaW5lIGl0ZW0gcHJvcGVydHkgbmFtZS4iKTsKICAgICAgICAgICAgIHdpbmRvdy5w
cmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+
IGNyZWF0ZUxpbmVJdGVtKERPTVdpbmRvdyYgd2luZG93LCBjb25zCiAgICAgICAgIGlmICghdHlw
ZSkgewogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgKnR5cGVT
dHJpbmcsICJcIiBpcyBub3QgYSB2YWxpZCBsaW5lIGl0ZW0gdHlwZS4iKTsKICAgICAgICAgICAg
IHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAg
ICAgICAgIHJlc3VsdC50eXBlID0gKnR5cGU7CkBAIC0yNTUsMjUgKzI1NSwyNSBAQCBzdGF0aWMg
T3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjcmVhdGVMaW5lSXRlbShET01XaW5k
b3cmIHdpbmRvdywgY29ucwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoIlwiIiArICphbW91bnRTdHJpbmcsICJcIiBpcyBub3QgYSB2YWxpZCBh
bW91bnQuIik7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGNyZWF0ZUxpbmVJ
dGVtcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgbGluZUl0ZW1zQXJyYXkp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPj4g
Y3JlYXRlTGluZUl0ZW1zKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBcnJheVZhbHVlJiBsaW5l
SXRlbXNBcnJheSkKIHsKICAgICBWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiByZXN1
bHQ7CiAKICAgICBzaXplX3QgbGluZUl0ZW1Db3VudDsKICAgICBpZiAoIWxpbmVJdGVtc0FycmF5
Lmxlbmd0aChsaW5lSXRlbUNvdW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpbmVJ
dGVtQ291bnQ7ICsraSkgewogICAgICAgICBEaWN0aW9uYXJ5IGxpbmVJdGVtRGljdGlvbmFyeTsK
ICAgICAgICAgaWYgKCFsaW5lSXRlbXNBcnJheS5nZXQoaSwgbGluZUl0ZW1EaWN0aW9uYXJ5KSkK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBpZiAoYXV0byBsaW5lSXRlbSA9IGNyZWF0ZUxpbmVJdGVtKHdpbmRv
dywgbGluZUl0ZW1EaWN0aW9uYXJ5KSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKmxpbmVJ
dGVtKTsKQEAgLTI4MiwxOCArMjgyLDE4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UGF5bWVu
dFJlcXVlc3Q6OkxpbmVJdGVtPj4gY3JlYXRlTGluZUl0ZW1zKERPTVdpbmRvdyYgd2luCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpNZXJj
aGFudENhcGFiaWxpdGllcz4gY3JlYXRlTWVyY2hhbnRDYXBhYmlsaXRpZXMoRE9NV2luZG93JiB3
aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIG1lcmNoYW50Q2FwYWJpbGl0aWVzQXJyYXkpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXM+IGNy
ZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVzKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBcnJheVZh
bHVlJiBtZXJjaGFudENhcGFiaWxpdGllc0FycmF5KQogewogICAgIFBheW1lbnRSZXF1ZXN0OjpN
ZXJjaGFudENhcGFiaWxpdGllcyByZXN1bHQ7CiAKICAgICBzaXplX3QgbWVyY2hhbnRDYXBhYmls
aXRpZXNDb3VudDsKICAgICBpZiAoIW1lcmNoYW50Q2FwYWJpbGl0aWVzQXJyYXkubGVuZ3RoKG1l
cmNoYW50Q2FwYWJpbGl0aWVzQ291bnQpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVy
Y2hhbnRDYXBhYmlsaXRpZXNDb3VudDsgKytpKSB7CiAgICAgICAgIFN0cmluZyBtZXJjaGFudENh
cGFiaWxpdHk7CiAgICAgICAgIGlmICghbWVyY2hhbnRDYXBhYmlsaXRpZXNBcnJheS5nZXQoaSwg
bWVyY2hhbnRDYXBhYmlsaXR5KSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAobWVyY2hhbnRDYXBhYmls
aXR5ID09ICJzdXBwb3J0czNEUyIpCiAgICAgICAgICAgICByZXN1bHQuc3VwcG9ydHMzRFMgPSB0
cnVlOwpAQCAtMzA2LDMwICszMDYsMzAgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0
OjpNZXJjaGFudENhcGFiaWxpdGllcz4gY3JlYXRlTWVyY2hhbnRDYXBhYmlsaXRpZXMKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyBt
ZXJjaGFudENhcGFiaWxpdHksICJcIiBpcyBub3QgYSB2YWxpZCBtZXJjaGFudCBjYXBhYmlsaXR5
LiIpOwogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCB2
ZXJzaW9uLCBET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgc3VwcG9ydGVkTmV0
d29ya3NBcnJheSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVT
dXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCB2ZXJzaW9uLCBET01XaW5kb3cmIHdpbmRvdywgY29u
c3QgQXJyYXlWYWx1ZSYgc3VwcG9ydGVkTmV0d29ya3NBcnJheSkKIHsKICAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7CiAKICAgICBzaXplX3Qgc3VwcG9ydGVkTmV0d29ya3NDb3VudDsKICAgICBp
ZiAoIXN1cHBvcnRlZE5ldHdvcmtzQXJyYXkubGVuZ3RoKHN1cHBvcnRlZE5ldHdvcmtzQ291bnQp
KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3VwcG9ydGVkTmV0d29ya3NDb3VudDsgKytp
KSB7CiAgICAgICAgIFN0cmluZyBzdXBwb3J0ZWROZXR3b3JrOwogICAgICAgICBpZiAoIXN1cHBv
cnRlZE5ldHdvcmtzQXJyYXkuZ2V0KGksIHN1cHBvcnRlZE5ldHdvcmspKQotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGlmICghUGF5bWVudFJlcXVlc3Q6OmlzVmFsaWRTdXBwb3J0ZWROZXR3b3JrKHZlcnNpb24s
IHN1cHBvcnRlZE5ldHdvcmspKSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJcIiIgKyBzdXBwb3J0ZWROZXR3b3JrLCAiXCIgaXMgbm90IGEgdmFsaWQgcGF5bWVudCBu
ZXR3b3JrLiIpOwogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2Up
OwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKHN1cHBv
cnRlZE5ldHdvcmspKTsKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IGNyZWF0ZVN1cHBvcnRlZE5ldHdvcmtzKHVuc2lnbmVkIHZlcnNpb24sIERPTVdp
bgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdUeXBlPiB0b1NoaXBwaW5nVHlwZShjb25zdCBTdHJpbmcmIHNoaXBwaW5nVHlw
ZVN0cmluZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ1R5
cGU+IHRvU2hpcHBpbmdUeXBlKGNvbnN0IFN0cmluZyYgc2hpcHBpbmdUeXBlU3RyaW5nKQogewog
ICAgIGlmIChzaGlwcGluZ1R5cGVTdHJpbmcgPT0gInNoaXBwaW5nIikKICAgICAgICAgcmV0dXJu
IFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ1R5cGU6OlNoaXBwaW5nOwpAQCAtMzQ5LDcgKzM0OSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlPiB0b1NoaXBw
aW5nVHlwZShjb25zdCBTdHJpbmcmIHNoaXBwCiAgICAgaWYgKHNoaXBwaW5nVHlwZVN0cmluZyA9
PSAic2VydmljZVBpY2t1cCIpCiAgICAgICAgIHJldHVybiBQYXltZW50UmVxdWVzdDo6U2hpcHBp
bmdUeXBlOjpTZXJ2aWNlUGlja3VwOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWxpZFNoaXBwaW5nTWV0aG9kUHJv
cGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtMzY5LDcgKzM2OSw3IEBA
IHN0YXRpYyBib29sIGlzVmFsaWRTaGlwcGluZ01ldGhvZFByb3BlcnR5TmFtZShjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+IGNyZWF0ZVNoaXBwaW5nTWV0aG9kKERP
TVdpbmRvdyYgd2luZG93LCBjb25zdCBEaWN0aW9uYXJ5JiBzaGlwcGluZ01ldGhvZERpY3Rpb25h
cnkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+
IGNyZWF0ZVNoaXBwaW5nTWV0aG9kKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBEaWN0aW9uYXJ5
JiBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnkpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJvcGVy
dHlOYW1lczsKICAgICBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnkuZ2V0T3duUHJvcGVydHlOYW1l
cyhwcm9wZXJ0eU5hbWVzKTsKQEAgLTM3OCw3ICszNzgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5
bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBjcmVhdGVTaGlwcGluZ01ldGhvZChET01XaW5k
b3cmCiAgICAgICAgIGlmICghaXNWYWxpZFNoaXBwaW5nTWV0aG9kUHJvcGVydHlOYW1lKHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiAr
IHByb3BlcnR5TmFtZSwgIlwiIGlzIG5vdCBhIHZhbGlkIHNoaXBwaW5nIG1ldGhvZCBwcm9wZXJ0
eSBuYW1lLiIpOwogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2Up
OwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODcsMjEgKzM4NywyMSBAQCBzdGF0aWMg
T3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBjcmVhdGVTaGlwcGluZ01l
dGhvZChET01XaW5kb3cmCiAgICAgYXV0byBsYWJlbCA9IHNoaXBwaW5nTWV0aG9kRGljdGlvbmFy
eS5nZXQ8U3RyaW5nPigibGFiZWwiKTsKICAgICBpZiAoIWxhYmVsKSB7CiAgICAgICAgIHdpbmRv
dy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBzaGlwcGluZyBtZXRob2QgbGFiZWwuIik7Ci0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KICAgICByZXN1bHQubGFiZWwgPSAqbGFiZWw7CiAKICAgICBhdXRvIGRldGFpbCA9IHNoaXBw
aW5nTWV0aG9kRGljdGlvbmFyeS5nZXQ8U3RyaW5nPigiZGV0YWlsIik7CiAgICAgaWYgKCFkZXRh
aWwpIHsKICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKCJNaXNzaW5nIHNoaXBwaW5n
IG1ldGhvZCBkZXRhaWwuIik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICByZXN1bHQuZGV0YWlsID0gKmRldGFpbDsKIAog
ICAgIGF1dG8gYW1vdW50U3RyaW5nID0gc2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5LmdldDxTdHJp
bmc+KCJhbW91bnQiKTsKICAgICBpZiAoIWFtb3VudFN0cmluZykgewogICAgICAgICB3aW5kb3cu
cHJpbnRFcnJvck1lc3NhZ2UoIk1pc3Npbmcgc2hpcHBpbmcgbWV0aG9kIGFtb3VudC4iKTsKLSAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgaWYgKGF1dG8gYW1vdW50ID0gcGFyc2VBbW91bnQoKmFtb3VudFN0cmluZykpCkBA
IC00MDksMzYgKzQwOSwzNiBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBw
aW5nTWV0aG9kPiBjcmVhdGVTaGlwcGluZ01ldGhvZChET01XaW5kb3cmCiAgICAgZWxzZSB7CiAg
ICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArICphbW91bnRTdHJpbmcsICJc
IiBpcyBub3QgYSB2YWxpZCBhbW91bnQuIik7CiAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVz
c2FnZShtZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBpZGVudGlmaWVyID0gc2hpcHBpbmdNZXRo
b2REaWN0aW9uYXJ5LmdldDxTdHJpbmc+KCJpZGVudGlmaWVyIik7CiAgICAgaWYgKCFpZGVudGlm
aWVyKSB7CiAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBzaGlwcGlu
ZyBtZXRob2QgaWRlbnRpZmllci4iKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJlc3VsdC5pZGVudGlmaWVyID0gKmlk
ZW50aWZpZXI7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4+IGNyZWF0ZVNoaXBwaW5nTWV0aG9k
cyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgc2hpcHBpbmdNZXRob2RzQXJy
YXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kPj4gY3JlYXRlU2hpcHBpbmdNZXRob2RzKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBB
cnJheVZhbHVlJiBzaGlwcGluZ01ldGhvZHNBcnJheSkKIHsKICAgICBWZWN0b3I8UGF5bWVudFJl
cXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiByZXN1bHQ7CiAKICAgICBzaXplX3Qgc2hpcHBpbmdNZXRo
b2RDb3VudDsKICAgICBpZiAoIXNoaXBwaW5nTWV0aG9kc0FycmF5Lmxlbmd0aChzaGlwcGluZ01l
dGhvZENvdW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNoaXBwaW5nTWV0aG9kQ291
bnQ7ICsraSkgewogICAgICAgICBEaWN0aW9uYXJ5IHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeTsK
ICAgICAgICAgaWYgKCFzaGlwcGluZ01ldGhvZHNBcnJheS5nZXQoaSwgc2hpcHBpbmdNZXRob2RE
aWN0aW9uYXJ5KSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoYXV0byBzaGlwcGluZ01ldGhvZCA9IGNy
ZWF0ZVNoaXBwaW5nTWV0aG9kKHdpbmRvdywgc2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5KSkKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKnNoaXBwaW5nTWV0aG9kKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00NzAsNyArNDcwLDcgQEAgc3Rh
dGljIGJvb2wgaXNWYWxpZFBheW1lbnRSZXF1ZXN0UHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVxdWVzdCh1bnNpZ25lZCB2ZXJzaW9uLCBET01X
aW5kb3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFyeSYgZGljdGlvbmFyeSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVxdWVzdCh1bnNpZ25lZCB2
ZXJzaW9uLCBET01XaW5kb3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFyeSYgZGljdGlvbmFyeSkK
IHsKICAgICBQYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdDsKIApAQCAtNDgwLDI1ICs0ODAs
MjUgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVxdWVz
dCh1bnNpZ25lZCB2ZXJzaW9uLCBET01XaW5kb3cKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFt
ZSA6IHByb3BlcnR5TmFtZXMpIHsKICAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSAicmVxdWly
ZWRTaGlwcGluZ0FkZHJlc3NGaWVsZHMiKSB7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJv
ck1lc3NhZ2UoIlwicmVxdWlyZWRTaGlwcGluZ0FkZHJlc3NGaWVsZHNcIiBoYXMgYmVlbiBkZXBy
ZWNhdGVkLiBQbGVhc2Ugc3dpdGNoIHRvIFwicmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHNc
IiBpbnN0ZWFkLiIpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSAicmVxdWlyZWRCaWxsaW5nQWRkcmVzc0ZpZWxkcyIpIHsKICAgICAgICAgICAgIHdpbmRv
dy5wcmludEVycm9yTWVzc2FnZSgiXCJyZXF1aXJlZEJpbGxpbmdBZGRyZXNzRmllbGRzXCIgaGFz
IGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIHN3aXRjaCB0byBcInJlcXVpcmVkQmlsbGluZ0NvbnRh
Y3RGaWVsZHNcIiBpbnN0ZWFkLiIpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFp
c1ZhbGlkUGF5bWVudFJlcXVlc3RQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewogICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgcHJvcGVydHlOYW1lLCAiXCIg
aXMgbm90IGEgdmFsaWQgcGF5bWVudCByZXF1ZXN0IHByb3BlcnR5IG5hbWUuIik7CiAgICAgICAg
ICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoYXV0byBtZXJjaGFudENhcGFiaWxpdGllc0FycmF5ID0gZGljdGlv
bmFyeS5nZXQ8QXJyYXlWYWx1ZT4oIm1lcmNoYW50Q2FwYWJpbGl0aWVzIikpIHsKICAgICAgICAg
YXV0byBtZXJjaGFudENhcGFiaWxpdGllcyA9IGNyZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVzKHdp
bmRvdywgKm1lcmNoYW50Q2FwYWJpbGl0aWVzQXJyYXkpOwogICAgICAgICBpZiAoIW1lcmNoYW50
Q2FwYWJpbGl0aWVzKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldE1lcmNoYW50
Q2FwYWJpbGl0aWVzKCptZXJjaGFudENhcGFiaWxpdGllcyk7CiAgICAgfQpAQCAtNTA2LDcgKzUw
Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVl
c3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAgaWYgKGF1dG8gc3VwcG9ydGVkTmV0
d29ya3NBcnJheSA9IGRpY3Rpb25hcnkuZ2V0PEFycmF5VmFsdWU+KCJzdXBwb3J0ZWROZXR3b3Jr
cyIpKSB7CiAgICAgICAgIGF1dG8gc3VwcG9ydGVkTmV0d29ya3MgPSBjcmVhdGVTdXBwb3J0ZWRO
ZXR3b3Jrcyh2ZXJzaW9uLCB3aW5kb3csICpzdXBwb3J0ZWROZXR3b3Jrc0FycmF5KTsKICAgICAg
ICAgaWYgKCFzdXBwb3J0ZWROZXR3b3JrcykKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwYXltZW50UmVxdWVz
dC5zZXRTdXBwb3J0ZWROZXR3b3Jrcygqc3VwcG9ydGVkTmV0d29ya3MpOwogICAgIH0KQEAgLTUx
OSw3ICs1MTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1l
bnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAgIGlmIChhdXRvIHJlcXVp
cmVkQmlsbGluZ0NvbnRhY3RGaWVsZHNBcnJheSA9IGRpY3Rpb25hcnkuZ2V0PEFycmF5VmFsdWU+
KCJyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzIikpIHsKICAgICAgICAgYXV0byByZXF1aXJl
ZEJpbGxpbmdDb250YWN0RmllbGRzID0gY3JlYXRlQ29udGFjdEZpZWxkcyh3aW5kb3csICpyZXF1
aXJlZEJpbGxpbmdDb250YWN0RmllbGRzQXJyYXkpOwogICAgICAgICBpZiAoIXJlcXVpcmVkQmls
bGluZ0NvbnRhY3RGaWVsZHMpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0UmVx
dWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcygqcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyk7
CiAgICAgfQpAQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVz
dD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAg
ICAgIGF1dG8gYmlsbGluZ0NvbnRhY3QgPSBQYXltZW50Q29udGFjdDo6ZnJvbUpTKCpKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCAqYmlsbGluZ0NvbnRhY3RWYWx1ZSwgZXJy
b3JNZXNzYWdlKTsKICAgICAgICAgaWYgKCFiaWxsaW5nQ29udGFjdCkgewogICAgICAgICAgICAg
d2luZG93LnByaW50RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0K
IAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRCaWxsaW5nQ29udGFjdCgqYmlsbGluZ0NvbnRh
Y3QpOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4g
Y3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAgaWYg
KGF1dG8gcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHNBcnJheSA9IGRpY3Rpb25hcnkuZ2V0
PEFycmF5VmFsdWU+KCJyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcyIpKSB7CiAgICAgICAg
IGF1dG8gcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMgPSBjcmVhdGVDb250YWN0RmllbGRz
KHdpbmRvdywgKnJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzQXJyYXkpOwogICAgICAgICBp
ZiAoIXJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKQotICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHBheW1l
bnRSZXF1ZXN0LnNldFJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzKCpyZXF1aXJlZFNoaXBw
aW5nQ29udGFjdEZpZWxkcyk7CiAgICAgfQpAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0YXRpYyBPcHRp
b25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lv
biwgRE9NV2luZG93CiAgICAgICAgIGF1dG8gc2hpcHBpbmdDb250YWN0ID0gUGF5bWVudENvbnRh
Y3Q6OmZyb21KUygqSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgKnNoaXBw
aW5nQ29udGFjdFZhbHVlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBpZiAoIXNoaXBwaW5nQ29u
dGFjdCkgewogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKGVycm9yTWVzc2Fn
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRTaGlwcGlu
Z0NvbnRhY3QoKnNoaXBwaW5nQ29udGFjdCk7CkBAIC01NjAsNyArNTYwLDcgQEAgc3RhdGljIE9w
dGlvbmFsPFBheW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVxdWVzdCh1bnNpZ25lZCB2ZXJz
aW9uLCBET01XaW5kb3cKICAgICAgICAgaWYgKCFzaGlwcGluZ1R5cGUpIHsKICAgICAgICAgICAg
IGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArICpzaGlwcGluZ1R5cGVTdHJpbmcsICJc
IiBpcyBub3QgYSB2YWxpZCBzaGlwcGluZyB0eXBlLiIpOwogICAgICAgICAgICAgd2luZG93LnBy
aW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIHBheW1l
bnRSZXF1ZXN0LnNldFNoaXBwaW5nVHlwZSgqc2hpcHBpbmdUeXBlKTsKICAgICB9CkBAIC01Njgs
NyArNTY4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50
UmVxdWVzdCh1bnNpZ25lZCB2ZXJzaW9uLCBET01XaW5kb3cKICAgICBpZiAoYXV0byBzaGlwcGlu
Z01ldGhvZHNBcnJheSA9IGRpY3Rpb25hcnkuZ2V0PEFycmF5VmFsdWU+KCJzaGlwcGluZ01ldGhv
ZHMiKSkgewogICAgICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kcyA9IGNyZWF0ZVNoaXBwaW5nTWV0
aG9kcyh3aW5kb3csICpzaGlwcGluZ01ldGhvZHNBcnJheSk7CiAgICAgICAgIGlmICghc2hpcHBp
bmdNZXRob2RzKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldFNoaXBwaW5nTWV0
aG9kcygqc2hpcHBpbmdNZXRob2RzKTsKICAgICB9CkBAIC01NzYsNyArNTc2LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVxdWVzdCh1bnNpZ25lZCB2
ZXJzaW9uLCBET01XaW5kb3cKICAgICBpZiAoYXV0byB0b3RhbERpY3Rpb25hcnkgPSBkaWN0aW9u
YXJ5LmdldDxEaWN0aW9uYXJ5PigidG90YWwiKSkgewogICAgICAgICBhdXRvIHRvdGFsID0gY3Jl
YXRlTGluZUl0ZW0od2luZG93LCAqdG90YWxEaWN0aW9uYXJ5KTsKICAgICAgICAgaWYgKCF0b3Rh
bCkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRUb3RhbCgqdG90YWwpOwogICAg
IH0KQEAgLTg0Miw3ICs4NDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVNlc3Npb246
OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IERpY3Rpb25hcnkmCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzPiB0
b1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVuc2lnbmVkIHNob3J0IHN0YXR1cykKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzPiB0b1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzKHVuc2lnbmVkIHNob3J0IHN0YXR1cykKIHsKICAgICBzd2l0Y2ggKHN0
YXR1cykgewogICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfU1VDQ0VTUzoKQEAgLTg3
MCw3ICs4NzAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM+
IHRvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXModW5zaWduZQogICAgICAgICByZXR1cm4gUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ7CiAKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dENvbnRhY3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRh
Y3QuaAppbmRleCA1MGFhODA1NmFiMDFkMjc3OTI5NDYzZjIzNmVmNjZmYjdmN2M0NGEzLi43Y2E5
ZjA1NDIwZjY3MmNiYjlmYTlmZmI3NjJjZDU2NTVjMjczNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oCkBAIC00OCw3ICs0OCw3IEBA
IGNsYXNzIFBheW1lbnRDb250YWN0IHsKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlv
bmFsPFBheW1lbnRDb250YWN0PiBmcm9tSlMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUs
IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50
Q29udGFjdD4gZnJvbUpTKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSk7CiAgICAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUmKSBjb25z
dDsKIAogICAgIFBLQ29udGFjdCAqcGtDb250YWN0KCkgY29uc3QgeyByZXR1cm4gbV9wa0NvbnRh
Y3QuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAwZDRiZGJlNzJmM2FhMzVkNTQ0NzBjYTMzMGE4
MDEwN2U1OWI1Yzg5Li4xNTRhNmQwNWM4MmVjN2FkYWJmYmYyZmU3YzczY2FkMWQwMDIzNGExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuY3BwCkBAIC04MywyMSArODMsMjEgQEAgdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6
OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24K
ICAgICBtX2NsaWVudC5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihwYXltZW50TWVyY2hhbnRT
ZXNzaW9uKTsKIH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBPcHRpb25h
bDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCit2
b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogewogICAgIEFTU0VS
VChtX2FjdGl2ZVNlc3Npb24pOwogCiAgICAgbV9jbGllbnQuY29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbihzdGF0dXMsIFdURk1vdmUobmV3VG90YWxBbmRJdGVtcykpOwogfQogCi12b2lk
IFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBjb25zdCBWZWN0b3I8UGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBPcHRpb25hbDxQYXltZW50
UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCit2b2lkIFBheW1l
bnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBjb25zdCBWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKIHsKICAgICBBU1NF
UlQobV9hY3RpdmVTZXNzaW9uKTsKIAogICAgIG1fY2xpZW50LmNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKHN0YXR1cywgbmV3U2hpcHBpbmdNZXRob2RzLCBXVEZNb3ZlKG5ld1RvdGFs
QW5kSXRlbXMpKTsKIH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRl
bXM+IG5ld1RvdGFsQW5kSXRlbXMpCit2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQ
YXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFs
QW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogewogICAgIEFTU0VSVChtX2FjdGl2ZVNl
c3Npb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29vcmRpbmF0b3IuaAppbmRleCA3YzhiMjM0YzU3YmVjNzkxOTU5M2ZjM2ZkOThkNTEzOWU1
ODI0ZGE2Li41MDBhZTE2ZDE5ZmQzY2MwYmJjYTBiZWRhZTc0NTZmNTUzNTcyOWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
LmgKQEAgLTU1LDkgKzU1LDkgQEAgY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yIHsKIAogICAgIGJv
b2wgYmVnaW5QYXltZW50U2Vzc2lvbihBcHBsZVBheVNlc3Npb24mLCBjb25zdCBVUkwmIG9yaWdp
bmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBQYXltZW50
UmVxdWVzdCYpOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5
bWVudE1lcmNoYW50U2Vzc2lvbiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgT3B0aW9uYWw8UGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdJdGVtcyk7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVj
dG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywg
T3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdJdGVtcyk7Ci0g
ICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdJdGVtcyk7CisgICAgdm9pZCBjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBzdGQ6Om9w
dGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMpOworICAg
IHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBu
ZXdTaGlwcGluZ01ldGhvZHMsIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPiBuZXdJdGVtcyk7CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24oc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5l
d0l0ZW1zKTsKICAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMpOwogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3JDbGllbnQuaAppbmRleCBmY2Y3ZTE5MTdjYWZmMGIwYTFjZWNjMjY1YzU4ZTQyZjYyZmJiZWM4
Li4zZDZlY2MwNzMwOTQxZmViYWYwNGJjZDQ4YTQ5NTI5ZGUzNzU4MmE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
IHsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRp
bmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFBheW1lbnRSZXF1
ZXN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihj
b25zdCBQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBP
cHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRl
bXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIE9wdGlvbmFsPFBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLCBjb25zdCBWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hp
cHBpbmdNZXRob2RzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcz4gbmV3VG90YWxBbmRJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oCmluZGV4IDhlNmM4ZDg1ZWY0OTdhOTU4ZDFlMzhkNzQ0ZTE5N2NiNThhN2ZmODQuLmE1YzZk
ZGRjZWMwMTVlYTJhOTdhODQyN2Y2YzhjYzgzMGNkNmQxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oCkBA
IC01NCw3ICs1NCw3IEBAIGNsYXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb24gewogICAgIHsKICAg
ICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZnJvbUpT
KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gZnJvbUpTKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAg
ICBQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uLmdldCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3QuaAppbmRleCA2
YWY5MmQzMDViODc0MmNlZTUyYjY3ZTUzNGRlODYyNjBiM2QwZTkyLi5lYzNlZTFmYWYzYjI2NTM4
ODFhY2M5NDNhMjM2YWY3NmZmNDczYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50UmVxdWVzdC5oCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFBheW1l
bnRSZXF1ZXN0IHsKICAgICAgICAgLy8gU3RvcmVkIGFzIGEgZml4ZWQgcG9pbnQgZGVjaW1hbCBu
dW1iZXIgd2l0aCB0d28gZGVjaW1hbHM6CiAgICAgICAgIC8vIDEuMjMgLT4gMTIzLgogICAgICAg
ICAvLyAwLjAxIC0+IDEuCi0gICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IGFtb3VudDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBhbW91bnQ7CiAgICAgICAgIFN0cmluZyBsYWJlbDsK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRDb250YWN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KaW5kZXggYTRjMDUzYmQ1NTBjYTkyMjg5
NjYyYmE3Nzk1MGFiOGQ0ZWViMTRiYS4uMTdjMjVjNzk0OWQ4YWU4MWU1YzNlMmNmMzJlMDJjOTMw
Mzk4Mjc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50Q29udGFjdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQpAQCAtMTA0LDIwICsxMDQsMjAgQEAg
c3RhdGljIFJldGFpblB0cjxQS0NvbnRhY3Q+IGZyb21EaWN0aW9uYXJ5KE5TRGljdGlvbmFyeSAq
ZGljdGlvbmFyeSwgU3RyaW5nJiBlcnIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1PcHRpb25h
bDxQYXltZW50Q29udGFjdD4gUGF5bWVudENvbnRhY3Q6OmZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCitzdGQ6Om9w
dGlvbmFsPFBheW1lbnRDb250YWN0PiBQYXltZW50Q29udGFjdDo6ZnJvbUpTKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsK
ICAgICAvLyBGSVhNRTogRG9uJ3Qgcm91bmQtdHJpcCB1c2luZyBOU1N0cmluZy4KICAgICBhdXRv
IGpzb25TdHJpbmcgPSBKU09OU3RyaW5naWZ5KCZzdGF0ZSwgdmFsdWUsIDApOwogICAgIGlmICgh
anNvblN0cmluZykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIGRpY3Rpb25hcnkgPSBkeW5hbWljX29iamNfY2FzdDxOU0Rp
Y3Rpb25hcnk+KFtOU0pTT05TZXJpYWxpemF0aW9uIEpTT05PYmplY3RXaXRoRGF0YTpbKE5TU3Ry
aW5nICopanNvblN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10g
b3B0aW9uczowIGVycm9yOm5pbF0pOwogICAgIGlmICghZGljdGlvbmFyeSB8fCAhW2RpY3Rpb25h
cnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwa0NvbnRh
Y3QgPSBmcm9tRGljdGlvbmFyeShkaWN0aW9uYXJ5LCBlcnJvck1lc3NhZ2UpOwogICAgIGlmICgh
cGtDb250YWN0KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBQYXltZW50Q29udGFjdChwa0NvbnRhY3QuZ2V0KCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQppbmRleCAzNDkxMmYwOTg0
MWQzN2RjNzhkMmE4ODA5Zjk4Mzg5NzA0OTZhOTAzLi4yZmJjNDE4NTMwNDIzNmQyODQ5YzkwNjg3
NjFlMjA3ZjQ5MjRlZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5t
bQpAQCAtNDIsMTYgKzQyLDE2IEBAIFNPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS1BheW1lbnRN
ZXJjaGFudFNlc3Npb24pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmKQorc3RkOjpvcHRpb25h
bDxQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFN0cmluZyYpCiB7CiAg
ICAgLy8gRklYTUU6IERvbid0IHJvdW5kLXRyaXAgdXNpbmcgTlNTdHJpbmcuCiAgICAgYXV0byBq
c29uU3RyaW5nID0gSlNPTlN0cmluZ2lmeSgmc3RhdGUsIHZhbHVlLCAwKTsKICAgICBpZiAoIWpz
b25TdHJpbmcpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBkaWN0aW9uYXJ5ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNEaWN0
aW9uYXJ5PihbTlNKU09OU2VyaWFsaXphdGlvbiBKU09OT2JqZWN0V2l0aERhdGE6WyhOU1N0cmlu
ZyAqKWpzb25TdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIG9w
dGlvbnM6MCBlcnJvcjpuaWxdKTsKICAgICBpZiAoIWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5
IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcGtQYXltZW50
TWVyY2hhbnRTZXNzaW9uID0gYWRvcHROUyhbYWxsb2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25J
bnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKaW5kZXggMzllMmE5ZTBiYTA2ZjhiMDEzMGUzNGE0YjgyNTJiYTU3OTQ4N2MwZC4u
M2ViNmI0Mzc5YTY2ZmQ3ZWNiZmQwMjIzNzBiOTU4NzMwNDNhNDRhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpJ
dGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYpCiB7CiB9CiAKLU9wdGlvbmFsPFdURjo6S2V5VmFs
dWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFL
ZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKK3N0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1
ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtl
eVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQoKQogewotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuaAppbmRleCBlOTJkMDdlM2JkMGM1NWQwMjkwNTdiMTZlZTk4OGI5ZWNmNWZkMjE5
Li42ZmQ0M2JjOGNhYzlkZGZiNmM2ZmI0NGQ0ZmFmMzM5YWRlOWQyMGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1
c01hcC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGlj
IFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKICAgICBjbGFzcyBJdGVyYXRvciB7CiAg
ICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYp
OwotICAgICAgICBPcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlh
bnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxX
VEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1
cz4+IG5leHQoKTsKICAgICB9OwogICAgIEl0ZXJhdG9yIGNyZWF0ZUl0ZXJhdG9yKCkgeyByZXR1
cm4gSXRlcmF0b3IoKnRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcAppbmRleCA4ZDAyYjEyMzA3YTQyMDY3NzQ2NWEzMjI0OWJmYmUzOGUxZTVjNDVl
Li4wMTM0MGNiMmRjODQwYzI3OGE1ODcyODA4NDY3NDdhOTFlYThkOTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00OCw3ICs0OCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmV4dHJh
Y3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFN0cmluZyYgY29udGVudFR5cGUpCitzdGQ6Om9wdGlvbmFs
PEZldGNoQm9keT4gRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQogewogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkp
IHsKICAgICAgICAgYXV0byYgYmxvYiA9ICpKU0Jsb2I6OnRvV3JhcHBlZCh2YWx1ZSk7CkBAIC04
MCw3ICs4MCw3IEBAIE9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6RXhlCiAgICAgaWYgKHZhbHVlLmluaGVy
aXRzKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBGZXRj
aEJvZHkodG9VbnNoYXJlZEFycmF5QnVmZmVyVmlldyh2YWx1ZSkucmVsZWFzZUNvbnN0Tm9uTnVs
bCgpKTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgRmV0Y2hCb2R5OjphcnJheUJ1ZmZlcihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5oCmluZGV4IDg3MTliM2UxYjViZWNmMGFjYjg5OWQzNmFhMTgwNjZlNGE3NTk2
ZDUuLjUyNzEyZmQxZjEzNDQ1MjY2NzNiNGE4MTY1OTM4MzI3MjUxZWZjOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBG
ZXRjaEJvZHkgewogICAgIGJvb2wgaXNVUkxTZWFyY2hQYXJhbXMoKSBjb25zdCB7IHJldHVybiBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxjb25zdCBVUkxTZWFyY2hQYXJhbXM+PihtX2RhdGEp
OyB9CiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKTsgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPEZldGNoQm9keT4g
ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUsIFN0cmluZyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gZXh0
cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUsIFN0cmluZyYpOwogICAgIHN0YXRpYyBGZXRjaEJvZHkgbG9hZGluZ0JvZHkoKSB7IHJldHVy
biB7IH07IH0KIAogICAgIHZvaWQgbG9hZGluZ0ZhaWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCA5ZjJhM2M3ZWUwZDk5ZTUx
MGE0MWRlZjhhODI1YTlkZWQxYjYxZmZiLi5lZTRlYWEyNzU3Y2M2YjcwZjgxNWI5NDdmMjM3NGZm
MTZhM2FjMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZl
dGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFk
ZXJzKQorRmV0Y2hCb2R5T3duZXI6OkZldGNoQm9keU93bmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhl
YWRlcnM+JiYgaGVhZGVycykKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAs
IG1fYm9keShXVEZNb3ZlKGJvZHkpKQogICAgICwgbV9oZWFkZXJzKFdURk1vdmUoaGVhZGVycykp
CkBAIC0xOTAsMTMgKzE5MCwxMyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25z
dCBCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX2Jsb2JMb2FkZXIgPSB7ICp0aGlzIH07CisgICAgbV9ibG9iTG9h
ZGVyLmVtcGxhY2UoKnRoaXMpOwogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAgICAgbV9i
bG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2Ip
OwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CiAgICAgICAg
IG1fYm9keS0+bG9hZGluZ0ZhaWxlZCgpOwotICAgICAgICBtX2Jsb2JMb2FkZXIgPSBOdWxsb3B0
OworICAgICAgICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwpAQCAtMjA2LDcgKzIwNiw3IEBA
IHZvaWQgRmV0Y2hCb2R5T3duZXI6OmZpbmlzaEJsb2JMb2FkaW5nKCkKIHsKICAgICBBU1NFUlQo
bV9ibG9iTG9hZGVyKTsKIAotICAgIG1fYmxvYkxvYWRlciA9IE51bGxvcHQ7CisgICAgbV9ibG9i
TG9hZGVyID0gc3RkOjpudWxsb3B0OwogICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5k
ZXggODVlZGU3OGUxMDA3YjEwNTdiY2VkMmMzNGQ4ZWM0YTI4YjBhODY3Yi4uM2E3NWQ0YmZmNDNh
MjM2ZTczYmUwNWMxNzU2OGI2YmVkNjFiNDQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZldGNoQm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hC
b2R5T3duZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBGZXRjaEJv
ZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBS
ZWY8RmV0Y2hIZWFkZXJzPiYmKTsKKyAgICBGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYp
OwogCiAgICAgLy8gRXhwb3NlZCBCb2R5IEFQSQogICAgIGJvb2wgaXNEaXN0dXJiZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRGlzdHVyYmVkOyB9OwpAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBGZXRj
aEJvZHlPd25lciA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoQm9keU93bmVyPiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdAogICAgIH07CiAKIHByb3RlY3RlZDoKLSAgICBPcHRpb25hbDxGZXRjaEJv
ZHk+IG1fYm9keTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4gbV9ib2R5OwogICAgIFN0
cmluZyBtX2NvbnRlbnRUeXBlOwogICAgIGJvb2wgbV9pc0Rpc3R1cmJlZCB7IGZhbHNlIH07CiAj
aWYgRU5BQkxFKFJFQURBQkxFX1NUUkVBTV9BUEkpCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3Mg
RmV0Y2hCb2R5T3duZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaEJvZHlPd25lcj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QKICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hlYWRlcnM7CiAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOworICAgIHN0ZDo6
b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhl
YWRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3Bw
CmluZGV4IDVmYzAzZTY4YzU0ZTAzOWNhMTEzYTc0ZGUzZmZjNTIyM2MxYWQ4YWUuLjZlMDc2NzRh
OWEzMzhjNWU0YzkzMjk5NmNhNTdkYTIxNjRhZmI2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEZl
dGNoSGVhZGVyczo6ZmlsdGVyQW5kRmlsbChjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBH
dWFyZCBndWFyZCkKICAgICB9CiB9CiAKLU9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmlu
ZywgU3RyaW5nPj4gRmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCgpCitzdGQ6Om9wdGlvbmFs
PFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gRmV0Y2hIZWFkZXJzOjpJdGVyYXRv
cjo6bmV4dCgpCiB7CiAgICAgd2hpbGUgKG1fY3VycmVudEluZGV4IDwgbV9rZXlzLnNpemUoKSkg
ewogICAgICAgICBhdXRvIGtleSA9IG1fa2V5c1ttX2N1cnJlbnRJbmRleCsrXTsKQEAgLTEzMSw3
ICsxMzEsNyBAQCBPcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZl
dGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgp
KQogICAgICAgICAgICAgcmV0dXJuIFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPiB7
IFdURk1vdmUoa2V5KSwgV1RGTW92ZSh2YWx1ZSkgfTsKICAgICB9Ci0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRmV0Y2hIZWFkZXJzOjpJdGVyYXRv
cjo6SXRlcmF0b3IoRmV0Y2hIZWFkZXJzJiBoZWFkZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKaW5kZXggYzNlMDZiN2Y2ZTcyNmIwZWFmMTM1YjJlN2Fk
MjRjMTUwNGM4MjNhZS4uN2Y2NGVkMTFhMjMxNDViYWRiMjgxYTM4MmU5OGY0YjViYWNkMjQwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCkBAIC02NCw3
ICs2NCw3IEBAIGNsYXNzIEZldGNoSGVhZGVycyA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoSGVh
ZGVycz4gewogICAgIGNsYXNzIEl0ZXJhdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IEl0ZXJhdG9yKEZldGNoSGVhZGVycyYpOwotICAgICAgICBPcHRpb25hbDxXVEY6OktleVZh
bHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxX
VEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IG5leHQoKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCA1MTkwMDE3MjZmZWY4ZWIyNDlh
OTRlMmVhMDdhM2VmMDhjNWEyZjJlLi5hZDE5ODA1ZGNiOTk4ZDM5ZGE0OGZlNTdiZmJlNjM5MDQ5
OWZmNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
Y3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9w
dGlvbmFsPEV4Y2VwdGlvbj4gc2V0UmVmZXJyZXJQb2xpY3koRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhj
ZXB0aW9uPiBzZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7CiAgICAgaWYgKHJlZmVycmVyUG9saWN5LmlzRW1wdHko
KSkKICAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwpAQCAtNTUsMTAgKzU1LDEwIEBAIHN0YXRpYyBPcHRpb25h
bDxFeGNlcHRpb24+IHNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgU3RyaW5nCiAgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9wdGlvbnM6
OlJlZmVycmVyUG9saWN5OjpVbnNhZmVVcmw7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkJhZCByZWZlcnJlciBwb2xpY3kgdmFs
dWUuIikgfTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRNb2RlKEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgU3RyaW5nJiBtb2RlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9u
PiBzZXRNb2RlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBtb2RlKQogewog
ICAgIGlmIChtb2RlID09ICJuYXZpZ2F0ZSIpCiAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNo
T3B0aW9uczo6TW9kZTo6TmF2aWdhdGU7CkBAIC03MCwxMCArNzAsMTAgQEAgc3RhdGljIE9wdGlv
bmFsPEV4Y2VwdGlvbj4gc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3Jz
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJCYWQgZmV0Y2ggbW9kZSB2YWx1ZS4iKSB9OwotICAgIHJldHVybiBOdWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+
IHNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjcmVk
ZW50aWFscykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0Q3JlZGVudGlhbHMo
RmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxzKQogewogICAg
IGlmIChjcmVkZW50aWFscyA9PSAib21pdCIpCiAgICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMg
PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0OwpAQCAtODMsMTAgKzgzLDEwIEBAIHN0
YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBGZXRj
aE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJCYWQgY3JlZGVudGlhbHMgbW9k
ZSB2YWx1ZS4iKSB9OwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldENhY2hlKEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbj4gc2V0Q2FjaGUoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIGNh
Y2hlKQogewogICAgIGlmIChjYWNoZSA9PSAiZGVmYXVsdCIpCiAgICAgICAgIG9wdGlvbnMuY2Fj
aGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0OwpAQCAtMTAyLDEwICsxMDIsMTAgQEAg
c3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0Q2FjaGUoRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBjb25zdCBTdHJpbmcmIGNhY2hlKQogICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRp
b25zOjpDYWNoZTo6T25seUlmQ2FjaGVkOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJCYWQgY2FjaGUgbW9kZSB2YWx1ZS4iKSB9
OwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZGlyZWN0KEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgU3RyaW5nJiByZWRpcmVjdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4gc2V0UmVkaXJlY3QoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZGly
ZWN0KQogewogICAgIGlmIChyZWRpcmVjdCA9PSAiZm9sbG93IikKICAgICAgICAgb3B0aW9ucy5y
ZWRpcmVjdCA9IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkZvbGxvdzsKQEAgLTExNSwxMCArMTE1
LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZGlyZWN0KEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWRpCiAgICAgICAgIG9wdGlvbnMucmVkaXJlY3Qg
PSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpNYW51YWw7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkJhZCByZWRpcmVjdCBtb2Rl
IHZhbHVlLiIpIH07Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TWV0aG9kKFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbml0TWV0aG9kKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RXhjZXB0aW9uPiBzZXRNZXRob2QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIGluaXRNZXRob2QpCiB7CiAgICAgaWYgKCFpc1ZhbGlkSFRUUFRva2VuKGluaXRN
ZXRob2QpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVy
YWwoIk1ldGhvZCBpcyBub3QgYSB2YWxpZCBIVFRQIHRva2VuLiIpIH07CkBAIC0xMjksMTcgKzEy
OSwxNyBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRNZXRob2QoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGluaQogCiAgICAgcmVxdWVzdC5zZXRIVFRQTWV0
aG9kKChtZXRob2QgPT0gIkRFTEVURSIgfHwgbWV0aG9kID09ICJHRVQiIHx8IG1ldGhvZCA9PSAi
SEVBRCIgfHwgbWV0aG9kID09ICJPUFRJT05TIiB8fCBtZXRob2QgPT0gIlBPU1QiIHx8IG1ldGhv
ZCA9PSAiUFVUIikgPyBtZXRob2QgOiBpbml0TWV0aG9kKTsKIAotICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRp
b24+IHNldFJlZmVycmVyKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiByZXF1ZXN0LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0KQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWZlcnJlcihGZXRjaFJlcXVlc3Q6
OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKIHsKICAgICBTdHJpbmcgcmVmZXJyZXI7CiAgICAg
aWYgKCFpbml0LmdldCgicmVmZXJyZXIiLCByZWZlcnJlcikpCi0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChyZWZlcnJlci5pc0Vt
cHR5KCkpIHsKICAgICAgICAgcmVxdWVzdC5yZWZlcnJlciA9IEFTQ0lJTGl0ZXJhbCgibm8tcmVm
ZXJyZXIiKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogICAgIC8vIEZJWE1FOiBUaWdodGVuIHRoZSBVUkwgcGFyc2luZyBhbGdv
cml0aG0gYWNjb3JkaW5nIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwt
cGFyc2VyLgogICAgIFVSTCByZWZlcnJlclVSTCA9IGNvbnRleHQuY29tcGxldGVVUkwocmVmZXJy
ZXIpOwpAQCAtMTQ4LDE3ICsxNDgsMTcgQEAgc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0
UmVmZXJyZXIoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIFMKIAogICAg
IGlmIChyZWZlcnJlclVSTC5wcm90b2NvbElzKCJhYm91dCIpICYmIHJlZmVycmVyVVJMLnBhdGgo
KSA9PSAiY2xpZW50IikgewogICAgICAgICByZXF1ZXN0LnJlZmVycmVyID0gQVNDSUlMaXRlcmFs
KCJjbGllbnQiKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKCEoY29udGV4dC5zZWN1cml0eU9yaWdpbigpICYm
IGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZWZlcnJlclVSTCkpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIlJlZmVycmVy
IGlzIG5vdCBzYW1lLW9yaWdpbi4iKSB9OwogCiAgICAgcmVxdWVzdC5yZWZlcnJlciA9IHJlZmVy
cmVyVVJMLnN0cmluZygpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRj
aFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4gYnVpbGRPcHRpb25zKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiBy
ZXF1ZXN0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5
JiBpbml0KQogewogICAgIEpTQzo6SlNWYWx1ZSB3aW5kb3c7CiAgICAgaWYgKGluaXQuZ2V0KCJ3
aW5kb3ciLCB3aW5kb3cpKSB7CkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIE9wdGlvbmFsPEV4
Y2VwdGlvbj4gYnVpbGRPcHRpb25zKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiByZXF1
ZXN0LAogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlv
bjsKICAgICB9Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogc3RhdGljIGJvb2wgbWV0aG9kQ2FuSGF2ZUJvZHkoY29uc3QgRmV0Y2hSZXF1ZXN0OjpJ
bnRlcm5hbFJlcXVlc3QmIGludGVybmFsUmVxdWVzdCkKQEAgLTMyMCw3ICszMjAsNyBAQCBFeGNl
cHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZQogICAgIGlmIChpc0Rpc3R1cmJlZE9yTG9ja2VkKCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIAotICAgIGF1dG8gY2xvbmUgPSBh
ZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBOdWxsb3B0LCBGZXRjaEhlYWRlcnM6
OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkpLCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCht
X2ludGVybmFsUmVxdWVzdCkpKTsKKyAgICBhdXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBGZXRj
aFJlcXVlc3QoY29udGV4dCwgc3RkOjpudWxsb3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hl
YWRlcnMuZ2V0KCkpLCBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdChtX2ludGVybmFsUmVx
dWVzdCkpKTsKICAgICBjbG9uZS0+Y2xvbmVCb2R5KCp0aGlzKTsKICAgICByZXR1cm4gV1RGTW92
ZShjbG9uZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
aAppbmRleCBiNzYyNjVhNjQxZjMxMGY0NzUzNDg0NzM3ZjI0NGE4NjFkMWVkNmRmLi45NmZhOTUx
ZjIzZWY4NDA2MmI1ODU0Zjc4YzllOGM0OWZkMTE2NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRmV0Y2hSZXF1ZXN0IGZpbmFsIDogcHVibGljIEZl
dGNoQm9keU93bmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVxdWVzdD4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIE51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZl
dGNoSGVhZGVyczo6R3VhcmQ6OlJlcXVlc3QpLCB7IH0pKTsgfQorICAgIHN0YXRpYyBSZWY8RmV0
Y2hSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgc3RkOjpudWxsb3B0LCBGZXRj
aEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXF1ZXN0KSwgeyB9KSk7IH0K
IAogICAgIEV4Y2VwdGlvbk9yPEZldGNoSGVhZGVycyY+IGluaXRpYWxpemVXaXRoKEZldGNoUmVx
dWVzdCYsIGNvbnN0IERpY3Rpb25hcnkmKTsKICAgICBFeGNlcHRpb25PcjxGZXRjaEhlYWRlcnMm
PiBpbml0aWFsaXplV2l0aChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5Jik7CkBAIC05
Myw3ICs5Myw3IEBAIGNsYXNzIEZldGNoUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlP
d25lciB7CiAgICAgY29uc3QgU3RyaW5nJiBpbnRlcm5hbFJlcXVlc3RSZWZlcnJlcigpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVyOyB9CiAKIHByaXZhdGU6Ci0gICAg
RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRjaEJvZHk+
JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIEludGVybmFsUmVxdWVzdCYmKTsKKyAgICBGZXRjaFJl
cXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYm
LCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBJbnRlcm5hbFJlcXVlc3QmJik7CiAKICAgICBFeGNlcHRp
b25PcjxGZXRjaEhlYWRlcnMmPiBpbml0aWFsaXplT3B0aW9ucyhjb25zdCBEaWN0aW9uYXJ5Jik7
CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBGZXRjaFJlcXVlc3QgZmluYWwgOiBwdWJsaWMg
RmV0Y2hCb2R5T3duZXIgewogICAgIG11dGFibGUgU3RyaW5nIG1fcmVxdWVzdFVSTDsKIH07CiAK
LWlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4m
JiBoZWFkZXJzLCBJbnRlcm5hbFJlcXVlc3QmJiBpbnRlcm5hbFJlcXVlc3QpCitpbmxpbmUgRmV0
Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
c3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFk
ZXJzLCBJbnRlcm5hbFJlcXVlc3QmJiBpbnRlcm5hbFJlcXVlc3QpCiAgICAgOiBGZXRjaEJvZHlP
d25lcihjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQogICAgICwgbV9p
bnRlcm5hbFJlcXVlc3QoV1RGTW92ZShpbnRlcm5hbFJlcXVlc3QpKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMDJlMzEzNTBmMjZl
MGM5YjE4NTI0Y2Q0MjQ5ZGJiODY3MjQyNzY5Ny4uMzVmYjA4YmMzYzBhMDE1MTVhNWY2ODM1NWVh
NTg5YWY3YTYxNWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6aW5pdGlh
bGl6ZVdpdGgoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNDOjpKU1ZhbHVlIGJvZHkpCiAg
ICAgdXBkYXRlQ29udGVudFR5cGUoKTsKIH0KIAotRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25z
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYg
Ym9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UpCitGZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhl
YWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogICAgIDogRmV0
Y2hCb2R5T3duZXIoY29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShoZWFkZXJzKSkKICAg
ICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiB7CkBAIC05Myw3ICs5Myw3IEBAIFJl
ZjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZUZvckpTKCkKICAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIWlzRGlzdHVyYmVkT3JMb2Nr
ZWQoKSk7CiAKLSAgICBhdXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIE51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhl
YWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkpKTsKKyAgICBhdXRvIGNsb25l
ID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVhZGVycygpKSwgUmVzb3VyY2VS
ZXNwb25zZShtX3Jlc3BvbnNlKSkpOwogICAgIGNsb25lLT5jbG9uZUJvZHkoKnRoaXMpOwogICAg
IHJldHVybiBjbG9uZTsKIH0KQEAgLTEwNSw5ICsxMDUsOSBAQCB2b2lkIEZldGNoUmVzcG9uc2U6
OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVx
dWVzdAogICAgIC8vIFNldHRpbmcgcGVuZGluZyBhY3Rpdml0eSB1bnRpbCBCb2R5TG9hZGVyIGRp
ZEZhaWwgb3IgZGlkU3VjY2VlZCBjYWxsYmFjayBpcyBjYWxsZWQuCiAgICAgcmVzcG9uc2UtPnNl
dFBlbmRpbmdBY3Rpdml0eShyZXNwb25zZS5wdHIoKSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5
TG9hZGVyID0gQm9keUxvYWRlcihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlci5lbXBsYWNlKHJlc3BvbnNlLmdldCgpLCBXVEZNb3Zl
KHByb21pc2UpKTsKICAgICBpZiAoIXJlc3BvbnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRl
eHQsIHJlcXVlc3QpKQotICAgICAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gTnVsbG9wdDsK
KyAgICAgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogY29u
c3QgU3RyaW5nJiBGZXRjaFJlc3BvbnNlOjp1cmwoKSBjb25zdApAQCAtMTI4LDcgKzEyOCw3IEBA
IHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2VlZCgpCiAjZW5kaWYKIAog
ICAgIGlmIChtX2xvYWRlci0+aXNTdGFydGVkKCkpCi0gICAgICAgIG1fcmVzcG9uc2UubV9ib2R5
TG9hZGVyID0gTnVsbG9wdDsKKyAgICAgICAgbV9yZXNwb25zZS5tX2JvZHlMb2FkZXIgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgbV9yZXNwb25zZS51bnNldFBlbmRpbmdBY3Rpdml0eSgmbV9yZXNwb25z
ZSk7CiB9CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZEZhaWwoKQogewogICAgIEFTU0VSVChtX3Jlc3BvbnNlLmhhc1BlbmRpbmdBY3Rpdml0
eSgpKTsKICAgICBpZiAobV9wcm9taXNlKQotICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlz
ZSwgTnVsbG9wdCktPnJlamVjdChUeXBlRXJyb3IpOworICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1f
cHJvbWlzZSwgc3RkOjpudWxsb3B0KS0+cmVqZWN0KFR5cGVFcnJvcik7CiAKICNpZiBFTkFCTEUo
UkVBREFCTEVfU1RSRUFNX0FQSSkKICAgICBpZiAobV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFt
U291cmNlKSB7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRGYWlsKCkKIAogICAgIC8vIENoZWNrIHdoZXRoZXIgZGlkRmFpbCBpcyBjYWxsZWQg
YXMgcGFydCBvZiBGZXRjaExvYWRlcjo6c3RhcnQuCiAgICAgaWYgKG1fbG9hZGVyLT5pc1N0YXJ0
ZWQoKSkKLSAgICAgICAgbV9yZXNwb25zZS5tX2JvZHlMb2FkZXIgPSBOdWxsb3B0OworICAgICAg
ICBtX3Jlc3BvbnNlLm1fYm9keUxvYWRlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIG1fcmVzcG9u
c2UudW5zZXRQZW5kaW5nQWN0aXZpdHkoJm1fcmVzcG9uc2UpOwogfQpAQCAtMTY2LDcgKzE2Niw3
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc291CiAgICAgbV9yZXNwb25zZS5tX3Jlc3BvbnNlID0g
cmVzb3VyY2VSZXNwb25zZTsKICAgICBtX3Jlc3BvbnNlLm1faGVhZGVycy0+ZmlsdGVyQW5kRmls
bChyZXNvdXJjZVJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSwgRmV0Y2hIZWFkZXJzOjpHdWFy
ZDo6UmVzcG9uc2UpOwogCi0gICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5y
ZXNvbHZlKG1fcmVzcG9uc2UpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51
bGxvcHQpLT5yZXNvbHZlKG1fcmVzcG9uc2UpOwogfQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQpA
QCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0CiAKIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RvcCgpCiB7Ci0gICAgbV9wcm9taXNlID0gTnVsbG9wdDsK
KyAgICBtX3Byb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1fbG9hZGVyKQogICAgICAg
ICBtX2xvYWRlci0+c3RvcCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaAppbmRleCBhZTFlNzQ0ZTU0ZDBiOTRjZWE4YTRkNDAxOWNjMDQ1ODc4ZGNl
OTQ3Li42YTZlNjdhMmI1NmUwZDZlZWY1NzVjMjZiN2JmMDJkZTk5ZThlNjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNDksNyArNDksNyBA
QCBjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGljIEZldGNoQm9keU93bmVyIHsKIHB1
YmxpYzoKICAgICB1c2luZyBUeXBlID0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTsKIAotICAgIHN0
YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBOdWxs
b3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSks
IFJlc291cmNlUmVzcG9uc2UoKSkpOyB9CisgICAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpj
cmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJjZVJlc3BvbnNlKCkp
KTsgfQogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXNwb25zZT4+IHJl
ZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0
YXR1cyk7CiAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6IHB1
YmxpYyBGZXRjaEJvZHlPd25lciB7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVy
biAhIW1fYm9keUxvYWRlcjsgfQogCiBwcml2YXRlOgotICAgIEZldGNoUmVzcG9uc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVy
cz4mJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVy
cz4mJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKIAogICAgIHN0YXRpYyB2b2lkIHN0YXJ0RmV0Y2hp
bmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIEZldGNoUHJv
bWlzZSYmKTsKIApAQCAtMTE3LDEyICsxMTcsMTIgQEAgY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5h
bCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgY2hhciosIHNpemVfdCkgZmluYWw7CiAKICAgICAgICAgRmV0Y2hSZXNwb25zZSYgbV9y
ZXNwb25zZTsKLSAgICAgICAgT3B0aW9uYWw8RmV0Y2hQcm9taXNlPiBtX3Byb21pc2U7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8RmV0Y2hQcm9taXNlPiBtX3Byb21pc2U7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxGZXRjaExvYWRlcj4gbV9sb2FkZXI7CiAgICAgfTsKIAogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBPcHRpb25hbDxCb2R5TG9hZGVyPiBtX2JvZHlMb2Fk
ZXI7CisgICAgc3RkOjpvcHRpb25hbDxCb2R5TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9yZXNwb25zZVVSTDsKIAogICAgIEZldGNoQm9keUNvbnN1bWVyIG1fY29u
c3VtZXIgeyBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCmluZGV4
IGJiYzc2YzdkZDNkOWQyNzBjNDVmMGRlNDhhZGYwMWI0NmUxZWJmZmIuLjg5ODFmYjU1ZTE1NzNk
ZGJkZTA1ZjhlM2FhMGVlMDIzNWQxYjllNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwCkBAIC0yOCwzMSArMjgsMzEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1PcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRp
dHVkZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRl
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbV9h
bHRpdHVkZTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBDb29yZGluYXRlczo6YWx0aXR1ZGVBY2N1
cmFjeSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRl
QWNjdXJhY3koKSBjb25zdAogewogICAgIGlmICghbV9jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFj
eSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBD
b29yZGluYXRlczo6aGVhZGluZygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ29vcmRp
bmF0ZXM6OmhlYWRpbmcoKSBjb25zdAogewogICAgIGlmICghbV9jYW5Qcm92aWRlSGVhZGluZykK
LSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIG1faGVhZGluZzsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBDb29yZGluYXRlczo6
c3BlZWQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpzcGVlZCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhblByb3ZpZGVTcGVlZCkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fc3BlZWQ7
CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmgKaW5kZXggODNiYWFjOWU3YWFiYmVkYTY0OTliMWU2NjM3Y2FkOTRmMzQwYzgyZS4u
MDhjMzEzYjE4YTc5MmE2NTNjZDQ3ZmE3ZTZiZDlhZjI3MzA0Njg2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuaApAQCAtNDIsMTEgKzQy
LDExIEBAIGNsYXNzIENvb3JkaW5hdGVzIDogcHVibGljIFJlZkNvdW50ZWQ8Q29vcmRpbmF0ZXM+
IHsKIAogICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF0aXR1ZGU7IH0K
ICAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sb25naXR1ZGU7IH0KLSAg
ICBPcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGFsdGl0dWRlKCkgY29uc3Q7CiAgICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9hY2N1cmFjeTsgfQotICAgIE9wdGlvbmFsPGRvdWJsZT4gYWx0aXR1ZGVBY2N1cmFj
eSgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0OwotICAgIE9w
dGlvbmFsPGRvdWJsZT4gc3BlZWQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
YWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBoZWFk
aW5nKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3Q7CiAg
ICAgCiBwcml2YXRlOgogICAgIENvb3JkaW5hdGVzKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxv
bmdpdHVkZSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBh
Y2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFj
Y3VyYWN5LCBib29sIHByb3ZpZGVzSGVhZGluZywgZG91YmxlIGhlYWRpbmcsIGJvb2wgcHJvdmlk
ZXNTcGVlZCwgZG91YmxlIHNwZWVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggZTNhNWFiZGQ0NjBmYWEzZDAxZWMyZTQzNjVhMjVkYzhm
NmRjNzhkZC4uZmYyYzIxOThmN2Q2YTg0NzE4NGUyNDczYzNhYzI2YmU1ODIwOWM4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb25QcmV2VW5p
cXVlKCkKICAgICByZXR1cm4gcHJldnVuaXF1ZTsKIH0KIAotT3B0aW9uYWw8SW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24+IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb25TdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uPiBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
U3RyaW5nKQogewogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gZGlyZWN0aW9uTmV4dCgpKQog
ICAgICAgICByZXR1cm4gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5leHQ7CkBAIC04Myw3
ICs4Myw3IEBAIE9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPiBJREJDdXJzb3I6
OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5n
ID09IGRpcmVjdGlvblByZXZVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uOjpQcmV2Tm9EdXBsaWNhdGU7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNv
cjo6ZGlyZWN0aW9uVG9TdHJpbmcoSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAppbmRleCBk
MDE3NmRlYjUxOTIzM2YxNjlmYzAzNGEwNzBjMTAwZjcwOTRmM2M5Li5jZjIwMjc0ZTlmNzI3N2Qy
NWViOGMwNzM5ZTUwMGMzMTU5YWNmNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBJREJDdXJzb3IgOiBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJREJDdXJzb3I+LCBwdWJs
aWMgQQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblByZXYoKTsKICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25QcmV2VW5pcXVlKCk7CiAKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24+IHN0cmluZ1RvRGly
ZWN0aW9uKGNvbnN0IFN0cmluZyYgbW9kZVN0cmluZyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24+IHN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0
cmluZyYgbW9kZVN0cmluZyk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0
aW9uVG9TdHJpbmcoSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gbW9kZSk7CiAgICAgCiAgICAg
dmlydHVhbCB+SURCQ3Vyc29yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaAppbmRleCBjMDQ0ZDRlOTk4OTczNTU3OWExNmIzNWE2ZTcyZGJlZTQ3
MmM5NWEyLi40MjQ1NDdkMDE3OWExNzgzMWNkNWFiMjhmMDllMmU3NDQwYjRkNjA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTU4LDcg
KzU4LDcgQEAgY2xhc3MgSURCRGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
SURCRGF0YWJhc2U+LCBwdWJsaWMgRXZlbnRUYXJnZXQKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAgc3RydWN0IE9iamVjdFN0b3JlUGFy
YW1ldGVycyB7Ci0gICAgICAgIE9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4ga2V5UGF0aDsKICAgICAgICAgYm9vbCBhdXRvSW5j
cmVtZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggOWNmZjdhMmNlZGQ3YTZkNzg5
ODQ5YWNlMmIxOGI3ZDQ2ZGUzMTkwNi4uZGQ5ZjE0ZmZhMTQ5MzYxMWQwMTY2MWJjYTdhN2Y4ODky
OTdhYmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgSURCRGF0
YWJhc2VJZGVudGlmaWVyIHsKICAgICAgICAgdW5zaWduZWQgbWFpbkZyYW1lUHJvdG9jb2xIYXNo
ID0gU3RyaW5nSGFzaDo6aGFzaChtX21haW5GcmFtZU9yaWdpbi5wcm90b2NvbCk7CiAgICAgICAg
IHVuc2lnbmVkIG1haW5GcmFtZUhvc3RIYXNoID0gU3RyaW5nSGFzaDo6aGFzaChtX21haW5GcmFt
ZU9yaWdpbi5ob3N0KTsKICAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s3XSA9
IHsgbmFtZUhhc2gsIG9wZW5pbmdQcm90b2NvbEhhc2gsIG9wZW5pbmdIb3N0SGFzaCwgbV9vcGVu
aW5nT3JpZ2luLnBvcnQudmFsdWVPcigwKSwgbWFpbkZyYW1lUHJvdG9jb2xIYXNoLCBtYWluRnJh
bWVIb3N0SGFzaCwgbV9tYWluRnJhbWVPcmlnaW4ucG9ydC52YWx1ZU9yKDApIH07CisgICAgICAg
IHVuc2lnbmVkIGhhc2hDb2Rlc1s3XSA9IHsgbmFtZUhhc2gsIG9wZW5pbmdQcm90b2NvbEhhc2gs
IG9wZW5pbmdIb3N0SGFzaCwgbV9vcGVuaW5nT3JpZ2luLnBvcnQudmFsdWVfb3IoMCksIG1haW5G
cmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1lSG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBv
cnQudmFsdWVfb3IoMCkgfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9y
eTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggMWM0NDBiOGE2NmNh
NmRjMDUwZDEyY2MxMTk2NWE2ODEwNjI2OGU5OS4uNzhjMTg4YjUyMDEwN2I4MWZjMDA1NDVlMjJk
ZDdlMjUyMTQ2NzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKQEAgLTc2LDE0ICs3NiwxNCBAQCBJREJGYWN0b3J5Ojp+SURCRmFjdG9y
eSgpCiB7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9y
eTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIE9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKQorRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5E
QlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbikK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRmFjdG9yeTo6b3BlbiIpOwogICAgIAogICAgIGlm
ICh2ZXJzaW9uICYmICF2ZXJzaW9uLnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdpdGgg
YSB2ZXJzaW9uIG9mIDAiKSB9OwogCi0gICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBu
YW1lLCB2ZXJzaW9uLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4
dCwgbmFtZSwgdmVyc2lvbi52YWx1ZV9vcigwKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJP
cGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZl
cnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgK
aW5kZXggMjcyNjc0Mzc2NjllYjA1MGUwYjQwNTc1MmQwYzg3MjMwNDg4MGIzMC4uNzM0ZjIwYzBl
YjI0YTBhZGU4NDYyNWExOTc5NDdmYWEyYzNkOTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBJREJG
YWN0b3J5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkZhY3Rvcnk+IHsKICAgICBz
dGF0aWMgUmVmPElEQkZhY3Rvcnk+IGNyZWF0ZShJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSYpOwogICAgIH5JREJGYWN0b3J5KCk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRC
UmVxdWVzdD4+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgT3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb24pOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJP
cGVuREJSZXF1ZXN0Pj4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKTsKICAgICBFeGNlcHRpb25P
cjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgRXhjZXB0aW9uT3I8c2hvcnQ+IGNt
cChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmaXJzdCwgSlNDOjpKU1ZhbHVlIHNlY29u
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5k
ZXggNTI3YmJhOWYyYjAzNjhlZmJkNDk5MzI3ODAzY2M2OTg4NmY3NGRlMC4uNmEwOGNkOTQ0Zjli
ZjJmYzFlYTc1OWM5MTM2OWE3MzUxZThhNWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRl
LCBjb25zdCBJREJLCiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRLZXkoZXhlY1N0
YXRlLCAqdGhpcywgcmFuZ2UpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
QkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktl
eVJhbmdlPiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRBbGwiKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVh
ZElEKCkpOwpAQCAtMzM1LDcgKzMzNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4g
SURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktlCiAgICAg
cmV0dXJuIG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5yZXF1ZXN0R2V0QWxsSW5kZXhSZWNv
cmRzKGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlLmdldCgpLCBJbmRleGVkREI6OkdldEFsbFR5cGU6
OlZhbHVlcywgY291bnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQklu
ZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBPcHRpb25hbDx1
aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpn
ZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCkKIHsKICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25s
eShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBA
IC0zNDQsNyArMzQ0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6
Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwKICAgICByZXR1cm4gZ2V0
QWxsKGV4ZWNTdGF0ZSwgb25seVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY291bnQpOwog
fQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBPcHRpb25hbDx1
aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpn
ZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAi
SURCSW5kZXg6OmdldEFsbEtleXMiKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwpA
QCAtMzU4LDcgKzM1OCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6
OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJCiAgICAgcmV0dXJuIG1f
b2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5yZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKGV4ZWNT
dGF0ZSwgKnRoaXMsIHJhbmdlLmdldCgpLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNv
dW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxs
S2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtl
eXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCkKIHsKICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seShl
eGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCAwZWIxYjllNGMw
MmI3OTEwYjk1MjI5NGQwYmVlYWY1ZmYyZWVhZWQ3Li5lZDhjZDY1YzliNWE4NzljYTY5OWM5ZDYw
MzIxN2E5NTg2M2I1ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmgKQEAgLTcwLDEwICs3MCwxMCBAQCBjbGFzcyBJREJJbmRleCBmaW5hbCA6IHByaXZh
dGUgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdl
dEtleShKU0M6OkV4ZWNTdGF0ZSYsIElEQktleVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5KTsK
IAotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRl
JiwgUmVmUHRyPElEQktleVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktl
eVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5
LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0
QWxsS2V5cyhKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdl
dEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCk7CiAKICAgICBjb25zdCBJREJJbmRleEluZm8mIGluZm8oKSBjb25z
dCB7IHJldHVybiBtX2luZm87IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aC5oCmluZGV4IGU2ZmFhMTk1NmM5MzYzN2JmYzZjMTIyZTAwOGJiOTFjNzU5
OWUwYzcuLjdjM2YwMjE2ZTA0Y2Q3MjliNWFiNmM4NWFjNDJhYjU1YTFmOTI1ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgZW51bSBjbGFzcyBJREJLZXlQYXRoUGFyc2VFcnJvciB7CiAKIHZvaWQgSURCUGFyc2VL
ZXlQYXRoKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JiwgSURCS2V5UGF0aFBhcnNlRXJy
b3ImKTsKIElEQktleVBhdGggaXNvbGF0ZWRDb3B5KGNvbnN0IElEQktleVBhdGgmKTsKLWlubGlu
ZSBPcHRpb25hbDxJREJLZXlQYXRoPiBpc29sYXRlZENvcHkoY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0aD4mIHZhcmlhbnQpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBpc29sYXRl
ZENvcHkoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgdmFyaWFudCkKIHsKICAgICBp
ZiAoIXZhcmlhbnQpCiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNGY5YzQ5NTZiZmZi
ZWRiMzQ3YTI4YjY4MjNiYWVmMjhhNzAwOTUwMy4uZjU2ODRlOGYxMjEwYjVmYzQ4Yzk2ZjkzOGUz
MjFiNmM2N2M3ZGZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IElEQk9iamVjdFN0b3JlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1
cm4geyB9OwogfQogCi1jb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2JqZWN0U3RvcmU6
OmtleVBhdGgoKSBjb25zdAorY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgSURCT2Jq
ZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkg
PT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwogICAgIHJldHVy
biBtX2luZm8ua2V5UGF0aCgpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmRvQ291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IGNvbnN0CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdENvdW50KGV4ZWNTdGF0ZSwg
KnRoaXMsIHJhbmdlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+
IHJhbmdlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0
cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Z2V0QWxsIik7CiAgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CkBAIC01NTUsNyArNTU1LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHIKICAgICBy
ZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGV4ZWNT
dGF0ZSwgKnRoaXMsIHJhbmdlLmdldCgpLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OlZhbHVlcywg
Y291bnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50
MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3Jl
OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6
b25seShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CkBAIC01NjQsNyArNTY0LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHUKICAgICByZXR1cm4g
Z2V0QWxsKGV4ZWNTdGF0ZSwgb25seVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY291bnQp
OwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpnZXRB
bGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBP
cHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
Qk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURC
S2V5UmFuZ2U+IHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMiKTsKICAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJ
RCgpKTsKQEAgLTU3OCw3ICs1NzgsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElE
Qk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZQogICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoZXhlY1N0
YXRlLCAqdGhpcywgcmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cywgY291
bnQpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpn
ZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWlu
dDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9y
ZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIGF1dG8gb25seVJlc3VsdCA9IElEQktleVJh
bmdlOjpvbmx5KGV4ZWNTdGF0ZSwga2V5KTsKICAgICBpZiAob25seVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5oCmluZGV4IDY0MDY5M2QwOTdkYTUyOGJkNmJlOTBlODVlZTM3NDdmYWI4MzExZTQuLjA4
MTcwMGIxMjc4NzZiMGU0OGE2OWZhMDYyM2VhNDg3NTBkNWMyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtNjEsNyArNjEs
NyBAQCBjbGFzcyBJREJPYmplY3RTdG9yZSBmaW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCgpIGNvbnN0OworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
IGtleVBhdGgoKSBjb25zdDsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygp
IGNvbnN0OwogICAgIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbigpOwogICAgIGJvb2wgYXV0
b0luY3JlbWVudCgpIGNvbnN0OwpAQCAtODcsMTAgKzg3LDEwIEBAIGNsYXNzIElEQk9iamVjdFN0
b3JlIGZpbmFsIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IGNvdW50KEpTQzo6RXhlY1N0YXRlJiwgSURCS2V5UmFuZ2UqKTsKICAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGNvdW50KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlIGtleSk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlND
OjpFeGVjU3RhdGUmLCBSZWZQdHI8SURCS2V5UmFuZ2U+LCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBS
ZWZQdHI8SURCS2V5UmFuZ2U+LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpFeGVjU3RhdGUmLCBSZWZQdHI8SURCS2V5UmFu
Z2U+LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVm
PElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKIAogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gcHV0Rm9yQ3Vyc29yVXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUga2V5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDM4ZGVjZDUzYjlhYjA4MTJlYjgwOWY1
ZmJiM2I2YmRhMWVjOGIwMWEuLmI4MzI2YWZkMzIzMDQ2MTI2YTQzNTNlNTQ0OTdhYjBiZTE5NTc3
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRJ
dGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdQog
ICAgIHJlcXVlc3QuZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKIH0KIAotUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNv
cmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBl
IGdldEFsbFR5cGUsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMiKTsKICAgICBBU1NF
UlQoaXNBY3RpdmUoKSk7CkBAIC03NzQsNyArNzc0LDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRl
JgogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJREJJ
bmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVk
REI6OkdldEFsbFR5cGUgZ2V0QWxsVHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorUmVm
PElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyIpOwogICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCmluZGV4IDU2YTJhZTgwODE2NTVjMTg0Njg5MTUzMWRiZTg2Mzg4N2E3NWE2ODYuLmZm
MThkODkxNTY0NDI1YTJmZmVmZDY4ZWE4NGVlOGI3MGQ1NTFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMTE1LDggKzEx
NSw4IEBAIGNsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PElEQlRyYW5zYWN0aW9uPiwgcHVibGljIEV2ZW50CiAKICAgICBSZWY8SURCUmVxdWVzdD4gcmVx
dWVzdFB1dE9yQWRkKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBJREJLZXkqLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoSlNDOjpFeGVjU3RhdGUm
LCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKLSAgICBSZWY8SURC
UmVxdWVzdD4gcmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYs
IElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRB
bGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIFJlZjxJREJSZXF1ZXN0PiBy
ZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiwgSURCSW5kZXgmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIE9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRBbGxPYmplY3RTdG9y
ZVJlY29yZHMoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpT
Qzo6RXhlY1N0YXRlJiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVk
REI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKICAgICBSZWY8
SURCUmVxdWVzdD4gcmVxdWVzdERlbGV0ZVJlY29yZChKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVj
dFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJl
cXVlc3RDbGVhck9iamVjdFN0b3JlKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmKTsK
ICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENvdW50KEpTQzo6RXhlY1N0YXRlJiwgSURCT2Jq
ZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCmlu
ZGV4IDMwNzQyMDBlNzZkMjVmNjkyMmNiM2VmZWY0NTRiZTA2Zjg0ODg0YjguLmU4NGE3MzNjMmU1
ZjdiMmE4ZjIzNzY1NjkyZTIyNWE2OTkwNmFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcApAQCAt
MzgsNyArMzgsNyBAQCBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVu
dChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlcwogICAgIGlmIChuZXdWZXJzaW9u
KQogICAgICAgICBtX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwogICAgIGVsc2UKLSAgICAgICAg
bV9uZXdWZXJzaW9uID0gTnVsbG9wdDsKKyAgICAgICAgbV9uZXdWZXJzaW9uID0gc3RkOjpudWxs
b3B0OwogfQogCiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEluaXQmIGluaXQsIElzVHJ1c3RlZCBpc1Ry
dXN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5oCmluZGV4IGU5MjE4ZWJhMTYyNjA5MjE5NDAwOGRlMDIxODVj
MGIzODA2MzQwY2YuLjA4MDE3MjBiYzJiOGJkN2RiZWY5ZDU2NWJkY2I3NGIxNGVkYWQ1ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VF
dmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5p
dCB7CiAgICAgICAgIHVpbnQ2NF90IG9sZFZlcnNpb24geyAwIH07Ci0gICAgICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBuZXdWZXJzaW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBu
ZXdWZXJzaW9uOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPElEQlZlcnNpb25DaGFuZ2VFdmVu
dD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6
ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQpAQCAtNjAsNyArNjAsNyBA
QCBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogICAg
IGJvb2wgaXNWZXJzaW9uQ2hhbmdlRXZlbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB1aW50NjRfdCBvbGRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9vbGRWZXJzaW9u
OyB9Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG5ld1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBt
X25ld1ZlcnNpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CiAKIHByaXZhdGU6CiAgICAgSURCVmVyc2lv
bkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgSURCVmVyc2lvbkNo
YW5nZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIAogICAgIElEQlJlc291cmNlSWRlbnRp
ZmllciBtX3JlcXVlc3RJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IG1fb2xkVmVyc2lvbjsKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gbV9uZXdWZXJzaW9uOworICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IG1fbmV3VmVyc2lvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmNwcAppbmRleCAxYTMxMGI5M2JiOGU4MGE0ZTI3NzMxMDMxY2Y0ODdjMGZi
ZGFiZTk1Li44MmQ5MGVjYWQxNmY1MjQ3YTE5NTc0MDYzOTU5OGVmZmY1OTA4NDc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXph
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkgfTsKIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJL
ZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBh
dGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRv
IGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKIApAQCAtNTYsNyArNTYsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IE9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKQogICAgIHJldHVybiBlbmNvZGVyLT5maW5pc2hFbmNvZGluZygp
OwogfQogCi1ib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSwgT3B0aW9uYWw8SURCS2V5UGF0aD4mIHJlc3VsdCkKK2Jvb2wgZGVzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+JiByZXN1bHQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFzaXplKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA1OTcyMDNlYmI2MGYy
MGZkYzk2OTMyZjU3ZTI1MjRiZmY3MzIxYjJjLi4wOTRmYmM2ZWNlNWMwMjNmNGQ4MjY3YWQzMDQx
MjhmZGE1YjgzZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTM0LDggKzM0LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXlEYXRhOwogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+Jik7Ci1i
b29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBPcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7Citi
b29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNl
cmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6
ZSwgSURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKaW5kZXggMzA3YzdhMTIxNzI5YzdiNGJkZTVl
OGU1MWE1ZmZkZmRjN2RmNjYyNi4uZTkyZDI2ODAxMGQ1NDIwZGE1MzI2ZmZkZWViYzg1NzEyNDE2
ZjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdWludDY0X3QgTWVtb3J5
SW5kZXg6OmNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBpblJhbmdlKQog
ICAgIHJldHVybiBjb3VudDsKIH0KIAotdm9pZCBNZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3Jkcyhj
b25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgT3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQp
IGNvbnN0Cit2b2lkIE1lbW9yeUluZGV4OjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdl
RGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhl
ZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KSBjb25zdAogewog
ICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3JkcyIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRl
eC5oCmluZGV4IDg0NzU5ODQ3NTI5ZjZjNWI3MDNkZGUyN2Y3MDcwM2U0ZjA1ODU5MmIuLjViZjlj
YmE4OTNhNDdjYjJmMGMxOGFkYWRiMTMzNjg0MGU3ZGEwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCkBAIC02OCw3
ICs2OCw3IEBAIGNsYXNzIE1lbW9yeUluZGV4IDogcHVibGljIFJlZkNvdW50ZWQ8TWVtb3J5SW5k
ZXg+IHsKIAogICAgIElEQkdldFJlc3VsdCBnZXRSZXN1bHRGb3JLZXlSYW5nZShJbmRleGVkREI6
OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAgICAgdWlu
dDY0X3QgY291bnRGb3JLZXlSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICB2b2lk
IGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgT3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUsIElEQkdldEFsbFJlc3VsdCYpIGNvbnN0Owor
ICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmLCBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1
bHQmKSBjb25zdDsKIAogICAgIElEQkVycm9yIHB1dEluZGV4S2V5KGNvbnN0IElEQktleURhdGEm
LCBjb25zdCBJbmRleEtleSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCBmYTQ0
YjdiYWFiNDZhM2I2NjVjNDMxNmZmZTJkMDMwMmYzZWRkNGI1Li4zNGI0ZTEyOWFkNjZhYTUwMjAy
YWJkZmU5OGVkZWIyOTBjNzU1N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTQw
OCw3ICs0MDgsNyBAQCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBNZW1vcnlPYmplY3RTdG9yZTo6dmFs
dWVGb3JLZXlSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmCiAgICAgcmV0dXJuIG1fa2V5VmFs
dWVTdG9yZS0+Z2V0KGtleSk7CiB9CiAKLXZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OmdldEFsbFJl
Y29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIE9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJlc3VsdCYg
cmVzdWx0KSBjb25zdAordm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6Z2V0QWxsUmVjb3Jkcyhjb25z
dCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3Vs
dCkgY29uc3QKIHsKICAgICByZXN1bHQgPSB7IHR5cGUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aAppbmRleCA2MjA5ODYxOWY5YjBkZTlmMmY2ZjUyZGM3YzlhMTY3NDhhM2VhYWFjLi5lNjFhMGVl
OTgyMGMxMzc0ZmY1YjE1ODljYjQ0MjA2OWIyYjNjODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
aApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lbW9yeU9iamVjdFN0b3JlPiB7CiAgICAgSURCR2V0UmVzdWx0IGluZGV4VmFsdWVG
b3JLZXlSYW5nZSh1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNv
cmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBjb25zdDsKICAgICB1aW50NjRfdCBjb3Vu
dEZvcktleVJhbmdlKHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJikgY29uc3Q7CiAKLSAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUsIElE
QkdldEFsbFJlc3VsdCYpIGNvbnN0OworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKIAogICAgIGNvbnN0IElEQk9iamVj
dFN0b3JlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcAppbmRleCA4YWI3NzQzYjQwNDZmMmE3NDVmN2RjNTkw
OGEyYWNiZjg1NDA1NDAxLi5kOTVlZmU2YTk5MmMzYTQwYTIxNDU1MmQ3NTdhM2M5ZGQzZTQ0Y2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKE1lbW9y
eU9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwKIAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNv
cjo6b2JqZWN0U3RvcmVDbGVhcmVkKCkKIHsKLSAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAg
ICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE1lbW9yeU9iamVjdFN0b3Jl
Q3Vyc29yOjprZXlEZWxldGVkKGNvbnN0IElEQktleURhdGEmIGtleSkKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5RGVsZXRlZChjb25zdCBJREJLZXlE
YXRhJiBrZXkpCiAgICAgaWYgKG1fY3VycmVudFBvc2l0aW9uS2V5ICE9IGtleSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0
ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5QWRkZWQo
c3RkOjpzZXQ8SURCS2V5RGF0YT46Oml0ZXJhdG9yIGl0ZXJhdG9yKQpAQCAtNzMsNyArNzMsNyBA
QCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjprZXlBZGRlZChzdGQ6OnNldDxJREJLZXlE
YXRhPjo6aXRlcmF0b3IgaXRlcmF0b3IpCiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6
OnNldEZpcnN0SW5SZW1haW5pbmdSYW5nZShzdGQ6OnNldDxJREJLZXlEYXRhPiYgc2V0KQogewot
ICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAobV9pbmZvLmlzRGlyZWN0aW9uRm9yd2FyZCgpKSB7CiAgICAgICAgIHNldEZv
cndhcmRJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShzZXQpOwpAQCAtOTUsMTkgKzk1LDE5IEBA
IHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZpcnN0SW5SZW1haW5pbmdSYW5nZShz
dGQ6OnNldDxJREJLZXlEYXRhPiYgc2V0CiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpz
ZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCS2V5RGF0YT4m
IHNldCkKIHsKICAgICBpZiAoIXNldC5zaXplKCkpIHsKLSAgICAgICAgbV9pdGVyYXRvciA9IE51
bGxvcHQ7CisgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAobV9yZW1haW5pbmdSYW5nZS5pc0V4YWN0bHlPbmVLZXkoKSkg
ewogICAgICAgICBtX2l0ZXJhdG9yID0gc2V0LmZpbmQobV9yZW1haW5pbmdSYW5nZS5sb3dlcktl
eSk7CiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQuZW5kKCkpCi0gICAgICAgICAgICBt
X2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICAgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0
OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGxvd2VzdCA9IHNl
dC5sb3dlcl9ib3VuZChtX3JlbWFpbmluZ1JhbmdlLmxvd2VyS2V5KTsKICAgICBpZiAobG93ZXN0
ID09IHNldC5lbmQoKSkKQEAgLTEzMywxNCArMTMzLDE0IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3I6OnNldEZvcndhcmRJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShzdGQ6OnNldDxJ
REJLCiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRSZXZlcnNlSXRlcmF0b3JGcm9t
UmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldCkKIHsKICAgICBpZiAoIXNl
dC5zaXplKCkpIHsKLSAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgIG1faXRl
cmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
bV9yZW1haW5pbmdSYW5nZS5pc0V4YWN0bHlPbmVLZXkoKSkgewogICAgICAgICBtX2l0ZXJhdG9y
ID0gc2V0LmZpbmQobV9yZW1haW5pbmdSYW5nZS5sb3dlcktleSk7CiAgICAgICAgIGlmICgqbV9p
dGVyYXRvciA9PSBzZXQuZW5kKCkpCi0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsK
KyAgICAgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE0OCwxMiArMTQ4LDEyIEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3I6OnNldFJldmVyc2VJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShzdGQ6OnNldDxJREJLCiAg
ICAgaWYgKCFtX3JlbWFpbmluZ1JhbmdlLnVwcGVyS2V5LmlzVmFsaWQoKSkgewogICAgICAgICBt
X2l0ZXJhdG9yID0gLS1zZXQuZW5kKCk7CiAgICAgICAgIGlmICghbV9yZW1haW5pbmdSYW5nZS5j
b250YWluc0tleSgqKm1faXRlcmF0b3IpKQotICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxv
cHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9y
ID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVGhpcyBpcyBvbmUgcmVjb3JkIHBhc3QgdGhlIGFj
dHVhbCBrZXkgd2UncmUgbG9va2luZyBmb3IuCiAgICAgYXV0byBoaWdoZXN0ID0gc2V0LnVwcGVy
X2JvdW5kKG1fcmVtYWluaW5nUmFuZ2UudXBwZXJLZXkpOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZv
aWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmluY3JlbWVudEZvcndhcmRJdGVyYXRvcihzdGQ6
OnNldDxJREJLZXlEYXRhPiYgc2V0CiAgICAgICAgICsrKm1faXRlcmF0b3I7CiAKICAgICAgICAg
aWYgKCptX2l0ZXJhdG9yID09IHNldC5lbmQoKSB8fCAhbV9pbmZvLnJhbmdlKCkuY29udGFpbnNL
ZXkoKiptX2l0ZXJhdG9yKSkgewotICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7Cisg
ICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0
U3RvcmVDdXJzb3I6OmluY3JlbWVudFJldmVyc2VJdGVyYXRvcihzdGQ6OnNldDxJREJLZXlEYXRh
PiYgc2V0CiAKICAgICB3aGlsZSAoY291bnQpIHsKICAgICAgICAgaWYgKCptX2l0ZXJhdG9yID09
IHNldC5iZWdpbigpKSB7Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICAg
ICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3I6OmluY3JlbWVudFJldmVyc2VJdGVyYXRvcihzdGQ6OnNldDxJREJLZXlEYXRhPiYgc2V0CiAg
ICAgICAgIC0tKm1faXRlcmF0b3I7CiAKICAgICAgICAgaWYgKCFtX2luZm8ucmFuZ2UoKS5jb250
YWluc0tleSgqKm1faXRlcmF0b3IpKSB7Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gTnVsbG9w
dDsKKyAgICAgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5o
CmluZGV4IGUzNDU1NTc3Y2E1NzM4MDA2ZTBlMGQ5OTE0NzM0ZTQ1YWIxMWRjNzEuLjYzM2YxZTY2
Y2ZmN2VjODU1ZTkwOWU5ZjMyMmIwZjJmYmYwNGFlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZUN1cnNvci5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIE1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yIDogcHVibGljIE1lbW9yeUN1cnNvciB7CiAKICAgICBJREJLZXlSYW5nZURhdGEgbV9yZW1h
aW5pbmdSYW5nZTsKIAotICAgIFdURjo6T3B0aW9uYWw8c3RkOjpzZXQ8SURCS2V5RGF0YT46Oml0
ZXJhdG9yPiBtX2l0ZXJhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpzZXQ8SURCS2V5RGF0
YT46Oml0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogCiAgICAgSURCS2V5RGF0YSBtX2N1cnJlbnRQb3Np
dGlvbktleTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGEyY2Nj
YWRjNzlkOWU1MDUyYzkxNTUyNjA0OGZjZTBkMDZkNDQ3ZWEuLjQ2MWI5YzlmOGMxZTRlZTljNjY4
NjkyNTMwY2I4ZDhkOTU2MDAwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC02MDIsNyArNjAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICAgICAgICAg
IFZlY3RvcjxjaGFyPiBrZXlQYXRoQnVmZmVyOwogICAgICAgICAgICAgc3FsLmdldENvbHVtbkJs
b2JBc1ZlY3RvcigyLCBrZXlQYXRoQnVmZmVyKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8SURC
S2V5UGF0aD4gb2JqZWN0U3RvcmVLZXlQYXRoOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiBvYmplY3RTdG9yZUtleVBhdGg7CiAgICAgICAgICAgICBpZiAoIWRlc2VyaWFs
aXplSURCS2V5UGF0aChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihrZXlQYXRoQnVm
ZmVyLmRhdGEoKSksIGtleVBhdGhCdWZmZXIuc2l6ZSgpLCBvYmplY3RTdG9yZUtleVBhdGgpKSB7
CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZXh0cmFjdCBrZXkgcGF0aCBm
cm9tIGRhdGFiYXNlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MzUs
NyArNjM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICAgICAgICAgIFZlY3Rvcjxj
aGFyPiBrZXlQYXRoQnVmZmVyOwogICAgICAgICAgICAgc3FsLmdldENvbHVtbkJsb2JBc1ZlY3Rv
cigzLCBrZXlQYXRoQnVmZmVyKTsKIAotICAgICAgICAgICAgT3B0aW9uYWw8SURCS2V5UGF0aD4g
aW5kZXhLZXlQYXRoOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBpbmRl
eEtleVBhdGg7CiAgICAgICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5UGF0aChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihrZXlQYXRoQnVmZmVyLmRhdGEoKSksIGtleVBhdGhC
dWZmZXIuc2l6ZSgpLCBpbmRleEtleVBhdGgpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gZXh0cmFjdCBrZXkgcGF0aCBmcm9tIGRhdGFiYXNlIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCmluZGV4IGY5ODU3MTcy
OWZkNjZjNmE0Mzc0YWQyYTk5NmRmNmM0ZjY3MTM3YzcuLmU1ZGYxNWM0NGFiYmUyNDY0ZjRmZWVl
ZmQ5OGRhYjc4ZDliM2FmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCkBAIC02Niw3ICs2Niw3
IEBAIGJvb2wgSURCRGF0YWJhc2VJbmZvOjpoYXNPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1JREJPYmplY3RTdG9yZUluZm8gSURC
RGF0YWJhc2VJbmZvOjpjcmVhdGVOZXdPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIE9w
dGlvbmFsPElEQktleVBhdGg+JiYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2Jq
ZWN0U3RvcmVJbmZvIElEQkRhdGFiYXNlSW5mbzo6Y3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50KQogewogICAgIElEQk9iamVjdFN0b3JlSW5mbyBpbmZvKCsrbV9tYXhPYmpl
Y3RTdG9yZUlELCBuYW1lLCBXVEZNb3ZlKGtleVBhdGgpLCBhdXRvSW5jcmVtZW50KTsKICAgICBt
X29iamVjdFN0b3JlTWFwLnNldChpbmZvLmlkZW50aWZpZXIoKSwgaW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJ
bmZvLmgKaW5kZXggNTNkZjA1YTRmODQzM2NmNGIwODYwYTE0ZTMzNWNhNWVlOWM5ZTAyMy4uZGI4
ZmYyYzc3OThiNDUwY2NiYjY2YWM2YjBmYzM4ZWU1YzlhMGU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8u
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUluZm8gewogICAgIHVpbnQ2NF90
IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KIAogICAgIGJvb2wgaGFzT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBJREJPYmplY3RTdG9yZUlu
Zm8gY3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJL
ZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlSW5mbyBj
cmVhdGVOZXdPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKICAgICB2b2lkIGFkZEV4aXN0aW5nT2Jq
ZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAgICAgSURCT2JqZWN0U3RvcmVJ
bmZvKiBpbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIpOwogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0ZvckV4aXN0aW5nT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCR2V0QWxsUmVjb3Jkc0Rh
dGEuaAppbmRleCBmOTdmMzMyZmU1YTZiNTA3MGUxOGQ4MDYyODE3NzQ0ZTAyYTQ5NDQ2Li4xMTYz
NDgzNWNhMmYyZTBlODk0NWNiYzlhYTkzMmU1NDZiNzc0NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCR2V0QWxsUmVjb3Jkc0RhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCR2V0QWxsUmVj
b3Jkc0RhdGEuaApAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIEdldEFsbFR5cGU7CiBzdHJ1
Y3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEgewogICAgIElEQktleVJhbmdlRGF0YSBrZXlSYW5nZURh
dGE7CiAgICAgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGU7Ci0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGNvdW50OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50OwogICAg
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBpbmRleElkZW50
aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKaW5kZXggNjgyMGE5ZmZhYmI3Y2Ex
ZGUwZDRlZjFkNTQxZjFlNjk2NTI2MGRiZC4uYWNkZWExZTMzYTVhMWU3MjhiOWY4NmRjNmNkYjQy
N2I5MDE2OGEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAgSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8oKQogewogfQogCi1JREJP
YmplY3RTdG9yZUluZm86OklEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPElEQktleVBhdGg+JiYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8odWlu
dDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fa2V5UGF0aChXVEZNb3Zl
KGtleVBhdGgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCmluZGV4IDU2ZTI0YzAxYzIyZDkxMjIw
ODg0NGQ2Y2QyZjNhNWI0ODRkNWRiMzUuLmQ3MjA1ZjJhMGM0M2FmMmIzNTJmZmY4NWYwZWMyNThj
OTg4MDllOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJPYmplY3RTdG9yZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKQEAgLTM3LDExICszNywxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJREJPYmplY3RTdG9yZUluZm8gewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIElEQk9iamVjdFN0b3JlSW5mbygpOwotICAgIElEQk9iamVjdFN0
b3JlSW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFs
PElEQktleVBhdGg+JiYsIGJvb2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVJ
bmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25h
bDxJREJLZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQpOwogCiAgICAgdWludDY0X3QgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPElE
QktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CisgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5UGF0aDsgfQogICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0
b0luY3JlbWVudDsgfQogICAgIHVpbnQ2NF90IG1heEluZGV4SUQoKSBjb25zdCB7IHJldHVybiBt
X21heEluZGV4SUQ7IH0KIApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBJREJPYmplY3RTdG9yZUlu
Zm8gewogcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CiAgICAgU3Ry
aW5nIG1fbmFtZTsKLSAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CisgICAgc3Rk
OjpvcHRpb25hbDxJREJLZXlQYXRoPiBtX2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1l
bnQgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fbWF4SW5kZXhJRCB7IDAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5jcHAKaW5kZXggMDQyMGQ3MjM5OGQxMTQyYzViYjVhZmJhOTU2ZjE5ZWQ4OGZmN2Vl
Ni4uZTg0NzQyNWNlZjYzNDdjZmI3ODNjYTU0YWQ3MDRjY2YyMzg0YmM4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrPj4g
TWVkaWFDb250cm9sc0hvc3Q6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0wKICAg
ICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS5zb3J0ZWRUcmFja0xp
c3RGb3JNZW51KCZ0cmFja0xpc3QpOwogfQogCi1TdHJpbmcgTWVkaWFDb250cm9sc0hvc3Q6OmRp
c3BsYXlOYW1lRm9yVHJhY2soY29uc3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mIHRyYWNr
KQorU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5TmFtZUZvclRyYWNrKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mIHRyYWNrKQogewogICAgIGlmICghdHJhY2sp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRleCA1MDUz
ODIyMTkwOGU0YmFhZjI1NWUzYmRhYjNmM2RiZjQxNWQ2MmNiLi40NGRkZGQ0ZTQ0MjRmZDVlYjY0
ZDNjMjg4Nzg2Y2MyNTk0YmQ5ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaApAQCAtNTcsNyArNTcsNyBA
QCBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJv
bHNIb3N0PiB7CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrPj4gc29ydGVkVHJhY2tMaXN0
Rm9yTWVudShBdWRpb1RyYWNrTGlzdCYpOwogCiAgICAgdXNpbmcgVGV4dE9yQXVkaW9UcmFjayA9
IFdURjo6VmFyaWFudDxSZWZQdHI8VGV4dFRyYWNrPiwgUmVmUHRyPEF1ZGlvVHJhY2s+PjsKLSAg
ICBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhjb25zdCBPcHRpb25hbDxUZXh0T3JBdWRpb1Ry
YWNrPiYpOworICAgIFN0cmluZyBkaXNwbGF5TmFtZUZvclRyYWNrKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8VGV4dE9yQXVkaW9UcmFjaz4mKTsKIAogICAgIFRleHRUcmFjayogY2FwdGlvbk1lbnVPZmZJ
dGVtKCk7CiAgICAgVGV4dFRyYWNrKiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5k
ZXggOGYxNDU4NzNjYTVlNWFkN2U2OWE2YzA4OTFiMjZiNWY4ODhjZDJjZi4uNTk1MmJkOTNlNTc5
MjliMDQ0ODBlZmY4ZDYwYWFlOTk5ZjcwM2YwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2
b2lkIE1lZGlhU291cmNlOjpzZXRSZWFkeVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RhdGUp
CiAgICAgb25SZWFkeVN0YXRlQ2hhbmdlKG9sZFN0YXRlLCBzdGF0ZSk7CiB9CiAKLUV4Y2VwdGlv
bk9yPHZvaWQ+IE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShPcHRpb25hbDxFbmRPZlN0cmVhbUVy
cm9yPiBlcnJvcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShz
dGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogewogICAgIC8vIDIuMiBodHRw
czovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCN3aWRsLU1lZGlhU291cmNlLWVuZE9mU3RyZWFtLXZvaWQtRW5kT2ZT
dHJlYW1FcnJvci1lcnJvcgogICAgIC8vIDEuIElmIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBp
cyBub3QgaW4gdGhlICJvcGVuIiBzdGF0ZSB0aGVuIHRocm93IGFuCkBAIC01NjEsNyArNTYxLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKE9wdGlvbmFsPEVu
ZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgTWVkaWFT
b3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVy
cm9yKQordm9pZCBNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3Ioc3RkOjpvcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKIHsKICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRp
YVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoJXApIiwgdGhpcyk7CiAgICAgaWYgKGlzQ2xv
c2VkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmgKaW5kZXggNWE1MzIwYjM1ZjVhYTI2MDg2MTg3NzI1MDUzNDVlYjgwZTdkNGFhNy4uNTQ5
MzE5ZjEyOWRkMDhlNjEzYTdmOWU5ZTYzYjM0NjhiMWY3MmQ0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtNjUsNyArNjUsNyBA
QCBjbGFzcyBNZWRpYVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQsIHB1YmxpYyBBY3RpdmVET01PYmplYwogICAgIHZvaWQgc291cmNlQnVmZmVyRGlkQ2hhbmdl
QWN0aXZlU3RhdGUoU291cmNlQnVmZmVyJiwgYm9vbCk7CiAKICAgICBlbnVtIGNsYXNzIEVuZE9m
U3RyZWFtRXJyb3IgeyBOZXR3b3JrLCBEZWNvZGUgfTsKLSAgICB2b2lkIHN0cmVhbUVuZGVkV2l0
aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKKyAgICB2b2lkIHN0cmVhbUVuZGVk
V2l0aEVycm9yKHN0ZDo6b3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4pOwogCiAgICAgTWVkaWFU
aW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CkBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIE1lZGlhU291cmNl
IGZpbmFsIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCwgcHVibGljIEFjdGl2ZURP
TU9iamVjCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RHVyYXRpb25JbnRlcm5hbChjb25zdCBN
ZWRpYVRpbWUmKTsKICAgICBNZWRpYVRpbWUgY3VycmVudFRpbWUoKSBjb25zdDsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7
IH0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBlbmRPZlN0cmVhbShPcHRpb25hbDxFbmRPZlN0cmVh
bUVycm9yPik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5kT2ZTdHJlYW0oc3RkOjpvcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPik7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDk4
Y2U5MDJhODNiYTYyYjFmNTg3ZWUzZDY4NDE0YjQ1NjRhNjMzZTcuLjcxZTBkOTdiOTIxNDMzMWFm
YzI1NzJmMzAyYzJhZjIyOGQwZjdmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC0xMjcsNyArMTI3LDcgQEAg
Y2xhc3MgTWVkaWFTdHJlYW1UcmFjayBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3Ry
ZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXYKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
IG1fcHJpdmF0ZTsKIAogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRz
OwotICAgIE9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fcHJvbWlzZTsKICAgICBXZWFrUHRyRmFjdG9yeTxN
ZWRpYVN0cmVhbVRyYWNrPiBtX3dlYWtQdHJGYWN0b3J5OwogCiAgICAgYm9vbCBtX2VuZGVkIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCBiNjZiYTZlNWE1MWMxYWUxZTNk
M2VkYjA3ZDBiMTI4ODc4NWMwM2U3Li4xNDQ2ODc5ODYzZmQ0YjA3OGFjNjRjMDkwYTZjMGIzYzdl
YjUwYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQg
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcmJiBzZHAp
CiAKICAgICBBU1NFUlQobV9vZmZlckFuc3dlclByb21pc2UpOwogICAgIG1fb2ZmZXJBbnN3ZXJQ
cm9taXNlLT5yZXNvbHZlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjo6U2RwVHlwZTo6T2ZmZXIsIFdURk1vdmUoc2RwKSkpOwotICAgIG1fb2ZmZXJB
bnN3ZXJQcm9taXNlID0gTnVsbG9wdDsKKyAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyRmFp
bGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyRmFpbGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikK
IAogICAgIEFTU0VSVChtX29mZmVyQW5zd2VyUHJvbWlzZSk7CiAgICAgbV9vZmZlckFuc3dlclBy
b21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAgIG1fb2ZmZXJBbnN3ZXJQcm9t
aXNlID0gTnVsbG9wdDsKKyAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZUFuc3dlcihSVENBbnN3ZXJP
cHRpb25zJiYgb3B0aW9ucywgUGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21p
c2UmJiBwcm9taXNlKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6Y3JlYXRlQW5zd2VyU3VjY2VlZGVkKFN0cmluZyYmIHNkcCkKIAogICAgIEFTU0VSVChtX29m
ZmVyQW5zd2VyUHJvbWlzZSk7CiAgICAgbV9vZmZlckFuc3dlclByb21pc2UtPnJlc29sdmUoUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBl
OjpBbnN3ZXIsIFdURk1vdmUoc2RwKSkpOwotICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlID0gTnVs
bG9wdDsKKyAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24mJiBl
eGNlcHRpb24pCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiAKICAgICBBU1NFUlQo
bV9vZmZlckFuc3dlclByb21pc2UpOwogICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlLT5yZWplY3Qo
V1RGTW92ZShleGNlcHRpb24pKTsKLSAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IE51bGxvcHQ7
CisgICAgbV9vZmZlckFuc3dlclByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc0xvY2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0ZShSVENTZXNzaW9u
RGVzY3JpcHRpb246OlNkcFR5cGUgdHlwZSwgUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGlu
Z1N0YXRlIHN0YXRlKQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uU3VjY2VlZGVkKCkKICAgICBBU1NFUlQobV9zZXREZXNj
cmlwdGlvblByb21pc2UpOwogCiAgICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UtPnJlc29sdmUo
KTsKLSAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9zZXREZXNj
cmlwdGlvblByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uRmFpbGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikK
QEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxE
ZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiAgICAgQVNTRVJUKG1fc2V0
RGVzY3JpcHRpb25Qcm9taXNlKTsKIAogICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlLT5yZWpl
Y3QoV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZSA9IE51
bGxvcHQ7CisgICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUo
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUsIFBlZXJDb25uZWN0aW9uU3RhdGVz
OjpTaWduYWxpbmdTdGF0ZSBzdGF0ZSkKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFBlZXJDb25u
ZWN0aW9uQmFja2VuZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25TdWNjZWVkZWQoKQogICAgIEFTU0VS
VChtX3NldERlc2NyaXB0aW9uUHJvbWlzZSk7CiAKICAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlz
ZS0+cmVzb2x2ZSgpOwotICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gTnVsbG9wdDsKKyAg
ICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uRmFpbGVkKEV4Y2VwdGlvbiYm
IGV4Y2VwdGlvbikKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogICAg
IEFTU0VSVChtX3NldERlc2NyaXB0aW9uUHJvbWlzZSk7CiAKICAgICBtX3NldERlc2NyaXB0aW9u
UHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgbV9zZXREZXNjcmlwdGlv
blByb21pc2UgPSBOdWxsb3B0OworICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gc3RkOjpu
dWxsb3B0OwogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRl
KFJUQ0ljZUNhbmRpZGF0ZSYgaWNlQ2FuZGlkYXRlLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21p
c2UmJiBwcm9taXNlKQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRJY2VDYW5kaWRhdGVTdWNjZWVkZWQoKQogICAgIEFTU0VSVChtX2FkZEljZUNhbmRp
ZGF0ZVByb21pc2UpOwogCiAgICAgbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlLT5yZXNvbHZlKCk7
Ci0gICAgbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlID0gTnVsbG9wdDsKKyAgICBtX2FkZEljZUNh
bmRpZGF0ZVByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRJY2VDYW5kaWRhdGVGYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQpAQCAt
MjU5LDcgKzI1OSw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRh
dGVGYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogICAgIEFTU0VSVChtX2FkZEljZUNhbmRp
ZGF0ZVByb21pc2UpOwogCiAgICAgbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlLT5yZWplY3QoV1RG
TW92ZShleGNlcHRpb24pKTsKLSAgICBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2UgPSBOdWxsb3B0
OworICAgIG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpcmVJQ0VDYW5kaWRhdGVFdmVudChSZWZQdHI8UlRD
SWNlQ2FuZGlkYXRlPiYmIGNhbmRpZGF0ZSkKQEAgLTI4OSw5ICsyODksOSBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6dXBkYXRlU2lnbmFsaW5nU3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0
ZXM6OlNpZ25hbGluZwogCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c3RvcCgpCiB7Ci0g
ICAgbV9vZmZlckFuc3dlclByb21pc2UgPSBOdWxsb3B0OwotICAgIG1fc2V0RGVzY3JpcHRpb25Q
cm9taXNlID0gTnVsbG9wdDsKLSAgICBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2UgPSBOdWxsb3B0
OworICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlID0gc3RkOjpudWxsb3B0OworICAgIG1fc2V0RGVz
Y3JpcHRpb25Qcm9taXNlID0gc3RkOjpudWxsb3B0OworICAgIG1fYWRkSWNlQ2FuZGlkYXRlUHJv
bWlzZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvU3RvcCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmgKaW5kZXggYzg0YjgxNjYzY2RlNWZhZGQ3ZjlhYWRlZTFhODk3YTU3MjQ3ZWQ5Ny4uY2E4NjE5
MWU1YmU5MDRkYTc2ODIxNmI0N2IxNmY4YTYxZWI0ZjY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5o
CkBAIC0xMzksOSArMTM5LDkgQEAgY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kIHsKICAgICBS
VENQZWVyQ29ubmVjdGlvbiYgbV9wZWVyQ29ubmVjdGlvbjsKIAogcHJpdmF0ZToKLSAgICBPcHRp
b25hbDxQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZT4gbV9vZmZlckFu
c3dlclByb21pc2U7Ci0gICAgT3B0aW9uYWw8UGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlPiBt
X3NldERlc2NyaXB0aW9uUHJvbWlzZTsKLSAgICBPcHRpb25hbDxQZWVyQ29ubmVjdGlvbjo6Vm9p
ZFByb21pc2U+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBl
ZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlPiBtX29mZmVyQW5zd2VyUHJv
bWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZT4gbV9z
ZXREZXNjcmlwdGlvblByb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxQZWVyQ29ubmVjdGlvbjo6
Vm9pZFByb21pc2U+IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuY3BwCmluZGV4IDgzMzBjODc4YzE3YzA5ZTc4MjY5YmM1NWFkNzhmZTE3
YjE0YjgwZGIuLjVkZDJmMWU0MWNmNTEyMjk2ZDc0ZDIwYzFiZDdjNDhiYjJiMjJkNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcApAQCAtODUsNyArODUsNyBAQCBTdHJpbmcgUlRDRFRNRlNlbmRlcjo6dG9uZUJ1ZmZlcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1faGFuZGxlci0+Y3VycmVudFRvbmVCdWZmZXIoKTsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gUlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcm
IHRvbmVzLCBPcHRpb25hbDxpbnQ+IGR1cmF0aW9uLCBPcHRpb25hbDxpbnQ+IGludGVyVG9uZUdh
cCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3Ry
aW5nJiB0b25lcywgc3RkOjpvcHRpb25hbDxpbnQ+IGR1cmF0aW9uLCBzdGQ6Om9wdGlvbmFsPGlu
dD4gaW50ZXJUb25lR2FwKQogewogICAgIGlmICghY2FuSW5zZXJ0RFRNRigpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKQEAgLTk2LDggKzk2LDggQEAg
RXhjZXB0aW9uT3I8dm9pZD4gUlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcm
IHRvbmVzLCBPcHRpb25hbDxpbnQ+IGQKICAgICBpZiAoaW50ZXJUb25lR2FwICYmIGludGVyVG9u
ZUdhcC52YWx1ZSgpIDwgbWluSW50ZXJUb25lR2FwTXMpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTWU5UQVhfRVJSIH07CiAKLSAgICBtX2R1cmF0aW9uID0gZHVyYXRpb24udmFsdWVPcihk
ZWZhdWx0VG9uZUR1cmF0aW9uTXMpOwotICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2Fw
LnZhbHVlT3IoZGVmYXVsdEludGVyVG9uZUdhcE1zKTsKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRp
b24udmFsdWVfb3IoZGVmYXVsdFRvbmVEdXJhdGlvbk1zKTsKKyAgICBtX2ludGVyVG9uZUdhcCA9
IGludGVyVG9uZUdhcC52YWx1ZV9vcihkZWZhdWx0SW50ZXJUb25lR2FwTXMpOwogCiAgICAgaWYg
KCFtX2hhbmRsZXItPmluc2VydERUTUYodG9uZXMsIG1fZHVyYXRpb24sIG1faW50ZXJUb25lR2Fw
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKaW5kZXggZmNh
NDI1M2RkMzA1YWI3MWY2YmJhMjNhMTNiYzgzMDQ3MTIwMzk2Yi4uYzcyMjg3MTkxMGY5NmY4NmIy
MDdhYjNhODFkNTFjYzMwOGFjNzg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUlRD
RFRNRlNlbmRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RUTUZTZW5kZXI+LCBwdWJs
aWMgRXZlbnRUYXJnZXQKICAgICBsb25nIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJh
dGlvbjsgfQogICAgIGxvbmcgaW50ZXJUb25lR2FwKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlclRv
bmVHYXA7IH0KIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydERUTUYoY29uc3QgU3RyaW5n
JiB0b25lcywgT3B0aW9uYWw8aW50PiBkdXJhdGlvbiwgT3B0aW9uYWw8aW50PiBpbnRlclRvbmVH
YXApOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25l
cywgc3RkOjpvcHRpb25hbDxpbnQ+IGR1cmF0aW9uLCBzdGQ6Om9wdGlvbmFsPGludD4gaW50ZXJU
b25lR2FwKTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3Vu
dGVkOjpkZXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAppbmRleCAxMTg2NTRjNGRhNWVmMDE2YzgzMTZiM2NkNTI2
OTc5M2EwM2JjMjRmLi44NWVlN2MxMjRhZTFhMmNlMTExZGZlNTUzNDQxZjM3NDcyMGQ2ZjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VD
YW5kaWRhdGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5k
aWRhdGU+PiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBkaWN0CiAg
ICAgU3RyaW5nIHNkcE1pZDsKICAgICBkaWN0aW9uYXJ5LmdldFdpdGhVbmRlZmluZWRPck51bGxD
aGVjaygic2RwTWlkIiwgc2RwTWlkKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBz
ZHBNTGluZUluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5l
SW5kZXg7CiAgICAgU3RyaW5nIHNkcE1MaW5lSW5kZXhTdHJpbmc7CiAKICAgICBpZiAoZGljdGlv
bmFyeS5nZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soInNkcE1MaW5lSW5kZXgiLCBzZHBNTGlu
ZUluZGV4U3RyaW5nKSkgewpAQCAtNjYsMTIgKzY2LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENJ
Y2VDYW5kaWRhdGU+PiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBk
aWN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlkYXRlKGNhbmRpZGF0ZSwg
c2RwTWlkLCBzZHBNTGluZUluZGV4KSk7CiB9CiAKLVJlZjxSVENJY2VDYW5kaWRhdGU+IFJUQ0lj
ZUNhbmRpZGF0ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcm
IHNkcE1pZCwgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCitSZWY8UlRD
SWNlQ2FuZGlkYXRlPiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRp
ZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+
IHNkcE1MaW5lSW5kZXgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlk
YXRlKGNhbmRpZGF0ZSwgc2RwTWlkLCBzZHBNTGluZUluZGV4KSk7CiB9CiAKLVJUQ0ljZUNhbmRp
ZGF0ZTo6UlRDSWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJp
bmcmIHNkcE1pZCwgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpCitSVENJ
Y2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29u
c3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5l
SW5kZXgpCiAgICAgOiBtX2NhbmRpZGF0ZShjYW5kaWRhdGUpCiAgICAgLCBtX3NkcE1pZChzZHBN
aWQpCiAgICAgLCBtX3NkcE1MaW5lSW5kZXgoc2RwTUxpbmVJbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCmluZGV4IGQ3
ODlmM2RkMmVhNzRlN2ZmZjU3YjZkMjUxYTk5NWU5YjExY2JhNDcuLjlhODcwZmYxZDdlMTUyZjI0
ZDJkMWEzMGQyNzY5YzQwNWQ3MGEyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaApAQCAtNDQsMTggKzQ0LDE4IEBAIGNs
YXNzIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I7CiBjbGFzcyBSVENJY2VDYW5kaWRhdGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxSVENJY2VDYW5kaWRhdGU+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFJUQ0ljZUNhbmRpZGF0ZT4+
IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5Jik7Ci0gICAgc3RhdGljIFJlZjxSVENJY2VDYW5kaWRh
dGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQs
IE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4KTsKKyAgICBzdGF0aWMgUmVm
PFJUQ0ljZUNhbmRpZGF0ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBT
dHJpbmcmIHNkcE1pZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRl
eCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fu
ZGlkYXRlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzZHBNaWQoKSBjb25zdCB7IHJldHVybiBtX3Nk
cE1pZDsgfQotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9zZHBNTGluZUluZGV4OyB9CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZCBzaG9ydD4gc2RwTUxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2RwTUxpbmVJbmRleDsg
fQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcm
IGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0
PiBzZHBNTGluZUluZGV4KTsKKyAgICBleHBsaWNpdCBSVENJY2VDYW5kaWRhdGUoY29uc3QgU3Ry
aW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkIHNob3J0PiBzZHBNTGluZUluZGV4KTsKIAogICAgIFN0cmluZyBtX2NhbmRpZGF0ZTsKICAg
ICBTdHJpbmcgbV9zZHBNaWQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1fc2RwTUxp
bmVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtX3NkcE1MaW5lSW5k
ZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAKaW5kZXggOWExMWNhYjI4M2Ji
NWMyZTA2NmZjYjdmNTQ3ZDEyMmU1ZGQ2ZGQ0ZS4uMTQ1ZDQxMTdjZTM2ZDFiNzg3OTA2MzI3MDAx
N2Y3YTViY2VlMGRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9TRFBQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vU0RQUHJvY2Vzc29yLmNwcApAQCAtMzI3LDE1ICszMjcsMTUgQEAgc3RhdGljIFJlZlB0
cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gcm9tSlNP
Tihjb25zdCBTdHIKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotc3RhdGljIE9wdGlv
bmFsPEljZUNhbmRpZGF0ZT4gaWNlQ2FuZGlkYXRlRnJvbUpTT04oY29uc3QgU3RyaW5nJiBqc29u
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SWNlQ2FuZGlkYXRlPiBpY2VDYW5kaWRhdGVGcm9tSlNP
Tihjb25zdCBTdHJpbmcmIGpzb24pCiB7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2YWx1
ZTsKICAgICBpZiAoIUluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oanNvbiwgdmFsdWUpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNhbmRpZGF0ZU9iamVjdDsKICAgICBpZiAoIXZhbHVl
LT5hc09iamVjdChjYW5kaWRhdGVPYmplY3QpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBjcmVhdGVDYW5kaWRhdGUo
KmNhbmRpZGF0ZU9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3Byb3hpbWl0eS9EZXZpY2VQcm94aW1pdHlFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wcm94aW1pdHkvRGV2aWNlUHJveGltaXR5RXZlbnQuaAppbmRleCA3NzIyZmNmZDE5OWVlNjc1
MjNkNjc4ZmFjNTM1ZDA1N2I1ZTg4M2RhLi4zNzNhYzQ1MWViODNmZGExZDZjMDQ2ZTBkMjkzYTBh
YWM1ZWE2MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Byb3hpbWl0eS9E
ZXZpY2VQcm94aW1pdHlFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHJveGlt
aXR5L0RldmljZVByb3hpbWl0eUV2ZW50LmgKQEAgLTQwLDkgKzQwLDkgQEAgY2xhc3MgRGV2aWNl
UHJveGltaXR5RXZlbnQgOiBwdWJsaWMgRXZlbnQgewogICAgIH0KIAogICAgIHN0cnVjdCBJbml0
IDogRXZlbnRJbml0IHsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKLSAgICAgICAg
T3B0aW9uYWw8ZG91YmxlPiBtaW47Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4OworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBtaW47CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXg7CiAgICAgfTsK
IAogICAgIHN0YXRpYyBSZWY8RGV2aWNlUHJveGltaXR5RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVz
dGVkID0gSXNUcnVzdGVkOjpObykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXggOTMxYzUwMDQ4NGRhMTFjOTc3OTI3
MTk5YTgyYTRlN2FlZTM4NzEwMS4uNjU5MTlmMjk0ZjY0NThlOTVjZGZjMDI2OGI1MDI2YzFlNjVk
NzFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU291cmNlLmgKQEAgLTYzLDggKzYzLDggQEAgY2xhc3MgUmVhZGFibGVTdHJlYW1T
b3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gewogICAgIHZp
cnR1YWwgdm9pZCBkb0NhbmNlbCgpID0gMDsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxET01Q
cm9taXNlPHZvaWQ+PiBtX3Byb21pc2U7Ci0gICAgT3B0aW9uYWw8UmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8RE9NUHJvbWlz
ZTx2b2lkPj4gbV9wcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8UmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogfTsKIAogaW5saW5lIHZvaWQgUmVhZGFibGVT
dHJlYW1Tb3VyY2U6OnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXImJiBjb250
cm9sbGVyLCBET01Qcm9taXNlPHZvaWQ+JiYgcHJvbWlzZSkKQEAgLTkxLDE0ICs5MSwxNCBAQCBp
bmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6cHVsbChET01Qcm9taXNlPHZvaWQ+JiYg
cHJvbWlzZSkKIGlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydEZpbmlzaGVk
KCkKIHsKICAgICBBU1NFUlQobV9wcm9taXNlKTsKLSAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlz
ZSwgTnVsbG9wdCkudmFsdWUoKS5yZXNvbHZlKCk7CisgICAgc3RkOjpleGNoYW5nZShtX3Byb21p
c2UsIHN0ZDo6bnVsbG9wdCkudmFsdWUoKS5yZXNvbHZlKCk7CiAgICAgc2V0SW5hY3RpdmUoKTsK
IH0KIAogaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGxGaW5pc2hlZCgpCiB7
CiAgICAgQVNTRVJUKG1fcHJvbWlzZSk7Ci0gICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51
bGxvcHQpLnZhbHVlKCkucmVzb2x2ZSgpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBz
dGQ6Om51bGxvcHQpLnZhbHVlKCkucmVzb2x2ZSgpOwogICAgIHNldEluYWN0aXZlKCk7CiB9CiAK
QEAgLTExMSw3ICsxMTEsNyBAQCBpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6Y2Fu
Y2VsKEpTQzo6SlNWYWx1ZSkKIGlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpjbGVh
bigpCiB7CiAgICAgaWYgKG1fcHJvbWlzZSkgewotICAgICAgICBtX3Byb21pc2UgPSBOdWxsb3B0
OworICAgICAgICBtX3Byb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNldEluYWN0aXZl
KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGExOWY2M2Y2M2Q1NGQzMTFkMWE0
MjZlYjA3ODRjNGE0ZmQzODg2YzYuLjExMzE5YTg1Y2U5OTIwZjFjZTJmN2E5OGI4MGMzYzcxYjBh
NzgwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQzNyw3ICs0MzcsNyBAQCB1bnNpZ25lZCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6Om51bWJlck9mQ2hhbm5lbHMoKQogICAgIHJldHVybiBvdXRw
dXQoMCktPm51bWJlck9mQ2hhbm5lbHMoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzdGFydChkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBP
cHRpb25hbDxkb3VibGU+IG9wdGlvbmFsR3JhaW5EdXJhdGlvbikKK0V4Y2VwdGlvbk9yPHZvaWQ+
IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9m
ZnNldCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG9wdGlvbmFsR3JhaW5EdXJhdGlvbikKIHsKICAg
ICBkb3VibGUgZ3JhaW5EdXJhdGlvbiA9IDA7CiAgICAgaWYgKG9wdGlvbmFsR3JhaW5EdXJhdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oCmluZGV4IGEwOTI2MGFkZjk4MmZlYzM2N2M5NzQ1MjRlMDQzOGE1NjRi
NDRlYmMuLmY0ZTYzYTg1OWMwMWI0MTVlMWNmMzQ3ZjI3ODhkZGQ4YjdiNzNiYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmlu
YWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzKCk7CiAKICAgICAvLyBQbGF5LXN0YXRlCi0gICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91Ymxl
PiBncmFpbkR1cmF0aW9uKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydChkb3VibGUgd2hl
biwgZG91YmxlIGdyYWluT2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlv
bik7CiAKICAgICAvLyBOb3RlOiB0aGUgYXR0cmlidXRlIHdhcyBvcmlnaW5hbGx5IGV4cG9zZWQg
YXMgLmxvb3BpbmcsIGJ1dCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gbmFtaW5nIHdpdGggPGF1
ZGlvPgogICAgIC8vIGFuZCB3aXRoIGhvdyBpdCdzIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNh
dGlvbiwgdGhlIHByb3BlciBhdHRyaWJ1dGUgbmFtZSBpcyAubG9vcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgKaW5kZXggZDcxNmZiZjAx
NTdlZmY4ZTE4ZGNkNmNmYmJhYmY2MmJiYWZlOGJlZS4uZTIyODM5OTlmYTg5YTNjNmZmNzE2YzE0
YzU4OTRmNTM4ZmQ4NDU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxSZXN1bHRTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFJlc3VsdFNldC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFNRTFJlc3VsdFNl
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTUUxSZXN1bHRTZXQ+IHsKICAgICBTUUxS
ZXN1bHRTZXQoKTsKIAogICAgIFJlZjxTUUxSZXN1bHRTZXRSb3dMaXN0PiBtX3Jvd3M7Ci0gICAg
T3B0aW9uYWw8aW50NjRfdD4gbV9pbnNlcnRJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IG1faW5zZXJ0SWQ7CiAgICAgaW50IG1fcm93c0FmZmVjdGVkIHsgMCB9OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA2NDMy
MTY1OWJiMWMyMjk0ZDIyMmFmZGViZjM0NDVjYTZiNzRjMTVjLi5iZWQ5MzYyNjdkNTY4NGZjNzg4
MTcwOTFmMTFmMDdjNDVlYWIzYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFdlYlNvY2tldDo6c2VuZChCbG9iJiBiaW5hcnlEYXRhKQogICAgIHJldHVybiB7IH07CiB9
CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y2xvc2UoT3B0aW9uYWw8dW5zaWduZWQg
c2hvcnQ+IG9wdGlvbmFsQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCitFeGNlcHRpb25Pcjx2
b2lkPiBXZWJTb2NrZXQ6OmNsb3NlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG9wdGlv
bmFsQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgaW50IGNvZGUgPSBvcHRpb25h
bENvZGUgPyBvcHRpb25hbENvZGUudmFsdWUoKSA6IHN0YXRpY19jYXN0PGludD4oV2ViU29ja2V0
Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpOwogICAgIGlmIChjb2RlID09IFdl
YlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDQxNTRlZWVjNjMyMTJl
YmNkZmExYmY4MDFiZjVlMTIyNjRmMTA1NzkuLjdkNDNmMDQzNjBmYzNiOWFjYzBiYmZiNWE1OTI0
NWQ2OWI4MDlhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgV2ViU29ja2V0IGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGkKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZW5kKEpTQzo6QXJyYXlCdWZmZXJWaWV3Jik7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2VuZChCbG9iJik7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbG9zZShP
cHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOworICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGNsb3NlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7
CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDRlNGFhN2Mz
YTliYjI1MjU5NWE3MjkyMzA4NzA2MWJiN2IzNDIzOTkuLjgwZGJiNGJhMGVlM2IyYzQ3MzNjODFk
MmUxYjg1OTdkOGJiZTc4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRs
ZSYgaGFuZGxlKQogICAgIGRlcmVmKCk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0
IGNoYXIqIGRhdGEsIE9wdGlvbmFsPHNpemVfdD4gbGVuKQordm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbikKIHsKICAgICBpZiAo
bGVuKQogICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoKSBSZWNlaXZlZCAlenUgYnl0ZXMiLCB0aGlzLCBsZW4udmFsdWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAppbmRleCA3Yzc1OGQ2NDQwYThmZjM0ZDQ2ZDUyNzY2NTgzMzE1MjAwNDNlYWQx
Li5iM2E1MmNjYzc5MGZlMWE3YTdhMTIzYmQzODcwODE5Njk3NjllMzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAg
LTgyLDcgKzgyLDcgQEAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgU29ja2V0U3RyZWEKICAgICAvLyBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQgZnVuY3Rpb25zLgogICAgIHZvaWQgZGlkT3BlblNvY2tldFN0cmVhbShT
b2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKICAgICB2b2lkIGRpZENsb3NlU29ja2V0U3RyZWFt
KFNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0
cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciosIE9wdGlvbmFsPHNpemVf
dD4pIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3Ry
ZWFtSGFuZGxlJiwgY29uc3QgY2hhciosIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikgZmluYWw7CiAg
ICAgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChTb2NrZXRTdHJlYW1IYW5kbGUmLCBzaXpl
X3QgYnVmZmVyZWRBbW91bnQpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbFNvY2tldFN0cmVhbShT
b2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKaW5kZXggMGEzMjdlZTYx
YzlhNjU0ZDk2YmVlZTk2NTMxYTFkODg4MGEzNjhiMy4uOTc3NDZlZmY4MzhhNzQxYTRmZGI4MGQz
NTY2OTk3YjRiNGI0NzA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURM
VHlwZXMuaApAQCAtNDQsOCArNDQsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IElE
TFR5cGUgewogICAgIHVzaW5nIEltcGxlbWVudGF0aW9uVHlwZSA9IFQ7CiAKLSAgICB1c2luZyBO
dWxsYWJsZVR5cGUgPSBPcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OwotICAgIHN0YXRpYyBO
dWxsYWJsZVR5cGUgbnVsbFZhbHVlKCkgeyByZXR1cm4gTnVsbG9wdDsgfQorICAgIHVzaW5nIE51
bGxhYmxlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8SW1wbGVtZW50YXRpb25UeXBlPjsKKyAgICBzdGF0
aWMgTnVsbGFibGVUeXBlIG51bGxWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAg
IHN0YXRpYyBib29sIGlzTnVsbFZhbHVlKGNvbnN0IE51bGxhYmxlVHlwZSYgdmFsdWUpIHsgcmV0
dXJuICF2YWx1ZTsgfQogICAgIHN0YXRpYyBJbXBsZW1lbnRhdGlvblR5cGUgZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKGNvbnN0IE51bGxhYmxlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnZh
bHVlKCk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRNb2R1bGVTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdC5oCmluZGV4IDk4ODg5ZDVlZjMwMmRkMDZkZTQ4NDBiZDM0NTdkZDQ3NjEyOGMxMjgu
LjllYWE3NmI0ZWRlYWNjMzg3MDBlZGMwNTVkOWQ0MDhmMmQwNDNjMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5oCkBAIC00NSw3ICs0NSw3
IEBAIGNsYXNzIENhY2hlZE1vZHVsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZE1v
ZHVsZVNjcmlwdD4gewogICAgIHZvaWQgbm90aWZ5TG9hZEZhaWxlZChMb2FkYWJsZVNjcmlwdDo6
RXJyb3ImJik7CiAgICAgdm9pZCBub3RpZnlMb2FkV2FzQ2FuY2VsZWQoKTsKIAotICAgIGNvbnN0
IE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4mIGVycm9yKCkgY29uc3QgeyByZXR1cm4g
bV9lcnJvcjsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9y
PiYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAgICAgYm9vbCB3YXNDYW5jZWxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzQ2FuY2VsZWQ7IH0KICAgICBib29sIGlzTG9hZGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0xvYWRlZDsgfQogCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIENh
Y2hlZE1vZHVsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlZE1vZHVsZVNjcmlwdD4g
ewogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZE1vZHVsZVNjcmlwdENsaWVudCo+IG1fY2xpZW50
czsKICAgICBTdHJpbmcgbV9ub25jZTsKICAgICBTdHJpbmcgbV9jcm9zc09yaWdpbk1vZGU7Ci0g
ICAgT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBtX2Vycm9yOworICAgIHN0ZDo6b3B0
aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBtX2Vycm9yOwogICAgIGJvb2wgbV93YXNDYW5j
ZWxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzTG9hZGVkIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKaW5kZXggYjg4MzM1MzAxYTQ0MDEzZDVm
NGY1ODllZGI4ODFlYjdiN2RjYjYzNC4uMmU3ZGQxZjI3NGQzNWMwZWU1OWUwZTEwYjNlYjEwMTFj
NDY3Y2U5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFy
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApAQCAtNDks
NyArNDksNyBAQCBjbGFzcyBEaWN0aW9uYXJ5IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1
bHQ+IGJvb2wgZ2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgUmVzdWx0JikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBib29sIGdldChjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSwgUmVzdWx0JikgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+
IE9wdGlvbmFsPFJlc3VsdD4gZ2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBzdGQ6Om9wdGlvbmFsPFJlc3VsdD4gZ2V0KGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZ2V0RXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIFQqIHRhcmdldCkgY29uc3Q7CkBAIC03OSwxMSArNzksMTEgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgUmVzdWx0PiBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSwgUmVzdWwKICAgICByZXR1cm4gZ2V0KHByb3BlcnR5TmFtZS51dGY4KCkuZGF0YSgpLCBy
ZXN1bHQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+IE9wdGlvbmFsPFJlc3VsdD4g
RGljdGlvbmFyeTo6Z2V0KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlc3VsdD4gc3RkOjpvcHRpb25hbDxSZXN1bHQ+IERpY3Rpb25hcnk6OmdldChj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUmVzdWx0IHJlc3VsdDsKICAg
ICBpZiAoIWdldChwcm9wZXJ0eU5hbWUsIHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHAKaW5kZXggZjExNzViOGU0ZTI4MTNmMWI5YjdlZWNlY2M2YjU2YmYyZDg5ZThjYS4uYTc0ZGQx
ODMyZmU3OWNiZTU3ZTk2YzIxYjUwYjMwNmNmZWJmZjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTQxMiw3ICs0MTIs
NyBAQCB2b2lkIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbywgSlNWYWx1ZQogICAgIG91dEtleSA9IEluZGV4S2V5KFdURk1v
dmUoa2V5RGF0YXMpKTsKIH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBr
ZXlQYXRoKQorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgp
CiB7CiAgICAgaWYgKCFrZXlQYXRoKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggMzZj
NmUxOGU3MjgzZWMyY2YzMjIzMWI0MzA3MmFmNDhmMjdiNjA4MC4uYTg2YzEwYzA3ZDhjMjZlY2Nk
YTJlNTcyMjhkZjJmOTM1MjkwNjQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBKU0RPTUds
b2JhbE9iamVjdDsKIGNsYXNzIFRocmVhZFNhZmVEYXRhQnVmZmVyOwogCiAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgb25jZSB3ZSBzdXBwb3J0IHJldHVybmluZyB1bmlvbiB0eXBlcy4KLUpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBPcHRp
b25hbDxJREJLZXlQYXRoPiYpOworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUmLCBK
U0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAog
UmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRo
KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYp
OwogYm9vbCBjYW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBKU0M6OkpTVmFsdWUmLCBjb25zdCBJREJLZXlQYXRoJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNw
cAppbmRleCA2ZTAwYzlmNTEwMTE0N2Y0NzhlNzQzNTc5NmNhYzIxNjUwMWRmZTM0Li41NGE4ZDFm
NTY0YTRhNzIxZDUxMTBhMDdkOGRmZWI1ZjRkZjU4MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkPiBjcmVhdGVSU0FLZXlQYXJhbWV0ZXJzV2l0aEhhc2goQwogICAgIHJldHVybiBX
VEZNb3ZlKHJzYUtleVBhcmFtZXRlcnMpOwogfQogCi1PcHRpb25hbDxDcnlwdG9BbGdvcml0aG1Q
YWlyPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29yaXRobShDcnlw
dG9BbGdvcml0aG0qIHN1Z2dlc3RlZEFsZ29yaXRobSwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
c0RlcHJlY2F0ZWQqIHN1Z2dlc3RlZFBhcmFtZXRlcnMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPENy
eXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxl
QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSogc3VnZ2VzdGVkQWxnb3JpdGhtLCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCogc3VnZ2VzdGVkUGFyYW1ldGVycykgY29uc3QKIHsK
ICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMjM0LDcgKzIzNCw3IEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bVBhaXI+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKENy
CiAgICAgICAgIHBhcmFtZXRlcnMgPSBhZG9wdFJlZigqbmV3IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkKTsKICAgICB9IGVsc2UgewogICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGFsZ29yaXRobSAiICsgbV9qd2tBbGdvcml0
aG1OYW1lKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKCFzdWdnZXN0ZWRBbGdvcml0aG0pCkBAIC0yNDQsMTEg
KzI0NCwxMSBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBKU0NyeXB0b0tleVNlcmlh
bGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29yaXRobShDcgogICAgICAgICByZXR1cm4gQ3J5cHRv
QWxnb3JpdGhtUGFpciB7IHN1Z2dlc3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1ldGVycyB9
OwogCiAgICAgaWYgKGFsZ29yaXRobS0+aWRlbnRpZmllcigpICE9IHN1Z2dlc3RlZEFsZ29yaXRo
bS0+aWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChhbGdvcml0aG0tPmlkZW50aWZpZXIoKSA9PSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDKSB7CiAgICAgICAgIGlmIChkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZD4oKnBhcmFtZXRlcnMpLmhhc2ggIT0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+KCpzdWdnZXN0ZWRQYXJh
bWV0ZXJzKS5oYXNoKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQ3J5cHRvQWxnb3JpdGhtUGFpciB7
IHN1Z2dlc3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1ldGVycyB9OwogICAgIH0KICAgICBp
ZiAoYWxnb3JpdGhtLT5pZGVudGlmaWVyKCkgPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBU1NBX1BLQ1MxX3YxXzUKQEAgLTI1OCw3ICsyNTgsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdv
cml0aG1QYWlyPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29yaXRo
bShDcgogICAgICAgICBBU1NFUlQocnNhS2V5UGFyYW1ldGVycy5oYXNIYXNoKTsKICAgICAgICAg
aWYgKHN1Z2dlc3RlZFJTQUtleVBhcmFtZXRlcnMuaGFzSGFzaCkgewogICAgICAgICAgICAgaWYg
KHN1Z2dlc3RlZFJTQUtleVBhcmFtZXRlcnMuaGFzaCAhPSByc2FLZXlQYXJhbWV0ZXJzLmhhc2gp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiBDcnlwdG9BbGdvcml0aG1QYWlyIHsg
c3VnZ2VzdGVkQWxnb3JpdGhtLCBzdWdnZXN0ZWRQYXJhbWV0ZXJzIH07CiAgICAgICAgIH0KICAg
ICAgICAgc3VnZ2VzdGVkUlNBS2V5UGFyYW1ldGVycy5oYXNIYXNoID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpX
Sy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9u
SldLLmgKaW5kZXggMWE3OGEzMTRlYTE0NWM3M2E2OTAzZjVjYzM3MTUwMTJmYjY2NWI4Zi4uNDdh
NWEwM2JlNDJiNDZjNTViNGMxMTYxNTVlOTA4YmYyMjA3ZWU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmgK
QEAgLTUxLDcgKzUxLDcgQEAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLKTsKICAgICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQ3J5cHRvS2V5Jik7CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8Q3J5cHRv
QWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSosIENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtKiwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZvaWQgcmVjb25jaWxlVXNhZ2VzKENyeXB0b0tleVVzYWdlQml0bWFw
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNvbmNpbGVFeHRyYWN0YWJsZShib29sJikg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5o
CmluZGV4IDlkOWYxMDliZWFmNjBkMGY0YjIyNDMzM2Q3NGJiM2RiZDRmNDA4ZWQuLjc2N2Y5NTQ3
OTAwNjI3YTE1MTg1YWEwMzVkNjg5YmUzZTY2N2JlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydC5oCkBAIC01Myw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXI+IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6UmV0
dXJuVHlwCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnREaWN0aW9uYXJ5KEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gU3BlY2lhbGl6ZWQgYnkgZ2VuZXJhdGVkIGNv
ZGUgZm9yIElETCBlbnVtZXJhdGlvbiBjb252ZXJzaW9uLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
T3B0aW9uYWw8VD4gcGFyc2VFbnVtZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGQ6Om9wdGlvbmFsPFQ+IHBhcnNlRW51bWVyYXRp
b24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCBjb252ZXJ0RW51bWVyYXRpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcygp
OwogCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0
aW9uYWxDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgdHJ1ZT4gewotICAgIHN0YXRpYyBPcHRpb25h
bDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVl
IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldHVyblR5cGU+IGNvbnZlcnQoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gUmV0dXJuVHlwZShDb252ZXJ0ZXI8VD46OmNvbnZlcnQoc3RhdGUsIHZhbHVlKSk7CiAg
ICAgfQpAQCAtMTAzNCw5ICsxMDM0LDkgQEAgc3RydWN0IENvbmRpdGlvbmFsQ29udmVydGVyPFJl
dHVyblR5cGUsIFQsIHRydWU+IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlw
ZW5hbWUgVD4KIHN0cnVjdCBDb25kaXRpb25hbENvbnZlcnRlcjxSZXR1cm5UeXBlLCBULCBmYWxz
ZT4gewotICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldHVyblR5cGU+
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9Owog
CkBAIC0xMTM0LDcgKzExMzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPiBzdHJ1Y3QgQ29u
dmVydGVyPElETFVuaW9uPFQuLi4+PiA6IERlZmF1bHRDb252ZXJ0ZXI8SURMVQogICAgICAgICAv
LyAgICAgMi4gSWYgdHlwZXMgaW5jbHVkZXMgb2JqZWN0LCB0aGVuIHJldHVybiB0aGUgSURMIHZh
bHVlIHRoYXQgaXMgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBWLgogICAgICAgICAvLyAgICAg
ICAgIChGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG9iamVjdCBhbmQgc3RlcCA0LjIpCiAgICAgICAg
IGlmIChicmlnYW5kOjphbnk8VHlwZUxpc3QsIElzSURMSW50ZXJmYWNlPGJyaWdhbmQ6Ol8xPj46
OnZhbHVlKSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxSZXR1cm5UeXBlPiByZXR1cm5WYWx1ZTsK
KyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CiAgICAg
ICAgICAgICBicmlnYW5kOjpmb3JfZWFjaDxJbnRlcmZhY2VUeXBlTGlzdD4oWyZdKGF1dG8mJiB0
eXBlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJldHVyblZhbHVlKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBU
PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8SURMVW5pb248VC4uLj4+IHsKICAgICB7CiAgICAgICAgIGF1
dG8gaW5kZXggPSB2YXJpYW50LmluZGV4KCk7CiAKLSAgICAgICAgT3B0aW9uYWw8SlNDOjpKU1Zh
bHVlPiByZXR1cm5WYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxKU0M6OkpTVmFsdWU+IHJl
dHVyblZhbHVlOwogICAgICAgICBicmlnYW5kOjpmb3JfZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8m
JiB0eXBlKSB7CiAgICAgICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFu
ZFJlZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CiAgICAgICAgICAgICBpZiAo
STo6dmFsdWUgPT0gaW5kZXgpIHsKQEAgLTEzMDIsMTMgKzEzMDIsMTMgQEAgbmFtZXNwYWNlIERl
dGFpbCB7CiAgICAgc3RydWN0IFZhcmlhZGljQ29udmVydGVyQmFzZSB7CiAgICAgICAgIHVzaW5n
IEl0ZW0gPSB0eXBlbmFtZSBJRExUeXBlOjpJbXBsZW1lbnRhdGlvblR5cGU7CiAKLSAgICAgICAg
c3RhdGljIE9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgdmFsdWUpCisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0ZW0+IGNvbnZl
cnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGF1dG8mIHZtID0gc3RhdGUudm0oKTsKICAgICAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBDb252ZXJ0ZXI8SURMVHlwZT46OmNvbnZlcnQoc3RhdGUsIHZhbHVlKTsKLSAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE51bGxvcHQpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKICAgICAgICAgfQpAQCAtMTMxOCwxMiArMTMxOCwxMiBAQCBuYW1l
c3BhY2UgRGV0YWlsIHsKICAgICBzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXJCYXNlPElETEludGVy
ZmFjZTxUPj4gewogICAgICAgICB1c2luZyBJdGVtID0gc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxU
PjsKIAotICAgICAgICBzdGF0aWMgT3B0aW9uYWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SXRlbT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKICAgICAgICAgewogICAgICAgICAgICAgYXV0byogcmVzdWx0ID0gQ29udmVydGVyPElETElu
dGVyZmFjZTxUPj46OmNvbnZlcnQoc3RhdGUsIHZhbHVlKTsKICAgICAgICAgICAgIGlmICghcmVz
dWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPEl0ZW0+KCpyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxJdGVtPigqcmVzdWx0KTsK
ICAgICAgICAgfQogICAgIH07CiAKQEAgLTEzMzQsNyArMTMzNCw3IEBAIG5hbWVzcGFjZSBEZXRh
aWwgewogCiAgICAgICAgIHN0cnVjdCBSZXN1bHQgewogICAgICAgICAgICAgc2l6ZV90IGFyZ3Vt
ZW50SW5kZXg7Ci0gICAgICAgICAgICBPcHRpb25hbDxDb250YWluZXI+IGFyZ3VtZW50czsKKyAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29udGFpbmVyPiBhcmd1bWVudHM7CiAgICAgICAgIH07
CiAgICAgfTsKIH0KQEAgLTEzNDMsNyArMTM0Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5
cGU+IHR5cGVuYW1lIERldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OlJlc3VsdCBj
CiB7CiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAo
c3RhcnRJbmRleCA+IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHsgMCwgTnVsbG9wdCB9OworICAg
ICAgICByZXR1cm4geyAwLCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIHR5cGVuYW1lIERldGFpbDo6
VmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OkNvbnRhaW5lciByZXN1bHQ7CiAgICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7CkBAIC0xMzUxLDcg
KzEzNTEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiB0eXBlbmFtZSBEZXRhaWw6OlZh
cmlhZGljQ29udmVydGVyPElETFR5cGU+OjpSZXN1bHQgYwogICAgIGZvciAoc2l6ZV90IGkgPSBz
dGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IERldGFp
bDo6VmFyaWFkaWNDb252ZXJ0ZXI8SURMVHlwZT46OmNvbnZlcnQoc3RhdGUsIHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biB7IGksIE51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7IGksIHN0ZDo6bnVsbG9wdCB9
OwogICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKnZhbHVlKSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggYjU4
MmRiMGY1NmQ3MjMyODk1MjBjZTY2YzBlMzBlZjE1MjcxMjE4My4uM2M1ZmUwZTNmMTdlMDc3MzIx
NmIxNWZkNWNmZTVmZTU5MGFiMDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01JdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NSXRlcmF0b3IuaApAQCAtMTE5LDcgKzExOSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlciwgdHlwZW5hbWUgSXRlcmF0b3JUcmFpdHM+IGNsYXNzIEpTRE9NSXRlcmF0b3IgOiBwdWJs
CiAKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CiAKLSAgICBPcHRpb25h
bDx0eXBlbmFtZSBET01XcmFwcGVkOjpJdGVyYXRvcj4gbV9pdGVyYXRvcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPHR5cGVuYW1lIERPTVdyYXBwZWQ6Okl0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIEl0
ZXJhdGlvbktpbmQgbV9raW5kOwogfTsKIApAQCAtMjM2LDcgKzIzNiw3IEBAIEpTQzo6SlNWYWx1
ZSBKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0CiAgICAgICAgIGF1dG8gaXRlcmF0b3JWYWx1ZSA9IG1faXRlcmF0b3ItPm5l
eHQoKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoJnN0YXRlLCBhc0pTKHN0YXRlLCBpdGVyYXRvclZhbHVl
KSwgZmFsc2UpOwotICAgICAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICAgICAgbV9pdGVy
YXRvciA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVz
dWx0T2JqZWN0KCZzdGF0ZSwgSlNDOjpqc1VuZGVmaW5lZCgpLCB0cnVlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggM2FmZjVjODJlOGQxMTNkNTBk
NTYwYzQzMjgwOTU3NDIxMTI3ZGQ4Mi4uY2IxYzMyOTFkMDYzOTc5NTdlYjBlNDMwOWY3M2UzNGJj
ZWFjMDk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAg
LTIwNiwxMSArMjA2LDIwIEBAIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlv
bihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZT4gY2xhc3Mg
RE9NUHJvbWlzZSB7CiBwdWJsaWM6CiAgICAgRE9NUHJvbWlzZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIGdlbmVyaWNQcm9taXNlKSA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUoZ2VuZXJpY1By
b21pc2UpKSB7IH0KLQogICAgIERPTVByb21pc2UoRE9NUHJvbWlzZSYmIHByb21pc2UpIDogbV9w
cm9taXNlRGVmZXJyZWQoV1RGTW92ZShwcm9taXNlLm1fcHJvbWlzZURlZmVycmVkKSkgeyB9Cisg
ICAgRE9NUHJvbWlzZShjb25zdCBET01Qcm9taXNlJiBvdGhlcikgOiBtX3Byb21pc2VEZWZlcnJl
ZChvdGhlci5tX3Byb21pc2VEZWZlcnJlZC5jb3B5UmVmKCkpIHsgfQorCisgICAgRE9NUHJvbWlz
ZSYgb3BlcmF0b3I9KGNvbnN0IERPTVByb21pc2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9w
cm9taXNlRGVmZXJyZWQgPSBvdGhlci5jb3B5UmVmKCk7CisgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICB9CiAKLSAgICBET01Qcm9taXNlKGNvbnN0IERPTVByb21pc2UmKSA9IGRlZmF1bHQ7Ci0g
ICAgRE9NUHJvbWlzZSYgb3BlcmF0b3I9KERPTVByb21pc2UgY29uc3QmKSA9IGRlZmF1bHQ7Cisg
ICAgRE9NUHJvbWlzZSYgb3BlcmF0b3I9KERPTVByb21pc2UmJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIG1fcHJvbWlzZURlZmVycmVkID0gV1RGTW92ZShvdGhlci5tX3Byb21pc2VEZWZlcnJlZCk7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
ID0gVmFsdWU+CiAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfdm9pZDxUPjo6
dmFsdWUsIHZvaWQ+Ojp0eXBlIHJlc29sdmUodHlwZW5hbWUgUHJvbWlzZVJlc3VsdEluc3BlY3Rv
cjxWYWx1ZT46OlR5cGUgdmFsdWUpIHsgbV9wcm9taXNlRGVmZXJyZWQtPnJlc29sdmUodmFsdWUp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKaW5kZXggNDI4NzY5Mzk0NGJmYWY5NGViYjk2ZmY3NjY5MDU3ZmVjNDQ1OWViNC4uNDVhMzY1
MzVkMGE0Y2YwNTY0MDVkYzliMzQyNjBmM2VlZmU1ZWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0CiB7CiAgICAgLy8gKDEpIEZpcnN0LCBpbmRleGVkIHBy
b3BlcnRpZXMuCiAgICAgLy8gSGFuZCBvZmYgYWxsIGluZGV4ZWQgYWNjZXNzIHRvIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgsIHdoaWNoIHN1cHBvcnRzIHRoZSBpbmRleGVkIGdldHRlci4KLSAg
ICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2Jq
ZWN0LCBzdGF0ZSwgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAKICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTRE9NV2luZG93Kj4ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmgKaW5kZXggMDhjMTQ5YTU4MTc0YjNiYTRjMzJiM2E4ODczY2NhN2U5
OGE5ZjY2OC4uZjY1Nzg4MzIyMjU2YmM4NzE4NzBkMGIwZmZhZjVkZjhjZjMzZDgzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmgKQEAgLTEwNSwxMCArMTA1LDEw
IEBAIGNsYXNzIEpTRGljdGlvbmFyeSB7CiAgICAgR2V0UHJvcGVydHlSZXN1bHQgdHJ5R2V0UHJv
cGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUmKSBjb25zdDsKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE9wdGlvbmFsPFQ+
JiByZXN1bHQpCisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiBl
eGVjU3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgc3RkOjpvcHRpb25hbDxUPiYgcmVzdWx0KQog
ICAgIHsKICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IE51bGxvcHQ7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKaW5kZXggNDNmZjgyZTNkNmRhZmZjNGVkOTkyZGI1OGM3
ZDAxMmY1OWYyMTU4OS4uNjlkODcyN2I3NDA5ODI3NjI1ZTUwZmEyMzlmYWUxYWU5ZDViY2ZhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCkBAIC03MSw3
ICs3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNGaWxlKEV4
ZWNTdGF0ZSYgZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIFN0cmluZyBub3JtYWxpemVkVHlwZTsKLSAgICBPcHRpb25hbDxpbnQ2
NF90PiBsYXN0TW9kaWZpZWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBsYXN0TW9kaWZp
ZWQ7CiAKICAgICBhcmcgPSBleGVjLmFyZ3VtZW50KDIpOwogICAgIGlmICghYXJnLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNmQ3M2YxOGI2ODJkYzA0N2E3YWNi
Y2E5ZmQ1ZjE5Y2FiNzNmM2Y5OC4uZjk0MjY2YmUyMTczMDU1ODJhMGI4Yzk0ZDE1YjkxNTYyMTQ2
YzI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29s
bGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
QWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgLy8gU3VwcG9ydCBmb3IgZG9jdW1lbnQuYWxsKDxpbmRleD4pIGV0Yy4KICAg
ICAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KCpzdHJpbmcuaW1wbCgpKSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleCgqc3RyaW5nLmltcGwoKSkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwg
Y29sbGVjdGlvbi5pdGVtKGluZGV4LnZhbHVlKCkpKSk7CiAKICAgICAgICAgLy8gU3VwcG9ydCBm
b3IgZG9jdW1lbnQuaW1hZ2VzKCc8bmFtZT4nKSBldGMuCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgLy8gVGhlIHNlY29uZCBhcmcsIGlmIHNldCwgaXMgdGhlIGluZGV4
IG9mIHRoZSBpdGVtIHdlIHdhbnQKICAgICBTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KCpleGVjLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhleGVjKS5pbXBs
KCkpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eCgqZXhlYy0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYykuaW1wbCgpKSkgewogICAgICAg
ICBpZiAoYXV0byogaXRlbSA9IGNvbGxlY3Rpb24ubmFtZWRJdGVtV2l0aEluZGV4KHN0cmluZywg
aW5kZXgudmFsdWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMo
ZXhlYywganNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgKml0ZW0pKTsKICAgICB9CkBAIC0x
MTIsNyArMTEyLDcgQEAgSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBhcmd1
bWVudCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7Ci0g
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50Lmlt
cGwoKSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eCgqYXJndW1lbnQuaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxP
YmplY3QoKSwgd3JhcHBlZCgpLml0ZW0oaW5kZXgudmFsdWUoKSkpOwogICAgIHJldHVybiBuYW1l
ZEl0ZW1zKHN0YXRlLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgYXJndW1l
bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNzRlM2ViM2Q2NGU4MjY2OTRmMzZjM2M1NGQz
Yjg2NTMwZGNkODJkYS4uZDFjZmI3OWVjMzdkMzYyNWE0YTYzMjUyMDBiYjE4OWFmZWRjMTk2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTSFRNTENhbnZh
c0VsZW1lbnQ6OnRvRGF0YVVSTChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGF1dG8gdHlwZSA9IGNv
bnZlcnQ8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKLSAg
ICBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHk7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1
YWxpdHk7CiAgICAgYXV0byBxdWFsaXR5VmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgxKTsKICAgICBp
ZiAocXVhbGl0eVZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgIHF1YWxpdHkgPSBxdWFsaXR5VmFs
dWUudG9OdW1iZXIoJnN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ltYWdlQ29uc3RydWN0b3IuY3BwCmluZGV4IDQwODJiMWZhZDJiZmYwN2ZmOWIyOTc3NjRjNDhl
ZDM4NjcxOGVkOTguLmQ2OWVkNzZmODE5ZmVlNTAzZDZlMmQxOWYzNjEwMjliNDRhOTNhMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNw
cApAQCAtNTgsOCArNTgsOCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTSW1hZ2VDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiAgICAgLy8gYWRkZWQgdG8gdGhl
IHdpbmRvdyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhhdCBKU0RvY3VtZW50Ojp2
aXNpdAogICAgIC8vIHdpbGwgYmUgY2FsbGVkLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBpbWFnZSBl
bGVtZW50IHRvIGJlIG1hcmtlZCBpZiBuZWNlc3NhcnkuCiAgICAgdG9KUyhzdGF0ZSwganNDb25z
dHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksICpkb2N1bWVudCk7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHdpZHRoOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQ7CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0
OwogICAgIGlmIChzdGF0ZS0+YXJndW1lbnRDb3VudCgpID4gMCkgewogICAgICAgICB3aWR0aCA9
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihzdGF0ZSk7CiAgICAgICAgIGlm
IChzdGF0ZS0+YXJndW1lbnRDb3VudCgpID4gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAppbmRleCBkZjdlMTg0M2RiYmRiMTRi
NzI1OThiNzZlMTViYTgzMzI0YWY0ZDZjLi4zNTI5NjlmZTg5M2E0ODYwZDA2Mzk5NmM2Y2E0NWE4
Njk3N2EwNTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRp
YURldmljZXNDdXN0b20uY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVTdHJpbmdDb25zdHJhaW50V2l0aExpc3QoU3RyaW5nQ29uc3RyYWludCYgY29uc3RyYWludCwg
dm9pCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRl
U3RyaW5nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNl
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUsIENvbnN0cmFp
bnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
Q29uc3RyYWludD4gY3JlYXRlU3RyaW5nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRp
YVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFpbnRU
eXBlIHR5cGUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQogewogICAgIGF1
dG8gY29uc3RyYWludCA9IFN0cmluZ0NvbnN0cmFpbnQobmFtZSwgdHlwZSk7CiAKQEAgLTg1LDcg
Kzg1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmluZ0Nv
bnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWEKIAogICAgICAgICBpZiAoY29uc3RyYWlu
dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0
cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5
IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJz
LiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQpOwpAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlU3RyaW5nQ29uc3RyYWludChjb25zdCBE
aWN0aW9uYXJ5JiBtZWRpYQogCiAgICAgICAgIGlmIChjb25zdHJhaW50LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jp
bmcgc3RyaW5nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGFycmF5IHZhbHVlIHNpbmNlIGl0IGlzIGVt
cHR5LiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKQEAgLTExNywxMCArMTE3LDEwIEBAIHN0YXRpYyBP
cHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERp
Y3Rpb25hcnkmIG1lZGlhCiAKICAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAgICAg
TE9HKE1lZGlhLCAiY3JlYXRlU3RyaW5nQ29uc3RyYWludCgpIC0gaWdub3Jpbmcgc3RyaW5nIGNv
bnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNlcXVl
bmNlIG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
Qm9vbGVhbkNvbnN0cmFpbnQ+IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rpb25h
cnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29u
c3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0
cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBDb25zdHJhaW50U2V0VHlwZSBj
b25zdHJhaW50U2V0VHlwZSkKIHsKICAgICBhdXRvIGNvbnN0cmFpbnQgPSBCb29sZWFuQ29uc3Ry
YWludChuYW1lLCB0eXBlKTsKIApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxC
b29sZWFuQ29uc3RyYWludD4gY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFy
eSYgbWVkCiAKICAgICAgICAgaWYgKGNvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBMT0coTWVkaWEsICJjcmVhdGVCb29sZWFuQ29uc3RyYWludCgpIC0gaWdub3JpbmcgYm9vbGVh
biBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2
YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsK
QEAgLTE1NiwxMCArMTU2LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4g
Y3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkCiAKICAgICAvLyBJ
bnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNv
bnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhh
cyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRh
dGEoKSk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZURvdWJsZUNvbnN0cmFp
bnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBDb25zdHJhaW50U2V0VHlwZSBjb25z
dHJhaW50U2V0VHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGNy
ZWF0ZURvdWJsZUNvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBDb25z
dHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKIHsKICAgICBhdXRvIGNvbnN0cmFpbnQg
PSBEb3VibGVDb25zdHJhaW50KG5hbWUsIHR5cGUpOwogCkBAIC0xODQsNyArMTg0LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoY29u
c3QgRGljdGlvbmFyeSYgbWVkaWEKIAogICAgICAgICBpZiAoY29uc3RyYWludC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoKSAtIGln
bm9yaW5nIGRvdWJsZSBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNl
IGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV1RGTW92ZShj
b25zdHJhaW50KTsKQEAgLTIwMywxMCArMjAzLDEwIEBAIHN0YXRpYyBPcHRpb25hbDxEb3VibGVD
b25zdHJhaW50PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlh
CiAKICAgICAvLyBJbnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAgICAgTE9HKE1lZGlhLCAiY3Jl
YXRlRG91YmxlQ29uc3RyYWludCgpIC0gaWdub3JpbmcgZG91YmxlIGNvbnN0cmFpbnQgJyVzJyBz
aW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1l
LnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBjcmVhdGVJbnRDb25z
dHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWludFNldFR5cGUg
Y29uc3RyYWludFNldFR5cGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBj
cmVhdGVJbnRDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50
U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgQ29uc3Ry
YWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCiB7CiAgICAgYXV0byBjb25zdHJhaW50ID0g
SW50Q29uc3RyYWludChuYW1lLCB0eXBlKTsKIApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBP
cHRpb25hbDxJbnRDb25zdHJhaW50PiBjcmVhdGVJbnRDb25zdHJhaW50KGNvbnN0IERpY3Rpb25h
cnkmIG1lZGlhVHJhY2tDCiAKICAgICAgICAgaWYgKGNvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVJbnRDb25zdHJhaW50KCkgLSBpZ25vcmluZyBs
b25nIGNvbnN0cmFpbnQgJyVzJyB3aXRoIGRpY3Rpb25hcnkgdmFsdWUgc2luY2UgaXQgaGFzIG5v
IHZhbGlkIG9yIHN1cHBvcnRlZCBrZXkvdmFsdWUgcGFpcnMuIiwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBXVEZNb3ZlKGNvbnN0cmFpbnQp
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBjcmVh
dGVJbnRDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDCiAKICAgICAvLyBJ
bnZhbGlkIGNvbnN0cmFpbnQgdmFsdWUuCiAgICAgTE9HKE1lZGlhLCAiY3JlYXRlSW50Q29uc3Ry
YWludCgpIC0gaWdub3JpbmcgbG9uZyBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRo
ZXIgYSBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0
aWMgdm9pZCBwYXJzZU1lZGlhVHJhY2tDb25zdHJhaW50U2V0Rm9yS2V5KGNvbnN0IERpY3Rpb25h
cnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwJiBtYXAsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRU
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0
bGVDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4IGFjOWI1ZDMwNDc1M2ZiMGQxNzI3OGIyODJlNWM4
ZmE0YTA2NGY1MzMuLmIzY2FhMmM4MDJhMDdkZmUwNDgwOWIzYzcyYjg4Njg3MzUyNGUxMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRv
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRL
ZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgQ3J5cHRvT3Bl
cmF0aQogCiAgICAgQVNTRVJUKGtleVNlcmlhbGl6YXRpb24pOwogCi0gICAgT3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlZFJlc3VsdCA9IGtleVNlcmlhbGl6YXRpb24tPnJl
Y29uY2lsZUFsZ29yaXRobShhbGdvcml0aG0uZ2V0KCksIHBhcmFtZXRlcnMuZ2V0KCkpOworICAg
IHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlZFJlc3VsdCA9IGtl
eVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUFsZ29yaXRobShhbGdvcml0aG0uZ2V0KCksIHBhcmFt
ZXRlcnMuZ2V0KCkpOwogICAgIGlmICghcmVjb25jaWxlZFJlc3VsdCkgewogICAgICAgICBpZiAo
IXNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJBbGdvcml0aG0gc3BlY2lmaWVkIGluIGtleSBpcyBub3QgY29t
cGF0aWJsZSB3aXRoIG9uZSBwYXNzZWQgdG8gaW1wb3J0S2V5IGFzIGFyZ3VtZW50IikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAy
MDg3YTg2ZjczZjZiMjZiNDc3ODUzNGRhNmRkMWJhZjdhNGE5MDczLi4yZjNmMjBjMGJhMWNiNzI1
MDRmMTY0ODhiNDY0MzRmMTMwMGUwNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhDYWNoZWRNb2R1bGVTY3JpcHQm
IG1vZHVsZVNjcmlwCiAgICAgICAgICAgICBpZiAoc3ltYm9sLT5wcml2YXRlTmFtZSgpID09IG1v
ZHVsZUxvYWRlckFscmVhZHlSZXBvcnRlZEVycm9yU3ltYm9sKSB7CiAgICAgICAgICAgICAgICAg
bW9kdWxlU2NyaXB0LT5ub3RpZnlMb2FkRmFpbGVkKExvYWRhYmxlU2NyaXB0OjpFcnJvciB7CiAg
ICAgICAgICAgICAgICAgICAgIExvYWRhYmxlU2NyaXB0OjpFcnJvclR5cGU6OkNhY2hlZFNjcmlw
dCwKLSAgICAgICAgICAgICAgICAgICAgTnVsbG9wdAorICAgICAgICAgICAgICAgICAgICBzdGQ6
Om51bGxvcHQKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfQpAQCAtNjM3LDcgKzYz
Nyw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJTY3JpcHRPYmplY3RzKCkKIAogSlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUpIDogTnVsbG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdl
c3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAg
U2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKSk7CiAKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0
KSB8fCBpc1BhdXNlZCgpKQpAQCAtNjYzLDcgKzY2Myw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxl
cjo6Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJl
YXNvCiAKIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBFeGNlcHRpb25EZXRhaWxzKiBleGNl
cHRpb25EZXRhaWxzKQogewotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IoZm9yY2VVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogTnVsbG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gc3RkOjpvcHRpb25hbDxQ
cm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6
bnVsbG9wdCk7CiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3Jp
cHQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpLCBleGNlcHRpb25EZXRhaWxzKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCA1MmNiNjE1Y2M4YTI3M2RkODY1ODBlYmQ0YjYwYmYwNzM1OTZiZmM5Li4yNGY0YmVm
ZGE3YTZlMGNiM2Y1Y2IwYjkyZTJlNDNlMzczZjM3NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDA3LDcgKzQwNyw3
IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKICAgICB9OwogCiAgICAgaWYg
KCRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlT
bG90SW1wbCwgIiAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJ
bXBsLCAiICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSk7XG4iKTsKIAogICAgICAgICAjIElmIHRoZSBpdGVtIGZ1bmN0aW9u
IHJldHVybnMgYSBzdHJpbmcgdGhlbiB3ZSBsZXQgdGhlIFRyZWF0UmV0dXJuZWROdWxsU3RyaW5n
QXMgaGFuZGxlIHRoZSBjYXNlcwogICAgICAgICAjIHdoZXJlIHRoZSBpbmRleCBpcyBvdXQgb2Yg
cmFuZ2UuCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCBzdWIgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxl
bWVudGF0aW9uQ29udGVudAogICAgICMgRklYTUU6IENoYW5nZSB0byB0YWtlIFZNJiBpbnN0ZWFk
IG9mIEV4ZWNTdGF0ZSYuCiAgICAgIyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgdG9TdHJpbmdPck51
bGwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tpbmcgZmFzdGVyLgogICAgICMgRklYTUU6IENvbnNp
ZGVyIGZpbmRpbmcgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gbWF0Y2ggYWdhaW5zdCBhbGwgdGhl
IHN0cmluZ3MgcXVpY2tseS4KLSAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRj
bGFzc05hbWU+IHBhcnNlRW51bWVyYXRpb248JGNsYXNzTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSlcbiI7CisgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBzdGQ6Om9wdGlv
bmFsPCRjbGFzc05hbWU+IHBhcnNlRW51bWVyYXRpb248JGNsYXNzTmFtZT4oRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAgJHJlc3VsdCAuPSAie1xuIjsKICAgICAkcmVz
dWx0IC49ICIgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7
XG4iOwogICAgIGZvcmVhY2ggbXkgJHZhbHVlIChAeyRlbnVtZXJhdGlvbi0+dmFsdWVzfSkgewpA
QCAtMTAxMiw3ICsxMDEyLDcgQEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlv
bkNvbnRlbnQKICAgICAgICAgfQogICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVybiAk
e2NsYXNzTmFtZX06OiR7ZW51bWVyYXRpb25WYWx1ZU5hbWV9O1xuIjsKICAgICB9Ci0gICAgJHJl
c3VsdCAuPSAiICAgIHJldHVybiBOdWxsb3B0O1xuIjsKKyAgICAkcmVzdWx0IC49ICIgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDtcbiI7CiAgICAgJHJlc3VsdCAuPSAifVxuXG4iOwogCiAgICAgJHJl
c3VsdCAuPSAidGVtcGxhdGU8PiAkY2xhc3NOYW1lIGNvbnZlcnRFbnVtZXJhdGlvbjwkY2xhc3NO
YW1lPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKVxuIjsKQEAgLTEwNjMsNyArMTA2
Myw3IEBAIHN1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSGVhZGVyQ29udGVudAogICAgIG15ICRyZXN1
bHQgPSAiIjsKICAgICAkcmVzdWx0IC49ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIiBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBKU0M6OkpT
U3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgJGNsYXNzTmFt
ZSk7XG5cbiI7Ci0gICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBPcHRpb25hbDwkY2xhc3NOYW1l
PiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTtcbiI7CisgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPCRjbGFz
c05hbWU+IHBhcnNlRW51bWVyYXRpb248JGNsYXNzTmFtZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OkpTVmFsdWUpO1xuIjsKICAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+ICRjbGFzc05hbWUgY29u
dmVydEVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
KTtcbiI7CiAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzPCRjbGFzc05hbWU+KCk7XG5cbiI7CiAgICAgJHJlc3VsdCAuPSAiI2Vu
ZGlmXG5cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTExOCw3ICsxMTE4LDcgQEAgc3Vi
IEdlbmVyYXRlRGVmYXVsdFZhbHVlCiAgICAgfQogICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJu
dWxsIikgewogICAgICAgICBpZiAoJHR5cGUtPmlzVW5pb24pIHsKLSAgICAgICAgICAgIHJldHVy
biAiTnVsbG9wdCIgaWYgJHR5cGUtPmlzTnVsbGFibGU7CisgICAgICAgICAgICByZXR1cm4gInN0
ZDo6bnVsbG9wdCIgaWYgJHR5cGUtPmlzTnVsbGFibGU7CiAKICAgICAgICAgICAgIG15ICRJRExU
eXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAgICAgICAgICAgICByZXR1cm4g
ImNvbnZlcnQ8JHtJRExUeXBlfT4oc3RhdGUsIGpzTnVsbCgpKTsiOwpAQCAtMTEyNiw3ICsxMTI2
LDcgQEAgc3ViIEdlbmVyYXRlRGVmYXVsdFZhbHVlCiAgICAgICAgIHJldHVybiAianNOdWxsKCki
IGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogICAgICAgICByZXR1cm4gIm51bGxwdHIiIGlmICRj
b2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNU
eXBlZEFycmF5VHlwZSgkdHlwZSk7CiAgICAgICAgIHJldHVybiAiU3RyaW5nKCkiIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwotICAgICAgICByZXR1cm4gIk51bGxvcHQi
OworICAgICAgICByZXR1cm4gInN0ZDo6bnVsbG9wdCI7CiAgICAgfQogICAgIGlmICgkZGVmYXVs
dFZhbHVlIGVxICJbXSIpIHsKICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBl
KCRpbnRlcmZhY2UsICR0eXBlKTsKQEAgLTM0MjMsNyArMzQyMyw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21JbmRleGVkU2V0dGVyfSkgewotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHRoaXNPYmplY3QtPmluZGV4U2V0dGVyKHN0YXRlLCBpbmRleC52YWx1ZSgp
LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB9XG4iKTsKQEAgLTQ0MTgsNyArNDQxOCw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgICAgICAgICAgbXkgJGFyZ3VtZW50TG9va3VwTWV0aG9kID0gJGFyZ3VtZW50LT5p
c09wdGlvbmFsID8gImFyZ3VtZW50IiA6ICJ1bmNoZWNrZWRBcmd1bWVudCI7CiAKICAgICAgICAg
ICAgIGlmICgkYXJndW1lbnQtPmlzT3B0aW9uYWwgJiYgIWRlZmluZWQoJGFyZ3VtZW50LT5kZWZh
dWx0KSkgewotICAgICAgICAgICAgICAgICRuYXRpdmVUeXBlID0gIk9wdGlvbmFsPCRjbGFzc05h
bWU+IjsKKyAgICAgICAgICAgICAgICAkbmF0aXZlVHlwZSA9ICJzdGQ6Om9wdGlvbmFsPCRjbGFz
c05hbWU+IjsKICAgICAgICAgICAgICAgICAkb3B0aW9uYWxWYWx1ZSA9ICRuYW1lOwogICAgICAg
ICAgICAgICAgICRkZWZpbmVPcHRpb25hbFZhbHVlID0gJG5hbWU7CiAgICAgICAgICAgICB9CkBA
IC00NDczLDggKzQ0NzMsOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICAgICAkb3V0ZXIgPSAic3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJ
bmRleCkuaXNVbmRlZmluZWQoKSA/ICRkZWZhdWx0VmFsdWUgOiAiOwogICAgICAgICAgICAgICAg
ICRpbm5lciA9ICJzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpIjsKICAg
ICAgICAgICAgIH0gZWxzaWYgKCRhcmd1bWVudC0+aXNPcHRpb25hbCAmJiAhZGVmaW5lZCgkYXJn
dW1lbnQtPmRlZmF1bHQpKSB7Ci0gICAgICAgICAgICAgICAgIyBVc2UgV1RGOjpPcHRpb25hbDw+
KCkgZm9yIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGFyZSBtaXNzaW5nIG9yIHVuZGVmaW5lZCBh
bmQgdGhhdCBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgaW4gdGhlIElETC4KLSAgICAgICAg
ICAgICAgICAkb3V0ZXIgPSAic3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJ
bmRleCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPCRuYXRpdmVUeXBlPigpIDogIjsKKyAgICAg
ICAgICAgICAgICAjIFVzZSBzdGQ6Om9wdGlvbmFsPD4oKSBmb3Igb3B0aW9uYWwgYXJndW1lbnRz
IHRoYXQgYXJlIG1pc3Npbmcgb3IgdW5kZWZpbmVkIGFuZCB0aGF0IGRvIG5vdCBoYXZlIGEgZGVm
YXVsdCB2YWx1ZSBpbiB0aGUgSURMLgorICAgICAgICAgICAgICAgICRvdXRlciA9ICJzdGF0ZS0+
JGFyZ3VtZW50TG9va3VwTWV0aG9kKCRhcmd1bWVudEluZGV4KS5pc1VuZGVmaW5lZCgpID8gc3Rk
OjpvcHRpb25hbDwkbmF0aXZlVHlwZT4oKSA6ICI7CiAgICAgICAgICAgICAgICAgJGlubmVyID0g
InN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkiOwogICAgICAgICAgICAg
fSBlbHNpZiAoKCRhcmd1bWVudC0+dHlwZS0+bmFtZSBlcSAiRXZlbnRMaXN0ZW5lciIgfHwgJGFy
Z3VtZW50LT50eXBlLT5uYW1lIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSAmJiAoJGFyZ3VtZW50LT5p
c09wdGlvbmFsIHx8ICR0eXBlLT5pc051bGxhYmxlKSkgewogICAgICAgICAgICAgICAgICRvdXRl
ciA9ICIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKaW5kZXggMjQ1MGRkOTVhMDQzM2I1Y2U0OTMxZGQ0
YzEwMjIxYWMzNzhhYmMzYi4uYmMzNmM0MjA2YjE0ZWI1ZTFkYTY5NTE1YWIxNjU2ZjE1MGI5MTJk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBKU0Zsb2F0
NjRBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGUKIHsKICAgICBKU0Zsb2F0NjRBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0Zsb2F0NjRBcnJheSo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUo
KSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJheSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0
aCgpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgdGhpc09iamVjdC0+Z2V0
QnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTg2LDcgKzE4Niw3IEBAIGJvb2wgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsCiB7CiAgICAgSlNGbG9hdDY0
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAg
ICAgaWYgKGluZGV4ICYmIGluZGV4LnZhbHVlKCkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkq
Pih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkgewogICAgICAgICBkZXNjcmlwdG9yLnNl
dERlc2NyaXB0b3IodGhpc09iamVjdC0+Z2V0QnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpKSwg
RG9udERlbGV0ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZv
aWQgSlNGbG9hdDY0QXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtCiB7CiAgICAgSlNGbG9hdDY0QXJyYXkqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICB0
aGlzT2JqZWN0LT5pbmRleFNldHRlcihleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBlNjEzY2Fj
ZDI0MDNiZmFhZDg2Mjg5MGMzMGRlNWJmZWEzNjIzMjNhLi43YTVjMDAxNDk2NjM4N2RlYzkyNDM5
YWY1NGQ2MDNkMTk0ZjUxYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTEyOCw3
ICsxMjgsNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUAogewogICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBPcHRpb25hbDx1aW50MzJf
dD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
OwogICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUoKSA8IHRoaXNP
YmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IG9w
dGlvbmFsSW5kZXgudmFsdWUoKTsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IFJlYWRP
bmx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCAxNWVmNGVkN2M5MjRkNGMzOWViYTZkODAxOGY4OTQyODc2NTUz
YWVkLi5hZWUwOWVmNWMyZjQzN2E3MGIzNDY3OWFiZDM5MGE4MmRkNDA4YjYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtMTA1LDcgKzEwNSw3IEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJh
dGlvblRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgVGVzdE9iajo6RW51bVR5cGUKICAgICByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVt
ZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1U
eXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1U
eXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0
cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5pc0VtcHR5KCkpCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oRXhlY1MKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6
OkVudW1UeXBlOjpFbnVtVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVl
MyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMzsKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+
IFRlc3RPYmo6OkVudW1UeXBlIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB0ZW1w
bGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYgc3RhdGUs
IFRlc3RPYmo6Ok9wdGlvbmFsCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwg
dmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVt
cGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpPcHRpb25hbD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
T2JqOjpPcHRpb25hbD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRl
PD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpPcHRpb25hbD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
T2JqOjpPcHRpb25hbD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3Ry
aW5nVmFsdWUuaXNFbXB0eSgpKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHRlbXBsYXRlPD4gT3B0aW9u
YWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+
KEV4ZWNTCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7
CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMyIpCiAgICAgICAgIHJldHVy
biBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTM7Ci0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpPcHRp
b25hbCBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0xOTUsMTQgKzE5NSwxNCBAQCB0ZW1wbGF0ZTw+IEpTU3Ry
aW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIEFsdGVybmF0ZUVu
dW1OYW1lCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0YXRp
Y19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBPcHRp
b25hbDxBbHRlcm5hdGVFbnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFt
ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRp
b25hbDxBbHRlcm5hdGVFbnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFt
ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1Zh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0g
ImVudW1WYWx1ZTEiKQogICAgICAgICByZXR1cm4gQWx0ZXJuYXRlRW51bU5hbWU6OkVudW1WYWx1
ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFsdWUyIikKICAgICAgICAgcmV0dXJu
IEFsdGVybmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUyOwotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gQWx0ZXJuYXRlRW51bU5hbWUg
Y29udmVydEVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQpAQCAtMjM0LDEyICsyMzQsMTIgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0T2JqOjpFbnVtQSBl
bnUKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFs
PFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RP
Ymo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dU
RlN0cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQSIpCiAgICAgICAgIHJl
dHVybiBUZXN0T2JqOjpFbnVtQTo6QTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1BIGNvbnZlcnRFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
QEAgLTI3MywxMiArMjczLDEyIEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJh
dGlvblRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgVGVzdE9iajo6RW51bUIgZW51CiAgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51
bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVt
Qj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtQj4gcGFy
c2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRl
KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkIiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6
RW51bUI6OkI7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQiBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9i
ajo6RW51bUI+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0zMTIsMTIgKzMx
MiwxMiBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNT
dGF0ZSYgc3RhdGUsIFRlc3RPYmo6OkVudW1DIGVudQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhD
YWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUp
XSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVy
YXRpb248VGVzdE9iajo6RW51bUM+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0
ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVyYXRpb248
VGVzdE9iajo6RW51bUM+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
YXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0
cmluZ1ZhbHVlID09ICJDIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1DOjpDOwotICAg
IHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRl
PD4gVGVzdE9iajo6RW51bUMgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzUxLDE0ICszNTEsMTQgQEAgdGVtcGxh
dGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBU
ZXN0T2JqOjpLaW5kIGVudW0KICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2
YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1w
bGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OktpbmQ+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
S2luZD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpv
cHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9
IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJxdWlj
ayIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpLaW5kOjpRdWljazsKICAgICBpZiAoc3RyaW5n
VmFsdWUgPT0gImRlYWQiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6RGVhZDsKLSAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0
ZTw+IFRlc3RPYmo6OktpbmQgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0zOTAsMTQgKzM5MCwxNCBAQCB0ZW1wbGF0
ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRl
c3RPYmo6OlNpemUgZW51bQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZh
bHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpT
aXplPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9w
dGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0g
dmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gInNtYWxs
IikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OlNpemU6OlNtYWxsOwogICAgIGlmIChzdHJpbmdW
YWx1ZSA9PSAibXVjaC1tdWNoLWxhcmdlciIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpTaXpl
OjpNdWNoTXVjaExhcmdlcjsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OlNpemUgY29udmVydEVudW1lcmF0aW9u
PFRlc3RPYmo6OlNpemU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC00Mjks
MTQgKzQyOSwxNCBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pT
KEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RPYmo6OkNvbmZpZGVuYwogICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9u
VmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVu
Y2U+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZT
dHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImhpZ2giKQogICAgICAgICBy
ZXR1cm4gVGVzdE9iajo6Q29uZmlkZW5jZTo6SGlnaDsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0g
ImtpbmRhLWxvdyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpDb25maWRlbmNlOjpLaW5kYUxv
dzsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0
ZW1wbGF0ZTw+IFRlc3RPYmo6OkNvbmZpZGVuY2UgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6
OkNvbmZpZGVuY2U+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC01NTQsNyAr
NTU0LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYKICAgICAgICAgcmVzdWx0Lm51bGxhYmxl
SW50ZWdlcldpdGhEZWZhdWx0ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExMb25nPj4oc3RhdGUs
IG51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdC5udWxs
YWJsZUludGVnZXJXaXRoRGVmYXVsdCA9IE51bGxvcHQ7CisgICAgICAgIHJlc3VsdC5udWxsYWJs
ZUludGVnZXJXaXRoRGVmYXVsdCA9IHN0ZDo6bnVsbG9wdDsKICAgICBKU1ZhbHVlIG51bGxhYmxl
Tm9kZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgIm51bGxhYmxlTm9kZSIp
KTsKICAgICBpZiAoIW51bGxhYmxlTm9kZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAg
cmVzdWx0Lm51bGxhYmxlTm9kZSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5v
ZGU+Pj4oc3RhdGUsIG51bGxhYmxlTm9kZVZhbHVlKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4oRXhlY1N0YXRlJgogICAgICAgICByZXN1bHQubnVsbGFibGVVbmlvbk1lbWJlciA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5pb248SURMTG9uZywgSURMSW50ZXJmYWNlPE5vZGU+
Pj4+KHN0YXRlLCBudWxsYWJsZVVuaW9uTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdC5u
dWxsYWJsZVVuaW9uTWVtYmVyID0gTnVsbG9wdDsKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5p
b25NZW1iZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgSlNWYWx1ZSByZXN0cmljdGVkRG91YmxlVmFs
dWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3Rh
dGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVzdHJpY3RlZERvdWJsZSIpKTsK
ICAgICBpZiAoIXJlc3RyaWN0ZWREb3VibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAg
IHJlc3VsdC5yZXN0cmljdGVkRG91YmxlID0gY29udmVydDxJRExEb3VibGU+KHN0YXRlLCByZXN0
cmljdGVkRG91YmxlVmFsdWUpOwpAQCAtMTgxNiw3ICsxODE2LDcgQEAgYm9vbCBKU1Rlc3RPYmo6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBQ
cm9wZXJ0eU4KIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9iaio+KG9i
amVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKG9wdGlvbmFsSW5kZXgpIHsKICAgICAg
ICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7CiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSBSZWFkT25seTsKQEAgLTUzNjksNyArNTM2OSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEVuCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBlbnVtQXJnVmFsdWUgPSBz
dGF0ZS0+YXJndW1lbnQoMCk7Ci0gICAgT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IGVudW1B
cmc7CisgICAgc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gZW51bUFyZzsKICAgICBp
ZiAoIWVudW1BcmdWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGVudW1BcmcgPSBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPigqc3RhdGUsIGVudW1BcmdWYWx1ZSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CkBAIC01OTkxLDcgKzU5OTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcgogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElE
TExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVy
c2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8
SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252
ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFs
QXJnKFdURk1vdmUob3B0KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTYwMzEsNyArNjAzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBub25PcHQgPSBjb252ZXJ0PElETExv
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIG9wdCA9IHN0YXRlLT5hcmd1bWVudCgx
KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29u
ZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBhdXRvIG9wdCA9IHN0YXRlLT5hcmd1bWVudCgxKS5p
c1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25D
b25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdB
bmRPcHRpb25hbEFyZyhXVEZNb3ZlKG5vbk9wdCksIFdURk1vdmUob3B0KSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwNTMsOSArNjA1Myw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25PcHRpb25hCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBub25PcHQgPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBh
dXRvIG9wdDEgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGlu
dDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0
byBvcHQxID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBh
dXRvIG9wdDIgPSBzdGF0ZS0+YXJndW1lbnQoMikuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGlu
dDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDIpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0
byBvcHQyID0gc3RhdGUtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDIpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhXVEZNb3ZlKG5v
bk9wdCksIFdURk1vdmUob3B0MSksIFdURk1vdmUob3B0MikpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MzA3LDcgKzYzMDcsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxMbwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgYXV0byBudW1iZXIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlv
bmFsPGludDY0X3Q+KCkgOiBjb252ZXJ0PElETExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwp
OworICAgIGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+KCkgOiBjb252ZXJ0PElETExvbmdMb25nPigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9u
OjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyhXVEZNb3ZlKG51
bWJlcikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02
MzQzLDcgKzYzNDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbgogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBudW1iZXIgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPHVpbnQ2NF90PigpIDogY29udmVydDxJRExV
bnNpZ25lZExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gbnVtYmVyID0g
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PigpIDogY29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKFdURk1vdmUobnVtYmVy
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYzNzks
NyArNjM3OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlCiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIGFycmF5ID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4oKSA6IGNvbnZlcnQ8SURM
U2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOworICAgIGF1dG8gYXJyYXkgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiBjb252ZXJ0PElETFNlcXVlbmNlPElE
TERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoV1RGTW92ZShhcnJheSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NDE1LDcgKzY0MTUsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxCbwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgYXV0byBiID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBP
cHRpb25hbDxib29sPigpIDogY29udmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byBiID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPGJvb2w+KCkgOiBjb252ZXJ0PElETEJvb2xlYW4+KCpz
dGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbihXVEZNb3ZlKGIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNjUyOCw3ICs2NTI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
UmUKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gcmVj
b3JkID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBOdWxsb3B0IDogY29udmVy
dDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHJlY29yZCA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpudWxsb3B0IDogY29udmVydDxJRExOdWxs
YWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKFdU
Rk1vdmUocmVjb3JkKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTY3ODksNyArNjc4OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQ2FsCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxh
YmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJvYmpBcmciLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIGxv
bmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMy
X3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBs
b25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzA5OCw3ICs3
MDk4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIG9iakFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNl
PFRlc3RPYmo+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIFtdKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJs
b2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVzdE9iaiIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1
dG8gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8
aW50MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBh
dXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0
aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKG9i
akFyZyksIFdURk1vdmUobG9uZ0FyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC03NTA1LDcgKzc1MDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25h
bAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBh
dXRvIGFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50
MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBhdXRv
IGFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxp
bnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETExvbmc+KFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0
aE9wdGlvbmFsKFdURk1vdmUoYXJnKSkpKTsKIH0KQEAgLTgwNjAsNyArODA2MCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlv
bmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7Cisg
ICAgYXV0byBhID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChXVEZNb3Zl
KGEpLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCmluZGV4IGM0NGIxZTRmNzFiZjkzMzMyNDgwNjhkN2JkNzFiZTQ0YmZj
MzFiMmMuLjJmMWRmNzUyNWZmOGViZTQ1NGUxNmNhYjIwNjNkMTc3M2ZiODU4NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
QEAgLTEwMywxOSArMTAzLDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZl
cnRlclRyYWl0czxUZXN0T2JqPiB7CiB9OwogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252
ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVzdE9iajo6RW51bVR5cGUpOwog
Ci10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OkVudW1UeXBlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1w
bGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248
VGVzdE9iajo6RW51bVR5cGU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBs
YXRlPD4gVGVzdE9iajo6RW51bVR5cGUgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1U
eXBlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNo
YXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCk7CiAKIHRl
bXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNT
dGF0ZSYsIFRlc3RPYmo6Ok9wdGlvbmFsKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2Jq
OjpPcHRpb25hbD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4oSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6
Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6Ok9wdGlvbmFsIGNvbnZl
cnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVz
PFRlc3RPYmo6Ok9wdGlvbmFsPigpOwogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZl
cnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBBbHRlcm5hdGVFbnVtTmFtZSk7CiAK
LXRlbXBsYXRlPD4gT3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248
QWx0ZXJuYXRlRW51bU5hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBs
YXRlPD4gc3RkOjpvcHRpb25hbDxBbHRlcm5hdGVFbnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxB
bHRlcm5hdGVFbnVtTmFtZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxh
dGU8PiBBbHRlcm5hdGVFbnVtTmFtZSBjb252ZXJ0RW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5h
bWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hh
ciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxBbHRlcm5hdGVFbnVtTmFtZT4oKTsKIApAQCAt
MTIzLDcgKzEyMyw3IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlczxBbHRlcm5hdGVFbnVtTmFtZT4oKTsKIAogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5n
KiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVzdE9iajo6RW51bUEp
OwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OkVudW1BPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0
ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6RW51bUE+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVz
dE9iajo6RW51bUEgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51
bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUE+KCk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCB0
ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6
RW51bUE+KCk7CiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9u
VG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RPYmo6OkVudW1CKTsKIAotdGVtcGxhdGU8PiBPcHRp
b25hbDxUZXN0T2JqOjpFbnVtQj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRl
c3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1CPihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1CIGNvbnZlcnRF
bnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUp
OwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RP
Ymo6OkVudW1CPigpOwogCkBAIC0xNDMsNyArMTQzLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBjaGFy
KiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1CPigpOwogCiB0ZW1wbGF0
ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUm
LCBUZXN0T2JqOjpFbnVtQyk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+
IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VF
bnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUp
OwogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQyBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6
RW51bUM+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3Qg
Y2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQz4oKTsKIApAQCAt
MTUxLDE5ICsxNTEsMTkgQEAgdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0
aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1DPigpOwogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcq
IGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBUZXN0T2JqOjpLaW5kKTsK
IAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RPYmo6OktpbmQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4g
c3RkOjpvcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Oktp
bmQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVzdE9iajo6
S2luZCBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6S2luZD4oSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9u
VmFsdWVzPFRlc3RPYmo6OktpbmQ+KCk7CiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RPYmo6OlNpemUpOwogCi10
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6U2l6ZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6
Om9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4o
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBUZXN0T2JqOjpTaXpl
IGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8VGVzdE9iajo6U2l6ZT4oKTsKIAogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0
RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVzdE9iajo6Q29uZmlkZW5jZSk7CiAK
LXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVtZXJhdGlv
bjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0
ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVtZXJh
dGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkNvbmZpZGVuY2UgY29udmVydEVudW1lcmF0aW9uPFRlc3RP
Ymo6OkNvbmZpZGVuY2U+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRl
PD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpDb25maWRl
bmNlPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAppbmRl
eCAxYTIzZTkzYTA0YzA4NWI1MjdmZWQzZmY4NGQ0ZjFjYWE0ZTk3ZDgzLi42OGFmYmQ2OWE0YmRh
ZDcxYzljYzBkNDk0ZjNhNjcxODM3YjIyZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFs
b25lRGljdGlvbmFyeS5jcHAKQEAgLTQzLDE0ICs0MywxNCBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5n
KiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RTdGFuZGFsb25l
RGljdAogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNf
Y2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9u
YWw8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZp
bGU+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFu
ZGFsb25lRGljdGlvbmFyeUZpbGU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0
ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5T
dGFuZGFsb25lRGljdGlvbmFyeUZpbGU+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVE
aWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RG
U3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUxIikKICAg
ICAgICAgcmV0dXJuIFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURp
Y3Rpb25hcnlGaWxlOjpFbnVtVmFsdWUxOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiZW51bVZh
bHVlMiIpCiAgICAgICAgIHJldHVybiBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0
YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZTo6RW51bVZhbHVlMjsKLSAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFRlc3RTdGFuZGFsb25l
RGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlIGNvbnZlcnRFbnVtZXJh
dGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5
RmlsZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlv
bmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5LmgKaW5kZXggZmFmMTEwODU4OWNiM2Y2MDlmMjAxN2ZkYWQxNzkw
NTQwODQxNTM0MS4uMzJhODFiNjYyMjdkNjY2YTI4YzBhZDY2YjNlNGYzYzRhNzBhNTEwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmgKQEAgLTMxLDcgKzMxLDcgQEAg
dGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rpb25hcnk8RGljdGlvbmFy
eUltcGxOYW1lPihKU0M6OkV4ZWNTdGEKIAogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252
ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVzdFN0YW5kYWxvbmVEaWN0aW9u
YXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUpOwogCi10ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlG
aWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3Rh
bmRhbG9uZURpY3Rpb25hcnlGaWxlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0
ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5T
dGFuZGFsb25lRGljdGlvbmFyeUZpbGU+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVE
aWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpF
bnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGUgY29udmVydEVudW1lcmF0aW9uPFRlc3RTdGFu
ZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPihKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVk
RW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFs
b25lRGljdGlvbmFyeUZpbGU+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVt
ZXJhdGlvbi5jcHAKaW5kZXggZDQzNzQ2MjAyZjI5MGU4NDFhNzUzM2FiMGRhZDE4NTBkYzZjMjgx
MS4uYTE4ODZhN2QxOTM1YzY5NWQ3NzQ5ZTUxNzJmOWQyOWMzYzI4MWI3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVF
bnVtZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKQEAgLTQzLDE0ICs0MywxNCBAQCB0
ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFRlc3RTdGFuZGFsb25lRW51bQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3Rh
dGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAK
LXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFs
dWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1WYWx1
ZTEiKQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbjo6RW51bVZhbHVl
MTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1WYWx1ZTIiKQogICAgICAgICByZXR1cm4g
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbjo6RW51bVZhbHVlMjsKLSAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFRlc3RTdGFuZGFs
b25lRW51bWVyYXRpb24gY29udmVydEVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Rh
bmRhbG9uZUVudW1lcmF0aW9uLmgKaW5kZXggOGFhYjg5Yjk0M2U3N2I5NjFiMzJhMTdkNjhlYzA5
MzI0YzNiOGM1Mi4uODA2MjJhZDMwM2RmZDRjN2E0MmQ5MWVjYzNhYTYwMzVkOTcyYjI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uaApAQCAtMjksNyArMjksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24pOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+IHBh
cnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RTdGFuZGFsb25l
RW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4o
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBUZXN0U3RhbmRhbG9u
ZUVudW1lcmF0aW9uIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9u
PihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIq
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggOWI0NWVmMDhmNWQ0MTdkYzRmOWM3YTZiZmYzNzE1
ZDIzNzM4MmM5Ny4uZDBlM2RjZDUzNTljYzUxN2E1MmNiYWVhMjhkZmYyMTg4Yjc4YTYxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3dD
YWxsZXIKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGF1dG8gY29sb3IgPSBzdGF0ZS0+YXJndW1lbnQoMykuaXNVbmRlZmluZWQoKSA/
IFN0cmluZygpIDogY29udmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDMpLCBTdHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGF1dG8gYWxwaGEgPSBzdGF0ZS0+YXJndW1lbnQoNCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFs
PGZsb2F0PigpIDogY29udmVydDxJRExVbnJlc3RyaWN0ZWRGbG9hdD4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoNCkpOworICAgIGF1dG8gYWxwaGEgPSBzdGF0ZS0+YXJndW1lbnQo
NCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+KCkgOiBjb252ZXJ0PElETFVu
cmVzdHJpY3RlZEZsb2F0Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCg0KSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBpbXBsLnNldFNoYWRvdyhXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpLCBXVEZNb3Zl
KGJsdXIpLCBXVEZNb3ZlKGNvbG9yKSwgV1RGTW92ZShhbHBoYSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NjksNyArNjY5LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25G
dW5jV2l0aENsYW1wQ2EKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFy
ZzEgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OkNsYW1wKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAg
IGF1dG8gYXJnMiA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8
dWludDY0X3Q+KCkgOiBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OkNs
YW1wKTsKKyAgICBhdXRvIGFyZzIgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KCkgOiBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb246OkNsYW1wKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwuZnVuY1dpdGhDbGFtcChXVEZNb3ZlKGFyZzEp
LCBXVEZNb3ZlKGFyZzIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IGQzMGE1ODVi
YjMzNTRlYzhlNDJkNGU4ZmFlMThmZGVjNTM1NTlkMmQuLmI4Nzg4NzE4YzU4MTNhMWFjZDJjNjZj
ZGNmNzNjN2FjZTQyOGM3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnQKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFs
dWUoKSA8IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgRG9udERlbGV0ZSB8IERvbnRFbnVtLAogICAgICAgICAgICAgdGhpc09iamVj
dC0+Z2V0Q29uY3JldGVBcnJheSgpLT52YWx1ZUF0KGV4ZWMsIGluZGV4LnZhbHVlKCkpKTsKQEAg
LTEyNSw3ICsxMjUsNyBAQCBib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gdGhpc09i
amVjdC0+Z2V0Q29uY3JldGVBcnJheSgpLT5zZXRWYWx1ZUF0KGV4ZWMsIGluZGV4LnZhbHVlKCks
IHZhbHVlKTsKICAgICAKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCmluZGV4IDJmY2MzMTE5OWNhODVhYmI4NTBh
ODRkMTMzMGRkZWNlNGQ0NzhlMDMuLjIyZGNmY2JjZGFlOTViYjExYzhmYjdiZjY5OWNlOWRlM2Uy
MjgzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5LmNwcApAQCAtNDcsMTcgKzQ3LDE3IEBAIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpD
cnlwdG9BbGdvcml0aG1SZWdpc3RyeSgpCiAgICAgcGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMo
KTsKIH0KIAotT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lKQorc3RkOjpvcHRpb25h
bDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKHJlZ2lzdHJ5TXV0ZXgpOwogCiAg
ICAgLy8gRklYTUU6IEhvdyBpcyBpdCBoZWxwZnVsIHRvIGNhbGwgaXNvbGF0ZWRDb3B5IG9uIHRo
ZSBhcmd1bWVudCB0byBmaW5kPwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnMu
ZmluZChuYW1lLmlzb2xhdGVkQ29weSgpKTsKICAgICBpZiAoaWRlbnRpZmllciA9PSBtX2lkZW50
aWZpZXJzLmVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpZGVudGlmaWVyLT52YWx1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgKaW5kZXggM2QxNTQ0
NTcyMGQ0NTJiZmJiYmMyMzM1OWE3ZjZlYjM1ZGU5M2FkMS4uNzVhOWMyZWFiZmQyNmJiY2FmNzJm
OTIyOGNlMzRhYjc1NzM5Y2NhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkgewogcHVibGljOgogICAgIHN0YXRpYyBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eSYgc2luZ2xldG9uKCk7CiAKLSAgICBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
PiBpZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcj4gaWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcg
bmFtZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsKIAogICAgIFJlZlB0cjxDcnlwdG9BbGdv
cml0aG0+IGNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oCmluZGV4IGMzNjM2MmJhMTJjMGYw
ZDI0ODQ0ODk3MDk0NTI5OTczZjMxMjg0OWYuLjkyNjM4OGZiZWQ5Zjk4OWNiYWU4MjNiOGQzODVh
MmY3YTljZGI0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlT
ZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleVNlcmlh
bGl6YXRpb24uaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBDcnlwdG9LZXlTZXJpYWxpemF0aW9u
IHsKICAgICB2aXJ0dWFsIH5DcnlwdG9LZXlTZXJpYWxpemF0aW9uKCkgeyB9CiAKICAgICAvLyBS
ZXR1cm5zIGZhbHNlIGlmIHN1Z2dlc3RlZCBhbGdvcml0aG0gd2FzIG5vdCBjb21wYXRpYmxlIHdp
dGggb25lIHN0b3JlZCBpbiB0aGUgc2VyaWFsaXphdGlvbi4KLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0q
LCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlQWxnb3Jp
dGhtKENyeXB0b0FsZ29yaXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
KikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY29uY2lsZVVzYWdlcyhDcnlwdG9L
ZXlVc2FnZUJpdG1hcCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb25jaWxlRXh0
cmFjdGFibGUoYm9vbCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9Kc29uV2ViS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vSnNvbldlYktleS5oCmlu
ZGV4IDIyM2VlNDhkOTczODliOWEwZTMwMzYzODhiZGYxOTkyOTUyODQyYjEuLmE1MzU4OTE2NzE3
YTdkN2IxMmM2OTJiZGIzZTEwZTJhZmI0ZDFiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9Kc29uV2ViS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0pzb25XZWJL
ZXkuaApAQCAtMzUsMjcgKzM1LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEpz
b25XZWJLZXkgewogICAgIFN0cmluZyBrdHk7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB1c2U7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVzZTsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWVy
Z2luZyBrZXlfb3BzIGFuZCB1c2FnZXMuCi0gICAgT3B0aW9uYWw8VmVjdG9yPENyeXB0b0tleVVz
YWdlPj4ga2V5X29wczsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDcnlwdG9LZXlVc2FnZT4+
IGtleV9vcHM7CiAgICAgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzOwotICAgIE9wdGlvbmFs
PFN0cmluZz4gYWxnOwotCi0gICAgT3B0aW9uYWw8Ym9vbD4gZXh0OwotCi0gICAgT3B0aW9uYWw8
U3RyaW5nPiBjcnY7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB4OwotICAgIE9wdGlvbmFsPFN0cmlu
Zz4geTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGQ7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBuOwot
ICAgIE9wdGlvbmFsPFN0cmluZz4gZTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHA7Ci0gICAgT3B0
aW9uYWw8U3RyaW5nPiBxOwotICAgIE9wdGlvbmFsPFN0cmluZz4gZHA7Ci0gICAgT3B0aW9uYWw8
U3RyaW5nPiBkcTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHFpOwotICAgIE9wdGlvbmFsPFZlY3Rv
cjxSc2FPdGhlclByaW1lc0luZm8+PiBvdGg7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBrOworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhbGc7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGV4
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjcnY7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHg7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHk7CisgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG47CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHA7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHE7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRwOworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBkcTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcWk7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UnNhT3RoZXJQcmltZXNJbmZvPj4gb3RoOworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1BRVNfQ0JDLmNwcAppbmRleCA2YjhmZWZkNzI2ZTc4MTE0YTU2OGUwOGM3MjI4YTM3YTE3
ZjBlMWVlLi41ZDliMGU3YjgwNDA4MTk1MDdiNDdkNzE4ZTljMTk2NzI1NzljYjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
Q0JDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1BRVNfQ0JDLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQzo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0
YSYmCiAgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3KHBhcmFtZXRlcnMt
PmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN1YnRsZUNyeXB0
bzo6S2V5Rm9ybWF0OjpKd2s6IHsKLSAgICAgICAgYXV0byBjaGVja0FsZ0NhbGxiYWNrID0gW10o
c2l6ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsKKyAg
ICAgICAgYXV0byBjaGVja0FsZ0NhbGxiYWNrID0gW10oc2l6ZV90IGxlbmd0aCwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+JiBhbGcpIC0+IGJvb2wgewogICAgICAgICAgICAgc3dpdGNoIChs
ZW5ndGgpIHsKICAgICAgICAgICAgIGNhc2UgQ3J5cHRvS2V5QUVTOjpzX2xlbmd0aDEyODoKICAg
ICAgICAgICAgICAgICByZXR1cm4gIWFsZyB8fCBhbGcudmFsdWUoKSA9PSBBTEcxMjg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1B
RVNfS1cuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0tXLmNwcAppbmRleCBiNjc1ZTA1YTIwMTZiMTIxMzQzOGMwOTA0OWRiOTlhM2FkMGNj
N2E5Li4zNWM3YTdiNjYzNGRkNzQ2MjY2NGM1OWY3MTIyZGE3NzA2YzEwZWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19LVy5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6
OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJgogICAg
ICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLT5pZGVudGlm
aWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJs
ZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZv
cm1hdDo6SndrOiB7Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0SndrKHBh
cmFtZXRlcnMtPmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkp
LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBbXShzaXplX3QgbGVuZ3RoLCBjb25zdCBPcHRpb25hbDxT
dHJpbmc+JiBhbGcpIC0+IGJvb2wgeworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6Omlt
cG9ydEp3ayhwYXJhbWV0ZXJzLT5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJL
ZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgW10oc2l6ZV90IGxlbmd0aCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTdHJpbmc+JiBhbGcpIC0+IGJvb2wgewogICAgICAgICAgICAgc3dpdGNo
IChsZW5ndGgpIHsKICAgICAgICAgICAgIGNhc2UgQ3J5cHRvS2V5QUVTOjpzX2xlbmd0aDEyODoK
ICAgICAgICAgICAgICAgICByZXR1cm4gIWFsZyB8fCBhbGcudmFsdWUoKSA9PSBBTEcxMjg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhNQUMuY3BwCmluZGV4IGJjNDg2ZDk3ZjQ4MjgwZmQ1NTA0ZGVkYmI4NmRlMzkxMDM2NjU1
MDAuLmU0NmJkZGZlMzgwMzAwY2QzMWQxOWZkMDJmMjI4ZGJhZjgzNzYzNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJh
dGVLZXkoY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVy
YXRlKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNo
SWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgYXV0byByZXN1bHQgPSBDcnlw
dG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGht
YWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBp
ZiAoIXJlc3VsdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7
CiAgICAgICAgIHJldHVybjsKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtSE1BQzo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0
YSYmIGRhCiAgICAgUmVmUHRyPENyeXB0b0tleUhNQUM+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGZv
cm1hdCkgewogICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6OlJhdzoKLSAgICAgICAg
cmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52
YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShXVEY6Omdl
dDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAg
IHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydFJhdyhobWFjUGFyYW1ldGVycy5sZW5ndGgu
dmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6
Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6SndrOiB7Ci0gICAg
ICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsKKyAgICAgICAgYXV0
byBjaGVja0FsZ0NhbGxiYWNrID0gW10oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mIGFsZykgLT4gYm9vbCB7CiAgICAgICAgICAgICBz
d2l0Y2ggKGhhc2gpIHsKICAgICAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzE6CiAgICAgICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZhbHVlKCkgPT0g
QUxHMTsKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9y
dEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9OwotICAgICAgICBy
ZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZh
bHVlT3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0
PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0Fs
Z0NhbGxiYWNrKSk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydEp3ayho
bWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVu
dGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUs
IHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApp
bmRleCA1YWY1NWU5NzFmYzVlYTYyNTk5NGRkM2M0ZTFhYzg3MzZjMTQ4NmU1Li4zZDk4ZWU1MmFk
OTI2Y2E0ZDQ2YzNiODk0NjJmMGM4NzI0MGJkODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1h
dCwKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKERhdGFFcnJvcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBv
cnRKd2socGFyYW1ldGVycy0+aWRlbnRpZmllciwgTnVsbG9wdCwgV1RGTW92ZShrZXkpLCBleHRy
YWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRK
d2socGFyYW1ldGVycy0+aWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGtleSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
SE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4IGVkZGE4MWVhMTdiYTczOTdkYmZkNTk2ODM0MTk2ZDZj
NThlYzI5ZmUuLjY2YWFmMzQ3MTQ0ZDhiZDkwNjAwNzViYmJmYzRmYjBlN2QwNmE5OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1ITUFDR0NyeXB0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgaW50IGdldEdDcnlwdERp
Z2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKICAg
ICB9CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25h
dHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY2FsY3VsYXRlU2lnbmF0dXJlKGludCBhbGdvcml0aG0sIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhKQogewogICAgIHNpemVf
dCBkaWdlc3RMZW5ndGggPSBnY3J5X21hY19nZXRfYWxnb19tYWNsZW4oYWxnb3JpdGhtKTsKICAg
ICBjb25zdCB2b2lkKiBrZXlEYXRhID0ga2V5LmRhdGEoKSA/IGtleS5kYXRhKCkgOiByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigiIik7CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGht
LCBjb25zdCBWZWN0b3I8CiAgICAgICAgIGdjcnlfbWFjX2Nsb3NlKGhkKTsKIAogICAgIGlmICgh
cmVzdWx0KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBXVEZNb3ZlKHNpZ25hdHVyZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCmluZGV4IDBkN2ViZDlmYWZiNTE5YjY1NzIxN2Zj
ZmIxODM1YjM1ZWE4MDgyN2EuLmMwMjc2NWQ3NTI0MDEyMzJiZGJlNjAyNTAzY2YwMmZhMDQ3ZmI2
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCkBAIC02OCw3
ICs2OCw3IEBAIGNsYXNzIENyeXB0b0tleUFFUyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9LZXkgewog
CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGdlbmVyYXRlKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIsIHNpemVfdCBsZW5ndGhCaXRzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCk7CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9ydFJh
dyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgdXNpbmcgQ2hlY2tB
bGdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248Ym9vbChzaXplX3QsIGNvbnN0IE9wdGlvbmFsPFN0
cmluZz4mKT47CisgICAgdXNpbmcgQ2hlY2tBbGdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248Ym9v
bChzaXplX3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYpPjsKICAgICBzdGF0aWMgUmVm
UHRyPENyeXB0b0tleUFFUz4gaW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIEpz
b25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIENoZWNr
QWxnQ2FsbGJhY2smJik7CiAKICAgICBDcnlwdG9LZXlDbGFzcyBrZXlDbGFzcygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIENyeXB0b0tleUNsYXNzOjpBRVM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9rZXlzL0NyeXB0b0tleUhNQUMuaAppbmRleCA3MWFkMzA1MDU4ZDIxMTE2N2RhNTBmNTM4OWU3
ODRmODMzZmVhODc4Li5jYWNiY2Q3ZjNiNjZiM2I0Zjk1OGVhMDMwYjkyY2M4YTkzZWQ1ZDM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5oCkBAIC02NCw3ICs2
NCw3IEBAIGNsYXNzIENyeXB0b0tleUhNQUMgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5IHsKIAog
ICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gZ2VuZXJhdGUoc2l6ZV90IGxlbmd0aEJp
dHMsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gaW1w
b3J0UmF3KHNpemVfdCBsZW5ndGhCaXRzLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gs
IFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwKTsKLSAgICB1c2luZyBDaGVja0FsZ0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjxi
b29sKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mKT47
CisgICAgdXNpbmcgQ2hlY2tBbGdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248Ym9vbChDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mKT47CiAgICAg
c3RhdGljIFJlZlB0cjxDcnlwdG9LZXlITUFDPiBpbXBvcnRKd2soc2l6ZV90IGxlbmd0aEJpdHMs
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgSnNvbldlYktleSYmLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgQ2hlY2tBbGdDYWxsYmFjayYmKTsKIAogICAg
IENyeXB0b0tleUNsYXNzIGtleUNsYXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ3J5cHRvS2V5
Q2xhc3M6OkhNQUM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0Ny
eXB0b0tleVJTQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0Eu
Y3BwCmluZGV4IDU5NGM2YWY5MGUyY2E4M2ExZmZmZDUwMmU4MzdhNzdkNzMwNGEzOGQuLjJkMzJl
ZThiMDA2ZTQ3MjkwODkzYjFlZjRmZGIyNDg2MTI3YWZlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0
SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBPcHRpb25hbDxDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBKc29uV2ViS2V5JiYga2V5RGF0YSwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0b0tleVJT
QT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdv
cml0aG0sIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgSnNv
bldlYktleSYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlcykKIHsKICAgICBpZiAoa2V5RGF0YS5rdHkgIT0gIlJTQSIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNTcsOCArNTcsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9L
ZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAg
IGlmICgha2V5RGF0YS5kKSB7CiAgICAgICAgIC8vIGltcG9ydCBwdWJsaWMga2V5CiAgICAgICAg
IGF1dG8gcHVibGljS2V5Q29tcG9uZW50cyA9IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpj
cmVhdGVQdWJsaWMoV1RGTW92ZShtb2R1bHVzKSwgV1RGTW92ZShleHBvbmVudCkpOwotICAgICAg
ICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBw
bGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBOdWxs
b3B0LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNo
LnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwdWJs
aWNLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgLy8gTm90aWNl
OiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIu
IEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgc3RkOjpudWxsb3B0Lgor
ICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVl
X29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHVibGljS2V5
Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgfQogCiAgICAgLy8gaW1wb3J0
IHByaXZhdGUga2V5CkBAIC02Nyw4ICs2Nyw4IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0
b0tleVJTQTo6aW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICgha2V5RGF0YS5wICYmICFrZXlEYXRhLnEg
JiYgIWtleURhdGEuZHAgJiYgIWtleURhdGEuZHAgJiYgIWtleURhdGEucWkpIHsKICAgICAgICAg
YXV0byBwcml2YXRlS2V5Q29tcG9uZW50cyA9IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpj
cmVhdGVQcml2YXRlKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3Zl
KHByaXZhdGVFeHBvbmVudCkpOwotICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZl
IGFueSBlZmZlY3QgaWYgaGFzaCBpcyBOdWxsb3B0LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5
UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CisgICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVj
dCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6
Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKICAgICB9CiAKICAgICBpZiAoIWtleURhdGEucCB8fCAha2V5RGF0YS5xIHx8ICFrZXlE
YXRhLmRwIHx8ICFrZXlEYXRhLmRxIHx8ICFrZXlEYXRhLnFpKQpAQCAtODcsOCArODcsOCBAQCBS
ZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
IWtleURhdGEub3RoKSB7CiAgICAgICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShX
VEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25l
bnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCB7
IH0pOwotICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8x
IGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYg
aGFzaCBpcyBOdWxsb3B0LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxn
b3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAh
IWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAg
ICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBh
IHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0
ZDo6bnVsbG9wdC4KKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFz
aCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAK
ICAgICBWZWN0b3I8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbz4gb3RoZXJQ
cmltZUluZm9zOwpAQCAtMTA0LDggKzEwNCw4IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0
b0tleVJTQTo6aW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtCiAg
ICAgfQogCiAgICAgYXV0byBwcml2YXRlS2V5Q29tcG9uZW50cyA9IENyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFdURk1vdmUobW9kdWx1
cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUo
Zmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdURk1vdmUob3RoZXJQ
cmltZUluZm9zKSk7Ci0gICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0
IGlmIGhhc2ggaXMgTnVsbG9wdC4KLSAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxn
b3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAh
IWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAg
Ly8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxh
Y2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgc3RkOjpu
dWxsb3B0LgorICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gu
dmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2
YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAKIEpzb25XZWJLZXkg
Q3J5cHRvS2V5UlNBOjpleHBvcnRKd2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlSU0EuaAppbmRleCA4MDYyMTAxNDdjYTBiZWE5YWFhYjYwN2FkZmJkYjMxNjk3
ZjgzOTA3Li42YWVlNzM1MDBhNmQyMTQ0N2I2NDQzZGJiOTdiNjJjODM3NjI5YmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaApAQCAtMTAwLDcgKzEwMCw3IEBA
IGNsYXNzIENyeXB0b0tleVJTQSBmaW5hbCA6IHB1YmxpYyBDcnlwdG9LZXkgewogICAgIHVzaW5n
IEtleVBhaXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDcnlwdG9LZXlQYWlyJik+Owog
ICAgIHVzaW5nIFZvaWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZCgpPjsKICAgICBzdGF0
aWMgdm9pZCBnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIHVuc2lnbmVkIG1vZHVsdXNMZW5n
dGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHVibGljRXhwb25lbnQsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlQYWlyQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
LCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBKc29uV2ViS2V5JiYs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBzdGF0aWMgUmVm
UHRyPENyeXB0b0tleVJTQT4gaW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgSnNvbldlYktleSYm
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAKICAgICBQbGF0Zm9y
bVJTQUtleSBwbGF0Zm9ybUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1LZXk7IH0KICAg
ICBKc29uV2ViS2V5IGV4cG9ydEp3aygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcAppbmRleCBkYjI3
NGYzZjQyMzcxOGEzYmExYzU0YzFmMDllNDMyZDQ5NjdhZDMxLi43NjVlMWVlNzVlOGNiZmI4YTcy
MmYyMmI1NWI2NWI4ZjY4ZjZkNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcApAQCAtNDQsNyArNDQsNyBA
QCBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Ojp+Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdygp
CiB7CiB9CiAKLU9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IENyeXB0b0tleVNlcmlhbGl6
YXRpb25SYXc6OnJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0qIGFsZ29yaXRobSwg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqIHBhcmFtZXRlcnMpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IENyeXB0b0tleVNlcmlhbGl6YXRpb25S
YXc6OnJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0qIGFsZ29yaXRobSwgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqIHBhcmFtZXRlcnMpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENyeXB0b0FsZ29yaXRobVBhaXIgeyBhbGdvcml0aG0sIHBhcmFtZXRlcnMgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6
YXRpb25SYXcuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6
YXRpb25SYXcuaAppbmRleCA5N2MwOGQyNmJiOWQ5MmJjNTJiMzkxZTNkMmRmYTEwMmM2ODJlZjAx
Li43NWRkNGU1NzhkMzIxZDZjZDNhMjJiNGI3M2QxOWMwM2QwYzhmMDYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5o
CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcgZmluYWwg
OiBwdWJsaWMgQ3J5cHRvS2V5U2VyaWFsaXphdGlvbiB7CiBwcml2YXRlOgogICAgIENyeXB0b0tl
eVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYpOwogCi0gICAgT3B0
aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29y
aXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVBbGdv
cml0aG0oQ3J5cHRvQWxnb3JpdGhtKiwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVjb25jaWxlVXNhZ2VzKENyeXB0b0tl
eVVzYWdlQml0bWFwJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWNvbmNpbGVFeHRyYWN0
YWJsZShib29sJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAppbmRleCBjZDNiMGNjMzZkYTUzMDVl
NzcwZTQxYTA3OGRhNDUwMjhkYmYyNmIzLi5mYjRjMWIzZGE3YzFiNDQ3N2Y0YzlhODhhODlhZDFi
MzE0NjliZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUhNQUNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtSE1BQ01hYy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgT3B0aW9uYWw8Q0NIbWFjQWxnb3JpdGhtPiBjb21tb25DcnlwdG9ITUFD
QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q0NIbWFjQWxnb3JpdGhtPiBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGht
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAo
aGFzaEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MToKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29t
bW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGkKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAgICAgICAgIHJldHVybiBrQ0NIbWFj
QWxnU0hBNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81TWFjLmNwcAppbmRleCBhMzQ2MjI3YWMxMjNmMWViNTcwNjI0NGZhN2I4OGNmNWU4OGFhNDUw
Li4yZTk1Yzg0ZDIwOGYzZmUxOTk5NzhkYTlkOTFhMTY4ZTA3NGUzYmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81TWFjLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWlubGluZSBPcHRpb25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRv
RGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQor
aW5saW5lIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAg
ICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzE6CkBAIC01MCw3ICs1MCw3IEBAIGlubGluZSBPcHRpb25hbDxDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkCiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgogICAgICAgICByZXR1
cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9B
bGdvcml0aG1IbWFjS2V5UGFyYW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVy
cy9DcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zLmgKaW5kZXggMDk5NzQ3MmQ0M2I4YTdmMmNi
ODM0MjdhMjM4OTkyZTkxYTJlZTAwNS4uZTRiZmY2NTAwZTQxOTFiY2U0NTVkNmVhYzFiYWQ3MTcz
NDViMzUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9w
YXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zIGZpbmFsIDogcHVibGljIENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMgewogICAgIC8vIEZJWE1FOiBDb25zaWRlciBtZXJnaW5nIGhh
c2ggYW5kIGhhc2hJZGVudGlmaWVyLgogICAgIEpTQzo6SlNWYWx1ZSBoYXNoOwogICAgIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaElkZW50aWZpZXI7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQgbG9uZz4gbGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgbG9uZz4gbGVuZ3Ro
OwogCiAgICAgQ2xhc3MgcGFyYW1ldGVyc0NsYXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2xh
c3M6OkhtYWNLZXlQYXJhbXM7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKaW5k
ZXggZTY4OTkzNjUzNjU4YTRiNTFiMTJiNDg1YzJhNWM0ZTE4N2EwNWRhYy4uYzU2ZTY1M2FiMjU0
ZGFiODZjZWYwYWRiNzRhYjUyYzQ5Y2U2ZGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXMuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDcnlwdG9B
bGdvcml0aG1Sc2FPYWVwUGFyYW1zIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMgewogcHVibGljOgogICAgIC8vIFVzZSBsYWJlbFZlY3RvcigpIGluc3RlYWQgb2YgbGFi
ZWwuIFRoZSBsYWJlbCB3aWxsIGJlIGdvbmUgb25jZSBsYWJlbFZlY3RvcigpIGlzIGNhbGxlZC4K
LSAgICBPcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBsYWJlbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+IGxhYmVsOwogCiAgICAgQ2xhc3Mg
cGFyYW1ldGVyc0NsYXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2xhc3M6OlJzYU9hZXBQYXJh
bXM7IH0KIApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zIGZpbmFsIDogcHVibGljIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgewogICAgICAgICAg
ICAgcmV0dXJuIG1fbGFiZWxWZWN0b3I7CiAKICAgICAgICAgbV9sYWJlbEJ1ZmZlciA9IFdURk1v
dmUoKmxhYmVsKTsKLSAgICAgICAgbGFiZWwgPSBOdWxsb3B0OworICAgICAgICBsYWJlbCA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFtX2xhYmVsQnVmZmVyLmxlbmd0aCgpKQogICAgICAg
ICAgICAgcmV0dXJuIG1fbGFiZWxWZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3Bw
CmluZGV4IDVlYWI1NWI1NDMzMzNiZDE3ZjY3YjExZWJhZDY2MTc3MjgyNTAxZjEuLjI1NjcxYzFk
ZTA5YjU1MGJkNzE5YzljZjViOTU4ZTVmYjIyNTU2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmNwcApAQCAtMTI0LDEwICsxMjQsMTAgQEAgYm9vbCBDU1NGb250RmFjZTo6c2V0RmFtaWxp
ZXMoQ1NTVmFsdWUmIGZhbWlseSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8Rm9u
dFRyYWl0c01hc2s+IENTU0ZvbnRGYWNlOjpjYWxjdWxhdGVTdHlsZU1hc2soQ1NTVmFsdWUmIHN0
eWxlKQorc3RkOjpvcHRpb25hbDxGb250VHJhaXRzTWFzaz4gQ1NTRm9udEZhY2U6OmNhbGN1bGF0
ZVN0eWxlTWFzayhDU1NWYWx1ZSYgc3R5bGUpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVW
YWx1ZT4oc3R5bGUpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0
eWxlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgpAQCAtMTU5LDEwICsx
NTksMTAgQEAgYm9vbCBDU1NGb250RmFjZTo6c2V0U3R5bGUoQ1NTVmFsdWUmIHN0eWxlKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotT3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IENTU0ZvbnRGYWNl
OjpjYWxjdWxhdGVXZWlnaHRNYXNrKENTU1ZhbHVlJiB3ZWlnaHQpCitzdGQ6Om9wdGlvbmFsPEZv
bnRUcmFpdHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayhDU1NWYWx1ZSYg
d2VpZ2h0KQogewogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHdlaWdodCkpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
c3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4od2VpZ2h0KS52YWx1ZUlEKCkpIHsK
ICAgICBjYXNlIENTU1ZhbHVlQm9sZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5kZXggOGIx
M2ExYjdjYzRhNzdhMWM3ZGY3ODM0NGYzMWY3NDY3NzRlMDQ3Ni4uYjExZGZkMDE1MGI4ZDVlZmQ1
OTQxNWFmMTQ4MWQ3NWEyYmFlNzczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKQEAgLTg3
LDggKzg3LDggQEAgY2xhc3MgQ1NTRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxD
U1NGb250RmFjZT4gewogICAgIFN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
czsgfQogICAgIFN0eWxlUnVsZUZvbnRGYWNlKiBjc3NDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jc3NDb25uZWN0aW9uLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8Rm9udFRy
YWl0c01hc2s+IGNhbGN1bGF0ZVN0eWxlTWFzayhDU1NWYWx1ZSYgc3R5bGUpOwotICAgIHN0YXRp
YyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY2FsY3VsYXRlV2VpZ2h0TWFzayhDU1NWYWx1ZSYg
d2VpZ2h0KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY2FsY3Vs
YXRlU3R5bGVNYXNrKENTU1ZhbHVlJiBzdHlsZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Rm9udFRyYWl0c01hc2s+IGNhbGN1bGF0ZVdlaWdodE1hc2soQ1NTVmFsdWUmIHdlaWdodCk7CiAK
ICAgICBjbGFzcyBDbGllbnQ7CiAgICAgdm9pZCBhZGRDbGllbnQoQ2xpZW50Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCA1MjJhYzg2YTk0ZTliYmJiM2I4ZDNlMjEx
NWNmNjY5MDBmNzM1MzFlLi5iNjA2OGNjNmY4MmYyMzhjN2JmMTE2YWQ0NzJhMmJkNjEzMDc0MmM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTI4NCw3ICsyODQsNyBA
QCBDU1NGb250RmFjZSYgQ1NTRm9udEZhY2VTZXQ6Om9wZXJhdG9yW10oc2l6ZV90IGkpCiAgICAg
cmV0dXJuIG1fZmFjZXNbaV07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4g
Y29tcHV0ZUZvbnRUcmFpdHNNYXNrKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNvbXB1dGVGb250VHJhaXRzTWFzayhN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHN0
eWxlVmFsdWUgPSBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxl
KS5nZXQoKTsKICAgICBpZiAoIXN0eWxlVmFsdWUpCkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjb21wdXRlRm9udFRyYWl0c01hc2soTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYgc3QKICAgICBpZiAoYXV0byBzdHlsZU1hc2tPcHRpb25hbCA9IENTU0Zv
bnRGYWNlOjpjYWxjdWxhdGVTdHlsZU1hc2soKnN0eWxlVmFsdWUpKQogICAgICAgICBzdHlsZU1h
c2sgPSBzdHlsZU1hc2tPcHRpb25hbC52YWx1ZSgpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHdlaWdodFZhbHVlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUZvbnRXZWlnaHQpLmdldCgpOwogICAgIGlmICghd2VpZ2h0VmFsdWUpCkBAIC0zMDQsNyArMzA0
LDcgQEAgc3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjb21wdXRlRm9udFRyYWl0c01h
c2soTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3QKICAgICBpZiAoYXV0byB3ZWlnaHRNYXNrT3B0
aW9uYWwgPSBDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzaygqd2VpZ2h0VmFsdWUpKQog
ICAgICAgICB3ZWlnaHRNYXNrID0gd2VpZ2h0TWFza09wdGlvbmFsLnZhbHVlKCk7CiAgICAgZWxz
ZQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxGb250VHJhaXRzTWFzaz4oc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0eWxlTWFzaykgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2VpZ2h0TWFzaykpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggNjIxZmNlODJl
NWJlNjNlNTIwY2ZjYTExNDZmZmFlZWNhMGIwNTE0Yy4uNWIwZDFmYjlhNzgzNjVmNmI1MTcyODhm
OGZlMjEzZDZiYTg3NWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCkBAIC04MzYsNyArODM2LDcgQEAgRXhjZXB0aW9uT3I8ZmxvYXQ+IENTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKSBjb24KIAogZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZShVbml0VHlwZXMgdW5pdFR5cGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50ZXJuYWwodW5pdFR5cGUpLnZhbHVlT3IoMCk7
CisgICAgcmV0dXJuIGRvdWJsZVZhbHVlSW50ZXJuYWwodW5pdFR5cGUpLnZhbHVlX29yKDApOwog
fQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKCkgY29uc3QKQEAgLTg3
MSwxMCArODcxLDEwIEBAIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkoVW5pCiAgICAgfQogfQogCi1PcHRp
b25hbDxkb3VibGU+IENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZUludGVybmFsKFVuaXRU
eXBlcyByZXF1ZXN0ZWRVbml0VHlwZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBDU1NQ
cmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5p
dFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252
ZXJzaW9uKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpIHx8ICFp
c1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkK
LSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBVbml0VHlwZXMgc291cmNlVW5pdFR5cGUgPSBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHBy
aW1pdGl2ZVR5cGUoKSk7CiAgICAgaWYgKHJlcXVlc3RlZFVuaXRUeXBlID09IHNvdXJjZVVuaXRU
eXBlIHx8IHJlcXVlc3RlZFVuaXRUeXBlID09IENTU19ESU1FTlNJT04pCkBAIC04ODksMjAgKzg4
OSwyMCBAQCBPcHRpb25hbDxkb3VibGU+IENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZUlu
dGVybmFsKFVuaXRUeXBlcyByZXF1ZXN0ZWRVbml0VAogCiAgICAgLy8gQ2Fubm90IGNvbnZlcnQg
YmV0d2VlbiB1bnJlbGF0ZWQgdW5pdCBjYXRlZ29yaWVzIGlmIG9uZSBvZiB0aGVtIGlzIG5vdCBV
TnVtYmVyLgogICAgIGlmIChzb3VyY2VDYXRlZ29yeSAhPSB0YXJnZXRDYXRlZ29yeSAmJiBzb3Vy
Y2VDYXRlZ29yeSAhPSBVTnVtYmVyICYmIHRhcmdldENhdGVnb3J5ICE9IFVOdW1iZXIpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKHRhcmdldENhdGVnb3J5ID09IFVOdW1iZXIpIHsKICAgICAgICAgLy8gV2UgaW50ZXJwcmV0
IGNvbnZlcnNpb24gdG8gQ1NTX05VTUJFUiBhcyBjb252ZXJzaW9uIHRvIGEgY2Fub25pY2FsIHVu
aXQgaW4gdGhpcyB2YWx1ZSdzIGNhdGVnb3J5LgogICAgICAgICB0YXJnZXRVbml0VHlwZSA9IGNh
bm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkoc291cmNlQ2F0ZWdvcnkpOwogICAgICAgICBpZiAo
dGFyZ2V0VW5pdFR5cGUgPT0gQ1NTX1VOS05PV04pCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKHNv
dXJjZVVuaXRUeXBlID09IENTU19OVU1CRVIpIHsKICAgICAgICAgLy8gV2UgaW50ZXJwcmV0IGNv
bnZlcnNpb24gZnJvbSBDU1NfTlVNQkVSIGluIHRoZSBzYW1lIHdheSBhcyBDU1NQYXJzZXI6OnZh
bGlkVW5pdCgpIHdoaWxlIHVzaW5nIG5vbi1zdHJpY3QgbW9kZS4KICAgICAgICAgc291cmNlVW5p
dFR5cGUgPSBjYW5vbmljYWxVbml0VHlwZUZvckNhdGVnb3J5KHRhcmdldENhdGVnb3J5KTsKICAg
ICAgICAgaWYgKHNvdXJjZVVuaXRUeXBlID09IENTU19VTktOT1dOKQotICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIGRvdWJsZSBjb252ZXJ0ZWRWYWx1ZSA9IGRvdWJsZVZhbHVlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGJkNzZhMGIzOGIzZmZjNTRjMDQzMzE0YzZkMWM2
N2M5Y2Q0NmQ2NmMuLmJiZTgxN2VkYTFjOTQ4N2Q0OGMxMjVmMzg1YzZjN2QzNGU0ZThjYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0zNjAsNyArMzYwLDcgQEAg
Y2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogICAgIHZv
aWQgaW5pdChSZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiYmKTsgLy8gRklYTUU6IERhc2hib2FyZCBy
ZWdpb24gc2hvdWxkIG5vdCBiZSBhIHByaW1pdGl2ZSB2YWx1ZS4KICNlbmRpZgogCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBlcyB0YXJnZXRVbml0VHlw
ZSkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlSW50ZXJuYWwo
VW5pdFR5cGVzIHRhcmdldFVuaXRUeXBlKSBjb25zdDsKIAogICAgIGRvdWJsZSBjb21wdXRlTGVu
Z3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCAwNjIzYjg4ZWVlMjZiODA2Y2Rh
ZTI5MWU2NzQ5MjE4NjhkZDQ3MDFkLi4xZDc2YzY2N2MzMjBlYzlmNDk1NDhiOTUyMWNmMzM1MmNh
YTViM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtMzUsNyAr
MzUsNyBAQAogLy8gZnVuY3Rpb24gaW4gY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIHNob3Vs
ZCBiZSB1c2VkLgogLy8KIC8vICogQ29uZGl0aW9uYWxDb252ZXJ0ZXI9WFhYOgotLy8gU2ltaWxh
ciB0byBDb252ZXJ0ZXI9WFhYIGJ1dCB0aGUgY29udmVydGVyIGZ1bmN0aW9uIHJldHVybnMgYSBX
VEY6Ok9wdGlvbmFsPD4KKy8vIFNpbWlsYXIgdG8gQ29udmVydGVyPVhYWCBidXQgdGhlIGNvbnZl
cnRlciBmdW5jdGlvbiByZXR1cm5zIGEgc3RkOjpvcHRpb25hbDw+CiAvLyB0byBpbmRpY2F0ZSBp
ZiB0aGUgcHJvcGVydHkgc2V0dGVyIHNob3VsZCBiZSBjYWxsZWQgb3Igbm90LgogLy8KIC8vICog
Q3VzdG9tPVtJbml0aWFsfFZhbHVlfEluaGVyaXR8QWxsXToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmluZGV4IDc3OGU2NDk5MTJjOWU4MjA4MmNjYTRkNjRk
MTllODcwN2E1ZTI2MjEuLjg1MDE4NWI3OGFkMjVjZTdhOTQxYzRhOTZkMmUyMzE1ZGYwYTMzZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApAQCAtODcs
NyArODcsNyBAQCBjbGFzcyBDU1NGb250QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgRm9udEFjY2Vz
c29yIHsKICAgICAgICAgcmV0dXJuIG1fcmVzdWx0ICYmIG1fcmVzdWx0LnZhbHVlKCkgJiYgbV9y
ZXN1bHQudmFsdWUoKS0+aXNMb2FkaW5nKCk7CiAgICAgfQogCi0gICAgbXV0YWJsZSBPcHRpb25h
bDxSZWZQdHI8Rm9udD4+IG1fcmVzdWx0OyAvLyBDYWNoZXMgbnVsbHB0ciB0b28KKyAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPEZvbnQ+PiBtX3Jlc3VsdDsgLy8gQ2FjaGVzIG51bGxw
dHIgdG9vCiAgICAgbXV0YWJsZSBSZWY8Q1NTRm9udEZhY2U+IG1fZm9udEZhY2U7CiAgICAgRm9u
dERlc2NyaXB0aW9uIG1fZm9udERlc2NyaXB0aW9uOwogICAgIGJvb2wgbV9zeW50aGV0aWNCb2xk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGFmYTM2NjY0YjI0NjQxYTc2
M2U0OGYyZDI4N2NjMWY1YWQxOGM1Y2UuLjc3NWE2YjU3MDhjNzQwYTc1M2ZhYjJjMTZjZWFhYzc4
ZDY1MWMxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiYmIHNoZWV0LCBDU1NJbXAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NTdHlsZVNoZWV0KFdURk1vdmUoc2hlZXQpLCBvd25lclJ1bGUpKTsKIH0KIAotUmVmPENTU1N0
eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYm
IHNoZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc0NsZWFuT3Jp
Z2luKQorUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mIGlzQ2xlYW5PcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
U3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb246Om1pbmlt
dW1Qb3NpdGlvbigpLCBmYWxzZSwgaXNDbGVhbk9yaWdpbikpOwogfQpAQCAtMTA1LDcgKzEwNSw3
IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSoKICAgICBtX2NvbnRlbnRzLT5yZWdpc3RlckNsaWVu
dCh0aGlzKTsKIH0KIAotQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmIGNvbnRlbnRzLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlv
biYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IE9wdGlvbmFs
PGJvb2w+JiBpc09yaWdpbkNsZWFuKQorQ1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRzLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4pCiAgICAgOiBtX2NvbnRlbnRzKFdU
Rk1vdmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJbmxpbmVTdHls
ZXNoZWV0KQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQpAQCAtMzI1LDcgKzMyNSw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IENTU1N0eWxlU2hlZXQ6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgp
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0Ojph
ZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlv
bmFsPHVuc2lnbmVkPiBpbmRleCkKK0V4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRk
UnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHRleHQ7CiAgICAg
dGV4dC5hcHBlbmQoc2VsZWN0b3IpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIEV4Y2VwdGlvbk9yPGlu
dD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBT
dHJpbmcmIHN0CiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAgICAgIHRleHQuYXBwZW5k
KCcgJyk7CiAgICAgdGV4dC5hcHBlbmQoJ30nKTsKLSAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQg
PSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVPcihsZW5ndGgoKSkpOwor
ICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dC50b1N0cmluZygpLCBp
bmRleC52YWx1ZV9vcihsZW5ndGgoKSkpOwogICAgIGlmIChpbnNlcnRSdWxlUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gaW5zZXJ0UnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCAyOTFlOWU3OTEw
N2Y4NWIxMjI0NzM2ZTMxMTVlNzJjYjQ5MmZlNjdkLi5jNGFlMzk1ZGVkOTY5NmFhNzBjZTgzNjRi
NjNjMDY5YmM1Zjg5YjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTUyLDcg
KzUyLDcgQEAgY2xhc3MgU2NvcGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGlj
IFN0eWxlU2hlZXQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3Jl
YXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9
IDApOwotICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0
Q29udGVudHM+JiYsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3Jp
Z2luQ2xlYW4gPSBOdWxsb3B0KTsKKyAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0
ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRp
YyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYsIEVsZW1lbnQmIG93bmVyLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pOwog
CiAgICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVldCgpOwpAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBD
U1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hlZXQgewogICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgpOwogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25PcjxpbnQ+IGFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3Rv
ciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxpbnQ+IGFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxl
Y3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgpIHsgcmV0
dXJuIGRlbGV0ZVJ1bGUoaW5kZXgpOyB9CiAgICAgCiAgICAgLy8gRm9yIENTU1J1bGVMaXN0LgpA
QCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5
bGVTaGVldCB7CiBwcml2YXRlOgogICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFJl
ZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0
aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCk7Ci0gICAgQ1NTU3R5
bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNv
bnN0IE9wdGlvbmFsPGJvb2w+Jik7CisgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENv
bnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3Np
dGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4m
KTsKIAogICAgIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQVNDSUlMaXRlcmFs
KCJ0ZXh0L2NzcyIpOyB9CkBAIC0xNDMsNyArMTQzLDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldCBm
aW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKICAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0
OwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogICAgIGJvb2wgbV9tdXRhdGVkUnVsZXM7Ci0gICAg
T3B0aW9uYWw8Ym9vbD4gbV9pc09yaWdpbkNsZWFuOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bV9pc09yaWdpbkNsZWFuOwogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFJlZlB0cjxNZWRpYVF1
ZXJ5U2V0PiBtX21lZGlhUXVlcmllczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggNjAx
YjkyZDk2YTBlNDU3MmZjOTRiMmZiOTk4ZWEwNTM0NTU1ZWI0Ni4uZTZlMGY3MDNjMTlhZWNmNmJk
MjliNjZhYWFhNzRmZWYzNDA5OTIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0zNzQs
MTIgKzM3NCwxMiBAQCB2b2lkIEZvbnRGYWNlOjpmb250U3RhdGVDaGFuZ2VkKENTU0ZvbnRGYWNl
JiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzLCBDU1NGb250RgogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlN1Y2Nlc3M6CiAgICAgICAgIGlmIChtX3Byb21p
c2UpCi0gICAgICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgTnVsbG9wdCktPnJlc29s
dmUoKnRoaXMpOworICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIHN0ZDo6bnVs
bG9wdCktPnJlc29sdmUoKnRoaXMpOwogICAgICAgICBkZXJlZigpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpGYWlsdXJlOgogICAgICAgICBpZiAobV9w
cm9taXNlKQotICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5y
ZWplY3QoTkVUV09SS19FUlIpOworICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2Us
IHN0ZDo6bnVsbG9wdCktPnJlamVjdChORVRXT1JLX0VSUik7CiAgICAgICAgIGRlcmVmKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlBlbmRpbmc6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5oCmluZGV4IGZhOGYzMTNkY2VkOGZiNWRkMjhlMmMyOTQ4NTE1ZTQ2ZDdl
YWNlMDYuLjIzY2VmN2Q0MmEzN2IzMzg4Yzk1MjM3ZjY5MGM5N2U2MDg3MGZiOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIEZvbnRGYWNlIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8Rm9udEZhY2U+LCBwcml2YXRlIENTU0ZvbnRGYWNlOjpDbGllbnQKICAg
ICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBET01Qcm9taXNlPEZv
bnRGYWNlJj4gUHJvbWlzZTsKLSAgICBPcHRpb25hbDxQcm9taXNlPiYgcHJvbWlzZSgpIHsgcmV0
dXJuIG1fcHJvbWlzZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UHJvbWlzZT4mIHByb21pc2UoKSB7
IHJldHVybiBtX3Byb21pc2U7IH0KICAgICB2b2lkIHJlZ2lzdGVyTG9hZGVkKFByb21pc2UmJik7
CiAKICAgICB2b2lkIGFkb3B0KENTU0ZvbnRGYWNlJik7CkBAIC05MCw3ICs5MCw3IEBAIGNsYXNz
IEZvbnRGYWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2U+LCBwcml2YXRlIENT
U0ZvbnRGYWNlOjpDbGllbnQKIAogICAgIFdlYWtQdHJGYWN0b3J5PEZvbnRGYWNlPiBtX3dlYWtQ
dHJGYWN0b3J5OwogICAgIFJlZjxDU1NGb250RmFjZT4gbV9iYWNraW5nOwotICAgIE9wdGlvbmFs
PFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb21pc2U+IG1fcHJvbWlz
ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCmluZGV4IDk0YzFjNTVmZWE1
NjNmNDJhYmEwNDE1YzIyMDA2MjgyZWFhMDA3NzEuLjczOGIwOGU2ODNiODg0ZjdjZDE0YjM0ZDdh
MzA0MzI1ZjkxNTkzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcApAQCAtMjA0LDcg
KzIwNCw3IEBAIHZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0ZWRMb2FkaW5nKCkKIHZvaWQgRm9udEZh
Y2VTZXQ6OmNvbXBsZXRlZExvYWRpbmcoKQogewogICAgIGlmIChtX3Byb21pc2UpCi0gICAgICAg
IHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBOdWxsb3B0KS0+cmVzb2x2ZSgqdGhpcyk7CisgICAg
ICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5yZXNvbHZlKCp0aGlz
KTsKICAgICBtX2lzUmVhZHkgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCmlu
ZGV4IGZlMmE2ZTc1MjExZmU4YzRmODgyYmE0NjQzN2ZkZWY2ZmE2ODFjNzMuLjAzZjRmNDJlMWI4
ZGFjM2JmY2VkMDdlNTNiOGVlNGRmMjBlOWQxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5o
CkBAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgRm9udEZhY2VTZXQgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxGb250RmFjZVNldD4sIHByaXZhdGUgQ1NTRm9udEZhY2VTZXQKIAogICAgIFJlZjxD
U1NGb250RmFjZVNldD4gbV9iYWNraW5nOwogICAgIEhhc2hNYXA8UmVmUHRyPEZvbnRGYWNlPiwg
VmVjdG9yPFJlZjxQZW5kaW5nUHJvbWlzZT4+PiBtX3BlbmRpbmdQcm9taXNlczsKLSAgICBPcHRp
b25hbDxSZWFkeVByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWR5UHJv
bWlzZT4gbV9wcm9taXNlOwogICAgIGJvb2wgbV9pc1JlYWR5IHsgdHJ1ZSB9OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGE4NjAxMTdlMzY4
NWE5YTUyYmM4MzcyZTJlMjc2ZjY5ZDZlYzJhNTYuLjY1NjI5YWM3NzJjMTJhMTJmNDBhZWE3Mjdl
YzliZjdhNzVlZDg4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAKQEAgLTIxNCwxMCArMjE0LDEwIEBAIHN0YXRpYyBib29sIGNvbXBhcmVBc3BlY3RSYXRp
b1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBNZWRpCiAgICAg
cmV0dXJuIGNvbXBhcmVWYWx1ZSh3aWR0aCAqIGFzcGVjdFJhdGlvLmRlbm9taW5hdG9yVmFsdWUo
KSwgaGVpZ2h0ICogYXNwZWN0UmF0aW8ubnVtZXJhdG9yVmFsdWUoKSwgb3ApOwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAg
ICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgfHwgIWRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWUpLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKS5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApp
bmRleCBhY2U1ZDg2ZWIyYWE2NjQ1NWQ5YmZjOGFlNTM4YmQ4NWUxZThhYmI1Li40ZTBlYWEzNjFl
MzhhNjBiMjlmZTM1MGI1MTUzYTYzYTVjMzAzMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0xMDEsMTMgKzEwMSwxMyBAQCBjbGFzcyBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIgewogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgc3RhdGlj
IEdyaWRUcmFja1NpemUgY29udmVydEdyaWRUcmFja1NpemUoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBjb252ZXJ0R3Jp
ZFRyYWNrU2l6ZUxpc3QoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gY29udmVydEdyaWRQb3NpdGlvbihTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxHcmlkUG9z
aXRpb24+IGNvbnZlcnRHcmlkUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIEdyaWRBdXRvRmxvdyBjb252ZXJ0R3JpZEF1dG9GbG93KFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlP
VVQpCi0gICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4gY29udmVydFdvcmRTcGFjaW5nKFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxmbG9hdD4g
Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxGaWx0ZXJPcGVy
YXRpb25zPiBjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3Bh
Y2luZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxmbG9hdD4gY29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gY29udmVydE1hcnF1
ZWVJbmNyZW1lbnQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMo
U3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IHN0YXRpYyBib29sIGNvbnZlcnRUb3VjaENhbGxvdXQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENT
U1ZhbHVlJik7CiAjZW5kaWYKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIgewogICAgIHN0YXRpYyBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIGNvbnZlcnRD
b250ZW50QWxpZ25tZW50RGF0YShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAg
ICBzdGF0aWMgRUdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb24oU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEVHbHlwaE9yaWVudGF0aW9u
IGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KFN0
eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYsIGZsb2F0IG11bHRpcGxpZXIgPSAxLmYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gY29udmVydExpbmVIZWlnaHQoU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlwbGllciA9IDEuZik7CiAgICAg
c3RhdGljIEZvbnRTeW50aGVzaXMgY29udmVydEZvbnRTeW50aGVzaXMoU3R5bGVSZXNvbHZlciYs
IGNvbnN0IENTU1ZhbHVlJik7CiAgICAgCiAgICAgc3RhdGljIEJyZWFrQmV0d2VlbiBjb252ZXJ0
UGFnZUJyZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTEw
ODQsMTIgKzEwODQsMTIgQEAgaW5saW5lIEdyaWRUcmFja1NpemUgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0R3JpZFRyYWNrU2l6ZShTdHlsZVJlc29sdmVyJgogICAgIHJldHVybiBjcmVh
dGVHcmlkVHJhY2tTaXplKHZhbHVlLCBzdHlsZVJlc29sdmVyKTsKIH0KIAotaW5saW5lIE9wdGlv
bmFsPEdyaWRQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0
aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgc3RkOjpv
cHRpb25hbDxHcmlkUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQ
b3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEdy
aWRQb3NpdGlvbiBncmlkUG9zaXRpb247CiAgICAgaWYgKGNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1
ZSwgZ3JpZFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGdyaWRQb3NpdGlvbjsKLSAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgR3JpZEF1
dG9GbG93IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRBdXRvRmxvdyhTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtMTEzNyw5ICsxMTM3LDkgQEAgaW5s
aW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0
b0xlbmd0aENvbnZlcnNpb25EYXQKICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAg
T3B0aW9uYWw8TGVuZ3RoPiB3b3JkU3BhY2luZzsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4g
d29yZFNwYWNpbmc7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHdvcmRTcGFjaW5nID0gUmVuZGVyU3R5bGU6OmluaXRp
YWxXb3JkU3BhY2luZygpOwpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgaW5saW5lIE9wdGlvbmFsPExl
bmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNv
bHZlciYKICAgICByZXR1cm4gd29yZFNwYWNpbmc7CiB9CiAKLWlubGluZSBPcHRpb25hbDxmbG9h
dD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCkBA
IC0xMTY3LDEyICsxMTY3LDEyIEBAIGlubGluZSBPcHRpb25hbDxmbG9hdD4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmV0dXJuIHBlcnNwZWN0aXZlIDwg
MCA/IE9wdGlvbmFsPGZsb2F0PihOdWxsb3B0KSA6IE9wdGlvbmFsPGZsb2F0PihwZXJzcGVjdGl2
ZSk7CisgICAgcmV0dXJuIHBlcnNwZWN0aXZlIDwgMCA/IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+KHN0
ZDo6bnVsbG9wdCkgOiBzdGQ6Om9wdGlvbmFsPGZsb2F0PihwZXJzcGVjdGl2ZSk7CiB9CiAKLWlu
bGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1
ZWVJbmNyZW1lbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1hcnF1ZWVM
ZW5ndGg7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1hcnF1ZWVMZW5ndGg7CiAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwog
ICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1
ZVNtYWxsOgpAQCAtMTE5NiwxMiArMTE5NiwxMiBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVzbwog
ICAgIHJldHVybiBtYXJxdWVlTGVuZ3RoOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3Bl
cmF0aW9ucz4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgc3RkOjpvcHRpb25hbDxGaWx0ZXJPcGVyYXRpb25zPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7
CiAgICAgaWYgKHN0eWxlUmVzb2x2ZXIuY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgb3Bl
cmF0aW9ucykpCiAgICAgICAgIHJldHVybiBvcGVyYXRpb25zOwotICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBGb250RmVhdHVyZVNldHRp
bmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRGZWF0dXJlU2V0dGluZ3MoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTE0MDQsNyArMTQwNCw3IEBA
IGlubGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRH
bHlwaE9yaWVudGF0aW9uT3JBdXRvKFN0CiAgICAgcmV0dXJuIGNvbnZlcnRHbHlwaE9yaWVudGF0
aW9uKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGZsb2F0IG11bHRpcGxpZXIpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlLCBmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQpAQCAtMTQyNCw3ICsxNDI0LDcgQEAgaW5s
aW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhl
aWdodChTdHlsZVJlc29sdmVyJgogICAgICAgICAvLyBGSVhNRTogbnVtYmVyIGFuZCBwZXJjZW50
YWdlIHZhbHVlcyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSB0eXBlIG9mIExlbmd0aCAoaWUuIEZp
eGVkIG9yIFBlcmNlbnQpLgogICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRv
dWJsZVZhbHVlKCkgKiBtdWx0aXBsaWVyICogMTAwLjAsIFBlcmNlbnQpOwogICAgIH0KLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgRm9u
dFN5bnRoZXNpcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3ludGhlc2lzKFN0
eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggNzExZTU4OTRlODM1OWYzZWRmZmM3MWQ2MDY1Y2U2ZjA3
NDgxNDQ4NS4uNGYxYTA3M2MwODk4MDVjMzMzYzIzMDQ2MTVmZjZjNTY0MDViZmE4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtNjMwLDcgKzYzMCw3IEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsTGluZUhlaWdodChTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBmbG9hdCBtdWx0aXBsaWVyID0gc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT50ZXh0U2l6ZUFkanVzdCgpLmlzUGVyY2VudGFnZSgpID8gc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT50ZXh0U2l6ZUFkanVzdCgpLm11bHRpcGxpZXIoKSA6IDEuZjsKLSAgICBPcHRpb25hbDxMZW5n
dGg+IGxpbmVIZWlnaHQgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0
KHN0eWxlUmVzb2x2ZXIsIHZhbHVlLCBtdWx0aXBsaWVyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPExl
bmd0aD4gbGluZUhlaWdodCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWln
aHQoc3R5bGVSZXNvbHZlciwgdmFsdWUsIG11bHRpcGxpZXIpOwogICAgIGlmICghbGluZUhlaWdo
dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSdWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3Bw
CmluZGV4IGZmN2JjMzUwZWE5ODhiZjg4MGRjMGNkYzA0NDNjMmFmZmQ4NmUwYTkuLjBlYTdjYWM0
N2YyYWQxOTAxNjA5M2ZlYmJhNjY2ZWY4NjhmZGY0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGVJbXBvcnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6
OnJlcXVlc3RTdHlsZVNoZWV0KCkKIAogICAgIC8vIEZJWE1FOiBTa2lwIENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5IGNoZWNrIHdoZW4gc3R5bGVzaGVldCBpcyBpbiBhIHVzZXIgYWdlbnQgc2hhZG93
IHRyZWUuCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ2NjYzPi4KLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChhYnNVUkwsIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIE51bGxv
cHQsIFN0cmluZyhtX3BhcmVudFN0eWxlU2hlZXQtPmNoYXJzZXQoKSkpOworICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KGFic1VSTCwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1
bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBTdHJpbmcobV9wYXJlbnRT
dHlsZVNoZWV0LT5jaGFyc2V0KCkpKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRS
ZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKICAgICBpZiAobV9jYWNoZWRTaGVldCkK
ICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KG1fc3R5bGVTaGVldENsaWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKaW5kZXggMGQ4YmJiZWI1YmIx
NWE4NWNjMWI1MTgzMTFlYzM0MzY5YWExYTQ3Yi4uYTViZjVjODhmOWI0OWNiMzIwZGQ3YmY1Zjg1
YmYwNWMzZGY2OGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcApA
QCAtNDk4NSwyOSArNDk4NSwyOSBAQCBib29sIENTU1BhcnNlcjo6aXNTcHJpbmdUaW1pbmdGdW5j
dGlvbkVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQuc3ByaW5nVGltaW5nRnVu
Y3Rpb25FbmFibGVkOwogfQogCi1PcHRpb25hbDxkb3VibGU+IENTU1BhcnNlcjo6cGFyc2VDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQorc3Rk
OjpvcHRpb25hbDxkb3VibGU+IENTU1BhcnNlcjo6cGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogewogICAgIFZhbHVlV2l0aENhbGN1
bGF0aW9uIGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKCphcmdzLmN1cnJlbnQoKSk7CiAgICAgaWYg
KCF2YWxpZGF0ZVVuaXQoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24sIEZOdW1iZXIpKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IHJlc3VsdCA9IHBhcnNlZERv
dWJsZShhcmd1bWVudFdpdGhDYWxjdWxhdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlc3VsdCA9IHBhcnNlZERvdWJsZShhcmd1
bWVudFdpdGhDYWxjdWxhdGlvbik7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIG5leHRWYWx1ZSA9IGFy
Z3MubmV4dCgpOwogICAgIGlmICghbmV4dFZhbHVlKSB7CiAgICAgICAgIC8vIFRoZSBsYXN0IG51
bWJlciBpbiB0aGUgZnVuY3Rpb24gaGFzIG5vIGNvbW1hIGFmdGVyIGl0LCBzbyB3ZSdyZSBkb25l
LgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBpZiAoIWlzQ29tbWEobmV4dFZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgYXJncy5uZXh0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8
ZG91YmxlPiBDU1NQYXJzZXI6OnBhcnNlU3ByaW5nVGltaW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJz
ZXJWYWx1ZUxpc3QmIGFyZ3MpCitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ1NTUGFyc2VyOjpwYXJz
ZVNwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQogewog
ICAgIFZhbHVlV2l0aENhbGN1bGF0aW9uIGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKCphcmdzLmN1
cnJlbnQoKSk7CiAgICAgaWYgKCF2YWxpZGF0ZVVuaXQoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24s
IEZOdW1iZXIpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICBPcHRpb25hbDxkb3VibGU+
IHJlc3VsdCA9IHBhcnNlZERvdWJsZShhcmd1bWVudFdpdGhDYWxjdWxhdGlvbik7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlc3VsdCA9
IHBhcnNlZERvdWJsZShhcmd1bWVudFdpdGhDYWxjdWxhdGlvbik7CiAgICAgYXJncy5uZXh0KCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTc2NzEsMTEgKzc2NzEsMTEgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYgdmFsdWUsIGludCogY29s
b3JBcnJheSwgYm9vbAogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxzdGQ6OnBhaXI8
c3RkOjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNwYWNlPj4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
RnVuY3Rpb25QYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IENTU1BhcnNlcjo6
cGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUuZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7
CiAgICAgaWYgKCFhcmdzLT5zaXplKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlOwogICAg
IHN3aXRjaCAoYXJncy0+Y3VycmVudCgpLT5pZCkgewpAQCAtNzY4Niw3ICs3Njg2LDcgQEAgT3B0
aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IENTU1Bh
cnNlcjo6cGFyc2VDb2xvckZ1bmMKICAgICAgICAgY29sb3JTcGFjZSA9IENvbG9yU3BhY2VEaXNw
bGF5UDM7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHN0ZDo6YXJy
YXk8ZG91YmxlLCA0PiBjb2xvclZhbHVlcyA9IHsgeyAwLCAwLCAwLCAxIH0gfTsKQEAgLTc2OTYs
NyArNzY5Niw3IEBAIE9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENv
bG9yU3BhY2U+PiBDU1NQYXJzZXI6OnBhcnNlQ29sb3JGdW5jCiAgICAgICAgIGlmICh2YWx1ZU9y
TnVsbCkgewogICAgICAgICAgICAgVmFsdWVXaXRoQ2FsY3VsYXRpb24gYXJndW1lbnRXaXRoQ2Fs
Y3VsYXRpb24oKnZhbHVlT3JOdWxsKTsKICAgICAgICAgICAgIGlmICghdmFsaWRhdGVVbml0KGFy
Z3VtZW50V2l0aENhbGN1bGF0aW9uLCBGTnVtYmVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgY29sb3JWYWx1ZXNbaV0gPSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWluKDEuMCwgcGFyc2VkRG91
YmxlKGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzcw
NiwxMyArNzcwNiwxMyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8c3RkOjphcnJheTxkb3VibGUsIDQ+
LCBDb2xvclNwYWNlPj4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnVuYwogICAgICAgICByZXR1cm4g
eyB7IGNvbG9yVmFsdWVzLCBjb2xvclNwYWNlIH0gfTsKIAogICAgIGlmICghaXNGb3J3YXJkU2xh
c2hPcGVyYXRvcigqc2xhc2hPck51bGwpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEhhbmRsZSBhbHBoYS4KIAogICAgIFZh
bHVlV2l0aENhbGN1bGF0aW9uIGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKCphcmdzLT5uZXh0KCkp
OwogICAgIGlmICghdmFsaWRhdGVVbml0KGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uLCBGTnVtYmVy
IHwgRlBlcmNlbnQpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBjb2xvclZhbHVlc1szXSA9IHN0ZDo6bWF4KDAuMCwgc3RkOjptaW4o
MS4wLCBwYXJzZUNvbG9yRG91YmxlKGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKSkpOwogCiAgICAg
Ly8gRklYTUU6IFN1cHBvcnQgdGhlIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZhbGxiYWNrIGNv
bG9yIHZhbHVlcy4KQEAgLTc3MjAsNyArNzcyMCw3IEBAIE9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6
OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBDU1NQYXJzZXI6OnBhcnNlQ29sb3JGdW5j
CiAKICAgICBhdXRvIGNvbW1hT3JOdWxsID0gYXJncy0+bmV4dCgpOwogICAgIGlmIChjb21tYU9y
TnVsbCAmJiAhaXNDb21tYShjb21tYU9yTnVsbCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBjb2xvclZhbHVl
cywgY29sb3JTcGFjZSB9IH07CiB9CkBAIC03ODE0LDcgKzc4MTQsNyBAQCBDb2xvciBDU1NQYXJz
ZXI6OnBhcnNlQ29sb3JGcm9tVmFsdWUoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogICAgIH0gZWxz
ZSBpZiAodmFsdWUudW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24KICAgICAgICAgJiYg
dmFsdWUuZnVuY3Rpb24tPmFyZ3MKICAgICAgICAgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UodmFsdWUuZnVuY3Rpb24tPm5hbWUsICJjb2xvcigiKSkgewotICAgICAgICBPcHRpb25h
bDxzdGQ6OnBhaXI8c3RkOjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNwYWNlPj4gY29sb3JEYXRh
ID0gcGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyh2YWx1ZSk7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IGNvbG9y
RGF0YSA9IHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcnModmFsdWUpOwogICAgICAgICBpZiAo
IWNvbG9yRGF0YSkKICAgICAgICAgICAgIHJldHVybiBDb2xvcigpOwogICAgICAgICByZXR1cm4g
Q29sb3IoY29sb3JEYXRhLnZhbHVlKCkuZmlyc3RbMF0sIGNvbG9yRGF0YS52YWx1ZSgpLmZpcnN0
WzFdLCBjb2xvckRhdGEudmFsdWUoKS5maXJzdFsyXSwgY29sb3JEYXRhLnZhbHVlKCkuZmlyc3Rb
M10sIGNvbG9yRGF0YS52YWx1ZSgpLnNlY29uZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXIuaAppbmRleCAwZmJmNjU5MWY0ZGVkYjJhMmIwYTFiMmNmNmU2YmNlNTdmYzg5OTFhLi5k
OWQyZTFmZmM1M2Y3NWMyNTEwMzBmMmJhYzM0N2VhMTg5NDZjMmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBjbGFzcyBDU1NQYXJzZXIg
ewogICAgICAgICBTb3VyY2VTaXplKE1lZGlhUXVlcnlFeHByZXNzaW9uJiYsIFJlZjxDU1NWYWx1
ZT4mJik7CiAgICAgfTsKICAgICBWZWN0b3I8U291cmNlU2l6ZT4gcGFyc2VTaXplc0F0dHJpYnV0
ZShTdHJpbmdWaWV3KTsKLSAgICBPcHRpb25hbDxTb3VyY2VTaXplPiBzb3VyY2VTaXplKE1lZGlh
UXVlcnlFeHByZXNzaW9uJiYsIENTU1BhcnNlclZhbHVlJik7CisgICAgc3RkOjpvcHRpb25hbDxT
b3VyY2VTaXplPiBzb3VyY2VTaXplKE1lZGlhUXVlcnlFeHByZXNzaW9uJiYsIENTU1BhcnNlclZh
bHVlJik7CiAKICAgICBib29sIHBhcnNlRmlsbEltYWdlKENTU1BhcnNlclZhbHVlTGlzdCYsIFJl
ZlB0cjxDU1NWYWx1ZT4mKTsKIApAQCAtMjE0LDggKzIxNCw4IEBAIGNsYXNzIENTU1BhcnNlciB7
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8ZG91YmxlPj4gcGFyc2VLZXlmcmFt
ZUtleUxpc3QoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIHBhcnNlVHJhbnNmb3JtT3JpZ2lu
U2hvcnRoYW5kKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mLCBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0Jik7Ci0gICAg
T3B0aW9uYWw8ZG91YmxlPiBwYXJzZVNwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2Vy
VmFsdWVMaXN0Jik7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYpOworICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBwYXJzZVNwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVM
aXN0Jik7CiAgICAgYm9vbCBwYXJzZUFuaW1hdGlvblByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFJl
ZlB0cjxDU1NWYWx1ZT4mLCBBbmltYXRpb25QYXJzZUNvbnRleHQmKTsKICAgICBib29sIHBhcnNl
VHJhbnNpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAg
Ym9vbCBwYXJzZUFuaW1hdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFu
dCk7CkBAIC0yODAsNyArMjgwLDcgQEAgY2xhc3MgQ1NTUGFyc2VyIHsKIAogICAgIGJvb2wgcGFy
c2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBw
YXJzZUFscGhhKTsKICAgICBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYs
IGRvdWJsZSogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7Ci0gICAgT3B0aW9uYWw8c3Rk
OjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IHBhcnNlQ29sb3JGdW5j
dGlvblBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6
cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBwYXJzZUNvbG9yRnVuY3Rp
b25QYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJik7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBwYXJzZUNvbG9yKENTU1BhcnNlclZhbHVlKiA9IG51bGxwdHIpOwogICAgIENvbG9yIHBh
cnNlQ29sb3JGcm9tVmFsdWUoQ1NTUGFyc2VyVmFsdWUmKTsKICAgICB2b2lkIHBhcnNlU2VsZWN0
b3IoY29uc3QgU3RyaW5nJiwgQ1NTU2VsZWN0b3JMaXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvU2VsZWN0b3JDb21waWxlci5jcHAKaW5kZXggZTQ4NDg0OWI5MmY5ZDZjY2M2M2RhYTg5MzA4
NGUxZmU0NDc2MjMwZS4uZTNkZmNkMDJiNDdmYjk2MWVhMDk5MzZkMWYwYmI1ZDBiODY2NWIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApAQCAtMzI2LDgg
KzMyNiw4IEBAIGNsYXNzIFNlbGVjdG9yQ29kZUdlbmVyYXRvciB7CiAgICAgdm9pZCBnZW5lcmF0
ZUVsZW1lbnRIYXNGb2N1c1dpdGhpbihBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMp
OwogCiAgICAgLy8gSGVscGVycy4KLSAgICB2b2lkIGdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklm
UmVzb2x2aW5nU3R5bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpSZWxh
dGlvbjo6VHlwZSwgT3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSA9IHsgfSk7
Ci0gICAgdm9pZCBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGNoZWNraW5nQ29udGV4dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpS
ZWxhdGlvbjo6VHlwZSwgT3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSA9IHsg
fSk7CisgICAgdm9pZCBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIHN0ZDo6
b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSA9IHsgfSk7CisgICAgdm9pZCBn
ZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29u
dGV4dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlw
ZSwgc3RkOjpvcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVySUQ+IHZhbHVlID0geyB9KTsKICAg
ICBBc3NlbWJsZXI6Okp1bXAgYnJhbmNoT25SZXNvbHZpbmdNb2RlV2l0aENoZWNraW5nQ29udGV4
dChBc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSwg
QXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCk7CiAgICAgQXNzZW1ibGVyOjpK
dW1wIGJyYW5jaE9uUmVzb2x2aW5nTW9kZShBc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24s
IFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29u
dGV4dCk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRJc0ZpcnN0TGluayhBc3NlbWJsZXI6Okp1
bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50KTsKQEAg
LTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUlu
ZGlyZWN0QWRqYWNlbnRUcmVlV2Fsa2VyKEFzc2VtYmxlcjo6SnVtcExpCiAgICAgbG9jYWxGYWls
dXJlQ2FzZXMubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKIH0KIAotdm9pZCBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5
bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSBy
ZWxhdGlvblR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUpCit2b2lk
IFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZp
bmdTdHlsZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpU
eXBlIHJlbGF0aW9uVHlwZSwgc3RkOjpvcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVySUQ+IHZh
bHVlKQogewogICAgIGlmIChtX3NlbGVjdG9yQ29udGV4dCA9PSBTZWxlY3RvckNvbnRleHQ6OlF1
ZXJ5U2VsZWN0b3IpCiAgICAgICAgIHJldHVybjsKQEAgLTIxODgsNyArMjE4OCw3IEBAIHN0YXRp
YyB2b2lkIGFkZFN0eWxlUmVsYXRpb25GdW5jdGlvbihTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5n
Q29udGV4dCogY2hlY2tpbmdDCiAgICAgY2hlY2tpbmdDb250ZXh0LT5zdHlsZVJlbGF0aW9ucy5h
cHBlbmQoeyAqZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RlZEJ5QWN0aXZlLCAxIH0p
OwogfQogCi12b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVBZGRTdHlsZVJlbGF0
aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUgcmVsYXRpb25UeXBlLCBPcHRp
b25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVySUQ+IHZhbHVlKQordm9pZCBTZWxlY3RvckNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbihBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hl
Y2tpbmdDb250ZXh0LCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5bGU6OlJlbGF0
aW9uOjpUeXBlIHJlbGF0aW9uVHlwZSwgc3RkOjpvcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQ+IHZhbHVlKQogewogICAgIEFTU0VSVChtX3NlbGVjdG9yQ29udGV4dCAhPSBTZWxlY3RvckNv
bnRleHQ6OlF1ZXJ5U2VsZWN0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCAwNmEyZjJlNDlmZmVhYjg3NzE0ZWY3NTgx
YmJmMTA3ZWM2OGJjY2ZlLi5hYzVmZWU4ZDYxYjI3Yjc4ZjNiNWNlZTJiN2E3ZTYzODBlYTI1YWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWVJ
dGVtIHsKICAgICBUeXBlIG1fdHlwZTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fb2xkRG9jdW1l
bnQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX25ld0RvY3VtZW50OwotICAgIE9wdGlvbmFsPFF1
YWxpZmllZE5hbWU+IG1fYXR0cmlidXRlTmFtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFF1YWxpZmll
ZE5hbWU+IG1fYXR0cmlidXRlTmFtZTsKICAgICBBdG9taWNTdHJpbmcgbV9vbGRWYWx1ZTsKICAg
ICBBdG9taWNTdHJpbmcgbV9uZXdWYWx1ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBjNjE4YTlkZDZmY2FjYjk3ZmUzMGJiY2YyMTk4ZjhhZjllMjc0NDg0Li5lZDE2ZDE5ZDFkOGE4
NjAxNzAwZjliNjQ5NmFkNDNiOWNkNzVhOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTQzNDUsNyArNDM0NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50OjpzZXREb21haW4o
Y29uc3QgU3RyaW5nJiBuZXdEb21haW4pCiBTdHJpbmcgRG9jdW1lbnQ6Omxhc3RNb2RpZmllZCgp
CiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwotICAgIE9wdGlvbmFsPHN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludD4gZGF0ZVRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IGRhdGVUaW1lOwogICAgIGlmIChtX2ZyYW1lICYmIGxvYWRlcigp
KQogICAgICAgICBkYXRlVGltZSA9IGxvYWRlcigpLT5yZXNwb25zZSgpLmxhc3RNb2RpZmllZCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTU1NjFkY2FmMDdmMmUxZWE1NzAyNzNiYTEw
Yzk5MjNjYTQzYzU0Ni4uZDhlYWEyMjk1Nzg3ZjllZDFjYjliNzRmZmM0N2VmYjcxN2I4YzdiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjg3LDcgKzY4Nyw3IEBAIHZvaWQgRWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUpCiAKIHZv
aWQgRWxlbWVudDo6c2Nyb2xsQnkoY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zKQogewot
ICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVPcigwKSwgb3B0aW9ucy50b3Au
dmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZV9vcigw
KSwgb3B0aW9ucy50b3AudmFsdWVfb3IoMCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGRvdWJsZSBu
b3JtYWxpemVOb25GaW5pdGVWYWx1ZShkb3VibGUgZikKQEAgLTMwMDAsNyArMzAwMCw3IEBAIFVS
TCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAogCiBpbnQgRWxlbWVudDo6Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VIVE1M
SW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7CisgICAgcmV0
dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9v
cigwKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUpCkBAIC0zMDEwLDcgKzMwMTAsNyBA
QCB2b2lkIEVsZW1lbnQ6OnNldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGludCB2YWx1ZQogCiB1bnNpZ25lZCBFbGVtZW50OjpnZXRVbnNpZ25l
ZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpLnZhbHVlX29yKDApOwog
fQogCiB2b2lkIEVsZW1lbnQ6OnNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgdW5zaWduZWQgdmFsdWUpCkBAIC0zNDk4LDEwICsz
NDk4LDEwIEBAIHZvaWQgRWxlbWVudDo6ZGlkRGV0YWNoUmVuZGVyZXJzKCkKICAgICBBU1NFUlQo
aGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpOwogfQogCi1PcHRpb25hbDxFbGVtZW50
U3R5bGU+IEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSop
CiB7CiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEVsZW1l
bnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggOGRjMTU4MzM5MjFhZTYzYmM0ZmRmNTU0ZGExNDExZDM4NDIxZGYw
My4uNzZmNDVmMWU3MzgyMjk4OWRlZjAyN2Y0MzFjNGExMzEwNTIzMmY2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC01MTksNyArNTE5LDcgQEAgY2xhc3MgRWxlbWVudCA6IHB1YmxpYyBDb250YWlu
ZXJOb2RlIHsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0
YWNoUmVuZGVyZXJzKCk7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29s
dmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxFbGVt
ZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgTGF5b3V0UmVj
dCBhYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0ZpeGVkUG9zaXRpb25F
bGVtZW50cykgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJh
dG9yQXNzZXJ0aW9ucy5oCmluZGV4IGE3NjRhOWEwNGNjNmUyMzcxYjgxOTcyN2I1ZDliZjlkNzUx
ZWI3ZmIuLmRmMzcwM2FjYTI0ODc3MjVlZjIwYzY0MDg3NmYxNDI4NjRiMmQzZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApAQCAtNDAsNyAr
NDAsNyBAQCBjbGFzcyBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIHsKIHByaXZhdGU6CiAgICAg
Y29uc3QgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgdWludDY0X3QgbV9pbml0aWFsRE9NVHJl
ZVZlcnNpb247Ci0gICAgT3B0aW9uYWw8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uPiBtX2V2ZW50
RGlzcGF0Y2hBc3NlcnRpb247CisgICAgc3RkOjpvcHRpb25hbDxOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24+IG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbjsKIH07CiAKIC8vIEZJWE1FOiBObyByZWFs
IHBvaW50IGluIGRvaW5nIHRoZXNlIGFzIGlubGluZXM7IHRoZXkgYXJlIGZvciBkZWJ1Z2dpbmcg
YW5kIHdlIHVzdWFsbHkgdHVybiBvZmYgaW5saW5pbmcgaW4gZGVidWcgYnVpbGRzLgpAQCAtNjAs
MTQgKzYwLDE0IEBAIGlubGluZSBib29sIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmRvbVRy
ZWVIYXNNdXRhdGVkKCkgY29uc3QKIAogaW5saW5lIHZvaWQgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0
aW9uczo6ZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQogewotICAgIG1fZXZlbnREaXNwYXRj
aEFzc2VydGlvbiA9IE51bGxvcHQ7CisgICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gc3Rk
OjpudWxsb3B0OwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpj
bGVhcigpCiB7CiAgICAgbV9kb2N1bWVudCA9IG51bGxwdHI7CiAgICAgbV9pbml0aWFsRE9NVHJl
ZVZlcnNpb24gPSAwOwotICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IE51bGxvcHQ7Cisg
ICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
T3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCmluZGV4IDJiZDA3OWQwYjk3
N2QyMTUyZjJiOTlkNDA2ZDBlM2RlNzYzZGVkNWEuLmQxZDI4YzEwYzIyNzQwMmUxMjgxMDQzOWE0
ZjMyNDc3OTM1MDBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25P
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeGNlcHRpb25Pci5oCkBAIC02OCw3ICs2OCw3
IEBAIHRlbXBsYXRlPD4gY2xhc3MgRXhjZXB0aW9uT3I8dm9pZD4gewogICAgIEV4Y2VwdGlvbiYm
IHJlbGVhc2VFeGNlcHRpb24oKTsKIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxFeGNlcHRpb24+
IG1fZXhjZXB0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBtX2V4Y2VwdGlvbjsK
IH07CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IGlzb2xhdGVkQ29weShFeGNlcHRpb25Pcjx2b2lkPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXgg
ZjU1MGRkMjRjNzYxYzIxY2EyZGZmZDRhZGI4MTYyMzM0NWRkN2E4My4uNTcyMjg5ZDgyNTBjMDVl
ZDBhYWU3NDVmZTA4Zjg5MDg1ZDJjZDgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGlu
ZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIENTU1BhcnNlckNv
bnRleHQgcGFyc2VyQ29udGV4dEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW5saW5lU3R5bGVTaGVldENh
Y2hlS2V5PiBtYWtlSW5saW5lU3R5bGVTaGVldENhY2hlS2V5KGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPElubGluZVN0eWxl
U2hlZXRDYWNoZUtleT4gbWFrZUlubGluZVN0eWxlU2hlZXRDYWNoZUtleShjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgLy8gT25seSBjYWNoZSBmb3Ig
c2hhZG93IHRyZWVzLiBNYWluIGRvY3VtZW50IGlubGluZSBzdHlsZXNoZWV0cyBhcmUgZ2VuZXJh
bGx5IHVuaXF1ZSBhbmQgY2FuJ3QgYmUgc2hhcmVkIGJldHdlZW4gZG9jdW1lbnRzLgogICAgIC8v
IEZJWE1FOiBUaGlzIGNvdWxkIGJlIHJlbGF4ZWQgd2hlbiBhIHN0eWxlc2hlZXQgZG9lcyBub3Qg
Y29udGFpbiBkb2N1bWVudC1yZWxhdGl2ZSBVUkxzIChvciAjdXJscykuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0tl
eWJvYXJkRXZlbnQuaAppbmRleCBlYzdkZTk2YjhkMzc3MzdiZjExMDEzNmI1MjIyOTViN2U5OGEx
NmFiLi5iNmRkZGUzYzNiMWYwODJiOWIzY2ZjMzM3ODQwZWEzMmYyNDI2Yzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgS2V5Ym9hcmRFdmVu
dCBmaW5hbCA6IHB1YmxpYyBVSUV2ZW50V2l0aEtleVN0YXRlIHsKIAogICAgICAgICAvLyBMZWdh
Y3kuCiAgICAgICAgIFN0cmluZyBrZXlJZGVudGlmaWVyOwotICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZD4ga2V5TG9jYXRpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGtleUxv
Y2F0aW9uOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPEtleWJvYXJkRXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0
ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5kZXggNjU1Y2QxZmM0MmJjNjYyOWRiMDMyMmY1ZWMyZWM4
ZjczNDQwZTA0MC4uOTA5NjFiOGVjYjgyMzNhY2U2NzY1OTY1OGE1NDdmMWIzNWQ3MzRiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKQEAgLTUxLDE1
ICs1MSwxNSBAQCBib29sIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6aXNMb2FkZWQoKSBjb25zdAog
ICAgIHJldHVybiBtX2NhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKTsKIH0KIAotT3B0aW9uYWw8TG9h
ZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3Jp
cHQ6OmVycm9yKCkgY29uc3QKIHsKICAgICBpZiAobV9lcnJvcikKICAgICAgICAgcmV0dXJuIG1f
ZXJyb3I7CiAKICAgICBpZiAobV9jYWNoZWRTY3JpcHQtPmVycm9yT2NjdXJyZWQoKSkKLSAgICAg
ICAgcmV0dXJuIEVycm9yIHsgRXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsIE51bGxvcHQgfTsKKyAg
ICAgICAgcmV0dXJuIEVycm9yIHsgRXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsIHN0ZDo6bnVsbG9w
dCB9OwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6Ondhc0NhbmNlbGVkKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAppbmRleCBmZTI1OTUwMjM0M2Qy
ZTNmOTdmYzE0ZGFmZmJmZWQ5YThmZWQxZDM4Li5hZDQxZGMyYWI3ZDQxZDBmMTVhOGRiMjJhMGQw
NTQ2NjM5NGRjYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFz
c2ljU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Njcmlw
dC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIExvYWRhYmxlQ2xhc3NpY1NjcmlwdCBmaW5hbCA6
IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjCiAKICAgICBzdGF0
aWMgUmVmPExvYWRhYmxlQ2xhc3NpY1NjcmlwdD4gY3JlYXRlKENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFNjcmlwdD4mJik7CiAgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IGZpbmFsOwotICAg
IE9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
RXJyb3I+IGVycm9yKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0
IGZpbmFsOwogCiAgICAgQ2FjaGVkU2NyaXB0JiBjYWNoZWRTY3JpcHQoKSB7IHJldHVybiAqbV9j
YWNoZWRTY3JpcHQ7IH0KQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgTG9hZGFibGVDbGFzc2ljU2Ny
aXB0IGZpbmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hlZFJlc291cmMK
ICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0OwotICAgIE9w
dGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgTnVsbG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8RXJy
b3I+IG1fZXJyb3IgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCmluZGV4IGNhMThlNjhkYjQzMDRlMGY2NGFiODdl
ODE1NzY2MzExMDU3MWE0ODIuLjg0Mjg3ZWU3YjFhM2U3MjQxZmE3ZTFmMDdjZTk4YTU0ZTA5YWZm
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcApAQCAt
NTIsNyArNTIsNyBAQCBib29sIExvYWRhYmxlTW9kdWxlU2NyaXB0Ojppc0xvYWRlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbW9kdWxlU2NyaXB0LT5pc0xvYWRlZCgpOwogfQogCi1PcHRpb25hbDxM
b2FkYWJsZVNjcmlwdDo6RXJyb3I+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjplcnJvcigpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVNb2R1bGVTY3Jp
cHQ6OmVycm9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tb2R1bGVTY3JpcHQtPmVycm9yKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5oCmluZGV4IDBjZmQw
ZDY3YWNiNzllMDc0YTM1ZDE0MTM2ZTI1ZjJiOTVmNmMxZmIuLmRkZWE5ZjhjYjA1MGFhYmJiYzFk
ZGJkMzc5ODE2MDJiNTA2ZTZiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZU1vZHVsZVNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVs
ZVNjcmlwdC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIExvYWRhYmxlTW9kdWxlU2NyaXB0IGZp
bmFsIDogcHVibGljIExvYWRhYmxlU2NyaXB0LCBwcml2YXRlIENhY2hlZE1vZHVsZVNjCiAgICAg
c3RhdGljIFJlZjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gY3JlYXRlKENhY2hlZE1vZHVsZVNjcmlw
dCYpOwogCiAgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPEVy
cm9yPiBlcnJvcigpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9y
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQoKSB7IHJldHVybiBtX21vZHVsZVNj
cmlwdC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaAppbmRleCAzYWQxN2M1
NTliNDczMzcwYmY3NmM0ZGE3ZWQ1NDgwYjFlNDcxMjhkLi5iYTIyZmIxNWI4MTRkNzE3ZDhkMjc0
YzgwNDZmYTk1MGUyMTM5ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFi
bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVTY3JpcHQuaApAQCAt
NTEsMTMgKzUxLDEzIEBAIGNsYXNzIExvYWRhYmxlU2NyaXB0IDogcHVibGljIFJlZkNvdW50ZWQ8
TG9hZGFibGVTY3JpcHQ+IHsKIAogICAgIHN0cnVjdCBFcnJvciB7CiAgICAgICAgIEVycm9yVHlw
ZSB0eXBlOwotICAgICAgICBPcHRpb25hbDxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2U7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlOwog
ICAgIH07CiAKICAgICB2aXJ0dWFsIH5Mb2FkYWJsZVNjcmlwdCgpIHsgfQogCiAgICAgdmlydHVh
bCBib29sIGlzTG9hZGVkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RXJyb3I+
IGVycm9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJy
b3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHdhc0NhbmNlbGVkKCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoU2NyaXB0RWxlbWVudCYpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggNzEzZDczZDQ1MTQ4NjBmNDUyYWIwYTUwMDNl
NWQyNDI1YzQzYjBjYi4uZmU5YzJjNTkxZDhkYjZkNzJjMmI0NzZmM2U2NjQyYzZmYzNiNDZhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgaW5saW5l
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgSW4KIHsKIH0KIAotaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQoraW5s
aW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiAgICAgOiBFdmVudChldmVudE5hbWVzKCkubWVz
c2FnZUV2ZW50LCBmYWxzZSwgZmFsc2UpCiAgICAgLCBtX2RhdGFUeXBlKERhdGFUeXBlU2VyaWFs
aXplZFNjcmlwdFZhbHVlKQogICAgICwgbV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShkYXRhKSkKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2Fn
ZUV2ZW50KFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKIHsK
IH0KIAotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9w
dGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UpCitSZWY8TWVzc2FnZUV2ZW50PiBN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRT
b3VyY2U+JiYgc291cmNlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVu
dChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJjZSksIFdU
Rk1vdmUocG9ydHMpKSk7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAgTWVzc2FnZUV2ZW50Ojp+TWVz
c2FnZUV2ZW50KCkKIHsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQo
RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBKU1ZhbHVlIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYg
c291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKK3ZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgSlNWYWx1ZSBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpv
cHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mJiBwb3J0cykKIHsKICAgICBpZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZl
bnQoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLAogICAgIG1fcG9y
dHMgPSBXVEZNb3ZlKHBvcnRzKTsKIH0KIAotdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VF
dmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRz
KQordm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiB7CiAgICAgaWYgKGRpc3Bh
dGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4
IDRlNjk0ZDQxNGE0OGUwYWZlZThiNmJmMDA1NDc4NTU1MmIxOGQyZTMuLjcxMGFhY2Y4NDFlZDM2
MzBkNjdjZGIxMjgxMGJmZGNiMjE2MGEzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgK
QEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gVmFyaWFudDxSZWZQ
dHI8RE9NV2luZG93PiwgUmVmUHRyPE1lc3NhZ2VQb3J0Pj47CiAKIGNsYXNzIE1lc3NhZ2VFdmVu
dCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0
cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBz
b3VyY2UgPSBOdWxsb3B0KTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlID0gc3Rk
OjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwogICAgIHN0YXRpYyBS
ZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiA9IHsgfSk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShSZWY8
QmxvYj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CkBAIC01MywxNSArNTMsMTUgQEAg
Y2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKICAgICAgICAgSlNDOjpK
U1ZhbHVlIGRhdGE7CiAgICAgICAgIFN0cmluZyBvcmlnaW47CiAgICAgICAgIFN0cmluZyBsYXN0
RXZlbnRJZDsKLSAgICAgICAgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiBzb3VyY2U7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiBzb3VyY2U7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKICAgICB9OwogICAgIHN0YXRpYyBS
ZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObyk7CiAKICAgICB2aXJ0
dWFsIH5NZXNzYWdlRXZlbnQoKTsKIAotICAgIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgSlNDOjpKU1ZhbHVlIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKLSAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxl
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAgIHZvaWQgaW5pdE1l
c3NhZ2VFdmVudChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgSlNDOjpKU1ZhbHVlIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1l
c3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYpOworICAg
IHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYmKTsKIAogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW47IH0KICAgICBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0RXZlbnRJZDsgfQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBNZXNzYWdlRXZlbnQg
ZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAg
ICBNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBJbml0
JiYsIElzVHJ1c3RlZCk7Ci0gICAgTWVzc2FnZUV2ZW50KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQsIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxNZXNz
YWdlUG9ydD4+JiYpOworICAgIE1lc3NhZ2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiwgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiYpOwogICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwogICAgIE1lc3NhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKICAgICBNZXNzYWdlRXZlbnQo
UmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBtX2RhdGFBc0FycmF5QnVmZmVyOwogICAgIFN0cmluZyBtX29yaWdpbjsK
ICAgICBTdHJpbmcgbV9sYXN0RXZlbnRJZDsKLSAgICBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3Vy
Y2U+IG1fc291cmNlOworICAgIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiBtX3Nv
dXJjZTsKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gbV9wb3J0czsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCBmMTcwMDFmYjI2OWJiYzE5
YmM4NjI3NGU1N2YyZDU1YWYxYzZkZjRkLi4zMjU1NzlkY2M0MzBmN2ZhZmQ3MDE5OGMyZGU4Yzdl
NzEwYzZkYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC04
MCw5ICs4MCw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUo
Tm9kZSYgbm9kZSwgY29uc3QgSW5pdCYgaW5pdCkKICAgICAgICAgb3B0aW9ucyB8PSBDaGlsZExp
c3Q7CiAgICAgaWYgKGluaXQuc3VidHJlZSkKICAgICAgICAgb3B0aW9ucyB8PSBTdWJ0cmVlOwot
ICAgIGlmIChpbml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQorICAgIGlmIChp
bml0LmF0dHJpYnV0ZU9sZFZhbHVlLnZhbHVlX29yKGZhbHNlKSkKICAgICAgICAgb3B0aW9ucyB8
PSBBdHRyaWJ1dGVPbGRWYWx1ZTsKLSAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUu
dmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVl
X29yKGZhbHNlKSkKICAgICAgICAgb3B0aW9ucyB8PSBDaGFyYWN0ZXJEYXRhT2xkVmFsdWU7CiAK
ICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gYXR0cmlidXRlRmlsdGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmgKaW5kZXggMDM1ZGI2NGY0MzZmNTliZjY5NDhhNWE0OWJmZmU0
NDcyODdlNjAwMC4uYjdjNzFiZDUxMTI4OTYzODk3ZjYzZDgyOWVkY2MxMTM5ZTg0MzI5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCkBAIC03MywxMiArNzMsMTIgQEAgY2xh
c3MgTXV0YXRpb25PYnNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uT2JzZXJ2ZXI+
IHsKIAogICAgIHN0cnVjdCBJbml0IHsKICAgICAgICAgYm9vbCBjaGlsZExpc3Q7Ci0gICAgICAg
IE9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZXM7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGNoYXJh
Y3RlckRhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYXR0cmlidXRlczsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBjaGFyYWN0ZXJEYXRhOwogICAgICAgICBib29sIHN1YnRy
ZWU7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZU9sZFZhbHVlOwotICAgICAgICBP
cHRpb25hbDxib29sPiBjaGFyYWN0ZXJEYXRhT2xkVmFsdWU7Ci0gICAgICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBhdHRyaWJ1dGVGaWx0ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gYXR0cmlidXRlT2xkVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2hhcmFj
dGVyRGF0YU9sZFZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBh
dHRyaWJ1dGVGaWx0ZXI7CiAgICAgfTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IG9ic2VydmUo
Tm9kZSYsIGNvbnN0IEluaXQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5jcHAKaW5kZXggN2QxZmU2NDg5OGIwYjI4NzNmYTQ0NGVkMjhlYmZjZWFjYzFhY2Yy
Mi4uOWFkOWU3YjM1MmFlOGZjNjM5OTY1OGJmMjk0ZDNlNTA5ODc2ZGRkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBA
QCB2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KCkKICNlbmRpZgog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFN0cmluZyBjaGFyc2V0ID0gYXR0cnMuZ2V0
KCJjaGFyc2V0Iik7Ci0gICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgTnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkg
PyBkb2N1bWVudCgpLmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOworICAgICAgICAgICAg
ICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwo
aHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25z
KCksIHN0ZDo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVudCgpLmNoYXJzZXQo
KSA6IFdURk1vdmUoY2hhcnNldCkpOwogCiAgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChX
VEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcAppbmRleCAzY2JhOTRiZDBjMDU2MGI2YThhYTkyYmI5YTlhZTYzMmUxMTg4YTg2Li40
ZGFkZmJhYTRiZGU0MmRjMjdlMjcyNWY0YjhhMzU2MzcwM2E2NTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwCkBAIC03NywxMSArNzcsMTEgQEAgdm9pZCBQc2V1ZG9FbGVtZW50
OjpjbGVhckhvc3RFbGVtZW50KCkKICAgICBtX2hvc3RFbGVtZW50ID0gbnVsbHB0cjsKIH0KIAot
T3B0aW9uYWw8RWxlbWVudFN0eWxlPiBQc2V1ZG9FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCitzdGQ6
Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gUHNldWRvRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQogewog
ICAgIGF1dG8qIHN0eWxlID0gbV9ob3N0RWxlbWVudC0+cmVuZGVyZXIoKS0+Z2V0Q2FjaGVkUHNl
dWRvU3R5bGUobV9wc2V1ZG9JZCwgJnBhcmVudFN0eWxlKTsKICAgICBpZiAoIXN0eWxlKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gRWxlbWVudFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqc3R5bGUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKaW5kZXggNTI2OWVkYjE4YmU2MDMzNjUzZjNlZTVi
YjliZTBmOTY5MDhkNjM0YS4uMzY3YWRhNTc2YjI4NzJiOTc2NzNhNDI0OTJmMTA5MTc1ZGEwOTVj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IFBzZXVkb0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgRWxlbWVudCB7CiAgICAgRWxlbWVudCogaG9z
dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hvc3RFbGVtZW50OyB9CiAgICAgdm9pZCBjbGVh
ckhvc3RFbGVtZW50KCk7CiAKLSAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
KiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0
eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5
bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2VCb3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50
LmgKaW5kZXggNTk3YzkyZjU3Y2VlMzZmZDA3NjY0OTVlZGNkNjFmYjE5MGE3ZTZjZi4uNzFjOTJj
ZGZjOWUxYTQ2ZTNjNmUxMTliMjJiYzNiZGY2YWVmNTIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZUJvdW5kYXJ5UG9pbnQuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBSYW5nZUJvdW5kYXJ5
UG9pbnQgewogCiBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBtX2NvbnRhaW5lck5vZGU7Ci0g
ICAgbXV0YWJsZSBPcHRpb25hbDx1bnNpZ25lZD4gbV9vZmZzZXRJbkNvbnRhaW5lciB7IDAgfTsK
KyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fb2Zmc2V0SW5Db250YWluZXIg
eyAwIH07CiAgICAgUmVmUHRyPE5vZGU+IG1fY2hpbGRCZWZvcmVCb3VuZGFyeTsKIH07CiAKQEAg
LTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvQmVm
b3JlQ2hpbGQoTm9kZSYgY2hpbGQpCiAgICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSk7CiAg
ICAgbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID0gY2hpbGQucHJldmlvdXNTaWJsaW5nKCk7CiAgICAg
bV9jb250YWluZXJOb2RlID0gY2hpbGQucGFyZW50Tm9kZSgpOwotICAgIG1fb2Zmc2V0SW5Db250
YWluZXIgPSBtX2NoaWxkQmVmb3JlQm91bmRhcnkgPyBOdWxsb3B0IDogT3B0aW9uYWw8dW5zaWdu
ZWQ+KDApOworICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVmb3JlQm91bmRhcnkg
PyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigwKTsKIH0KIAogaW5saW5l
IHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0FmdGVyQ2hpbGQoTm9kZSYgY2hpbGQpCkBA
IC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0Fm
dGVyQ2hpbGQoTm9kZSYgY2hpbGQpCiAgICAgQVNTRVJUKGNoaWxkLnBhcmVudE5vZGUoKSk7CiAg
ICAgbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID0gJmNoaWxkOwogICAgIG1fY29udGFpbmVyTm9kZSA9
IGNoaWxkLnBhcmVudE5vZGUoKTsKLSAgICBtX29mZnNldEluQ29udGFpbmVyID0gbV9jaGlsZEJl
Zm9yZUJvdW5kYXJ5ID8gTnVsbG9wdCA6IE9wdGlvbmFsPHVuc2lnbmVkPigwKTsKKyAgICBtX29m
ZnNldEluQ29udGFpbmVyID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gc3RkOjpudWxsb3B0IDog
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oMCk7CiB9CiAKIGlubGluZSB2b2lkIFJhbmdlQm91bmRh
cnlQb2ludDo6c2V0VG9TdGFydE9mTm9kZShSZWY8Tm9kZT4mJiBjb250YWluZXIpCkBAIC0xNjEs
NyArMTYxLDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0VuZE9mTm9k
ZShSZWY8Tm9kZT4mJiBjb250YWluZXIpCiAgICAgICAgIG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA9
IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID0g
bV9jb250YWluZXJOb2RlLT5sYXN0Q2hpbGQoKTsKLSAgICAgICAgbV9vZmZzZXRJbkNvbnRhaW5l
ciA9IG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA/IE51bGxvcHQgOiBPcHRpb25hbDx1bnNpZ25lZD4o
MCk7CisgICAgICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVmb3JlQm91bmRhcnkg
PyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPigwKTsKICAgICB9CiB9CiAK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OmNoaWxk
QmVmb3JlV2lsbEJlUmVtb3ZlZCgpCiAKIGlubGluZSB2b2lkIFJhbmdlQm91bmRhcnlQb2ludDo6
aW52YWxpZGF0ZU9mZnNldCgpIGNvbnN0CiB7Ci0gICAgbV9vZmZzZXRJbkNvbnRhaW5lciA9IE51
bGxvcHQ7CisgICAgbV9vZmZzZXRJbkNvbnRhaW5lciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSYW5nZUJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0IFJh
bmdlQm91bmRhcnlQb2ludCYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRl
eCA2YmUwZmE3YWE2NjMwMDY0YzY2MGZlNWY1ZWYyM2U1MjMzYTQyNmExLi4zNTA4NzM4MGU3NTNi
N2E5YmI2MDMyNmVmY2JiZjZmNzFhZWRhYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpkaXNwYXRjaEVy
cm9yRXZlbnQoKQogICAgIG1fZWxlbWVudC5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCi1PcHRpb25hbDxTY3Jp
cHRFbGVtZW50OjpTY3JpcHRUeXBlPiBTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBl
KExlZ2FjeVR5cGVTdXBwb3J0IHN1cHBvcnRMZWdhY3lUeXBlcykgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6ZGV0ZXJtaW5lU2Ny
aXB0VHlwZShMZWdhY3lUeXBlU3VwcG9ydCBzdXBwb3J0TGVnYWN5VHlwZXMpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IGlzTGVnYWN5U3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdlKCkgaXMgbm90
IHZhbGlkIEhUTUw1LiBJdCBpcyB1c2VkIGhlcmUgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBh
dGliaWxpdHkgd2l0aCBleGlzdGluZyBsYXlvdXQgdGVzdHMuIFRoZSBzcGVjaWZpYyB2aW9sYXRp
b25zIGFyZToKICAgICAvLyAtIEFsbG93aW5nIHR5cGU9amF2YXNjcmlwdC4gdHlwZT0gc2hvdWxk
IG9ubHkgc3VwcG9ydCBNSU1FIHR5cGVzLCBzdWNoIGFzIHRleHQvamF2YXNjcmlwdC4KQEAgLTE1
Niw3ICsxNTYsNyBAQCBPcHRpb25hbDxTY3JpcHRFbGVtZW50OjpTY3JpcHRUeXBlPiBTY3JpcHRF
bGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cAogICAgICAgICAgICAgcmV0dXJu
IFNjcmlwdFR5cGU6OkNsYXNzaWM7CiAgICAgICAgIGlmIChpc0xlZ2FjeVN1cHBvcnRlZEphdmFT
Y3JpcHRMYW5ndWFnZShsYW5ndWFnZSkpCiAgICAgICAgICAgICByZXR1cm4gU2NyaXB0VHlwZTo6
Q2xhc3NpYzsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFT
Y3JpcHRNSU1FVHlwZSh0eXBlLnN0cmlwV2hpdGVTcGFjZSgpKSkKICAgICAgICAgcmV0dXJuIFNj
cmlwdFR5cGU6OkNsYXNzaWM7CkBAIC0xNjgsMTYgKzE2OCwxNiBAQCBPcHRpb25hbDxTY3JpcHRF
bGVtZW50OjpTY3JpcHRUeXBlPiBTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKExl
Z2FjeVR5cAogICAgIC8vIE9uY2UgImRlZmVyIiBpcyBpbXBsZW1lbnRlZCwgd2UgY2FuIHJlY29u
c2lkZXIgZW5hYmxpbmcgbW9kdWxlcyBpbiBYSFRNTC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzg3CiAgICAgaWYgKCFtX2VsZW1lbnQuZG9jdW1l
bnQoKS5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8qIHNldHRpbmdzID0gbV9lbGVtZW50LmRv
Y3VtZW50KCkuc2V0dGluZ3MoKTsKICAgICBpZiAoIXNldHRpbmdzIHx8ICFzZXR0aW5ncy0+ZXM2
TW9kdWxlc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjYXR0ci1zY3JpcHQtdHlwZQogICAgIC8vIFNldHRpbmcgdGhl
IGF0dHJpYnV0ZSB0byBhbiBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciB0aGUgc3Ry
aW5nICJtb2R1bGUiIG1lYW5zIHRoYXQgdGhlIHNjcmlwdCBpcyBhIG1vZHVsZSBzY3JpcHQuCiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJtb2R1bGUiKSkKICAg
ICAgICAgcmV0dXJuIFNjcmlwdFR5cGU6Ok1vZHVsZTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9z
cGVjL092ZXJ2aWV3Lmh0bWwjcHJlcGFyZS1hLXNjcmlwdApAQCAtMjA0LDcgKzIwNCw3IEBAIGJv
b2wgU2NyaXB0RWxlbWVudDo6cHJlcGFyZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlw
dFN0YXJ0UG9zaXRpb24sIExlZ2FjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFNjcmlw
dFR5cGUgc2NyaXB0VHlwZSA9IFNjcmlwdFR5cGU6OkNsYXNzaWM7Ci0gICAgaWYgKE9wdGlvbmFs
PFNjcmlwdFR5cGU+IHJlc3VsdCA9IGRldGVybWluZVNjcmlwdFR5cGUoc3VwcG9ydExlZ2FjeVR5
cGVzKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxTY3JpcHRUeXBlPiByZXN1bHQgPSBkZXRlcm1p
bmVTY3JpcHRUeXBlKHN1cHBvcnRMZWdhY3lUeXBlcykpCiAgICAgICAgIHNjcmlwdFR5cGUgPSBy
ZXN1bHQudmFsdWUoKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzOCw4
ICs0MzgsOCBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVNb2R1bGVTY3JpcHQoQ2FjaGVk
TW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcHQpCiAKIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0
ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQog
ewotICAgIGlmIChPcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gbG9hZGFi
bGVTY3JpcHQuZXJyb3IoKSkgewotICAgICAgICBpZiAoT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6
OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlID0gZXJyb3ItPmNvbnNvbGVNZXNzYWdlKQorICAgIGlm
IChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBsb2FkYWJsZVNj
cmlwdC5lcnJvcigpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0
OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5jb25zb2xlTWVzc2FnZSkKICAgICAg
ICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1lc3NhZ2UtPnNv
dXJjZSwgbWVzc2FnZS0+bGV2ZWwsIG1lc3NhZ2UtPm1lc3NhZ2UpOwogICAgICAgICBkaXNwYXRj
aEVycm9yRXZlbnQoKTsKICAgICB9IGVsc2UgaWYgKCFsb2FkYWJsZVNjcmlwdC53YXNDYW5jZWxl
ZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCBmNDE0YjRiOGJiMzUxMjA2
MGZkNjlhNWZhNTg5YzcwMDhhYTZhNjY0Li42YzA4Njg4MmZmMzM4NDAyYjVjOTg5MThjNWU1OTNl
MWU2ZmM2YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTkxLDcgKzkxLDcg
QEAgY2xhc3MgU2NyaXB0RWxlbWVudCB7CiBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVNjcmlw
dEFuZERpc3BhdGNoRXZlbnQoTG9hZGFibGVTY3JpcHQmKTsKIAotICAgIE9wdGlvbmFsPFNjcmlw
dFR5cGU+IGRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBvcnQpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0VHlwZT4gZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXBl
U3VwcG9ydCkgY29uc3Q7CiAgICAgYm9vbCBpZ25vcmVzTG9hZFJlcXVlc3QoKSBjb25zdDsKICAg
ICBib29sIGlzU2NyaXB0Rm9yRXZlbnRTdXBwb3J0ZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RGVjb2Rlci5jcHAKaW5kZXggYjhiNDE2ZjA2NzBjYjMxYzFiMzE1OTc0YjMzYjJjZjc4NDk0
YjczMS4uOTZjYzczOWZjNjJiOWM1NTNiYTk4MTU0M2Y3MmVlZDAxMTUwNjFkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dERlY29kZXIuY3BwCkBAIC05NSw5ICs5NSw5IEBAIHN0YXRpYyBzaXplX3QgY29k
ZVVuaXRCeXRlU2l6ZShjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogICAgIHJldHVybiAy
OwogfQogCi1FeGNlcHRpb25PcjxTdHJpbmc+IFRleHREZWNvZGVyOjpkZWNvZGUoT3B0aW9uYWw8
QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4gaW5wdXQsIERlY29kZU9wdGlvbnMgb3B0aW9ucykK
K0V4Y2VwdGlvbk9yPFN0cmluZz4gVGV4dERlY29kZXI6OmRlY29kZShzdGQ6Om9wdGlvbmFsPEJ1
ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+IGlucHV0LCBEZWNvZGVPcHRpb25zIG9wdGlvbnMpCiB7
Ci0gICAgT3B0aW9uYWw8QnVmZmVyU291cmNlPiBpbnB1dEJ1ZmZlcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPEJ1ZmZlclNvdXJjZT4gaW5wdXRCdWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSA9
IG51bGxwdHI7CiAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgaWYgKGlucHV0KSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RGVjb2Rlci5oCmluZGV4IGFjM2RkMWUwNTViZGZmMzFjMmY4ZmM3MjAzM2M5NjQy
NWRkYTNlM2UuLmU0MjAxMjQzYTU1NGNkYWI4MDEzNzQzN2YzODBjOWZlNDA1ZGQ0NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RGVjb2Rlci5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFRleHREZWNvZGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dERlY29kZXI+IHsKICAgICBTdHJpbmcgZW5jb2Rpbmco
KSBjb25zdDsKICAgICBib29sIGZhdGFsKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmZhdGFs
OyB9CiAgICAgYm9vbCBpZ25vcmVCT00oKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuaWdub3Jl
Qk9NOyB9Ci0gICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBkZWNvZGUoT3B0aW9uYWw8QnVmZmVyU291
cmNlOjpWYXJpYW50VHlwZT4sIERlY29kZU9wdGlvbnMpOworICAgIEV4Y2VwdGlvbk9yPFN0cmlu
Zz4gZGVjb2RlKHN0ZDo6b3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4sIERlY29k
ZU9wdGlvbnMpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBwcmVwZW5kQk9NSWZOZWNlc3Nhcnko
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1
cmVJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9y
LmNwcAppbmRleCBjYjI4ZDFmMGYxZjgwMDBjYjdjOTQ0NDYyN2IxYzNmNTY3MjVlYTQwLi5lY2U2
OGYxZDU4YmY3OTg0MTVkZWM1MTJlMzEwOWI4Y2QyMzgwZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgVXNlckdlc3R1
cmVUb2tlbjo6flVzZXJHZXN0dXJlVG9rZW4oKQogICAgICAgICBvYnNlcnZlcigqdGhpcyk7CiB9
CiAKLVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGljYXRvcihPcHRpb25hbDxQ
cm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4gc3RhdGUsIERvY3VtZW50KiBkb2N1bWVudCkKK1Vz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGljYXRvcihzdGQ6Om9wdGlvbmFsPFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiBzdGF0ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogbV9wcmV2aW91c1Rva2VuKGN1cnJlbnRUb2tlbigpKQogewogICAgIC8vIFNpbGVudGx5IGln
bm9yZSBVc2VyR2VzdHVyZUluZGljYXRvcnMgb24gbm9uIG1haW4gdGhyZWFkcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKaW5kZXggMGFiMDc4NDU2ZjNjMTcwZDk5
ZmNjN2U3ZjBlZDZmNTRmZGZiYzU2Mi4uZjA0NGY2NWFhMTZkMWVhNmQzNmE5YmJlZDU3MzAyMzVi
ODQxN2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAg
LTc5LDcgKzc5LDcgQEAgY2xhc3MgVXNlckdlc3R1cmVJbmRpY2F0b3IgewogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCk7CiAKICAg
ICAvLyBJZiBhIGRvY3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgbGFzdCBrbm93biB1c2VyIGdlc3R1
cmUgdGltZXN0YW1wIGlzIHVwZGF0ZWQuCi0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVXNl
ckdlc3R1cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+LCBE
b2N1bWVudCogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2Vz
dHVyZUluZGljYXRvcihzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiwg
RG9jdW1lbnQqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVXNlckdl
c3R1cmVJbmRpY2F0b3IoUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+VXNlckdlc3R1cmVJbmRpY2F0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBjZjU5ODA0NGE0M2ViNjI5OGU5YTFm
YWNhNjg5YWYzY2Q1NTdmYTc0Li5kMjA4MDAwMDRiMzdlZjAxMDlhMTkwYzJiMDljMDQxYmY0ODAz
MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcApAQCAtMTUzNSwxMSArMTUzNSwxMSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAg
IH0KIH0KIAotT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OnNob3VsZEJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Vmlz
aWJsZVNlbGVjdGlvbj4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnNob3VsZEJyZWFrT3V0T2ZFbXB0
eUxpc3RJdGVtKCkgY29uc3QKIHsKICAgICBhdXRvIGVtcHR5TGlzdEl0ZW0gPSBlbmNsb3NpbmdF
bXB0eUxpc3RJdGVtKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpKTsKICAgICBpZiAo
IWVtcHR5TGlzdEl0ZW0pCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBsaXN0Tm9kZSA9IGVtcHR5TGlzdEl0ZW0tPnBhcmVu
dE5vZGUoKTsKICAgICAvLyBGSVhNRTogQ2FuJ3Qgd2UgZG8gc29tZXRoaW5nIGJldHRlciB3aGVu
IHRoZSBpbW1lZGlhdGUgcGFyZW50IHdhc24ndCBhIGxpc3Qgbm9kZT8KQEAgLTE1NDcsNyArMTU0
Nyw3IEBAIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpz
aG91bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpCiAgICAgICAgIHx8ICghbGlzdE5vZGUtPmhh
c1RhZ05hbWUodWxUYWcpICYmICFsaXN0Tm9kZS0+aGFzVGFnTmFtZShvbFRhZykpCiAgICAgICAg
IHx8ICFsaXN0Tm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpCiAgICAgICAgIHx8IGxpc3ROb2RlID09
IGVtcHR5TGlzdEl0ZW0tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gVmlzaWJs
ZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLnByZXZpb3VzKEJhY2t3YXJkRGVs
ZXRpb24pLCBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggZTE4NDJmOWE1NTBkYjRhMzcyNmIz
NmFjMzEzZDBmYmEyZGRmMmY5OC4uODVmNDE4ZjdkYjkxN2NjZjAxNDhhNmY3NGViYzM4YmViMDUw
MzliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
aApAQCAtMjAwLDcgKzIwMCw3IEBAIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kIDogcHVibGlj
IEVkaXRDb21tYW5kIHsKICAgICB2b2lkIGNsb25lUGFyYWdyYXBoVW5kZXJOZXdFbGVtZW50KGNv
bnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgTm9kZSogb3V0ZXJOb2Rl
LCBFbGVtZW50KiBibG9ja0VsZW1lbnQpOwogICAgIHZvaWQgY2xlYW51cEFmdGVyRGVsZXRpb24o
VmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uID0gVmlzaWJsZVBvc2l0aW9uKCkpOwogICAgIAot
ICAgIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHNob3VsZEJyZWFrT3V0T2ZFbXB0eUxpc3RJ
dGVtKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBzaG91bGRC
cmVha091dE9mRW1wdHlMaXN0SXRlbSgpIGNvbnN0OwogICAgIGJvb2wgYnJlYWtPdXRPZkVtcHR5
TGlzdEl0ZW0oKTsKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFn
cmFwaCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCBhZDEzNDM1YWFkOTk2MWEzOGQz
ZjlmZGEwMGFmNzdjYzhhNTg2M2RiLi5kNTM0NDdhNWJiZmRkMmI4NmM3MjVjZTQ4MTBkYjQ5M2I3
OGQ3Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBGaWxl
IGZpbmFsIDogcHVibGljIEJsb2IgewogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1f
bmFtZTsKIAotICAgIE9wdGlvbmFsPGludDY0X3Q+IG1fb3ZlcnJpZGVMYXN0TW9kaWZpZWREYXRl
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbV9vdmVycmlkZUxhc3RNb2RpZmllZERhdGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmgKaW5kZXggYWZjOTc2N2NhMmQ1NTczNzVkNThlOTNlMDk5ZjRhNWRlNTIwZDA1Yi4uYjRk
NTgzNmVkZWU2ODdhNDhkYTllNzIxYzViNDdlZTY2MDdmYTFlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2Ug
ewogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4gbV9jYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YTsKICAgICBib29sIG1faXNNYWluRnJhbWU7CiAgICAgYm9vbCBtX2lz
Q29tcG9zaXRlZDsKLSAgICBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IG1faGFzSW5zZWN1
cmVDb250ZW50OworICAgIHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBtX2hhc0lu
c2VjdXJlQ29udGVudDsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkRnJhbWU+
PiBtX2NoaWxkRnJhbWVzOwogfTsKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWUg
OiBwcml2YXRlIENhY2hlZEZyYW1lQmFzZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEqIGNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEhhc0luc2VjdXJlQ29udGVudChIYXNJbnNlY3VyZUNvbnRlbnQpOwot
ICAgIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNJbnNlY3VyZUNvbnRlbnQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEhh
c0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9o
YXNJbnNlY3VyZUNvbnRlbnQ7IH0KIAogICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6ZG9jdW1l
bnQ7CiAgICAgdXNpbmcgQ2FjaGVkRnJhbWVCYXNlOjp2aWV3OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01U
b2tlbkxpc3QuY3BwCmluZGV4IGIxYTU1Y2MyOTVlZWFjZWI0Mzg4NjA4MzlkOWZjMmVhNWIxNGVj
NzUuLjAzOTVhMmUwZjFhNjU1MjYxMTM0NDZjZGY3YmM0YTFkNWFkOTc4ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBET01Ub2tlbkxpc3Q6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuKQogICAg
IHJldHVybiByZW1vdmVJbnRlcm5hbCgmdG9rZW4uc3RyaW5nKCksIDEpOwogfQogCi1FeGNlcHRp
b25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2Vu
LCBPcHRpb25hbDxib29sPiBmb3JjZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IERPTVRva2VuTGlzdDo6
dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9y
Y2UpCiB7CiAgICAgYXV0byByZXN1bHQgPSB2YWxpZGF0ZVRva2VuKHRva2VuKTsKICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMTQyLDcgKzE0Miw3IEBAIEV4Y2VwdGlvbk9yPGJv
b2w+IERPTVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYgdG9rZW4sIE9wdGlv
bmFsPGJvb2w+CiAgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5zKCk7CiAKICAgICBpZiAo
dG9rZW5zLmNvbnRhaW5zKHRva2VuKSkgewotICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3IoZmFs
c2UpKSB7CisgICAgICAgIGlmICghZm9yY2UudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICB0b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4pOwogICAgICAgICAgICAgdXBkYXRlQXNzb2NpYXRl
ZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTVRva2VuTGlzdC5oCmluZGV4IDliOTg3ZDljOTQ3NmNkODUwMDRhMWM2NDE5Njlj
MGMzMjY3NjE1OTYuLjUzYWM1ZTJmNGNiZTJiYzNlOTU2NDU5YTY3ZWY2NTVkYTZiNWZkY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBET01U
b2tlbkxpc3QgewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBBdG9taWNTdHJpbmcm
KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Ym9vbD4gdG9nZ2xlKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIE9wdGlvbmFsPGJvb2w+IGZvcmNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjxib29sPiB0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxib29sPiBm
b3JjZSk7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZShjb25zdCBBdG9taWNTdHJpbmcm
IHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Rva2VuKTsKICAgICBFeGNlcHRpb25Pcjxi
b29sPiBzdXBwb3J0cyhTdHJpbmdWaWV3IHRva2VuKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA0NmJkMzU5YWMyYWEwZTAyODliMDBjZmFhMWRlZjRj
Zjk3YmFhMDNiLi5jNDg1MzY3ZTA1NDcwMWM4MDI1YmNlNmRkZjIwNTg5ZDlmNmU1MmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzk1LDcgKzM5NSw3
IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkKICNl
bmRpZgogCiAgICAgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciA9IGhhc1Jl
bChSZWxhdGlvbjo6Tm9SZWZlcnJlcikgPyBOZXZlclNlbmRSZWZlcnJlciA6IE1heWJlU2VuZFJl
ZmVycmVyOwotICAgIGF1dG8gbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBoYXNSZWwoUmVsYXRpb246
Ok5vT3BlbmVyKSA/IG1ha2VPcHRpb25hbChOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3Mp
IDogTnVsbG9wdDsKKyAgICBhdXRvIG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gaGFzUmVsKFJlbGF0
aW9uOjpOb09wZW5lcikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OlN1cHByZXNzKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0
ZWQoY29tcGxldGVkVVJMLCB0YXJnZXQoKSwgJmV2ZW50LCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tC
YWNrRm9yd2FyZExpc3Q6Ok5vLCBzaG91bGRTZW5kUmVmZXJyZXIsIGRvY3VtZW50KCkuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIG5ld0ZyYW1lT3BlbmVyUG9saWN5
LCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAKICAgICBzZW5kUGluZ3MoY29tcGxldGVkVVJMKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZDFkM2YyNzViNjI3
ZmY0MjllYmM1ZTliYTkxZjRjZDI1OWJkMTBjZS4uNjczYTU3NGJhMjE1ZGI0ZjMxMGI4NjBlOWU3
YzUzMWMwOTA1YTllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCBTdHJpbmcgSFRNTENhbnZhc0VsZW1lbnQ6OnRvRW5jb2Rp
bmdNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBtaW1lVHlwZS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCi1FeGNlcHRpb25PcjxTdHJpbmc+IEhUTUxD
YW52YXNFbGVtZW50Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5KQorRXhjZXB0aW9uT3I8U3RyaW5nPiBIVE1MQ2FudmFzRWxlbWVudDo6
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBx
dWFsaXR5KQogewogICAgIGlmICghbV9vcmlnaW5DbGVhbikKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNFQ1VSSVRZX0VSUiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCmluZGV4IDJmNTc0MDVlNDQwODcyNzQwZDFhODAzZTM0MDJkM2YxYjc0MzU4YzQuLjU2YzRm
YWE5Mjc3MjAxYmU5OTBhZWYwZTk5ZTkyZDEyODhhN2YyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTkyLDggKzkyLDggQEAgY2xhc3MgSFRNTENhbnZhc0Vs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogI2VuZGlmCiAKICAgICBzdGF0aWMg
U3RyaW5nIHRvRW5jb2RpbmdNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IHRvRGF0YVVSTChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwotICAgIEV4Y2VwdGlvbk9yPFN0
cmluZz4gdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIHsgcmV0dXJuIHRvRGF0YVVS
TChtaW1lVHlwZSwgTnVsbG9wdCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxT
dHJpbmc+IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSk7CisgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiB0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgeyByZXR1cm4gdG9EYXRhVVJMKG1pbWVUeXBlLCBzdGQ6Om51bGxv
cHQpOyB9CiAKICAgICAvLyBVc2VkIGZvciByZW5kZXJpbmcKICAgICB2b2lkIGRpZERyYXcoY29u
c3QgRmxvYXRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGUwMDk4
MDEyOTg5ZjRjYmU0NGRlOTY2MjIwMTA1N2YxMjUyYzY0YmEuLjU4OWNhODk1ZDFiZWM3M2QyNDA1
NzhhZjVhMTExNjhiMDVjZWRiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBA
IC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIGlubGluZSBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpQXR0
cmlidXRlRm9yRGlyQXV0byhIVE1MRWxlbWVudCYgZWxlbWVudCkKIAogdW5zaWduZWQgSFRNTEVs
ZW1lbnQ6OnBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IGJvcmRlcldpZHRoID0gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHZhbHVlKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gYm9yZGVyV2lkdGggPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIodmFsdWUp
KQogICAgICAgICByZXR1cm4gYm9yZGVyV2lkdGgudmFsdWUoKTsKIAogICAgIHJldHVybiBoYXNU
YWdOYW1lKHRhYmxlVGFnKSA/IDEgOiAwOwpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYKICAgICBpZiAobmFtZSA9PSB0YWJpbmRleEF0dHIpIHsKICAgICAgICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZO
ZWVkZWQoKTsKLSAgICAgICAgZWxzZSBpZiAoT3B0aW9uYWw8aW50PiB0YWJJbmRleCA9IHBhcnNl
SFRNTEludGVnZXIodmFsdWUpKQorICAgICAgICBlbHNlIGlmIChzdGQ6Om9wdGlvbmFsPGludD4g
dGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgICAgIHNldFRhYklu
ZGV4RXhwbGljaXRseSh0YWJJbmRleC52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDdiNmY2Zjk4ZDIw
ZWI3NmRjMTZlNGNlMTI4NGJlZWY0M2QxNDI0MzYuLjAxNDQ0YmE2MDlhZTgyZTRhZjkxZmVmNjhm
ODQ4YzhhYjY4MTE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtODksNyArODksNyBAQCBIVE1MSW1hZ2VFbGVtZW50Ojp+SFRNTEltYWdlRWxlbWVudCgp
CiAgICAgc2V0UGljdHVyZUVsZW1lbnQobnVsbHB0cik7CiB9CiAKLVJlZjxIVE1MSW1hZ2VFbGVt
ZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiBk
b2N1bWVudCwgT3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoLCBPcHRpb25hbDx1bnNpZ25lZD4gaGVp
Z2h0KQorUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpT
Q29uc3RydWN0b3IoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB3
aWR0aCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KQogewogICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdFJlZigqbmV3IEhUTUxJbWFnZUVsZW1lbnQoaW1nVGFnLCBkb2N1bWVudCkpOwogICAg
IGlmICh3aWR0aCkKQEAgLTM4MCw3ICszODAsNyBAQCB1bnNpZ25lZCBIVE1MSW1hZ2VFbGVtZW50
Ojp3aWR0aChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKIHsKICAgICBpZiAoIXJlbmRl
cmVyKCkpIHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhw
bGljaXQgcGl4ZWwgdmFsdWUKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoID0gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
d2lkdGhBdHRyKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoID0gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
d2lkdGhBdHRyKSk7CiAgICAgICAgIGlmICh3aWR0aCkKICAgICAgICAgICAgIHJldHVybiB3aWR0
aC52YWx1ZSgpOwogCkBAIC00MDUsNyArNDA1LDcgQEAgdW5zaWduZWQgSFRNTEltYWdlRWxlbWVu
dDo6aGVpZ2h0KGJvb2wgaWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKQogewogICAgIGlmICghcmVu
ZGVyZXIoKSkgewogICAgICAgICAvLyBjaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBl
eHBsaWNpdCBwaXhlbCB2YWx1ZQotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0ID0g
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oaGVpZ2h0QXR0cikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQg
PSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihoZWlnaHRBdHRyKSk7CiAgICAgICAgIGlmIChoZWlnaHQpCiAgICAgICAgICAgICByZXR1
cm4gaGVpZ2h0LnZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgK
aW5kZXggMTQ5MmE0M2U2NjcyNmNkY2NlZTNiZGM4ZjRmOWJiZmNmNDhkMTlhNy4uNTJmOThiYWY3
YjU2ZmM3MzgwNGY5NGQ3NjBmM2JjMGRlODY4YWExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudCA6
IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIEZvcm1OYW1lZEl0ZW0gewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAgICAgc3Rh
dGljIFJlZjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7Ci0gICAgc3RhdGljIFJlZjxIVE1MSW1hZ2VFbGVt
ZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiwgT3B0aW9uYWw8dW5zaWduZWQ+
IHdpZHRoLCBPcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KTsKKyAgICBzdGF0aWMgUmVmPEhUTUxJ
bWFnZUVsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQmLCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB3aWR0aCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0KTsKIAog
ICAgIHZpcnR1YWwgfkhUTUxJbWFnZUVsZW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggMTVlYTU2NzAyMTZjM2MwMThiOTg4ZWVlMWU1NzFjYTcx
ZTE1MmY4OC4uY2QzYTYxMjljMWMwNzlmY2U5MGIxNGNjZmY2ODA1NThjYmYwMDU4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0zODEsNyArMzgxLDcgQEAg
U3RlcFJhbmdlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcgYW55U3RlcEhhbmRsaW5nKSBjb24KIH0KIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQotT3B0aW9uYWw8RGVjaW1hbD4gSFRNTElucHV0RWxlbWVudDo6ZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQorc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBIVE1M
SW5wdXRFbGVtZW50OjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFs
dWUpCiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5maW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUo
dmFsdWUpOwogfQpAQCAtMTc3NSw3ICsxNzc1LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpp
c0VtcHR5VmFsdWUoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptYXhMZW5ndGhBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgdW5zaWdu
ZWQgb2xkRWZmZWN0aXZlTWF4TGVuZ3RoID0gZWZmZWN0aXZlTWF4TGVuZ3RoKCk7Ci0gICAgaW50
ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52
YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNYXhMZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRp
dmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlmIChvbGRFZmZlY3RpdmVN
YXhMZW5ndGggIT0gZWZmZWN0aXZlTWF4TGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVlSWZO
ZWVkZWQoKTsKIApAQCAtMTc4Nyw3ICsxNzg3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpt
YXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpbnQgb2xkTWluTGVuZ3RoID0gbWluTGVuZ3Ro
KCk7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIGlmIChv
bGRNaW5MZW5ndGggIT0gbWluTGVuZ3RoKCkpCiAgICAgICAgIHVwZGF0ZVZhbHVlSWZOZWVkZWQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBkMDQ1YjBhZmRm
MzhkMzU5MTI3NWRjNDA0NmQyZWZjZGYyZjVhMzhlLi44YWZmZDk4MTE3NTRkOWU0OTIzNjI1NmU2
NTVkNmRhNTU4M2Y1NmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApA
QCAtODUsNyArODUsNyBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50IDogcHVibGljIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50IHsKICAgICBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0
ZXBIYW5kbGluZykgY29uc3Q7CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICBP
cHRpb25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYp
OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNv
bnN0IERlY2ltYWwmKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
dm9pZD4gc3RlcFVwKGludCA9IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCmluZGV4IDNlNDZlNGUzM2NhZGQ4OTk3ZTFkYTY3MWM5YzIzNjI5OGRkMTljYzguLjA0ODll
ODk2NTkyNTU4NTUyZDJlNDgwMmI4MzZkYmJjNzA4NmNkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6cHJvY2VzcygpCiAKICAgICAgICAgYm9vbCBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IHRydWU7
CiAgICAgICAgIGlmICghbV9tZWRpYS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIE9wdGlvbmFs
PFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxS
ZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLmhh
c0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgICAgICAgICBkb2N1bWVudFN0eWxlID0gU3R5
bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIGF1dG8gbWVk
aWEgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobV9tZWRpYSk7CkBAIC0yNjQsNyArMjY0LDcgQEAg
dm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogICAgICAgICBhZGRQZW5kaW5nU2hlZXQo
aXNBY3RpdmUgPyBBY3RpdmVTaGVldCA6IEluYWN0aXZlU2hlZXQpOwogCiAgICAgICAgIC8vIExv
YWQgc3R5bGVzaGVldHMgdGhhdCBhcmUgbm90IG5lZWRlZCBmb3IgdGhlIHJlbmRlcmluZyBpbW1l
ZGlhdGVseSB3aXRoIGxvdyBwcmlvcml0eS4KLSAgICAgICAgT3B0aW9uYWw8UmVzb3VyY2VMb2Fk
UHJpb3JpdHk+IHByaW9yaXR5OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFBy
aW9yaXR5PiBwcmlvcml0eTsKICAgICAgICAgaWYgKCFpc0FjdGl2ZSkKICAgICAgICAgICAgIHBy
aW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlMb3c7CiAgICAgICAgIENhY2hlZFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRD
YWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgcHJpb3JpdHksIFdURk1vdmUoY2hhcnNldCkpOwpAQCAt
MzQzLDcgKzM0Myw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKQogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmluaXRpYWxpemVTdHlsZVNoZWV0KFJlZjxTdHls
ZVNoZWV0Q29udGVudHM+JiYgc3R5bGVTaGVldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCYg
Y2FjaGVkU3R5bGVTaGVldCkKIHsKICAgICAvLyBGSVhNRTogb3JpZ2luQ2xlYW4gc2hvdWxkIGJl
IHR1cm5lZCB0byBmYWxzZSBleGNlcHQgaWYgZmV0Y2ggbW9kZSBpcyBDT1JTLgotICAgIE9wdGlv
bmFsPGJvb2w+IG9yaWdpbkNsZWFuOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gb3JpZ2luQ2xl
YW47CiAgICAgaWYgKGNhY2hlZFN0eWxlU2hlZXQub3B0aW9ucygpLm1vZGUgPT0gRmV0Y2hPcHRp
b25zOjpNb2RlOjpDb3JzKQogICAgICAgICBvcmlnaW5DbGVhbiA9IGNhY2hlZFN0eWxlU2hlZXQu
aXNDT1JTU2FtZU9yaWdpbigpOwogCkBAIC01MTMsNyArNTEzLDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBIVE1MTGlua0VsZW1lbnQ6OnR5cGUoKSBjb25zdAogICAgIHJldHVybiBhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyKTsKIH0KIAotT3B0aW9uYWw8TGlua0ljb25U
eXBlPiBIVE1MTGlua0VsZW1lbnQ6Omljb25UeXBlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGlu
a0ljb25UeXBlPiBIVE1MTGlua0VsZW1lbnQ6Omljb25UeXBlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9yZWxBdHRyaWJ1dGUuaWNvblR5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAppbmRleCA4NDcxZWNlNzRlYWExMzE0NDYyYjVhZTNhNjQ2YTBmNzVkMDQ2YWY3Li4w
ZGIzNjA1MzdjY2I0MDU5MWRhZmNmZDA1M2MyNWNkMjUzMzcxOWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgSFRNTExpbmtFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkU3R5bGVTaGVldENs
aWVudCwKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8TGlua0ljb25UeXBlPiBpY29uVHlwZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
TGlua0ljb25UeXBlPiBpY29uVHlwZSgpIGNvbnN0OwogCiAgICAgQ1NTU3R5bGVTaGVldCogc2hl
ZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT0xpc3RFbGVtZW50LmgKaW5kZXggYTgzNWJkMGFkYmJiNTQ3MGM0MjUwYWVkNmJkMjMyMTQ4
MmI5YjEyZS4uYzNmZTI0Njc1YzA1ODk1MTJiZTA0ODk1MTkwY2NjZmJmZmMwMzdjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3Mg
SFRNTE9MaXN0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgYm9vbCBp
c1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgZmluYWw7
CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMm
KSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPGludD4gbV9zdGFydDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGludD4gbV9zdGFydDsKICAgICB1bnNpZ25lZCBtX2l0ZW1Db3VudDsKIAogICAgIGJvb2wgbV9p
c1JldmVyc2VkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmNwcAppbmRleCAyMTZiZjBlMGYyYjliYTBmMmZkN2ZiMmM2YWE4OTM4NjA2ZmM3NGEyLi4y
Zjg4NWRlNDg0MzE0OGNkYTQ5YzNlOGYxZmJhNWYyYWIzZDM1MTQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC0zMyw3ICszMyw3IEBAIFJl
ZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6Y3JlYXRlKEhU
TUxTZWxlY3RFbGVtZW50JiBzZWxlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTE9wdGlv
bnNDb2xsZWN0aW9uKHNlbGVjdCkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OmFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgT3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4mIGJlZm9yZSkKK0V4Y2VwdGlvbk9yPHZv
aWQ+IEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZv
cmUpCiB7CiAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQoKS5hZGQoZWxlbWVudCwgYmVmb3JlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCmluZGV4IDcw
ZDE0ZWM0YWFlZWNlNzJiYTY5NzA0ODc0OTQ3OGNhZmJkMDc1ODIuLjNmN2RkNWE3YTFkYWUwMzhi
ZDU0ZjUwZGRkYjg3YjdmOGMyNjQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uc0NvbGxlY3Rpb24uaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xs
ZQogCiAgICAgdXNpbmcgT3B0aW9uT3JPcHRHcm91cEVsZW1lbnQgPSBWYXJpYW50PFJlZlB0cjxI
VE1MT3B0aW9uRWxlbWVudD4sIFJlZlB0cjxIVE1MT3B0R3JvdXBFbGVtZW50Pj47CiAgICAgdXNp
bmcgSFRNTEVsZW1lbnRPckludCA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxFbGVtZW50PiwgaW50PjsK
LSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgT3B0aW9uT3JP
cHRHcm91cEVsZW1lbnQmLCBjb25zdCBPcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3Jl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgT3B0aW9u
T3JPcHRHcm91cEVsZW1lbnQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+
JiBiZWZvcmUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKGludCBpbmRleCk7CiAg
ICAgdm9pZCByZW1vdmUoSFRNTE9wdGlvbkVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA2NDY0MzFlZTg4ZWFmMGY5ZGE1NDdkNWZmMGFl
OGQ0MmMzODQ2Mzk5Li42YzM3ZTc2MWRkMjE0MjkyOGJmNTAyZmJlNmI3MDdmYWY5YTEyNTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMjE4LDcgKzIx
OCw3IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6YWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4
KCkgY29uc3QKICAgICByZXR1cm4gbGFzdFNlbGVjdGVkTGlzdEluZGV4KCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IEhUTUxTZWxlY3RFbGVtZW50OjphZGQoY29uc3QgT3B0aW9uT3JPcHRHcm91
cEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZv
cmUpCitFeGNlcHRpb25Pcjx2b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6YWRkKGNvbnN0IE9wdGlv
bk9yT3B0R3JvdXBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEhUTUxFbGVt
ZW50T3JJbnQ+JiBiZWZvcmUpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGJlZm9yZUVsZW1lbnQgPSBu
dWxscHRyOwogICAgIGlmIChiZWZvcmUpIHsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbmd0aCkK
IAogICAgIGlmIChkaWZmIDwgMCkgeyAvLyBBZGQgZHVtbXkgZWxlbWVudHMuCiAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRkKEhUTUxPcHRpb25FbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSkucHRyKCksIE51bGxvcHQpOworICAgICAgICAgICAgYXV0byByZXN1bHQg
PSBhZGQoSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKS5wdHIoKSwgc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfSB3aGlsZSAoKytkaWZmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA3Yjk3OTljYzgxNGM4YTk4MzYx
OWQwZDU3MGE3ZTQyNjlmMzI5Mjg1Li42M2M0ODhkNDM2ZDE0N2ExYzQ5MmFlYTIyNzEwZGE2Y2Iw
YmQ4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGUsIHByaXZhdGUgVHlwZUFoCiAKICAgICB1c2luZyBPcHRpb25Pck9w
dEdyb3VwRWxlbWVudCA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiwgUmVmUHRy
PEhUTUxPcHRHcm91cEVsZW1lbnQ+PjsKICAgICB1c2luZyBIVE1MRWxlbWVudE9ySW50ID0gVmFy
aWFudDxSZWZQdHI8SFRNTEVsZW1lbnQ+LCBpbnQ+OwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYsIGNvbnN0IE9w
dGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZvcmUpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPHZvaWQ+IGFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4mIGJlZm9yZSk7CiAKICAgICB1c2luZyBO
b2RlOjpyZW1vdmU7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKEhUTUxPcHRpb25FbGVt
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRl
eCA2NjE3NzhiOGNiNjEzMjU4YTQ1YTIzY2ZlODMyYTU4ZTA4NzExYzc0Li43OTI5NTQyZDNkN2Jj
ZjQwNTFjMDZmM2I1ZDU1NGVkMTVhMjgwOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTIwMywxMyArMjAzLDEzIEBAIHZvaWQgSFRNTFRleHRB
cmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljCiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewotICAgIGludGVybmFsU2V0
TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigt
MSkpOworICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiB2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1pbkxlbmd0aChwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRl
cm5hbFNldE1pbkxlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZh
bHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCBjM2NlMjg1NzJiNjliZjE5Y2U4M2U0Y2E4MmZkOGVk
YzM5MTkyNGE0Li5mMzk2YTNlMzE1ZTJhODNhNGNiMTRiOGIyZWE5N2M2MmFlMTllYmFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHVu
c2lnbmVkIEltYWdlSW5wdXRUeXBlOjpoZWlnaHQoKSBjb25zdAogCiAgICAgaWYgKCFlbGVtZW50
LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9y
IGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlLgotICAgICAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+
IGhlaWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihlbGVtZW50LT5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0dHIpKSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGhlaWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihlbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0dHIpKSkKICAgICAg
ICAgICAgIHJldHVybiBoZWlnaHQudmFsdWUoKTsKIAogICAgICAgICAvLyBJZiB0aGUgaW1hZ2Ug
aXMgYXZhaWxhYmxlLCB1c2UgaXRzIGhlaWdodC4KQEAgLTIwMCw3ICsyMDAsNyBAQCB1bnNpZ25l
ZCBJbWFnZUlucHV0VHlwZTo6d2lkdGgoKSBjb25zdAogCiAgICAgaWYgKCFlbGVtZW50LT5yZW5k
ZXJlcigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFuIGV4
cGxpY2l0IHBpeGVsIHZhbHVlLgotICAgICAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRo
ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiB3aWR0aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihlbGVtZW50LT5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cikpKQogICAgICAgICAgICAgcmV0
dXJuIHdpZHRoLnZhbHVlKCk7CiAKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGF2YWlsYWJs
ZSwgdXNlIGl0cyB3aWR0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA3NTc4Y2Uw
NWQ3OWZkMzAwMWI2NGUyODIwMGI3N2U4MGE3MTAwNWQ2Li4zZDQ3ZTQ2MDI1MWYzMjlkMjI2YmUz
NGFjZDgwYmZhMDRkMGQ5NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC05NTUs
MTAgKzk1NSwxMCBAQCB2b2lkIElucHV0VHlwZTo6bGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQo
KQogewogfQogCi1PcHRpb25hbDxEZWNpbWFsPiBJbnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01h
cmtWYWx1ZShjb25zdCBEZWNpbWFsJikKK3N0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gSW5wdXRUeXBl
OjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCBmYzMwNTE5NzZh
YzFiZDQ2NjZhMGIzYmNhZWExNmQ4NGViZGQ0ZTIxLi5jNGJlNzNkNDAwNGQ2OGQ5MTMwYjlhYjk0
NmExNzAwZTcwMzNkZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTI5NSw3ICsyOTUs
NyBAQCBjbGFzcyBJbnB1dFR5cGUgewogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAg
ICAgdmlydHVhbCB2b2lkIGxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCk7Ci0gICAgdmlydHVh
bCBPcHRpb25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1h
bCYpOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tN
YXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29sbGVjdG9yLmNwcAppbmRleCBkMDBl
MDZiNWQ3M2ExYTg3NTM0OWY1OWI5ZmQ2OTFjYmIxYjQzNDNhLi40ZDJiNmUxYTE1YjRlNjI4MWQ0
ZDk4ZjIyMWEwY2VjMWQyM2E2MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xp
bmtJY29uQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtJY29uQ29s
bGVjdG9yLmNwcApAQCAtOTUsNyArOTUsNyBAQCBhdXRvIExpbmtJY29uQ29sbGVjdG9yOjppY29u
c09mVHlwZXMoT3B0aW9uU2V0PExpbmtJY29uVHlwZT4gaWNvblR5cGVzKSAtPiBWZWN0bwogICAg
ICAgICAvLyBUaGlzIGljb24gc2l6ZSBwYXJzaW5nIGlzIGEgbGl0dGxlIHdvbmt5IC0gaXQgb25s
eSBwYXJzZXMgdGhlIGZpcnN0CiAgICAgICAgIC8vIHBhcnQgb2YgdGhlIHNpemUsICI2MHg3MCIg
YmVjb21lcyAiNjAiLiBUaGlzIGlzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMKICAgICAgICAg
Ly8gYW5kIGlzIHByb2JhYmx5IGdvb2QgZW5vdWdoIGZvciBub3cuCi0gICAgICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBpY29uU2l6ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaWNv
blNpemU7CiAKICAgICAgICAgaWYgKGxpbmtFbGVtZW50LnNpemVzKCkubGVuZ3RoKCkpIHsKICAg
ICAgICAgICAgIGJvb2wgb2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtS
ZWxBdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oCmlu
ZGV4IDZiMDA5YTJhNDUyZmNjYzIxNjRkMzZmMWU3NmY2N2I2NDhkNjk4YjQuLjhlMjY2OTI3ZWRk
YjEzZGI5ZTBiOGIxY2NhOTY4NTI1NjVmYmJkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTGlua1JlbEF0dHJpYnV0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua1Jl
bEF0dHJpYnV0ZS5oCkBAIC00MSw3ICs0MSw3IEBAIGVudW0gY2xhc3MgTGlua0ljb25UeXBlOwog
CiBzdHJ1Y3QgTGlua1JlbEF0dHJpYnV0ZSB7CiAgICAgYm9vbCBpc1N0eWxlU2hlZXQgeyBmYWxz
ZSB9OwotICAgIE9wdGlvbmFsPExpbmtJY29uVHlwZT4gaWNvblR5cGU7CisgICAgc3RkOjpvcHRp
b25hbDxMaW5rSWNvblR5cGU+IGljb25UeXBlOwogICAgIGJvb2wgaXNBbHRlcm5hdGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgaXNETlNQcmVmZXRjaCB7IGZhbHNlIH07CiAgICAgYm9vbCBpc0xpbmtQ
cmVsb2FkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5k
ZXggYTVhOGVhZWRjOWQyNTJiMWJjMmY3MzZiZjkxNjNiNGE5MjZmMGRiYS4uZGJhYmZjZDQzN2Rh
YTRjNjU5MWViNjcwNjI5MTE5YTJiM2IwNjk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKQEAgLTM4MSwxMSArMzgxLDExIEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnVw
ZGF0ZVRpY2tNYXJrVmFsdWVzKCkKICAgICBzdGQ6OnNvcnQobV90aWNrTWFya1ZhbHVlcy5iZWdp
bigpLCBtX3RpY2tNYXJrVmFsdWVzLmVuZCgpKTsKIH0KIAotT3B0aW9uYWw8RGVjaW1hbD4gUmFu
Z2VJbnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1
ZSkKK3N0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gUmFuZ2VJbnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlj
a01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKIHsKICAgICB1cGRhdGVUaWNrTWFya1Zh
bHVlcygpOwogICAgIGlmICghbV90aWNrTWFya1ZhbHVlcy5zaXplKCkpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGxl
ZnQgPSAwOwogICAgIHNpemVfdCByaWdodCA9IG1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpOwpAQCAt
NDA4LDggKzQwOCw4IEBAIE9wdGlvbmFsPERlY2ltYWw+IFJhbmdlSW5wdXRUeXBlOjpmaW5kQ2xv
c2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCiAgICAgICAgICAgICByaWdo
dCA9IG1pZGRsZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0TGVmdCA9
IG1pZGRsZSA/IG1ha2VPcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZSAtIDFdKSA6IE51
bGxvcHQ7Ci0gICAgT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdFJpZ2h0ID0gbWlkZGxlICE9IG1f
dGlja01hcmtWYWx1ZXMuc2l6ZSgpID8gbWFrZU9wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlk
ZGxlXSkgOiBOdWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdExlZnQg
PSBtaWRkbGUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV90aWNrTWFya1ZhbHVlc1ttaWRkbGUgLSAx
XSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0Umln
aHQgPSBtaWRkbGUgIT0gbV90aWNrTWFya1ZhbHVlcy5zaXplKCkgPyBzdGQ6Om1ha2Vfb3B0aW9u
YWwobV90aWNrTWFya1ZhbHVlc1ttaWRkbGVdKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
Y2xvc2VzdExlZnQpCiAgICAgICAgIHJldHVybiBjbG9zZXN0UmlnaHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggYTU3ODRmNWQyMjc2NTA1Nzc4N2Q2M2Q4MjYwN2VhZjI3
ZDc3ZWYxYi4uYzZmNjJkODQ2NWVlODgyNzJmOGM2MWZmMjk2ZDZiOThkODA0ODMxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBSYW5n
ZUlucHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBJbnB1dFR5cGUgewogI2lmIEVOQUJMRShEQVRBTElT
VF9FTEVNRU5UKQogICAgIHZvaWQgbGlzdEF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKSBmaW5hbDsK
ICAgICB2b2lkIHVwZGF0ZVRpY2tNYXJrVmFsdWVzKCk7Ci0gICAgT3B0aW9uYWw8RGVjaW1hbD4g
ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKSBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFs
JikgZmluYWw7CiAKICAgICBib29sIG1fdGlja01hcmtWYWx1ZXNEaXJ0eSB7IHRydWUgfTsKICAg
ICBWZWN0b3I8RGVjaW1hbD4gbV90aWNrTWFya1ZhbHVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDBi
MmIzZjQ2Y2ZhMDgwZjY5ZjhiNGIxODBhY2MyMDIzYTljZTRlZGUuLjcxMTM1MjdiMjI5YWNmOTk0
ZDk1MDQ5MTJmZjZiNjgxZDVmMzkxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzg2LDcgKzM4Niw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXN0b3JlKCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fcGF0aC50cmFuc2Zvcm0oc3RhdGUoKS50cmFuc2Zvcm0pOwogICAgIG1fc3Rh
dGVTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4g
aW52ZXJzZSA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNl
KCkpCiAgICAgICAgIG1fcGF0aC50cmFuc2Zvcm0oaW52ZXJzZS52YWx1ZSgpKTsKICAgICBHcmFw
aGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTgzMiw3
ICs4MzIsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXRUcmFuc2Zvcm0o
KQogICAgIG1vZGlmaWFibGVTdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0gPSB0cnVlOwog
fQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKQordm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IGFscGhhKQogewogICAgIGlmIChhbHBoYSkgewogICAgICAgICBzZXRTdHJv
a2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNv
bG9yLCBhbHBoYS52YWx1ZSgpKSk7CkBAIC04NjgsNyArODY4LDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHks
IGZsb2F0IGsKICAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZShjLCBtLCB5LCBrLCBhKSk7
CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKQordm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBhbHBoYSkKIHsKICAgICBpZiAoYWxwaGEpIHsKICAgICAgICAgc2V0RmlsbFN0
eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEoY29sb3Is
IGFscGhhLnZhbHVlKCkpKTsKQEAgLTExMTQsNyArMTExNCw3IEBAIGJvb2wgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxv
YXQgeCwKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUo
KS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50
KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0
YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNm
b3JtZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmIHBh
dGgsIGZsb2F0IHgKICAgICBpZiAoIXN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZFBvaW50ID0g
c3RhdGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2lu
dCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRy
YW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50Lnko
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgd2lkdGgsIGZsb2F0IGgKICAgICB9CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29u
c3QgU3RyaW5nJiBjb2xvclN0cmluZywgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKQordm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
LCBmbG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBhbHBoYSkKIHsKICAgICBDb2xvciBjb2xvciA9IHBhcnNlQ29sb3JPckN1cnJlbnRDb2xv
cihjb2xvclN0cmluZywgJmNhbnZhcygpKTsKICAgICBpZiAoIWNvbG9yU3RyaW5nLmlzTnVsbCgp
ICYmICFjb2xvci5pc1ZhbGlkKCkpCkBAIC0yMjU3LDEyICsyMjU3LDEyIEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25T
dHJpbmcpCiAgICAgbW9kaWZpYWJsZVN0YXRlKCkuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogfQog
Ci12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9h
dCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBkcmF3
VGV4dEludGVybmFsKHRleHQsIHgsIHksIHRydWUsIG1heFdpZHRoKTsKIH0KIAotdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9h
dCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCit2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZs
b2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGRyYXdUZXh0SW50
ZXJuYWwodGV4dCwgeCwgeSwgZmFsc2UsIG1heFdpZHRoKTsKIH0KQEAgLTIzMTAsNyArMjMxMCw3
IEBAIFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIG1ldHJpY3M7CiB9CiAKLXZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4
dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgp
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxm
bG9hdD4gbWF4V2lkdGgpCiB7CiAgICAgY29uc3QgYXV0byYgZm9udFByb3h5ID0gdGhpcy0+Zm9u
dFByb3h5KCk7CiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udFByb3h5
LmZvbnRNZXRyaWNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDQ1YTEzYjFjN2RmNzJjNzk5NWViMzFmYTk0
N2RlYjY3YTVjNTM5MDAuLjJhODdmMjY3MTUxNzkzNTFmNjU3YjYzYjExZjBjOWYxYjE2MDViZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCkBAIC0xMTcsMTIgKzExNywxMiBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENh
bgogICAgIHZvaWQgc2V0VHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEs
IGZsb2F0IG0yMiwgZmxvYXQgZHgsIGZsb2F0IGR5KTsKICAgICB2b2lkIHJlc2V0VHJhbnNmb3Jt
KCk7CiAKLSAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlv
bmFsPGZsb2F0PiBhbHBoYSA9IE51bGxvcHQpOworICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29u
c3QgU3RyaW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBzdGQ6Om51bGxv
cHQpOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBo
YSA9IDEuMCk7CiAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9h
dCBiLCBmbG9hdCBhKTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGMsIGZsb2F0IG0s
IGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwogCi0gICAgdm9pZCBzZXRGaWxsQ29sb3IoY29u
c3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gTnVsbG9wdCk7CisgICAg
dm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9h
dD4gYWxwaGEgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgc2V0RmlsbENvbG9yKGZsb2F0IGdy
YXlMZXZlbCwgZmxvYXQgYWxwaGEgPSAxLjBmKTsKICAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9h
dCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKICAgICB2b2lkIHNldEZpbGxDb2xvcihm
bG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKQEAgLTE0OSw3ICsx
NDksNyBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbgogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAgICAgdm9pZCBzdHJva2VS
ZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCi0gICAg
dm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29u
c3QgU3RyaW5nJiBjb2xvciA9IFN0cmluZygpLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBOdWxs
b3B0KTsKKyAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yID0gU3RyaW5nKCksIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhh
ID0gMS4wKTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKICAgICB2b2lk
IHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBj
LCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKQEAgLTIxNCw4ICsyMTQsOCBA
QCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCwgcHVibGljIENhbgogICAgIFN0cmluZyBkaXJlY3Rpb24oKSBjb25zdDsK
ICAgICB2b2lkIHNldERpcmVjdGlvbihjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgZmlsbFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4g
bWF4V2lkdGggPSBOdWxsb3B0KTsKLSAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBOdWxsb3B0
KTsKKyAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQg
eSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZv
aWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1l
dHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKICAgICBMaW5lQ2FwIGdl
dExpbmVDYXAoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLmxpbmVDYXA7IH0KQEAgLTMzMSw3ICsz
MzEsNyBAQCBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbgogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0
ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCk7CiAKLSAgICB2b2lkIGRyYXdUZXh0
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGws
IE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IE51bGxvcHQpOworICAgIHZvaWQgZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwg
c3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgLy8g
VGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIEZvbnRDYXNjYWRlIGFuZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OkZvbnRQcm94eSBtdXN0IGhvbGQgY2VydGFpbiBpbnZhcmlhbnRzLgogICAgIC8v
IFRoZXJlZm9yZSwgYWxsIGZvbnQgb3BlcmF0aW9ucyBtdXN0IHBhc3MgdGhyb3VnaCB0aGUgU3Rh
dGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDRlY2UzNzcwYmNjODkwMGU5NGU1MDY0MjgxZmNkNzQyYjI5YTli
NWMuLjIzMmYwYmJiNTRkMTYyM2FhYWQwZThkNTViNzA2YTQ5OTc3ODg0OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CkBAIC04OCwxMiArODgsMTIgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFs
aXplU2hhZGVyRXh0ZW5zaW9ucygpCiAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKIH0KIAotaW5saW5lIHN0YXRpYyBPcHRp
b25hbDx1bnNpZ25lZD4gYXJyYXlCdWZmZXJWaWV3RWxlbWVudFNpemUoY29uc3QgQXJyYXlCdWZm
ZXJWaWV3JiBkYXRhKQoraW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhcnJh
eUJ1ZmZlclZpZXdFbGVtZW50U2l6ZShjb25zdCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEpCiB7CiAg
ICAgc3dpdGNoIChkYXRhLmdldFR5cGUoKSkgewogICAgIGNhc2UgSlNDOjpOb3RUeXBlZEFycmF5
OgogICAgIGNhc2UgSlNDOjpUeXBlRGF0YVZpZXc6Ci0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgSlNDOjpUeXBlSW50ODoKICAg
ICBjYXNlIEpTQzo6VHlwZVVpbnQ4OgogICAgIGNhc2UgSlNDOjpUeXBlVWludDhDbGFtcGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCAzZTlkY2NhYzUxY2YyM2RjYzg0ZTg0YTNhYmYxN2FjZTcwYzIx
MzAzLi4yYzBkODA3NTYwNTVlNTk2OTdkODkxNmFkMzQ5NGE2MjRhNTlhYmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtMTEwOSw3ICsxMTA5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIHNpemUsIEdDM0QKICAg
ICB9CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNE
ZW51bSB0YXJnZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYgZGF0YSwgR0MzRGVudW0g
dXNhZ2UpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYgZGF0YSwgR0MzRGVu
dW0gdXNhZ2UpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVMKICAg
ICB9LCBkYXRhLnZhbHVlKCkpOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBPcHRpb25h
bDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBzdGQ6
Om9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYgZGF0YSkKIHsKICAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQwogICAgICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKEdy
YXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5ULCBtX3VucGFja0FsaWdubWVudCk7CiB9
CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBPcHRpb25hbDxU
ZXhJbWFnZVNvdXJjZT4mJiBzb3VyY2UpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAg
ICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJ0ZXhTdWJJbWFnZTJEIiwgInNvdXJjZSBpcyBudWxsIik7
CkBAIC0zNTc1LDcgKzM1NzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRAogICAgIHJldHVy
biBXVEY6OnZpc2l0KHZpc2l0b3IsIHNvdXJjZS52YWx1ZSgpKTsKIH0KIAotYm9vbCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIEdDM0RlbnVtIHR5cGUsIE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+
IGFycmF5VHlwZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVBcnJh
eUJ1ZmZlclR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0eXBlLCBzdGQ6
Om9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+IGFycmF5VHlwZSkKIHsKICNkZWZpbmUgVFlQ
RV9WQUxJREFUSU9OX0NBU0UoYXJyYXlUeXBlTWFjcm8pIGlmIChhcnJheVR5cGUgJiYgYXJyYXlU
eXBlLnZhbHVlKCkgIT0gSlNDOjphcnJheVR5cGVNYWNybykgeyBcCiAgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0
aW9uTmFtZSwgIkFycmF5QnVmZmVyVmlldyBub3QgIiAjYXJyYXlUeXBlTWFjcm8pOyBcCkBAIC0z
NjM2LDcgKzM2MzYsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
VGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoZnVuY3Rp
b25OYW1lLCBpbnRlcm5hbEZvcm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAo
IXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGZ1bmN0aW9uTmFtZSwgdHlwZSwgcGl4ZWxzID8gT3B0
aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4ocGl4ZWxzLT5nZXRUeXBlKCkpIDogTnVsbG9wdCkp
CisgICAgaWYgKCF2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShmdW5jdGlvbk5hbWUsIHR5cGUsIHBp
eGVscyA/IHN0ZDo6b3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4ocGl4ZWxzLT5nZXRUeXBl
KCkpIDogc3RkOjpudWxsb3B0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHVu
c2lnbmVkIHRvdGFsQnl0ZXNSZXF1aXJlZDsKQEAgLTM5ODIsNyArMzk4Miw3IEBAIHN0YXRpYyBi
b29sIGlzUkdCRm9ybWF0KEdDM0RlbnVtIGludGVybmFsRm9ybWF0KQogICAgICAgICB8fCBpbnRl
cm5hbEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTg7CiB9CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBPcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4gc291cmNlKQorRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNE
ZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+
IHNvdXJjZSkKIHsKICAgICBpZiAoIXNvdXJjZSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgInRleEltYWdlMkQiLCAic291cmNl
IGlzIG51bGwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAyYjMxNmJkYjFkZmE4MjExZjk1MTE1ZGY0ZTMx
NGE5ODYzZTgwYTljLi41NDc4YTVkODE2NzZjMDY4NmYxZmVjNjcxMWIyYmE1N2RkNDhhNDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCkBAIC0xMzYsOCArMTM2LDggQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMgQWN0aXZlRE8K
IAogICAgIHVzaW5nIEJ1ZmZlckRhdGFTb3VyY2UgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPEFycmF5
QnVmZmVyPiwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4+OwogICAgIHZvaWQgYnVmZmVyRGF0YShH
QzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNEZW51bSB1c2FnZSk7Ci0gICAgdm9p
ZCBidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVNvdXJjZT4m
JiwgR0MzRGVudW0gdXNhZ2UpOwotICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJn
ZXQsIGxvbmcgbG9uZyBvZmZzZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYpOworICAg
IHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIHN0ZDo6b3B0aW9uYWw8QnVmZmVyRGF0
YVNvdXJjZT4mJiwgR0MzRGVudW0gdXNhZ2UpOworICAgIHZvaWQgYnVmZmVyU3ViRGF0YShHQzNE
ZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8QnVmZmVyRGF0YVNv
dXJjZT4mJik7CiAKICAgICBHQzNEZW51bSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVt
IHRhcmdldCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKSA9IDA7
CkBAIC0yNDEsMTMgKzI0MSwxMyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDog
cHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBBY3RpdmVETwogICAgIHZvaWQg
dGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVy
bmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9y
ZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+JiYpOwogCiAgICAgdXNpbmcgVGV4SW1hZ2VTb3VyY2UgPSBXVEY6OlZhcmlhbnQ8UmVmUHRy
PEltYWdlRGF0YT4sIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiwgUmVmUHRyPEhUTUxDYW52YXNF
bGVtZW50PiwgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+PjsKLSAgICBFeGNlcHRpb25Pcjx2b2lk
PiB0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4
SW1hZ2VTb3VyY2U+KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVt
IGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4pOwog
CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUs
IEdDM0RmbG9hdCBwYXJhbSk7CiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pOwogCiAgICAgdm9pZCB0ZXhTdWJJbWFn
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNE
aW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0g
Zm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmKTsKLSAgICBF
eGNlcHRpb25Pcjx2b2lkPiB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+JiYpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmKTsKIAogICAgIHZvaWQgdW5p
Zm9ybTFmKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0MzRGZsb2F0IHgpOwogICAgIHZv
aWQgdW5pZm9ybTFmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJBcnJheSYg
dik7CkBAIC04MDAsNyArODAwLDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6
IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMgQWN0aXZlRE8KICAgICBib29s
IHN1cHBvcnRzRHJhd0J1ZmZlcnMoKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHZhbGlkYXRlQXJy
YXlCdWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdHlwZSwgT3B0
aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4pOworICAgIGJvb2wgdmFsaWRhdGVBcnJheUJ1ZmZl
clR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0eXBlLCBzdGQ6Om9wdGlv
bmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcAppbmRleCBmYzM5MDQwYThlM2U4NGVkYTM3OWE0MmFhMjg0M2Y3YTZhZmVmMGRhLi4yZmRk
YTZlYTU5OGMwODJlNmZhYmI5M2IyMzk2MTllYmUzN2ZlNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC03MDEsMTcg
KzcwMSwxNyBAQCBSZWY8SFRNTFN0YWNrSXRlbT4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0
ZUVsZW1lbnRGcm9tU2F2ZWRUb2tlbihIVE1MU3RhY2tJdAogICAgIHJldHVybiBIVE1MU3RhY2tJ
dGVtOjpjcmVhdGUoY3JlYXRlSFRNTEVsZW1lbnQoZmFrZVRva2VuKSwgV1RGTW92ZShmYWtlVG9r
ZW4pLCBpdGVtLm5hbWVzcGFjZVVSSSgpKTsKIH0KIAotT3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5kZXhP
ZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQoKSBjb25zdAogewogICAgIGlmIChtX2FjdGl2
ZUZvcm1hdHRpbmdFbGVtZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9hY3Rp
dmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpOwogICAgIGRvIHsKICAgICAgICAgLS1pbmRleDsK
ICAgICAgICAgY29uc3QgYXV0byYgZW50cnkgPSBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5h
dChpbmRleCk7CiAgICAgICAgIGlmIChlbnRyeS5pc01hcmtlcigpIHx8IG1fb3BlbkVsZW1lbnRz
LmNvbnRhaW5zKGVudHJ5LmVsZW1lbnQoKSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0
VW5vcGVuRWxlbWVudEluZGV4ID0gaW5kZXggKyAxOwotICAgICAgICAgICAgcmV0dXJuIGZpcnN0
VW5vcGVuRWxlbWVudEluZGV4IDwgbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpID8g
Zmlyc3RVbm9wZW5FbGVtZW50SW5kZXggOiBPcHRpb25hbDx1bnNpZ25lZD4oTnVsbG9wdCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggPCBtX2FjdGl2ZUZvcm1h
dHRpbmdFbGVtZW50cy5zaXplKCkgPyBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA6IHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChp
bmRleCk7CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gSFRNTENvbnN0
cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgYwogCiB2
b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpyZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdF
bGVtZW50cygpCiB7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0VW5vcGVuRWxlbWVudElu
ZGV4ID0gaW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQoKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA9IGluZGV4T2ZGaXJzdFVu
b3BlbkZvcm1hdHRpbmdFbGVtZW50KCk7CiAgICAgaWYgKCFmaXJzdFVub3BlbkVsZW1lbnRJbmRl
eCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuaAppbmRleCAzM2UxYmI4NTY2MmRhZTEzNDViNTZmODgwZTQ1
NDkxMGJiN2MwZTlkLi43NTQ5ZWQ1ODRjNmVmZTgxYjg4Zjc3OTAxYzZjYmY5NDE1ZjBlNDliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAgICAg
Ym9vbCBzaG91bGRGb3N0ZXJQYXJlbnQoKSBjb25zdDsKICAgICB2b2lkIGZvc3RlclBhcmVudChS
ZWY8Tm9kZT4mJik7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXhPZkZpcnN0VW5vcGVu
Rm9ybWF0dGluZ0VsZW1lbnQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBp
bmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGNvbnN0OwogICAgIHZvaWQgcmVj
b25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsKIAogICAgIHZvaWQgZ2VuZXJh
dGVJbXBsaWVkRW5kVGFncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCAzYjhjYzRkMjI1MGNiZDZiOGE3NzU1YzdmYWU4YmNmNmRk
NTEyMzViLi4zOTkwY2JkYTYwNjNiOWRhNDNiYmYzYThjYjVkM2I0Y2M3ODQ3NzZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMTU0
LDEzICsxNTQsMTMgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0
YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0
ZXJUeXBlKiBwb3NpdGlvbiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKIHsKICAgICB3aGlsZSAocG9z
aXRpb24gPCBlbmQgJiYgaXNIVE1MU3BhY2UoKnBvc2l0aW9uKSkKICAgICAgICAgKytwb3NpdGlv
bjsKIAogICAgIGlmIChwb3NpdGlvbiA9PSBlbmQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBpc05lZ2F0aXZlID0gZmFs
c2U7CiAgICAgaWYgKCpwb3NpdGlvbiA9PSAnLScpIHsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVy
VHlwZSogcG9zaXRpb24sIGNvbgogICAgICAgICArK3Bvc2l0aW9uOwogCiAgICAgaWYgKHBvc2l0
aW9uID09IGVuZCB8fCAhaXNBU0NJSURpZ2l0KCpwb3NpdGlvbikpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3RleHByIGlu
dCBpbnRNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwogICAgIGNvbnN0ZXhw
ciBpbnQgYmFzZSA9IDEwOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+
IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwg
Y29uCiAgICAgICAgIGludCBkaWdpdFZhbHVlID0gKnBvc2l0aW9uIC0gJzAnOwogCiAgICAgICAg
IGlmIChyZXN1bHQgPiBtYXhNdWx0aXBsaWVyIHx8IChyZXN1bHQgPT0gbWF4TXVsdGlwbGllciAm
JiBkaWdpdFZhbHVlID4gKGludE1heCAlIGJhc2UpICsgaXNOZWdhdGl2ZSkpCi0gICAgICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgcmVzdWx0ID0gYmFzZSAqIHJlc3VsdCArIGRpZ2l0VmFsdWU7CiAgICAgICAgICsrcG9z
aXRpb247CkBAIC0xOTEsMTEgKzE5MSwxMSBAQCBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZUhU
TUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbgogfQog
CiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVy
ZS5odG1sI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCi1PcHRpb25hbDxpbnQ+IHBhcnNlSFRN
TEludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJ
bnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5wdXQu
bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKExJS0VMWShpbnB1dC5pczhCaXQo
KSkpIHsKICAgICAgICAgYXV0byogc3RhcnQgPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOwpAQCAtMjA3
LDM2ICsyMDcsMzYgQEAgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1ZpZXcg
aW5wdXQpCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2lu
ZnJhc3RydWN0dXJlLmh0bWwjcnVsZXMtZm9yLXBhcnNpbmctbm9uLW5lZ2F0aXZlLWludGVnZXJz
Ci1PcHRpb25hbDx1bnNpZ25lZD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1Zp
ZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwYXJzZUhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKIHsKLSAgICBPcHRpb25hbDxpbnQ+IHNpZ25lZFZhbHVl
ID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNpZ25l
ZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdlcihpbnB1dCk7CiAgICAgaWYgKCFzaWduZWRWYWx1ZSB8
fCBzaWduZWRWYWx1ZS52YWx1ZSgpIDwgMCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNpZ25lZFZhbHVlLnZhbHVlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KLXN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxO
b25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwg
Y29uc3QgQ2hhcmFjdGVyVHlwZSogZW5kKQogewogICAgIC8vIEEgc3RyaW5nIGlzIGEgdmFsaWQg
bm9uLW5lZ2F0aXZlIGludGVnZXIgaWYgaXQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgQVNDSUkg
ZGlnaXRzLgogICAgIGZvciAoYXV0byogYyA9IHBvc2l0aW9uOyBjIDwgZW5kOyArK2MpIHsKICAg
ICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKmMpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIE9wdGlvbmFs
PGludD4gc2lnbmVkVmFsdWUgPSBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwocG9zaXRpb24sIGVu
ZCk7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHNpZ25lZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdl
ckludGVybmFsKHBvc2l0aW9uLCBlbmQpOwogICAgIGlmICghc2lnbmVkVmFsdWUgfHwgc2lnbmVk
VmFsdWUudmFsdWUoKSA8IDApCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHNpZ25lZFZhbHVlOwogfQogCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1ub24tbmVnYXRpdmUtaW50ZWdlcgotT3B0
aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlu
cHV0KQorc3RkOjpvcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
TElLRUxZKGlucHV0LmlzOEJpdCgpKSkgewogICAgICAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNo
YXJhY3RlcnM4KCk7CkBAIC0yNDgsMjUgKzI0OCwyNSBAQCBPcHRpb25hbDxpbnQ+IHBhcnNlVmFs
aWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VW
YWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSog
cG9zaXRpb24sIHNpemVfdCBsZW5ndGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBh
cnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5
cGUqIHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGggPiAwKTsK
IAogICAgIC8vIHBhcnNlRG91YmxlKCkgYWxsb3dzIHRoZSBzdHJpbmcgdG8gc3RhcnQgd2l0aCBh
ICcrJyBvciB0byBlbmQgd2l0aCBhICcuJyBidXQgdGhvc2UKICAgICAvLyBhcmUgbm90IHZhbGlk
IGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgcGVyIEhUTUwuCiAgICAgaWYgKCpwb3NpdGlvbiA9
PSAnKycgfHwgKihwb3NpdGlvbiArIGxlbmd0aCAtIDEpID09ICcuJykKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgcGFy
c2VkTGVuZ3RoID0gMDsKICAgICBkb3VibGUgbnVtYmVyID0gcGFyc2VEb3VibGUocG9zaXRpb24s
IGxlbmd0aCwgcGFyc2VkTGVuZ3RoKTsKLSAgICByZXR1cm4gcGFyc2VkTGVuZ3RoID09IGxlbmd0
aCAmJiBzdGQ6OmlzZmluaXRlKG51bWJlcikgPyBudW1iZXIgOiBPcHRpb25hbDxkb3VibGU+KCk7
CisgICAgcmV0dXJuIHBhcnNlZExlbmd0aCA9PSBsZW5ndGggJiYgc3RkOjppc2Zpbml0ZShudW1i
ZXIpID8gbnVtYmVyIDogc3RkOjpvcHRpb25hbDxkb3VibGU+KCk7CiB9CiAKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLWZsb2F0aW5nLXBvaW50LW51bWJlcgotT3B0aW9u
YWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoU3RyaW5nVmlldyBp
bnB1dCkKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnRO
dW1iZXIoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChMSUtFTFkoaW5wdXQuaXM4Qml0KCkpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5w
dXQuY2hhcmFjdGVyczgoKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUhU
VFBSZWZyZXNoSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENo
YXJhYwogICAgIHdoaWxlIChwb3NpdGlvbiA8IGVuZCAmJiBpc0FTQ0lJRGlnaXQoKnBvc2l0aW9u
KSkKICAgICAgICAgKytwb3NpdGlvbjsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBudW1iZXIg
PSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyhudW1iZXJTdGFydCwgcG9z
aXRpb24gLSBudW1iZXJTdGFydCkpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG51bWJl
ciA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KG51bWJlclN0YXJ0LCBw
b3NpdGlvbiAtIG51bWJlclN0YXJ0KSk7CiAgICAgaWYgKCFudW1iZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5oCmluZGV4IDJiMzQ3M2M2YmU5YmJkOGEyZjAxMzkxNmRiNzA0YzU1NDAyYjRjOTYuLjJmNDFj
NjE5YTgxMTJiNzcyYTFjNjhkMDU1MWFjMDUwZDY5YzQ5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTYyLDE2ICs2MiwxNiBAQCBkb3Vi
bGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7CiBkb3VibGUgcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGZhbGxiYWNrVmFs
dWUpOwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1ZpZXcpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxpbnQ+IHBhcnNlSFRNTEludGVnZXIoU3RyaW5nVmlldyk7CiAKIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJz
aW5nLW5vbi1uZWdhdGl2ZS1pbnRlZ2VycwotV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3KTsKK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihT
dHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtbm9u
LW5lZ2F0aXZlLWludGVnZXIKLU9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2
ZUludGVnZXIoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxO
b25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvI3ZhbGlkLWZsb2F0aW5nLXBvaW50LW51bWJlcgotT3B0aW9uYWw8ZG91YmxlPiBw
YXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0cmluZ1ZpZXcp
OwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVj
dHVyZS5odG1sI3J1bGVzLWZvci1wYXJzaW5nLWZsb2F0aW5nLXBvaW50LW51bWJlci12YWx1ZXMK
IFZlY3Rvcjxkb3VibGU+IHBhcnNlSFRNTExpc3RPZk9mRmxvYXRpbmdQb2ludE51bWJlclZhbHVl
cyhTdHJpbmdWaWV3KTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBpbmxpbmUgdW5zaWduZWQgbGltaXRU
b09ubHlIVE1MTm9uTmVnYXRpdmUodW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1
ZQogaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKFN0cmluZ1ZpZXcg
c3RyaW5nVmFsdWUsIHVuc2lnbmVkIGRlZmF1bHRWYWx1ZSA9IDApCiB7CiAgICAgQVNTRVJUKGRl
ZmF1bHRWYWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKLSAgICB1bnNpZ25lZCB2
YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSkudmFsdWVPcihk
ZWZhdWx0VmFsdWUpOworICAgIHVuc2lnbmVkIHZhbHVlID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VyKHN0cmluZ1ZhbHVlKS52YWx1ZV9vcihkZWZhdWx0VmFsdWUpOwogICAgIEFTU0VSVCh2
YWx1ZSA8PSBtYXhIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKTsKICAgICByZXR1cm4gdmFsdWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCmlu
ZGV4IDMwYjBmNzIyOWQyY2ViMGQ4YWM4ZGI1ODJjNDIyZTU2MGY0YjQ2MzkuLjY2YTk4NjRjMmI2
NmI2OGYxMTc2ZmI3ZGEzMzRkZTUwYjBmMzRmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBzdGF0
aWMgYm9vbCBwYXJzZURlc2NyaXB0b3JzKFZlY3RvcjxTdHJpbmdWaWV3PiYgZGVzY3JpcHRvcnMs
IERlc2NyaXB0b3JQYXJzaW5nUgogICAgICAgICBpZiAoZGVzY3JpcHRvckNoYXIgPT0gJ3gnKSB7
CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0
KCkgfHwgcmVzdWx0Lmhhc1dpZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBkZW5zaXR5ID0gcGFyc2VWYWxpZEhUTUxGbG9h
dGluZ1BvaW50TnVtYmVyKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IGRlbnNpdHkgPSBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoZGVzY3Jp
cHRvcik7CiAgICAgICAgICAgICBpZiAoIWRlbnNpdHkgfHwgZGVuc2l0eS52YWx1ZSgpIDwgMCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXN1bHQuc2V0RGVu
c2l0eShkZW5zaXR5LnZhbHVlKCkpOwogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3JDaGFy
ID09ICd3JykgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0
Lmhhc1dpZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
T3B0aW9uYWw8aW50PiByZXNvdXJjZVdpZHRoID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUlu
dGVnZXIoZGVzY3JpcHRvcik7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gcmVzb3Vy
Y2VXaWR0aCA9IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOwog
ICAgICAgICAgICAgaWYgKCFyZXNvdXJjZVdpZHRoIHx8IHJlc291cmNlV2lkdGgudmFsdWUoKSA8
PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJlc3VsdC5z
ZXRSZXNvdXJjZVdpZHRoKHJlc291cmNlV2lkdGgudmFsdWUoKSk7CkBAIC0xNTAsNyArMTUwLDcg
QEAgc3RhdGljIGJvb2wgcGFyc2VEZXNjcmlwdG9ycyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2Ny
aXB0b3JzLCBEZXNjcmlwdG9yUGFyc2luZ1IKICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvZiB0
aGUgJ2gnIGRlc2NyaXB0b3IgaXMgbm90IHVzZWQuCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgT3B0aW9uYWw8aW50PiByZXNvdXJjZUhlaWdodCA9IHBhcnNl
VmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IHJlc291cmNlSGVpZ2h0ID0gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2
ZUludGVnZXIoZGVzY3JpcHRvcik7CiAgICAgICAgICAgICBpZiAoIXJlc291cmNlSGVpZ2h0IHx8
IHJlc291cmNlSGVpZ2h0LnZhbHVlKCkgPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICByZXN1bHQuc2V0UmVzb3VyY2VIZWlnaHQocmVzb3VyY2VIZWlnaHQu
dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcAppbmRleCBkMTExYzJkOTY0ZTk4NTcxNTMzYTAzOTRmMTVhNzcwNGJmOGUxMTA2
Li45YWY3MzUyMDczNzJjNjAxMDBlODg4MzIxMTZhYTJhYjQ5NGU2OTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTI5OCw3
ICsyOTgsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQpCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCiAgICAgY29uc3QgTGF5b3V0VW5pdCBzbmFwcGluZ1RocmVzaG9sZCA9IHJlbmRlcmVy
KCktPnRoZW1lKCkuc2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCk7CiAgICAgaWYgKHNuYXBw
aW5nVGhyZXNob2xkID4gMCkgewotICAgICAgICBpZiAoT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2Vz
dCA9IGlucHV0LT5maW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUodmFsdWUpKSB7CisgICAgICAgIGlm
IChzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNr
TWFya1ZhbHVlKHZhbHVlKSkgewogICAgICAgICAgICAgZG91YmxlIGNsb3Nlc3RGcmFjdGlvbiA9
IHN0ZXBSYW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKCpjbG9zZXN0KS50b0RvdWJsZSgpOwogICAg
ICAgICAgICAgZG91YmxlIGNsb3Nlc3RSYXRpbyA9IGlzVmVydGljYWwgfHwgIWlzTGVmdFRvUmln
aHREaXJlY3Rpb24gPyAxLjAgLSBjbG9zZXN0RnJhY3Rpb24gOiBjbG9zZXN0RnJhY3Rpb247CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IGNsb3Nlc3RQb3NpdGlvbiA9IHRyYWNrTGVuZ3RoICogY2xv
c2VzdFJhdGlvOwpAQCAtNTgyLDcgKzU4Miw3IEBAIEhUTUxJbnB1dEVsZW1lbnQqIFNsaWRlclRo
dW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oc2hhZG93SG9zdCgpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBT
bGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHls
ZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQogewogICAgIC8vIFRoaXMgZG9lc24n
dCBhY3R1YWxseSBjb21wdXRlIHN0eWxlLiBUaGlzIGlzIGp1c3QgYSBoYWNrIHRvIHBpY2sgc2hh
ZG93IHBzZXVkbyBpZCB3aGVuIGhvc3Qgc3R5bGUgaXMga25vd24uCiAKQEAgLTU5MCw3ICs1OTAs
NyBAQCBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBBdG9taWNTdHJpbmc+IG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgiLXdlYmtp
dC1tZWRpYS1zbGlkZXItdGh1bWIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIGlmICghaG9zdFN0eWxlKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoaG9zdFN0eWxlLT5hcHBlYXJh
bmNlKCkpIHsKICAgICBjYXNlIE1lZGlhU2xpZGVyUGFydDoKQEAgLTYwNSw3ICs2MDUsNyBAQCBP
cHRpb25hbDxFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gc2xpZGVy
VGh1bWJTaGFkb3dQc2V1ZG9JZDsKICAgICB9CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNsaWRlclRodW1i
RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtNjM2LDcgKzYzNiw3IEBAIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5CiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNsaWRl
ckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVu
dFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQorc3RkOjpvcHRpb25h
bDxFbGVtZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBob3N0U3R5bGUpCiB7CiAg
ICAgLy8gVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGNvbXB1dGUgc3R5bGUuIFRoaXMgaXMganVzdCBh
IGhhY2sgdG8gcGljayBzaGFkb3cgcHNldWRvIGlkIHdoZW4gaG9zdCBzdHlsZSBpcyBrbm93bi4K
IApAQCAtNjQ0LDcgKzY0NCw3IEBAIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFp
bmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Vi
a2l0LXNsaWRlci1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKIAogICAgIGlmICghaG9zdFN0eWxlKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoaG9zdFN0eWxlLT5hcHBlYXJh
bmNlKCkpIHsKICAgICBjYXNlIE1lZGlhU2xpZGVyUGFydDoKQEAgLTY1OSw3ICs2NTksNyBAQCBP
cHRpb25hbDxFbGVtZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdAogICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gc2xpZGVy
Q29udGFpbmVyOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU2xpZGVyQ29udGFpbmVyRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuaAppbmRleCAxNWI3NGFmNmMyNDk2Mjg3YmY4ZjlkMjE4Nzhi
NmJlZmYxNzExNzJiLi44MDVlY2I2Y2MzZjk0ZmM3ZDUwOTIxMGZmZmM1MmQ4MDNiMDVhYTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApA
QCAtNzcsNyArNzcsNyBAQCBjbGFzcyBTbGlkZXJUaHVtYkVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTERpdkVsZW1lbnQgewogI2VuZGlmCiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCkg
b3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CisgICAg
c3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdGFy
dERyYWdnaW5nKCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgU2xpZGVyQ29udGFpbmVyRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwcml2YXRlOgogICAgIFNsaWRl
ckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1
c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlk
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBB
dG9taWNTdHJpbmcgbV9zaGFkb3dQc2V1ZG9JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGUwZDdmMmUx
ZDI4YjNmOTM1YjJiYjc0ODI5ZGUxNTFjZmI5M2FlMWEuLjc5MDFjNmEzZDQwNjY0NjhmOTk3ZmZi
MjkzMzE2N2Q3YTM1Zjk2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBSZWY8
VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHRDb250cm9s
SW5uZXJFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4
dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCitzdGQ6Om9wdGlvbmFsPEVs
ZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7
CiAgICAgYXV0byBpbm5lckNvbnRhaW5lclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigp
OwogICAgIGlubmVyQ29udGFpbmVyU3R5bGUtPmluaGVyaXRGcm9tKHNoYWRvd0hvc3RTdHlsZSk7
CkBAIC0xMzQsNyArMTM0LDcgQEAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlbmRlcmVyKCkgY29uc3QKICAgICByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrPihIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXIo
KSk7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJT
dHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIHN0
eWxlID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkp
LmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwogICAgIHJldHVybiBFbGVt
ZW50U3R5bGUoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsK
QEAgLTE0OSw3ICsxNDksNyBAQCBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6VGV4dENv
bnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHNldEhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+
IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKQorc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUg
PSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCBlZWRhMDk0ZjAx
ZDMwNDdkYTM0NWRkY2E4ZTJhZWZjMjkyMmM1MGZiLi5iMTZlMWU3MzY0NmJlM2U4YzQ4YmViOTRj
YjNmZDRmNmJkZDQ4MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBUZXh0
Q29udHJvbElubmVyRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiAKIHBy
b3RlY3RlZDoKICAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudChEb2N1bWVudCYpOwotICAgIE9w
dGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dI
b3N0U3R5bGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJs
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC02NCw3ICs2NCw3IEBAIGNs
YXNzIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxl
bWVudCB7CiBwcml2YXRlOgogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChEb2N1bWVu
dCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRv
d0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKQEAgLTc2LDcg
Kzc2LDcgQEAgY2xhc3MgVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTERpdkVsZW1lbnQgewogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbFBsYWNlaG9sZGVy
RWxlbWVudChEb2N1bWVudCYpOwogICAgIAotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxF
bGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogfTsK
IAogY2xhc3MgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRGl2RWxlbWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5oCmluZGV4
IGU2ZjA2ZTgzNmQ4YzI2NTc0ZmVmM2Y4MzM3OWY5YTAzMDUzNDM1ZWQuLjVlOTQ0OWJmY2ViZjdk
ZTkzYjNlMjFkNjA5N2EyOWYxMzZjY2E1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tFdmVudC5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFRyYWNrRXZlbnQgZmluYWwgOiBwdWJs
aWMgRXZlbnQgewogICAgIHVzaW5nIFRyYWNrRXZlbnRUcmFjayA9IFZhcmlhbnQ8UmVmUHRyPFZp
ZGVvVHJhY2s+LCBSZWZQdHI8QXVkaW9UcmFjaz4sIFJlZlB0cjxUZXh0VHJhY2s+PjsKIAogICAg
IHN0cnVjdCBJbml0IDogcHVibGljIEV2ZW50SW5pdCB7Ci0gICAgICAgIE9wdGlvbmFsPFRyYWNr
RXZlbnRUcmFjaz4gdHJhY2s7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VHJhY2tFdmVudFRyYWNr
PiB0cmFjazsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxUcmFja0V2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVk
IGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCAwZGYzNmRmZmU1NmE3ODA5
YzgyMWM2M2M3ZWY5MTM4NmFkODkwOWFlLi4wNzBhYWExZGRiZDBhMDY2NTAzMGY2MWEzNjA5MWRi
MGQ5YWMzZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEV4ZWN1dGFibGVX
aXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnkqIGlkYkZhY3RvcnksIFNlY3VyaXR5T3JpZ2lu
KiwgY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBpZGJG
YWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNlTmFtZSwgTnVsbG9wdCk7CisgICAgYXV0
byByZXN1bHQgPSBpZGJGYWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNlTmFtZSwgc3Rk
OjpudWxsb3B0KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJl
cXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZS4iKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRXhlY3V0YWJsZVdpdGhE
YXRhYmFzZTo6c3RhcnQoSURCRmFjdG9yeSogaWRiRmFjdG9yeSwgU2VjdXJpdHlPcmlnaW4qLCBj
b25zCiB9CiAKIAotc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgo
Y29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGlkYktleVBhdGgpCitzdGF0aWMgUmVmUHRyPEtl
eVBhdGg+IGtleVBhdGhGcm9tSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+JiBpZGJLZXlQYXRoKQogewogICAgIGlmICghaWRiS2V5UGF0aCkKICAgICAgICAgcmV0dXJu
IEtleVBhdGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6TnVsbCkucmVsZWFzZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAppbmRleCBiYzNhNTY2NGVkNzYwZDlkNDM1MzRjMmY3MjVlMjI3YTlkOWY1NzIy
Li5mMDNlNmEwMTZlNmYxNzUxMzVmYTBiM2EwYTJmOWZlZTdiNmRiZTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApA
QCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWls
TG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVuCiAgICAgICAgIGNvbnNv
bGVBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJyb3IpOyAvLyBUaGlzIHNob3Vs
ZCBjb21lIEFGVEVSIHJlc291cmNlIG5vdGlmaWNhdGlvbiwgZnJvbnQtZW5kIHJlbGllcyBvbiB0
aGlzLgogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhSTG9h
ZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE9wdGlv
bmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVt
YmVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVt
YmVyKQogewogICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlk
RmluaXNoWEhSTG9hZGluZyhpZGVudGlmaWVyLCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVy
LCBzZW5kQ29sdW1uTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBmM2QzZmZhZGQyYzhkYzJjOGQ3MDFjYWFm
NWVhY2RmMDJlMmM0ZmM3Li4zOGQwNmZjMWVhMzY0ODUyMWNjMzNjZWExYWYxYzFhZjU4M2FlNjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCkBAIC0xNjMsNyArMTYzLDcgQEAgY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSos
IERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNo
VGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE9w
dGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1u
TnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNp
Z25lZCBzZW5kQ29sdW1uTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVz
cG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7
CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC0zMzksNyArMzM5LDcgQEAgY2xhc3MgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uIHsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgVVJMJiwgYm9vbCwgUmVmUHRyPEZvcm1EYXRhPiYmLCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiwgYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbFhIUkxvYWRpbmdJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE9wdGlvbmFs
PFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNl
bmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVy
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQg
c2VuZENvbHVtbk51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3BvbnNl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAg
ICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtOTE0LDcgKzkxNCw3IEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoRnJhbWUqIGZyYW1lLCBEb2N1bWVu
dExvYWRlCiAgICAgICAgIGRpZEZhaWxMb2FkaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
aWRlbnRpZmllciwgbG9hZGVyLCBlcnJvcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2ln
bmVkIHNlbmRDb2x1bW5OdW1iZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpbmlzaFhIUkxvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNl
bmRDb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKICAg
ICAgICAgZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVu
dCwgaWRlbnRpZmllciwgZGVjb2RlZFRleHQsIHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIs
IHNlbmRDb2x1bW5OdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDg4MjI4Zjk1NmExYmNhZmY2MTIyMjA5MjRlZTljYzY4
ZGU5NmZjZmIuLmUyZmVjZjU2YTVjZGRiMGYyZTkyYjRlMTFiMDdjOGY5YTVlYTIwMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTkyNiw3ICs5MjYsNyBAQCBFeGNlcHRpb25PcjxDU1NTdHlsZVJ1bGUqPiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiAgICAgU3RyaW5nQnVpbGRl
ciBzdHlsZVNoZWV0VGV4dDsKICAgICBzdHlsZVNoZWV0VGV4dC5hcHBlbmQodGV4dC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CiAKLSAgICBhdXRvIGFkZFJ1bGVSZXN1bHQgPSBtX3BhZ2VTdHlsZVNo
ZWV0LT5hZGRSdWxlKHNlbGVjdG9yLCBlbXB0eVN0cmluZygpLCBOdWxsb3B0KTsKKyAgICBhdXRv
IGFkZFJ1bGVSZXN1bHQgPSBtX3BhZ2VTdHlsZVNoZWV0LT5hZGRSdWxlKHNlbGVjdG9yLCBlbXB0
eVN0cmluZygpLCBzdGQ6Om51bGxvcHQpOwogICAgIGlmIChhZGRSdWxlUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gYWRkUnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgQVNTRVJUKG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBmYjQw
ZDlkNjdhODBiNGFlYjMyNDI0ZjFhMzE4YjA4ZjY1ZWNhOGQwLi5mMTk1MmMxNmYxN2M1OWMzNTUy
ODViMDRmMjBjMzYyZmNjNzEzYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRJbnN0cnVtZW50cyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IEluc3AKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIE9wdGlvbmFsPFByb3RvY29sOjpUaW1lbGluZTo6SW5zdHJ1bWVudD4gaW5zdHJ1bWVudFR5
cGUgPSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
PFByb3RvY29sOjpUaW1lbGluZTo6SW5zdHJ1bWVudD4oZW51bVZhbHVlU3RyaW5nKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+IGluc3RydW1l
bnRUeXBlID0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+KGVudW1WYWx1ZVN0cmluZyk7CiAg
ICAgICAgIGlmICghaW5zdHJ1bWVudFR5cGUpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0g
bWFrZVN0cmluZygiVW5leHBlY3RlZCBlbnVtIHZhbHVlOiAiLCBlbnVtVmFsdWVTdHJpbmcpOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKaW5kZXggZGI0Nzk5ODQxNTJlMzU2MmYzMTk0NjhiZTk1OTVlZWJiZTkwODc1MC4uMmQzY2Q5
NTBlMzE4NDM5MzdiOGI3MDVkMzE3NTRiMzhhYTMzYjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNzE1LDcgKzE3MTUsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBWZWN0b3I8TGlua0ljb24+IGljb25zID0g
TGlua0ljb25Db2xsZWN0b3IgeyAqZG9jdW1lbnQgfS5pY29uc09mVHlwZXMoeyBMaW5rSWNvblR5
cGU6OkZhdmljb24sIExpbmtJY29uVHlwZTo6VG91Y2hJY29uLCBMaW5rSWNvblR5cGU6OlRvdWNo
UHJlY29tcG9zZWRJY29uIH0pOwogCiAgICAgaWYgKGljb25zLmlzRW1wdHkoKSkKLSAgICAgICAg
aWNvbnMuYXBwZW5kKHsgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoQVNDSUlMaXRl
cmFsKCIvZmF2aWNvbi5pY28iKSksIExpbmtJY29uVHlwZTo6RmF2aWNvbiwgU3RyaW5nKCksIE51
bGxvcHQgfSk7CisgICAgICAgIGljb25zLmFwcGVuZCh7IG1fZnJhbWUtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKEFTQ0lJTGl0ZXJhbCgiL2Zhdmljb24uaWNvIikpLCBMaW5rSWNvblR5cGU6OkZh
dmljb24sIFN0cmluZygpLCBzdGQ6Om51bGxvcHQgfSk7CiAKICAgICBmb3IgKGF1dG8mIGljb24g
OiBpY29ucykgewogICAgICAgICBhdXRvIHJlc3VsdCA9IG1faWNvbnNQZW5kaW5nTG9hZERlY2lz
aW9uLmFkZChuZXh0SWNvbkNhbGxiYWNrSUQrKywgaWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDExYTQ4ZDczY2Ez
NzhmYjU0YThlZWRkODhlNmM3NjhhMjNmOTBlMTIuLmU4NzgxZTNiYTVmMDVkZDgxZTE3NzI4MGRi
OWVkYTZjNzU2MmU2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXMKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5B
Y2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewog
ICAgIGlmIChtX2FzeW5jKSB7Ci0gICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IENyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlcigqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIG1f
cHJlZmxpZ2h0Q2hlY2tlci5lbXBsYWNlKCp0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAg
ICAgbV9wcmVmbGlnaHRDaGVja2VyLT5zdGFydFByZWZsaWdodCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjbGVhclJlc291cmNlKCkKICAgICAgICAgcmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7
CiAgICAgfQogICAgIGlmIChtX3ByZWZsaWdodENoZWNrZXIpCi0gICAgICAgIG1fcHJlZmxpZ2h0
Q2hlY2tlciA9IE51bGxvcHQ7CisgICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHJlcG9ydENvbnRlbnRTZWN1cml0eVBvbGlj
eUVycm9yKFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVVJMJiB1cmwpCkBA
IC0zNDksNyArMzQ5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdo
dFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICBSZXNvdXJjZVJlcXVlc3Qg
YWN0dWFsUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNj
ZXNzQ29udHJvbChhY3R1YWxSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbigpLCBtX29wdGlvbnMuYWxs
b3dDcmVkZW50aWFscyk7CiAKLSAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBOdWxsb3B0OworICAg
IG1fcHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEl0IHNob3VsZCBi
ZSBvayB0byBza2lwIHRoZSBzZWN1cml0eSBjaGVjayBzaW5jZSB3ZSBhbHJlYWR5IGFza2VkIGFi
b3V0IHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KICAgICBsb2FkUmVxdWVzdChXVEZNb3ZlKGFjdHVh
bFJlcXVlc3QpLCBTa2lwU2VjdXJpdHlDaGVjayk7CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCkKIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodEZh
aWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBOdWxsb3B0OworICAgIG1fcHJlZmxpZ2h0
Q2hlY2tlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmFpbExvYWRpbmcobV9kb2N1bWVudC5mcmFtZSgpLCBtX2RvY3VtZW50LmZyYW1lKCktPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZpZXIsIGVycm9yKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDBmZjI5
MGQ4MjU2MzgzYTA3MWJmZGYxZjhkZDFiZTc2OGVmZTRlNzMuLjNkYThjNWVmZGJjYzA0ZTdjOWI1
MmZkYmIyZDU1YmNmZmI5YWY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTExNyw4ICsxMTcsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgbV9zaW1wbGVSZXF1ZXN0OwogICAgICAgICBib29sIG1fYXN5
bmM7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29u
dGVudFNlY3VyaXR5UG9saWN5OwotICAgICAgICBPcHRpb25hbDxDcm9zc09yaWdpblByZWZsaWdo
dENoZWNrZXI+IG1fcHJlZmxpZ2h0Q2hlY2tlcjsKLSAgICAgICAgT3B0aW9uYWw8SFRUUEhlYWRl
ck1hcD4gbV9vcmlnaW5hbEhlYWRlcnM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyPiBtX3ByZWZsaWdodENoZWNrZXI7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SFRUUEhlYWRlck1hcD4gbV9vcmlnaW5hbEhlYWRlcnM7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCAzNTZhODA1OTZiMGIwMGNiMzU2NTE5YWIwODI5OGExYzQzNTNkMWNlLi40ZDU5YzAwOWNhZjZm
Y2E3ZmE1NTQyNjNjN2VkN2IxNjU4NmU1ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtNjQsOSArNjQsOSBAQCBjbGFzcyBFbXB0eVBheW1lbnRDb29yZGluYXRv
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQgewogICAgIGJv
b2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYsIGNvbnN0IFBh
eW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBvdmVy
cmlkZSB7IH0KIAotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cywgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mLCBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90
YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIHN0ZDo6b3B0aW9uYWw8UGF5bWVu
dFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywg
Y29uc3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mLCBzdGQ6Om9wdGlv
bmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9CiAgICAg
dm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKSBv
dmVycmlkZSB7IH0KICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDAzOTdiMGQ0YzcwNjQ1YjE4ODQxYWFi
MzYwZmEzNDFiZjlmMDM0YmEuLjg5ZDIyZTc5YjFkNmQyYjk2Y2UxMjZjN2EyOTZjMjc4OTRiY2Q2
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI5Niw3ICsyOTYsNyBA
QCBjbGFzcyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50
IHsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSBvdmVycmlkZSB7IH0KICAgICB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZSB7IH0KICAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJ
bnNlY3VyZUNvbnRlbnQ+KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4pIG92ZXJyaWRlIHsgfQogICAg
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVu
dExvYWQoKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IGM3ODgzYWNiMWIxZmJlNTBjMjk4MThiNmY0NjY2ZDljZTk2ZTQzOWYuLjEyMmEyYmQyN2Zh
ZDU3MjcyNmUxNzBmZWVkNTkxMzFhNTYwMzhhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMzQyLDkgKzM0Miw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxv
Y2F0aW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QpCiAgICAgdXJsU2VsZWN0ZWQo
cmVxdWVzdCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJp
bmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9j
a0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBPcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQordm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0
ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJp
Z2dlcmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlz
dCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVy
cmVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKIHsKLSAgICBOZXdGcmFtZU9w
ZW5lclBvbGljeSBuZXdGcmFtZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZU9yKHNo
b3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9s
aWN5OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CisgICAgTmV3RnJh
bWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVf
b3Ioc2hvdWxkU2VuZFJlZmVycmVyID09IE5ldmVyU2VuZFJlZmVycmVyID8gTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKICAgICB1
cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHBhc3NlZFRhcmdldCwgbG9ja0hpc3Rvcnks
IGxvY2tCYWNrRm9yd2FyZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgQWxsb3dOYXZpZ2F0aW9u
VG9JbnZhbGlkVVJMOjpZZXMsIG5ld0ZyYW1lT3BlbmVyUG9saWN5LCBEb05vdFJlcGxhY2VEb2N1
bWVudElmSmF2YVNjcmlwdFVSTCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgZG93bmxv
YWRBdHRyaWJ1dGUpLCB0cmlnZ2VyaW5nRXZlbnQpOwogfQogCkBAIC02MjgsNyArNjI4LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFy
V2luZG93UHJvcGVydGllcywgYm9vbAogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0
RGF0YSgpCiB7Ci0gICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE51bGxvcHQpOworICAgIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZChzdGQ6Om51bGxvcHQpOwogICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKICAgICBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJs
ZUluQWxsV29ybGRzKCk7CiAKQEAgLTE4MTQsNyArMTgxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUobWFp
blJlc291cmNlUmVxdWVzdCwgbWFpblJlc291cmNlSWRlbnRpZmllciwgbWFpblJlc291Y2VFcnJv
cik7CiAgICAgICAgIG5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoY2FjaGVk
UGFnZS0+ZG9jdW1lbnRMb2FkZXIoKSwgbWFpblJlc291cmNlSWRlbnRpZmllciwgY2FjaGVkUGFn
ZS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKSk7CiAKLSAgICAgICAgT3B0aW9uYWw8SGFz
SW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQgPSBjYWNoZWRQYWdlLT5jYWNoZWRN
YWluRnJhbWUoKS0+aGFzSW5zZWN1cmVDb250ZW50KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQgPSBjYWNoZWRQYWdlLT5jYWNo
ZWRNYWluRnJhbWUoKS0+aGFzSW5zZWN1cmVDb250ZW50KCk7CiAKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgQVBJIHNob3VsZCBiZSB0dXJuZWQgYXJvdW5kIHNvIHRoYXQgd2UgZ3JvdW5kIENhY2hl
ZFBhZ2UgaW50byB0aGUgUGFnZS4KICAgICAgICAgY2FjaGVkUGFnZS0+cmVzdG9yZSgqbV9mcmFt
ZS5wYWdlKCkpOwpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihD
YWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3
LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKLSAgICBPcHRpb25hbDxJbnRSZWN0PiBw
cmV2aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2ZyYW1lLnZpZXcoKS0+
ZnJhbWVSZWN0KCkgOiBPcHRpb25hbDxJbnRSZWN0PihOdWxsb3B0KTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEludFJlY3Q+IHByZXZpb3VzVmlld0ZyYW1lUmVjdCA9IG1fZnJhbWUudmlldygpID8gIG1f
ZnJhbWUudmlldygpLT5mcmFtZVJlY3QoKSA6IHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4oc3RkOjpu
dWxsb3B0KTsKICAgICBtX2ZyYW1lLnNldFZpZXcodmlldyk7CiAKICAgICAvLyBVc2UgdGhlIHBy
ZXZpb3VzIFNjcm9sbFZpZXcncyBmcmFtZSByZWN0LgpAQCAtMzUyOSw3ICszNTI5LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICNl
bmRpZgogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9u
YWw8SGFzSW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50KQordm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1
cmVDb250ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50KQogewogICAgIGlmIChtX3N0YXRl
TWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTM1OTMsOCArMzU5Myw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmZvcmNlUGFnZVRyYW5zaXRp
b25JZk5lZWRlZCgpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyVGVzdGluZ092ZXJyaWRlcygp
CiB7Ci0gICAgbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZyA9IE51bGxvcHQ7Ci0gICAg
bV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZyA9IE51bGxvcHQ7CisgICAg
bV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZyA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX292
ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHlGb3JUZXN0aW5nID0gc3RkOjpudWxsb3B0OwogICAg
IG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xpY3lEaXNhYmxlZEZvclRlc3Rpbmcg
PSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCAxN2YzMzdl
MjkxOWIxMzI5MTMyODZiMjAxNWI1ZjQxYzg0N2RjOGE4Li4xYjAyZWVmZTZjZjYxODY0YTNjZjNh
NDQ3NTUwYjA2Y2VlOTQ4MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
MTE4LDcgKzExOCw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyIHsKICAgICB1bnNpZ25lZCBsb25nIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3Jl
ZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgdm9pZCBjaGFu
Z2VMb2NhdGlvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cmxTZWxlY3RlZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQq
LCBMb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyLCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBPcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGlj
eT4gPSBOdWxsb3B0LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVs
bEF0b20pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2Fy
ZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
c3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0
IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSk7CiAgICAgdm9pZCBz
dWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+KTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSwgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkID0gdHJ1ZSk7CkBAIC0zNTAsNyArMzUwLDcgQEAgY2xhc3MgRnJhbWVM
b2FkZXIgewogCiAgICAgYm9vbCBzaG91bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERv
Y3VtZW50TG9hZGVyKik7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25h
bDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGluaXRpYWxIYXNJbnNlY3VyZUNvbnRlbnQpOworICAgIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50
PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50KTsKIAogICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYsIEV2ZW50Kik7CiAKQEAgLTQ1Miw4ICs0NTIsOCBAQCBjbGFz
cyBGcmFtZUxvYWRlciB7CiAKICAgICBSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gbV9u
ZXR3b3JraW5nQ29udGV4dDsKIAotICAgIE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5PiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nOwotICAgIE9wdGlvbmFsPFJlc291
cmNlTG9hZFByaW9yaXR5PiBtX292ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHlGb3JUZXN0aW5n
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k+IG1fb3ZlcnJp
ZGVDYWNoZVBvbGljeUZvclRlc3Rpbmc7CisgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQ
cmlvcml0eT4gbV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZzsKICAgICBi
b29sIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xpY3lEaXNhYmxlZEZvclRlc3Rp
bmcgeyBmYWxzZSB9OwogCiAgICAgVVJMIG1fcHJldmlvdXNVUkw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGI2NTMwZGU1YmQzZmU1NTEzYjI3ZmE3ODBk
NWRjMmY2NmViMmU4MTMuLjMwYThiNjNmMjdmZTBjZDNiOTA0ZjM0YzRiOTBjMTI5NGYzNzcxYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNjUsNyAr
MTY1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5z
ZWN1cmVDb250ZW50PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRM
b2FkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDU1YTRkNWY2
MGRiOTA5MjNkY2FjYzA0ODliZjc0MzMxMDhlYWJmMGYuLmZhMDc4YjY2OTJjMGI4YmZlMDAxNjJj
NGQ2ZTc3MGNmZTkzMTU2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCiAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSBudWxscHRyOwogfQog
Ci1PcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gTGlua0xvYWRlcjo6cmVzb3VyY2VUeXBl
RnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXMpCitzdGQ6Om9wdGlvbmFsPENhY2hlZFJl
c291cmNlOjpUeXBlPiBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29u
c3QgU3RyaW5nJiBhcykKIHsKICAgICBpZiAoYXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
Q2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNlOwpAQCAtMTAxLDcgKzEwMSw3IEBAIE9wdGlvbmFs
PENhY2hlZFJlc291cmNlOjpUeXBlPiBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9tQXNBdHRy
aWJ1dGUoY29uc3QgU3RyCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFz
LCAidHJhY2siKSkKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpUZXh0VHJhY2tSZXNv
dXJjZTsKICNlbmRpZgotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
dD4gY3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIExpbmtMb2FkZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSkKQEAgLTE4
Niw3ICsxODYsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRy
aWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMJiBocmVmLAogICAgICAgICBpZiAoIW1fY2xp
ZW50LnNob3VsZExvYWRMaW5rKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHByaW9yaXR5OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSA9IENhY2hlZFJlc291cmNlOjpMaW5rUHJlZmV0Y2g7CiAgICAg
ICAgIGlmIChyZWxBdHRyaWJ1dGUuaXNMaW5rU3VicmVzb3VyY2UpIHsKICAgICAgICAgICAgIC8v
IFdlIG9ubHkgbWFrZSBvbmUgcmVxdWVzdCB0byB0aGUgY2FjaGVkIHJlc291cmNlIGxvYWRlciBp
ZiBtdWx0aXBsZSByZWwgdHlwZXMgYXJlIHNwZWNpZmllZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5oCmluZGV4IDJhNDkyMWM0MTVjZmFhNmRjMDRjNzdkYTdlYjgxODcyMjUwNDljM2UuLmU3
NzNiNjRjMzkxZjU0NTZkNWIyZDQ5YTM0MzYzOTQ3MmU1MDBmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBMaW5rTG9hZGVyIDogcHJpdmF0
ZSBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgdmlydHVhbCB+TGlua0xvYWRlcigpOwogCiAg
ICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBhcywgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbiwgRG9jdW1lbnQmKTsKLSAg
ICBzdGF0aWMgT3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IHJlc291cmNlVHlwZUZyb21B
c0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFzKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
YWNoZWRSZXNvdXJjZTo6VHlwZT4gcmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgYXMpOwogCiAgICAgV2Vha1B0cjxMaW5rTG9hZGVyPiBjcmVhdGVXZWFrUHRyKCkgeyBy
ZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KICAgICB2b2lkIHRyaWdn
ZXJFdmVudHMoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDZkMTYwNjczOTk2YzJjYzI5NDU2NmY1ZTk3M2Yz
NWNhZTI5NjZmZGQuLmNhMGJjMDBkMTI1YzBkODIwZTFhNzhmZTU5MDVjZmI1YjgxNmZjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBTdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1l
LCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbgogICAgICwgbV9yZXNvdXJjZSgmcmVzb3Vy
Y2UpCiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNlKQogICAgICwgbV9zdGF0
ZShVbmluaXRpYWxpemVkKQotICAgICwgbV9yZXF1ZXN0Q291bnRUcmFja2VyKEluUGxhY2UsIGZy
YW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIHJlc291cmNlKQorICAgICwg
bV9yZXF1ZXN0Q291bnRUcmFja2VyKHN0ZDo6aW5fcGxhY2UsIGZyYW1lLmRvY3VtZW50KCktPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCksIHJlc291cmNlKQogewogI2lmbmRlZiBOREVCVUcKICAgICBz
dWJyZXNvdXJjZUxvYWRlckNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC0zMDIsNyArMzAyLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50ID0g
dHJ1ZTsKIAogICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBtdWx0aVBhcnRzIGluIGEgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50Ci0gICAgICAgIG1fcmVxdWVzdENvdW50VHJh
Y2tlciA9IE51bGxvcHQ7CisgICAgICAgIG1fcmVxdWVzdENvdW50VHJhY2tlciA9IHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKCFtX3Jlc291cmNlLT5pc0ltYWdlKCkpIHsKICAgICAgICAgICAg
IGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUoKQogICAgIGlmIChyZWFjaGVkVGVybWluYWxT
dGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBO
dWxsb3B0OworICAgIG1fcmVxdWVzdENvdW50VHJhY2tlciA9IHN0ZDo6bnVsbG9wdDsKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS5sb2FkRG9uZShtX3Jlc291cmNlLCBtX3N0YXRlICE9IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6
aW5nKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IGEzNGVlMDZlNmM5M2RkNzc0ODFhZDVlZjEwZTYzM2Y3YTFkNThjMGUuLjg0YzBhYzRlY2M3
YTNiOGI0YTg1N2ZhNDMwYmVmYjE1ODc0ZjNmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oCkBAIC0xMjgsNyArMTI4LDcgQEAgY2xhc3MgU3VicmVzb3VyY2VM
b2FkZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2VMb2FkZXIgewogICAgIENhY2hlZFJlc291cmNl
KiBtX3Jlc291cmNlOwogICAgIGJvb2wgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudDsKICAgICBT
dWJyZXNvdXJjZUxvYWRlclN0YXRlIG1fc3RhdGU7Ci0gICAgT3B0aW9uYWw8UmVxdWVzdENvdW50
VHJhY2tlcj4gbV9yZXF1ZXN0Q291bnRUcmFja2VyOworICAgIHN0ZDo6b3B0aW9uYWw8UmVxdWVz
dENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0Q291bnRUcmFja2VyOwogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmlu
ZGV4IGUwNzkzOGM5Zjc1MDE3OTUyNzkxMGE0OTZjZTZmNGNhZGQyZTYwMDQuLmFmYjBiNjU0NzMy
ZDZlYmI1NmE1NjRmYTY4MDQ3Nzk5ZTU2MjIwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtODAyLDcgKzgwMiw3IEBAIGJvb2wgQ2Fj
aGVkUmVzb3VyY2U6OmFyZUFsbENsaWVudHNYTUxIdHRwUmVxdWVzdHMoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkoY29u
c3QgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBsb2FkUHJpb3JpdHkpCit2b2lkIENh
Y2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkoY29uc3Qgc3RkOjpvcHRpb25hbDxSZXNvdXJj
ZUxvYWRQcmlvcml0eT4mIGxvYWRQcmlvcml0eSkKIHsKICAgICBpZiAobG9hZFByaW9yaXR5KQog
ICAgICAgICBtX2xvYWRQcmlvcml0eSA9IGxvYWRQcmlvcml0eS52YWx1ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA4NDY4OTUzMzg1ZjE5
ZmViOTYwYjgxOGEyZDc5YTJmZmVlNjQzOThmLi5jOGJjMGRmNjM1MjY1Nzc1ZTY1YmU1NWI0NTg5
MDIyNzViM2I1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaApAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlIHsKICAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIFJlc291cmNlTG9hZFBy
aW9yaXR5IGxvYWRQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFByaW9yaXR5OyB9Ci0g
ICAgdm9pZCBzZXRMb2FkUHJpb3JpdHkoY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3Jp
dHk+Jik7CisgICAgdm9pZCBzZXRMb2FkUHJpb3JpdHkoY29uc3Qgc3RkOjpvcHRpb25hbDxSZXNv
dXJjZUxvYWRQcmlvcml0eT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggYjIyMGM0NTJlNGRm
NWQ5YjI5ZDEwYjc0NGVlYjJhYjJiZTJiNGY1ZC4uNDczYWNkNTlmMDM0YTExMmJlZTY0MzUxNWQ2
Y2IyOWI1YjUwMTU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291cmNlUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgb3B0aW9ucywgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHByaW9yaXR5
LCBTdHJpbmcmJiBjaGFyc2V0KQorQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3Jp
dHk+IHByaW9yaXR5LCBTdHJpbmcmJiBjaGFyc2V0KQogICAgIDogbV9yZXNvdXJjZVJlcXVlc3Qo
V1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpKQogICAgICwgbV9jaGFyc2V0KFdURk1vdmUoY2hhcnNl
dCkpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCBhZTRiOTY3NzA0MTE5MjY2
ODc3N2Y1NGQ4YTBiOWU0MTVlNzc1MTQ0Li4wZThhNGMzZmI5M2JlNTEzMjk0ZDRmMDQ1ZTk5ZWY5
YWU3MTA3NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlUmVxdWVzdC5oCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgaXNSZXF1ZXN0Q3Jvc3NP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFJlc291
cmNlCiAKIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gPSBOdWxsb3B0LCBTdHJpbmcm
JiBjaGFyc2V0ID0gU3RyaW5nKCkpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZUxvYWRQcmlvcml0eT4gPSBzdGQ6Om51bGxvcHQsIFN0cmluZyYmIGNoYXJzZXQgPSBT
dHJpbmcoKSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QmJiByZWxlYXNlUmVzb3VyY2VSZXF1ZXN0
KCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc291cmNlUmVxdWVzdCk7IH0KICAgICBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VS
ZXF1ZXN0OyB9CkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCB7
CiAgICAgdm9pZCBzZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYgY2hhcnNldCkgeyBtX2NoYXJzZXQg
PSBjaGFyc2V0OyB9CiAgICAgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAgICAgdm9pZCBzZXRPcHRpb25zKGNvbnN0IFJl
c291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykgeyBtX29wdGlvbnMgPSBvcHRpb25zOyB9Ci0g
ICAgY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBwcmlvcml0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpb3JpdHk7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFJlc291cmNl
TG9hZFByaW9yaXR5PiYgcHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX3ByaW9yaXR5OyB9CiAg
ICAgdm9pZCBzZXRJbml0aWF0b3IoUGFzc1JlZlB0cjxFbGVtZW50Pik7CiAgICAgdm9pZCBzZXRJ
bml0aWF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGluaXRpYXRvck5hbWUoKSBjb25zdDsKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0IHsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVlc3Q7
CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgbV9vcHRp
b25zOwotICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBtX3ByaW9yaXR5OworICAg
IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fcHJpb3JpdHk7CiAgICAgUmVm
UHRyPEVsZW1lbnQ+IG1faW5pdGlhdG9yRWxlbWVudDsKICAgICBBdG9taWNTdHJpbmcgbV9pbml0
aWF0b3JOYW1lOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBjZWIzNGYxMjE4ZWU1YWYxNDAwMjg5ODNh
ZTBiNmFjYWQ5NzQ4Yzc3Li45ZGUxM2Q5ZDY2NzliZWY0OGYyZTQ2N2U1MDdjNWMzNTU0N2NmODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTg0LDggKzg0LDggQEAg
Y2xhc3MgTWF0aE1MRWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50IHsKICAgICAgICAgU3Ry
ZXRjaGVkID0gMTgKICAgICB9OwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxib29sPiBzcGVjaWZp
ZWREaXNwbGF5U3R5bGUoKSB7IHJldHVybiBOdWxsb3B0OyB9Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSB7IHJldHVybiBOdWxsb3B0OyB9
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHNwZWNpZmllZERpc3BsYXlTdHlsZSgp
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxNYXRo
VmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAKaW5kZXggMWE3ZTRh
YjdiNGJjODExNWQ1OWZlN2JkODZhYmFmYWYzZDVhODBiNy4uZWUyMTgxZTM2NDlmMjJmNzI0NmU2
YmM1Y2RmMmQyMWIxNTM0MTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEZyYWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEZyYWN0aW9uRWxlbWVudC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgY29uc3QgTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoJiBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmxpbmVUaGlja25lc3MoKQogICAgIHJl
dHVybiBtX2xpbmVUaGlja25lc3MudmFsdWUoKTsKIH0KIAotTWF0aE1MRnJhY3Rpb25FbGVtZW50
OjpGcmFjdGlvbkFsaWdubWVudCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmNhY2hlZEZyYWN0aW9u
QWxpZ25tZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPEZyYWN0aW9uQWxp
Z25tZW50PiYgYWxpZ25tZW50KQorTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpGcmFjdGlvbkFsaWdu
bWVudCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OmNhY2hlZEZyYWN0aW9uQWxpZ25tZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+JiBh
bGlnbm1lbnQpCiB7CiAgICAgaWYgKGFsaWdubWVudCkKICAgICAgICAgcmV0dXJuIGFsaWdubWVu
dC52YWx1ZSgpOwpAQCAtOTcsMTEgKzk3LDExIEBAIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJh
Y3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpkZW5vbWluYXRvckFsaWduCiB2
b2lkIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9
PSBsaW5ldGhpY2tuZXNzQXR0cikKLSAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gTnVsbG9wdDsK
KyAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gbnVtYWxpZ25BdHRyKQotICAgICAgICBtX251bWVyYXRvckFsaWdubWVudCA9IE51bGxv
cHQ7CisgICAgICAgIG1fbnVtZXJhdG9yQWxpZ25tZW50ID0gc3RkOjpudWxsb3B0OwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gZGVub21hbGlnbkF0dHIpCi0gICAgICAgIG1fZGVub21pbmF0b3JBbGln
bm1lbnQgPSBOdWxsb3B0OworICAgICAgICBtX2Rlbm9taW5hdG9yQWxpZ25tZW50ID0gc3RkOjpu
dWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oCmlu
ZGV4IDNiZjYzYTE4ZDQ2ZjA4Yjg4YWM4ZjE4YmI2ODAwMzI5MjUxMzYwNzQuLmNmZmY1YjZiMzky
ZWZmZTg4NDNkZWY0MjJiNjNlOTJmN2VmNDgzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKQEAgLTQ4LDExICs0OCwxMSBAQCBjbGFzcyBNYXRo
TUxGcmFjdGlvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dCB7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKIAotICAgIEZyYWN0aW9uQWxpZ25tZW50IGNhY2hlZEZyYWN0aW9uQWxpZ25tZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mKTsKKyAg
ICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgc3RkOjpvcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mKTsKIAotICAgIE9wdGlv
bmFsPExlbmd0aD4gbV9saW5lVGhpY2tuZXNzOwotICAgIE9wdGlvbmFsPEZyYWN0aW9uQWxpZ25t
ZW50PiBtX251bWVyYXRvckFsaWdubWVudDsKLSAgICBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVu
dD4gbV9kZW5vbWluYXRvckFsaWdubWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9s
aW5lVGhpY2tuZXNzOworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1fbnVt
ZXJhdG9yQWxpZ25tZW50OworICAgIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1f
ZGVub21pbmF0b3JBbGlnbm1lbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTE1hdGhFbGVtZW50LmNwcAppbmRleCBmNjI2OTQyNzI3ODMxNzk4NjMyNDVlMTI4OGIzMGFl
MWI5NWI5NTE2Li43ODNlOWZmOTU2OTk0OGZhOGM5ZmVjMGVlYjRjYTBlNWJhNTg3YWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJgogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJNYXRoTUxNYXRoPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCi1PcHRpb25hbDxi
b29sPiBNYXRoTUxNYXRoRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0eWxlKCkKK3N0ZDo6b3B0
aW9uYWw8Ym9vbD4gTWF0aE1MTWF0aEVsZW1lbnQ6OnNwZWNpZmllZERpc3BsYXlTdHlsZSgpCiB7
CiAgICAgaWYgKGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoZGlzcGxheXN0eWxlQXR0ciwgbV9kaXNw
bGF5U3R5bGUpID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCkgewogICAgICAgICAvLyBUaGUgZGVm
YXVsdCBkaXNwbGF5c3R5bGUgdmFsdWUgb2YgdGhlIDxtYXRoPiBkZXBlbmRzIG9uIHRoZSBkaXNw
bGF5IGF0dHJpYnV0ZSwgc28gd2UgcGFyc2UgaXQgaGVyZS4KQEAgLTcxLDkgKzcxLDkgQEAgdm9p
ZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3QKICAgICBib29sIGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSA9IChu
YW1lID09IGRpc3BsYXlzdHlsZUF0dHIgfHwgbmFtZSA9PSBkaXNwbGF5QXR0cik7CiAgICAgYm9v
bCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9IG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyOwogICAgIGlm
IChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUpCi0gICAgICAgIG1fZGlzcGxheVN0eWxlID0gTnVsbG9w
dDsKKyAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1hdGhW
YXJpYW50QXR0cmlidXRlKQotICAgICAgICBtX21hdGhWYXJpYW50ID0gTnVsbG9wdDsKKyAgICAg
ICAgbV9tYXRoVmFyaWFudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoKGRpc3BsYXlTdHlsZUF0
dHJpYnV0ZSB8fCBtYXRoVmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVuZGVyZXIoKSkKICAgICAgICAg
TWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKaW5kZXggZmE2YzZlOWI1Mjc1MTc2
YjE4MzdiY2NlMDllOGJiMDY1OWE4NjQzMi4uYTFlMzc3ZTM5MDFlYmFmYTQyYWFmM2VmYmVkNzc4
NDk3MDE5NzRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTWF0aE1MTWF0aEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
TWF0aE1MUm93RWxlbWVudCB7CiAKICAgICBib29sIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1
dGUoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBhY2NlcHRzTWF0aFZhcmlhbnRB
dHRyaWJ1dGUoKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgT3B0aW9uYWw8Ym9vbD4gc3Bl
Y2lmaWVkRGlzcGxheVN0eWxlKCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzcGVj
aWZpZWREaXNwbGF5U3R5bGUoKSBmaW5hbDsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVu
Y2xvc2VFbGVtZW50LmNwcAppbmRleCAxMzMwOTE5MmNlMTQ0YmRlNGVkZTk5ODNlMmYyYTkwNmRj
OWUwNDc2Li43NDNjNDYxMWQzNjk1YmFkYmVhMzQ3NjY0NjFiZDMwYzFjYmYyYjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIGJvb2wgTWF0aE1MTWVuY2xvc2VFbGVtZW50OjpoYXNOb3RhdGlvbihNZW5j
bG9zZU5vdGF0aW9uRmxhZyBub3RhdGlvbkZsYWcpCiB2b2lkIE1hdGhNTE1lbmNsb3NlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBub3RhdGlvbkF0dHIpCi0gICAgICAg
IG1fbm90YXRpb25GbGFncyA9IE51bGxvcHQ7CisgICAgICAgIG1fbm90YXRpb25GbGFncyA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTFJvd0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5j
bG9zZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1l
bnQuaAppbmRleCBlZTc0NWNiYWRmOWY5NzI0ZjQzMmZhZGNmNzg4ZmU1YmIwMWI0ZDZhLi5kYTFk
MmE3NDYyNzYzODc4YjI0NDQ3MGE2NzkyZWJhZjdiMDRlYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNz
IE1hdGhNTE1lbmNsb3NlRWxlbWVudCBmaW5hbDogcHVibGljIE1hdGhNTFJvd0VsZW1lbnQgewog
ICAgIHZvaWQgY2xlYXJOb3RhdGlvbnMoKSB7IG1fbm90YXRpb25GbGFncyA9IDA7IH0KICAgICB2
b2lkIGFkZE5vdGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykgeyBtX25v
dGF0aW9uRmxhZ3MudmFsdWUoKSB8PSBub3RhdGlvbkZsYWc7IH0KICAgICB2b2lkIGFkZE5vdGF0
aW9uRmxhZ3MoU3RyaW5nVmlldyBub3RhdGlvbik7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IG1f
bm90YXRpb25GbGFnczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtX25vdGF0aW9uRmxh
Z3M7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnkuY3BwCmluZGV4IDdhOGEwNTRkNTgwYzBiMTFhYWU4MGNhZWRmZTk0YzhiNWEz
OTQ2MjUuLjY4NTRmMGRhZDdkOWY3NzliZjQ5YTZmOTQ5ODczNzhmNDgwMzRhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCkBA
IC0xMTA3LDE3ICsxMTA3LDE3IEBAIHN0YXRpYyBjb25zdCBVQ2hhcjMyIGhvcml6b250YWxPcGVy
YXRvcnNbXSA9IHsKICAgICAweDAwM0QsIDB4MDA1RSwgMHgwMDVGLCAweDAwN0UsIDB4MDBBRiwg
MHgwMkM2LCAweDAyQzcsIDB4MDJDOSwgMHgwMkNELCAweDAyREMsIDB4MDJGNywgMHgwMzAyLCAw
eDAzMzIsIDB4MjAzRSwgMHgyMEQwLCAweDIwRDEsIDB4MjBENiwgMHgyMEQ3LCAweDIwRTEsIDB4
MjE5MCwgMHgyMTkyLCAweDIxOTQsIDB4MjE5OCwgMHgyMTk5LCAweDIxOUMsIDB4MjE5RCwgMHgy
MTlFLCAweDIxQTAsIDB4MjFBMiwgMHgyMUEzLCAweDIxQTQsIDB4MjFBNiwgMHgyMUE5LCAweDIx
QUEsIDB4MjFBQiwgMHgyMUFDLCAweDIxQUQsIDB4MjFCNCwgMHgyMUI5LCAweDIxQkMsIDB4MjFC
RCwgMHgyMUMwLCAweDIxQzEsIDB4MjFDNCwgMHgyMUM2LCAweDIxQzcsIDB4MjFDOSwgMHgyMUNC
LCAweDIxQ0MsIDB4MjFEMCwgMHgyMUQyLCAweDIxRDQsIDB4MjFEQSwgMHgyMURCLCAweDIxREMs
IDB4MjFERCwgMHgyMUUwLCAweDIxRTIsIDB4MjFFNCwgMHgyMUU1LCAweDIxRTYsIDB4MjFFOCwg
MHgyMUYwLCAweDIxRjYsIDB4MjFGRCwgMHgyMUZFLCAweDIxRkYsIDB4MjNCNCwgMHgyM0I1LCAw
eDIzREMsIDB4MjNERCwgMHgyM0RFLCAweDIzREYsIDB4MjNFMCwgMHgyM0UxLCAweDI1MDAsIDB4
MjdGNSwgMHgyN0Y2LCAweDI3RjcsIDB4MjdGOCwgMHgyN0Y5LCAweDI3RkEsIDB4MjdGQiwgMHgy
N0ZDLCAweDI3RkQsIDB4MjdGRSwgMHgyN0ZGLCAweDI5MEMsIDB4MjkwRCwgMHgyOTBFLCAweDI5
MEYsIDB4MjkxMCwgMHgyOTRFLCAweDI5NTAsIDB4Mjk1MiwgMHgyOTUzLCAweDI5NTYsIDB4Mjk1
NywgMHgyOTVBLCAweDI5NUIsIDB4Mjk1RSwgMHgyOTVGLCAweDJCNDUsIDB4MkI0NiwgMHhGRTM1
LCAweEZFMzYsIDB4RkUzNywgMHhGRTM4LCAweDFFRUYwLCAweDFFRUYxCiB9OwogCi1PcHRpb25h
bDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFyY2goVUNoYXIzMiBjaGFy
YWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCitzdGQ6Om9wdGlvbmFsPFByb3Bl
cnR5PiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OnNlYXJjaChVQ2hhcjMyIGNoYXJhY3Rlciwg
Rm9ybSBmb3JtLCBib29sIGV4cGxpY2l0Rm9ybSkKIHsKICAgICBpZiAoIWNoYXJhY3RlcikKLSAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyBXZSB0cnkgYW5kIGZpbmQgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIG9wZXJhdG9y
IGRpY3Rpb25hcnkuCiAgICAgaWYgKGF1dG8qIGVudHJ5ID0gdHJ5QmluYXJ5U2VhcmNoPGNvbnN0
IEVudHJ5LCBLZXk+KGRpY3Rpb25hcnksIGRpY3Rpb25hcnlTaXplLCBLZXkoY2hhcmFjdGVyLCBm
b3JtKSwgRXh0cmFjdEtleSkpCiAgICAgICAgIHJldHVybiBFeHRyYWN0UHJvcGVydHkoKmVudHJ5
KTsKIAogICAgIGlmIChleHBsaWNpdEZvcm0pCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgd2UgZGlkIG5vdCBmaW5kIHRo
ZSBkZXNpcmVkIG9wZXJhdG9yIGZvcm0gYW5kIGlmIGl0IHdhcyBub3Qgc2V0IGV4cGxpY2l0ZWx5
LCB3ZSB1c2UgdGhlIGZpcnN0IG9uZSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOiBJbmZpeCwgUHJl
Zml4LCBQb3N0Zml4LgogICAgIC8vIFRoaXMgaXMgdG8gaGFuZGxlIGJhZCBNYXRoTUwgbWFya3Vw
IHdpdGhvdXQgZXhwbGljaXQgPG1yb3c+IGRlbGltaXRlcnMgbGlrZSAiPG1vPig8L21vPjxtaT5h
PC9taT48bW8+KTwvbW8+PG1vPig8L21vPjxtaT5iPC9taT48bW8+KTwvbW8+IiB3aGVyZSBpbm5l
cmZlbmNlcyBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgaW5maXguCkBAIC0xMTMwLDcgKzExMzAs
NyBAQCBPcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFyY2go
VUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybQogICAgICAgICByZXR1cm4gRXh0cmFjdFByb3Bl
cnR5KCplbnRyeSk7CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmlzVmVydGlj
YWwoVUNoYXIzMiB0ZXh0Q29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnkuaAppbmRleCAwMGVmNTBkNjhjN2VkMzRjMzIxMjYzMjdhYjY5
ZjlmYWM5ZjRkZTFiLi5lMDMxNmQ3MTQ1MGYyYjI3N2FiMmY3NDQwZDI3ZDgyM2NiYTA5MjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5o
CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBQcm9wZXJ0eSB7CiAgICAgLy8gRGVmYXVsdCBvcGVy
YXRvciBwcm9wZXJ0aWVzIGFyZSBhbGwgc2V0IHRvICJmYWxzZSIuCiAgICAgdW5zaWduZWQgc2hv
cnQgZmxhZ3MgeyAwIH07CiB9OwotT3B0aW9uYWw8UHJvcGVydHk+IHNlYXJjaChVQ2hhcjMyLCBG
b3JtLCBib29sIGV4cGxpY2l0Rm9ybSk7CitzdGQ6Om9wdGlvbmFsPFByb3BlcnR5PiBzZWFyY2go
VUNoYXIzMiwgRm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pOwogYm9vbCBpc1ZlcnRpY2FsKFVDaGFy
MzIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0
b3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1l
bnQuY3BwCmluZGV4IDk2OGFmZTFlZGUzNjNmY2U5MzhlYTQ3NGNjNGYxZDc4MmE0MTQyYzMuLjhk
MzViZTMwMDM5ZjI0MTQ1MzQxOWZjZDgwMWU4Njg3NDkxOWUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwCkBAIC0xMzMsNyArMTMzLDcg
QEAgdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNvbXB1dGVPcGVyYXRvckZsYWcoTWF0aE1M
T3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnIGYKIHsKICAgICBBU1NFUlQobV9wcm9wZXJ0aWVzLmRp
cnR5RmxhZ3MgJiBmbGFnKTsKIAotICAgIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gcHJvcGVydHk7
CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuVmFsdWU+IHByb3BlcnR5OwogICAgIGNvbnN0IGF1
dG8mIG5hbWUgPSBwcm9wZXJ0eUZsYWdUb0F0dHJpYnV0ZU5hbWUoZmxhZyk7CiAgICAgY29uc3Qg
Qm9vbGVhblZhbHVlJiB2YWx1ZSA9IGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUobmFtZSwgcHJvcGVy
dHkpOwogICAgIHN3aXRjaCAodmFsdWUpIHsKQEAgLTIxMSwxMyArMjExLDEzIEBAIGNvbnN0IE1h
dGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjptYXhTaXplKCkKIAog
dm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYgY2hhbmdlKQogewotICAgIG1fb3BlcmF0b3JDaGFyID0gTnVsbG9wdDsKLSAgICBtX2Rp
Y3Rpb25hcnlQcm9wZXJ0eSA9IE51bGxvcHQ7CisgICAgbV9vcGVyYXRvckNoYXIgPSBzdGQ6Om51
bGxvcHQ7CisgICAgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9w
cm9wZXJ0aWVzLmRpcnR5RmxhZ3MgPSBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmFsbEZsYWdz
OwogICAgIE1hdGhNTFRva2VuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiB9CiAK
LXN0YXRpYyBPcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWc+IGF0dHJpYnV0
ZU5hbWVUb1Byb3BlcnR5RmxhZyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnPiBhdHRyaWJ1dGVOYW1l
VG9Qcm9wZXJ0eUZsYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBhY2NlbnRBdHRyKQogICAgICAgICByZXR1cm4gQWNjZW50OwpAQCAtMjMzLDI0ICsyMzMs
MjQgQEAgc3RhdGljIE9wdGlvbmFsPE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZz4gYXR0
cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKGNvbnMKICAgICAgICAgcmV0dXJuIFN0cmV0Y2h5Owog
ICAgIGlmIChuYW1lID09IHN5bW1ldHJpY0F0dHIpCiAgICAgICAgIHJldHVybiBTeW1tZXRyaWM7
Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
Zm9ybUF0dHIpIHsKLSAgICAgICAgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBOdWxsb3B0OworICAg
ICAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9wcm9w
ZXJ0aWVzLmRpcnR5RmxhZ3MgPSBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmFsbEZsYWdzOwog
ICAgIH0gZWxzZSBpZiAoYXV0byBmbGFnID0gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKG5h
bWUpKQogICAgICAgICBtX3Byb3BlcnRpZXMuZGlydHlGbGFncyB8PSBmbGFnLnZhbHVlKCk7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSBsc3BhY2VBdHRyKQotICAgICAgICBtX2xlYWRpbmdTcGFjZSA9
IE51bGxvcHQ7CisgICAgICAgIG1fbGVhZGluZ1NwYWNlID0gc3RkOjpudWxsb3B0OwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gcnNwYWNlQXR0cikKLSAgICAgICAgbV90cmFpbGluZ1NwYWNlID0gTnVs
bG9wdDsKKyAgICAgICAgbV90cmFpbGluZ1NwYWNlID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gbWluc2l6ZUF0dHIpCi0gICAgICAgIG1fbWluU2l6ZSA9IE51bGxvcHQ7Cisg
ICAgICAgIG1fbWluU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IG1h
eHNpemVBdHRyKQotICAgICAgICBtX21heFNpemUgPSBOdWxsb3B0OworICAgICAgICBtX21heFNp
emUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKG5hbWUgPT0gc3RyZXRjaHlBdHRyIHx8IG5h
bWUgPT0gbHNwYWNlQXR0ciB8fCBuYW1lID09IHJzcGFjZUF0dHIgfHwgbmFtZSA9PSBtb3ZhYmxl
bGltaXRzQXR0cikgJiYgcmVuZGVyZXIoKSkgewogICAgICAgICBkb3duY2FzdDxSZW5kZXJNYXRo
TUxPcGVyYXRvcj4oKnJlbmRlcmVyKCkpLnVwZGF0ZUZyb21FbGVtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmgKaW5kZXggMzgwOTY1NzBlOWU0
NTZkODFmOTM5MTc1ZDFkNDIwYjM0ODg5MjgyMS4uNWRlZmQ3N2ZlZTFhZThlMDIyYmRkZDQxNDI4
MDYyNDExMmQ4OWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9w
ZXJhdG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRv
ckVsZW1lbnQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBNYXRoTUxPcGVyYXRvckVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgTWF0aE1MVG9rZW5FbGVtZW50IHsKICAgICB9OwogICAgIHN0YXRpYyBP
cGVyYXRvckNoYXIgcGFyc2VPcGVyYXRvckNoYXIoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3Qg
T3BlcmF0b3JDaGFyJiBvcGVyYXRvckNoYXIoKTsKLSAgICB2b2lkIHNldE9wZXJhdG9yRm9ybURp
cnR5KCkgeyBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IE51bGxvcHQ7IH0KKyAgICB2b2lkIHNldE9w
ZXJhdG9yRm9ybURpcnR5KCkgeyBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IHN0ZDo6bnVsbG9wdDsg
fQogICAgIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6Rm9ybSBmb3JtKCkgeyByZXR1cm4gZGlj
dGlvbmFyeVByb3BlcnR5KCkuZm9ybTsgfQogICAgIGJvb2wgaGFzUHJvcGVydHkoTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5OjpGbGFnKTsKICAgICBMZW5ndGggZGVmYXVsdExlYWRpbmdTcGFjZSgp
OwpAQCAtNTcsOSArNTcsOSBAQCBjbGFzcyBNYXRoTUxPcGVyYXRvckVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgTWF0aE1MVG9rZW5FbGVtZW50IHsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8
T3BlcmF0b3JDaGFyPiBtX29wZXJhdG9yQ2hhcjsKKyAgICBzdGQ6Om9wdGlvbmFsPE9wZXJhdG9y
Q2hhcj4gbV9vcGVyYXRvckNoYXI7CiAKLSAgICBPcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OlByb3BlcnR5PiBtX2RpY3Rpb25hcnlQcm9wZXJ0eTsKKyAgICBzdGQ6Om9wdGlvbmFs
PE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6UHJvcGVydHk+IG1fZGljdGlvbmFyeVByb3BlcnR5
OwogICAgIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6UHJvcGVydHkgY29tcHV0ZURpY3Rpb25h
cnlQcm9wZXJ0eSgpOwogICAgIGNvbnN0IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6UHJvcGVy
dHkmIGRpY3Rpb25hcnlQcm9wZXJ0eSgpOwogCkBAIC03MCwxMCArNzAsMTAgQEAgY2xhc3MgTWF0
aE1MT3BlcmF0b3JFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTFRva2VuRWxlbWVudCB7CiAg
ICAgT3BlcmF0b3JQcm9wZXJ0aWVzIG1fcHJvcGVydGllczsKICAgICB2b2lkIGNvbXB1dGVPcGVy
YXRvckZsYWcoTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKTsKIAotICAgIE9wdGlvbmFs
PExlbmd0aD4gbV9sZWFkaW5nU3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3RyYWlsaW5n
U3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX21pblNpemU7Ci0gICAgT3B0aW9uYWw8TGVu
Z3RoPiBtX21heFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fbGVhZGluZ1NwYWNl
OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3RyYWlsaW5nU3BhY2U7CisgICAgc3RkOjpv
cHRpb25hbDxMZW5ndGg+IG1fbWluU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9t
YXhTaXplOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFBhZGRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVs
ZW1lbnQuY3BwCmluZGV4IDQ5YzA2ZWQyNTc3NzQwMGZhNzBkZjJjNzIzODNiMGI4NzEwNDljYTEu
LmIyZjQ0NmQ4M2NlMzAzYmI2ZjI3MmEyMTE4YmY2ZTNlNWQ4YmQ5MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAKQEAgLTczLDE1ICs3MywxNSBA
QCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFBhZGRlZEVsZW1lbnQ6OnZvZmZz
ZXQoKQogdm9pZCBNYXRoTUxQYWRkZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChu
YW1lID09IHdpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aCA9IE51bGxvcHQ7CisgICAgICAgIG1f
d2lkdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKQot
ICAgICAgICBtX2hlaWdodCA9IE51bGxvcHQ7CisgICAgICAgIG1faGVpZ2h0ID0gc3RkOjpudWxs
b3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVwdGhBdHRyKQotICAgICAgICBtX2RlcHRoID0g
TnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChu
YW1lID09IGxzcGFjZUF0dHIpCi0gICAgICAgIG1fbHNwYWNlID0gTnVsbG9wdDsKKyAgICAgICAg
bV9sc3BhY2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSB2b2Zmc2V0QXR0
cikKLSAgICAgICAgbV92b2Zmc2V0ID0gTnVsbG9wdDsKKyAgICAgICAgbV92b2Zmc2V0ID0gc3Rk
OjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKaW5k
ZXggMTE2YmIyNWU5MTBkN2VhN2NmYzFjMmM1YjJkMmI3ZTQ0Nzg2OWU5ZC4uN2NhMzczZTQ1YTFh
MmQ1ZDYyN2UxZjI3OTExODRiNjM2N2U3OTE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MUGFkZGVkRWxlbWVudC5oCkBAIC00NSwxMSArNDUsMTEgQEAgY2xhc3MgTWF0aE1MUGFk
ZGVkRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxSb3dFbGVtZW50IHsKICAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAg
T3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9oZWlnaHQ7
Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9s
c3BhY2U7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3ZvZmZzZXQ7CisgICAgc3RkOjpvcHRpb25h
bDxMZW5ndGg+IG1fd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOworICAgIHN0ZDo6b3B0aW9uYWw8TGVu
Z3RoPiBtX2xzcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV92b2Zmc2V0OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQuY3BwCmluZGV4IDkzNTVkMzgzMGJmZDQwMDMxZGM0NjZiMDZhYTMxNTYyOTY1Mjk0ZGUu
LmRlOWJkNWQxYTc0ODQzZmMxODM5ODNkOTAxNzNhNjc0M2RmMmRiMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKQEAgLTE4
Miw3ICsxODIsNyBAQCBib29sIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmlzRmxvd0NvbnRl
bnQoY29uc3QgTm9kZSYgbm9kZSkKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OnVsVGFnKTsKIH0KIAotY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVl
JiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mIGF0dHJpYnV0ZSkK
K2NvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBz
dGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mIGF0dHJpYnV0ZSkKIHsKICAgICBpZiAoYXR0cmli
dXRlKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlLnZhbHVlKCk7CkBAIC0zMDYsNyArMzA2LDcg
QEAgTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNl
TWF0aE1MTGVuZ3RoKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcGFyc2VOYW1lZFNwYWNlKHN0
cmluZ1ZpZXcpOwogfQogCi1jb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBPcHRpb25hbDxMZW5ndGg+JiBsZW5ndGgpCitjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5n
dGgmIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPExlbmd0aD4mIGxlbmd0aCkKIHsKICAg
ICBpZiAobGVuZ3RoKQogICAgICAgICByZXR1cm4gbGVuZ3RoLnZhbHVlKCk7CkBAIC0zMTksMTAg
KzMxOSwxMCBAQCBib29sIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmFjY2VwdHNEaXNwbGF5
U3R5bGVBdHRyaWJ1dGUoKQogICAgIHJldHVybiBoYXNUYWdOYW1lKG10YWJsZVRhZyk7CiB9CiAK
LU9wdGlvbmFsPGJvb2w+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZERpc3Bs
YXlTdHlsZSgpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6
OnNwZWNpZmllZERpc3BsYXlTdHlsZSgpCiB7CiAgICAgaWYgKCFhY2NlcHRzRGlzcGxheVN0eWxl
QXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgc3BlY2lm
aWVkRGlzcGxheVN0eWxlID0gY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShkaXNwbGF5c3R5bGVBdHRy
LCBtX2Rpc3BsYXlTdHlsZSk7CiAgICAgcmV0dXJuIHRvT3B0aW9uYWxCb29sKHNwZWNpZmllZERp
c3BsYXlTdHlsZSk7CiB9CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBNYXRoTUxFbGVtZW50OjpNYXRo
VmFyaWFudCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0cmli
dXRlKAogICAgIHJldHVybiBNYXRoVmFyaWFudDo6Tm9uZTsKIH0KIAotT3B0aW9uYWw8TWF0aE1M
RWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmll
ZE1hdGhWYXJpYW50KCkKK3N0ZDo6b3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+
IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKIHsKICAg
ICBpZiAoIWFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIW1fbWF0aFZhcmlh
bnQpCiAgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obWF0aHZhcmlhbnRBdHRyKSk7Ci0gICAgcmV0
dXJuIG1fbWF0aFZhcmlhbnQudmFsdWUoKSA9PSBNYXRoVmFyaWFudDo6Tm9uZSA/IE51bGxvcHQg
OiBtX21hdGhWYXJpYW50OworICAgIHJldHVybiBtX21hdGhWYXJpYW50LnZhbHVlKCkgPT0gTWF0
aFZhcmlhbnQ6Ok5vbmUgPyBzdGQ6Om51bGxvcHQgOiBtX21hdGhWYXJpYW50OwogfQogCiB2b2lk
IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0zODMsOSArMzgzLDkg
QEAgdm9pZCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAogICAgIGJvb2wgZGlzcGxheVN0eWxlQXR0cmlidXRl
ID0gbmFtZSA9PSBkaXNwbGF5c3R5bGVBdHRyICYmIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1
dGUoKTsKICAgICBib29sIG1hdGhWYXJpYW50QXR0cmlidXRlID0gbmFtZSA9PSBtYXRodmFyaWFu
dEF0dHIgJiYgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCk7CiAgICAgaWYgKGRpc3BsYXlT
dHlsZUF0dHJpYnV0ZSkKLSAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBOdWxsb3B0OworICAgICAg
ICBtX2Rpc3BsYXlTdHlsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobWF0aFZhcmlhbnRBdHRy
aWJ1dGUpCi0gICAgICAgIG1fbWF0aFZhcmlhbnQgPSBOdWxsb3B0OworICAgICAgICBtX21hdGhW
YXJpYW50ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICgoZGlzcGxheVN0eWxlQXR0cmlidXRlIHx8
IG1hdGhWYXJpYW50QXR0cmlidXRlKSAmJiByZW5kZXJlcigpKQogICAgICAgICBNYXRoTUxTdHls
ZTo6cmVzb2x2ZU1hdGhNTFN0eWxlVHJlZShyZW5kZXJlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKaW5kZXggMWFmOGI4MWQx
ZGIzMGYzZjBiNWY1NzczMGY0YzlhMjRjMWU4MzljMS4uMjM3MDU1N2I0Y2MyZWRhMDEzYjYyZDQw
MDUwZWMzNmU0YjI1ZmUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
UHJlc2VudGF0aW9uRWxlbWVudC5oCkBAIC00NCwyMCArNDQsMjAgQEAgY2xhc3MgTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudCA6IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKICAgICBzdGF0aWMgYm9v
bCBpc1BocmFzaW5nQ29udGVudChjb25zdCBOb2RlJik7CiAgICAgc3RhdGljIGJvb2wgaXNGbG93
Q29udGVudChjb25zdCBOb2RlJik7CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gdG9PcHRp
b25hbEJvb2woY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gQm9v
bGVhblZhbHVlOjpEZWZhdWx0ID8gTnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+KHZhbHVlID09IEJv
b2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KLSAgICBjb25zdCBCb29sZWFuVmFsdWUmIGNhY2hlZEJvb2xl
YW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4m
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9vbChjb25zdCBC
b29sZWFuVmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1
bHQgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+KHZhbHVlID09IEJvb2xlYW5W
YWx1ZTo6VHJ1ZSk7IH0KKyAgICBjb25zdCBCb29sZWFuVmFsdWUmIGNhY2hlZEJvb2xlYW5BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiYp
OwogCiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJpbmcmKTsK
LSAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1l
JiwgT3B0aW9uYWw8TGVuZ3RoPiYpOworICAgIGNvbnN0IExlbmd0aCYgY2FjaGVkTWF0aE1MTGVu
Z3RoKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBzdGQ6Om9wdGlvbmFsPExlbmd0aD4mKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCk7Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxlKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxib29sPiBzcGVjaWZpZWREaXNwbGF5U3R5bGUoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgYm9vbCBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgpIGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgZmlu
YWw7CiAKLSAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IG1fZGlzcGxheVN0eWxlOwotICAgIE9w
dGlvbmFsPE1hdGhWYXJpYW50PiBtX21hdGhWYXJpYW50OworICAgIHN0ZDo6b3B0aW9uYWw8Qm9v
bGVhblZhbHVlPiBtX2Rpc3BsYXlTdHlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hdGhWYXJpYW50
PiBtX21hdGhWYXJpYW50OwogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlw
dHNFbGVtZW50LmNwcAppbmRleCBjOGI5MWYwMzU2Y2Q2Nzk0NTIzNzYyYTIwYzZiNGMwODNhNjMz
YzQxLi4zOTNlZGMxMTI5MzAwOWVhYzVkMDQ0OTg1MWNkM2MyZDc2Yzk4NDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAKQEAgLTU4LDkgKzU4
LDkgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTY3JpcHRzRWxlbWVudDo6
c3VwZXJzY3JpcHRTaGlmdCgpCiB2b2lkIE1hdGhNTFNjcmlwdHNFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogewogICAgIGlmIChuYW1lID09IHN1YnNjcmlwdHNoaWZ0QXR0cikKLSAgICAgICAgbV9zdWJz
Y3JpcHRTaGlmdCA9IE51bGxvcHQ7CisgICAgICAgIG1fc3Vic2NyaXB0U2hpZnQgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBzdXBlcnNjcmlwdHNoaWZ0QXR0cikKLSAgICAg
ICAgbV9zdXBlcnNjcmlwdFNoaWZ0ID0gTnVsbG9wdDsKKyAgICAgICAgbV9zdXBlcnNjcmlwdFNo
aWZ0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFNjcmlwdHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQuaAppbmRleCA2M2M5ZDg4MGZkYmVkNzk5Y2RlN2E0OWE3YjU1MDk4YmNmMmUzMTJhLi5i
NGE2MDg5ZjBkODI5MDBiMGYzNGE1YzU1ZWRjZjQ1ZDdiNTU4MzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaApAQCAtNDQsOCArNDQsOCBAQCBjbGFz
cyBNYXRoTUxTY3JpcHRzRWxlbWVudCA6IHB1YmxpYyBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
IHsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3N1YnNjcmlwdFNoaWZ0Owot
ICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdXBlcnNjcmlwdFNoaWZ0OworICAgIHN0ZDo6b3B0aW9u
YWw8TGVuZ3RoPiBtX3N1YnNjcmlwdFNoaWZ0OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBt
X3N1cGVyc2NyaXB0U2hpZnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTcGFjZUVsZW1lbnQuY3BwCmluZGV4IGY4OTI1OTVlNzQ0Nzg0ZmFkNzNmZDJiZWU4Nzc1Nzhm
ZTNlMDNlZTUuLjk2ZTliOTA3NDdiZTk1ODY2NzQ1ZjYwYTk3YWEwYTQ3Y2M3MjE1NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCkBAIC02MywxMSAr
NjMsMTEgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTcGFjZUVsZW1lbnQ6
OmRlcHRoKCkKIHZvaWQgTWF0aE1MU3BhY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlm
IChuYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aCA9IE51bGxvcHQ7CisgICAgICAg
IG1fd2lkdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRy
KQotICAgICAgICBtX2hlaWdodCA9IE51bGxvcHQ7CisgICAgICAgIG1faGVpZ2h0ID0gc3RkOjpu
dWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVwdGhBdHRyKQotICAgICAgICBtX2RlcHRo
ID0gTnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaAppbmRleCAwMjc4N2E3MGQz
MGJmN2I4MTg4OTRkY2IzY2YzMTMwOWMxZmJjMjhjLi4zZjE2Zjc4NTE3MjlkYjcyZmVmZWY1NzI5
ZDgyMDUyZTNlZDU5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
U3BhY2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxl
bWVudC5oCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIE1hdGhNTFNwYWNlRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50IHsKIAogICAgIGJvb2wgYWNjZXB0c0Rp
c3BsYXlTdHlsZUF0dHJpYnV0ZSgpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBPcHRp
b25hbDxMZW5ndGg+IG1fd2lkdGg7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2hlaWdodDsKLSAg
ICBPcHRpb25hbDxMZW5ndGg+IG1fZGVwdGg7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1f
d2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OworICAgIHN0ZDo6b3B0
aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVG9rZW5FbGVtZW50LmNwcAppbmRleCA0MzVhZjEzNjAzNjI0NjkyNmNhZWE4YzU2ZTUy
OWVhMDI5M2IzNzMzLi5jZTFjY2E2YThlM2FhNzQyMWJiODljZWJkZjQ1Zjg0NTZlYzYwZTQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNwcApAQCAtNzcs
MTUgKzc3LDE1IEBAIGJvb2wgTWF0aE1MVG9rZW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBpc1BocmFzaW5nQ29u
dGVudChjaGlsZCkgJiYgU3R5bGVkRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
aGlsZCk7CiB9CiAKLU9wdGlvbmFsPFVDaGFyMzI+IE1hdGhNTFRva2VuRWxlbWVudDo6Y29udmVy
dFRvU2luZ2xlQ29kZVBvaW50KFN0cmluZ1ZpZXcgc3RyaW5nKQorc3RkOjpvcHRpb25hbDxVQ2hh
cjMyPiBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludChTdHJpbmdW
aWV3IHN0cmluZykKIHsKICAgICBhdXRvIGNvZGVQb2ludHMgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ1doaXRlc3BhY2Uoc3RyaW5nKS5jb2RlUG9pbnRzKCk7CiAgICAgYXV0byBpdGVyYXRvciA9
IGNvZGVQb2ludHMuYmVnaW4oKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gY29kZVBvaW50cy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8VUNoYXIzMj4gY2hhcmFj
dGVyID0gKml0ZXJhdG9yOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6
b3B0aW9uYWw8VUNoYXIzMj4gY2hhcmFjdGVyID0gKml0ZXJhdG9yOwogICAgICsraXRlcmF0b3I7
Ci0gICAgcmV0dXJuIGl0ZXJhdG9yID09IGNvZGVQb2ludHMuZW5kKCkgPyBjaGFyYWN0ZXIgOiBO
dWxsb3B0OworICAgIHJldHVybiBpdGVyYXRvciA9PSBjb2RlUG9pbnRzLmVuZCgpID8gY2hhcmFj
dGVyIDogc3RkOjpudWxsb3B0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VG9rZW5FbGVtZW50LmgKaW5kZXggNGQ0MmMwNzAzZDY1OTJiNzZkZDNlZjFhN2M2MjQxYjNmYWI3
YzBmOC4uYmVkNDBmM2NmZmI3OGYyOTQ1MTQ1MzEzNTIwMzUzYmE5MWI0ZDc2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBj
bGFzcyBNYXRoTUxUb2tlbkVsZW1lbnQgOiBwdWJsaWMgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNYXRoTUxUb2tlbkVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgc3RhdGljIE9w
dGlvbmFsPFVDaGFyMzI+IGNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludChTdHJpbmdWaWV3KTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQo
U3RyaW5nVmlldyk7CiAKIHByb3RlY3RlZDoKICAgICBNYXRoTUxUb2tlbkVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAppbmRleCA1Y2NjMGM1MmRhYmJkNTRj
MzVhNmIwZmQ4OTUwYjUzMzMxMmZmZmRhLi4xNDEzYWFkNjE3ZDQ2NGM1NTBiMzg0ZjIyNGE5Yjlj
ZTUzNTQ4ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJP
dmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3Zl
ckVsZW1lbnQuY3BwCkBAIC01OCw5ICs1OCw5IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xl
YW5WYWx1ZSYgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6YWNjZW50VW5kZXIoKQogdm9pZCBNYXRo
TUxVbmRlck92ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGFjY2Vu
dEF0dHIpCi0gICAgICAgIG1fYWNjZW50ID0gTnVsbG9wdDsKKyAgICAgICAgbV9hY2NlbnQgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBhY2NlbnR1bmRlckF0dHIpCi0gICAg
ICAgIG1fYWNjZW50VW5kZXIgPSBOdWxsb3B0OworICAgICAgICBtX2FjY2VudFVuZGVyID0gc3Rk
OjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3Zl
ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50
LmgKaW5kZXggOWVjNmRiNzAwMmM1MDBjNDQ2ZmVkNDZjN2Y5NDEyODA0YmU5M2YyYi4uMDdmNGQ5
NmY4NjA3ZmY5ZjIxOTkzMmRlYjZiMjcyZjZkNDU4OWNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oCkBAIC00Miw4ICs0Miw4IEBAIGNsYXNz
IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MU2NyaXB0c0VsZW1l
bnQgewogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IG1fYWNjZW50OwotICAgIE9w
dGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9hY2NlbnRVbmRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJv
b2xlYW5WYWx1ZT4gbV9hY2NlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuVmFsdWU+IG1f
YWNjZW50VW5kZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA1
MTdiMWE4OGZlMjc0ZjRkOTM1YWExZDkwZmE0YzViOTlhOTY3MGM1Li45YzU1ZWM3MjU4M2FhYzNm
NDE5N2M5OTFlNmRlN2FjNzJlMzhjZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
QEAgLTM5MCw3ICszOTAsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBDaHJvbWVDbGllbnQgewog
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0
IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHls
ZURpZENoYW5nZShTY3JvbGxiYXJTdHlsZSkgeyB9CiAKLSAgICB2aXJ0dWFsIFdURjo6T3B0aW9u
YWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUo
KSB7IHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OyB9CisgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVycmVkU2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCkgeyByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCBoYXNIYW5kbGVy
cykgPSAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGlt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggZDAzYzFiMDJm
ZTYwMjNiNjIzMTdjMzExZDM2YzNkYTVmYWRjNGZkNS4uYTk2OWQ5NDhlN2UzOWMwMjY5YzVhMzBm
ZjljZDAxN2M5MmRkOTU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTQyNiwxMSAr
NDI2LDExIEBAIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgRE9NVGltZXI6OmludGVydmFsQ2xh
bXBlZFRvTWluaW11bSgpIGNvbnN0CiAgICAgcmV0dXJuIGludGVydmFsOwogfQogCi1PcHRpb25h
bDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBET01UaW1lcjo6YWxpZ25lZEZpcmVUaW1lKHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZmlyZVRpbWUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+IERPTVRpbWVyOjphbGlnbmVkRmlyZVRpbWUoc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcyBmaXJlVGltZSkgY29uc3QKIHsKICAgICBhdXRvIGFsaWdubWVu
dEludGVydmFsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT50aW1lckFsaWdubWVudEludGVy
dmFsKG1fbmVzdGluZ0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xldmVsKTsKICAgICBpZiAoYWxp
Z25tZW50SW50ZXJ2YWwgPT0gMG1zKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHJhbmRv
bWl6ZWRQcm9wb3J0aW9uID0gcmFuZG9tTnVtYmVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaApp
bmRleCA5NmM4YjNiYjY1YTdmY2YyNjdlOGUwYWRlNmNmY2UwZmI5YWRhN2Q0Li4zOWEwNDYxZGFl
ZWVlMjVlYWJhMzM5OTZlN2EwZGM4ZGQ5MWE2Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCkBA
IC03MSw3ICs3MSw3IEBAIGNsYXNzIERPTVRpbWVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8
RE9NVGltZXI+LCBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CiAgICAgLy8gU3VzcGVuZGFibGVU
aW1lcgogICAgIHZvaWQgZmlyZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFN0b3AoKSBvdmVy
cmlkZTsKLSAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBhbGlnbmVkRmly
ZVRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcykgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBhbGlnbmVkRmlyZVRpbWUoc3Rk
OjpjaHJvbm86Om1pbGxpc2Vjb25kcykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBY3RpdmVE
T01PYmplY3QgQVBJLgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyYTkzOTNhZjhiNjhi
ZmViYWExZDZmMGFjNGI2Y2FmOGRlNjkyOTdiLi5lNDU3MGUxNGZhZmQ5ZWZiMTkzMzY5M2ZhM2Vi
YmRjMmM3NGU0MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNTIyLDcgKzE1
MjIsNyBAQCBkb3VibGUgRE9NV2luZG93OjpkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3QKIAogdm9p
ZCBET01XaW5kb3c6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucykgY29u
c3QKIHsKLSAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlT3IoMCksIG9wdGlv
bnMudG9wLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFs
dWVfb3IoMCksIG9wdGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAogdm9pZCBET01XaW5kb3c6
OnNjcm9sbEJ5KGRvdWJsZSB4LCBkb3VibGUgeSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CmluZGV4IGM5ZjliYmM5M2FkMDNlN2E4NWZkZmEyYzFiNmQ1N2VhZmNhNzM0ZmEuLjU5NWIzY2Uy
MzE1MGFlMzc2MzIxYWY5YWU3MjUyYzRkMTQyZjRjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aApAQCAtMzcwLDcgKzM3MCw3IEBAIGNsYXNzIERPTVdpbmRvdyBmaW5hbAogCiAgICAgYm9vbCBt
X3Nob3VsZFByaW50V2hlbkZpbmlzaGVkTG9hZGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N1
c3BlbmRlZEZvckRvY3VtZW50U3VzcGVuc2lvbiB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8Ym9v
bD4gbV9jYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1fY2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGU7CiAKICAgICBIYXNoU2V0PERPTVdpbmRvd1By
b3BlcnR5Kj4gbV9wcm9wZXJ0aWVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmlu
ZGV4IDQ3NDIyODgwNzJjZTVhNWExZWI3YTkwNGY1MjE1MzNmNWU1MjQ1YzcuLmQ1NTU1ZWQyYzBm
YjU3Yjk2M2I3YjYwMDIxOTg3MTcxMjZmNjVmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuY3BwCkBAIC0yODAsOCArMjgwLDggQEAgdm9pZCBFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0
cmVhbSgpCiAgICAgICAgICAgICBtX2Rpc2NhcmRUcmFpbGluZ05ld2xpbmUgPSBmYWxzZTsKICAg
ICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsaW5lTGVuZ3RoOwotICAgICAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGxpbmVMZW5ndGg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZp
ZWxkTGVuZ3RoOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBwb3NpdGlvbjsgIWxpbmVMZW5n
dGggJiYgaSA8IHNpemU7ICsraSkgewogICAgICAgICAgICAgc3dpdGNoIChtX3JlY2VpdmVCdWZm
ZXJbaV0pIHsKICAgICAgICAgICAgIGNhc2UgJzonOgpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQg
RXZlbnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW0oKQogICAgICAgICBtX3JlY2VpdmVCdWZmZXIu
cmVtb3ZlKDAsIHBvc2l0aW9uKTsKIH0KIAotdm9pZCBFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0
cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExlbmd0
aCwgdW5zaWduZWQgbGluZUxlbmd0aCkKK3ZvaWQgRXZlbnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJl
YW1MaW5lKHVuc2lnbmVkIHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExl
bmd0aCwgdW5zaWduZWQgbGluZUxlbmd0aCkKIHsKICAgICBpZiAoIWxpbmVMZW5ndGgpIHsKICAg
ICAgICAgaWYgKCFtX2RhdGEuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmlu
ZGV4IDAzYWVjMmJiMzFiOGFhZTUyOTRiNmY3OTk4NDY4ZGRiOTE2YTk4ZGQuLjJiZTNmOWYxYjc1
ZDM5ZDUzYjJmZTM5MTI5M2Y1OGNjMGYxODI3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgRXZlbnRTb3VyY2UgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxFdmVudFNvdXJjZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGgKICAgICB2b2lkIHNj
aGVkdWxlUmVjb25uZWN0KCk7CiAgICAgdm9pZCBhYm9ydENvbm5lY3Rpb25BdHRlbXB0KCk7CiAg
ICAgdm9pZCBwYXJzZUV2ZW50U3RyZWFtKCk7Ci0gICAgdm9pZCBwYXJzZUV2ZW50U3RyZWFtTGlu
ZSh1bnNpZ25lZCBwb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoLCB1bnNp
Z25lZCBsaW5lTGVuZ3RoKTsKKyAgICB2b2lkIHBhcnNlRXZlbnRTdHJlYW1MaW5lKHVuc2lnbmVk
IHBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExlbmd0aCwgdW5zaWduZWQg
bGluZUxlbmd0aCk7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudCgpOwogCiAgICAgYm9v
bCByZXNwb25zZUlzVmFsaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGE2MTlhMGIyNjVhNzY3NTQwMGZkMmUyODlkNjMwZmJl
ZDk1NGY2MjEuLjYxYjg4YzllNzBlMWRlNTJkYzMxNjdmYmI2NTQyZjcxYzEyODFiMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIEZyYW1lVmll
dzo6ZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpCiB2b2lkIEZyYW1lVmlldzo6cmVjYWxjdWxhdGVT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKQogewogICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBvbGRP
dmVybGF5U3R5bGUgPSBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKLSAgICBXVEY6Ok9wdGlvbmFs
PFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gY2xpZW50T3ZlcmxheVN0eWxlID0gZnJhbWUoKS5wYWdl
KCkgPyBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucHJlZmVycmVkU2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKCkgOiBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OworICAgIHN0ZDo6
b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBjbGllbnRPdmVybGF5U3R5bGUgPSBmcmFt
ZSgpLnBhZ2UoKSA/IGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5wcmVmZXJyZWRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKSA6IFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7CiAg
ICAgaWYgKGNsaWVudE92ZXJsYXlTdHlsZSkgewogICAgICAgICBpZiAoY2xpZW50T3ZlcmxheVN0
eWxlLnZhbHVlKCkgIT0gb2xkT3ZlcmxheVN0eWxlKQogICAgICAgICAgICAgc2V0U2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKGNsaWVudE92ZXJsYXlTdHlsZS52YWx1ZSgpKTsKQEAgLTE4MzEsNyArMTgz
MSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRCYXNlTGF5b3V0Vmlld3BvcnRPcmlnaW4oTGF5b3V0
UG9pbnQgb3JpZ2luLCBUcmlnZ2VyTGF5b3V0T3JOCiAgICAgfQogfQogCi12b2lkIEZyYW1lVmll
dzo6c2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoT3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVj
dCkKK3ZvaWQgRnJhbWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om9w
dGlvbmFsPExheW91dFJlY3Q+IHJlY3QpCiB7CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlvdXRWaWV3
cG9ydE92ZXJyaWRlUmVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTE1NSw3ICs1MTU1LDcgQEAg
dm9pZCBGcmFtZVZpZXc6Om5vdGlmeVdpZGdldHMoV2lkZ2V0Tm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbikKICAgICAgICAgd2lkZ2V0LT5ub3RpZnlXaWRnZXQobm90aWZpY2F0aW9uKTsKIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHZp
ZXdFeHBvc2VkUmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAgICBpZiAobV92aWV3RXhw
b3NlZFJlY3QgPT0gdmlld0V4cG9zZWRSZWN0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAppbmRleCA4OTM0NTEwNGE2Njk5ZjdlNTBhYzVlNTg3MjkyZDE3YWM4ZjM4MGI3
Li5mODk3ODQyN2RhODQ0Njg2MDRiYzE0ZTYxMzBmMzkwODg5ZmY0NjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKQEAgLTI2Myw3ICsyNjMsNyBAQCBjbGFzcyBGcmFtZVZpZXcgZmluYWwgOiBw
dWJsaWMgU2Nyb2xsVmlldyB7CiAgICAgCiAgICAgLy8gSWYgc2V0LCBvdmVycmlkZXMgdGhlIGRl
ZmF1bHQgIm1fbGF5b3V0Vmlld3BvcnRPcmlnaW4sIHNpemUgb2YgaW5pdGlhbCBjb250YWluaW5n
IGJsb2NrIiByZWN0LgogICAgIC8vIFVzZWQgd2l0aCBkZWxlZ2F0ZWQgc2Nyb2xsaW5nIChpLmUu
IGlPUykuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRl
UmVjdChPcHRpb25hbDxMYXlvdXRSZWN0Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRM
YXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+KTsKIAog
ICAgIC8vIFRoZXNlIGFyZSBpbiBkb2N1bWVudCBjb29yZGluYXRlcywgdW5hZmZlY3RlZCBieSB6
b29taW5nLgogICAgIFdFQkNPUkVfRVhQT1JUIExheW91dFJlY3QgbGF5b3V0Vmlld3BvcnRSZWN0
KCkgY29uc3Q7CkBAIC01NjksOCArNTY5LDggQEAgY2xhc3MgRnJhbWVWaWV3IGZpbmFsIDogcHVi
bGljIFNjcm9sbFZpZXcgewogICAgIC8vIG9mIHRoZSB2aWV3IGlzIGFjdHVhbGx5IGV4cG9zZWQg
b24gc2NyZWVuICh0YWtpbmcgaW50byBhY2NvdW50CiAgICAgLy8gY2xpcHBpbmcgYnkgb3RoZXIg
VUkgZWxlbWVudHMpLCB3aGVyZWFzIHZpc2libGVDb250ZW50UmVjdCBpcwogICAgIC8vIGludGVy
bmFsIHRvIFdlYkNvcmUgYW5kIGRvZXNuJ3QgcmVzcGVjdCB0aG9zZSB0aGluZ3MuCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0Pik7
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdFeHBvc2VkUmVjdDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld0V4
cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRS
ZWN0OyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZvaWQgdXBkYXRlU25h
cE9mZnNldHMoKSBvdmVycmlkZTsKQEAgLTc4NiwxMCArNzg2LDEwIEBAIGNsYXNzIEZyYW1lVmll
dyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxWaWV3IHsKIAogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVX
aGlsZU9mZnNjcmVlbjsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJl
Y3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwogICAg
IAogICAgIExheW91dFBvaW50IG1fbGF5b3V0Vmlld3BvcnRPcmlnaW47Ci0gICAgT3B0aW9uYWw8
TGF5b3V0UmVjdD4gbV9sYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFJlY3Q+IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Q7CiAKICAgICB1bnNp
Z25lZCBtX2RlZmVyU2V0TmVlZHNMYXlvdXRDb3VudDsKICAgICBib29sIG1fc2V0TmVlZHNMYXlv
dXRXYXNEZWZlcnJlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGFlOTY2MDgxMWI0MzkwZWM3ZGRi
YjU2OGJmYzY1ZGY0MWM1ZTljMWQuLjVmZTIxZTcyZDQ0Y2E2MjI4MmY3ODUyYWMxOGY5YjdmNjQ1
NzZlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTUzLDcgKzU1Myw3IEBAIGJvb2wgUGFnZTo6
c2hvd0FsbFBsdWdpbnMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIE9w
dGlvbmFsPHN0ZDo6cGFpcjxNZWRpYUNhblN0YXJ0TGlzdGVuZXImLCBEb2N1bWVudCY+PiAgUGFn
ZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxz
dGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gIFBhZ2U6OnRha2VB
bnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKQogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCkBAIC01NjEsNyArNTYxLDcgQEAgaW5s
aW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxNZWRpYUNhblN0YXJ0TGlzdGVuZXImLCBEb2N1bWVudCY+
PiAgUGFnZTo6dGFrZUFueU1lZGkKICAgICAgICAgaWYgKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciog
bGlzdGVuZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5l
cigpKQogICAgICAgICAgICAgcmV0dXJuIHsgeyAqbGlzdGVuZXIsICpmcmFtZS0+ZG9jdW1lbnQo
KSB9IH07CiAgICAgfQotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYShib29sIGNhblN0YXJ0TWVkaWEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCmluZGV4IDIwMGFiMzk2ZTM3Zjc5Njg2NGQwZTQ2MDI0YWMxZTg1ZmJmOTgw
ZjYuLjIyODM0ZmY3MDNiZjg4MWQ2YzI4N2M5ZGRiMzZlZDZkZWUxMjRiNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCkBAIC01NDEsOCArNTQxLDggQEAgY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJs
ZTxQYWdlPiB7CiAgICAgYm9vbCBpc1Jlc291cmNlQ2FjaGluZ0Rpc2FibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZUNhY2hpbmdEaXNhYmxlZDsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VD
YWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkgeyBtX3Jlc291cmNlQ2FjaGluZ0Rpc2FibGVk
ID0gZGlzYWJsZWQ7IH0KIAotICAgIE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBl
dmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFRo
cm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOyB9Ci0gICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdC
ZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB0aHJvdHRs
aW5nKSB7IG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSA9IHRocm90dGxpbmc7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxp
bmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFRocm90dGxpbmdCZWhh
dmlvck92ZXJyaWRlOyB9CisgICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IHRocm90dGxpbmcpIHsg
bV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlID0gdGhyb3R0bGluZzsgfQogCiBwcml2
YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdEdyb3VwKCk7CkBAIC01NjIsNyArNTYy
LDcgQEAgY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiB7CiAKICAgICB1
bnNpZ25lZCBmaW5kTWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQsIFNob3VsZEhpZ2hsaWdodE1hdGNoZXMsIFNob3VsZE1hcmtN
YXRjaGVzKTsKIAotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxNZWRpYUNhblN0YXJ0TGlzdGVuZXIm
LCBEb2N1bWVudCY+PiB0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CisgICAgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gdGFr
ZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOwogCiAgICAgVmVjdG9yPFJlZjxQbHVnaW5WaWV3
QmFzZT4+IHBsdWdpblZpZXdzKCk7CiAKQEAgLTczNyw3ICs3MzcsNyBAQCBjbGFzcyBQYWdlIDog
cHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+IHsKICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb246OkxUUiB9OwogICAgIAogICAgIC8vIEZvciB0ZXN0aW5nLgotICAgIE9wdGlv
bmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3Zl
cnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gbV9ldmVu
dFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOwogfTsKIAogaW5saW5lIFBhZ2VHcm91cCYgUGFn
ZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxUb09wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsVG9PcHRpb25zLmgKaW5kZXggYzk4OTlk
Nzk1YWE1ZjQ2NTQzZDMzNjczMDc1NDI3M2RmOTllMjFkZi4uODRhOWQ5ZGRiMjgwNWQ3ZjJiMzk0
Mzc2NGEzMTkwYTljY2Y1ZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TY3Jv
bGxUb09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9sbFRvT3B0aW9ucy5o
CkBAIC0zMyw4ICszMyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTY3JvbGxU
b09wdGlvbnMgewotICAgIE9wdGlvbmFsPGRvdWJsZT4gbGVmdDsKLSAgICBPcHRpb25hbDxkb3Vi
bGU+IHRvcDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbGVmdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gdG9wOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCA3YTIxZDViYjIxOTZlNzhjZGU4NTYyOGZkYmZiYWU0MGU0OWIxMzRjLi5iMjU5
ZmZhZjY3NjVkNDU1ZGU0NTRiNGQzOTQ4MGIwOGE2MjE4YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIFNlY3VyaXR5T3JpZ2luOjpT
ZWN1cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKICAgICBtX2RvbWFpbiA9IG1faG9zdDsKIAog
ICAgIGlmIChtX3BvcnQgJiYgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydC52YWx1ZSgp
LCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gTnVsbG9wdDsKKyAgICAgICAgbV9wb3J0
ID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQnkgZGVmYXVsdCwgb25seSBsb2NhbCBTZWN1cml0
eU9yaWdpbnMgY2FuIGxvYWQgbG9jYWwgcmVzb3VyY2VzLgogICAgIG1fY2FuTG9hZExvY2FsUmVz
b3VyY2VzID0gaXNMb2NhbCgpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIFJlZjxTZWN1cml0eU9yaWdp
bj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcpCiAgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBvcmln
aW5TdHJpbmcpKTsKIH0KIAotUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQpCitSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBwb3J0KQogewogICAgIFN0cmluZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRvIG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJM
KCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmgKaW5kZXggODVjZjMzMjEzZTMxMTI4NWU3NzQxNjhiZTFhMmY5NzAyYzZjZmNm
ZS4uMThjYjE4OGRhNzBkMzFhZDY4MWYzMzg3ZjE0MjgzODVjNjk4YTYxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTZWN1cml0eU9y
aWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZWN1cml0eU9yaWdpbj4gewogICAg
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2lu
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRp
b25hbDx1aW50MTZfdD4gcG9ydCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1
cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
aG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCk7CiAKICAgICAvLyBTb21lIFVSTCBz
Y2hlbWVzIHVzZSBuZXN0ZWQgVVJMcyBmb3IgdGhlaXIgc2VjdXJpdHkgY29udGV4dC4gRm9yIGV4
YW1wbGUsCiAgICAgLy8gZmlsZXN5c3RlbSBVUkxzIGxvb2sgbGlrZSB0aGUgZm9sbG93aW5nOgpA
QCAtODEsNyArODEsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTZWN1cml0eU9yaWdpbj4gewogICAgIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wo
KSBjb25zdCB7IHJldHVybiBtX3Byb3RvY29sOyB9CiAgICAgY29uc3QgU3RyaW5nJiBob3N0KCkg
Y29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CiAgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBjb25z
dCB7IHJldHVybiBtX2RvbWFpbjsgfQotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29u
c3QgeyByZXR1cm4gbV9wb3J0OyB9CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2
ZW4gVVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93
biBwcm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlu
bmVyIFVSTCIKQEAgLTIxOCw3ICsyMTgsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZWN1cml0eU9yaWdpbj4gewogICAgIFN0cmluZyBtX2hv
c3Q7CiAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIE9w
dGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9w
b3J0OwogICAgIGJvb2wgbV9pc1VuaXF1ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VuaXZlcnNh
bEFjY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvbWFpbldhc1NldEluRE9NIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCA3NDM2
OTBlYTg0YWUyZGE2MjEwOTMzNjE2ZGY4ODRiY2NmMDBhNGNjLi4yNGE5ZDQzZmY3N2UxNWFkNzM3
MTBhODRlYTE1YmIxZjA5OGJmYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFNlY3VyaXR5T3JpZ2luRGF0YSBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYKICNp
ZiAhTE9HX0RJU0FCTEVECiBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkZWJ1Z1N0cmluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsICI6Ly8iLCBob3N0LCAi
OiIsIFN0cmluZzo6bnVtYmVyKHBvcnQudmFsdWVPcigwKSkpOworICAgIHJldHVybiBtYWtlU3Ry
aW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVl
X29yKDApKSk7CiB9CiAjZW5kaWYKIApAQCAtOTIsMzcgKzkyLDM3IEBAIFN0cmluZyBTZWN1cml0
eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChl
bmNvZGVGb3JGaWxlTmFtZShob3N0KSk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihwb3J0LnZhbHVl
T3IoMCkpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVyKHBvcnQudmFsdWVfb3IoMCkp
OwogICAgIAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLU9wdGlv
bmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorc3RkOjpvcHRpb25h
bDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKICAgICAvLyBNYWtl
IHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0g
ZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2Vw
YXJhdG9yMSA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNv
bmQgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIu
cmV2ZXJzZUZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBu
b3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgLy8gRW5zdXJlIHRoZXJlIHdlcmUgYXQgbGVhc3QgMiBzZXBhcmF0
b3IgY2hhcmFjdGVycy4gU29tZSBob3N0bmFtZXMgb24gaW50cmFuZXRzIGhhdmUKICAgICAvLyB1
bmRlcnNjb3JlcyBpbiB0aGVtLCBzbyB3ZSdsbCBhc3N1bWUgdGhhdCBhbnkgYWRkaXRpb25hbCB1
bmRlcnNjb3JlcyBhcmUgcGFydCBvZiB0aGUgaG9zdC4KICAgICBpZiAoc2VwYXJhdG9yMSA9PSBz
ZXBhcmF0b3IyKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBhIHZh
bGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBvcnRPa2F5OwogICAg
IGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRlbnRpZmllci5s
ZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwogICAgIGJvb2wgcG9y
dEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAtIDEp
OwogICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAocG9ydCA8
IDAgfHwgcG9ydCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7ZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmlu
ZygwLCBzZXBhcmF0b3IxKSwgZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3Ix
ICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKSwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHBvcnQpfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4
IDk3OWI0MmZmOTA0NGUyZDVhYzQ2Y2E2YTBkZjQ0OTZmM2RjZDJlYzkuLjIxMGE0OWVhNGQzZDM1
ZDU3ZWJmYjJlNTMzNGViNTcyMTc4NTRhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAog
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhKCkgPSBk
ZWZhdWx0OwotICAgIFNlY3VyaXR5T3JpZ2luRGF0YShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorICAgIFNlY3VyaXR5
T3JpZ2luRGF0YShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0
ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCiAgICAgICAgIDogcHJvdG9jb2wocHJvdG9jb2wp
CiAgICAgICAgICwgaG9zdChob3N0KQogICAgICAgICAsIHBvcnQocG9ydCkKQEAgLTU1LDIxICs1
NSwyMSBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKIAogICAgIFN0cmluZyBwcm90b2Nv
bDsKICAgICBTdHJpbmcgaG9zdDsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydDsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2VjdXJp
dHlPcmlnaW5EYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAgICAgLy8gU2VyaWFsaXplIHRo
ZSBzZWN1cml0eSBvcmlnaW4gdG8gYSBzdHJpbmcgdGhhdCBjb3VsZCBiZSB1c2VkIGFzIHBhcnQg
b2YKICAgICAvLyBmaWxlIG5hbWVzLiBUaGlzIGZvcm1hdCBzaG91bGQgYmUgdXNlZCBpbiBzdG9y
YWdlIEFQSXMgb25seS4KICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZGF0YWJhc2VJZGVudGlm
aWVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFNlY3VyaXR5
T3JpZ2luRGF0YT4gZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGZy
b21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgU2VjdXJpdHlPcmln
aW5EYXRhJik7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIHByb3RvY29sLmlzTnVsbCgpICYmIGhvc3QuaXNOdWxsKCkgJiYgcG9ydCA9PSBOdWxsb3B0
OworICAgICAgICByZXR1cm4gcHJvdG9jb2wuaXNOdWxsKCkgJiYgaG9zdC5pc051bGwoKSAmJiBw
b3J0ID09IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0CkBAIC0xMTcsNyArMTE3LDcgQEAgc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YUhhc2ggewogICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAg
ICAgICBkYXRhLnByb3RvY29sLmltcGwoKSA/IGRhdGEucHJvdG9jb2wuaW1wbCgpLT5oYXNoKCkg
OiAwLAogICAgICAgICAgICAgZGF0YS5ob3N0LmltcGwoKSA/IGRhdGEuaG9zdC5pbXBsKCktPmhh
c2goKSA6IDAsCi0gICAgICAgICAgICBkYXRhLnBvcnQudmFsdWVPcigwKQorICAgICAgICAgICAg
ZGF0YS5wb3J0LnZhbHVlX29yKDApCiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdI
YXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5kZXggNTBlYjI5NTZmMjNi
N2NmMTJlY2I5MGNmNzZmZDhiOTgxZWEzYjU1YS4uYjdhNWFlZmVkYTFiNmRlZmQ3MmE5YmU3YzZi
YTIwNjJlMWJkMmQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5o
CkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkhhc2ggewogICAgICAgICB1
bnNpZ25lZCBoYXNoQ29kZXNbM10gPSB7CiAgICAgICAgICAgICBvcmlnaW4tPnByb3RvY29sKCku
aW1wbCgpID8gb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKS0+aGFzaCgpIDogMCwKICAgICAgICAg
ICAgIG9yaWdpbi0+aG9zdCgpLmltcGwoKSA/IG9yaWdpbi0+aG9zdCgpLmltcGwoKS0+aGFzaCgp
IDogMCwKLSAgICAgICAgICAgIG9yaWdpbi0+cG9ydCgpLnZhbHVlT3IoMCkKKyAgICAgICAgICAg
IG9yaWdpbi0+cG9ydCgpLnZhbHVlX29yKDApCiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAppbmRleCA3Yzc2YWUxMjgy
MDhmODQzY2U3MjdkNGM2ZTFiNGE2ZTM2Yjk1ZjUzLi5iOGFkY2I0NDk0MmZhNWViYmU1YWI1ZDcx
NTQxOTI4MjcwMGYxMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcApA
QCAtMzYsOCArMzYsOCBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4gRGlhbG9nRmVhdHVyZXNNYXA7CiBzdGF0aWMgdm9pZCBzZXRXaW5k
b3dGZWF0dXJlKFdpbmRvd0ZlYXR1cmVzJiwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFs
dWUpOwogCiBzdGF0aWMgRGlhbG9nRmVhdHVyZXNNYXAgcGFyc2VEaWFsb2dGZWF0dXJlc01hcChj
b25zdCBTdHJpbmcmKTsKLXN0YXRpYyBPcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25zdCBE
aWFsb2dGZWF0dXJlc01hcCYsIGNvbnN0IGNoYXIqIGtleSk7Ci1zdGF0aWMgT3B0aW9uYWw8Zmxv
YXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYsIGNvbnN0IGNoYXIqIGtl
eSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYm9v
bEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXkpOworc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJl
c01hcCYsIGNvbnN0IGNoYXIqIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpOwogCiBzdGF0aWMg
Ym9vbCBpc1NlcGFyYXRvcihVQ2hhciBjaGFyYWN0ZXIpCiB7CkBAIC0xNTgsOCArMTU4LDggQEAg
V2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcmIGRpYWxvZ0Zl
YXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUg
PSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0cnVlOwogCi0gICAgZmxvYXQgd2lkdGgg
PSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZh
aWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZU9yKDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZy
b20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKLSAgICBmbG9hdCBoZWlnaHQgPSBmbG9h
dEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNjcmVlbkF2YWlsYWJs
ZVJlY3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBm
cmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0
dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qu
d2lkdGgoKSkudmFsdWVfb3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBz
aXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVhdHVyZShm
ZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWln
aHQoKSkudmFsdWVfb3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXpl
IG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMud2lkdGggPSB3aWR0aDsKICAgICBm
ZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBAIC0xNjcsMjUgKzE2NywyNSBAQCBXaW5kb3dGZWF0
dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJp
bmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLnggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAs
ICJkaWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxhYmxlUmVjdC54KCksIHNjcmVlbkF2YWlsYWJsZVJl
Y3QubWF4WCgpIC0gd2lkdGgpOwogICAgIGZlYXR1cmVzLnkgPSBmbG9hdEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJkaWFsb2d0b3AiLCBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSwgc2NyZWVuQXZhaWxh
YmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYgKGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAiY2VudGVyIikudmFsdWVPcih0cnVlKSkgeworICAgIGlmIChib29sRmVhdHVyZShmZWF0
dXJlc01hcCwgImNlbnRlciIpLnZhbHVlX29yKHRydWUpKSB7CiAgICAgICAgIGlmICghZmVhdHVy
ZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSAr
IChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyOwogICAgICAgICBpZiAo
IWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55ID0gc2NyZWVuQXZhaWxhYmxlUmVj
dC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtIGhlaWdodCkgLyAyOwogICAg
IH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAi
cmVzaXphYmxlIikudmFsdWVPcihmYWxzZSk7Ci0gICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2li
bGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlT3IodHJ1ZSk7Ci0g
ICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAi
c3RhdHVzIikudmFsdWVPcihmYWxzZSk7CisgICAgZmVhdHVyZXMucmVzaXphYmxlID0gYm9vbEZl
YXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZV9vcihmYWxzZSk7CisgICAgZmVh
dHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9s
bCIpLnZhbHVlX29yKHRydWUpOworICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29s
RmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlX29yKGZhbHNlKTsKIAogICAgIHJl
dHVybiBmZWF0dXJlczsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNv
bnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioga2V5KQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAm
IGZlYXR1cmVzLCBjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZp
bmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgdmFsdWUg
PSBpdC0+dmFsdWU7CiAgICAgcmV0dXJuIHZhbHVlLmlzTnVsbCgpCkBAIC0xOTQsMTggKzE5NCwx
OCBAQCBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVy
ZXNNYXAmIGZlYXR1cmVzLCBjb25zdCBjaGFyKgogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgIm9uIik7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxmbG9hdD4g
ZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hh
cioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBjb25zdCBj
aGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KQogewogICAgIGF1dG8gaXQgPSBmZWF0dXJl
cy5maW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZJWE1F
OiBUaGUgdG9Eb3VibGUgZnVuY3Rpb24gZG9lcyBub3Qgb2ZmZXIgYSB3YXkgdG8gdGVsbCAiMHEi
IGZyb20gc3RyaW5nIHdpdGggbm8gZGlnaXRzIGluIGl0OiBCb3RoCiAgICAgLy8gcmV0dXJuIHRo
ZSBudW1iZXIgMCBhbmQgZmFsc2UgZm9yIG9rLiBCdXQgIjBxIiBzaG91bGQgeWllbGQgdGhlIG1p
bmltdW0gcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQuCiAgICAgYm9vbCBvazsKICAgICBkb3VibGUg
cGFyc2VkTnVtYmVyID0gaXQtPnZhbHVlLnRvRG91YmxlKCZvayk7CiAgICAgaWYgKCghcGFyc2Vk
TnVtYmVyICYmICFvaykgfHwgc3RkOjppc25hbihwYXJzZWROdW1iZXIpKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAocGFyc2Vk
TnVtYmVyIDwgbWluIHx8IG1heCA8PSBtaW4pCiAgICAgICAgIHJldHVybiBtaW47CiAgICAgaWYg
KHBhcnNlZE51bWJlciA+IG1heCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93RmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaAppbmRl
eCBlMDA1NDVlMmViODllYTRjZjI5ZWFkNDRkYzMyNzQ4NDE0MGEyOThiLi5kNDZhNzVhMDIwNjUz
MmY2YmE4MDAyNjk2OTQ0NmM4YTJiZmI2ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1dpbmRvd0ZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxv
YXRSZWN0OwogCiBzdHJ1Y3QgV2luZG93RmVhdHVyZXMgewotICAgIE9wdGlvbmFsPGZsb2F0PiB4
OwotICAgIE9wdGlvbmFsPGZsb2F0PiB5OwotICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKLSAg
ICBPcHRpb25hbDxmbG9hdD4gaGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHg7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4geTsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0
aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBoZWlnaHQ7CiAKICAgICBib29sIG1lbnVCYXJW
aXNpYmxlIHsgdHJ1ZSB9OwogICAgIGJvb2wgc3RhdHVzQmFyVmlzaWJsZSB7IHRydWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UuY3BwCmluZGV4IGVhNmZmOTJkMjQxYTUwZjc1N2M1Nzg5NjhjNTIyYTY5MTAzMzZmN2Iu
LmM4MzI2ZGZmNDU0MjU5ZDViYmMzZDNmODMxOTcwNzBkZmFiYzk0MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeSYgcG9saWN5LCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3Ry
aW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3RyaW5nJiBwYXRoLCBi
b29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQpCitDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmlu
ZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQpCiAgICAgOiBtX3Bv
bGljeShwb2xpY3kpCiAgICAgLCBtX3NjaGVtZShzY2hlbWUpCiAgICAgLCBtX2hvc3QoaG9zdCkK
QEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRN
YXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChtX3BvcnRIYXNXaWxkY2FyZCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVy
bC5wb3J0KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7
CiAKICAgICBpZiAocG9ydCA9PSBtX3BvcnQpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
aAppbmRleCBhYmFhZTk2MzQ4NjNmM2UwZTg4MGYzMjQ1ZTAxODBkY2U0MjFhNWU2Li4yOGExYTY4
MzBmZTk5OWJhMTAyYjJkNTE1YmM0MTBhNjAzNDFiNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBVUkw7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcm
IHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNh
cmQpOworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhh
c1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCk7CiAKICAgICBib29sIG1hdGNoZXMoY29u
c3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSA9IGZhbHNlKSBjb25zdDsK
IApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Ugewog
ICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgbV9wb2xpY3k7CiAgICAgU3RyaW5nIG1f
c2NoZW1lOwogICAgIFN0cmluZyBtX2hvc3Q7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IG1fcG9y
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7CiAgICAgU3RyaW5nIG1fcGF0
aDsKIAogICAgIGJvb2wgbV9ob3N0SGFzV2lsZGNhcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmlu
ZGV4IDA5NjNmNDI5MzE5MGM0NGFkYThhOTNlMDU0MDQ3MGEwMjhkY2NjY2QuLjVkNTFmNjhlMDgw
OWNiODQ1ZmYzNzUxNTlhNjAxNGEyNWI0OTE3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBA
IC0xNzMsNyArMTczLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0Ojpw
YXJzZShjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQKICAgICAgICAgc2tpcFdo
aWxlPFVDaGFyLCBpc1NvdXJjZUNoYXJhY3Rlcj4ocG9zaXRpb24sIGVuZCk7CiAKICAgICAgICAg
U3RyaW5nIHNjaGVtZSwgaG9zdCwgcGF0aDsKLSAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CiAgICAgICAgIGJvb2wg
aG9zdEhhc1dpbGRjYXJkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgcG9ydEhhc1dpbGRjYXJkID0g
ZmFsc2U7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3Q6OnBhcnNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZAogLy8g
ICAgICAgICAgICAgICAgICAgLyAoIFsgc2NoZW1lICI6Ly8iIF0gaG9zdCBbIHBvcnQgXSBbIHBh
dGggXSApCiAvLyAgICAgICAgICAgICAgICAgICAvICInc2VsZiciCiAvLwotYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZVNvdXJjZShjb25zdCBVQ2hhciogYmVnaW4s
IGNvbnN0IFVDaGFyKiBlbmQsIFN0cmluZyYgc2NoZW1lLCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFs
PHVpbnQxNl90PiYgcG9ydCwgU3RyaW5nJiBwYXRoLCBib29sJiBob3N0SGFzV2lsZGNhcmQsIGJv
b2wmIHBvcnRIYXNXaWxkY2FyZCkKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dDo6cGFyc2VTb3VyY2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJp
bmcmIHNjaGVtZSwgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiYgcG9ydCwg
U3RyaW5nJiBwYXRoLCBib29sJiBob3N0SGFzV2lsZGNhcmQsIGJvb2wmIHBvcnRIYXNXaWxkY2Fy
ZCkKIHsKICAgICBpZiAoYmVnaW4gPT0gZW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
OTIsNyArMjkyLDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJz
ZVNvdXJjZShjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGEKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFiZWdpblBvcnQpCi0gICAgICAgIHBvcnQgPSBOdWxsb3B0OworICAg
ICAgICBwb3J0ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgewogICAgICAgICBpZiAoIXBhcnNl
UG9ydChiZWdpblBvcnQsIGJlZ2luUGF0aCwgcG9ydCwgcG9ydEhhc1dpbGRjYXJkKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM5NCw3ICszOTQsNyBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUGF0aChjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0
IFVDaGFyKgogCiAvLyBwb3J0ICAgICAgICAgICAgICA9ICI6IiAoIDEqRElHSVQgLyAiKiIgKQog
Ly8KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQb3J0KGNvbnN0
IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgT3B0aW9uYWw8dWludDE2X3Q+JiBwb3J0
LCBib29sJiBwb3J0SGFzV2lsZGNhcmQpCitib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3Q6OnBhcnNlUG9ydChjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIHN0
ZDo6b3B0aW9uYWw8dWludDE2X3Q+JiBwb3J0LCBib29sJiBwb3J0SGFzV2lsZGNhcmQpCiB7CiAg
ICAgQVNTRVJUKGJlZ2luIDw9IGVuZCk7CiAgICAgQVNTRVJUKCFwb3J0KTsKQEAgLTQwNyw3ICs0
MDcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydChj
b25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCiAgICAgaWYgKGVuZCAtIGJlZ2luID09IDEgJiYgKmJlZ2luID09ICcqJykgewotICAgICAg
ICBwb3J0ID0gTnVsbG9wdDsKKyAgICAgICAgcG9ydCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cG9ydEhhc1dpbGRjYXJkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdC5oCmluZGV4IGJmZWI4NTQ1ZGQ5OTJiMzFiYTVhODk5ZmZhYTYwMjU5ODgxYTdl
MTEuLjA0ZGMyOWMzM2Y0Y2FjMTBhOTE4NzkwMmEyMjY1YTk3YTkzODU4YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmgKQEAgLTU4LDEwICs1OCwxMCBAQCBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0IHsKIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZShjb25zdCBVQ2hhciogYmVnaW4s
IGNvbnN0IFVDaGFyKiBlbmQpOwogCi0gICAgYm9vbCBwYXJzZVNvdXJjZShjb25zdCBVQ2hhciog
YmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIFN0cmluZyYgc2NoZW1lLCBTdHJpbmcmIGhvc3QsIE9w
dGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgU3RyaW5nJiBwYXRoLCBib29sJiBob3N0SGFzV2lsZGNh
cmQsIGJvb2wmIHBvcnRIYXNXaWxkY2FyZCk7CisgICAgYm9vbCBwYXJzZVNvdXJjZShjb25zdCBV
Q2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIFN0cmluZyYgc2NoZW1lLCBTdHJpbmcmIGhv
c3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+JiBwb3J0LCBTdHJpbmcmIHBhdGgsIGJvb2wmIGhv
c3RIYXNXaWxkY2FyZCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKTsKICAgICBib29sIHBhcnNlU2No
ZW1lKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5nJiBzY2hlbWUp
OwogICAgIGJvb2wgcGFyc2VIb3N0KGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVu
ZCwgU3RyaW5nJiBob3N0LCBib29sJiBob3N0SGFzV2lsZGNhcmQpOwotICAgIGJvb2wgcGFyc2VQ
b3J0KGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgT3B0aW9uYWw8dWludDE2
X3Q+JiBwb3J0LCBib29sJiBwb3J0SGFzV2lsZGNhcmQpOworICAgIGJvb2wgcGFyc2VQb3J0KGNv
bnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4mIHBvcnQsIGJvb2wmIHBvcnRIYXNXaWxkY2FyZCk7CiAgICAgYm9vbCBwYXJzZVBhdGgoY29u
c3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcmIHBhdGgpOwogCiAgICAg
Ym9vbCBwYXJzZU5vbmNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDg1YTY0NzJlY2UyMTFmZjIwMDgwZDM3YTUy
ZWFlMTkwYTkxMDk3NDAuLjIyYWIwZWM3NjZhMmE2ZGYzNWNjY2Q4ZDczMjM3NGUwNTdiZDBmZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3
JiBmcmFtZVZpZXcKIAogICAgIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXcu
aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKTsKICAgICBpZiAoaXNQcm9ncmFtbWF0aWNTY3JvbGwgfHwg
ZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1bWVu
dDo6Tm90SW5QYWdlQ2FjaGUpCi0gICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpLCBzY3JvbGxQb3NpdGlvbiwgTnVsbG9w
dCwgaXNQcm9ncmFtbWF0aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNl
dCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChmcmFtZVZp
ZXcuc2Nyb2xsTGF5ZXJJRCgpLCBzY3JvbGxQb3NpdGlvbiwgc3RkOjpudWxsb3B0LCBpc1Byb2dy
YW1tYXRpY1Njcm9sbCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKIAogICAg
IC8vIElmIHRoaXMgZnJhbWUgdmlldydzIGRvY3VtZW50IGlzIGJlaW5nIHB1dCBpbnRvIHRoZSBw
YWdlIGNhY2hlLCB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSBvdXIKICAgICAvLyBtYWluIGZyYW1l
IHNjcm9sbCBwb3NpdGlvbi4gSnVzdCBsZXQgdGhlIEZyYW1lVmlldyB0aGluayB0aGF0IHdlIGRp
ZC4KQEAgLTIzNSw3ICsyMzUsNyBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJl
cXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcmIGZyYW1lVmlldwogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBv
aW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRp
b25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlv
dXRWaWV3cG9ydE9yaWdpbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKIHsKICAgICBTY2hl
ZHVsZWRTY3JvbGxVcGRhdGUgc2Nyb2xsVXBkYXRlKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxh
eW91dFZpZXdwb3J0T3JpZ2luLCBwcm9ncmFtbWF0aWNTY3JvbGwsIHNjcm9sbGluZ0xheWVyUG9z
aXRpb25BY3Rpb24pOwogICAgIApAQCAtMjk3LDcgKzI5Nyw3IEBAIEZyYW1lVmlldyogQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdO
b2RlSUQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9k
ZUlEIHNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIE9w
dGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHByb2dyYW1tYXRp
Y1Njcm9sbCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uKQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQ
b3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGluZ05vZGVJRCwg
Y29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2lu
dD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTY3JvbGxp
bmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMzQ5LDEzICszNDksMTMgQEAgdm9pZCBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWNvbmNpbGVTY3JvbGxpbmdTdGF0ZShGcmFtZVZp
ZXcmIGZyYW1lVmlldywgY28KICAgICBib29sIG9sZFByb2dyYW1tYXRpY1Njcm9sbCA9IGZyYW1l
Vmlldy5pblByb2dyYW1tYXRpY1Njcm9sbCgpOwogICAgIGZyYW1lVmlldy5zZXRJblByb2dyYW1t
YXRpY1Njcm9sbChwcm9ncmFtbWF0aWNTY3JvbGwpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsYXlvdXRWaWV3cG9ydFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxheW91
dFZpZXdwb3J0UmVjdDsKIAogICAgIFdURjo6c3dpdGNoT24obGF5b3V0Vmlld3BvcnRPcmlnaW5P
ck92ZXJyaWRlUmVjdCwKLSAgICAgICAgWyZmcmFtZVZpZXddKE9wdGlvbmFsPEZsb2F0UG9pbnQ+
IG9yaWdpbikgeworICAgICAgICBbJmZyYW1lVmlld10oc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50
PiBvcmlnaW4pIHsKICAgICAgICAgICAgIGlmIChvcmlnaW4pCiAgICAgICAgICAgICAgICAgZnJh
bWVWaWV3LnNldEJhc2VMYXlvdXRWaWV3cG9ydE9yaWdpbihMYXlvdXRQb2ludChvcmlnaW4udmFs
dWUoKSksIEZyYW1lVmlldzo6VHJpZ2dlckxheW91dE9yTm90OjpObyk7Ci0gICAgICAgIH0sIFsm
ZnJhbWVWaWV3LCAmbGF5b3V0Vmlld3BvcnRSZWN0LCBpblN0YWJsZVN0YXRlLCB2aXN1YWxWaWV3
cG9ydEVuYWJsZWQgPSB2aXN1YWxWaWV3cG9ydEVuYWJsZWQoKV0oT3B0aW9uYWw8RmxvYXRSZWN0
PiBvdmVycmlkZVJlY3QpIHsKKyAgICAgICAgfSwgWyZmcmFtZVZpZXcsICZsYXlvdXRWaWV3cG9y
dFJlY3QsIGluU3RhYmxlU3RhdGUsIHZpc3VhbFZpZXdwb3J0RW5hYmxlZCA9IHZpc3VhbFZpZXdw
b3J0RW5hYmxlZCgpXShzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVSZWN0KSB7CiAg
ICAgICAgICAgICBsYXlvdXRWaWV3cG9ydFJlY3QgPSBvdmVycmlkZVJlY3Q7CiAgICAgICAgICAg
ICBpZiAob3ZlcnJpZGVSZWN0ICYmIGluU3RhYmxlU3RhdGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAodmlzdWFsVmlld3BvcnRFbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDZkMzA4YTU5
NGZmNDk0NjY4MmUxMzJhYzE5YTMzMmMzMjUwMjYyOTguLjFkMjJhZjZkMzEwMjY4M2QzZWJiYzYy
YTk5OWY5YWRmYTMxNTk0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTUyLDcgKzUyLDcgQEAg
Y2xhc3MgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciA6IHB1YmxpYyBTY3JvbGxpbmdDb29yZGlu
YXRvciB7CiAKICAgICB2b2lkIHNjcm9sbGluZ1N0YXRlVHJlZVByb3BlcnRpZXNDaGFuZ2VkKCk7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25B
ZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IE9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgYm9vbCBwcm9ncmFt
bWF0aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwo
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxG
bG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xs
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXMoU2Nyb2xs
aW5nTm9kZUlELCB1bnNpZ25lZCBob3Jpem9udGFsSW5kZXgsIHVuc2lnbmVkIHZlcnRpY2FsSW5k
ZXgpOwpAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIDog
cHVibGljIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHsKIAogICAgIFBhc3NSZWZQdHI8U2Nyb2xsaW5n
VHJlZT4gcmVsZWFzZVNjcm9sbGluZ1RyZWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fc2Nyb2xsaW5n
VHJlZSk7IH0KIAotICAgIHZvaWQgdXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
KFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIE9wdGlvbmFsPEZsb2F0UG9pbnQ+
IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVy
QXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50Jiwgc3RkOjpvcHRp
b25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgYm9vbCBwcm9ncmFtbWF0aWNT
Y3JvbGwsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbENvbW1pdFRyZWUoKSBvdmVycmlkZTsKQEAgLTEzMiw3
ICsxMzIsNyBAQCBjbGFzcyBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVibGljIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yIHsKIAogICAgIHN0cnVjdCBTY2hlZHVsZWRTY3JvbGxVcGRhdGUgewog
ICAgICAgICBTY2hlZHVsZWRTY3JvbGxVcGRhdGUoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFNjaGVk
dWxlZFNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBGbG9hdFBv
aW50IHBvaW50LCBPcHRpb25hbDxGbG9hdFBvaW50PiB2aWV3cG9ydE9yaWdpbiwgYm9vbCBpc1By
b2dyYW1tYXRpYywgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiB1ZHBhdGVBY3Rpb24pCisg
ICAgICAgIFNjaGVkdWxlZFNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9k
ZUlELCBGbG9hdFBvaW50IHBvaW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHZpZXdwb3J0
T3JpZ2luLCBib29sIGlzUHJvZ3JhbW1hdGljLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
IHVkcGF0ZUFjdGlvbikKICAgICAgICAgICAgIDogbm9kZUlEKHNjcm9sbGluZ05vZGVJRCkKICAg
ICAgICAgICAgICwgc2Nyb2xsUG9zaXRpb24ocG9pbnQpCiAgICAgICAgICAgICAsIGxheW91dFZp
ZXdwb3J0T3JpZ2luKHZpZXdwb3J0T3JpZ2luKQpAQCAtMTQyLDcgKzE0Miw3IEBAIGNsYXNzIEFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IgOiBwdWJsaWMgU2Nyb2xsaW5nQ29vcmRpbmF0b3Igewog
CiAgICAgICAgIFNjcm9sbGluZ05vZGVJRCBub2RlSUQgeyAwIH07CiAgICAgICAgIEZsb2F0UG9p
bnQgc2Nyb2xsUG9zaXRpb247Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZp
ZXdwb3J0T3JpZ2luOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZp
ZXdwb3J0T3JpZ2luOwogICAgICAgICBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsIHsgZmFsc2Ug
fTsKICAgICAgICAgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiB1cGRhdGVMYXllclBvc2l0
aW9uQWN0aW9uIHsgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyB9OwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5oCmluZGV4IDU5NWQ1NWUyZmMxN2Y2YjQyYzAzY2M4YjE5ODIwMmE0YTIzMDZiODUu
LjM1Y2NkNjU2ZmFmMzc3MGZhZjQ1MjExZmE2MWU2MGEwMzA5YzQyZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAt
MTE5LDcgKzExOSw3IEBAIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiB7CiAgICAgLy8gU2hvdWxkIGJl
IGNhbGxlZCB3aGVuZXZlciB0aGUgZ2l2ZW4gZnJhbWUgdmlldyBoYXMgYmVlbiBsYWlkIG91dC4K
ICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcmKSB7IH0K
IAotICAgIHVzaW5nIExheW91dFZpZXdwb3J0T3JpZ2luT3JPdmVycmlkZVJlY3QgPSBXVEY6OlZh
cmlhbnQ8T3B0aW9uYWw8RmxvYXRQb2ludD4sIE9wdGlvbmFsPEZsb2F0UmVjdD4+OworICAgIHVz
aW5nIExheW91dFZpZXdwb3J0T3JpZ2luT3JPdmVycmlkZVJlY3QgPSBXVEY6OlZhcmlhbnQ8c3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50Piwgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+PjsKICAgICB2
aXJ0dWFsIHZvaWQgcmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUoRnJhbWVWaWV3JiwgY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IExheW91dFZpZXdwb3J0T3JpZ2luT3JPdmVycmlkZVJlY3QmLCBib29s
IC8qIHByb2dyYW1tYXRpY1Njcm9sbCAqLywgYm9vbCAvKiBpblN0YWJsZVN0YXRlKi8sIFNjcm9s
bGluZ0xheWVyUG9zaXRpb25BY3Rpb24pIHsgfQogCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCB3
aGVuZXZlciB0aGUgc2xvdyByZXBhaW50IG9iamVjdHMgY291bnRlciBjaGFuZ2VzIGJldHdlZW4g
emVybyBhbmQgb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcAppbmRleCBiNDIwZmY2MjM0NTk1MjBmNGIwN2UzYzg4OGU1Mjg4MDQwOTA0OTky
Li5kMDBlYzVkZDliMWI3ZDRhNmQ2MWJmNWQxMzliNDk5MmU2MzdkOGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhRGVsZWdh
dGVkU2Nyb2xsaW5nKFNjcm9sbGluZ05vZGVJRCBuCiAgICAgZG93bmNhc3Q8U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKm5vZGUpLnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVk
U2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsKIAogICAgIC8vIFVwZGF0ZSBHcmFwaGljc0xheWVycyBh
bmQgc2Nyb2xsIHN0YXRlLgotICAgIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKG5vZGVJRCwg
c2Nyb2xsUG9zaXRpb24sIE51bGxvcHQsIGluVXNlckludGVyYXRpb24gPyBTY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uOjpTeW5jIDogU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0
KTsKKyAgICBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9u
LCBzdGQ6Om51bGxvcHQsIGluVXNlckludGVyYXRpb24gPyBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uOjpTeW5jIDogU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKIH0KIAog
dm9pZCBTY3JvbGxpbmdUcmVlOjpjb21taXRUcmVlU3RhdGUoc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bGluZ1N0YXRlVHJlZT4gc2Nyb2xsaW5nU3RhdGVUcmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDc2Y2E3ZjZkYTM0ZTlkNDlhYTdlNGRj
YTNmMGJjODNiYTU1NDFiZjcuLjY3MzRiNTNhZGFiNWMzOTliOTMzYWMzNzdlZGU3NGI4YzJhMDVh
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgK
QEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgU2Nyb2xsaW5nVHJlZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTY3JvbGxpbmdUcmVlPiB7CiAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBzY3Jv
bGxpbmcgdHJlZSBub2RlIGhhcyBoYW5kbGVkIGEgc2Nyb2xsIGFuZCB1cGRhdGVkIGl0cyBsYXll
cnMuCiAgICAgLy8gVXBkYXRlcyBGcmFtZVZpZXcvUmVuZGVyTGF5ZXIgc2Nyb2xsaW5nIHN0YXRl
IGFuZCBHcmFwaGljc0xheWVycy4KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVE
aWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
biwgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6
U3luYykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChT
Y3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMp
ID0gMDsKIAogICAgIC8vIENhbGxlZCBmb3IgcmVxdWVzdGVkIHNjcm9sbCBwb3NpdGlvbiB1cGRh
dGVzLgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKFNj
cm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgLypzY3JvbGxQb3NpdGlvbiovLCBib29s
IC8qcmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmNwcAppbmRleCBjYzdlOGVjZWY4MWIwM2Q5Zjk3NDMxNzFkZDljZDBiOWVmZGY3NjM4Li44NDAy
OWZiZGY4NWY2NTgxZDBmY2QxNTM4ZDljN2JmZWVjY2I4OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXQKIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRl
bnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7CiAg
ICAgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihzY3JvbGxQb3NpdGlvbiwgeyB9KTsKLSAgICBzY3Jv
bGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCks
IHNjcm9sbFBvc2l0aW9uLCBOdWxsb3B0KTsKKyAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5n
VHJlZU5vZGVEaWRTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBzdGQ6
Om51bGxvcHQpOwogfQogCiBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpt
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggYWIwNmRhYjVl
OWM5ZjY5Y2E4NGFlOTI5OGU5OTBiOGZjYjVkZGZjNy4uYmNiNDhlNDk1YzFiMGI4OWU3NWE3YWEz
M2U4NWU1OTRkN2M1ZTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpjb21taXRUcmVlU3RhdGUoc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbGluZ1N0YXRlVHJlZT4KICAgICBTY3JvbGxpbmdUcmVlOjpjb21taXRUcmVlU3RhdGUoV1RG
TW92ZShzY3JvbGxpbmdTdGF0ZVRyZWUpKTsKIH0KIAotdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1Ry
ZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNv
bnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50
PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpz
Y3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50
PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKIHsKICAgICBpZiAoIW1fc2Nyb2xsaW5nQ29vcmRp
bmF0b3IpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKaW5kZXggNzE4MmRhNmNhZjNiYTk0MzYw
ZmExZWIyNmI3YWFiMTczYzIyMDExZS4uNzMyNTQwNTljMmQ3NzAyMDVjZWZkYmQxNTMwYWIyNzkw
NGFhNzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlIDogcHVibGljIFNjcm9sbGluZ1RyZWUgewogcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IFRocmVhZGVkU2Nyb2xsaW5nVHJlZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKik7CiAK
LSAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29u
c3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPEZsb2F0UG9pbnQ+
JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFNj
cm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMpIG92ZXJyaWRlOworICAgIHZvaWQgc2Ny
b2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50
JiBzY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0
Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gPSBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cnJlbnRTbmFw
UG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRh
bCwgdW5zaWduZWQgdmVydGljYWwpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2
b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4IDU0
YmRhZjllOWNmMTMyZWQ1MDdkZWI0ODgzN2M3NGMwNDNjNjlhOGUuLjc4MTEzMTc3ZjhlZGY4MGM3
MDZlN2FiNWNmNWE2ZDhmNDAzOWU1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLm1tCkBAIC0xMDksMTMgKzEwOSwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdl
Q29ucwogewogICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25v
dXNseSgpKSB7CiAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBz
Y3JvbGxQb3NpdGlvbjsKLSAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2Rl
RGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgTnVsbG9wdCwgU2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKKyAgICAgICAgc2Nyb2xsaW5nVHJlZSgp
LnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3Np
dGlvbiwgc3RkOjpudWxsb3B0LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGxheW91dFZpZXdwb3J0OyAv
LyBGSVhNRTogaW1wbGVtZW50IGZvciBpT1MgV0sxLgogICAgIHNldFNjcm9sbExheWVyUG9zaXRp
b24oc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0KTsKLSAgICBzY3JvbGxpbmdUcmVlKCku
c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0
aW9uLCBOdWxsb3B0KTsKKyAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRT
Y3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBzdGQ6Om51bGxvcHQpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbExh
eWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUlPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUlPUy5jcHAKaW5kZXggOGIxMGZiM2JlMzY5MzNmNzU0Mjc5MTg5MGFjZjlkNTJk
NGM0MjYwNC4uMTBiM2Y4NzM0NWZkYTQzY2NkZmU5YzE1ZmU0MTdmNDZhZjU1NDVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVl
SU9TLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVJT1M6OmludmFsaWRh
dGUoKQogICAgIH0pOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVJT1M6OnNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNj
cm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRP
cmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlv
bkFjdGlvbikKK3ZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3Jv
bGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRp
b24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2lu
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24pCiB7CiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5n
VHJlZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVJT1MuaAppbmRleCAyZWUzMTcxMDE4MWRjNWI1MTk0MTk2Zjc1MjczYzkxM2E4Yjk3MzE0Li4x
YTlhYWUxYjQwYzgxMjY4MzQ0ODQxY2U3YjMwNzVlZjcwYTdlNTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgU2Nyb2xsaW5nVHJlZUlPUyA6IHB1YmxpYyBTY3JvbGxpbmdUcmVl
IHsKIAogICAgIFBhc3NSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IGNyZWF0ZVNjcm9sbGluZ1Ry
ZWVOb2RlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0
IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiYg
bGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gPSBTY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9s
bGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYg
c2Nyb2xsUG9zaXRpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZp
ZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGN1cnJlbnRTbmFw
UG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQg
aG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCmluZGV4IGJkMzc2NTNjNjMwMWQyY2M5NzBj
ZjkyMWE5YzE0OTZkNTYxYjcyOTEuLmQ5NDExYjQ0ZmU1N2FkNjhjZTVjZDYxY2E3ZTliYWM5MjYz
NzQ4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCkBA
IC0zODgsNyArMzg4LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFj
OjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnMKIHsKICAgICB1cGRhdGVN
YWluRnJhbWVQaW5TdGF0ZShzY3JvbGxQb3NpdGlvbik7CiAKLSAgICBPcHRpb25hbDxGbG9hdFBv
aW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
IGxheW91dFZpZXdwb3J0T3JpZ2luOwogICAgIGlmIChzY3JvbGxpbmdUcmVlKCkudmlzdWFsVmll
d3BvcnRFbmFibGVkKCkpIHsKICAgICAgICAgRmxvYXRQb2ludCB2aXNpYmxlQ29udGVudE9yaWdp
biA9IHNjcm9sbFBvc2l0aW9uOwogICAgICAgICBmbG9hdCBjb3VudGVyU2NhbGUgPSAxIC8gZnJh
bWVTY2FsZUZhY3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXgg
ZDEyMWQyM2Q3MWM3ZjY4YzA2ZmMzZjI1OTA2NzdmYTlkY2FkMjYxZS4uYWE1NjZhZjMzODRmYWUw
YzEzMDMyY2QzY2IxYzA1M2UyZDM3YzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwCkBAIC0xNDMsOCArMTQzLDggQEAgc3RydWN0IFNjb3BlZEZyYW1lU2VsZWN0aW9uU3Rh
dGUgewogICAgIGNvbnN0IEZyYW1lJiBmcmFtZTsKICAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVu
ZGVyZXI7CiAgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlcjsKLSAgICBPcHRpb25hbDx1bnNp
Z25lZD4gc3RhcnRPZmZzZXQ7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGVuZE9mZnNldDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydE9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBlbmRPZmZzZXQ7CiB9OwogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
Rm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaAppbmRleCBmZTgyM2M0MjQ1MTllYmY3OWM3YTUz
OTYwZDU1OWI5Njg1NWUzNmRmLi4wMzJjY2RhYjJjZGIwYjFkNGIwOTI5NjA1YWU3NTVmMTRmYWNj
ZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKQEAgLTM2LDcgKzM2LDcgQEAgc3Ry
dWN0IExpbmtJY29uIHsKICAgICBVUkwgdXJsOwogICAgIExpbmtJY29uVHlwZSB0eXBlOwogICAg
IFN0cmluZyBtaW1lVHlwZTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBzaXplOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgTGlua0ljb24mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggYWIxNTMxYmMxZThh
NDlkZGMwNjIyNGE0OWQ2YTM0YTQ1ZjFkNWIxOS4uZmFkNTQ0NTMzNDUyMzU1NGNmYzczYTU3ZjQw
MTVjNWUyM2YxMWVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBjbGFzcyBNZW1vcnlQcmVzc3VyZUhh
bmRsZXIgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgcmVhZEFuZE5vdGlmeSgpIGNvbnN0
OwogCi0gICAgICAgIE9wdGlvbmFsPGludD4gbV9mZDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IG1fZmQ7CiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9ub3RpZnlIYW5kbGVy
OwogI2lmIFVTRShHTElCKQogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fc291cmNlOwpAQCAt
MTY0LDggKzE2NCw4IEBAIGNsYXNzIE1lbW9yeVByZXNzdXJlSGFuZGxlciB7CiAgICAgQ0ZSdW5M
b29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlciB7IG51bGxwdHIgfTsKICAgICBMb2NrIG1fb2JzZXJ2
ZXJNdXRleDsKICNlbGlmIE9TKExJTlVYKQotICAgIE9wdGlvbmFsPGludD4gbV9ldmVudEZEOwot
ICAgIE9wdGlvbmFsPGludD4gbV9wcmVzc3VyZUxldmVsRkQ7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IG1fZXZlbnRGRDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9wcmVzc3VyZUxldmVsRkQ7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV2ZW50RkRQb2xsZXI+IG1fZXZlbnRGRFBvbGxlcjsKICAg
ICBSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1faG9sZE9mZlRpbWVyOwog
ICAgIHZvaWQgaG9sZE9mZlRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggYjRhYWY5NzFlMzNhYzc2MzIzZDlkZmM3MmNlZTgxYWNiMmMyZWNlMC4u
Y2JmZmU2ZTFjODEyYjRkZGQxNGU0NzAwM2E4Nzg0OGI0ZWYxYWRjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTQ1NCw4ICs0NTQsOCBAQCB2b2lkIFNjcm9sbFZp
ZXc6OmhhbmRsZURlZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpCiAg
ICAgZWxzZSBpZiAobV9kZWZlcnJlZFNjcm9sbE9mZnNldHMpCiAgICAgICAgIHNjcm9sbE9mZnNl
dENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwobV9kZWZlcnJlZFNjcm9sbE9mZnNldHMudmFs
dWUoKS5maXJzdCwgbV9kZWZlcnJlZFNjcm9sbE9mZnNldHMudmFsdWUoKS5zZWNvbmQpOwogICAg
IAotICAgIG1fZGVmZXJyZWRTY3JvbGxEZWx0YSA9IE51bGxvcHQ7Ci0gICAgbV9kZWZlcnJlZFNj
cm9sbE9mZnNldHMgPSBOdWxsb3B0OworICAgIG1fZGVmZXJyZWRTY3JvbGxEZWx0YSA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cyA9IHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxUbyhjb25zdCBTY3JvbGxQb3NpdGlvbiYgbmV3UG9z
aXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggZTVjMTgyMTg2OWRh
ZWQ2ZmZmNDgzODg1NjhmMTMwODg2YjJhM2IxNC4uZGI1NzBkZDk4NWIxNzcyNDA5YTUxNTBhZmQ3
NjNjMzBjMjQ3MTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtNDYy
LDggKzQ2Miw4IEBAIGNsYXNzIFNjcm9sbFZpZXcgOiBwdWJsaWMgV2lkZ2V0LCBwdWJsaWMgU2Ny
b2xsYWJsZUFyZWEgewogICAgIEludFNpemUgbV9maXhlZExheW91dFNpemU7CiAgICAgSW50U2l6
ZSBtX2NvbnRlbnRzU2l6ZTsKIAotICAgIE9wdGlvbmFsPEludFNpemU+IG1fZGVmZXJyZWRTY3Jv
bGxEZWx0YTsgLy8gTmVlZGVkIGZvciBXZWJLaXQgc2Nyb2xsaW5nCi0gICAgT3B0aW9uYWw8c3Rk
OjpwYWlyPFNjcm9sbE9mZnNldCwgU2Nyb2xsT2Zmc2V0Pj4gbV9kZWZlcnJlZFNjcm9sbE9mZnNl
dHM7IC8vIE5lZWRlZCBmb3IgcGxhdGZvcm0gd2lkZ2V0IHNjcm9sbGluZworICAgIHN0ZDo6b3B0
aW9uYWw8SW50U2l6ZT4gbV9kZWZlcnJlZFNjcm9sbERlbHRhOyAvLyBOZWVkZWQgZm9yIFdlYktp
dCBzY3JvbGxpbmcKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTY3JvbGxPZmZzZXQsIFNj
cm9sbE9mZnNldD4+IG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzOyAvLyBOZWVkZWQgZm9yIHBsYXRm
b3JtIHdpZGdldCBzY3JvbGxpbmcKIAogICAgIGJvb2wgbV9zY3JvbGxiYXJzU3VwcHJlc3NlZDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKaW5kZXggMzU4NjNiYzgyMDE0YzM5NzdjM2M2OTRmYTQy
NzZjMDU0MTFlZjFiMS4uNTkxMTk3OGFlZWMxOGYwODNmZGJmODVmMWFmM2VkMjQxNzkwMTE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIFRoZW1lIHsK
ICAgICAvLyBNZXRob2RzIHVzZWQgdG8gYWRqdXN0IHRoZSBSZW5kZXJTdHlsZXMgb2YgY29udHJv
bHMuCiAgICAgCiAgICAgLy8gVGhlIGZvbnQgZGVzY3JpcHRpb24gcmVzdWx0IHNob3VsZCBoYXZl
IGEgem9vbWVkIGZvbnQgc2l6ZS4KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZs
b2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CisgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRy
b2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICAKICAgICAvLyBUaGUgc2l6ZSBoZXJlIGlzIGlu
IHpvb21lZCBjb29yZGluYXRlcyBhbHJlYWR5LiBJZiBhIG5ldyBzaXplIGlzIHJldHVybmVkLCBp
dCBhbHNvIG5lZWRzIHRvIGJlIGluIHpvb21lZCBjb29yZGluYXRlcy4KICAgICB2aXJ0dWFsIExl
bmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsg
cmV0dXJuIHpvb21lZFNpemU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGEzNWM4YzY3
ZWUyMmI2ZWQ1ZGM4NTNiZGUyZTE5ZjNjZWRjZThmMWUuLjUyYTE2NmViYTJkMjMxOWQxNWExYjdl
ZDkwODJiNmIxNDMzZjNiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtODgsNyArODgs
NyBAQCBjbGFzcyBUaW1lckJhc2UgewogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQo
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+
IGFsaWduZWRGaXJlVGltZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKSBjb25zdCB7IHJldHVy
biBOdWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHM+IGFsaWduZWRGaXJlVGltZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgp
IGNvbnN0OwogICAgIHZvaWQgY2hlY2tIZWFwSW5kZXgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkwuY3BwCmluZGV4IGYyNjFiODQ2ODZjZmQxMmFhMDEyNTUyNzBiNDYyODA2YzQ2MWU2ZDUuLjcy
Njk3NWFhODExOTU3OGI4YzRlOTljMThkYzAwMmNmN2U2NmVjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmNwcApAQCAtNzE0LDEwICs3MTQsMTAgQEAgU3RyaW5nIFVSTDo6aG9zdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOwog
fQogCi1PcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BvcnRFbmQgfHwgbV9o
b3N0RW5kID49IG1fcG9ydEVuZCAtIDEpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIHVuc2ln
bmVkIG51bWJlcjsKQEAgLTcyNiw3ICs3MjYsNyBAQCBPcHRpb25hbDx1aW50MTZfdD4gVVJMOjpw
b3J0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3QobV9zdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRFbmQg
LSBtX2hvc3RFbmQgLSAxLCAmb2spOwogICAgIGlmICghb2sgfHwgbnVtYmVyID4gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbnVtYmVyOwogfQogCkBAIC04
MjYsNyArODI2LDcgQEAgdm9pZCBjbGVhckRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0
aW5nKCkKICAgICBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpLmNsZWFyKCk7
CiB9CiAKLU9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcgcHJvdG9jb2wpCitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpCiB7CiAgICAgY29uc3QgYXV0byYgZGVmYXVsdFBvcnRG
b3JQcm90b2NvbE1hcCA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXBGb3JUZXN0aW5nKCk7CiAg
ICAgYXV0byBpdGVyYXRvciA9IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAuZmluZChwcm90b2Nv
bC50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwpAQCAtMjI4OCw3ICsyMjg4LDcgQEAgYm9vbCBV
Ukw6OmlzQmxhbmtVUkwoKSBjb25zdAogCiBib29sIHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJs
KQogewotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKIAogICAgIC8vIFNpbmNlIG1v
c3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQi
IGNhc2UuCiAgICAgaWYgKCFwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCAwYzFiNzRiYWJi
MzZkYTc0NzczMjhkYmM1NWEwMTJkZDBjMDUxNjIwLi4wYzMwYjZhZTBiOGMwZmUyZGJhZTAxYzA2
YzBiZDc5MjRmYWJiMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApAQCAtMTAyLDcgKzEwMiw3IEBA
IGNsYXNzIFVSTCB7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmdWaWV3IHByb3RvY29sKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGhvc3QoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgaG9zdEFuZFBvcnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgdXNlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwYXNzKCkgY29u
c3Q7CkBAIC0zMTIsNyArMzEyLDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CiBXRUJDT1JFX0VYUE9SVCBi
b29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShjb25zdCBTdHJpbmcmIHVybCk7CiAKLU9w
dGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9j
b2wpOworc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJp
bmdWaWV3IHByb3RvY29sKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKHVpbnQxNl90IHBvcnQsIFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQg
c2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuY3BwCmluZGV4IGUxMDdjYWZlZGVmYzYyMDI3ZWRhZTEzOGRlYTI5YTYz
OTk2YjM2MjQuLmQ3ZjVmYWI3OTdiZWY0ZjRjYWE3NDE3YjJmMjk5MWQ0YjkwYjkwZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQg
VVJMUGFyc2VyOjplbmNvZGVRdWVyeShjb25zdCBWZWN0b3I8VUNoYXI+JiBzb3VyY2UsIGNvbnN0
IFRleHRFbmNvZGluZyYgZW5jCiAgICAgfQogfQogCi1PcHRpb25hbDx1aW50MTZfdD4gVVJMUGFy
c2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQorc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1Zp
ZXcgc2NoZW1lKQogewogICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBmdHBQb3J0ID0gMjE7CiAg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGdvcGhlclBvcnQgPSA3MDsKQEAgLTYzNCwxOSArNjM0
LDE5IEBAIE9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgCiAgICAgYXV0byBsZW5ndGggPSBzY2hlbWUubGVu
Z3RoKCk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CiAgICAgY2Fz
ZSAndyc6CiAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAgIGNhc2UgMjoKICAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQogICAgICAgICAgICAgICAgIHJldHVybiB3c1Bv
cnQ7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0g
J3MnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKICAgICAgICAgICAgICAg
ICByZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNjU3LDE2ICs2NTcsMTYgQEAgT3B0aW9uYWw8dWlu
dDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVt
ZSkKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3QnCiAgICAgICAgICAgICAgICAg
JiYgc2NoZW1lWzNdID09ICdwJykKICAgICAgICAgICAgICAgICByZXR1cm4gaHR0cFBvcnQ7Ci0g
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCiAg
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNj
aGVtZVszXSA9PSAncCcKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQogICAg
ICAgICAgICAgICAgIHJldHVybiBodHRwc1BvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KICAgICBjYXNlICdnJzoKICAgICAgICAgaWYgKGxlbmd0aCA9PSA2CkBA
IC02NzYsMTUgKzY3NiwxNSBAQCBPcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0
UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQogICAgICAgICAgICAgJiYgc2NoZW1l
WzRdID09ICdlJwogICAgICAgICAgICAgJiYgc2NoZW1lWzVdID09ICdyJykKICAgICAgICAgICAg
IHJldHVybiBnb3BoZXJQb3J0OwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlICdmJzoKICAgICAgICAgaWYgKGxlbmd0aCA9PSAz
CiAgICAgICAgICAgICAmJiBzY2hlbWVbMV0gPT0gJ3QnCiAgICAgICAgICAgICAmJiBzY2hlbWVb
Ml0gPT0gJ3AnKQogICAgICAgICAgICAgcmV0dXJuIGZ0cFBvcnQ7Ci0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IH0KIApAQCAtMjA1NSw5ICsyMDU1LDkgQEAgc3RhdGljIHNpemVfdCB6ZXJvU2VxdWVuY2VMZW5n
dGgoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4mIGFkZHJlc3MsIHNpemVfdAogICAgIHJl
dHVybiBlbmQgLSBiZWdpbjsKIH0KIAotc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gZmluZExvbmdl
c3RaZXJvU2VxdWVuY2UoY29uc3Qgc3RkOjphcnJheTx1aW50MTZfdCwgOD4mIGFkZHJlc3MpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0
IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQogewotICAgIE9wdGlvbmFsPHNpemVf
dD4gbG9uZ2VzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbG9uZ2VzdDsKICAgICBzaXpl
X3QgbG9uZ2VzdExlbmd0aCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyBpKysp
IHsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHplcm9TZXF1ZW5jZUxlbmd0aChhZGRyZXNzLCBp
KTsKQEAgLTIxMTQsNyArMjExNCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpzZXJpYWxpemVJUHY2KFVS
TFBhcnNlcjo6SVB2NkFkZHJlc3MgYWRkcmVzcykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KLU9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNl
KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvciwgYm9vbCYgZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKQorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJz
ZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJv
b2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKIHsKICAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWlu
dDhfdCB7CiAgICAgICAgIFVua25vd25CYXNlLApAQCAtMjEyNiw3ICsyMTI2LDcgQEAgT3B0aW9u
YWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcmFjdGVyVHlwZT4mIGkKICAgICBTdGF0ZSBzdGF0ZSA9IFN0YXRlOjpVbmtub3duQmFzZTsK
ICAgICBDaGVja2VkPHVpbnQzMl90LCBSZWNvcmRPdmVyZmxvdz4gdmFsdWUgPSAwOwogICAgIGlm
ICghaXRlcmF0b3IuYXRFbmQoKSAmJiAqaXRlcmF0b3IgPT0gJy4nKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB3aGlsZSAoIWl0ZXJh
dG9yLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKGlzVGFiT3JOZXdsaW5lKCppdGVyYXRvcikpIHsK
ICAgICAgICAgICAgIGRpZFNlZVN5bnRheFZpb2xhdGlvbiA9IHRydWU7CkBAIC0yMTU3LDMxICsy
MTU3LDMxIEBAIE9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlKENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBTdGF0ZTo6RGVjaW1hbDoKICAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgPCAn
MCcgfHwgKml0ZXJhdG9yID4gJzknKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB2YWx1ZSAq
PSAxMDsKICAgICAgICAgICAgIHZhbHVlICs9ICppdGVyYXRvciAtICcwJzsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICArK2l0ZXJhdG9yOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3Rh
dGU6Ok9jdGFsOgogICAgICAgICAgICAgQVNTRVJUKGRpZFNlZVN5bnRheFZpb2xhdGlvbik7CiAg
ICAgICAgICAgICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc3JykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgdmFsdWUgKj0gODsKICAgICAgICAgICAgIHZhbHVlICs9ICpp
dGVyYXRvciAtICcwJzsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNPdmVyZmxv
d2VkKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICArK2l0ZXJhdG9yOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RhdGU6OkhleDoKICAgICAgICAgICAgIEFTU0VSVChk
aWRTZWVTeW50YXhWaW9sYXRpb24pOwogICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQo
Kml0ZXJhdG9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgdmFsdWUgKj0gMTY7CiAgICAg
ICAgICAgICB2YWx1ZSArPSB0b0FTQ0lJSGV4VmFsdWUoKml0ZXJhdG9yKTsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNPdmVyZmxvd2VkKCkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICArK2l0ZXJhdG9yOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIx
OTgsNyArMjE5OCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHVpbnQ2NF90IHBvdzI1NihzaXpl
X3QgZXhwb25lbnQpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1PcHRp
b25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEhvc3QoQ29k
ZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCitzdGQ6Om9wdGlvbmFsPFVS
TFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0SG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKIHsKICAgICBhdXRvIGhvc3RCZWdpbiA9
IGl0ZXJhdG9yOwogCkBAIC0yMjEyLDMwICsyMjEyLDMwIEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6
SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXRlbXMu
c2l6ZSgpID49IDQpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBwYXJzZUlQdjRQaWVj
ZShpdGVyYXRvciwgZGlkU2VlU3ludGF4VmlvbGF0aW9uKSkKICAgICAgICAgICAgIGl0ZW1zLmFw
cGVuZChpdGVtLnZhbHVlKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghaXRl
cmF0b3IuYXRFbmQoKSkgewogICAgICAgICAgICAgaWYgKGl0ZW1zLnNpemUoKSA+PSA0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICBpZiAoKml0ZXJhdG9yID09ICcuJykKICAgICAgICAgICAg
ICAgICArK2l0ZXJhdG9yOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KICAgICB9CiAgICAgaWYgKCFpdGVyYXRvci5hdEVuZCgpIHx8ICFpdGVtcy5zaXplKCkgfHwg
aXRlbXMuc2l6ZSgpID4gNCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGl0ZW1zLnNpemUoKSA+IDEpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCkgLSAxOyBpKyspIHsKICAgICAgICAgICAg
IGlmIChpdGVtc1tpXSA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogICAg
IGlmIChpdGVtc1tpdGVtcy5zaXplKCkgLSAxXSA+PSBwb3cyNTYoNSAtIGl0ZW1zLnNpemUoKSkp
Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKGRpZFNlZVN5bnRheFZpb2xhdGlvbikKICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGhvc3RCZWdpbik7CkBAIC0yMjU0LDI3ICsyMjU0LDI3IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6
SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1PcHRpb25hbDx1aW50
MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQorc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gVVJM
UGFyc2VyOjpwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yKQogewogICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB1aW50
MzJfdCBwaWVjZSA9IDA7CiAgICAgYm9vbCBsZWFkaW5nWmVyb3MgPSBmYWxzZTsKICAgICBzaXpl
X3QgZGlnaXRDb3VudCA9IDA7CiAgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7CiAgICAg
ICAgIGlmICghaXNBU0NJSURpZ2l0KCppdGVyYXRvcikpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICsrZGlnaXRD
b3VudDsKICAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKSB7CiAgICAgICAg
ICAgICBpZiAobGVhZGluZ1plcm9zKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBsZWFkaW5n
WmVyb3MgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghcGllY2UgJiYgKml0ZXJhdG9y
ID09ICcwJykKICAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CiAgICAgICAgIHBpZWNl
ID0gcGllY2UgKiAxMCArICppdGVyYXRvciAtICcwJzsKICAgICAgICAgaWYgKHBpZWNlID4gMjU1
KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBhZHZhbmNlPENoYXJhY3RlclR5cGUsIFJlcG9ydFN5bnRheFZpb2xh
dGlvbjo6Tm8+KGl0ZXJhdG9yKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCiAgICAg
ICAgICAgICBicmVhazsKQEAgLTIyODIsNTEgKzIyODIsNTEgQEAgT3B0aW9uYWw8dWludDMyX3Q+
IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3QKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAocGllY2UgJiYgbGVhZGlu
Z1plcm9zKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4gcGllY2U7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci1PcHRpb25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNl
SVB2NEFkZHJlc3NJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0
ZXJhdG9yKQorc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6
OnBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+IGl0ZXJhdG9yKQogewogICAgIElQdjRBZGRyZXNzIGFkZHJlc3MgPSAwOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gcGllY2UgPSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQorICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGllY2UgPSBwYXJzZUlQdjRQaWVjZUluc2lkZUlQ
djYoaXRlcmF0b3IpKQogICAgICAgICAgICAgYWRkcmVzcyA9IChhZGRyZXNzIDw8IDgpICsgcGll
Y2UudmFsdWUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoaSA8IDMpIHsKICAg
ICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAg
ICBpZiAoKml0ZXJhdG9yICE9ICcuJykKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CiAg
ICAgICAgIH0gZWxzZSBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIEFT
U0VSVChpdGVyYXRvci5hdEVuZCgpKTsKICAgICByZXR1cm4gYWRkcmVzczsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJl
c3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJU
eXBlPiBjKQorc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6
OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKIHsKICAg
ICBBU1NFUlQoKmMgPT0gJ1snKTsKICAgICBhdXRvIGhvc3RCZWdpbiA9IGM7CiAgICAgYWR2YW5j
ZShjLCBob3N0QmVnaW4pOwogICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSVB2NkFkZHJlc3MgYWRk
cmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwogICAgIHNpemVfdCBwaWVjZVBvaW50
ZXIgPSAwOwotICAgIE9wdGlvbmFsPHNpemVfdD4gY29tcHJlc3NQb2ludGVyOworICAgIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBjb21wcmVzc1BvaW50ZXI7CiAKICAgICBpZiAoKmMgPT0gJzonKSB7
CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICAgICAgaWYgKGMuYXRFbmQoKSkK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKCpjICE9ICc6JykKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5jZShjLCBo
b3N0QmVnaW4pOwogICAgICAgICArK3BpZWNlUG9pbnRlcjsKICAgICAgICAgY29tcHJlc3NQb2lu
dGVyID0gcGllY2VQb2ludGVyOwpAQCAtMjMzNCwxOSArMjMzNCwxOSBAQCBPcHRpb25hbDxVUkxQ
YXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcgogICAgIAogICAgIHdoaWxlICghYy5hdEVuZCgpKSB7CiAgICAgICAgIGlmIChw
aWVjZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCpjID09ICc6JykgewogICAgICAg
ICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYWR2
YW5jZShjLCBob3N0QmVnaW4pOwogICAgICAgICAgICAgKytwaWVjZVBvaW50ZXI7CiAgICAgICAg
ICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50ZXI7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDYgfHwgKGNvbXByZXNz
UG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPCA2KSkgewotICAgICAgICAgICAgaWYgKE9wdGlvbmFs
PElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMp
KSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gaXB2NEFkZHJl
c3MgPSBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihjKSkgewogICAgICAgICAgICAgICAgIGlm
IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyID09IDUpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwogICAgICAg
ICAgICAgICAgIGFkZHJlc3NbcGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+
PiAxNjsKICAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRy
ZXNzLnZhbHVlKCkgJiAweEZGRkY7CkBAIC0yMzc3LDEyICsyMzc3LDEyIEBAIE9wdGlvbmFsPFVS
TFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyCiAgICAgICAgIGlmIChjLmF0RW5kKCkpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA4IHx8ICpjICE9ICc6JykKLSAgICAgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwogICAgIH0KICAgICAKICAgICBpZiAoIWMuYXRFbmQo
KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikgewogICAgICAgICBzaXplX3Qgc3dhcHMg
PSBwaWVjZVBvaW50ZXIgLSBjb21wcmVzc1BvaW50ZXIudmFsdWUoKTsKQEAgLTIzOTAsOSArMjM5
MCw5IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJ
UHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgICAgIHdoaWxlIChzd2FwcykKICAg
ICAgICAgICAgIHN0ZDo6c3dhcChhZGRyZXNzW3BpZWNlUG9pbnRlci0tXSwgYWRkcmVzc1tjb21w
cmVzc1BvaW50ZXIudmFsdWUoKSArIHN3YXBzLS0gLSAxXSk7CiAgICAgfSBlbHNlIGlmIChwaWVj
ZVBvaW50ZXIgIT0gOCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2lu
dGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRkcmVzcyk7CisgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVu
Y2UoYWRkcmVzcyk7CiAgICAgaWYgKHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKQogICAgICAgICBw
b3NzaWJsZUNvbXByZXNzUG9pbnRlci52YWx1ZSgpKys7CiAgICAgaWYgKFVOTElLRUxZKGNvbXBy
ZXNzUG9pbnRlciAhPSBwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikpCkBAIC0yNDUzLDcgKzI0NTMs
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUFTQ0lJKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotT3B0
aW9uYWw8VmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPj4g
VVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJ
bmxpbmVCdWZmZXJTaXplPj4gVVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JG
b3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbikKIHsKICAgICBWZWN0b3I8TENoYXIsIGRlZmF1bHRJ
bmxpbmVCdWZmZXJTaXplPiBhc2NpaTsKICAgICBpZiAoY29udGFpbnNPbmx5QVNDSUkoZG9tYWlu
KSkgewpAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgT3B0aW9uYWw8VmVjdG9yPExDaGFyLCBVUkxQYXJz
ZXI6OmRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPj4gVVJMUGFyc2VyOjpkb21haW5Ub0EKICAgICB9
CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgZm9yIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SIGFuZCBy
ZXRyeSB3aXRoIGFuIGFsbG9jYXRlZCBidWZmZXIuCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBVUkxQYXJzZXI6Omhhc0ludmFsaWREb21h
aW5DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCBVUkxQYXJzZXI6OmRlZmF1bHRJbmxpbmVC
dWZmZXJTaXplPiYgYXNjaWlEb21haW4pCkBAIC0yNjkwLDExICsyNjkwLDExIEBAIGJvb2wgVVJM
UGFyc2VyOjpwYXJzZUhvc3RBbmRQb3J0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+
IGl0ZXJhdG9yKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxTdHJpbmc+IFVSTFBh
cnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDxTdHJp
bmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQogewogICAgIGF1
dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CiAgICAgaWYgKHV0ZjguaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGF1dG8gcGVyY2VudERlY29kZWQgPSBwZXJjZW50RGVjb2RlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOwogICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29k
ZWQuc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKaW5kZXggYmI1ZTky
YmRhNzZlZDc1M2QzZTAwZWY1NDBiMTZhYzM4ZGQ3NGRhMC4uODY0ZWFjZGY3NTFmMTNjNDAxNjU5
ODJmYmFlYmY3MDNhYjM5OGFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKQEAg
LTUzLDggKzUzLDggQEAgY2xhc3MgVVJMUGFyc2VyIHsKICAgICBzdGF0aWMgY29uc3QgVUlETkEm
IGludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpOwogCiBwcml2YXRlOgotICAgIHN0
YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3
KTsKLSAgICBmcmllbmQgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
U3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CisgICAgZnJpZW5kIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CiAKICAgICBVUkwgbV91
cmw7CiAgICAgVmVjdG9yPExDaGFyPiBtX2FzY2lpQnVmZmVyOwpAQCAtOTQsMTAgKzk0LDEwIEBA
IGNsYXNzIFVSTFBhcnNlciB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2Vy
VHlwZT4gdm9pZCBhcHBlbmROdW1iZXJUb0FTQ0lJQnVmZmVyKFVuc2lnbmVkSW50ZWdlclR5cGUp
OwogICAgIHRlbXBsYXRlPGJvb2woKmlzSW5Db2RlU2V0KShVQ2hhcjMyKSwgdHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdm9pZCB1dGY4UGVyY2VudEVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyYWN0ZXJUeXBlPiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHZvaWQgdXRmOFF1ZXJ5RW5jb2RlKGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+Jik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8VmVj
dG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IGRvbWFpblRvQVNDSUkoY29uc3Qg
U3RyaW5nJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9y
Rm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVy
U2l6ZT4+IGRvbWFpblRvQVNDSUkoY29uc3QgU3RyaW5nJiwgY29uc3QgQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IFZlY3RvcjxMQ2hhciwgZGVmYXVs
dElubGluZUJ1ZmZlclNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QsIGNv
bnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZp
b2xhdGlvblBvc2l0aW9uKTsKICAgICBzdGF0aWMgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5l
QnVmZmVyU2l6ZT4gcGVyY2VudERlY29kZShjb25zdCBMQ2hhciosIHNpemVfdCk7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPFN0cmluZz4gZm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBp
bnB1dCk7CiAgICAgc3RhdGljIGJvb2wgaGFzSW52YWxpZERvbWFpbkNoYXJhY3Rlcihjb25zdCBW
ZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiYpOwogICAgIHZvaWQgcGVyY2Vu
dEVuY29kZUJ5dGUodWludDhfdCk7CiAgICAgdm9pZCBhcHBlbmRUb0FTQ0lJQnVmZmVyKFVDaGFy
MzIpOwpAQCAtMTEwLDEyICsxMTAsMTIgQEAgY2xhc3MgVVJMUGFyc2VyIHsKIAogICAgIHVzaW5n
IElQdjRBZGRyZXNzID0gdWludDMyX3Q7CiAgICAgdm9pZCBzZXJpYWxpemVJUHY0KElQdjRBZGRy
ZXNzKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJUHY0
QWRkcmVzcz4gcGFyc2VJUHY0SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8dWludDMyX3Q+
IHBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgYm9vbCYg
c3ludGF4VmlvbGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGQ6Om9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRIb3N0KENvZGVQb2ludEl0ZXJhdG9y
PENoYXJhY3RlclR5cGU+KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7CiAgICAgdXNpbmcgSVB2NkFk
ZHJlc3MgPSBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2SG9zdChDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IE9wdGlvbmFsPElQdjRBZGRyZXNzPiBwYXJzZUlQdjRBZGRyZXNzSW5zaWRl
SVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY2QWRkcmVzcz4gcGFyc2VJUHY2
SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+Jik7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4g
cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOwogICAgIHZvaWQgc2VyaWFsaXplSVB2NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKICAgICB2
b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA4OTAzMmRjYTRiMWI1MjQ4ZDRkNzk0
YzllZDM1NDdjNTgwNjA1MmMzLi5lMDIzY2I4ZjE4ZGVkOThiYzlkZDk0ZjJmYWFmNzhmYjhiNjNh
Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1h
Z2UgewogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZnJh
bWVDb3VudCgpOyB9CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlLnJlcGV0aXRpb25Db3VudCgpOyB9CiAgICAgU3RyaW5nIGZpbGVu
YW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2UuZmlsZW5hbWVF
eHRlbnNpb24oKTsgfQotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zb3VyY2UuaG90U3BvdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLmhvdFNw
b3QoKTsgfQogCiAgICAgLy8gRmxvYXRTaXplIGR1ZSB0byBvdmVycmlkZS4KICAgICBGbG9hdFNp
emUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLnNpemUoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5kZXggZTk5NGJhOTdjMmE4NmM3
NWVlOWNjYWM0N2U5YTZhYTRlYzJjMGU4Yi4uMjk2ODc5NjFlZDFlNGE3NjJjMDMxYzE1NzYxZWFk
YWI3ZmZkYzY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBA
IC02OSw3ICs2OSw3IEBAIFJHQkEzMiBtYWtlUHJlbXVsdGlwbGllZFJHQkEoaW50IHIsIGludCBn
LCBpbnQgYiwgaW50IGEpOwogUkdCQTMyIG1ha2VVblByZW11bHRpcGxpZWRSR0JBKGludCByLCBp
bnQgZywgaW50IGIsIGludCBhKTsKIAogV0VCQ09SRV9FWFBPUlQgUkdCQTMyIGNvbG9yV2l0aE92
ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9yLCBmbG9hdCBvdmVycmlkZUFscGhhKTsKLVJHQkEzMiBj
b2xvcldpdGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJy
aWRlQWxwaGEpOworUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9yLCBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhKTsKIAogV0VCQ09SRV9FWFBPUlQgUkdC
QTMyIG1ha2VSR0JBMzJGcm9tRmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0
IGEpOwogUkdCQTMyIG1ha2VSR0JBRnJvbUhTTEEoZG91YmxlIGgsIGRvdWJsZSBzLCBkb3VibGUg
bCwgZG91YmxlIGEpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIGlubGluZSB1aW50MTZfdCBmYXN0RGl2
aWRlQnkyNTUodWludDE2X3QgdmFsdWUpCiAgICAgcmV0dXJuIGFwcHJveGltYXRpb24gKyAocmVt
YWluZGVyID4+IDgpOwogfQogCi1pbmxpbmUgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEo
UkdCQTMyIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gb3ZlcnJpZGVBbHBoYSkKK2lubGluZSBSR0JB
MzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3IsIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IG92ZXJyaWRlQWxwaGEpCiB7CiAgICAgcmV0dXJuIG92ZXJyaWRlQWxwaGEgPyBjb2xvcldp
dGhPdmVycmlkZUFscGhhKGNvbG9yLCBvdmVycmlkZUFscGhhLnZhbHVlKCkpIDogY29sb3I7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCmluZGV4IGM2NjlkY2I0YzBmMGUyNTUwY2Q3MWZk
NWNlMThkNzY1YTc5NDJmN2MuLjhmYTExNGM0NTE0NDU5OGYxZTc1NGYzZTFjNjFhYWZjMmRjODYz
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCkBAIC01Niw3ICs1Niw3IEBAIGNsYXNz
IERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCB7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nj
aGVkdWxlZCB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlz
cGxheUlEOworICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+IG1fZGlzcGxheUlE
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDJi
OTE0ZWU4YjMzOWZkZGMwNDM4NzEyZDY5N2VjODQ3ZWY0YTdkMmYuLjUzNzRlNzI3MmJjODM3OGUz
YzIxYjcwNWJmY2U4ZjU5MDk2OWJhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKQEAgLTI4NCwxMCArMjg0LDEwIEBAIGNsYXNzIEZvbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxGb250PiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBtX25vbktlcm5lZENGU3RyaW5nQXR0cmlidXRlczsKICAgICBtdXRh
YmxlIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1fa2VybmVkQ0ZTdHJpbmdBdHRyaWJ1dGVz
OwotICAgIG11dGFibGUgT3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5U21h
bGxDYXBzOwotICAgIG11dGFibGUgT3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRl
ZEJ5QWxsU21hbGxDYXBzOwotICAgIG11dGFibGUgT3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBo
c1N1cHBvcnRlZEJ5UGV0aXRlQ2FwczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4g
bV9nbHlwaHNTdXBwb3J0ZWRCeUFsbFBldGl0ZUNhcHM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2FwczsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5QWxsU21hbGxDYXBz
OworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVk
QnlQZXRpdGVDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5
cGhzU3VwcG9ydGVkQnlBbGxQZXRpdGVDYXBzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKEhBUkZCVVpaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGFlOTc1MThiMTY5ZTEwMWM3YmZlYzE4MzAyODgzMTAz
MGE4MmU2YjguLjdlNjgzMTEzOGI5NzQwNjg5NWExNzVjY2M2YzE1MmNkNTU0YjM4MTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAg
LTMwMSw3ICszMDEsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2x5cGhCdWZmZXJGb3JUZXh0UnVu
KENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mCiAgICAgcmV0dXJuIGdldEds
eXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIp
OwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25l
ZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBj
dXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1Rl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0
bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29u
c3QKIHsKICAgICAvLyBEb24ndCBkcmF3IGFueXRoaW5nIHdoaWxlIHdlIGFyZSB1c2luZyBjdXN0
b20gZm9udHMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZywKICAgICAvLyBleGNl
cHQgaWYgdGhlICdmb3JjZScgYXJndW1lbnQgaXMgc2V0IHRvIHRydWUgKGluIHdoaWNoIGNhc2Ug
aXQgd2lsbCB1c2UgYSBmYWxsYmFjawpAQCAtMzA5LDcgKzMwOSw3IEBAIGZsb2F0IEZvbnRDYXNj
YWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSAmJiBjdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gPT0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkp
OworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsK
IAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJ
WE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMg
d2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1
MApAQCAtMzI3LDEyICszMjcsMTIgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJldHVy
biBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2ln
bmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKICAg
ICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5z
aWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWdu
ZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogCiAgICAgQ29kZVBh
dGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUg
ZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcg
YW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCkBAIC00OTAsOSAr
NDkwLDkgQEAgYm9vbCBGb250Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJs
ZShmbG9hdCYgd2lkdGgpIGNvbnN0CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQgRm9u
dENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRl
eHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25l
ZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICB1bnNpZ25l
ZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBj
b2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0
IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQg
bGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAgLTExNzksMjcgKzEx
NzksMjcgQEAgR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGUgY29tcHV0
ZVVuZGVybGluZVR5cGUoY29uc3QgVGV4dFJ1biYgdGUKIAogLy8gRklYTUU6IFRoaXMgZnVuY3Rp
b24gbWF5IG5vdCB3b3JrIGlmIHRoZSBlbXBoYXNpcyBtYXJrIHVzZXMgYSBjb21wbGV4IHNjcmlw
dCwgYnV0IG5vbmUgb2YgdGhlCiAvLyBzdGFuZGFyZCBlbXBoYXNpcyBtYXJrcyBkbyBzby4KLU9w
dGlvbmFsPEdseXBoRGF0YT4gRm9udENhc2NhZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmspIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4g
Rm9udENhc2NhZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmspIGNvbnN0CiB7CiAgICAgaWYgKG1hcmsuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFVDaGFyMzIgY2hh
cmFjdGVyOwogICAgIGlmICghbWFyay5pczhCaXQoKSkgewogICAgICAgICBTdXJyb2dhdGVQYWly
QXdhcmVUZXh0SXRlcmF0b3IgaXRlcmF0b3IobWFyay5jaGFyYWN0ZXJzMTYoKSwgMCwgbWFyay5s
ZW5ndGgoKSwgbWFyay5sZW5ndGgoKSk7CiAgICAgICAgIHVuc2lnbmVkIGNsdXN0ZXJMZW5ndGg7
CiAgICAgICAgIGlmICghaXRlcmF0b3IuY29uc3VtZShjaGFyYWN0ZXIsIGNsdXN0ZXJMZW5ndGgp
KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0gZWxzZQogICAgICAgICBjaGFyYWN0ZXIgPSBtYXJrWzBdOwogCi0gICAg
T3B0aW9uYWw8R2x5cGhEYXRhPiBnbHlwaERhdGEoZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJh
Y3RlciwgZmFsc2UsIEVtcGhhc2lzTWFya1ZhcmlhbnQpKTsKLSAgICByZXR1cm4gZ2x5cGhEYXRh
LnZhbHVlKCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRhIDogTnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEdseXBoRGF0YT4gZ2x5cGhEYXRhKGdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIs
IGZhbHNlLCBFbXBoYXNpc01hcmtWYXJpYW50KSk7CisgICAgcmV0dXJuIGdseXBoRGF0YS52YWx1
ZSgpLmlzVmFsaWQoKSA/IGdseXBoRGF0YSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogaW50IEZvbnRD
YXNjYWRlOjplbXBoYXNpc01hcmtBc2NlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25z
dAogewotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lz
TWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0ds
eXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAoIW1hcmtH
bHlwaERhdGEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBpbnQg
Rm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudChjb25zdCBBdG9taWNTdHJpbmcmIG1hcmsp
IGNvbnN0CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudChjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmspIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5
cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOworICAgIHN0ZDo6b3B0aW9u
YWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1h
cmspOwogICAgIGlmICghbWFya0dseXBoRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEy
MjcsNyArMTIyNyw3IEBAIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudChjb25z
dCBBdG9taWNTdHJpbmcmIG1hcmspIGNvbnN0CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNN
YXJrSGVpZ2h0KGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBPcHRpb25h
bDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFy
ayk7CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBo
YXNpc01hcmtHbHlwaERhdGEobWFyayk7CiAgICAgaWYgKCFtYXJrR2x5cGhEYXRhKQogICAgICAg
ICByZXR1cm4gMDsKIApAQCAtMTMyOSw3ICsxMzI5LDcgQEAgaW5saW5lIHN0YXRpYyBmbG9hdCBv
ZmZzZXRUb01pZGRsZU9mR2x5cGhBdEluZGV4KGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwKIAogdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgT3B0aW9u
YWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1h
cmspOworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1w
aGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICghbWFya0dseXBoRGF0YSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaAppbmRleCBhNDYzZTM3NWMwNjJlYjY0NmZiNmIzM2YzYmM5Y2JlMGQxMWJkNGM2Li4z
MmRlYzJmM2IyZTY2MjQ1YzRhZWJkNzQ5NzZhODM5MzEyNzgzYmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTEzMiw5ICsxMzIsOSBA
QCBjbGFzcyBGb250Q2FzY2FkZSB7CiAgICAgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rv
cj4mJikgY29uc3Q7CiAKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90
UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwotICAgIFdF
QkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2ln
bmVkPiB0byA9IE51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJ
ZkZvbnROb3RSZWFkeSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJhd1RleHQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQs
IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29u
c3Q7CiAgICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
b250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSk7Ci0gICAgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRv
bWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IE51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhh
c2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBEYXNoQXJy
YXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25z
dDsKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzIEZvbnRDYXNjYWRlIHsKICAgICBzdGF0aWMg
ZmxvYXQgd2lkdGgoVGV4dExheW91dCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgSGFz
aFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwKTsKIAogICAgIGludCBvZmZzZXRG
b3JQb3NpdGlvbihjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBh
cnRpYWxHbHlwaHMpIGNvbnN0OwotICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
Y29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20g
PSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBOdWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIGFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxl
Y3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8g
PSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NtYWxsQ2FwcygpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9udFZhcmlhbnRDYXBz
OjpTbWFsbDsgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgY2xhc3MgRm9udENhc2NhZGUgewogICAg
IGludCBvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0
IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKICAgICB2b2lkIGFk
anVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0
JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CiAKLSAg
ICBPcHRpb25hbDxHbHlwaERhdGE+IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9t
aWNTdHJpbmcmKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gZ2V0RW1waGFz
aXNNYXJrR2x5cGhEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogCiAgICAgc3RhdGlj
IGJvb2wgY2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCk7CiAgICAgc3RhdGlj
IGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmlu
ZGV4IGM3NzM0NDI5OWNhMTFjZTNhNzJkN2ZmZGYyZTY1MTNlYjQwNTY0ZjUuLjFiZjU5YzMwZWY1
MGY3ZTAxZWY5ODQ5MTY3Mjc1NDIwZmQzNzY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNjM3LDcgKzYzNyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgLS1t
X3RyYW5zcGFyZW5jeUNvdW50OwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0
KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCitmbG9h
dCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0dseXBocyhjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUsIGNvbnN0IEZv
bnQmIGZvbgogICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwg
ZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwgZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkuZm9u
dFNtb290aGluZygpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01h
cmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0
b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20s
IE9wdGlvbmFsPHVuc2lnbmVkPiB0bykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFz
aXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBm
cm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLAogICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gUlRMIDogTFRS
KTsKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYmlkaVJ1bi0+ZGlyT3Zl
cnJpZGUoZmFsc2UpKTsKIAotICAgICAgICBmbG9hdCB3aWR0aCA9IGZvbnQuZHJhd1RleHQoKnRo
aXMsIHN1YnJ1biwgY3VyclBvaW50LCAwLCBOdWxsb3B0LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24pOworICAgICAgICBmbG9hdCB3aWR0aCA9IGZvbnQuZHJhd1RleHQoKnRoaXMsIHN1YnJ1biwg
Y3VyclBvaW50LCAwLCBzdGQ6Om51bGxvcHQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAg
ICAgICAgIGN1cnJQb2ludC5tb3ZlKHdpZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlk
aVJ1bi0+bmV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAppbmRleCA5YTM3ZDdjOWZhNjBiNTBjYjE0ZjFhMjg0N2ZjMjJhODNi
ZjAwYmJlLi44MmI5NjEyNmNjYjIyNThjYzA3N2Y4NzZhNzQ3MGUyMmE2ZWI4MjQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApA
QCAtMzg3LDkgKzM4Nyw5IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgdm9pZCBzZXRU
ZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MpOwogICAgIFRleHREcmF3aW5nTW9k
ZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudGV4dERyYXdp
bmdNb2RlOyB9CiAKLSAgICBmbG9hdCBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFs
PHVuc2lnbmVkPiB0byA9IE51bGxvcHQpOworICAgIGZsb2F0IGRyYXdUZXh0KGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9t
ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZv
aWQgZHJhd0dseXBocyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYpOwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBj
b25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50
JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IE51bGxvcHQpOwor
ICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWdu
ZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsK
ICAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlv
biA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCiAgICAgdm9pZCBh
cHBseVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CkBAIC02OTgsNyArNjk4LDcg
QEAgY2xhc3MgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIHsKICAgICAgICAgICAgIG1f
Z3JhcGhpY3NDb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlv
blF1YWxpdHlUb1VzZSk7CiAgICAgfQogCi0gICAgZXhwbGljaXQgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBPcHRpb25hbDxJ
bnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkpCisgICAgZXhwbGljaXQg
SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0LCBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRlcnBvbGF0aW9u
UXVhbGl0eSkKICAgICAgICAgOiBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIoZ3JhcGhp
Y3NDb250ZXh0LCBpbnRlcnBvbGF0aW9uUXVhbGl0eSA/IGludGVycG9sYXRpb25RdWFsaXR5LnZh
bHVlKCkgOiBncmFwaGljc0NvbnRleHQuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKQogICAg
IHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKaW5kZXggMGM1N2QyMTk1NTRhNGMxZjM2NDBhNGUxYWQ5ZmE1MDkyYjU4ODUwYy4u
NTgzMTI1M2RmNzA0NGJiNzJhOTY1NjdmYzIzMmVhMjE1YWJmMDRjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMzA3LDExICsz
MDcsMTEgQEAgY2xhc3MgR3JhcGhpY3NMYXllciB7CiAKICAgICAvLyBUaGUgcG9zaXRpb24gb2Yg
dGhlIGxheWVyICh0aGUgbG9jYXRpb24gb2YgaXRzIHRvcC1sZWZ0IGNvcm5lciBpbiBpdHMgcGFy
ZW50KQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbjsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50
JiBwKSB7IG1fYXBwcm94aW1hdGVQb3NpdGlvbiA9IE51bGxvcHQ7IG1fcG9zaXRpb24gPSBwOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApIHsgbV9h
cHByb3hpbWF0ZVBvc2l0aW9uID0gc3RkOjpudWxsb3B0OyBtX3Bvc2l0aW9uID0gcDsgfQogCiAg
ICAgLy8gYXBwcm94aW1hdGVQb3NpdGlvbiwgaWYgc2V0LCBvdmVycmlkZXMgcG9zaXRpb24oKSBh
bmQgaXMgdXNlZCBkdXJpbmcgY292ZXJhZ2UgcmVjdCBjb21wdXRhdGlvbi4KICAgICBGbG9hdFBv
aW50IGFwcHJveGltYXRlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcHJveGltYXRlUG9z
aXRpb24gPyBtX2FwcHJveGltYXRlUG9zaXRpb24udmFsdWUoKSA6IG1fcG9zaXRpb247IH0KLSAg
ICB2b2lkIHNldEFwcHJveGltYXRlUG9zaXRpb24oT3B0aW9uYWw8RmxvYXRQb2ludD4gcCkgeyBt
X2FwcHJveGltYXRlUG9zaXRpb24gPSBwOyB9CisgICAgdm9pZCBzZXRBcHByb3hpbWF0ZVBvc2l0
aW9uKHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcCkgeyBtX2FwcHJveGltYXRlUG9zaXRpb24g
PSBwOyB9CiAKICAgICAvLyBGb3IgcGxhdGZvcm1zIHRoYXQgbW92ZSB1bmRlcmx5aW5nIHBsYXRm
b3JtIGxheWVycyBvbiBhIGRpZmZlcmVudCB0aHJlYWQgZm9yIHNjcm9sbGluZzsganVzdCB1cGRh
dGUgdGhlIEdyYXBoaWNzTGF5ZXIgc3RhdGUuCiAgICAgdmlydHVhbCB2b2lkIHN5bmNQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwKSB7IG1fcG9zaXRpb24gPSBwOyB9CkBAIC02MDIsNyArNjAy
LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllciB7CiAgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOwog
CiAgICAgLy8gSWYgc2V0LCBvdmVycmlkZXMgbV9wb3NpdGlvbi4gT25seSB1c2VkIGZvciBjb3Zl
cmFnZSBjb21wdXRhdGlvbi4KLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBtX2FwcHJveGltYXRl
UG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBtX2FwcHJveGltYXRlUG9z
aXRpb247CiAKICAgICBGbG9hdFBvaW50M0QgbV9hbmNob3JQb2ludDsKICAgICBGbG9hdFNpemUg
bV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2Jk
YWIwNzlhMzM3MmM3ODJjMDVlMWFhMTFlODc4Mjk3NTg2ZTU5YS4uODBiMTIyYjdlY2EyOTY5M2U0
YTM4MWQyNTNhMTU4YzY0NzI5ODk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgY2xhc3MgSW1hZ2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxJbWFnZT4gewogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsgfQogICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpLndpZHRoKCk7IH0KICAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBzaXplKCkuaGVpZ2h0KCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEludFBvaW50PiBob3RT
cG90KCkgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgRmxvYXRTaXplIG9yaWdpbmFsU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZjBlNjViODcwMDE4OTRkNjc3NzVlMDVmYzZhYWVhYjIy
NzM4MWIyYy4uMzk3YmVlZTVhNzEyMTA3MjQxYjk4N2YyOWE4MDI3ZTA3ZjEzMmZkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xMTEs
NyArMTExLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgewogICAgIAogICAgIHZvaWQgY29udmVydFRv
THVtaW5hbmNlTWFzaygpOwogICAgIAotICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gTnVsbG9wdCwgQ29vcmRpbmF0
ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKKyAgICBTdHJpbmcgdG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5ID0gc3RkOjpudWxsb3B0LCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVT
eXN0ZW0pIGNvbnN0OwogI2lmICFVU0UoQ0cpCiAgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsgfQogICAgIHZvaWQgdHJh
bnNmb3JtQ29sb3JTcGFjZShDb2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIENvbG9yU3BhY2UgZHN0
Q29sb3JTcGFjZSk7CkBAIC0xODAsNyArMTgwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgewogfTsK
IAogI2lmIFVTRShDRykKLVN0cmluZyBkYXRhVVJMKGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSk7CitTdHJpbmcgZGF0YVVS
TChjb25zdCBJbWFnZURhdGEmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSk7CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5j
cHAKaW5kZXggMWM0MThlMmVlZGU1OTFmZDhhZGM0Zjc0NmY5MDZjOGI0MDRhY2QwNC4uZTc4YTUz
N2U4MTRmMGEwZmY2NDhjZTBlZjExOGVkOGU4YTFkZDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCkBAIC0zMzUsMTIg
KzMzNSwxMiBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgcwogCiB2b2lkIEltYWdlRnJhbWVDYWNo
ZTo6Y2xlYXJNZXRhZGF0YSgpCiB7Ci0gICAgbV9mcmFtZUNvdW50ID0gTnVsbG9wdDsKLSAgICBt
X3NpbmdsZVBpeGVsU29saWRDb2xvciA9IE51bGxvcHQ7CisgICAgbV9mcmFtZUNvdW50ID0gc3Rk
OjpudWxsb3B0OworICAgIG1fc2luZ2xlUGl4ZWxTb2xpZENvbG9yID0gc3RkOjpudWxsb3B0Owog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZURlY29kZXI6OipmdW5jdG9yKSgpIGNv
bnN0PgotVCBJbWFnZUZyYW1lQ2FjaGU6Om1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwg
T3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlKQorVCBJbWFnZUZyYW1lQ2FjaGU6Om1ldGFkYXRhKGNv
bnN0IFQmIGRlZmF1bHRWYWx1ZSwgc3RkOjpvcHRpb25hbDxUPiogY2FjaGVkVmFsdWUpCiB7CiAg
ICAgaWYgKGNhY2hlZFZhbHVlICYmICpjYWNoZWRWYWx1ZSkKICAgICAgICAgcmV0dXJuIGNhY2hl
ZFZhbHVlLT52YWx1ZSgpOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIFQgSW1hZ2VGcmFtZUNhY2hlOjpt
ZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29u
c3Q+Ci1UIEltYWdlRnJhbWVDYWNoZTo6ZnJhbWVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWU6OkNhY2hpbmcg
Y2FjaGluZywgT3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlKQorVCBJbWFnZUZyYW1lQ2FjaGU6OmZy
YW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsLCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIHN0ZDo6b3B0aW9uYWw8VD4q
IGNhY2hlZFZhbHVlKQogewogICAgIGlmIChjYWNoZWRWYWx1ZSAmJiAqY2FjaGVkVmFsdWUpCiAg
ICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKQEAgLTQwMCw5ICs0MDAsOSBAQCBT
dHJpbmcgSW1hZ2VGcmFtZUNhY2hlOjpmaWxlbmFtZUV4dGVuc2lvbigpCiAgICAgcmV0dXJuIG1l
dGFkYXRhPFN0cmluZywgKCZJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKT4oU3RyaW5n
KCksICZtX2ZpbGVuYW1lRXh0ZW5zaW9uKTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdl
RnJhbWVDYWNoZTo6aG90U3BvdCgpCitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJbWFnZUZyYW1l
Q2FjaGU6OmhvdFNwb3QoKQogewotICAgIHJldHVybiBtZXRhZGF0YTxPcHRpb25hbDxJbnRQb2lu
dD4sICgmSW1hZ2VEZWNvZGVyOjpob3RTcG90KT4oTnVsbG9wdCwgJm1faG90U3BvdCk7CisgICAg
cmV0dXJuIG1ldGFkYXRhPHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+LCAoJkltYWdlRGVjb2Rlcjo6
aG90U3BvdCk+KHN0ZDo6bnVsbG9wdCwgJm1faG90U3BvdCk7CiB9CiAKIEludFNpemUgSW1hZ2VG
cmFtZUNhY2hlOjpzaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VGcmFtZUNhY2hlLmgKaW5kZXggNmY5MDVhMTBhNmJhMmUzMzE0OWUyMzFjMmRkM2M3
NWEyMzRmZTEwYi4uMzJlZTIxZTg2OTk0M2FlMDdmNjVhNzlhODEwMTczZTQ0NzY4ZWRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hl
LmgKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgSW1hZ2VGcmFtZUNhY2hlIDogcHVibGljIFJlZkNv
dW50ZWQ8SW1hZ2VGcmFtZUNhY2hlPiB7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKICAgICBS
ZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCk7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCk7Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEludFBvaW50PiBob3RTcG90KCk7CiAgICAgCiAgICAgLy8gSW1hZ2UgbWV0YWRhdGEg
d2hpY2ggaXMgY2FsY3VsYXRlZCBmcm9tIHRoZSBmaXJzdCBJbWFnZUZyYW1lLgogICAgIEludFNp
emUgc2l6ZSgpOwpAQCAtMTA2LDEwICsxMDYsMTAgQEAgY2xhc3MgSW1hZ2VGcmFtZUNhY2hlIDog
cHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VGcmFtZUNhY2hlPiB7CiAgICAgSW1hZ2VGcmFtZUNhY2hl
KE5hdGl2ZUltYWdlUHRyJiYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VE
ZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4KLSAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1
bHRWYWx1ZSwgT3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlID0gbnVsbHB0cik7CisgICAgVCBtZXRh
ZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIHN0ZDo6b3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVl
ID0gbnVsbHB0cik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBUIChJbWFnZUZyYW1lOjoq
ZnVuY3RvcikoKSBjb25zdD4KLSAgICBUIGZyYW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OlVuZGVmaW5kZWQsIEltYWdl
RnJhbWU6OkNhY2hpbmcgPSBJbWFnZUZyYW1lOjpDYWNoaW5nOjpFbXB0eSwgT3B0aW9uYWw8VD4q
ID0gbnVsbHB0cik7CisgICAgVCBmcmFtZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpVbmRlZmluZGVkLCBJbWFnZUZyYW1l
OjpDYWNoaW5nID0gSW1hZ2VGcmFtZTo6Q2FjaGluZzo6RW1wdHksIHN0ZDo6b3B0aW9uYWw8VD4q
ID0gbnVsbHB0cik7CiAKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBk
ZWNvZGVkU2l6ZSk7CkBAIC0xNTMsMTYgKzE1MywxNiBAQCBjbGFzcyBJbWFnZUZyYW1lQ2FjaGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUZyYW1lQ2FjaGU+IHsKICAgICBSZWZQdHI8V29ya1F1
ZXVlPiBtX2RlY29kaW5nUXVldWU7CiAKICAgICAvLyBJbWFnZSBtZXRhZGF0YS4KLSAgICBPcHRp
b25hbDxib29sPiBtX2lzU2l6ZUF2YWlsYWJsZTsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fZnJh
bWVDb3VudDsKLSAgICBPcHRpb25hbDxSZXBldGl0aW9uQ291bnQ+IG1fcmVwZXRpdGlvbkNvdW50
OwotICAgIE9wdGlvbmFsPFN0cmluZz4gbV9maWxlbmFtZUV4dGVuc2lvbjsKLSAgICBPcHRpb25h
bDxPcHRpb25hbDxJbnRQb2ludD4+IG1faG90U3BvdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1faXNTaXplQXZhaWxhYmxlOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2ZyYW1lQ291
bnQ7CisgICAgc3RkOjpvcHRpb25hbDxSZXBldGl0aW9uQ291bnQ+IG1fcmVwZXRpdGlvbkNvdW50
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOworICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxJbnRQb2ludD4+IG1faG90U3BvdDsKIAogICAgIC8v
IEltYWdlIG1ldGFkYXRhIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZmlyc3QgSW1hZ2VG
cmFtZS4KLSAgICBPcHRpb25hbDxJbnRTaXplPiBtX3NpemU7Ci0gICAgT3B0aW9uYWw8SW50U2l6
ZT4gbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwotICAgIE9wdGlvbmFsPENvbG9yPiBtX3Np
bmdsZVBpeGVsU29saWRDb2xvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBtX3NpbmdsZVBpeGVsU29saWRDb2xvcjsKIH07CiAg
ICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAppbmRleCAzZTI0MTI2YjQ2MDRmMDU3MDViZTZlMjQwNzhlZjUyZWMwNThlZTEzLi43MzgxOGQ5
ZjA1ZDgxZWI4MzJjMjRjNzJmMTliNjQwZWEyNGU2ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3Mg
SW1hZ2VTb3VyY2UgewogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgeyByZXR1cm4gbV9mcmFtZUNh
Y2hlLT5mcmFtZUNvdW50KCk7IH0KICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50
KCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5yZXBldGl0aW9uQ291bnQoKTsgfQogICAgIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZmlsZW5hbWVFeHRl
bnNpb24oKTsgfQotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgeyByZXR1cm4gbV9m
cmFtZUNhY2hlLT5ob3RTcG90KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RT
cG90KCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5ob3RTcG90KCk7IH0KIAogICAgIC8vIEltYWdl
IG1ldGFkYXRhIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZmlyc3QgSW1hZ2VGcmFtZS4K
ICAgICBJbnRTaXplIHNpemUoKSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUtPnNpemUoKTsgfQpAQCAt
MTEwLDcgKzExMCw3IEBAIGNsYXNzIEltYWdlU291cmNlIHsKICAgICBSZWY8SW1hZ2VGcmFtZUNh
Y2hlPiBtX2ZyYW1lQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwogCi0gICAgT3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4gbV9tYXhpbXVtU3Vic2Ft
cGxpbmdMZXZlbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11
bVN1YnNhbXBsaW5nTGV2ZWw7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBleHBvc2UgYSBzZXR0aW5nIHRvIGVuYWJsZS9kaXNhYmxlIHByb2dyZXNzaXZlIGxv
YWRpbmcgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApp
bmRleCAyNWZlNDMzMzY4NzQ3ZDgwYTk4NTUxYjk2NTc1MWM0M2QxN2NlYTNmLi5hN2Q5MDcxMjk0
ZjU3Mjk2NmI1OGI3NDU0YTczZWUyMzVjM2ZiNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtNDYyLDEzICs0NjIsMTMg
QEAgc3RhdGljIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIGFkanVzdGVkdFJhZGlpRm9ySHVnZ2lu
Z0N1cnZlKGNvbnN0IEZsb2F0U2l6ZSYgdG8KICAgICByZXR1cm4gcmFkaWk7CiB9CiAgICAgCi1z
dGF0aWMgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJvbVBvbHlnb24oY29uc3QgRmxvYXRQb2lu
dEdyYXBoOjpQb2x5Z29uJiBwb2x5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBy
ZWN0RnJvbVBvbHlnb24oY29uc3QgRmxvYXRQb2ludEdyYXBoOjpQb2x5Z29uJiBwb2x5KQogewog
ICAgIGlmIChwb2x5LnNpemUoKSAhPSA0KQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8RmxvYXRS
ZWN0PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KCk7CiAKLSAg
ICBPcHRpb25hbDxGbG9hdFBvaW50PiB0b3BMZWZ0OwotICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+
IGJvdHRvbVJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gdG9wTGVmdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGJvdHRvbVJpZ2h0OwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwb2x5LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHRv
RWRnZSA9IHBvbHlbaV07CiAgICAgICAgIGNvbnN0IGF1dG8mIGZyb21FZGdlID0gKGkgPiAwKSA/
IHBvbHlbaSAtIDFdIDogcG9seVtwb2x5LnNpemUoKSAtIDFdOwpAQCAtNDgyLDcgKzQ4Miw3IEBA
IHN0YXRpYyBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3RGcm9tUG9seWdvbihjb25zdCBGbG9hdFBv
aW50R3JhcGg6OlBvbHlnb24mIHBvbHkpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCF0b3BM
ZWZ0IHx8ICFib3R0b21SaWdodCkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEZsb2F0UmVjdD4o
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PigpOwogICAgIHJldHVy
biBGbG9hdFJlY3QodG9wTGVmdC52YWx1ZSgpLCBib3R0b21SaWdodC52YWx1ZSgpKTsKIH0KIApA
QCAtNTE2LDcgKzUxNiw3IEBAIFBhdGggUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtXcmFw
cGVkUmVjdHNGb3JPdXRsaW5lKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+CiAgICAgICAgIHJldHVy
biBQYXRoKCk7CiAgICAgY29uc3QgYXV0byYgcG9seSA9IHBvbHlzLmF0KDApOwogICAgIC8vIEZh
c3QgcGF0aCB3aGVuIHBvbHkgaGFzIG9uZSByZWN0IG9ubHkuCi0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiByZWN0ID0gcmVjdEZyb21Qb2x5Z29uKHBvbHkpOworICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiByZWN0ID0gcmVjdEZyb21Qb2x5Z29uKHBvbHkpOwogICAgIGlmIChyZWN0KQogICAg
ICAgICByZXR1cm4gcm91bmRlZFJlY3QocmVjdC52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCA1MjNiM2FmNWQ3YmU3
N2ZhMWRlNzY5ZThkYzEzMDc2ZDVmM2MyMTNmLi4zMjljYTEwMDliY2E4ZGExYThjZTEwMTE4MjAz
NTBmZmU5OTRhM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcApAQCAtNDAwLDcgKzQwMCw3IEBAIEludFJlY3QgU2hhZG93Qmx1cjo6Y2Fs
Y3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50
aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9seWdvbiA9IHRyYW5zZm9y
bS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAgICAgdHJhbnNmb3JtZWRQ
b2x5Z29uLm1vdmUobV9vZmZzZXQpOwotICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5
Z29uKS5ib3VuZGluZ0JveCgpOworICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdv
bikuYm91bmRpbmdCb3goKTsKICAgICB9IGVsc2UgewogICAgICAgICBsYXllclJlY3QgPSBzaGFk
b3dlZFJlY3Q7CiAgICAgICAgIGxheWVyUmVjdC5tb3ZlKG1fb2Zmc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKaW5kZXggMGQyYjQ4NGJk
OGZmNzhmMzdlNGQ1ZjVlMDcyMmIxZjQ5OTkxM2I0YS4uYmIxZDMzMTU4MzI3ZDBlMTllM2QyYmVj
ODA1MGUzYjk4NDQxYzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGlsZWRCYWNraW5nLmgKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgVGlsZWRCYWNraW5nIHsK
ICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCgpIGNvbnN0ID0gMDsKIAogICAgIC8v
IE9ubHkgdXNlZCB0byB1cGRhdGUgdGhlIHRpbGUgY292ZXJhZ2UgbWFwLiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TGF5b3V0Vmlld3BvcnRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5b3V0Vmlld3BvcnRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldENvdmVyYWdlUmVjdChjb25zdCBGbG9h
dFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0KCkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYjc1OWNkOGI1Y2QxMGM5YTEzOTlmZjE3
OGUwOTMzNWQ3MGUyMzE3MC4uYWMwNDYwOWZkZDY3ZDkyMWZkODk3YjNiYTEzMDE5MGM5MzhkOWQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzU1LDcgKzIzNTUsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCYgYwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0
aChtX2xhc3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9sYXN0SW1hZ2UuZ2V0KCkp
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSBbZmlyc3RFbmFibGVkVmlk
ZW9UcmFjayBwcmVmZXJyZWRUcmFuc2Zvcm1dOwotICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91
dHB1dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUmVjdChvdXRwdXRSZWN0KTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRw
dXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBSZWN0KG91dHB1dFJlY3QpOwogCiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9U
cmFuc2Zvcm0pOwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgp
LCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aAppbmRleCA1NTNkZThmYmVhMDdlNjZhMGEyNDIzZDBlZGFmNTUwZjcwYTUyYjU4Li4wNjRlZjhm
NTA3ZjkyYzg0ZGVkMTEyMWJhZTc1NGMzMDMyZWI3NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTE1OCw3ICsxNTgs
NyBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBTb3Vy
Y2VCdWZmZXJQcml2YXRlIHsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBtX2NsaWVu
dDsKICAgICBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKiBtX3Nlc3Npb24geyBudWxscHRy
IH07CiAKLSAgICBPcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwogICAgIEZsb2F0U2l6ZSBtX2N1cnJlbnRT
aXplOwogICAgIGJvb2wgbV9wYXJzaW5nU3VjY2VlZGVkOwogICAgIGJvb2wgbV9wYXJzZXJTdGF0
ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZmMyZWI4YjZmZjhkZGEwN2IwYTc2OTlj
NTQ2OTg5YTUxMDNhYWZkMy4uOGEwMjQzZGUyZmJmYzllNmU0ZDE0NTI0ODIxODc2MzQ5ZDg4YzA0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0KQEAgLTkwMiw3ICs5MDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpmbHVzaChBdG9taWNTdHJpbmcgdHJhY2tJRFN0cmluZykKIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICpyZW5k
ZXJlcikKIHsKICAgICBbcmVuZGVyZXIgZmx1c2hdOwotICAgIG1fY2FjaGVkU2l6ZSA9IE51bGxv
cHQ7CisgICAgbV9jYWNoZWRTaXplID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1fbWVkaWFT
b3VyY2UpIHsKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNldEhhc0F2YWlsYWJs
ZVZpZGVvRnJhbWUoZmFsc2UpOwpAQCAtMTAwMSw3ICsxMDAxLDcgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6c2Vla1RvVGltZShNZWRpYVRpbWUgdGltZSkKIAogRmxvYXRTaXpl
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSgpCiB7Ci0gICAgcmV0dXJu
IG1fY2FjaGVkU2l6ZS52YWx1ZU9yKEZsb2F0U2l6ZSgpKTsKKyAgICByZXR1cm4gbV9jYWNoZWRT
aXplLnZhbHVlX29yKEZsb2F0U2l6ZSgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhpbnQgdHJhY2tJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCmluZGV4IDUzZDgwZTIwZDAwNWU0Y2NhN2NhNTIxZDc0YWY2MGJlZTQ3MDAwNDUuLmY3
OTQ4OThmZmI3M2RiMmUxYWIzZmYzNzViMDgwYmY2N2VhZTYzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApA
QCAtMTI3NCw3ICsxMjc0LDcgQEAgR3JhcGhpY3NMYXllckNBOjpWaXNpYmxlQW5kQ292ZXJhZ2VS
ZWN0cyBHcmFwaGljc0xheWVyQ0E6OmNvbXB1dGVWaXNpYmxlQW5kQ292ZXIKICAgICB9CiAKICAg
ICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0ID0gY2xpcFJlY3RGb3JTZWxmOwotICAgIE9wdGlvbmFs
PEZsb2F0UXVhZD4gcXVhZCA9IHN0YXRlLm1hcHBlZFNlY29uZGFyeVF1YWQoJm1hcFdhc0NsYW1w
ZWQpOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPiBxdWFkID0gc3RhdGUubWFwcGVkU2Vj
b25kYXJ5UXVhZCgmbWFwV2FzQ2xhbXBlZCk7CiAgICAgaWYgKHF1YWQgJiYgIW1hcFdhc0NsYW1w
ZWQgJiYgIWFwcGx5V2FzQ2xhbXBlZCkKICAgICAgICAgY292ZXJhZ2VSZWN0ID0gKCpxdWFkKS5i
b3VuZGluZ0JveCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggNDEzMmIwNDg2YTNhODdkMmVmM2EzNzg4
YTI3OTliNjE0YjNhMWUyYy4uMzhhNGQyODU1MjZjNGYyYzJkZjc2NzgzNTFhZDMxMGE3Mzc4NjFm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6
OnNldFZpc2libGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB1cGRhdGVUaWxlQ292
ZXJhZ2VNYXAoKTsKIH0KIAotdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0TGF5b3V0Vmlld3BvcnRS
ZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCkKK3ZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldExh
eW91dFZpZXdwb3J0UmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCkKIHsKICAgICBp
ZiAocmVjdCA9PSBtX2xheW91dFZpZXdwb3J0UmVjdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgK
aW5kZXggYzNlZTQxZTA2YmQ4ODIwMDMxZWQyOTIxMjg2MTVmZTc5ZDkzM2FjOC4uOGM4NGM3Y2M5
Mjc2NmM0NmY5NzU5MTE3MTFmODk3YmRlYmIxOGRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCkBAIC04Miw3ICs4Miw3
IEBAIGNsYXNzIFRpbGVDb250cm9sbGVyIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAK
ICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Zp
c2libGVSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fY292ZXJhZ2VSZWN0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlv
dXRWaWV3cG9ydFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFZpZXdwb3J0UmVjdDsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRWaWV3cG9ydFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2xheW91dFZpZXdwb3J0UmVjdDsgfQogCiAgICAgdW5zaWduZWQgYmxhbmtQaXhl
bENvdW50KCkgY29uc3Q7CiAgICAgc3RhdGljIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudEZvclRp
bGVzKGNvbnN0IFBsYXRmb3JtTGF5ZXJMaXN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50
UG9pbnQmKTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxlciBmaW5hbCA6
IHB1YmxpYyBUaWxlZEJhY2tpbmcgewogCiAgICAgLy8gVGlsZWRCYWNraW5nIG1lbWJlciBmdW5j
dGlvbnMuCiAgICAgdm9pZCBzZXRWaXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldExheW91dFZpZXdwb3J0UmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+KSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldExheW91dFZpZXdwb3J0UmVjdChzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4pIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q292ZXJhZ2VSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogICAgIGJvb2wgdGlsZXNXb3VsZENoYW5nZUZvckNvdmVyYWdlUmVj
dChjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFRpbGVkU2Ny
b2xsaW5nSW5kaWNhdG9yUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpAQCAt
MTkyLDcgKzE5Miw3IEBAIGNsYXNzIFRpbGVDb250cm9sbGVyIGZpbmFsIDogcHVibGljIFRpbGVk
QmFja2luZyB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVHcmlkPiBtX3pvb21lZE91dFRpbGVH
cmlkOwogCiAgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8vIE9ubHkgdXNlZCBmb3Igc2Ny
b2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2xheW91
dFZpZXdwb3J0UmVjdDsgLy8gT25seSB1c2VkIGJ5IHRoZSB0aWxlZCBzY3JvbGxpbmcgaW5kaWNh
dG9yLgorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2xheW91dFZpZXdwb3J0UmVjdDsg
Ly8gT25seSB1c2VkIGJ5IHRoZSB0aWxlZCBzY3JvbGxpbmcgaW5kaWNhdG9yLgogICAgIEZsb2F0
UmVjdCBtX2NvdmVyYWdlUmVjdDsKICAgICBJbnRSZWN0IG1fYm91bmRzQXRMYXN0UmV2YWxpZGF0
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCBjZmM2NmZhMDdmNDcwNTc1YmExYzFkYjE1
MmE2MDMzMzA1YmQ5ZGM0Li4wYjBlNjk1NjliNDU1ZTA4OTNlZDRlNjA5YzQzZmQ2ZTViNzY1ZGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtNTQzLDcgKzU0Myw3IEBAIHN0YXRpYyBib29s
IGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFZlY3RvcjxjCiAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVh
bShpbWFnZSwgd3JpdGVGdW5jdGlvbiwgb3V0cHV0KSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUzsK
IH0KIAotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG91YmxlPiwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0cmluZyBJbWFn
ZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcAppbmRleCA0NTg3NTYyNDA0ZjdkMWFlNDIzZDU2NGEzYzJmNGZlODJlNzY1OGM2
Li5mNmM1NDRjNGM2M2U4YmVjZmQ0MTVhZWQwYjlhNTk0ZWE3ZGIzMzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApA
QCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21N
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBib29s
IGVuY29kZUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIHV0aSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBDRk11dGFibGVEYXRhUmVmIGRhdGEpCitzdGF0aWMgYm9vbCBlbmNv
ZGVJbWFnZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiB1dGksIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBDRk11dGFibGVEYXRhUmVmIGRhdGEpCiB7CiAgICAgaWYgKCFpbWFn
ZSB8fCAhdXRpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODMsNyArNDgz
LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSwgQ0ZTdHJpbmdS
ZWYgdXRpLCBPcHRpb25hbDxkb3VibGU+IHF1YWwKICAgICByZXR1cm4gQ0dJbWFnZURlc3RpbmF0
aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogfQogCi1zdGF0aWMgU3RyaW5nIGRhdGFV
UkwoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KQorc3RhdGljIFN0cmluZyBkYXRhVVJMKENHSW1hZ2VSZWYgaW1hZ2UsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewog
ICAgIGF1dG8gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICBBU1NFUlQodXRp
KTsKQEAgLTQ5OCw3ICs0OTgsNyBAQCBzdGF0aWMgU3RyaW5nIGRhdGFVUkwoQ0dJbWFnZVJlZiBp
bWFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPgogICAgIHJldHVy
biAiZGF0YToiICsgbWltZVR5cGUgKyAiO2Jhc2U2NCwiICsgYmFzZTY0RGF0YTsKIH0KIAotU3Ry
aW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorU3RyaW5nIEltYWdl
QnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVU
eXBlKSk7CiAKQEAgLTUzOSw3ICs1MzksNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksCiAgICAg
cmV0dXJuIGRhdGFVUkwoaW1hZ2UuZ2V0KCksIG1pbWVUeXBlLCBxdWFsaXR5KTsKIH0KIAotU3Ry
aW5nIGRhdGFVUkwoY29uc3QgSW1hZ2VEYXRhJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK1N0cmluZyBkYXRhVVJMKGNvbnN0IEltYWdl
RGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSkKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGIy
OTAzMWViYjcwZjFhZTBkNzU1NDQzNWE2NjhlMzM1ZjMwYTYyM2UuLmRkMjhhNGEwMGNmNWY3N2Yx
M2E1NzJkNTQ4Y2U4OGU3MzU5ZTNlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIwMywyMyArMjAzLDIz
IEBAIFJlcGV0aXRpb25Db3VudCBJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIFJlcGV0aXRpb25Db3VudE5vbmU7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50
PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRQb2ludD4g
SW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNB
dEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0
KCkpKTsKICAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGludCB4ID0gLTEsIHkgPSAtMTsK
ICAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
cHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RYIikpOwogICAgIGlmICghbnVtIHx8ICFD
Rk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBudW0g
PSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZT
VFIoImhvdHNwb3RZIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwg
a0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoeCA8IDAgfHwgeSA8IDApCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIHJldHVybiBJbnRQb2ludCh4LCB5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDZiYzIzNjgxYWE2MTk5
ZTIxOTI3MWFjM2Y1MDBmMDY0ZjUxYjVhZmQuLjRlMGY2NzVkM2I4ZGM3MzM3NmZkMjQ2YTEwNTYw
YjVhZjE0YmJkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJbWFnZURlY29k
ZXIgewogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CiAgICAgUmVwZXRpdGlvbkNvdW50
IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0OwotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OwogCiAgICAgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQpIGNvbnN0OwogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENvY29hLm1tCmluZGV4IDUxMDJjMjFkMWJkNjU3ZmQ3YTRjMzA1MzNmOGY4Yjg1ZTJkNmNi
ODguLjljMTg2Y2QyNDBjNTc0MjllNDhlYjg4NWZkODJkYTg4NTg5ZmYwZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KQEAg
LTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNUcnVlVHlwZUZlYXR1cmUoQ0ZE
aWN0aW9uYXJ5UmVmIGZlYXR1cmUpCiAgICAgcmV0dXJuIENGRGljdGlvbmFyeUNvbnRhaW5zS2V5
KGZlYXR1cmUsIGtDVEZvbnRGZWF0dXJlVHlwZUlkZW50aWZpZXJLZXkpICYmIENGRGljdGlvbmFy
eUNvbnRhaW5zS2V5KGZlYXR1cmUsIGtDVEZvbnRGZWF0dXJlU2VsZWN0b3JJZGVudGlmaWVyS2V5
KTsKIH0KIAotc3RhdGljIGlubGluZSBPcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVGZWF0
dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFs
PENGU3RyaW5nUmVmPiBvcGVuVHlwZUZlYXR1cmUoQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmUpCiB7
CiAgICAgQVNTRVJUKGlzT3BlblR5cGVGZWF0dXJlKGZlYXR1cmUpKTsKICAgICBDRlN0cmluZ1Jl
ZiB0YWcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZmVh
dHVyZSwga0NURm9udE9wZW5UeXBlRmVhdHVyZVRhZykpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0
YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q0ZTdHJpbmdSZWY+IG9wZW5UeXBlRmVhdHVyZShDRkRpY3Rp
b25hcnlSZWYgZmVhdHVyZSkKICAgICBDRk51bWJlclJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PENG
TnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShmZWF0dXJlLCBrQ1RGb250T3BlblR5cGVG
ZWF0dXJlVmFsdWUpKTsKICAgICBhdXRvIHN1Y2Nlc3MgPSBDRk51bWJlckdldFZhbHVlKHZhbHVl
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmcmF3VmFsdWUpOwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vz
cywgc3VjY2Vzcyk7Ci0gICAgcmV0dXJuIHJhd1ZhbHVlID8gT3B0aW9uYWw8Q0ZTdHJpbmdSZWY+
KHRhZykgOiBOdWxsb3B0OworICAgIHJldHVybiByYXdWYWx1ZSA/IHN0ZDo6b3B0aW9uYWw8Q0ZT
dHJpbmdSZWY+KHRhZykgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RkOjpw
YWlyPGludCwgaW50PiB0cnVlVHlwZUZlYXR1cmUoQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmUpCkBA
IC01OTIsMTEgKzU5MiwxMSBAQCBGbG9hdFJlY3QgRm9udDo6cGxhdGZvcm1Cb3VuZHNGb3JHbHlw
aChHbHlwaCBnbHlwaCkgY29uc3QKIH0KIAogI2lmICEoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkpCi1zdGF0aWMgaW5s
aW5lIE9wdGlvbmFsPENHU2l6ZT4gYWR2YW5jZUZvckNvbG9yQml0bWFwRm9udChjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIEdseXBoIGdseXBoKQorc3RhdGljIGlubGluZSBz
dGQ6Om9wdGlvbmFsPENHU2l6ZT4gYWR2YW5jZUZvckNvbG9yQml0bWFwRm9udChjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIEdseXBoIGdseXBoKQogewogICAgIENURm9udFJl
ZiBmb250ID0gcGxhdGZvcm1EYXRhLmZvbnQoKTsKICAgICBpZiAoIWZvbnQgfHwgIXBsYXRmb3Jt
RGF0YS5pc0NvbG9yQml0bWFwRm9udCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBDR1NpemUgYWR2YW5jZTsKICAgICBDVEZvbnRH
ZXRBZHZhbmNlc0ZvckdseXBocyhmb250LCBrQ1RGb250T3JpZW50YXRpb25EZWZhdWx0LCAmZ2x5
cGgsICZhZHZhbmNlLCAxKTsKICAgICByZXR1cm4gYWR2YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0YWYxODI2NWU0OGFkNzEwMmQzZjU1Y2RlZDIwMDdiOTUx
NjFmNzY1Li4wZmNhMTIzZGEwYWE1YzUwMWYyM2YwOTU1ODQ5ZGQzZWZjZTc0MzMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBE
cmF3R2x5cGhzOjpjb21wdXRlQm91bmRzKCkKICAgICB9CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVj
dD4gRHJhd0dseXBoczo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3R2x5cGhzOjpsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIEZsb2F0UmVjdCBsb2NhbEJvdW5kcyA9IG1f
Ym91bmRzOwogICAgIGxvY2FsQm91bmRzLm1vdmUobV9ibG9ja0xvY2F0aW9uLngoKSwgbV9ibG9j
a0xvY2F0aW9uLnkoKSk7CkBAIC01NzUsNyArNTc1LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdSZWN0JiBpdGVtKQogICAgIHJldHVy
biB0czsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3TGluZTo6bG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3
TGluZTo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBG
bG9hdFJlY3QgYm91bmRzOwogICAgIGJvdW5kcy5maXRUb1BvaW50cyhtX3BvaW50MSwgbV9wb2lu
dDIpOwpAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgRHJhd0xpbmVzRm9yVGV4dDo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuZHJhd0xpbmVzRm9yVGV4
dChwb2ludCgpLCBtX3dpZHRocywgbV9wcmludGluZywgbV9kb3VibGVMaW5lcyk7CiB9CiAKLU9w
dGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmVzRm9yVGV4dDo6bG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3TGluZXNG
b3JUZXh0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAg
IC8vIFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gb3IgZW5j
bG9zaW5nIHdoYXQgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlh
c2luZ01vZGVGb3JUZXh0KCkgcmV0dXJucy4KIApAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgRHJh
d0xpbmVGb3JEb2N1bWVudE1hcmtlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogICAgIGNvbnRleHQuZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihtX3BvaW50LCBtX3dp
ZHRoLCBtX3N0eWxlKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3TGluZUZvckRvY3Vt
ZW50TWFya2VyOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXI6OmxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlv
biBuZWVkcyB0byByZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBvciBlbmNsb3Npbmcgd2hhdCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoKSByZXR1cm5zLgogCkBAIC02
NzksNyArNjc5LDcgQEAgdm9pZCBEcmF3Rm9jdXNSaW5nUGF0aDo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuZHJhd0ZvY3VzUmluZyhtX3BhdGgsIG1f
d2lkdGgsIG1fb2Zmc2V0LCBtX2NvbG9yKTsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3
Rm9jdXNSaW5nUGF0aDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3Rm9jdXNSaW5nUGF0aDo6bG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgcmVzdWx0ID0g
bV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsKICAgICByZXN1bHQuaW5mbGF0ZShwbGF0Zm9ybUZv
Y3VzUmluZ1dpZHRoKTsKQEAgLTcwMSw3ICs3MDEsNyBAQCB2b2lkIERyYXdGb2N1c1JpbmdSZWN0
czo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuZHJh
d0ZvY3VzUmluZyhtX3JlY3RzLCBtX3dpZHRoLCBtX29mZnNldCwgbV9jb2xvcik7CiB9CiAKLU9w
dGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3VzUmluZ1JlY3RzOjpsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdGb2N1
c1JpbmdSZWN0czo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsK
ICAgICBGbG9hdFJlY3QgcmVzdWx0OwogICAgIGZvciAoYXV0byYgcmVjdCA6IG1fcmVjdHMpCkBA
IC04MjUsNyArODI1LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IEZpbGxFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotT3B0
aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VSZWN0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdAorc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZVJlY3Q6OmxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGJv
dW5kcyA9IG1fcmVjdDsKICAgICBib3VuZHMuZXhwYW5kKG1fbGluZVdpZHRoLCBtX2xpbmVXaWR0
aCk7CkBAIC04NDUsNyArODQ1LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFN0cm9rZVJlY3QmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1PcHRpb25hbDxGbG9hdFJlY3Q+IFN0cm9rZVBhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJv
a2VQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBzdHJva2UgdGhpY2tuZXNzIGludG8gYWNj
b3VudCBjb3JyZWN0bHksIHZpYSBDR1BhdGhCeVN0cm9raW5nUGF0aCgpLgogICAgIGZsb2F0IHN0
cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CkBAIC04NjcsNyArODY3
LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFN0cm9rZVBhdGgmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1PcHRpb25hbDxGbG9hdFJl
Y3Q+IFN0cm9rZUVsbGlwc2U6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VFbGxpcHNlOjpsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgZmxv
YXQgc3Ryb2tlVGhpY2tuZXNzID0gY29udGV4dC5zdHJva2VUaGlja25lc3MoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYTcxZTMxNDliODgzNjRjYjA5ZGNjY2MzY2Nk
YTgzZmIwNWM4ZGRmYy4uYTcwZmQ2ZDFlNDFkYzA3ZWEyMDQyYjEwYjUzMWY4M2I5MmExOWQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCBj
bGFzcyBEcmF3aW5nSXRlbSA6IHB1YmxpYyBJdGVtIHsKIAogICAgIC8vIFJldHVybiBib3VuZHMg
b2YgdGhpcyBkcmF3aW5nIG9wZXJhdGlvbiBpbiBsb2NhbCBjb29yZGluYXRlcy4KICAgICAvLyBE
b2VzIG5vdCBpbmNsdWRlIGVmZmV0cyBvZiB0cmFuc2Zvcm0sIHNoYWRvdyBldGMgaW4gdGhlIHN0
YXRlLgotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBOdWxsb3B0OyB9CisgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGlzRHJhd2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IG1fZXh0ZW50OyAvLyBJbiBiYXNlIGNvb3JkaW5hdGVzLCB0YWtpbmcg
c2hhZG93cyBhbmQgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IG1fZXh0ZW50OyAvLyBJbiBiYXNlIGNvb3JkaW5hdGVzLCB0YWtpbmcgc2hhZG93
cyBhbmQgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCiB9OwogCiBjbGFzcyBTYXZlIDogcHVibGlj
IEl0ZW0gewpAQCAtNTQzLDcgKzU0Myw3IEBAIGNsYXNzIERyYXdHbHlwaHMgOiBwdWJsaWMgRHJh
d2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgR2x5cGhCdWZmZXIgZ2VuZXJhdGVHbHlwaEJ1ZmZlcigpIGNvbnN0OwogCkBAIC01NzIsNyAr
NTcyLDcgQEAgY2xhc3MgRHJhd0ltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiAgICAgbXV0YWJsZSBSZWY8SW1hZ2U+IG1faW1h
Z2U7IC8vIEZJWE1FOiBEcmF3aW5nIGltYWdlcyBjYW4gY2F1c2UgdGhlaXIgYW5pbWF0aW9ucyB0
byBwcm9ncmVzcy4gVGhpcyBzaG91bGRuJ3QgaGF2ZSB0byBiZSBtdXRhYmxlLgogICAgIEZsb2F0
UmVjdCBtX2Rlc3RpbmF0aW9uOwpAQCAtNTk5LDcgKzU5OSw3IEBAIGNsYXNzIERyYXdUaWxlZElt
YWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVz
dGluYXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bjsgfQogCiAgICAgbXV0YWJsZSBSZWY8SW1hZ2U+IG1faW1hZ2U7IC8vIEZJWE1FOiBEcmF3aW5n
IGltYWdlcyBjYW4gY2F1c2UgdGhlaXIgYW5pbWF0aW9ucyB0byBwcm9ncmVzcy4gVGhpcyBzaG91
bGRuJ3QgaGF2ZSB0byBiZSBtdXRhYmxlLgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwpA
QCAtNjI1LDcgKzYyNSw3IEBAIGNsYXNzIERyYXdUaWxlZFNjYWxlZEltYWdlIDogcHVibGljIERy
YXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiAgICAgbXV0
YWJsZSBSZWY8SW1hZ2U+IG1faW1hZ2U7IC8vIEZJWE1FOiBEcmF3aW5nIGltYWdlcyBjYW4gY2F1
c2UgdGhlaXIgYW5pbWF0aW9ucyB0byBwcm9ncmVzcy4gVGhpcyBzaG91bGRuJ3QgaGF2ZSB0byBi
ZSBtdXRhYmxlLgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwpAQCAtNjUyLDcgKzY1Miw3
IEBAIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbV9pbWFnZTsKQEAgLTY4Nyw3ICs2ODcsNyBAQCBjbGFzcyBEcmF3UGF0dGVy
biA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247
IH0KIAogICAgIG11dGFibGUgUmVmPEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTogRHJhd2luZyBp
bWFnZXMgY2FuIGNhdXNlIHRoZWlyIGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxk
bid0IGhhdmUgdG8gYmUgbXV0YWJsZS4KICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuVHJh
bnNmb3JtOwpAQCAtNzU2LDcgKzc1Niw3IEBAIGNsYXNzIERyYXdSZWN0IDogcHVibGljIERyYXdp
bmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVj
dDsKICAgICBmbG9hdCBtX2JvcmRlclRoaWNrbmVzczsKQEAgLTc4MSw3ICs3ODEsNyBAQCBjbGFz
cyBEcmF3TGluZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgbV9wb2ludDE7CiAgICAg
RmxvYXRQb2ludCBtX3BvaW50MjsKQEAgLTgxNiw3ICs4MTYsNyBAQCBjbGFzcyBEcmF3TGluZXNG
b3JUZXh0IDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgbV9ibG9ja0xvY2F0aW9uOwogICAgIEZs
b2F0U2l6ZSBtX2xvY2FsQW5jaG9yOwpAQCAtODQ3LDcgKzg0Nyw3IEBAIGNsYXNzIERyYXdMaW5l
Rm9yRG9jdW1lbnRNYXJrZXIgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBtX3BvaW50OwogICAg
IGZsb2F0IG1fd2lkdGg7CkBAIC04NzEsNyArODcxLDcgQEAgY2xhc3MgRHJhd0VsbGlwc2UgOiBw
dWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9h
dFJlY3QgbV9yZWN0OwogfTsKQEAgLTg5NCw3ICs4OTQsNyBAQCBjbGFzcyBEcmF3UGF0aCA6IHB1
YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhdGguZmFzdEJv
dW5kaW5nUmVjdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGF0aC5m
YXN0Qm91bmRpbmdSZWN0KCk7IH0KIAogICAgIGNvbnN0IFBhdGggbV9wYXRoOwogfTsKQEAgLTky
Myw3ICs5MjMsNyBAQCBjbGFzcyBEcmF3Rm9jdXNSaW5nUGF0aCA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25z
dCBQYXRoIG1fcGF0aDsKICAgICBpbnQgbV93aWR0aDsKQEAgLTk1NSw3ICs5NTUsNyBAQCBjbGFz
cyBEcmF3Rm9jdXNSaW5nUmVjdHMgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9y
ZWN0czsKICAgICBpbnQgbV93aWR0aDsKQEAgLTk4MCw3ICs5ODAsNyBAQCBjbGFzcyBGaWxsUmVj
dCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
cmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAg
IEZsb2F0UmVjdCBtX3JlY3Q7CiB9OwpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgY2xhc3MgRmlsbFJl
Y3RXaXRoQ29sb3IgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0
OyB9CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIENvbG9yIG1fY29sb3I7CkBAIC0xMDI5
LDcgKzEwMjksNyBAQCBjbGFzcyBGaWxsUmVjdFdpdGhHcmFkaWVudCA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7
CiAgICAgbXV0YWJsZSBSZWY8R3JhZGllbnQ+IG1fZ3JhZGllbnQ7IC8vIEZJWE1FOiBNYWtlIHRo
aXMgbm90IG11dGFibGUKQEAgLTEwNTgsNyArMTA1OCw3IEBAIGNsYXNzIEZpbGxDb21wb3NpdGVk
UmVjdCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAog
ICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgQ29sb3IgbV9jb2xvcjsKQEAgLTEwODcsNyArMTA4
Nyw3IEBAIGNsYXNzIEZpbGxSb3VuZGVkUmVjdCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAg
fQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdC5yZWN0KCk7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0LnJlY3QoKTsgfQogCiAgICAgRmxvYXRSb3VuZGVkUmVj
dCBtX3JlY3Q7CiAgICAgQ29sb3IgbV9jb2xvcjsKQEAgLTExMTUsNyArMTExNSw3IEBAIGNsYXNz
IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlIDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKICAgICBGbG9hdFJvdW5k
ZWRSZWN0IG1fcm91bmRlZEhvbGVSZWN0OwpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgY2xhc3MgRmls
bFBhdGggOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIAogICAgIGNvbnN0IFBhdGggbV9w
YXRoOwogfTsKQEAgLTExNjIsNyArMTE2Miw3IEBAIGNsYXNzIEZpbGxFbGxpcHNlIDogcHVibGlj
IERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIEZsb2F0UmVjdCBtX3Jl
Y3Q7CiB9OwpAQCAtMTE4Niw3ICsxMTg2LDcgQEAgY2xhc3MgU3Ryb2tlUmVjdCA6IHB1YmxpYyBE
cmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgZmxvYXQgbV9saW5lV2lkdGg7CkBAIC0x
MjA5LDcgKzEyMDksNyBAQCBjbGFzcyBTdHJva2VQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsK
ICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29u
c3QgUGF0aCBtX3BhdGg7CiAgICAgRmxvYXRQb2ludCBtX2Jsb2NrTG9jYXRpb247CkBAIC0xMjMy
LDcgKzEyMzIsNyBAQCBjbGFzcyBTdHJva2VFbGxpcHNlIDogcHVibGljIERyYXdpbmdJdGVtIHsK
ICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxv
YXRSZWN0IG1fcmVjdDsKIH07CkBAIC0xMjU0LDcgKzEyNTQsNyBAQCBjbGFzcyBDbGVhclJlY3Qg
OiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Jl
Y3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBG
bG9hdFJlY3QgbV9yZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAppbmRleCBjOWMzYzRkNDlkMTU0MjFlMGI1OTlmZDRmZTk4YmRiNmU0Y2FjYjYxLi42ZDY4
NTMzNDUwYjkwOTIxMzNiZjcwODYyZjNlZjYyZGJlZjAzMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgSXRlbSYgUmVjb3Jk
ZXI6OmFwcGVuZEl0ZW0oUmVmPEl0ZW0+JiYgaXRlbSkKIAogdm9pZCBSZWNvcmRlcjo6dXBkYXRl
SXRlbUV4dGVudChEcmF3aW5nSXRlbSYgaXRlbSkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8
RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcyhtX2dyYXBoaWNzQ29udGV4dCkpCisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0ID0gaXRlbS5sb2NhbEJvdW5kcyht
X2dyYXBoaWNzQ29udGV4dCkpCiAgICAgICAgIGl0ZW0uc2V0RXh0ZW50KGV4dGVudEZyb21Mb2Nh
bEJvdW5kcyhyZWN0LnZhbHVlKCkpKTsKIH0KIApAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgUmVj
b3JkZXI6OkNvbnRleHRTdGF0ZTo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKQogICAgIEFm
ZmluZVRyYW5zZm9ybSByb3RhdGlvbjsKICAgICByb3RhdGlvbi5yb3RhdGUoYW5nbGVJbkRlZ3Jl
ZXMpOwogCi0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHJvdGF0
aW9uLmludmVyc2UoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGlu
dmVyc2UgPSByb3RhdGlvbi5pbnZlcnNlKCkpCiAgICAgICAgIGNsaXBCb3VuZHMgPSBpbnZlcnNl
LnZhbHVlKCkubWFwUmVjdChjbGlwQm91bmRzKTsKIH0KIApAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZv
aWQgUmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbWF0cml4KQogewogICAgIGN0bSAqPSBtYXRyaXg7CiAKLSAgICBpZiAoT3B0aW9uYWw8QWZm
aW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gbWF0cml4LmludmVyc2UoKSkKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBtYXRyaXguaW52ZXJzZSgpKQogICAg
ICAgICBjbGlwQm91bmRzID0gaW52ZXJzZS52YWx1ZSgpLm1hcFJlY3QoY2xpcEJvdW5kcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFn
ZUJ1ZmZlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1h
Z2VCdWZmZXJFZmwuY3BwCmluZGV4IDhhMWM5ZTIwOTc2ZTg2YWJkMjA1YTBkZDY3OGNlNDE3NWM1
NjcxY2EuLmExMTJkYjRkYTg1MzdlMDQyNGRhNzQyMWJmNmRlYzVkYTRjMjIxYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVy
RWZsLmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlUE5HKGNh
aXJvX3N1cmZhY2VfdCogaW1hZ2UsIFZlY3RvcjxjaGFyPiogb3V0cHV0KQogICAgIHJldHVybiBj
YWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oaW1hZ2UsIHdyaXRlRnVuY3Rpb24sIG91
dHB1dCkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7CiB9CiAKLXN0YXRpYyBib29sIGVuY29kZUlt
YWdlSlBFRyh1bnNpZ25lZCBjaGFyKiBkYXRhLCBJbnRTaXplIHNpemUsIFZlY3RvcjxjaGFyPiog
b3V0cHV0LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCitzdGF0aWMgYm9vbCBlbmNvZGVJbWFn
ZUpQRUcodW5zaWduZWQgY2hhciogZGF0YSwgSW50U2l6ZSBzaXplLCBWZWN0b3I8Y2hhcj4qIG91
dHB1dCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCiB7ICAgIAogICAgIHJldHVybiBj
b21wcmVzc1JHQkFCaWdFbmRpYW5Ub0pQRUcoZGF0YSwgc2l6ZSwgKm91dHB1dCwgcXVhbGl0eSk7
CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0
cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAg
IEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyhtaW1lVHlwZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCAyNWE1ZGJiMTI2MTgzNDc1M2Q1NDc2ODg5MDg0MDVi
ZmY3MDIwOThjLi4zYWZmZDQyMWUwZTNkNzMxODdmMmUzNDI3ZmI2ZDRmMTNlYjU4NWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgRmlsdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVy
PiB7CiAgICAgdm9pZCBzZXRGaWx0ZXJTY2FsZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxl
ID0gc2NhbGU7IH0KIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtOyB9Ci0gICAgRmxvYXRQb2lu
dCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBj
b25zdCB7IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7IH0KKyAgICBGbG9hdFBvaW50IG1hcEFic29s
dXRlUG9pbnRUb0xvY2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0IHsgcmV0
dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChwb2ludCk7IH0KIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsgfQogICAgIHZvaWQgc2V0UmVuZGVy
aW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIHsgbV9yZW5kZXJpbmdNb2RlID0g
cmVuZGVyaW5nTW9kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKaW5kZXggM2JmYTI2MGRlYWIyNjU0OWRhZGFl
NjM1ZTFhODU2NDczYzg0YzA1Ni4uYjJmZTJhOTA5Mjk4NWIyZWEyNDMzNTU3ZGYzYWNhMGFmYTJj
ZjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0lt
YWdlQnVmZmVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvSW1hZ2VCdWZmZXJHdGsuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIEdVbmlx
dWVPdXRQdHI8Z2NoYXI+JiBidWZmZXIsIGdzaXplJiBidWZmZXJTaXplKQorc3RhdGljIGJvb2wg
ZW5jb2RlSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgR1VuaXF1ZU91dFB0cjxnY2hhcj4m
IGJ1ZmZlciwgZ3NpemUmIGJ1ZmZlclNpemUpCiB7CiAgICAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQg
aW1hZ2UgZW5jb2RpbmcgdHlwZXMgY29tZXMgZnJvbSB0aGUgR2RrUGl4YnVmIGRvY3VtZW50YXRp
b24uCiAgICAgLy8gaHR0cDovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2RrLXBpeGJ1Zi9zdGFibGUv
Z2RrLXBpeGJ1Zi1GaWxlLXNhdmluZy5odG1sI2dkay1waXhidWYtc2F2ZS10by1idWZmZXJ2CkBA
IC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uCiAgICAgcmV0dXJuICFlcnJv
cjsKIH0KIAotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAor
U3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVu
Y29kaW5nKG1pbWVUeXBlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcAppbmRleCA0ZDZkZDE2
MDNlNDk3ZTJmOWNlZTA0YjRlMzY2NjNkYjc2NGQxYTc3Li45ZTZmNDQ4Njc1YzE3MTg0MmZmYTdm
M2U3NjZiOGYyNTQ0ODYwNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwCkBAIC02NTIsOCAr
NjUyLDggQEAgRmxvYXRSZWN0IEhhcmZCdXp6U2hhcGVyOjpzZWxlY3Rpb25SZWN0KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBpbnQgaGVpZ2h0LCB1bnMKICAgICBib29sIGZvdW5kRnJvbVggPSBm
YWxzZTsKICAgICBib29sIGZvdW5kVG9YID0gZmFsc2U7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gZnJvbUluZGV4ID0gZnJvbTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gdG9JbmRleCA9IHRv
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZyb21JbmRleCA9IGZyb207CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdG9JbmRleCA9IHRvOwogCiAgICAgaWYgKG1fcnVuLnJ0bCgp
KQogICAgICAgICBjdXJyZW50WCA9IG1fdG90YWxXaWR0aDsKQEAgLTY2OCw3ICs2NjgsNyBAQCBG
bG9hdFJlY3QgSGFyZkJ1enpTaGFwZXI6OnNlbGVjdGlvblJlY3QoY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGludCBoZWlnaHQsIHVucwogICAgICAgICAgICAgaWYgKGZyb21JbmRleCAmJiBmcm9t
SW5kZXgudmFsdWUoKSA+PSBudW1DaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgIGZyb21JbmRl
eC52YWx1ZSgpIC09IG51bUNoYXJhY3RlcnM7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZnJvbUluZGV4ID0gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICBmcm9tSW5kZXggPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZvdW5kVG9YICYmIHRvSW5k
ZXgudmFsdWUoKSA8IG51bUNoYXJhY3RlcnMpIHsKQEAgLTY3OCw3ICs2NzgsNyBAQCBGbG9hdFJl
Y3QgSGFyZkJ1enpTaGFwZXI6OnNlbGVjdGlvblJlY3QoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBoZWlnaHQsIHVucwogICAgICAgICAgICAgaWYgKHRvSW5kZXggJiYgdG9JbmRleC52YWx1
ZSgpID49IG51bUNoYXJhY3RlcnMpCiAgICAgICAgICAgICAgICAgdG9JbmRleC52YWx1ZSgpIC09
IG51bUNoYXJhY3RlcnM7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdG9JbmRl
eCA9IE51bGxvcHQ7CisgICAgICAgICAgICAgICAgdG9JbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChmb3VuZEZyb21YICYmIGZvdW5kVG9YKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcAppbmRleCBiOTQxMWI0MmI1MjdkZDQ0NzMyNTZkYTQ4OGMzM2RiZWQz
MzBhNjQ1Li44ZGZhZjdiMmE5OTJmZTUzMWZjOTk0ZDYzYTE4OWZiZDY0M2UxMDM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMjc2LDE5ICsyNzYsMTkgQEAgc3RhdGljIGJvb2wg
YWR2YW5jZUJ5Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIqJiBpdGVyYXRv
ciwgY29uc3QgVUMKIH0KIAogLy8gRklYTUU6IENhcGl0YWxpemF0aW9uIGlzIGxhbmd1YWdlLWRl
cGVuZGVudCBhbmQgY29udGV4dC1kZXBlbmRlbnQgYW5kIHNob3VsZCBvcGVyYXRlIG9uIGdyYXBo
ZW1lIGNsdXN0ZXJzIGluc3RlYWQgb2YgY29kZXBvaW50cy4KLXN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8VUNoYXIzMj4gY2FwaXRhbGl6ZWQoVUNoYXIzMiBiYXNlQ2hhcmFjdGVyKQorc3RhdGljIGlu
bGluZSBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJh
Y3RlcikKIHsKICAgICBpZiAoVV9HRVRfR0NfTUFTSyhiYXNlQ2hhcmFjdGVyKSAmIFVfR0NfTV9N
QVNLKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFVDaGFyMzIgdXBwZXJjYXNlQ2hhcmFjdGVyID0gdV90b3VwcGVyKGJhc2VDaGFy
YWN0ZXIpOwogICAgIEFTU0VSVCh1cHBlcmNhc2VDaGFyYWN0ZXIgPT0gYmFzZUNoYXJhY3RlciB8
fCAoVV9JU19CTVAoYmFzZUNoYXJhY3RlcikgPT0gVV9JU19CTVAodXBwZXJjYXNlQ2hhcmFjdGVy
KSkpOwogICAgIGlmICh1cHBlcmNhc2VDaGFyYWN0ZXIgIT0gYmFzZUNoYXJhY3RlcikKICAgICAg
ICAgcmV0dXJuIHVwcGVyY2FzZUNoYXJhY3RlcjsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRTeW50aGVzaXplKGNv
bnN0IEZvbnQqIG5leHRGb250LCBVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIsIE9wdGlvbmFsPFVDaGFy
MzI+IGNhcGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJpYW50Q2FwcywgYm9v
bCBlbmdhZ2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQorc3RhdGljIGJvb2wgc2hvdWxkU3ludGhl
c2l6ZShjb25zdCBGb250KiBuZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hhcmFjdGVyLCBzdGQ6Om9w
dGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJp
YW50Q2FwcywgYm9vbCBlbmdhZ2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQogewogICAgIGlmICgh
bmV4dEZvbnQgfHwgbmV4dEZvbnQgPT0gRm9udDo6c3lzdGVtRmFsbGJhY2soKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4OTVkMzdmMzlj
ZjA1NzJmNWQ0OTZlMGViNjBhYmIxZjI5MDZmYTVjLi40OTEwY2YwYWM3ZTJkODc2MDAxOThiODQ5
NWU1OGQ3M2Y4YTE1MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjExLDcg
KzIxMSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldp
dGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWluCiAgICAgICAgIFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMgcmVwbGljYU9wdGlvbnMob3B0aW9ucyk7CiAgICAgICAgIHJlcGxpY2FPcHRp
b25zLnRyYW5zZm9ybQogICAgICAgICAgICAgLm11bHRpcGx5KG1fc3RhdGUucmVwbGljYUxheWVy
LT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSkKLSAgICAgICAgICAgIC5tdWx0aXBseSht
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKSk7CisgICAgICAgICAgICAubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3Jt
LmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsK
ICAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ocmVwbGljYU9wdGlvbnMpOwogICAgIH0KIApA
QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRlZE9w
YWNpdHkoZmxvYXQgb3BhY2l0eSkKIAogVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1hcHBl
ckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKCkKIHsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgp
KS5tdWx0aXBseShtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVP
cihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0
cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSku
bXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNldEFuaW1hdGVkRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQpAQCAt
NzMxLDcgKzczMSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpm
aW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hCiBGbG9hdFNpemUgVGV4dHVy
ZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCiB7
CiAgICAgZG91YmxlIHplcm9YLCB6ZXJvWSwgb2Zmc2V0WCwgb2Zmc2V0WTsKLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZl
cnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgdHJhbnNmb3JtLm1h
cCgwLCAwLCB6ZXJvWCwgemVyb1kpOwogICAgIHRyYW5zZm9ybS5tYXAob2Zmc2V0LndpZHRoKCks
IG9mZnNldC5oZWlnaHQoKSwgb2Zmc2V0WCwgb2Zmc2V0WSk7CiAgICAgcmV0dXJuIEZsb2F0U2l6
ZShvZmZzZXRYIC0gemVyb1gsIG9mZnNldFkgLSB6ZXJvWSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDVkNzQ0ZDI1
MjljMjAwN2JkZTBlODk5MTQwMDBmMDU3YjcxZDM3ZmMuLjA1NWVmOTk1NDllNjk0MjYyNDEwM2Q4
ODhjYmM3NTRkNmZiNmQzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgSW50UmVjdCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIC8v
IFJldHVybiBhIHByb2plY3Rpb24gb2YgdGhlIHZpc2libGUgcmVjdCAoc3VyZmFjZSBjb29yZGlu
YXRlcykgb250byB0aGUgbGF5ZXIncyBwbGFuZSAobGF5ZXIgY29vcmRpbmF0ZXMpLgogICAgIC8v
IFRoZSByZXN1bHRpbmcgcXVhZCBtaWdodCBiZSBzcXVld2VkIGFuZCB0aGUgdmlzaWJsZSByZWN0
IGlzIHRoZSBib3VuZGluZyBib3ggb2YgdGhpcyBxdWFkLAogICAgIC8vIHNvIGl0IG1pZ2h0IHNw
cmVhZCBmdXJ0aGVyIHRoYW4gdGhlIHJlYWwgdmlzaWJsZSBhcmVhIChhbmQgdGhlbiBldmVuIG1v
cmUgYW1wbGlmaWVkIGJ5IHRoZSBjb3ZlciByZWN0IG11bHRpcGxpZXIpLgotICAgIEFTU0VSVCht
X2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmlu
dmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBBU1NFUlQobV9j
YWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZl
cnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgIEZsb2F0UmVjdCBy
ZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1
YWQoRmxvYXRRdWFkKG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwogICAg
IGNsYW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHNpemUoKSk7CiAgICAg
cmV0dXJuIGVuY2xvc2luZ0ludFJlY3QocmVjdCk7CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3Qo
KQogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFu
c2Zvcm0oKSk7CiAgICAgbV9sYXllclRyYW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJlbnQo
KSA/IGRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKnBhcmVudCgpKS5tX2xheWVy
VHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
OwogCi0gICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21i
aW5lZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG1f
Y2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZl
cnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAvLyBUaGUgY29t
YmluZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVS
ZWN0LgogICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmlu
ZVRyYW5zZm9ybS5jcHAKaW5kZXggYzE3NmYwZDFhYjY3ODZhMmMxMjI2YjM0MzViOWIwOWQ5MDM2
NTBhYi4uOGViZGQ5OGYxODEwMjcyYTY5YmY4MDNlN2NjYWE0NTNjMmEwNzJhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFu
c2Zvcm0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvQWZmaW5lVHJhbnNmb3JtLmNwcApAQCAtMTA0LDExICsxMDQsMTEgQEAgYm9vbCBBZmZpbmVU
cmFuc2Zvcm06OmlzSW52ZXJ0aWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6aXNmaW5pdGUo
ZGV0ZXJtaW5hbnQpICYmIGRldGVybWluYW50ICE9IDA7CiB9CiAKLU9wdGlvbmFsPEFmZmluZVRy
YW5zZm9ybT4gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
QWZmaW5lVHJhbnNmb3JtPiBBZmZpbmVUcmFuc2Zvcm06OmludmVyc2UoKSBjb25zdAogewogICAg
IGRvdWJsZSBkZXRlcm1pbmFudCA9IGRldChtX3RyYW5zZm9ybSk7CiAgICAgaWYgKCFzdGQ6Omlz
ZmluaXRlKGRldGVybWluYW50KSB8fCBkZXRlcm1pbmFudCA9PSAwKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFmZmluZVRyYW5z
Zm9ybSByZXN1bHQ7CiAgICAgaWYgKGlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5l
VHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L0FmZmluZVRyYW5zZm9ybS5oCmluZGV4IDgyZDNkNmE0YjA2M2FiZmUxMTcwZWE5NWM3OWRiY2Nj
M2FkODdhYzIuLmEwYjFmN2JkM2ZlN2U4Yjk1NDExMGU0ZWMxM2ViOGE2NDhjOTYxMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5l
VHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaApAQCAtMTI4LDcgKzEyOCw3IEBAIGNsYXNzIEFmZmluZVRy
YW5zZm9ybSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIHlTY2FsZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdDsgLy8gSWYgeW91IGNhbGwgdGhpcyB0aGlzLCB5
b3UncmUgcHJvYmFibHkgZG9pbmcgaXQgd3JvbmcuCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UoKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYmxlbmQoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IGU3NjNjYzEz
OTNkYmNkZTYxMTMyMTE4ZmZiNDMxOTFjNjQ4ZTQ1ZTQuLjVlZjBlNWJmNDBiOWRlYjRlNzhjZTc0
MzkxN2E4MjIxMDgzMWVlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC0xNzAs
NyArMTcwLDcgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQoYm9vbCog
d2FzQ2xhbXBlZCkgY29uc3QKICAgICBpZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1E
aXJlY3Rpb24pCiAgICAgICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYXBQb2lu
dChwb2ludCk7CiAKLSAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgp
LnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXND
bGFtcGVkKTsKKyAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZh
bHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xh
bXBlZCk7CiB9CiAKIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3
YXNDbGFtcGVkKSBjb25zdApAQCAtMTgzLDEzICsxODMsMTMgQEAgRmxvYXRRdWFkIFRyYW5zZm9y
bVN0YXRlOjptYXBwZWRRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiAgICAgcmV0dXJuIHF1
YWQ7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UXVhZD4gVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFNlY29u
ZGFyeVF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRRdWFk
PiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkKSBj
b25zdAogewogICAgIGlmICh3YXNDbGFtcGVkKQogICAgICAgICAqd2FzQ2xhbXBlZCA9IGZhbHNl
OwogCiAgICAgaWYgKCFtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKQotICAgICAgICByZXR1cm4g
T3B0aW9uYWw8RmxvYXRRdWFkPigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxGbG9h
dFF1YWQ+KCk7CiAKICAgICBGbG9hdFF1YWQgcXVhZCA9ICptX2xhc3RQbGFuYXJTZWNvbmRhcnlR
dWFkOwogICAgIG1hcFF1YWQocXVhZCwgbV9kaXJlY3Rpb24sIHdhc0NsYW1wZWQpOwpAQCAtMjE4
LDcgKzIxOCw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFk
LCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sCiAgICAgaWYgKGRpcmVjdGlvbiA9
PSBBcHBseVRyYW5zZm9ybURpcmVjdGlvbikKICAgICAgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0tPm1hcFF1YWQocXVhZCk7CiAKLSAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1
YWQocXVhZCwgd2FzQ2xhbXBlZCk7CisgICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0t
PmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVhZChx
dWFkLCB3YXNDbGFtcGVkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHdhc0NsYW1wZWQp
CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHcKICAgICAgICAgfQog
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5z
Zm9ybSA9IHQuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52
YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKICAgICAgICAgaWYgKG1fbWFwUG9pbnQp
CiAgICAgICAgICAgICBtX2xhc3RQbGFuYXJQb2ludCA9IGludmVyc2VUcmFuc2Zvcm0ucHJvamVj
dFBvaW50KG1fbGFzdFBsYW5hclBvaW50KTsKICAgICAgICAgaWYgKG1fbWFwUXVhZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDcyODc4NjI0NGQ4MzM1NzQ3ZmZiMzY2MTgxNjM3NzA3
NDE1MjAyNGIuLmNkOTU1YWJmNGFiMmYyMTZmOWI1MTA1ZjRiYTVhOTk0ZGNiMTY2OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTgwLDcgKzgwLDcgQEAgY2xhc3MgVHJhbnNmb3JtU3Rh
dGUgewogICAgICAgICBtX2xhc3RQbGFuYXJRdWFkID0gcXVhZDsKICAgICB9CiAKLSAgICAvLyBG
SVhNRTogd2Via2l0Lm9yZy9iLzE0NDIyNiB1c2UgT3B0aW9uYWw8RmxvYXRRdWFkPi4gCisgICAg
Ly8gRklYTUU6IHdlYmtpdC5vcmcvYi8xNDQyMjYgdXNlIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFk
Pi4gCiAgICAgdm9pZCBzZXRTZWNvbmRhcnlRdWFkKGNvbnN0IEZsb2F0UXVhZCogcXVhZCkKICAg
ICB7CiAgICAgICAgIC8vIFdlIG11c3QgYmUgaW4gYSBmbGF0dGVuZWQgc3RhdGUgKG5vIGFjY3Vt
dWxhdGVkIG9mZnNldCkgd2hlbiBzZXR0aW5nIHRoaXMgc2Vjb25kYXJ5IHF1YWQuCkBAIC05MSw3
ICs5MSw3IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlIHsKICAgICAgICAgICAgIG1fbGFzdFBsYW5h
clNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiB3ZWJraXQu
b3JnL2IvMTQ0MjI2IHVzZSBPcHRpb25hbDxGbG9hdFF1YWQ+LgorICAgIC8vIEZJWE1FOiB3ZWJr
aXQub3JnL2IvMTQ0MjI2IHVzZSBzdGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4uCiAgICAgdm9pZCBz
ZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBGbG9hdFF1YWQqKTsKIAogICAgIHZvaWQg
bW92ZShMYXlvdXRVbml0IHgsIExheW91dFVuaXQgeSwgVHJhbnNmb3JtQWNjdW11bGF0aW9uIGFj
Y3VtdWxhdGUgPSBGbGF0dGVuVHJhbnNmb3JtKQpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFRy
YW5zZm9ybVN0YXRlIHsKICAgICAvLyBSZXR1cm4gdGhlIHBvaW50IG9yIHF1YWQgbWFwcGVkIHRo
cm91Z2ggdGhlIGN1cnJlbnQgdHJhbnNmb3JtCiAgICAgRmxvYXRQb2ludCBtYXBwZWRQb2ludChi
b29sKiB3YXNDbGFtcGVkID0gbnVsbHB0cikgY29uc3Q7CiAgICAgRmxvYXRRdWFkIG1hcHBlZFF1
YWQoYm9vbCogd2FzQ2xhbXBlZCA9IG51bGxwdHIpIGNvbnN0OwotICAgIE9wdGlvbmFsPEZsb2F0
UXVhZD4gbWFwcGVkU2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkID0gbnVsbHB0cikgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IG1hcHBlZFNlY29uZGFyeVF1YWQoYm9v
bCogd2FzQ2xhbXBlZCA9IG51bGxwdHIpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgdHJh
bnNsYXRlVHJhbnNmb3JtKGNvbnN0IExheW91dFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggNGQxZjBiZmY4ODM5YTYwMzljMTQzZGI1MmI5ZDRmMDAy
MzA4ZGRlZS4uMjQyN2IwMWMxN2FjZGZhODhlMTc5MjAxODc0ZjU5MTdiNTg5ZTY5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTE0NDUsNyArMTQ0NSw3IEBA
IGJvb2wgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSW52ZXJ0aWJsZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9u
TWF0cml4PiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgaWYg
KGlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKICAgICAgICAgLy8gaWRlbnRpdHkgbWF0cml4
CkBAIC0xNDYzLDcgKzE0NjMsNyBAQCBPcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gVHJh
bnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UoKSBjb25zdAogICAgIC8vIEZJWE1FOiBVc2UgTFUg
ZGVjb21wb3NpdGlvbiB0byBhcHBseSB0aGUgaW52ZXJzZSBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5n
IHRoZSBpbnZlcnNlIGV4cGxpY2l0bHkuCiAgICAgLy8gQ2FsY3VsYXRpbmcgdGhlIGludmVyc2Ug
b2YgYSA0eDQgbWF0cml4IHVzaW5nIGNvZmFjdG9ycyBpcyBudW1lcmljYWxseSB1bnN0YWJsZSBh
bmQgdW5uZWNlc3NhcnkgdG8gYXBwbHkgdGhlIGludmVyc2UgdHJhbnNmb3JtYXRpb24gdG8gYSBw
b2ludC4KICAgICBpZiAoIVdlYkNvcmU6OmludmVyc2UobV9tYXRyaXgsIGludk1hdC5tX21hdHJp
eCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIGludk1hdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguaAppbmRleCAwNjU0N2Q0YzgxMzQ2ZTAxZWNmMGQ1OTU3ZTUwYTRhMzQyNmIxZjk1Li41ZGIw
YzAwMmEyZDhmYjRlZWEwZmNjZjg0ZGUwZTUzZjMxOTQ2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCkBAIC0yNTgsNyArMjU4LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRp
b25NYXRyaXggewogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByZWN0VG9SZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAg
Ym9vbCBpc0ludmVydGlibGUoKSBjb25zdDsgLy8gSWYgeW91IGNhbGwgdGhpcyB0aGlzLCB5b3Un
cmUgcHJvYmFibHkgZG9pbmcgaXQgd3JvbmcuCi0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlKCkgY29uc3Q7CiAK
ICAgICAvLyBEZWNvbXBvc2UgdGhlIG1hdHJpeCBpbnRvIGl0cyBjb21wb25lbnQgcGFydHMuCiAg
ICAgc3RydWN0IERlY29tcG9zZWQyVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKaW5kZXgg
NzEwYTBiYmY0ZDliM2IzNWY2ZjAwYWJiMjUxMDFmY2M2ZTIzMzgzYi4uOWNhMTUzYjUwMDg5ZGFj
YjI5Mjk3ZGYxODliMjk3YzU0MDBmYjk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcApAQCAt
MjU0LDcgKzI1NCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBt
dWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjCiAgICAgbV9kYXRhLnB1dERh
dGEoc291cmNlLCBzY2FsZWRTb3VyY2VTaXplLCBzY2FsZWRTb3VyY2VSZWN0LCBkZXN0UG9pbnQs
IGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSwgbXVsdGlw
bGllZCA9PSBVbm11bHRpcGxpZWQsIDEpOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0
YVVSTChjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxkb3VibGU+LCBDb29yZGluYXRlU3lzdGVtKSBj
b25zdAorU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiwgc3RkOjpv
cHRpb25hbDxkb3VibGU+LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZGF0YTosIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAppbmRleCAzZmRlODMyNjQyYjI0YzU1MzNhMTk5NWJmM2VjNDNlMmExNzEw
YWQzLi4xMjlhMjE4NDEwYzRiMjVkNTNhZTEwNjk0NWZmZGMyNmVkMzI4NDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBSZXBldGl0aW9uQ291bnQgSW1h
Z2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAogICAgIHJldHVybiBSZXBldGl0aW9u
Q291bnROb25lOwogfQogCi1PcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rlcjo6aG90U3BvdCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIEludFBvaW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CmluZGV4IGU1MzgyNjcwODQ0NmUwZDI5ZTAwZGU5OTBiZWJlYmNhYzg3Y2JhMmUuLmFjYjMyYTlm
NTgxN2ExNjMxNWQ1OWY0YjdhZjhkY2Y2YzdiOTNlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CkBAIC01Niw3ICs1Niw3IEBAIGNsYXNzIEltYWdlRGVjb2RlciB7CiAgICAgc2l6ZV90IGZyYW1l
Q291bnQoKSBjb25zdDsKIAogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBj
b25zdDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OworICAgIHN0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKICAgICAKICAgICBJbnRTaXplIGZy
YW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCkgY29uc3Q7CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94
MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCmluZGV4IDFjYTNmYTFkMDM0ODZlMjdlMjc4
YmJiNWVhOTNmN2JmZWM2Njk3MDEuLjZkYTA2MmY0MGQ2MDE3M2FkZTU4YjE3MTQxMmUzNTA0MDFl
NDJiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9Q
bGF0Zm9ybURpc3BsYXlYMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgUGxh
dGZvcm1EaXNwbGF5WDExOjpzdXBwb3J0c1hDb21wb3NpdGUoKSBjb25zdAogICAgIHJldHVybiBt
X3N1cHBvcnRzWENvbXBvc2l0ZS52YWx1ZSgpOwogfQogCi1ib29sIFBsYXRmb3JtRGlzcGxheVgx
MTo6c3VwcG9ydHNYRGFtYWdlKE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSkgY29uc3QK
K2Jvb2wgUGxhdGZvcm1EaXNwbGF5WDExOjpzdXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxp
bnQ+JiBkYW1hZ2VFdmVudEJhc2UpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3N1cHBvcnRzWERhbWFn
ZSkgewogICAgICAgICBtX3N1cHBvcnRzWERhbWFnZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5o
CmluZGV4IDEwYmMxZTI0NjJkOTk5N2I5OGIxMzM5ODZkZDQ0MWMyMGJkMDNlOTEuLjFlMGFkZDI5
ODEwY2YzMmNmNmJjYWQyODY3NTRhYWRjMzE0ZmQ3ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKQEAg
LTQzLDcgKzQzLDcgQEAgY2xhc3MgUGxhdGZvcm1EaXNwbGF5WDExIGZpbmFsIDogcHVibGljIFBs
YXRmb3JtRGlzcGxheSB7CiAKICAgICBEaXNwbGF5KiBuYXRpdmUoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXk7IH0KICAgICBib29sIHN1cHBvcnRzWENvbXBvc2l0ZSgpIGNvbnN0OwotICAgIGJv
b2wgc3VwcG9ydHNYRGFtYWdlKE9wdGlvbmFsPGludD4mIGRhbWFnZUV2ZW50QmFzZSkgY29uc3Q7
CisgICAgYm9vbCBzdXBwb3J0c1hEYW1hZ2Uoc3RkOjpvcHRpb25hbDxpbnQ+JiBkYW1hZ2VFdmVu
dEJhc2UpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExOyB9CkBAIC01NCw5ICs1NCw5IEBA
IGNsYXNzIFBsYXRmb3JtRGlzcGxheVgxMSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkg
ewogCiAgICAgRGlzcGxheSogbV9kaXNwbGF5OwogICAgIGJvb2wgbV9vd25lZERpc3BsYXk7Ci0g
ICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1cHBvcnRzWENvbXBvc2l0ZTsKLSAgICBtdXRh
YmxlIE9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNYRGFtYWdlOwotICAgIG11dGFibGUgT3B0aW9u
YWw8aW50PiBtX2RhbWFnZUV2ZW50QmFzZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9zdXBwb3J0c1hDb21wb3NpdGU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+
IG1fc3VwcG9ydHNYRGFtYWdlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZGFt
YWdlRXZlbnRCYXNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRl
eCBhOTZiMzU4NzNmYWZlZjNjNmM5NDdkYjcxYThkZjk5MDI4YzE1YjE0Li5hNDFlYzBhMmY4MjEy
NWRhMzFmNTQ3ZTEwZjgxOWRhZTcwMzY3ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMTg2LDcgKzE4Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEg
Y3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgICAgIC8vIGFu
ZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgotICAgICAgICB2aXJ0dWFs
IE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQor
ICAgICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBw
cmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAK
aW5kZXggZDBhMmFmZjY1MmQ3NWQ1NTZkZTRmYTZmOGQ3ODkzMjIwNWQ1ZmI2MS4uNjRjMmMzNThh
NjY4N2ExYjVjMTNhYTlhNzdkNTJkZmQwMmFiZjgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6c2V0RmFpbGVk
KCkKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpzZXRGYWlsZWQoKTsKIH0KIAotT3B0aW9uYWw8
SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIC8vIFdo
ZW4gdW5zcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGZyYW1lIGlzIGFsd2F5cyBmcmFtZSAwLiBUaGlz
IGlzIGNvbnNpc3RlbnQgd2l0aAogICAgIC8vIEJpdG1hcEltYWdlIHdoZXJlIGN1cnJlbnRGcmFt
ZSgpIHN0YXJ0cyBhdCAwIGFuZCBvbmx5IGluY3JlYXNlcyB3aGVuIGFuaW1hdGlvbiBpcwpAQCAt
MTI3LDEwICsxMjcsMTAgQEAgT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90
U3BvdCgpIGNvbnN0CiAgICAgcmV0dXJuIGhvdFNwb3RBdEluZGV4KDApOwogfQogCi1PcHRpb25h
bDxJbnRQb2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3RB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPj0gbV9kaXJFbnRy
aWVzLnNpemUoKSB8fCBtX2ZpbGVUeXBlICE9IENVUlNPUikKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbV9kaXJFbnRy
aWVzW2luZGV4XS5tX2hvdFNwb3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggMmQ0
N2E3YmM1OWUyZmJhNmIxNGE0NjQ0OTFiMDUzYjNjNjU1N2NjZi4uYjFiYzVhZGU2NzEyZjQyNWYw
MDUxMGVmYzE4NWMyOGRiOWI3OGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAtNTUs
NyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGF2b2lkIGFjY2Vzc2lu
ZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tCiAgICAg
ICAgIC8vIGluc2lkZSBCTVBJbWFnZVJlYWRlciEKICAgICAgICAgYm9vbCBzZXRGYWlsZWQoKSBv
dmVycmlkZTsKLSAgICAgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZW51bSBJbWFnZVR5cGUgewpAQCAtMTE1
LDggKzExNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gY291bGQgYmUgZGVj
b2RlZC4KICAgICAgICAgYm9vbCBwcm9jZXNzRGlyZWN0b3J5RW50cmllcygpOwogCi0gICAgICAg
IC8vIFJldHVybnMgdGhlIGhvdC1zcG90IGZvciB8aW5kZXh8LCByZXR1cm5zIE51bGxvcHQgaWYg
dGhlcmUgaXMgbm9uZS4KLSAgICAgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3RBdEluZGV4
KHNpemVfdCkgY29uc3Q7CisgICAgICAgIC8vIFJldHVybnMgdGhlIGhvdC1zcG90IGZvciB8aW5k
ZXh8LCByZXR1cm5zIHN0ZDo6bnVsbG9wdCBpZiB0aGVyZSBpcyBub25lLgorICAgICAgICBzdGQ6
Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAg
ICAgIC8vIFJlYWRzIGFuZCByZXR1cm5zIGEgZGlyZWN0b3J5IGVudHJ5IGZyb20gdGhlIGN1cnJl
bnQgb2Zmc2V0IGludG8KICAgICAgICAgLy8gfGRhdGF8LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmNwcApp
bmRleCBlNDEwYTdkOGM0YjY0ZGM3N2MyYTM3Y2VmMTMwMjNjOWFhNmM5NDhkLi4wNTdlMDMzMWQ3
ZjIyMjk4NjYxZjEzZjliOThmZGNmNDZhZWMwOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmNwcApA
QCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCBqcGVnRXJyb3JFeGl0KGpfY29tbW9uX3B0ciBj
b21wcmVzc0RhdGEpCiAgICAgbG9uZ2ptcChlcnItPm1fc2V0am1wQnVmZmVyLCAtMSk7CiB9CiAK
LWJvb2wgY29tcHJlc3NSR0JBQmlnRW5kaWFuVG9KUEVHKHVuc2lnbmVkIGNoYXIqIHJnYmFCaWdF
bmRpYW5EYXRhLCBjb25zdCBJbnRTaXplJiBzaXplLCBWZWN0b3I8Y2hhcj4mIGpwZWdEYXRhLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCitib29sIGNvbXByZXNzUkdCQUJpZ0VuZGlhblRvSlBF
Ryh1bnNpZ25lZCBjaGFyKiByZ2JhQmlnRW5kaWFuRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
VmVjdG9yPGNoYXI+JiBqcGVnRGF0YSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCiB7
CiAgICAgc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0IGNvbXByZXNzRGF0YTsKICAgICBKUEVH
Q29tcHJlc3NFcnJvck1nciBlcnI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmgKaW5kZXggMzI4NDM0YjIwYTI1
MDU2NTRmYmJjNmU2YWY3NWZiZTkwNmE0NjcxYi4uOWYzMWE5MWMzYzZlNzBkN2NjMjY0YzgzZGUy
MmY5ZWI4N2QwZTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWVuY29kZXJzL0pQRUdJbWFnZUVuY29kZXIuaApAQCAtMjcsNiArMjcsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7CiAKLWJvb2wgY29tcHJlc3NSR0JBQmln
RW5kaWFuVG9KUEVHKHVuc2lnbmVkIGNoYXIqIHJnYmFCaWdFbmRpYW5EYXRhLCBjb25zdCBJbnRT
aXplJiwgVmVjdG9yPGNoYXI+JiBqcGVnRGF0YSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0g
TnVsbG9wdCk7Citib29sIGNvbXByZXNzUkdCQUJpZ0VuZGlhblRvSlBFRyh1bnNpZ25lZCBjaGFy
KiByZ2JhQmlnRW5kaWFuRGF0YSwgY29uc3QgSW50U2l6ZSYsIFZlY3RvcjxjaGFyPiYganBlZ0Rh
dGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IDJm
MmM0OGNkYThhMTIwYTBjZmMyZGFkYWU1Y2RkYTg0ZTExOWVlZTQuLjkyYzIxZDI0YjMwMTllZDQx
MzdlNmU4MTQ2OTI2YzM1NDA4YzE4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBjbGFzcyBMZWdhY3lUaWxl
Q2FjaGUgewogICAgIENBTGF5ZXIqIGhvc3RMYXllcigpIGNvbnN0OwogICAgIHVuc2lnbmVkIHRp
bGVDYXBhY2l0eUZvckdyaWQoTGVnYWN5VGlsZUdyaWQqKTsKICAgICBDb2xvciBjb2xvckZvckdy
aWRUaWxlQm9yZGVyKExlZ2FjeVRpbGVHcmlkKikgY29uc3Q7Ci0gICAgdm9pZCBzZXRPdmVycmlk
ZVZpc2libGVSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4pOworICAgIHZvaWQgc2V0T3ZlcnJpZGVW
aXNpYmxlUmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4pOwogCiAgICAgdm9pZCBkb1BlbmRp
bmdSZXBhaW50cygpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgY2xhc3MgTGVnYWN5VGlsZUNhY2hl
IHsKICAgICAvLyBFbnN1cmUgdGhlcmUgYXJlIG5vIGFzeW5jIGNhbGxzIG9uIGEgZGVhZCB0aWxl
IGNhY2hlLgogICAgIFJldGFpblB0cjxMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmU+IG1fdG9tYnN0
b25lOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX292ZXJyaWRlVmlzaWJsZVJlY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdDsKIAogICAg
IFRpbGluZ01vZGUgbV90aWxpbmdNb2RlOwogICAgIFRpbGluZ0RpcmVjdGlvbiBtX3RpbGluZ0Rp
cmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
Lm1tCmluZGV4IGIwYjdiZmRhMmRiODFlZWY3NDFjZjY2NDNjMTBmODBlZjdkMjllZjMuLjY2YTI2
ZTFlNjhlM2M0ZDU3N2FiM2ViNTY4NTE4ZmFjNThmNTk2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtMTE3LDcgKzExNyw3IEBAIEZs
b2F0UmVjdCBMZWdhY3lUaWxlQ2FjaGU6OnZpc2libGVSZWN0SW5MYXllcihDQUxheWVyICpsYXll
cikgY29uc3QKICAgICByZXR1cm4gW2xheWVyIGNvbnZlcnRSZWN0OlttX3dpbmRvdyBleHRlbmRl
ZFZpc2libGVSZWN0XSBmcm9tTGF5ZXI6aG9zdExheWVyKCldOwogfQogCi12b2lkIExlZ2FjeVRp
bGVDYWNoZTo6c2V0T3ZlcnJpZGVWaXNpYmxlUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Qp
Cit2b2lkIExlZ2FjeVRpbGVDYWNoZTo6c2V0T3ZlcnJpZGVWaXNpYmxlUmVjdChzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gcmVjdCkKIHsKICAgICBtX292ZXJyaWRlVmlzaWJsZVJlY3QgPSByZWN0
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVM
YXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0K
aW5kZXggNzc4MmIyNWY0ODA5YTlkNmRmZGNiYzFiY2QzOGU3Mzk3ZWEwMWIzNC4uNWNhMjEyYTNj
NGYyYmVjMjEyZDZiZGY1ZmIxMTI3ZDEzNDY2OWZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCkBAIC02NCw3ICs2NCw3IEBAIC0gKHZvaWQp
cmVuZGVySW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogCiAgICAgW3N1cGVyIHJlbmRl
ckluQ29udGV4dDpjb250ZXh0XTsKIAotICAgIF90aWxlR3JpZC0+dGlsZUNhY2hlKCkuc2V0T3Zl
cnJpZGVWaXNpYmxlUmVjdChOdWxsb3B0KTsKKyAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLnNl
dE92ZXJyaWRlVmlzaWJsZVJlY3Qoc3RkOjpudWxsb3B0KTsKIH0KIEBlbmQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGlu
dXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyTGludXguY3BwCmluZGV4IDlhMDM4MzI2NjBhYTJjYmE5Nzg5MWM2ODBlNGI2ZDJhZGMxMTk0
YjEuLjQyMWM2MTYwZjg4OTEyNDY0NzczZDRlYTNmY2FlZDQ5NjNkNWE3ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJMaW51eC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OkV2ZW50RkRQb2xsZXI6OkV2ZW50RkRQb2xsZXIoaW50IGZkLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KAogCiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OkV2ZW50RkRQb2xsZXI6On5FdmVudEZEUG9sbGVy
KCkKIHsKLSAgICBtX2ZkID0gTnVsbG9wdDsKKyAgICBtX2ZkID0gc3RkOjpudWxsb3B0OwogI2lm
IFVTRShHTElCKQogICAgIGdfc291cmNlX2Rlc3Ryb3kobV9zb3VyY2UuZ2V0KCkpOwogI2Vsc2UK
QEAgLTE2NCwxMSArMTY0LDExIEBAIGlubGluZSB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
bG9nRXJyb3JBbmRDbG9zZUZEcyhjb25zdCBjaGFyKiBsb2cpCiAKICAgICBpZiAobV9ldmVudEZE
KSB7CiAgICAgICAgIGNsb3NlKG1fZXZlbnRGRC52YWx1ZSgpKTsKLSAgICAgICAgbV9ldmVudEZE
ID0gTnVsbG9wdDsKKyAgICAgICAgbV9ldmVudEZEID0gc3RkOjpudWxsb3B0OwogICAgIH0KICAg
ICBpZiAobV9wcmVzc3VyZUxldmVsRkQpIHsKICAgICAgICAgY2xvc2UobV9wcmVzc3VyZUxldmVs
RkQudmFsdWUoKSk7Ci0gICAgICAgIG1fcHJlc3N1cmVMZXZlbEZEID0gTnVsbG9wdDsKKyAgICAg
ICAgbV9wcmVzc3VyZUxldmVsRkQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC0yNTAs
MTIgKzI1MCwxMiBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKIAog
ICAgIGlmIChtX3ByZXNzdXJlTGV2ZWxGRCkgewogICAgICAgICBjbG9zZShtX3ByZXNzdXJlTGV2
ZWxGRC52YWx1ZSgpKTsKLSAgICAgICAgbV9wcmVzc3VyZUxldmVsRkQgPSBOdWxsb3B0OworICAg
ICAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBPbmx5
IGNsb3NlIHRoZSBldmVudEZEIHVzZWQgZm9yIGNncm91cHMuCiAgICAgICAgIGlmIChtX2V2ZW50
RkQpIHsKICAgICAgICAgICAgIGNsb3NlKG1fZXZlbnRGRC52YWx1ZSgpKTsKLSAgICAgICAgICAg
IG1fZXZlbnRGRCA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2V2ZW50RkQgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFj
LmgKaW5kZXggZTRjNzI3MTc5YmU4MDc0MmNmNWViYzMzOTk4MmRkYzI4YjJlN2Q2NC4uYjM0NmE2
NWVkMDE2YTQ4MDc5MTA0ZTkzZTI4NTg0YTYyYjBjYWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgVGhlbWVNYWMgOiBwdWJs
aWMgVGhlbWVDb2NvYSB7CiAgICAgCiAgICAgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50
KENvbnRyb2xQYXJ0KSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYs
IGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9u
dENhc2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRD
YXNjYWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgTGVu
Z3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25z
dCBMZW5ndGhTaXplJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGVu
Z3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRl
JiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KaW5kZXggMmJjMjYyZDgwNmVlOWNmM2FjN2U1NDFmNjhhYzMwMmI2
MmQwODY4Zi4uYTFkNzg1ZjQ1NGViZWZhYmI0MTFlZjhhYzg5ZDJhZWUwM2UyMjQ1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtNjg2LDcgKzY4Niw3IEBAIGlu
dCBUaGVtZU1hYzo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQgcGFydCkg
Y29uc3QKICAgICByZXR1cm4gVGhlbWU6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KHBhcnQp
OwogfQogCi1PcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZU1hYzo6Y29udHJv
bEZvbnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHpv
b21GYWN0b3IpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IFRo
ZW1lTWFjOjpjb250cm9sRm9udChDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAg
ICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAppbmRleCA0NTEyYjg4
MTkyMjEyMTBjZWI1ZTVkN2UxYTYwZDkxYTMwMjliY2FlLi4yODA1ZGNlOTlhMTY4ZGQyZmMwZWVh
YjEzMGVjZWU0MmQxZmQyYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBA
IHZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmZpbHRlcihzdGQ6OmZ1bmN0aW9uPGJv
b2woY29uc3QgTWVkaWFDb25zdHJhaW50CiAgICAgICAgIHJldHVybjsKIH0KIAotdm9pZCBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWlu
dFR5cGUsIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKK3ZvaWQgTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRU
eXBlLCBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKIHsKICAgICBz
d2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpX
aWR0aDoKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFw
OjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYQogICAgIH0K
IH0KIAotdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWlu
dFR5cGUgY29uc3RyYWludFR5cGUsIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+JiYgY29uc3Ry
YWludCkKK3ZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFp
bnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+JiYg
Y29uc3RyYWludCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBN
ZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzoKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25z
dHJhaW50VHlwZSwgT3B0aW9uYQogICAgIH0KIH0KIAotdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIE9wdGlvbmFs
PEJvb2xlYW5Db25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCit2b2lkIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgc3RkOjpv
cHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQogewogICAgIHN3aXRjaCAo
Y29uc3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkVjaG9DYW5j
ZWxsYXRpb246CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIE9wdGlvbmEKICAg
ICB9CiB9CiAKLXZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0
cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiYmIGNv
bnN0cmFpbnQpCit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25z
dHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25zdHJhaW50
PiYmIGNvbnN0cmFpbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewogICAgIGNh
c2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCA5ZGZj
MjFjNDgyMWExMTIxZDQ1ZWYyYTg5MTViMjI4YTM5NDY0YzQxLi4wZTcxOTIxNWRkYWJiN2RmZjky
YzhhYjFlNTdhZjJkNjdkMDA4MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC0zNDEsMTAgKzM0MSwxMCBA
QCBjbGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgewogICAg
ICAgICB9CiAgICAgfQogCi0gICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtX21pbjsKLSAgICBPcHRp
b25hbDxWYWx1ZVR5cGU+IG1fbWF4OwotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV9leGFjdDsK
LSAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1faWRlYWw7CisgICAgc3RkOjpvcHRpb25hbDxWYWx1
ZVR5cGU+IG1fbWluOworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtX21heDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbV9leGFjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVl
VHlwZT4gbV9pZGVhbDsKIH07CiAKIGNsYXNzIEludENvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMg
TnVtZXJpY0NvbnN0cmFpbnQ8aW50PiB7CkBAIC00NzQsOCArNDc0LDggQEAgY2xhc3MgQm9vbGVh
bkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9leGFjdDsKLSAgICBPcHRpb25hbDxib29sPiBt
X2lkZWFsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9leGFjdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG1faWRlYWw7CiB9OwogCiBjbGFzcyBTdHJpbmdDb25zdHJhaW50IDogcHVibGlj
IE1lZGlhQ29uc3RyYWludCB7CkBAIC01ODMsMjUgKzU4MywyNSBAQCBjbGFzcyBNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcCB7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIE9wdGlvbmFsPERv
dWJsZUNvbnN0cmFpbnQ+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29u
c3RyYWludFR5cGUsIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiYmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxTdHJpbmdDb25z
dHJhaW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRU
eXBlLCBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3Ry
YWludD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlw
ZSwgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25z
dHJhaW50PiYmKTsKIAotICAgIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV93aWR0aDsgfQotICAgIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4g
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQotICAgIE9wdGlvbmFs
PEludENvbnN0cmFpbnQ+IHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVNpemU7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFp
bnQ+IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKyAgICBzdGQ6
Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Nh
bXBsZVNpemU7IH0KIAotICAgIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGFzcGVjdFJhdGlv
KCkgY29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQotICAgIE9wdGlvbmFsPERvdWJsZUNv
bnN0cmFpbnQ+IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9Ci0gICAg
T3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1
bWU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGFzcGVjdFJhdGlvKCkg
Y29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RG91Ymxl
Q29uc3RyYWludD4gZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdm9sdW1lOyB9CiAKLSAgICBPcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gZWNob0NhbmNl
bGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZWNob0NhbmNlbGxhdGlvbjsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGVjaG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KIAotICAgIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFp
bnQ+IGZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZhY2luZ01vZGU7IH0KLSAgICBPcHRp
b25hbDxTdHJpbmdDb25zdHJhaW50PiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNl
SWQ7IH0KLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBncm91cElkKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncm91cElkOyB9CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBm
YWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmdDb25zdHJhaW50PiBkZXZpY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNl
SWQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IGdyb3VwSWQoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKQEAgLTY1MywyMCArNjUz
LDIwIEBAIGNsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwIHsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV93aWR0aDsKLSAgICBPcHRpb25hbDxJ
bnRDb25zdHJhaW50PiBtX2hlaWdodDsKLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX3Nh
bXBsZVJhdGU7Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9zYW1wbGVTaXplOworICAg
IHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV93aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEludENvbnN0cmFpbnQ+IG1faGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWlu
dD4gbV9zYW1wbGVSYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9zYW1w
bGVTaXplOwogCi0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV9hc3BlY3RSYXRpbzsK
LSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBtX2ZyYW1lUmF0ZTsKLSAgICBPcHRpb25h
bDxEb3VibGVDb25zdHJhaW50PiBtX3ZvbHVtZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNv
bnN0cmFpbnQ+IG1fYXNwZWN0UmF0aW87CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJh
aW50PiBtX2ZyYW1lUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1f
dm9sdW1lOwogCi0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IG1fZWNob0NhbmNlbGxh
dGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBtX2VjaG9DYW5jZWxs
YXRpb247CiAKLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBtX2ZhY2luZ01vZGU7Ci0g
ICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9kZXZpY2VJZDsKLSAgICBPcHRpb25hbDxT
dHJpbmdDb25zdHJhaW50PiBtX2dyb3VwSWQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25z
dHJhaW50PiBtX2ZhY2luZ01vZGU7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25zdHJhaW50
PiBtX2RldmljZUlkOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9ncm91
cElkOwogfTsKIAogY2xhc3MgRmxhdHRlbmVkQ29uc3RyYWludCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCmluZGV4IDc3ZDFmYTBlMmI1YWY5Mzk3MDE4Y2IyNmEwY2NjMTY5YWJjMTRlN2UuLjE5MDg2
Y2Y5MDE0NDM0ZjRlY2Y5OTIyMDQ4N2EzMTAzMDE5NTE0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwCkBAIC0xNTAsMTMgKzE1MCwxMyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVl
c3RTdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIpCiAgICAgc3RvcChjYWxsaW5nT2JzZXJ2
ZXIpOwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZShPcHRpb25hbDxpbnQ+LCBPcHRpb25hbDxpbnQ+LCBPcHRpb25hbDxkb3VibGU+KQorYm9v
bCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRp
b25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikKIHsK
ICAgICAvLyBUaGUgc2l6ZSBhbmQgZnJhbWUgcmF0ZSBhcmUgd2l0aGluIHRoZSBjYXBhYmlsaXR5
IGxpbWl0cywgc28gdGhleSBhcmUgc3VwcG9ydGVkLgogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25h
bDxJbnRDb25zdHJhaW50PiB3aWR0aENvbnN0cmFpbnQsIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+
IGhlaWdodENvbnN0cmFpbnQsIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGZyYW1lUmF0ZUNv
bnN0cmFpbnQsIFN0cmluZyYgYmFkQ29uc3RyYWludCkKK2Jvb2wgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4g
d2lkdGhDb25zdHJhaW50LCBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodENvbnN0
cmFpbnQsIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gZnJhbWVSYXRlQ29uc3RyYWlu
dCwgU3RyaW5nJiBiYWRDb25zdHJhaW50KQogewogICAgIGlmICghd2lkdGhDb25zdHJhaW50ICYm
ICFoZWlnaHRDb25zdHJhaW50ICYmICFmcmFtZVJhdGVDb25zdHJhaW50KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1
cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aAogICAg
IEFTU0VSVCh0aGlzLT5jYXBhYmlsaXRpZXMoKSk7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzID0gKnRoaXMtPmNhcGFiaWxpdGllcygpOwogCi0gICAg
T3B0aW9uYWw8aW50PiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGg7CiAgICAg
aWYgKHdpZHRoQ29uc3RyYWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNXaWR0aCgpKSB7CiAg
ICAgICAgIGlmIChzdGQ6OmlzaW5mKGZpdG5lc3NEaXN0YW5jZSgqd2lkdGhDb25zdHJhaW50KSkp
IHsKICAgICAgICAgICAgIGJhZENvbnN0cmFpbnQgPSB3aWR0aENvbnN0cmFpbnQtPm5hbWUoKTsK
QEAgLTE3NSw3ICsxNzUsNyBAQCBib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6
ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aAogICAgICAgICB3aWR0
aCA9IHdpZHRoQ29uc3RyYWludC0+dmFsdWVGb3JDYXBhYmlsaXR5UmFuZ2Uoc2l6ZSgpLndpZHRo
KCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOwogICAg
IH0KIAotICAgIE9wdGlvbmFsPGludD4gaGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBo
ZWlnaHQ7CiAgICAgaWYgKGhlaWdodENvbnN0cmFpbnQgJiYgY2FwYWJpbGl0aWVzLnN1cHBvcnRz
SGVpZ2h0KCkpIHsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYoZml0bmVzc0Rpc3RhbmNlKCpoZWln
aHRDb25zdHJhaW50KSkpIHsKICAgICAgICAgICAgIGJhZENvbnN0cmFpbnQgPSBoZWlnaHRDb25z
dHJhaW50LT5uYW1lKCk7CkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291
cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lk
dGgKICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0Q29uc3RyYWludC0+dmFsdWVGb3JDYXBhYmlsaXR5
UmFuZ2Uoc2l6ZSgpLmhlaWdodCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5n
ZU1heCgpLmFzSW50KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOwogICAgIGlmIChmcmFtZVJhdGVD
b25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0c0ZyYW1lUmF0ZSgpKSB7CiAgICAgICAg
IGlmIChzdGQ6OmlzaW5mKGZpdG5lc3NEaXN0YW5jZSgqZnJhbWVSYXRlQ29uc3RyYWludCkpKSB7
CiAgICAgICAgICAgICBiYWRDb25zdHJhaW50ID0gZnJhbWVSYXRlQ29uc3RyYWludC0+bmFtZSgp
OwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQo
Y29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3RyYWluCiAgICAgICAgIChz
b3VyY2UtPiphcHBsaWVyKSh2YWx1ZSk7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXBwbHlTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4g
aGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKK3ZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3Rk
OjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkK
IHsKICAgICBpZiAod2lkdGgpCiAgICAgICAgIHNldFdpZHRoKHdpZHRoLnZhbHVlKCkpOwpAQCAt
NTg5LDcgKzU4OSw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50
cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMgPSAqdGhpcy0+Y2FwYWJpbGl0aWVz
KCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB3
aWR0aDsKICAgICBpZiAoY29uc3QgTWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50ID0gY29uc3Ry
YWludHMuZmluZChNZWRpYUNvbnN0cmFpbnRUeXBlOjpXaWR0aCkpIHsKICAgICAgICAgQVNTRVJU
KGNvbnN0cmFpbnQtPmlzSW50KCkpOwogICAgICAgICBpZiAoY2FwYWJpbGl0aWVzLnN1cHBvcnRz
V2lkdGgoKSkgewpAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludD4gaGVpZ2h0OwogICAgIGlmIChjb25zdCBNZWRpYUNvbnN0cmFpbnQqIGNvbnN0
cmFpbnQgPSBjb25zdHJhaW50cy5maW5kKE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodCkpIHsK
ICAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQtPmlzSW50KCkpOwogICAgICAgICBpZiAoY2FwYWJp
bGl0aWVzLnN1cHBvcnRzSGVpZ2h0KCkpIHsKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3RyYWlu
dCYgY29uc3RyYWludAogICAgICAgICB9CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBm
cmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKICAgICBpZiAo
Y29uc3QgTWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50ID0gY29uc3RyYWludHMuZmluZChNZWRp
YUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGUpKSB7CiAgICAgICAgIEFTU0VSVChjb25zdHJhaW50
LT5pc0RvdWJsZSgpKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0ZyYW1lUmF0
ZSgpKSB7CkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBs
eUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0cmFpbnQKICAgICBj
b21taXRDb25maWd1cmF0aW9uKCk7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFD
b25zdHJhaW50cyYgY29uc3RyYWludHMpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVk
aWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCiB7CiAgICAgQVNTRVJUKGNvbnN0cmFpbnRzLmlz
VmFsaWQoKSk7CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0CiAg
ICAgICAgIHJldHVybiB7IHsgZmFpbGVkQ29uc3RyYWludCwgQVNDSUlMaXRlcmFsKCJDb25zdHJh
aW50IG5vdCBzdXBwb3J0ZWQiKSB9IH07CiAKICAgICBhcHBseUNvbnN0cmFpbnRzKGNhbmRpZGF0
ZXMpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNv
bnN0cmFpbnRzJiBjb25zdHJhaW50cywgU3VjY2Vzc0hhbmRsZXIgc3VjY2Vzc0hhbmRsZXIsIEZh
aWx1cmVIYW5kbGVyIGZhaWx1cmVIYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDJiMzA0
NmM1N2UyNzU1MzA4YTI2MjVhNDBiMzkzZjZkMTZiYzQwYmIuLmU2YWE5Zjc0Y2RlNjI3OTYyOWQx
NWNmMmY3NmM4ZGM3Zjg5OTA1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTk1LDcgKzk1LDcg
QEAgY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWx0aW1l
TWVkaWFTb3VyY2U+IHsKICAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPjsKICAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsK
ICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nl
c3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlcik7Ci0gICAgT3B0aW9uYWw8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFp
bnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmKTsKIApAQCAtMTc0
LDExICsxNzQsMTEgQEAgY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RTZXR0
aW5ncyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgRmxhdHRlbmVkQ29uc3RyYWludCYsIFN0cmlu
ZyYpOwogICAgIHZpcnR1YWwgZG91YmxlIGZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0
cmFpbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlv
bmFsPEludENvbnN0cmFpbnQ+IHdpZHRoLCBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWlnaHQs
IE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+LCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGlu
dD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+KTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNT
aXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8SW50Q29uc3RyYWludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0
cmFpbnQ+LCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVS
YXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+KTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseUNvbnN0cmFp
bnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlT
aXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0
LCBPcHRpb25hbDxkb3VibGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVS
YXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+KTsKIAogICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggNjdjZGJlODAyNzRmZmRiZGEwN2YxNGE1
ZDBmYWFiM2Q0ZTliYWZhNC4uYjcyZWNiNDQ5YmRiMjMyNTUwNGU4MzI0OWY3YjcwODk1NGFkYTc5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKQEAgLTU5LDEzICs1OSwxMyBAQCBjbGFz
cyBBVlZpZGVvQ2FwdHVyZVNvdXJjZSA6IHB1YmxpYyBBVk1lZGlhQ2FwdHVyZVNvdXJjZSB7CiAK
ICAgICB2b2lkIHVwZGF0ZVNldHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIGZp
bmFsOwogCi0gICAgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiB3aWR0
aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOworICAgIHZv
aWQgYXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAgICBi
b29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgYm9vbCBhcHBseUZyYW1l
UmF0ZShkb3VibGUpIGZpbmFsOwogICAgIGJvb2wgc2V0UHJlc2V0KE5TU3RyaW5nKik7CiAKLSAg
ICBOU1N0cmluZyAqYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoT3B0aW9uYWw8
aW50PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQpIGNvbnN0OwotICAgIGJvb2wgc3VwcG9y
dHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVp
Z2h0LCBPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICBOU1N0cmluZyAqYmVzdFNlc3Npb25Q
cmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9w
dGlvbmFsPGludD4gaGVpZ2h0KSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAKICAgICB2b2lkIGluaXRpYWxpemVDYXBh
YmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIGZpbmFsOwogICAgIHZv
aWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCmlu
ZGV4IDdkMzYxNDUwYTQ5YTVlODc3OGEzODY1MTY1ZmY3YTljZTM0NzFkMjguLmVmNWU0NWM5MDMx
ZDk2MjNiY2YyNDdjODhmNThkNGYxODMxYjI2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0KQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBs
eUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lk
dGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKK3Zv
aWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlv
bmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgc2V0UHJlc2V0KGJlc3RTZXNzaW9uUHJlc2V0Rm9y
VmlkZW9EaW1lbnNpb25zKFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCkpKTsKIApAQCAt
NTQxLDcgKzU0MSw3IEBAIFJlZlB0cjxBVk1lZGlhU291cmNlUHJldmlldz4gQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmNyZWF0ZVByZXZpZXcoKQogICAgIHJldHVybiBBVlZpZGVvU291cmNlUHJldmll
dzo6Y3JlYXRlKHNlc3Npb24oKSwgZGV2aWNlKCksIHRoaXMpOwogfQogCi1OU1N0cmluZyAqQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKE9w
dGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0KSBjb25zdAorTlNTdHJpbmcg
KkFWVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9u
cyhzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQpIGNv
bnN0CiB7CiAgICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0KQogICAgICAgICByZXR1cm4gbmlsOwpA
QCAtNTY1LDcgKzU2NSw3IEBAIE5TU3RyaW5nICpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFNl
c3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoT3B0aW9uYWw8aW50CiAgICAgcmV0dXJuIG5p
bDsKIH0KIAotYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVS
YXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxk
b3VibGU+IGZyYW1lUmF0ZSkKK2Jvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN1cHBvcnRzU2l6
ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50
PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgaWYgKCFo
ZWlnaHQgJiYgIXdpZHRoICYmICFmcmFtZVJhdGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9N
ZWRpYUVuZHBvaW50T3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9v
cGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuaAppbmRleCBjMzM5NmU3MThmZTQ3MDNhZDBjYzU1
NzE4YTJlYjNlMmMzMGFjMjFiLi5mMzEwNDhjOWVjZmVlZTM1MGFjMjlmNjIyMWFjZDBjMmVhZGI5
MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL01lZGlhRW5kcG9pbnRPd3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuaApAQCAtMTI4LDcgKzEyOCw3
IEBAIGNsYXNzIE1lZGlhRW5kcG9pbnRPd3IgOiBwdWJsaWMgTWVkaWFFbmRwb2ludCB7CiAgICAg
dm9pZCBlbnN1cmVUcmFuc3BvcnRBZ2VudEFuZFRyYW5zY2VpdmVycyhib29sIGlzSW5pdGlhdG9y
LCBjb25zdCBWZWN0b3I8VHJhbnNjZWl2ZXJDb25maWc+Jik7CiAgICAgdm9pZCBpbnRlcm5hbEFk
ZFJlbW90ZUNhbmRpZGF0ZShPd3JTZXNzaW9uKiwgY29uc3QgSWNlQ2FuZGlkYXRlJiwgY29uc3Qg
U3RyaW5nJiB1ZnJhZywgY29uc3QgU3RyaW5nJiBwYXNzd29yZCk7CiAKLSAgICBPcHRpb25hbDxN
ZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOworICAgIHN0ZDo6b3B0
aW9uYWw8TWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKICAgICBH
UmVnZXgqIG1faGVscGVyU2VydmVyUmVnRXg7CiAKICAgICBPd3JUcmFuc3BvcnRBZ2VudCogbV90
cmFuc3BvcnRBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ2FjaGVWYWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q2FjaGVWYWxpZGF0aW9uLmNwcAppbmRleCAxZjFjMzgwNTU1MTExZjQ0YTFmMWU3ZTZlMDMyYTI3
MzBkZDk0YmZkLi5iMzhlNzA3MjAyMzhlMGM4ZWU3ZWNiMGRlYjkwNmMyYTFiMjU2NTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRl
Q3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3QKICAgICAvLyBO
byBjb21wZW5zYXRpb24gZm9yIGxhdGVuY3kgYXMgdGhhdCBpcyBub3QgdGVycmlibHkgaW1wb3J0
YW50IGluIHByYWN0aWNlLgogICAgIGF1dG8gZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOwog
ICAgIGF1dG8gYXBwYXJlbnRBZ2UgPSBkYXRlVmFsdWUgPyBzdGQ6Om1heCgwdXMsIGR1cmF0aW9u
X2Nhc3Q8bWljcm9zZWNvbmRzPihyZXNwb25zZVRpbWUgLSAqZGF0ZVZhbHVlKSkgOiAwdXM7Ci0g
ICAgYXV0byBhZ2VWYWx1ZSA9IHJlc3BvbnNlLmFnZSgpLnZhbHVlT3IoMHVzKTsKKyAgICBhdXRv
IGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVfb3IoMHVzKTsKICAgICBhdXRvIGNvcnJl
Y3RlZEluaXRpYWxBZ2UgPSBzdGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpOwogICAgIGF1
dG8gcmVzaWRlbnRUaW1lID0gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KHN5c3RlbV9jbG9j
azo6bm93KCkgLSByZXNwb25zZVRpbWUpOwogICAgIHJldHVybiBjb3JyZWN0ZWRJbml0aWFsQWdl
ICsgcmVzaWRlbnRUaW1lOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJj
ZVJlCiAgICAgICAgIHJldHVybiAqbWF4QWdlOwogCiAgICAgYXV0byBkYXRlID0gcmVzcG9uc2Uu
ZGF0ZSgpOwotICAgIGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRp
bWUpOworICAgIGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVfb3IocmVzcG9uc2VUaW1l
KTsKICAgICBpZiAoYXV0byBleHBpcmVzID0gcmVzcG9uc2UuZXhwaXJlcygpKQogICAgICAgICBy
ZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KCpleHBpcmVzIC0gZWZmZWN0aXZlRGF0
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVW
YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5oCmluZGV4IGQzNzZlYmMxNThiYWY0YTZjZDdlN2M5MzcwZjE1MjQwZTdjOGJlYWYuLjFi
YmJlZGVkNjU2Yjc3NDViODhjZmZjNmM1NzQyN2ZkZGJhYTM0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uaApAQCAtNjEsOCArNjEs
OCBAQCBlbnVtIFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uT3JOb3QgeyBEb05vdFJldXNlRXhwaXJl
ZFJlZGlyZWN0aW9uLCBSZXVzZUV4cGlyZWRSZQogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWRpcmVj
dENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLCBSZXVzZUV4cGlyZWRS
ZWRpcmVjdGlvbk9yTm90KTsKIAogc3RydWN0IENhY2hlQ29udHJvbERpcmVjdGl2ZXMgewotICAg
IE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heEFnZTsKLSAgICBPcHRpb25h
bDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFsZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heEFnZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heFN0YWxlOwogICAgIGJvb2wgbm9DYWNoZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBub1N0b3JlIHsgZmFsc2UgfTsKICAgICBib29sIG11c3RSZXZhbGlk
YXRlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuaAppbmRleCA4OTAxYzczMzA1MTA3YmVhODEzZDhkOWE0MTY0NDkyYzE5MGQw
NTQ5Li5lNWRiMTU0MjY2ODc0NDI4NWM1YzhkMWMzM2JhZTUyZGU5NmJmY2E0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCkBAIC00OSw3
ICs0OSw3IEBAIHN0cnVjdCBSZXN1bHQgewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CiB9OwogCi11c2luZyBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoT3B0aW9uYWw8UmVzdWx0Pik+OwordXNpbmcgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgPSBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8UmVzdWx0Pik+Owogc3RydWN0IFNjaGVk
dWxlQ29udGV4dCB7CiAjaWYgSEFWRShSVU5MT09QX1RJTUVSKQogICAgIFNjaGVkdWxlUGFpckhh
c2hTZXQgc2NoZWR1bGVkUGFpcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IDE0OTVhNmM5MjRlYjMxZTA0ZGRmZGM1ZWNlZGRiY2Q1
Yzk5NjgzMGQuLjY0NTU5ZTEyNWM2MTU3YjUzYWE1NTUxMzBjNmQxMDRhYzQ2ZDMxYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC01
NCw3ICs1NCw3IEBAIGNsYXNzIEhUVFBIZWFkZXJNYXAgewogCiAgICAgICAgIHN0cnVjdCBLZXlW
YWx1ZSB7CiAgICAgICAgICAgICBTdHJpbmcga2V5OwotICAgICAgICAgICAgT3B0aW9uYWw8SFRU
UEhlYWRlck5hbWU+IGtleUFzSFRUUEhlYWRlck5hbWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlv
bmFsPEhUVFBIZWFkZXJOYW1lPiBrZXlBc0hUVFBIZWFkZXJOYW1lOwogICAgICAgICAgICAgU3Ry
aW5nIHZhbHVlOwogICAgICAgICB9OwogCkBAIC05OSw3ICs5OSw3IEBAIGNsYXNzIEhUVFBIZWFk
ZXJNYXAgewogICAgICAgICAgICAgaWYgKGl0ID09IG1fdGFibGUudW5jb21tb25IZWFkZXJzKCku
ZW5kKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgbV9rZXlW
YWx1ZS5rZXkgPSBpdC0+a2V5OwotICAgICAgICAgICAgbV9rZXlWYWx1ZS5rZXlBc0hUVFBIZWFk
ZXJOYW1lID0gTnVsbG9wdDsKKyAgICAgICAgICAgIG1fa2V5VmFsdWUua2V5QXNIVFRQSGVhZGVy
TmFtZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIG1fa2V5VmFsdWUudmFsdWUgPSBpdC0+
dmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCA1ZmVkMzg5NTc3
MzcwZDg2YWRkZmJmZDFhYWQ0MjYyYWNkMWIzZTdiLi40OTI4YTM1ZThhYjcxODY5NDE1MjY4YmU1
ZTgxMzhhZGZhMzI3NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgcGFyc2VIVFRQUmVmcmVz
aChjb25zdCBTdHJpbmcmIHJlZnJlc2gsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKQogICAg
IH0KIH0KIAotT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4g
cGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQorc3RkOjpvcHRpb25hbDxzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgZG91YmxlIGRhdGVJbk1pbGxpc2Vjb25kc1NpbmNlRXBvY2ggPSBw
YXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKHZhbHVlLnV0ZjgoKS5kYXRhKCkp
OwogICAgIGlmICghc3RkOjppc2Zpbml0ZShkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVwb2NoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCA3
ZjZiNDI2YWMwOTVjZDk1NjhiYWU5NGM3MzNkMmUzMzkyODNmMGU5Li5kZWNjMWIwM2JiNTA3Zjc0
ODRiYzFhOWMwNDhjYjFlNzYzN2I3ZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgaXNWYWxpZFJlYXNv
blBocmFzZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25z
dCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmKTsKIGJvb2wg
cGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJlZnJlc2gsIGRvdWJsZSYgZGVsYXksIFN0
cmluZyYgdXJsKTsKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQ+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5n
Jik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBTdHJp
bmcmKTsKIFN0cmluZyBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYp
OwogU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
aW5kZXggNDc3M2RlZDdmNGUxZTc4NDE5Zjg0ZmY0NjE4YTVkOWY1YjVmYTZlOS4uNjQ3ZjYwNDE5
YmZjZDBmZWU2Mzc1ZDlkMTg4MDc2NTkyYTFmOTIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlKQogewogICAgIGlmIChyZXNwb25zZS5pc0h0dHBWZXJzaW9uMF85KCkpIHsK
ICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKLSAgICAgICAgT3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0ID0gdXJsLnBvcnQoKTsKICAgICAgICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkgewogICAgICAgICAgICAg
Y2FuY2VsKCk7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJDYW5jZWxsZWQgbG9hZCBm
cm9tICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVz
ZSBpdCBpcyB1c2luZyBIVFRQLzAuOS4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCAyYzEyMjc4ZDVh
ZjBjYzc4MTAzYjZiMWVhMzhlOTgxZTJkZTc0ODYwLi5mYTQ1OGEyNGRmYzBlYTI2MDkwYzkwM2Q1
ZjdhZDA3Y2NmZGUyZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNDMzLDE0ICs0MzMsMTQgQEAg
Ym9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aGFzQ2FjaGVWYWxpZGF0b3JGaWVsZHMoKSBjb25z
dAogICAgIHJldHVybiAhbV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6TGFz
dE1vZGlmaWVkKS5pc0VtcHR5KCkgfHwgIW1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRl
ck5hbWU6OkVUYWcpLmlzRW1wdHkoKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jv
c2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9u
c2VCYXNlOjpjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdAogewogICAgIGlmICghbV9oYXZlUGFy
c2VkQ2FjaGVDb250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2
ZXMoKTsKICAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm1heEFnZTsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBh
cnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgSFRUUEhl
YWRlck5hbWUgaGVhZGVyTmFtZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycywgSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZSkKIHsKICAgICBT
dHJpbmcgaGVhZGVyVmFsdWUgPSBoZWFkZXJzLmdldChoZWFkZXJOYW1lKTsKICAgICBpZiAoaGVh
ZGVyVmFsdWUuaXNFbXB0eSgpKQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHN0YXRpYyBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZURhdGVWYWx1ZUluSGVh
ZGVyKGNvCiAgICAgcmV0dXJuIHBhcnNlSFRUUERhdGUoaGVhZGVyVmFsdWUpOwogfQogCi1PcHRp
b25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZGF0ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKIHsK
ICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNDYzLDcgKzQ2Myw3IEBAIE9w
dGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVz
cG9uc2VCYXNlOjpkYXRlKCkgY29uCiAgICAgcmV0dXJuIG1fZGF0ZTsKIH0KIAotT3B0aW9uYWw8
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFnZSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVz
cG9uc2VCYXNlOjphZ2UoKSBjb25zdAogewogICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9u
bzsKIApAQCAtNDgwLDcgKzQ4MCw3IEBAIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHM+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZ2UoKSBjb25zdAogICAgIHJldHVybiBtX2FnZTsK
IH0KIAotT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhw
aXJlcygpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAKQEAgLTQ5
MSw3ICs0OTEsNyBAQCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwaXJlcygpCiAgICAgcmV0dXJuIG1fZXhwaXJl
czsKIH0KIAotT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4g
UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09u
bHkpOwogCkBAIC01MDIsNyArNTAyLDcgQEAgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmkKICAgICAg
ICAgLy8gYW4gaW52YWxpZCB2YWx1ZSAocmRhcjovL3Byb2JsZW0vMjIzNTI4MzgpLgogICAgICAg
ICBjb25zdCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IGVwb2NoOwogICAg
ICAgICBpZiAobV9sYXN0TW9kaWZpZWQgJiYgbV9sYXN0TW9kaWZpZWQudmFsdWUoKSA9PSBlcG9j
aCkKLSAgICAgICAgICAgIG1fbGFzdE1vZGlmaWVkID0gTnVsbG9wdDsKKyAgICAgICAgICAgIG1f
bGFzdE1vZGlmaWVkID0gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAgICAgICAgIG1faGF2ZVBhcnNl
ZExhc3RNb2RpZmllZEhlYWRlciA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IGYzZDI4
ODFlZGJmYTJiNjY1NTA0ZDNiZTlkYzk4MzVmYTU3ZDFjNTUuLjlkMjJmNGZmMTEyMmFiOGIzM2Ew
MGRkN2RjOWNmYTQ2ZWM4NjRiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluY2x1
ZGVDZXJ0aWZpY2F0ZUluZm8oKSBjb25zdDsKLSAgICBjb25zdCBPcHRpb25hbDxDZXJ0aWZpY2F0
ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5m
bzsgfTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9OwogICAgIAogICAg
IC8vIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gcGFyc2VkIHZhbHVlcyBvZiB0aGUgY29ycmVzcG9u
ZGluZyByZXNwb25zZSBoZWFkZXJzLgogICAgIC8vIE5hTiBtZWFucyB0aGF0IHRoZSBoZWFkZXIg
d2FzIG5vdCBwcmVzZW50IG9yIGhhZCBpbnZhbGlkIHZhbHVlLgpAQCAtMTIzLDExICsxMjMsMTEg
QEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBoYXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IGNhY2hlQ29u
dHJvbE1heEFnZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGRhdGUoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBhZ2UoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50PiBleHBpcmVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gbGFzdE1vZGlmaWVkKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9z
ZWNvbmRzPiBjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGRhdGUo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpt
aWNyb3NlY29uZHM+IGFnZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZXhwaXJlcygpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludD4gbGFzdE1vZGlmaWVkKCkgY29uc3Q7CiAgICAgUGFyc2VkQ29udGVu
dFJhbmdlJiBjb250ZW50UmFuZ2UoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgaXMgcHJpbWFyaWx5
IGZvciB0ZXN0aW5nIHN1cHBvcnQuIEl0IGlzIG5vdCBuZWNlc3NhcmlseSBhY2N1cmF0ZSBpbiBh
bGwgc2NlbmFyaW9zLgpAQCAtMTg5LDE1ICsxODksMTUgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZUJhc2UgewogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgIG11dGFi
bGUgTmV0d29ya0xvYWRUaW1pbmcgbV9uZXR3b3JrTG9hZFRpbWluZzsKIAotICAgIG11dGFibGUg
T3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKIAogICAg
IGludCBtX2h0dHBTdGF0dXNDb2RlOwogCiBwcml2YXRlOgotICAgIG11dGFibGUgT3B0aW9uYWw8
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbV9hZ2U7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBtX2RhdGU7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBtX2V4cGly
ZXM7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50PiBtX2xhc3RNb2RpZmllZDsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8c3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kcz4gbV9hZ2U7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZGF0ZTsKKyAgICBtdXRhYmxl
IHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gbV9l
eHBpcmVzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50PiBtX2xhc3RNb2RpZmllZDsKICAgICBtdXRhYmxlIFBhcnNlZENvbnRl
bnRSYW5nZSBtX2NvbnRlbnRSYW5nZTsKICAgICBtdXRhYmxlIENhY2hlQ29udHJvbERpcmVjdGl2
ZXMgbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCBhMmRiYjljZTk0YmQ2
ZGVjZGY2ODU2NjlkYzIzZWUxNjNiYmQxMmQzLi5mYmFkNjQxOTVhYmRlMzA4NzlmOTgwYThhMjdl
Y2M0ODU3YTkwMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgU29ja2V0U3Ry
ZWFtSGFuZGxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRs
ZT4gewogICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQmKTsKIAogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7Ci0gICAgdmlydHVhbCBP
cHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1DbG9zZSgpID0gMDsKIAogICAgIFVSTCBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5o
CmluZGV4IDRjNDJkODViY2Y2YzQ4NGY2MzI4ODg5N2ZiYjM0M2M1OGM3MzhhYzIuLmUyNmI5YTYy
M2MzMGJkZTM4YWQ5ODdjZTMzZTUyM2M5NmVjM2U1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaApA
QCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewogCiAgICAg
dmlydHVhbCB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5k
bGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNv
Y2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRhdGEsIE9wdGlvbmFsPHNpemVfdD4gbGVu
Z3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNv
Y2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRhdGEsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQo
U29ja2V0U3RyZWFtSGFuZGxlJiwgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3Qg
U29ja2V0U3RyZWFtRXJyb3ImKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCA4
NzZjZjI0MWY4NjJjYzZmZGJkMWE3YTVmZWYyOGJkYWJmYmNmNzU3Li40ZWRkMzkwZGNiODk2ZjEw
YTNjNTYwOTAzZDJlZDkyN2JhNzlhZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNTAs
NyArNTAsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVibGljIFNvY2tldFN0
cmVhbUhhbmRsZSB7CiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCk7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYs
IFNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXggYmEz
OWNkYjE3NDQxNGNhYWViOTZhNmRkNDU1NWJiMTg0MWVjM2QzYS4uY2NiMTRlYTFiMjA3Njk3NmUy
YzVhN2Y0ZDM2ZDEyZjc4ODQ1Y2RkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcApAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVh
ZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCiAgICAgICAgIGlmICghbGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIE9wdGlvbmFsPHNpemVfdD4gb3B0
aW9uYWxMZW5ndGg7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBvcHRpb25hbExlbmd0
aDsKICAgICAgICAgaWYgKGxlbmd0aCAhPSAtMSkKICAgICAgICAgICAgIG9wdGlvbmFsTGVuZ3Ro
ID0gbGVuZ3RoOwogICAgICAgICAKQEAgLTY1MywxNCArNjUzLDE0IEBAIFNvY2tldFN0cmVhbUhh
bmRsZUltcGw6On5Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsKCkKICAgICBBU1NFUlQoIW1fcGFjUnVu
TG9vcFNvdXJjZSk7CiB9CiAKLU9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgaWYgKCFDRldyaXRlU3RyZWFtQ2Fu
QWNjZXB0Qnl0ZXMobV93cml0ZVN0cmVhbS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ0ZJbmRleCByZXN1bHQgPSBD
RldyaXRlU3RyZWFtV3JpdGUobV93cml0ZVN0cmVhbS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGRhdGEpLCBsZW5ndGgpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
QVNTRVJUKHJlc3VsdCA+PSAwKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZXN1
bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggNzU0YTIzNmI0ZWM4NzA3YjRjZWJm
ZWE4NzllY2I5MTY2ZmMzYzE1NS4uNjI2NDgwZmRiMjc2MGM3YjkwMDQ3ZDk2M2E4ZGFhZDA0Njlk
MWI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNz
IFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKIHBy
aXZhdGU6CiAgICAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQmKTsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgZmluYWw7CiAKICAgICBib29sIHJlYWREYXRh
KENVUkwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCmluZGV4IDU3YTZh
NzNkNGUwN2RkZmNhMTYwMGMxOWQyYzUzMTJhMjJjYmFiNjMuLmU5NGY4NGE2ODIzMzk1MmQ0YzJj
NjUyYzZiMmFmZjI1ZDI2NmRjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJs
LmNwcApAQCAtNjYsNyArNjYsNyBAQCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjp+U29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbCgpCiAgICAgQVNTRVJUKCFtX3dvcmtlclRocmVhZCk7CiB9CiAKLU9wdGlv
bmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCitzdGQ6Om9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1T
ZW5kIiwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0Nvb2tpZUphck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Nvb2tpZUphck1hYy5tbQppbmRleCBhNGNkYWRmYjk2ZDE1ZjkwOWUzYzljMzcyZjE0OWNj
OTJkNmY5NDQ2Li5jN2NjMGYwOWJiMjU0NTg1ZGQ5YTdmNTlkMzU0MjJkNjFiMGVmMjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFj
Lm1tCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNJblBhcnRpdGlv
bkZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGMKICAgICAgICAg
Y29va2llU3RvcmFnZSA9IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXTsKIAogICAgIC8vIFRoZSBfZ2V0Q29va2llc0ZvclVSTDogbWV0aG9kIGNhbGxzIHRoZSBj
b21wbGV0aW9uSGFuZGxlciBzeW5jaHJvbm91c2x5LgotICAgIE9wdGlvbmFsPFJldGFpblB0cjxO
U0FycmF5ICo+PiBjb29raWVzUHRyOworICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPE5TQXJy
YXkgKj4+IGNvb2tpZXNQdHI7CiAgICAgW2Nvb2tpZVN0b3JhZ2UgX2dldENvb2tpZXNGb3JVUkw6
dXJsIG1haW5Eb2N1bWVudFVSTDpmaXJzdFBhcnR5IHBhcnRpdGlvbjpwYXJ0aXRpb24gY29tcGxl
dGlvbkhhbmRsZXI6WyZjb29raWVzUHRyXShOU0FycmF5ICpjb29raWVzKSB7CiAgICAgICAgIGNv
b2tpZXNQdHIgPSByZXRhaW5QdHIoY29va2llcyk7CiAgICAgfV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuaAppbmRleCA3ZjAzODQ2ZWM4NGYwNTQ3M2U1ZDU1YjlkYTQ0ZTljODBiNjY1OGNiLi41
ODEwZDliYzk3ZjQ3MjkzYzAzNjdhMWViMjk0YmY3YjMyMzcyMWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogcHJpdmF0ZToKICAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCYp
OwogCi0gICAgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3Jt
U2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIHBs
YXRmb3JtQ2xvc2UoKSBmaW5hbDsKIAogICAgIHZvaWQgYmVnaW5XYWl0aW5nRm9yU29ja2V0V3Jp
dGFiaWxpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCmluZGV4IDA4
N2RhZmRhNDkzMmVmMDRhOTU3MzQzYjA5YTdlYWU4YmMxN2I5OTUuLjI0MTEzMjMwZjM4ZGQ3ZGZk
MGZmMjJlMmY5NDc3NTE5MTk1NjE5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxT
b3VwLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
cmVhZEJ5dGVzKGdzc2l6ZSBieXRlc1JlYWQpCiAKICAgICAvLyBUaGUgY2xpZW50IGNhbiBjbG9z
ZSB0aGUgaGFuZGxlLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAg
ICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBP
cHRpb25hbDxzaXplX3Q+IG9wdGlvbmFsTGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBvcHRpb25hbExlbmd0aDsKICAgICBpZiAoYnl0ZXNSZWFkICE9IC0xKQogICAgICAgICBvcHRp
b25hbExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNSZWFkKTsKICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcywgbV9yZWFkQnVmZmVyLmdldCgpLCBv
cHRpb25hbExlbmd0aCk7CkBAIC0xNzEsMTEgKzE3MSwxMSBAQCB2b2lkIFNvY2tldFN0cmVhbUhh
bmRsZUltcGw6OndyaXRlUmVhZHkoKQogICAgIHNlbmRQZW5kaW5nRGF0YSgpOwogfQogCi1PcHRp
b25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3Jt
U2VuZCIsIHRoaXMpOwogICAgIGlmICghbV9vdXRwdXRTdHJlYW0gfHwgIWRhdGEpCi0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6ZSB3cml0dGVuID0gZ19wb2xsYWJs
ZV9vdXRwdXRfc3RyZWFtX3dyaXRlX25vbmJsb2NraW5nKG1fb3V0cHV0U3RyZWFtLmdldCgpLCBk
YXRhLCBsZW5ndGgsIG1fY2FuY2VsbGFibGUuZ2V0KCksICZlcnJvci5vdXRQdHIoKSk7CkBAIC0x
ODQsNyArMTg0LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpw
bGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGwKICAgICAgICAgICAgIGJlZ2lu
V2FpdGluZ0ZvclNvY2tldFdyaXRhYmlsaXR5KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGRpZEZhaWwoU29ja2V0U3RyZWFtRXJyb3IoZXJyb3ItPmNvZGUsIFN0cmluZygpLCBlcnJvci0+
bWVzc2FnZSkpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBkaWQgbm90IHNlbmQgYWxsIHRoZSBieXRl
cyB3ZSB3ZXJlIGdpdmVuLCB3ZSBrbm93IHRoYXQKQEAgLTE5Myw3ICsxOTMsNyBAQCBPcHRpb25h
bDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbAogICAgICAgICBiZWdpbldhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0
eSgpOwogCiAgICAgaWYgKHdyaXR0ZW4gPT0gLTEpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4od3JpdHRlbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QnJlYWtMaW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaAppbmRl
eCBmMjYxNzk1NjgzYWYyNTk1NThjODFjMjE2ODQzNDY5OWQyNzc0ODJkLi44OGQ3ZTk5NTgyMDM1
ODk3MGYwZThhMWU2MTcxMTVjZmYwODA2OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQnJlYWtMaW5lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVh
a0xpbmVzLmgKQEAgLTg1LDcgKzg1LDcgQEAgaW5saW5lIGJvb2wgbmVlZHNMaW5lQnJlYWtJdGVy
YXRvcihVQ2hhciBjaGFyYWN0ZXIpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBO
b25CcmVha2luZ1NwYWNlQmVoYXZpb3Igbm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yPgogaW5saW5l
IHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0
ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCiB7Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG5leHRCcmVhazsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJl
YWs7CiAKICAgICBDaGFyYWN0ZXJUeXBlIGxhc3RMYXN0Q2hhcmFjdGVyID0gc3RhcnRQb3NpdGlv
biA+IDEgPyBzdHJpbmdbc3RhcnRQb3NpdGlvbiAtIDJdIDogc3RhdGljX2Nhc3Q8Q2hhcmFjdGVy
VHlwZT4obGF6eUJyZWFrSXRlcmF0b3Iuc2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkpOwogICAgIENo
YXJhY3RlclR5cGUgbGFzdENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAwID8gc3RyaW5nW3N0
YXJ0UG9zaXRpb24gLSAxXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0
ZXJhdG9yLmxhc3RDaGFyYWN0ZXIoKSk7CkBAIC0xMDYsNyArMTA2LDcgQEAgaW5saW5lIHVuc2ln
bmVkIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9y
JiBsYXp5QnJlYWsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFrSXRlcmF0b3IpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjYW5kaWRhdGUgPSB0ZXh0QnJlYWtGb2xsb3dpbmco
YnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNvbnRleHRMZW5ndGgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBUZXh0QnJlYWtEb25lKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IE51bGxvcHQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV4dEJyZWFrID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
Y2FuZGlkYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPj0g
cHJpb3JDb250ZXh0TGVuZ3RoKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBpbmxpbmUgdW5zaWduZWQg
bmV4dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxh
enlCcmVhawogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTm9uQnJlYWtpbmdTcGFj
ZUJlaGF2aW9yIG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4KIHN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxh
enlCcmVha0l0ZXJhdG9yLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKIHsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bmV4dEJyZWFrOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhazsKIAogICAg
IENoYXJhY3RlclR5cGUgbGFzdENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAwID8gc3RyaW5n
W3N0YXJ0UG9zaXRpb24gLSAxXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVh
a0l0ZXJhdG9yLmxhc3RDaGFyYWN0ZXIoKSk7CiAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoID0gbGF6eUJyZWFrSXRlcmF0b3IucHJpb3JDb250ZXh0TGVuZ3RoKCk7CkBAIC0xNTIsNyAr
MTUyLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29z
ZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUIKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGkgKyBwcmlvckNvbnRleHRMZW5ndGggPj0gMSk7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBjYW5kaWRhdGUgPSB0ZXh0QnJlYWtGb2xsb3dpbmcoYnJlYWtJdGVyYXRvciwgaSArIHByaW9y
Q29udGV4dExlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09
IFRleHRCcmVha0RvbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBOdWxs
b3B0OworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHJlc3VsdCA9IGNhbmRpZGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHQgPiBwcmlvckNvbnRleHRMZW5ndGgpOwpAQCAtMjI4LDcgKzIyOCw3IEBAIGlubGluZSB1
bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25JZ25vcmluZ05CU1BMb29zZShMYXp5TGluZUJy
ZWFrSXRlcmF0b3ImIGxhCiAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHk8
VUNoYXIsIE5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcjo6SWdub3JlTm9uQnJlYWtpbmdTcGFjZT4o
bGF6eUJyZWFrSXRlcmF0b3IsIHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCksIHN0cmluZ1ZpZXcu
bGVuZ3RoKCksIHN0YXJ0UG9zaXRpb24pOwogfQogCi1pbmxpbmUgYm9vbCBpc0JyZWFrYWJsZShM
YXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBv
c2l0aW9uLCBPcHRpb25hbDx1bnNpZ25lZD4mIG5leHRCcmVha2FibGUsIGJvb2wgYnJlYWtOQlNQ
LCBib29sIGlzTG9vc2VNb2RlLCBib29sIGtlZXBBbGxXb3JkcykKK2lubGluZSBib29sIGlzQnJl
YWthYmxlKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBi
b29sIGJyZWFrTkJTUCwgYm9vbCBpc0xvb3NlTW9kZSwgYm9vbCBrZWVwQWxsV29yZHMpCiB7CiAg
ICAgaWYgKG5leHRCcmVha2FibGUgJiYgbmV4dEJyZWFrYWJsZS52YWx1ZSgpID49IHN0YXJ0UG9z
aXRpb24pCiAgICAgICAgIHJldHVybiBzdGFydFBvc2l0aW9uID09IG5leHRCcmVha2FibGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3Rh
dGUuY3BwCmluZGV4IGZmOTA0NTBiODFlMjE3ZGE5MDUyNTlhODk0OGYwYzFkNmE4YzY5MTguLjYz
MTZiM2E4MmY3ODZjYzQzYTZjOTA4MzI0MTI0YmU2ZjJlZGMzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIHZvaWQgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpmbGF0dGVuKCkKIAog
dm9pZCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KQogewotICAgIGlmIChPcHRpb25hbDxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4gaW52ZXJzZSA9IHQuaW52ZXJzZSgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2UgPSB0LmludmVyc2UoKSkgewogICAgICAg
ICBtX2xhc3RQbGFuYXJQb2ludCA9IGludmVyc2UudmFsdWUoKS5wcm9qZWN0UG9pbnQobV9sYXN0
UGxhbmFyUG9pbnQpOwogICAgICAgICBtX2xhc3RQbGFuYXJRdWFkID0gaW52ZXJzZS52YWx1ZSgp
LnByb2plY3RRdWFkKG1fbGFzdFBsYW5hclF1YWQpOwogICAgICAgICBtX2xhc3RQbGFuYXJBcmVh
ID0gaW52ZXJzZS52YWx1ZSgpLnByb2plY3RRdWFkKG1fbGFzdFBsYW5hckFyZWEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDRlY2Q4NWE2MTFkMzQyYTc5M2JjMjJiYmRjZGNmNzEwNGZmMmE5YmEuLmExZmU4ZmNjMWM4
OGYyNmUxNmE2M2YxMmI2NDMyZDVhMGU4MWNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
dm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpyZXN0YXJ0VGltZXIoKQogICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KGNMb3dRdWFsaXR5VGltZVRocmVzaG9sZCk7CiB9CiAKLU9wdGlvbmFsPElu
dGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9u
UXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCitzdGQ6Om9wdGlvbmFs
PEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0
aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgc3dp
dGNoIChzdHlsZS5pbWFnZVJlbmRlcmluZygpKSB7CiAgICAgY2FzZSBJbWFnZVJlbmRlcmluZ09w
dGltaXplU3BlZWQ6CkBAIC0xMTAsNyArMTEwLDcgQEAgT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1
YWxpdHk+IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25RdWFsaXR5RnJvbVMK
ICAgICBjYXNlIEltYWdlUmVuZGVyaW5nQXV0bzoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEludGVycG9s
YXRpb25RdWFsaXR5IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmNob29zZUludGVycG9sYXRpb25R
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UmIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKQEAgLTExOSw3ICsxMTksNyBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxp
dHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljcwogICAgIGlm
ICghKGltYWdlLmlzQml0bWFwSW1hZ2UoKSB8fCBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkg
fHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0
aW9uRGVmYXVsdDsKIAotICAgIGlmIChPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5
bGVJbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5z
dHlsZSgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gc3R5
bGVJbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUob2JqZWN0LT5z
dHlsZSgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlSW50ZXJwb2xhdGlvbi52YWx1ZSgpOwogCiAg
ICAgLy8gTWFrZSBzdXJlIHRvIHVzZSB0aGUgdW56b29tZWQgaW1hZ2Ugc2l6ZSwgc2luY2UgaWYg
YSBmdWxsIHBhZ2Ugem9vbSBpcyBpbiBlZmZlY3QsIHRoZSBpbWFnZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmgKaW5kZXggMmIxYTQ0NTZl
MTQxYTJlMDJkNjg5MzIxZDg0ZDBjZjgwM2U4YzZkMi4uZWI0ZjE1MzViZTRiM2Q2OGQ2YTQ0NmZj
YTU2NDM3NDliZDI0YjI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEltYWdlUXVhbGl0
eUNvbnRyb2xsZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIoY29uc3QgUmVuZGVyVmlldyYpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPEludGVycG9sYXRp
b25RdWFsaXR5PiBpbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KEdyYXBoaWNzQ29udGV4
dCYsIFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UmLCBjb25zdCB2b2lkKiBsYXllciwgY29u
c3QgTGF5b3V0U2l6ZSYpOwogCiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZChSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggYTdhZDgxNmFk
N2ExNWJmMDNkMmVjYmEwZTRhMDllNWMwMDBlMzRjNy4uZjM2NmIzY2QzYTQwZjA4YjNjYWE5ZWYz
MTY3NTcyYjQzZTBlOGY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJh
dG9yLmgKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgSW5saW5lSXRlcmF0b3IgewogICAgICAgICBt
b3ZlVG8ob2JqZWN0LCAwKTsKICAgICB9CiAKLSAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3Qm
IG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0g
T3B0aW9uYWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBtb3ZlVG8oUmVuZGVyT2JqZWN0JiBvYmpl
Y3QsIHVuc2lnbmVkIG9mZnNldCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0g
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKSkKICAgICB7CiAgICAgICAgIHNldFJlbmRlcmVyKCZv
YmplY3QpOwogICAgICAgICBzZXRPZmZzZXQob2Zmc2V0KTsKQEAgLTg2LDggKzg2LDggQEAgY2xh
c3MgSW5saW5lSXRlcmF0b3IgewogICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fcG9zOyB9CiAgICAgdm9pZCBzZXRPZmZzZXQodW5zaWduZWQgcG9zaXRpb24pOwogICAgIFJl
bmRlckVsZW1lbnQqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KLSAgICBPcHRpb25h
bDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0
QnJlYWthYmxlUG9zaXRpb247IH0KLSAgICB2b2lkIHNldE5leHRCcmVha2FibGVQb3NpdGlvbihP
cHRpb25hbDx1bnNpZ25lZD4gcG9zaXRpb24pIHsgbV9uZXh0QnJlYWthYmxlUG9zaXRpb24gPSBw
b3NpdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOyB9CisgICAgdm9p
ZCBzZXROZXh0QnJlYWthYmxlUG9zaXRpb24oc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcG9zaXRp
b24pIHsgbV9uZXh0QnJlYWthYmxlUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAgIGJvb2wgcmVm
ZXJzVG9FbmRPZlByZXZpb3VzTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJzVG9FbmRPZlBy
ZXZpb3VzTm9kZTsgfQogICAgIHZvaWQgc2V0UmVmZXJzVG9FbmRPZlByZXZpb3VzTm9kZSgpOwog
CkBAIC0xMTgsNyArMTE4LDcgQEAgY2xhc3MgSW5saW5lSXRlcmF0b3IgewogICAgIFJlbmRlckVs
ZW1lbnQqIG1fcm9vdCB7IG51bGxwdHIgfTsKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXIg
eyBudWxscHRyIH07CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9uZXh0QnJlYWthYmxlUG9z
aXRpb247CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9uZXh0QnJlYWthYmxlUG9zaXRp
b247CiAgICAgdW5zaWduZWQgbV9wb3MgeyAwIH07CiAKICAgICAvLyBUaGVyZSBhcmUgYSBjb3Vw
bGUgcGxhY2VzIHdoZXJlIHdlIHdhbnQgdG8gZGVjcmVtZW50IGFuIElubGluZUl0ZXJhdG9yLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDIzYWRjZDM0
MzE3MjFkMDY1YmIyMjNlMjY2OGQ4YTA1ZjUyMDI1NTcuLjNmMzA1NTVhYTRkM2JjMDc1NmQ4Mzc2
ZWY3ZjViYmY5ZjllODI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2Vs
ZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgYgogICAg
IGJvb2wgcmVzcGVjdEh5cGhlbiA9IHNlbGVjdGlvbkVuZCA9PSBsZW5ndGggJiYgaGFzSHlwaGVu
KCk7CiAgICAgaWYgKHJlc3BlY3RIeXBoZW4pCiAgICAgICAgIGh5cGhlbmF0ZWRTdHJpbmcgPSBo
eXBoZW5hdGVkU3RyaW5nRm9yVGV4dFJ1bihzdHlsZSwgbGVuZ3RoKTsKLSAgICBUZXh0UnVuIHRl
eHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxlLCBoeXBoZW5hdGVkU3RyaW5nLCBPcHRpb25h
bDx1bnNpZ25lZD4obGVuZ3RoKSk7CisgICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4
dFJ1bihzdHlsZSwgaHlwaGVuYXRlZFN0cmluZywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4obGVu
Z3RoKSk7CiAgICAgaWYgKHJlc3BlY3RIeXBoZW4pCiAgICAgICAgIHNlbGVjdGlvbkVuZCA9IHRl
eHRSdW4ubGVuZ3RoKCk7CiAKQEAgLTEwMTUsMTggKzEwMTUsMTggQEAgZmxvYXQgSW5saW5lVGV4
dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogICAgIHJldHVy
biBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVj
dCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSku
bWF4WCgpOwogfQogCi1TdHJpbmdWaWV3IElubGluZVRleHRCb3g6OnN1YnN0cmluZ1RvUmVuZGVy
KE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVycmlkaW5nTGVuZ3RoKSBjb25zdAorU3RyaW5nVmlldyBJ
bmxpbmVUZXh0Qm94OjpzdWJzdHJpbmdUb1JlbmRlcihzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBv
dmVycmlkaW5nTGVuZ3RoKSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmdWaWV3KHJlbmRlcmVy
KCkudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnQoKSwgb3ZlcnJpZGluZ0xlbmd0aC52YWx1ZU9yKGxl
bigpKSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcocmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmlu
ZyhzdGFydCgpLCBvdmVycmlkaW5nTGVuZ3RoLnZhbHVlX29yKGxlbigpKSk7CiB9CiAKLVN0cmlu
ZyBJbmxpbmVUZXh0Qm94OjpoeXBoZW5hdGVkU3RyaW5nRm9yVGV4dFJ1bihjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVMZW5ndGgpIGNvbnN0CitT
dHJpbmcgSW5saW5lVGV4dEJveDo6aHlwaGVuYXRlZFN0cmluZ0ZvclRleHRSdW4oY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVMZW5ndGgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc0h5cGhlbigpKTsKICAgICByZXR1cm4gbWFrZVN0cmlu
ZyhzdWJzdHJpbmdUb1JlbmRlcihhbHRlcm5hdGVMZW5ndGgpLCBzdHlsZS5oeXBoZW5TdHJpbmco
KSk7CiB9CiAKLVRleHRSdW4gSW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIFN0cmluZ1ZpZXcgYWx0ZXJuYXRlU3RyaW5nVG9SZW5kZXIsIE9w
dGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVMZW5ndGgpIGNvbnN0CitUZXh0UnVuIElubGluZVRl
eHRCb3g6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTdHJpbmdW
aWV3IGFsdGVybmF0ZVN0cmluZ1RvUmVuZGVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhbHRl
cm5hdGVMZW5ndGgpIGNvbnN0CiB7CiAgICAgaWYgKGFsdGVybmF0ZVN0cmluZ1RvUmVuZGVyLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgc3Vic3RyaW5n
VG9SZW5kZXIoYWx0ZXJuYXRlTGVuZ3RoKSwgcmVuZGVyZXIoKS50ZXh0TGVuZ3RoKCkgLSBzdGFy
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDZhOTcy
MzIyOGM1NjE2YzEzMWU3M2JiYzhhODM4NGZjN2VlZGNiMTkuLjljNDYxOGExNjc0OGYxNGQyODVl
Y2Q3MTVjZjVhZjgwZWM2NGYyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaApAQCAtMTA2LDkgKzEwNiw5IEBAIGNsYXNzIElubGluZVRleHRCb3ggOiBwdWJsaWMg
SW5saW5lQm94IHsKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0OwogICAg
IExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0KCkgY29uc3Q7CiAKLSAgICBTdHJpbmdWaWV3IHN1
YnN0cmluZ1RvUmVuZGVyKE9wdGlvbmFsPHVuc2lnbmVkPiBvdmVycmlkaW5nTGVuZ3RoID0geyB9
KSBjb25zdDsKLSAgICBTdHJpbmcgaHlwaGVuYXRlZFN0cmluZ0ZvclRleHRSdW4oY29uc3QgUmVu
ZGVyU3R5bGUmLCBPcHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVuZ3RoID0geyB9KSBjb25z
dDsKLSAgICBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmLCBTdHJp
bmdWaWV3IGFsdGVybmF0ZVN0cmluZ1RvUmVuZGVyID0geyB9LCBPcHRpb25hbDx1bnNpZ25lZD4g
YWx0ZXJuYXRlTGVuZ3RoID0geyB9KSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IHN1YnN0cmluZ1Rv
UmVuZGVyKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRpbmdMZW5ndGggPSB7IH0pIGNv
bnN0OworICAgIFN0cmluZyBoeXBoZW5hdGVkU3RyaW5nRm9yVGV4dFJ1bihjb25zdCBSZW5kZXJT
dHlsZSYsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCA9IHsgfSkgY29u
c3Q7CisgICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgU3Ry
aW5nVmlldyBhbHRlcm5hdGVTdHJpbmdUb1JlbmRlciA9IHsgfSwgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gYWx0ZXJuYXRlTGVuZ3RoID0geyB9KSBjb25zdDsKICAgICBUZXh0UnVuIGNvbnN0cnVj
dFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmLCBTdHJpbmdWaWV3LCB1bnNpZ25lZCBtYXhpbXVt
TGVuZ3RoKSBjb25zdDsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVy
SXRlcmF0b3IuY3BwCmluZGV4IDJmOTRmODUxMWFhZDU1YTBmOGU3YTIxMWUzNzkyZjk3MDE1MDg3
MmUuLmZhZGU5Mzg4Y2UwOGE3ZDQ3YWQ5YTk2ZjcxNjE4ZmFlMTQ0NmRjNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAKQEAgLTczLDcgKzczLDcgQEAgUmVu
ZGVyQm94KiBPcmRlckl0ZXJhdG9yOjpuZXh0KCkKIHZvaWQgT3JkZXJJdGVyYXRvcjo6cmVzZXQo
KQogewogICAgIG1fY3VycmVudENoaWxkID0gbnVsbHB0cjsKLSAgICBtX29yZGVySW5kZXggPSBO
dWxsb3B0OworICAgIG1fb3JkZXJJbmRleCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogT3JkZXJJdGVy
YXRvclBvcHVsYXRvcjo6T3JkZXJJdGVyYXRvclBvcHVsYXRvcihPcmRlckl0ZXJhdG9yJiBpdGVy
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oCmluZGV4IDM3OGVj
NTIyMmM3ZmY4NzI1NGNlMjRmN2Q2MmNlNzgwYjBmNTc3YTcuLjQ3Y2QyN2FkMjgzNTMzYjFkMzBl
ZTNiOGJmOGY1NzFmYjdiYWI0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9PcmRlckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRl
cmF0b3IuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBPcmRlckl0ZXJhdG9yIHsKICAgICBSZW5k
ZXJCb3gqIG1fY3VycmVudENoaWxkOwogCiAgICAgVmVjdG9yPGludCwgMT4gbV9vcmRlclZhbHVl
czsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fb3JkZXJJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbV9vcmRlckluZGV4OwogfTsKIAogY2xhc3MgT3JkZXJJdGVyYXRvclBvcHVsYXRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKaW5kZXggOGUzMDcwN2Q3ZWMwNzY4
NWU1NTI0ZDVkNzRlNWVmZjQ4NTJlYTlmZC4uODRkNDZiNjI0YjAzYTRmMTkxNjYzMWI1OTU3YmYw
MWViNzgzMGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaApAQCAtMTA4LDcg
KzEwOCw3IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgICAgICBpZiAocmVjdC5pc0luZmluaXRl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRS
ZWN0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CisgICAgICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVj
dChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBSZWN0KHJlY3QpKTsKICAgICAgICAgcmVjdC5zZXRMb2NhdGlvbihMYXlvdXRQ
b2ludCh0cmFuZm9ybWVkUmVjdC5sb2NhdGlvbigpKSk7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShM
YXlvdXRTaXplKHRyYW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDg1MWEwNDc0ZTg0YzcxNTE5YmNkYjIzYzEz
Y2U5OWJjYWExOTQwYjguLjIwMDFiMDBjYzM5MTlhZjBlMTY4YzRhZDI1MTYyYWY3MzQ2OWZmN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjQ4LDE0ICsy
NDgsMTQgQEAgc3RydWN0IFJlbmRlckJsb2NrUmFyZURhdGEgewogICAgIFJlbmRlckJsb2NrUmFy
ZURhdGEoKQogICAgICAgICA6IG1fcGFnaW5hdGlvblN0cnV0KDApCiAgICAgICAgICwgbV9wYWdl
TG9naWNhbE9mZnNldCgwKQotICAgICAgICAsIG1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayhO
dWxsb3B0KQorICAgICAgICAsIG1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayhzdGQ6Om51bGxv
cHQpCiAgICAgewogICAgIH0KIAogICAgIExheW91dFVuaXQgbV9wYWdpbmF0aW9uU3RydXQ7CiAg
ICAgTGF5b3V0VW5pdCBtX3BhZ2VMb2dpY2FsT2Zmc2V0OwogCi0gICAgT3B0aW9uYWw8UmVuZGVy
Rmxvd1RocmVhZCo+IG1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jazsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlbmRlckZsb3dUaHJlYWQqPiBtX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2s7CiB9Owog
CiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVyQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyQmxvY2tSYXJlRGF0YT4+IFJlbmRlckJsb2NrUmFyZURhdGFNYXA7CkBAIC0yOTQ0LDcgKzI5
NDQsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbgogICAgICAgICBib29sIGlnbm9yZUJhc2Vs
aW5lID0gKGxheWVyKCkgJiYgKGxheWVyKCktPm1hcnF1ZWUoKSB8fCAoZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gKGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyKCkgfHwgbGF5ZXIoKS0+
c2Nyb2xsT2Zmc2V0KCkueSgpICE9IDApCiAgICAgICAgICAgICA6IChsYXllcigpLT5ob3Jpem9u
dGFsU2Nyb2xsYmFyKCkgfHwgbGF5ZXIoKS0+c2Nyb2xsT2Zmc2V0KCkueCgpICE9IDApKSkpIHx8
IChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSk7CiAgICAgICAgIAotICAgICAg
ICBPcHRpb25hbDxpbnQ+IGJhc2VsaW5lUG9zID0gaWdub3JlQmFzZWxpbmUgPyBPcHRpb25hbDxp
bnQ+KCkgOiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lID8gc3RkOjpvcHRpb25hbDxp
bnQ+KCkgOiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CiAgICAgICAgIAogICAgICAg
ICBpZiAoaXNEZXByZWNhdGVkRmxleGlibGVCb3goKSkgewogICAgICAgICAgICAgLy8gSGlzdG9y
aWNhbGx5LCB3ZSBkaWQgdGhpcyBjaGVjayBmb3IgYWxsIGJhc2VsaW5lcy4gQnV0IHdlIGNhbid0
CkBAIC0yOTU0LDcgKzI5NTQsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbgogICAgICAgICAg
ICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlIHVzZSB0aGlzIGZvciBhbGwgdXNlcyBvZiBkZXByZWNh
dGVkIGZsZXhib3guCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbU9mQ29udGVudCA9IGRp
cmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsg
Y29udGVudEhlaWdodCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpICsgY29udGVu
dFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAoYmFzZWxpbmVQb3MgJiYgYmFzZWxpbmVQb3MudmFs
dWUoKSA+IGJvdHRvbU9mQ29udGVudCkKLSAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9w
dGlvbmFsPGludD4oKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IHN0ZDo6b3B0aW9u
YWw8aW50PigpOwogICAgICAgICB9CiAgICAgICAgIGlmIChiYXNlbGluZVBvcykKICAgICAgICAg
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSArIGJh
c2VsaW5lUG9zLnZhbHVlKCkgOiBtYXJnaW5SaWdodCgpICsgYmFzZWxpbmVQb3MudmFsdWUoKTsK
QEAgLTI5NzksNDMgKzI5NzksNDMgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bWluTGluZUhl
aWdodEZvclJlcGxhY2VkUmVuZGVyZXIoYm9vbCBpc0ZpcnN0TGluZSwgTGF5b3UKICAgICByZXR1
cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4ocmVwbGFjZWRIZWlnaHQsIGxpbmVIZWlnaHQoaXNGaXJz
dExpbmUsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRp
Y2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7CiB9CiAKLU9wdGlvbmFsPGlu
dD4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8
aW50PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChp
c1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCiAgICAg
Zm9yIChSZW5kZXJCb3gqIGN1cnIgPSBmaXJzdENoaWxkQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJy
LT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAgIGlmICghY3Vyci0+aXNGbG9hdGluZ09yT3V0
T2ZGbG93UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8aW50PiByZXN1
bHQgPSBjdXJyLT5maXJzdExpbmVCYXNlbGluZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBP
cHRpb25hbDxpbnQ+KGN1cnItPmxvZ2ljYWxUb3AoKSArIHJlc3VsdC52YWx1ZSgpKTsgLy8gVHJh
bnNsYXRlIHRvIG91ciBjb29yZGluYXRlIHNwYWNlLgorICAgICAgICAgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8aW50PiByZXN1bHQgPSBjdXJyLT5maXJzdExpbmVCYXNlbGluZSgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oY3Vyci0+bG9naWNhbFRvcCgpICsgcmVz
dWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPGludD4oKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9jazo6aW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25zdAor
c3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01v
ZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pigp
OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICBib29sIGhhdmVO
b3JtYWxGbG93Q2hpbGQgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8qIGJveCA9IGxhc3RDaGlsZEJv
eCgpOyBib3g7IGJveCA9IGJveC0+cHJldmlvdXNTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYg
KGJveC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGhhdmVOb3JtYWxGbG93Q2hpbGQgPSB0cnVlOwotICAgICAgICBpZiAo
T3B0aW9uYWw8aW50PiByZXN1bHQgPSBib3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVj
dGlvbikpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihib3gtPmxvZ2ljYWxUb3Ao
KSArIHJlc3VsdC52YWx1ZSgpKTsgLy8gVHJhbnNsYXRlIHRvIG91ciBjb29yZGluYXRlIHNwYWNl
LgorICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IHJlc3VsdCA9IGJveC0+aW5saW5lQmxv
Y2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlv
bmFsPGludD4oYm94LT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0
ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxG
bG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAgICBhdXRvJiBmb250TWV0cmlj
cyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8aW50Pihmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAgICAgKyAobGluZUhlaWdodCh0
cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1l
dHJpY3MuaGVpZ2h0KCkpIC8gMgogICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jp
em9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSAr
IHBhZGRpbmdSaWdodCgpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsK
KyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1JlbmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKFJlbmRlckVsZW1lbnQmIHJlbmRlckVs
ZW1lbnQpCkBAIC0zMzU0LDcgKzMzNTQsNyBAQCBib29sIFJlbmRlckJsb2NrOjpjYWNoZWRGbG93
VGhyZWFkQ29udGFpbmluZ0Jsb2NrTmVlZHNVcGRhdGUoKSBjb25zdAogdm9pZCBSZW5kZXJCbG9j
azo6c2V0Q2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9ja05lZWRzVXBkYXRlKCkKIHsKICAg
ICBSZW5kZXJCbG9ja1JhcmVEYXRhJiByYXJlRGF0YSA9IGVuc3VyZUJsb2NrUmFyZURhdGEodGhp
cyk7Ci0gICAgcmFyZURhdGEubV9mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrID0gTnVsbG9wdDsK
KyAgICByYXJlRGF0YS5tX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2sgPSBzdGQ6Om51bGxvcHQ7
CiB9CiAKIFJlbmRlckZsb3dUaHJlYWQqIFJlbmRlckJsb2NrOjp1cGRhdGVDYWNoZWRGbG93VGhy
ZWFkQ29udGFpbmluZ0Jsb2NrKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDRlNzg2NjcxOGZkZDc4NjBj
MGQ1ODViOTljNDFmMTk2YzdhZDdjNzkuLjFhZjZhODk5MGI5Mzg3YTA0NzEzOTEwYzEyZWZjM2Nh
MzQ0MGViZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zNDEs
OCArMzQxLDggQEAgY2xhc3MgUmVuZGVyQmxvY2sgOiBwdWJsaWMgUmVuZGVyQm94IHsKICAgICB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxX
aWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAg
T3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRGVsYXkgdXBkYXRp
bmcgc2Nyb2xsYmFycyB1bnRpbCBlbmRBbmRDb21taXRVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlv
dXRUcmFuc2FjdGlvbigpIGlzIGNhbGxlZC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkCiAgICAg
Ly8gd2hlbiBhIGZsZXhib3ggaXMgbGF5aW5nIG91dCBpdHMgZGVzY2VuZGFudHMuIElmIG11bHRp
cGxlIGNhbGxzIGFyZSBtYWRlIHRvIGJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJh
bnNhY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cAppbmRleCAyM2VmMWQ5ODY5YmI4YWE3NTc1YjMxZWRkZmQxOTRlNjZjZDlmODViLi42Nzg0OTUx
MmUzYmNlZWJiNDRjZGM5OWM4MjBiNmJiOGJmZmJlMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzAzNCw0MyArMzAzNCw0MyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMYXlvdXRVbgogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9j
a0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5k
ZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0
aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxp
bnQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAogICAgIGlmICgh
Y2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVC
YXNlbGluZSgpOwogCiAgICAgaWYgKCFoYXNMaW5lcygpKQotICAgICAgICByZXR1cm4gT3B0aW9u
YWw8aW50PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICBp
ZiAoYXV0byBzaW1wbGVMaW5lTGF5b3V0ID0gdGhpcy0+c2ltcGxlTGluZUxheW91dCgpKQotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRlRmxvd0Zp
cnN0TGluZUJhc2VsaW5lKCp0aGlzLCAqc2ltcGxlTGluZUxheW91dCkpOworICAgICAgICByZXR1
cm4gc3RkOjpvcHRpb25hbDxpbnQ+KFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVGbG93Rmlyc3RM
aW5lQmFzZWxpbmUoKnRoaXMsICpzaW1wbGVMaW5lTGF5b3V0KSk7CiAKICAgICBBU1NFUlQoZmly
c3RSb290Qm94KCkpOwogICAgIHJldHVybiBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsg
Zmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFz
ZWxpbmVUeXBlKCkpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5l
QmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdN
b2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4o
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCiAgICAgLy8gTm90ZSB0
aGF0IGhlcmUgd2Ugb25seSB0YWtlIHRoZSBsZWZ0IGFuZCBib3R0b20gaW50byBjb25zaWRlcmF0
aW9uLiBPdXIgY2FsbGVyIHRha2VzIHRoZSByaWdodCBhbmQgdG9wIGludG8gY29uc2lkZXJhdGlv
bi4KICAgICBmbG9hdCBib3hIZWlnaHQgPSBsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5l
ID8gaGVpZ2h0KCkgKyBtX21hcmdpbkJveC5ib3R0b20oKSA6IHdpZHRoKCkgKyBtX21hcmdpbkJv
eC5sZWZ0KCk7CiAgICAgZmxvYXQgbGFzdEJhc2VsaW5lOwogICAgIGlmICghY2hpbGRyZW5Jbmxp
bmUoKSkgewotICAgICAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUgPSBSZW5k
ZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUgPSBSZW5kZXJCbG9jazo6aW5saW5l
QmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKICAgICAgICAgaWYgKCFpbmxpbmVCbG9ja0Jh
c2VsaW5lKQogICAgICAgICAgICAgcmV0dXJuIGlubGluZUJsb2NrQmFzZWxpbmU7CiAgICAgICAg
IGxhc3RCYXNlbGluZSA9IGlubGluZUJsb2NrQmFzZWxpbmUudmFsdWUoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoIWhhc0xpbmVzKCkpIHsKICAgICAgICAgICAgIGlmICghaGFzTGluZUlm
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKICAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGZvbnRNZXRyaWNzID0gZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOwotICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKICAg
ICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9u
T2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyCiAgICAgICAg
ICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgp
ICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSk7CiAgICAg
ICAgIH0KQEAgLTMwODYsNyArMzA4Niw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93
OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3RpCiAgICAg
Ly8gQWNjb3JkaW5nIHRvIHRoZSBDU1Mgc3BlYyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92
aXN1ZGV0Lmh0bWwsIHdlIHNob3VsZG4ndCBiZSBwZXJmb3JtaW5nIHRoaXMgbWluLCBidXQgc2hv
dWxkCiAgICAgLy8gaW5zdGVhZCBiZSByZXR1cm5pbmcgYm94SGVpZ2h0IGRpcmVjdGx5LiBIb3dl
dmVyLCB3ZSBmZWVsIHRoYXQgYSBtaW4gaGVyZSBpcyBiZXR0ZXIgYmVoYXZpb3IgKGFuZCBpcyBj
b25zaXN0ZW50CiAgICAgLy8gZW5vdWdoIHdpdGggdGhlIHNwZWMgdG8gbm90IGNhdXNlIHRvbnMg
b2YgYnJlYWthZ2VzKS4KLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzdHlsZSgpLm92ZXJmbG93
WSgpID09IE9WSVNJQkxFID8gbGFzdEJhc2VsaW5lIDogc3RkOjptaW4oYm94SGVpZ2h0LCBsYXN0
QmFzZWxpbmUpKTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0eWxlKCkub3ZlcmZs
b3dZKCkgPT0gT1ZJU0lCTEUgPyBsYXN0QmFzZWxpbmUgOiBzdGQ6Om1pbihib3hIZWlnaHQsIGxh
c3RCYXNlbGluZSkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c2V0U2VsZWN0aW9uU3Rh
dGUoU2VsZWN0aW9uU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmgKaW5kZXggMWE3YTgzMDA2NjMxM2E1NjdjYWViNzZjZDRjZDY1MWQ5NTIyYzY3
YS4uNzFiNDMxMWM1OWQwMGQ3YjA5MTg2ZmI2ZjdlMjZmYTg4NzIzNDE0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNDQ3LDggKzQ0Nyw4IEBAIGNs
YXNzIFJlbmRlckJsb2NrRmxvdyA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAKICAgICB2b2lkIGNy
ZWF0ZUZsb2F0aW5nT2JqZWN0cygpOwogCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgYm9vbCBpc011bHRpQ29sdW1uQmxvY2tGbG93KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7IH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZmE0NTQyZDhkNjM5ODY3N2YxZGNlMjU0Mzcy
Nzg3YWZjZjBlYmRiOS4uYTNiYzVhZjRkNWM0YzdiOWUzNGQ5NjhkNTU4OWZkMTU0OGI3OWE4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAg
c3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ092ZXJyaWRlV2lkdGhNYXAgPSBudWxscHRyOwogCiAj
aWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKIC8vIFVzZWQgYnkgZ3JpZCBlbGVtZW50cyB0byBw
cm9wZXJseSBzaXplIHRoZWlyIGdyaWQgaXRlbXMuCi10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25z
dCBSZW5kZXJCb3gqLCBPcHRpb25hbDxMYXlvdXRVbml0Pj4gT3ZlcnJpZGVPcHRpb25hbFNpemVN
YXA7Cit0eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+PiBPdmVycmlkZU9wdGlvbmFsU2l6ZU1hcDsKIHN0YXRpYyBPdmVycmlkZU9w
dGlvbmFsU2l6ZU1hcCogZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcCA9
IG51bGxwdHI7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXAqIGdPdmVycmlkZUNvbnRh
aW5pbmdCbG9ja0xvZ2ljYWxXaWR0aE1hcCA9IG51bGxwdHI7CiBzdGF0aWMgT3ZlcnJpZGVTaXpl
TWFwKiBnRXh0cmFJbmxpbmVPZmZzZXRNYXAgPSBudWxscHRyOwpAQCAtNjY3LDI2ICs2NjcsMjYg
QEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxXaWR0aEluUmVnaW9uQnlN
aW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsV2kKICAgICByZXR1cm4gc3RkOjptYXgobG9naWNhbFdp
ZHRoLCBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhNaW5TaXplLCBzdHlsZVRvVXNl
LmxvZ2ljYWxNaW5XaWR0aCgpLCBhdmFpbGFibGVXaWR0aCwgY2IsIHJlZ2lvbikpOwogfQogCi1M
YXlvdXRVbml0IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVu
dEhlaWdodCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsSGVp
Z2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGlmICghc3R5bGVUb1VzZS5sb2dpY2Fs
TWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0
VW5pdD4gbWF4SCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGVUb1Vz
ZS5sb2dpY2FsTWF4SGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQorICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtYXhIID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRV
c2luZyhNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgaW50cmluc2ljQ29u
dGVudEhlaWdodCkpCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ID0gc3RkOjptaW4obG9naWNh
bEhlaWdodCwgbWF4SC52YWx1ZSgpKTsKICAgICB9Ci0gICAgaWYgKE9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWlu
U2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWluSGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWln
aHQpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTG9naWNhbEhl
aWdodCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgc3R5bGVUb1VzZS5sb2dp
Y2FsTWluSGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQogICAgICAgICByZXR1cm4g
c3RkOjptYXgobG9naWNhbEhlaWdodCwgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0LnZhbHVlKCkpOwog
ICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0OwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveDo6Y29u
c3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0
CitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRC
eU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZVRvVXNlLmxvZ2ljYWxNYXhI
ZWlnaHQoKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0
PiBtYXhIID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIHN0eWxlVG9Vc2Uu
bG9naWNhbE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKKyAgICAgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4SCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhl
aWdodChNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgaW50cmluc2ljQ29u
dGVudEhlaWdodCkpCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ID0gc3RkOjptaW4obG9naWNh
bEhlaWdodCwgbWF4SC52YWx1ZSgpKTsKICAgICB9Ci0gICAgaWYgKE9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbXB1dGVkQ29udGVudExvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxI
ZWlnaHQoTWluU2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWluSGVpZ2h0KCksIGludHJpbnNpY0Nv
bnRlbnRIZWlnaHQpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVk
Q29udGVudExvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWluU2l6
ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWluSGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQp
KQogICAgICAgICByZXR1cm4gc3RkOjptYXgobG9naWNhbEhlaWdodCwgY29tcHV0ZWRDb250ZW50
TG9naWNhbEhlaWdodC52YWx1ZSgpKTsKICAgICByZXR1cm4gbG9naWNhbEhlaWdodDsKIH0KQEAg
LTExMjMsMTMgKzExMjMsMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om92ZXJyaWRlTG9naWNh
bENvbnRlbnRIZWlnaHQoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
LU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyQm94OjpvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25z
dAogewogICAgIEFTU0VSVChoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aCgp
KTsKICAgICByZXR1cm4gZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoTWFwLT5n
ZXQodGhpcyk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9n
aWNhbEhlaWdodCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc092ZXJyaWRlQ29udGFpbmluZ0Js
b2NrTG9naWNhbEhlaWdodCgpKTsKICAgICByZXR1cm4gZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2Nr
TG9naWNhbEhlaWdodE1hcC0+Z2V0KHRoaXMpOwpAQCAtMTE0NSwxNCArMTE0NSwxNCBAQCBib29s
IFJlbmRlckJveDo6aGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KCkgY29u
c3QKICAgICByZXR1cm4gZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcCAm
JiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwLT5jb250YWlucyh0aGlz
KTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVu
dExvZ2ljYWxXaWR0aChPcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsV2lkdGgpCit2b2lkIFJl
bmRlckJveDo6c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbFdpZHRoKQogewogICAgIGlmICghZ092ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoTWFwKQogICAgICAgICBnT3ZlcnJpZGVDb250
YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAgPSBuZXcgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXA7
CiAgICAgZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoTWFwLT5zZXQodGhpcywg
bG9naWNhbFdpZHRoKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmlu
Z0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhl
aWdodCkKK3ZvaWQgUmVuZGVyQm94OjpzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCkKIHsK
ICAgICBpZiAoIWdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRNYXApCiAgICAg
ICAgIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRNYXAgPSBuZXcgT3ZlcnJp
ZGVPcHRpb25hbFNpemVNYXA7CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0
IHdpZHRoKQogICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCB3aWR0aCk7CiB9CiAK
LUxheW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKCFoZWlnaHQpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBs
b2dpY2EKICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZXN1bHQ7CiAgICAgICAgIGlmIChjaGVj
a01pbk1heEhlaWdodCkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBpbnRyaW5zaWNIZWlnaHQg
PSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0
KCk7Ci0gICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5n
KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBpbnRyaW5zaWNI
ZWlnaHQpLnZhbHVlT3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAgICAgICAgaGVp
Z2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXpl
LCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZV9vcihjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb25zdHJh
aW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoaGVpZ2h0UmVzdWx0LCBpbnRyaW5zaWNIZWlnaHQpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhlIG9ubHkgdGltZXMgd2UgZG9uJ3Qg
Y2hlY2sgbWluL21heCBoZWlnaHQgYXJlIHdoZW4gYSBmaXhlZCBsZW5ndGggaGFzCkBAIC0yODk1
LDIxICsyODk1LDIxIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhCiAgICAgfQogfQogCi1PcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6
ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVu
aXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRU
eXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRy
aW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAogewotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0
PiBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKKyAgICBp
ZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRl
bnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRy
aW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIGFkanVzdEJvcmRlckJveExvZ2lj
YWxIZWlnaHRGb3JCb3hTaXppbmcobG9naWNhbEhlaWdodC52YWx1ZSgpKTsKLSAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1PcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChTaXplVHlwZSBoZWln
aHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmlu
c2ljQ29udGVudEhlaWdodCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
Qm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29u
c3QgTGVuZ3RoJiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29u
dGVudEhlaWdodCkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIg
PSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhoZWlnaHRUeXBl
LCBoZWlnaHQsIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQogICAgICAgICByZXR1cm4gc3RkOjpt
YXg8TGF5b3V0VW5pdD4oMCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXpp
bmcoaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyKSAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSk7
Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRl
bnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5n
KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3Ro
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91
dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhlIENTUyBz
aXppbmcgc3BlYyBpcyBjb25zaWRlcmluZyBjaGFuZ2luZyB3aGF0IG1pbi1jb250ZW50L21heC1j
b250ZW50IHNob3VsZCByZXNvbHZlIHRvLgogICAgIC8vIElmIHRoYXQgaGFwcGVucywgdGhpcyBj
b2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UuCkBAIC0yOTI2LDEwICsyOTI2LDEwIEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVp
Z2h0VXNpbmcoTGVuZ3RoCiAgICAgcmV0dXJuIExheW91dFVuaXQoMCk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9w
dGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJM
b2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWln
aHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29u
c3QKIHsKICAgICBpZiAoaGVpZ2h0LmlzQXV0bygpKQotICAgICAgICByZXR1cm4gaGVpZ2h0VHlw
ZSA9PSBNaW5TaXplID8gT3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkgOiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gaGVpZ2h0VHlwZSA9PSBNaW5TaXplID8gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PigwKSA6IHN0ZDo6bnVsbG9wdDsKICAgICAvLyBGSVhNRTogVGhlIENTUyBzaXppbmcgc3BlYyBp
cyBjb25zaWRlcmluZyBjaGFuZ2luZyB3aGF0IG1pbi1jb250ZW50L21heC1jb250ZW50IHNob3Vs
ZCByZXNvbHZlIHRvLgogICAgIC8vIElmIHRoYXQgaGFwcGVucywgdGhpcyBjb2RlIHdpbGwgaGF2
ZSB0byBjaGFuZ2UuCiAgICAgaWYgKGhlaWdodC5pc0ludHJpbnNpYygpKQpAQCAtMjkzOCw3ICsy
OTM4LDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudEFu
ZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhTaXoKICAgICAgICAgcmV0dXJuIExheW91dFVu
aXQoaGVpZ2h0LnZhbHVlKCkpOwogICAgIGlmIChoZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVk
KCkpCiAgICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoaGVpZ2h0
KTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBi
b29sIFJlbmRlckJveDo6c2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRDYWxjdWxh
dGlvbihjb25zdCBSZW5kZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBlbmRpY3Vs
YXJXcml0aW5nTW9kZSkgY29uc3QKQEAgLTI5NjgsOSArMjk2OCw5IEBAIHN0YXRpYyBib29sIHRh
YmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlhbFNpemUoY29uc3QgUmVuZGVyQmxvY2smIGJsb2Nr
LCBib29sIHNjCiAgICAgcmV0dXJuIHNjcm9sbHNPdmVyZmxvd1kgJiYgKCFjZWxsLnN0eWxlKCku
bG9naWNhbEhlaWdodCgpLmlzQXV0bygpIHx8ICFjZWxsLnRhYmxlKCktPnN0eWxlKCkubG9naWNh
bEhlaWdodCgpLmlzQXV0bygpKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94
Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRh
Z2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KSBjb25zdAogewotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGF2YWlsYWJsZUhlaWdodDsKIAogICAgIGJvb2wgc2tpcHBlZEF1dG9IZWlnaHRDb250
YWluaW5nQmxvY2sgPSBmYWxzZTsKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxv
Y2soKTsKQEAgLTMwMDgsMjMgKzMwMDgsMjMgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
Qm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWkKICAg
ICAgICAgICAgIC8vIGRvbid0IGNhcmUgaWYgdGhlIGNlbGwgc3BlY2lmaWVkIGEgaGVpZ2h0IG9y
IG5vdC4gV2UganVzdCBhbHdheXMgbWFrZSBvdXJzZWx2ZXMKICAgICAgICAgICAgIC8vIGJlIGEg
cGVyY2VudGFnZSBvZiB0aGUgY2VsbCdzIGN1cnJlbnQgY29udGVudCBoZWlnaHQuCiAgICAgICAg
ICAgICBpZiAoIWNiLT5oYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlhbFNpemUoKmNiLCBz
Y3JvbGxzT3ZlcmZsb3dZKCkpID8gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKSA6IE51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlhbFNpemUo
KmNiLCBzY3JvbGxzT3ZlcmZsb3dZKCkpID8gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigpIDog
c3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBjYi0+b3ZlcnJp
ZGVMb2dpY2FsQ29udGVudEhlaWdodCgpOwogICAgICAgICAgICAgaW5jbHVkZUJvcmRlclBhZGRp
bmcgPSB0cnVlOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjYnN0eWxlLmxvZ2ljYWxIZWln
aHQoKS5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0g
Y2ItPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQo
Y2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCkudmFsdWUoKSkpOwotICAgICAgICBhdmFpbGFibGVIZWln
aHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjYi0+Y29uc3RyYWluQ29udGVudEJveExvZ2lj
YWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0IC0gY2ItPnNjcm9sbGJhckxvZ2ljYWxI
ZWlnaHQoKSwgTnVsbG9wdCkpOworICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBzdGQ6Om1heDxM
YXlvdXRVbml0PigwLCBjYi0+Y29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1h
eChjb250ZW50Qm94SGVpZ2h0IC0gY2ItPnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpu
dWxsb3B0KSk7CiAgICAgfSBlbHNlIGlmIChjYnN0eWxlLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKSAmJiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNwZWNpZmllZEhl
aWdodCkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIHJlY3VyIGFuZCBjb21wdXRlIHRoZSBwZXJj
ZW50YWdlIGhlaWdodCBmb3Igb3VyIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgICAgIGlmIChPcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHRXaXRoU2Nyb2xsYmFyID0gY2ItPmNvbXB1dGVQZXJjZW50
YWdlTG9naWNhbEhlaWdodChjYnN0eWxlLmxvZ2ljYWxIZWlnaHQoKSkpIHsKKyAgICAgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0V2l0aFNjcm9sbGJhciA9IGNiLT5jb21w
dXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCkpKSB7CiAg
ICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyID0gY2It
PmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodFdpdGhTY3Jv
bGxiYXIpOwogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgZm9yIG1pbi9tYXggaGVp
Z2h0IGJlY2F1c2UgdGhpcyBtZXRob2QgZG9lcyBub3QKICAgICAgICAgICAgIC8vIGhhbmRsZSB0
aGUgbWluL21heCBvZiB0aGUgY3VycmVudCBibG9jaywgaXRzIGNhbGxlciBkb2VzLiBTbyB0aGUK
ICAgICAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBmcm9tIHRoZSByZWN1cnNpdmUgY2FsbCB3aWxs
IG5vdCBoYXZlIGJlZW4gYWRqdXN0ZWQKICAgICAgICAgICAgIC8vIHlldC4KLSAgICAgICAgICAg
IExheW91dFVuaXQgY29udGVudEJveEhlaWdodCA9IGNiLT5jb25zdHJhaW5Db250ZW50Qm94TG9n
aWNhbEhlaWdodEJ5TWluTWF4KGNvbnRlbnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyIC0gY2ItPnNj
cm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgTnVsbG9wdCk7CisgICAgICAgICAgICBMYXlvdXRVbml0
IGNvbnRlbnRCb3hIZWlnaHQgPSBjYi0+Y29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRC
eU1pbk1heChjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIGNiLT5zY3JvbGxiYXJMb2dp
Y2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQg
PSBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjb250ZW50Qm94SGVpZ2h0KTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNwZWNpZmllZEhlaWdodCkg
ewpAQCAtMzEyNyw3ICszMTI3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBs
YWNlZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBMZW4KIHsKICAgICBB
U1NFUlQoaGVpZ2h0VHlwZSA9PSBNaW5TaXplIHx8IGhlaWdodFR5cGUgPT0gTWFpbk9yUHJlZmVy
cmVkU2l6ZSB8fCAhbG9naWNhbEhlaWdodC5pc0F1dG8oKSk7CiAgICAgaWYgKGhlaWdodFR5cGUg
PT0gTWluU2l6ZSAmJiBsb2dpY2FsSGVpZ2h0LmlzQXV0bygpKQotICAgICAgICByZXR1cm4gYWRq
dXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoT3B0aW9uYWw8TGF5b3V0VW5p
dD4oMCkpOworICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JC
b3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSk7CiAKICAgICBzd2l0Y2ggKGxv
Z2ljYWxIZWlnaHQudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRml4ZWQ6CkBAIC0zMTkxLDcgKzMx
OTEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIExlbgogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6
YXZhaWxhYmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlwZSBoZWlnaHRU
eXBlKSBjb25zdAogewotICAgIHJldHVybiBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgo
YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBoZWln
aHRUeXBlKSwgTnVsbG9wdCk7CisgICAgcmV0dXJuIGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1p
bk1heChhdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCks
IGhlaWdodFR5cGUpLCBzdGQ6Om51bGxvcHQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6
YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxhYmxlTG9n
aWNhbEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkgY29uc3QKQEAgLTMyMTEsNyArMzIxMSw3IEBAIExh
eW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVu
Z3RoJiBoLCBBdmFpbGFibGVMb2dpCiAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChoLCBhdmFpbGFibGVIZWlnaHQp
KTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5n
U2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmco
TWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwgTnVsbG9wdCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRT
Y3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwgc3RkOjpu
dWxsb3B0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGFkanVzdENv
bnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodEluY2x1ZGluZ1Njcm9sbGJh
cikgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpOwogCiAgICAgLy8gRklYTUU6IENoZWNrIGxv
Z2ljYWxUb3AvbG9naWNhbEJvdHRvbSBoZXJlIHRvIGNvcnJlY3RseSBoYW5kbGUgdmVydGljYWwg
d3JpdGluZy1tb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDJhNjhj
ZmQzOTVjNmZjNDZkZGQ2MThhNDhiNzMyMWY1ZWM0ODNhN2IuLjMyZGI1MmEyZTk0Mjg0MjU5NjMw
YjVlNzBhZDcxY2ZiOTQ1NjUzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
QEAgLTg0LDggKzg0LDggQEAgY2xhc3MgUmVuZGVyQm94IDogcHVibGljIFJlbmRlckJveE1vZGVs
T2JqZWN0IHsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBz
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBoZWlnaHQoKSA6IHdpZHRoKCk7IH0K
IAogICAgIExheW91dFVuaXQgY29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heChM
YXlvdXRVbml0LCBMYXlvdXRVbml0LCBSZW5kZXJCbG9jayYsIFJlbmRlclJlZ2lvbiogPSBudWxs
cHRyKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1h
eChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNp
Y0NvbnRlbnRIZWlnaHQpIGNvbnN0OwotICAgIExheW91dFVuaXQgY29uc3RyYWluQ29udGVudEJv
eExvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIExheW91dFVu
aXQgY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25z
dDsKKyAgICBMYXlvdXRVbml0IGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5N
YXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlu
dHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChM
YXlvdXRVbml0IGxlZnQpCiAgICAgewpAQCAtMzA5LDEyICszMDksMTIgQEAgY2xhc3MgUmVuZGVy
Qm94IDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsKICAgICB2b2lkIGNsZWFyT3ZlcnJp
ZGVMb2dpY2FsQ29udGVudFdpZHRoKCk7CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxXaWR0aCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRlQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0
aCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaGFzT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICBib29sIGhhc092ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0OwotICAgIHZvaWQgc2V0T3Zl
cnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKE9wdGlvbmFsPExheW91dFVu
aXQ+KTsKLSAgICB2b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxI
ZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4pOworICAgIHZvaWQgc2V0T3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4pOwor
ICAgIHZvaWQgc2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodChz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KTsKICAgICB2b2lkIGNsZWFyQ29udGFpbmluZ0Jsb2Nr
T3ZlcnJpZGVTaXplKCk7CiAgICAgdm9pZCBjbGVhck92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxIZWlnaHQoKTsKICAgICBMYXlvdXRVbml0IGV4dHJhSW5saW5lT2Zmc2V0KCkg
Y29uc3Q7CkBAIC0zMjksNyArMzI5LDcgQEAgY2xhc3MgUmVuZGVyQm94IDogcHVibGljIFJlbmRl
ckJveE1vZGVsT2JqZWN0IHsKICAgICBMYXlvdXRVbml0IGFkanVzdEJvcmRlckJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0IHdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IGFkanVzdEJvcmRlckJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWln
aHQpIGNvbnN0OwogICAgIExheW91dFVuaXQgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZv
ckJveFNpemluZyhMYXlvdXRVbml0IHdpZHRoKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGFkanVz
dENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKE9wdGlvbmFsPExheW91dFVuaXQ+
IGhlaWdodCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhl
aWdodEZvckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkgY29uc3Q7
CiAKICAgICBzdHJ1Y3QgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgewogICAgICAgICBDb21wdXRlZE1h
cmdpblZhbHVlcygpCkBAIC00MTksOSArNDE5LDkgQEAgY2xhc3MgUmVuZGVyQm94IDogcHVibGlj
IFJlbmRlckJveE1vZGVsT2JqZWN0IHsKICAgICBMYXlvdXRVbml0IHNocmlua0xvZ2ljYWxXaWR0
aFRvQXZvaWRGbG9hdHMoTGF5b3V0VW5pdCBjaGlsZE1hcmdpblN0YXJ0LCBMYXlvdXRVbml0IGNo
aWxkTWFyZ2luRW5kLCBjb25zdCBSZW5kZXJCbG9jayYgY2IsIFJlbmRlclJlZ2lvbiopIGNvbnN0
OwogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhTaXpl
VHlwZSwgTGVuZ3RoIGxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgsIGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluaW5nQmxvY2ssIFJlbmRlclJlZ2lvbiopIGNv
bnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmco
U2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRy
aW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21w
dXRlQ29udGVudExvZ2ljYWxIZWlnaHQoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBP
cHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWln
aHRVc2luZyhTaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVu
aXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSwgY29uc3QgTGVuZ3Ro
JiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdo
dCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlQ29udGVudExv
Z2ljYWxIZWlnaHQoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29t
cHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoU2l6ZVR5cGUsIExlbmd0aCB3aWR0aCkgY29u
c3Q7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5n
TWluTWF4V2lkdGgoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIFNob3VsZENvbXB1dGVQcmVmZXJy
ZWQgID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIExlbmd0aCBoZWlnaHQpIGNvbnN0OwpAQCAt
NDMzLDcgKzQzMyw3IEBAIGNsYXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9i
amVjdCB7CiAgICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxXaWR0aCgpIGNvbnN0OwogICAgIHN0
YXRpYyBib29sIHBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNvbHZhYmxlRnJvbUJsb2NrKGNv
bnN0IFJlbmRlckJsb2NrJiBjb250YWluaW5nQmxvY2ssIGJvb2wgb3V0T2ZGbG93UG9zaXRpb25l
ZCwgYm9vbCBzY3JvbGxzT3ZlcmZsb3dZKTsKICAgICBib29sIGhhc0RlZmluaXRlTG9naWNhbEhl
aWdodCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVQZXJjZW50YWdl
TG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCkgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVu
Z3RoJiBoZWlnaHQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQogICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2lj
YWxIZWlnaHRUeXBlKSBjb25zdDsKQEAgLTUxNSw4ICs1MTUsOCBAQCBjbGFzcyBSZW5kZXJCb3gg
OiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogICAgIAogICAgIFJlbmRlckxheWVyKiBl
bmNsb3NpbmdGbG9hdFBhaW50aW5nTGF5ZXIoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIE9w
dGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxp
bnQ+KCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShM
aW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWw8aW50PigpOyB9IC8vIFJl
dHVybnMgZW1wdHkgaWYgd2Ugc2hvdWxkIHNraXAgdGhpcyBib3ggd2hlbiBjb21wdXRpbmcgdGhl
IGJhc2VsaW5lIG9mIGFuIGlubGluZS1ibG9jay4KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50
PigpOyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGlu
ZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgeyByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7
IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1
dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJsb2NrLgogCiAgICAgYm9vbCBzaHJpbmtU
b0F2b2lkRmxvYXRzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNv
bnN0OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIGNsYXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5kZXJC
b3hNb2RlbE9iamVjdCB7CiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmLCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cikgY29u
c3Q7CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhVc2luZyhM
ZW5ndGggbG9naWNhbFdpZHRoTGVuZ3RoLCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPExheW91dFVuaXQ+IGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5n
KExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlSW50cmluc2ljTG9naWNh
bENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRl
ckFuZFBhZGRpbmcpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDb21wdXRl
U2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBpc1JlcGxhY2VkKCkgJiYgIWlzSW5saW5l
QmxvY2tPcklubGluZVRhYmxlKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb21iaW5lVGV4dC5jcHAKaW5kZXggYjUwM2ExMzgwOTM0MGU3YWFhMjk2ZTBiZDc4YzVl
NmIwMDJhNThlOC4uMTI2NTE5ZjE1NDE5ZDA4OTk4Zjc4Y2MwOGMzYTY0YWRjMzRiY2VjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC03
MSwxMCArNzEsMTAgQEAgZmxvYXQgUmVuZGVyQ29tYmluZVRleHQ6OndpZHRoKHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udENhc2NhZGUKICAgICByZXR1cm4gUmVuZGVy
VGV4dDo6d2lkdGgoZnJvbSwgbGVuZ3RoLCBmb250LCB4UG9zaXRpb24sIGZhbGxiYWNrRm9udHMs
IGdseXBoT3ZlcmZsb3cpOwogfQogCi1PcHRpb25hbDxGbG9hdFBvaW50PiBSZW5kZXJDb21iaW5l
VGV4dDo6Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAor
c3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBSZW5kZXJDb21iaW5lVGV4dDo6Y29tcHV0ZVRleHRP
cmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAogewogICAgIGlmICghbV9pc0Nv
bWJpbmVkKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIFZpc3VhbGx5IGNlbnRlciBtX2NvbWJpbmVkVGV4dFdpZHRoL0FzY2Vu
dC9EZXNjZW50IHdpdGhpbiBib3hSZWN0CiAgICAgRmxvYXRQb2ludCByZXN1bHQgPSBib3hSZWN0
Lm1pblhNYXhZQ29ybmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ29tYmluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21i
aW5lVGV4dC5oCmluZGV4IDJiOGJjZDJmOGZlYjUwNmU2ZTU0N2QwNTE2MDc0NjkxNmYwZDAxMjMu
LjA3MmI4MWM2MWUwOGY3Nzk2YzY5ZTM0NjBmODg0ZTIyNzc2MGUxY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oCkBAIC0zNCw3ICszNCw3IEBAIGNs
YXNzIFJlbmRlckNvbWJpbmVUZXh0IGZpbmFsIDogcHVibGljIFJlbmRlclRleHQgewogICAgIFRl
eHQmIHRleHROb2RlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGV4dD4obm9kZUZvck5vbkFu
b255bW91cygpKTsgfQogCiAgICAgdm9pZCBjb21iaW5lVGV4dCgpOwotICAgIE9wdGlvbmFsPEZs
b2F0UG9pbnQ+IGNvbXB1dGVUZXh0T3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBjb21wdXRlVGV4dE9yaWdpbihjb25z
dCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0OwogICAgIFN0cmluZyBjb21iaW5lZFN0cmluZ0Zv
clJlbmRlcmluZygpIGNvbnN0OwogICAgIGJvb2wgaXNDb21iaW5lZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDb21iaW5lZDsgfQogICAgIGZsb2F0IGNvbWJpbmVkVGV4dFdpZHRoKGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250KSBjb25zdCB7IHJldHVybiBmb250LnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cAppbmRleCA4MmFkYmNkNDFmMDk4OGE4YjQ5ZWRmMDllZjkyMWUwN2JmOWNkMmQ0Li41NjNlNTM2
ZDZhMTY2MDJmNGNlOTQ1MDM5NjQwZjQxMGYyZTljNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAt
NDMzLDcgKzQzMyw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRI
b3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIAogICAgICAgICAgICAgLy8gVXBk
YXRlIG91ciBoZWlnaHQgYW5kIG92ZXJmbG93IGhlaWdodC4KICAgICAgICAgICAgIGlmIChzdHls
ZSgpLmJveEFsaWduKCkgPT0gQkJBU0VMSU5FKSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWln
aHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVp
Z2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwogICAgICAgICAgICAgICAgIGFzY2VudCAr
PSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50
ID0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSAtIGFz
Y2VudDsKIApAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAg
ICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIHN0ZDo6bWF4PExheW91
dFVuaXQ+KDAsIChjb250ZW50SGVpZ2h0KCkgLSAoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPnZl
cnRpY2FsTWFyZ2luRXh0ZW50KCkpKSAvIDIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBjYXNlIEJCQVNFTElORTogewotICAgICAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hp
bGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9v
cihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwogICAgICAgICAgICAg
ICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwogICAgICAgICAgICAgICAgICAg
ICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgKG1heEFzY2VudCAtIGFzY2VudCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNDljYTJhY2QyODRhZjFjZDFmMmE3OWVjMDJiNzZh
MDM4OTQzM2RlMi4uYzVkMGY3MDE1MGQzYjljZjYwODc1MzVkMDk4ZmIwZjgzOWFlNTZjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0x
NzUsMTYgKzE3NSwxNiBAQCBzdGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVu
dEJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbgogCiBpbnQgUmVuZGVyRmxl
eGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7Ci0gICAgaW50IGJh
c2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKHN5bnRoZXNpemVkQmFzZWxpbmVG
cm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7CisgICAgaW50IGJhc2VsaW5lID0gZmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRC
b3goKnRoaXMsIGRpcmVjdGlvbikpOwogCiAgICAgaW50IG1hcmdpbkFzY2VudCA9IGRpcmVjdGlv
biA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKTsKICAgICBy
ZXR1cm4gYmFzZWxpbmUgKyBtYXJnaW5Bc2NlbnQ7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
RmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50
PiBSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlm
IChpc1dyaXRpbmdNb2RlUm9vdCgpIHx8IG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RM
aW5lIDw9IDApCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVy
biBzdGQ6Om9wdGlvbmFsPGludD4oKTsKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBu
dWxscHRyOwogICAgIGludCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNo
aWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVy
YXRvci5uZXh0KCkpIHsKQEAgLTIwMywyNyArMjAzLDI3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVy
RmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAo
IWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAogICAgIGlmICghaXNDb2x1bW5GbG93KCkg
JiYgaGFzT3J0aG9nb25hbEZsb3coKmJhc2VsaW5lQ2hpbGQpKQotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8aW50Pihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNl
bGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxp
bnQ+KGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hp
bGQtPmxvZ2ljYWxUb3AoKSk7CiAgICAgaWYgKGlzQ29sdW1uRmxvdygpICYmICFoYXNPcnRob2dv
bmFsRmxvdygqYmFzZWxpbmVDaGlsZCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KG1h
aW5BeGlzRXh0ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9n
aWNhbFRvcCgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihtYWluQXhpc0V4
dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3Ao
KSk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gYmFzZWxpbmVDaGlsZC0+Zmlyc3RM
aW5lQmFzZWxpbmUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gYmFzZWxpbmUgPSBiYXNlbGlu
ZUNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmICghYmFzZWxpbmUpIHsKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQm94
QmFzZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBvdXQgaWYgd2UncmUgYSB3cml0aW5nIG1vZGUgcm9v
dC4KICAgICAgICAgLy8gVGhpcyB3b3VsZCBhbHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBm
bGV4Ym94IGlzIG9ydGhvZ29uYWwgdG8gaXRzIGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVj
dGlvbk1vZGUgZGlyZWN0aW9uID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250
YWxMaW5lIDogVmVydGljYWxMaW5lOwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzeW50
aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKmJhc2VsaW5lQ2hpbGQsIGRpcmVjdGlvbikg
KyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxpbnQ+KHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqYmFzZWxpbmVDaGls
ZCwgZGlyZWN0aW9uKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oYmFzZWxpbmUudmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQt
PmxvZ2ljYWxUb3AoKSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihiYXNlbGluZS52
YWx1ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKIH0KIAotT3B0aW9uYWw8aW50
PiBSZW5kZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6
OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAog
ewotICAgIGlmIChPcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKSkK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUo
KSkKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lOwogCiAgICAgaW50IG1hcmdpbkFzY2VudCA9IGRp
cmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKTsK
QEAgLTQ1NSwxMiArNDU1LDEyIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6Om1haW5B
eGlzQ29udGVudEV4dGVudChMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpCiAgICAgcmV0dXJu
IGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
RmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNvbnN0IFJlbmRlckJv
eCYgY2hpbGQsIFNpemVUeXBlIHNpemVUeXBlLCBjb25zdCBMZW5ndGgmIHNpemUpCitzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4aXNFeHRl
bnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBTaXplVHlwZSBzaXplVHlwZSwgY29u
c3QgTGVuZ3RoJiBzaXplKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBvcnRo
b2dvbmFsIGZsb3dzLiBJdCBzaG91bGQgdXNlIHRoZSBmbGV4Ym94J3Mgd3JpdGluZy1tb2RlLCBu
b3QgdGhlIGNoaWxkJ3MgaW4gb3JkZXIKICAgICAvLyB0byBmaWd1cmUgb3V0IHRoZSBsb2dpY2Fs
IGhlaWdodC93aWR0aC4KICAgICBpZiAoaXNDb2x1bW5GbG93KCkpIHsKLSAgICAgICAgLy8gV2Ug
ZG9uJ3QgaGF2ZSB0byBjaGVjayBmb3IgImF1dG8iIGhlcmUgLSBjb21wdXRlQ29udGVudExvZ2lj
YWxIZWlnaHQgd2lsbCBqdXN0IHJldHVybiBOdWxsb3B0IGZvciB0aGF0IGNhc2UgYW55d2F5Lgor
ICAgICAgICAvLyBXZSBkb24ndCBoYXZlIHRvIGNoZWNrIGZvciAiYXV0byIgaGVyZSAtIGNvbXB1
dGVDb250ZW50TG9naWNhbEhlaWdodCB3aWxsIGp1c3QgcmV0dXJuIHN0ZDo6bnVsbG9wdCBmb3Ig
dGhhdCBjYXNlIGFueXdheS4KICAgICAgICAgaWYgKHNpemUuaXNJbnRyaW5zaWMoKSkKICAgICAg
ICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4oY2hpbGQpLmxheW91dElmTmVlZGVkKCk7IC8v
IEZJWE1FOiBTaG91bGQgbm90IG5lZWQgdG8gZG8gYSBsYXlvdXQgaGVyZS4KICAgICAgICAgcmV0
dXJuIGNoaWxkLmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChzaXplVHlwZSwgc2l6ZSwgY2hp
bGQubG9naWNhbEhlaWdodCgpIC0gY2hpbGQuYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQo
KSk7CkBAIC02ODUsNyArNjg1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6cHJl
ZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JgogICAgICAgICBB
U1NFUlQobWFpbkF4aXNFeHRlbnQgLSBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JD
aGlsZChjaGlsZCkgPj0gMCk7CiAgICAgICAgIHJldHVybiBtYWluQXhpc0V4dGVudCAtIG1haW5B
eGlzQm9yZGVyQW5kUGFkZGluZ0V4dGVudEZvckNoaWxkKGNoaWxkKTsKICAgICB9Ci0gICAgcmV0
dXJuIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRT
aXplLCBmbGV4QmFzaXMpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIGNvbXB1dGVNYWluQXhpc0V4
dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBmbGV4QmFzaXMpLnZhbHVl
X29yKDApOwogfQogCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRlbXMoYm9v
bCByZWxheW91dENoaWxkcmVuLCBWZWN0b3I8TGluZUNvbnRleHQ+JiBsaW5lQ29udGV4dHMpCkBA
IC04MjUsNyArODI1LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6dXBkYXRlQXV0b01hcmdp
bnNJbkNyb3NzQXhpcyhSZW5kZXJCb3gmIGNoaWxkLCBMYXlvdXRVbmkKIAogTGF5b3V0VW5pdCBS
ZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGls
ZCkKIHsKLSAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVPcihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOworICAgIExheW91dFVuaXQg
YXNjZW50ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjcm9zc0F4aXNFeHRl
bnRGb3JDaGlsZChjaGlsZCkpOwogICAgIHJldHVybiBhc2NlbnQgKyBmbG93QXdhcmVNYXJnaW5C
ZWZvcmVGb3JDaGlsZChjaGlsZCk7CiB9CiAKQEAgLTg2OSwxMiArODY5LDEyIEBAIGJvb2wgUmVu
ZGVyRmxleGlibGVCb3g6OmNyb3NzQXhpc0xlbmd0aElzRGVmaW5pdGUoY29uc3QgUmVuZGVyQm94
JiBjaGlsZCwgY29uc3QKIH0KIAogICAgIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxl
eGlibGVCb3g6OmNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0
UmF0aW9Vc2luZyhjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBMZW5ndGggY3Jvc3NTaXplTGVuZ3Ro
KSBjb25zdAogewogICAgIEFTU0VSVChjaGlsZC5oYXNBc3BlY3RSYXRpbygpKTsKICAgICBBU1NF
UlQoY2hpbGQuaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpID4gMCk7CiAgICAgCi0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gY3Jvc3NTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y3Jvc3NTaXplOwogICAgIGlmIChjcm9zc1NpemVMZW5ndGguaXNGaXhlZCgpKQogICAgICAgICBj
cm9zc1NpemUgPSBMYXlvdXRVbml0KGNyb3NzU2l6ZUxlbmd0aC52YWx1ZSgpKTsKICAgICBlbHNl
IHsKQEAgLTkwMCwxMyArOTAwLDEzIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFk
anVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNvCiAgICAgTGVu
Z3RoIGNyb3NzTWF4ID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQuc3R5bGUoKS5tYXhIZWln
aHQoKSA6IGNoaWxkLnN0eWxlKCkubWF4V2lkdGgoKTsKIAogICAgIGlmIChjcm9zc0F4aXNMZW5n
dGhJc0RlZmluaXRlKGNoaWxkLCBjcm9zc01heCkpIHsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gbWF4VmFsdWUgPSBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGls
ZCwgY3Jvc3NNYXgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heFZhbHVl
ID0gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY2hpbGQsIGNyb3NzTWF4KTsK
ICAgICAgICAgaWYgKG1heFZhbHVlKQogICAgICAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4o
bWF4VmFsdWUudmFsdWUoKSwgY2hpbGRTaXplKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGNyb3Nz
QXhpc0xlbmd0aElzRGVmaW5pdGUoY2hpbGQsIGNyb3NzTWluKSkgewotICAgICAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBtaW5WYWx1ZSA9IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1Vz
aW5nKGNoaWxkLCBjcm9zc01pbik7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
bWluVmFsdWUgPSBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY3Jv
c3NNaW4pOwogICAgICAgICBpZiAobWluVmFsdWUpCiAgICAgICAgICAgICBjaGlsZFNpemUgPSBz
dGQ6Om1heChtaW5WYWx1ZS52YWx1ZSgpLCBjaGlsZFNpemUpOwogICAgIH0KQEAgLTkyNywxNSAr
OTI3LDE1IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnVzZUNoaWxkQXNwZWN0UmF0aW8oY29u
c3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3QKIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6
OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBMYXlv
dXRVbml0IGNoaWxkU2l6ZSkKIHsKICAgICBMZW5ndGggbWF4ID0gaXNIb3Jpem9udGFsRmxvdygp
ID8gY2hpbGQuc3R5bGUoKS5tYXhXaWR0aCgpIDogY2hpbGQuc3R5bGUoKS5tYXhIZWlnaHQoKTsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtYXhFeHRlbnQgPSBOdWxsb3B0OworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4RXh0ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICht
YXguaXNTcGVjaWZpZWRPckludHJpbnNpYygpKSB7CiAgICAgICAgIG1heEV4dGVudCA9IGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYXhTaXplLCBtYXgpOwotICAgICAgICBj
aGlsZFNpemUgPSBzdGQ6Om1pbihjaGlsZFNpemUsIG1heEV4dGVudC52YWx1ZU9yKGNoaWxkU2l6
ZSkpOworICAgICAgICBjaGlsZFNpemUgPSBzdGQ6Om1pbihjaGlsZFNpemUsIG1heEV4dGVudC52
YWx1ZV9vcihjaGlsZFNpemUpKTsKICAgICB9CiAgICAgCiAgICAgTGVuZ3RoIG1pbiA9IGlzSG9y
aXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkubWluV2lkdGgoKSA6IGNoaWxkLnN0eWxlKCku
bWluSGVpZ2h0KCk7CiAgICAgaWYgKG1pbi5pc1NwZWNpZmllZE9ySW50cmluc2ljKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNo
aWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlT3IoY2hpbGRTaXplKSk7CisgICAgICAgIHJl
dHVybiBzdGQ6Om1heChjaGlsZFNpemUsIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNo
aWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlX29yKGNoaWxkU2l6ZSkpOwogICAgIAogICAgIGlmICgh
aXNGbGV4aWJsZUJveEltcGwoKSAmJiBtaW4uaXNBdXRvKCkgJiYgbWFpbkF4aXNPdmVyZmxvd0Zv
ckNoaWxkKGNoaWxkKSA9PSBPVklTSUJMRSAmJiAhKGlzQ29sdW1uRmxvdygpICYmIGlzPFJlbmRl
ckZsZXhpYmxlQm94PihjaGlsZCkpKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIENTUyBmbGV4Ym94IHNlY3Rpb24gNC41IHdoaWNoIGRlZmluZXMgdGhlIG1pbmlt
dW0gc2l6ZSBvZiAicHVyZSIgZmxleApAQCAtOTQ3LDE3ICs5NDcsMTcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQKICAgICAgICAgQVNTRVJUKGNvbnRlbnRTaXplID49IDApOwogICAgICAgICBp
ZiAoY2hpbGQuaGFzQXNwZWN0UmF0aW8oKSAmJiBjaGlsZC5pbnRyaW5zaWNTaXplKCkuaGVpZ2h0
KCkgPiAwKQogICAgICAgICAgICAgY29udGVudFNpemUgPSBhZGp1c3RDaGlsZFNpemVGb3JBc3Bl
Y3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1heChjaGlsZCwgY29udGVudFNpemUpOwotICAgICAgICBj
b250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRTaXplLCBtYXhFeHRlbnQudmFsdWVPcihjb250
ZW50U2l6ZSkpOworICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRTaXplLCBt
YXhFeHRlbnQudmFsdWVfb3IoY29udGVudFNpemUpKTsKICAgICAgICAgCiAgICAgICAgIExlbmd0
aCBtYWluU2l6ZSA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkud2lkdGgoKSA6
IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCk7CiAgICAgICAgIGlmIChtYWluQXhpc0xlbmd0aElzRGVm
aW5pdGUoY2hpbGQsIG1haW5TaXplKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCByZXNvbHZl
ZE1haW5TaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclBy
ZWZlcnJlZFNpemUsIG1haW5TaXplKS52YWx1ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc29s
dmVkTWFpblNpemUgPj0gMCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IHNwZWNpZmllZFNpemUg
PSBzdGQ6Om1pbihyZXNvbHZlZE1haW5TaXplLCBtYXhFeHRlbnQudmFsdWVPcihyZXNvbHZlZE1h
aW5TaXplKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHNwZWNpZmllZFNpemUgPSBzdGQ6Om1p
bihyZXNvbHZlZE1haW5TaXplLCBtYXhFeHRlbnQudmFsdWVfb3IocmVzb2x2ZWRNYWluU2l6ZSkp
OwogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwgc3RkOjptaW4oc3BlY2lm
aWVkU2l6ZSwgY29udGVudFNpemUpKTsKICAgICAgICAgfSBlbHNlIGlmICh1c2VDaGlsZEFzcGVj
dFJhdGlvKGNoaWxkKSkgewogICAgICAgICAgICAgTGVuZ3RoIGNyb3NzU2l6ZUxlbmd0aCA9IGlz
SG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCkgOiBjaGlsZC5zdHlsZSgp
LndpZHRoKCk7Ci0gICAgICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB0cmFuc2ZlcnJlZFNp
emUgPSBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY3Jvc3NTaXpl
TGVuZ3RoKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gdHJhbnNmZXJy
ZWRTaXplID0gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY2hpbGQsIGNyb3Nz
U2l6ZUxlbmd0aCk7CiAgICAgICAgICAgICBpZiAodHJhbnNmZXJyZWRTaXplKSB7CiAgICAgICAg
ICAgICAgICAgdHJhbnNmZXJyZWRTaXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9D
cm9zc0F4aXNNaW5BbmRNYXgoY2hpbGQsIHRyYW5zZmVycmVkU2l6ZS52YWx1ZSgpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBzdGQ6Om1pbih0cmFuc2ZlcnJl
ZFNpemUudmFsdWUoKSwgY29udGVudFNpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggMzk0YThkZTU4MWYwZWY4ZjViZTMwM2Q0ODU5YmYx
N2Y5MjA4NjE4NC4uM2ExOWJjYmZmNWY2Mzg3NTEyN2FiOWM2NTcyMWY2YjFjN2MwOWIwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTQ4LDgg
KzQ4LDggQEAgY2xhc3MgUmVuZGVyRmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVyQmxvY2sgewog
ICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7CiAKICAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0
aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludENoaWxk
cmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQYWludEluZm8mIGZv
ckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJpZGU7CiAKQEAgLTk3LDcgKzk3LDcgQEAg
Y2xhc3MgUmVuZGVyRmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogICAgIExheW91
dFVuaXQgbWFpbkF4aXNFeHRlbnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNyb3NzQXhpc0Nv
bnRlbnRFeHRlbnQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1haW5BeGlzQ29udGVudEV4dGVu
dChMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0KTsKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxk
LCBTaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBzaXplKTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hp
bGQsIFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIHNpemUpOwogICAgIFdyaXRpbmdNb2RlIHRyYW5z
Zm9ybWVkV3JpdGluZ01vZGUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUJvcmRl
clN0YXJ0KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVCb3JkZXJFbmQoKSBjb25z
dDsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBSZW5kZXJGbGV4aWJsZUJveCA6IHB1YmxpYyBS
ZW5kZXJCbG9jayB7CiAgICAgYm9vbCBtYWluQXhpc0xlbmd0aElzRGVmaW5pdGUoY29uc3QgUmVu
ZGVyQm94JiwgY29uc3QgTGVuZ3RoJikgY29uc3Q7CiAgICAgYm9vbCBjcm9zc0F4aXNMZW5ndGhJ
c0RlZmluaXRlKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIGJv
b2wgdXNlQ2hpbGRBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjb25z
dCBSZW5kZXJCb3gmIGNoaWxkLCBMZW5ndGggY3Jvc3NTaXplTGVuZ3RoKSBjb25zdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1Vz
aW5nKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExlbmd0aCBjcm9zc1NpemVMZW5ndGgpIGNvbnN0
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZsZXhpYmxlQm94SW1wbCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5jcHAKaW5kZXggZDQyM2FjM2IzM2QyOWM3MTBhNTM5MjUxNDRiZDg1OTQ0Nzg4OThhMC4u
ODk2N2FiOTE5ZTRmZmVmMDA5Mjk5MjY0NDllMGUxNDFmOWVjNmIzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAtMTA4Nyw3ICsxMDg3LDcg
QEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayhjb25zdCBSZW5k
ZXJCbG9jayogYmxvY2ssIExheW91dFVuaXQKICAgICAgICAgaGFzQ29tcHV0ZWRBdXRvSGVpZ2h0
ID0gdHJ1ZTsKIAogICAgICAgICAvLyBDb21wdXRlIHRoZSByZWdpb24gaGVpZ2h0IHByZXRlbmRp
bmcgdGhhdCB0aGUgb2Zmc2V0QnJlYWtJbkN1cnJlbnRSZWdpb24gaXMgdGhlIGxvZ2ljYWxIZWln
aHQgZm9yIHRoZSBhdXRvLWhlaWdodCByZWdpb24uCi0gICAgICAgIExheW91dFVuaXQgcmVnaW9u
Q29tcHV0ZWRBdXRvSGVpZ2h0ID0gbmFtZWRGbG93RnJhZ21lbnQuY29uc3RyYWluQ29udGVudEJv
eExvZ2ljYWxIZWlnaHRCeU1pbk1heChvZmZzZXRCcmVha0luQ3VycmVudFJlZ2lvbiwgTnVsbG9w
dCk7CisgICAgICAgIExheW91dFVuaXQgcmVnaW9uQ29tcHV0ZWRBdXRvSGVpZ2h0ID0gbmFtZWRG
bG93RnJhZ21lbnQuY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChvZmZz
ZXRCcmVha0luQ3VycmVudFJlZ2lvbiwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICAvLyBUaGUg
bmV3IGhlaWdodCBvZiB0aGlzIHJlZ2lvbiBuZWVkcyB0byBiZSBzbWFsbGVyIHRoYW4gdGhlIGlu
aXRpYWwgdmFsdWUsIHRoZSBtYXggaGVpZ2h0LiBBIGZvcmNlZCBicmVhayBpcyB0aGUgb25seSB3
YXkgdG8gY2hhbmdlIHRoZSBpbml0aWFsCiAgICAgICAgIC8vIGhlaWdodCBvZiBhbiBhdXRvLWhl
aWdodCByZWdpb24gYmVzaWRlcyBjb250ZW50IGVuZGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCA0NzVmNTkxNGRjMjM4Yzg0MDYzNmZjOGYxOGZhZjY5OWM1
YWExYmZmLi41Y2VmNjliMTQ3MjE3MjcyMzM4NzE5YTExYTU4MDRlYTc2MmZmYWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xh
c3MgR3JpZFRyYWNrIHsKIAogICAgIHZvaWQgc2V0R3Jvd3RoTGltaXQoTGF5b3V0VW5pdCBncm93
dGhMaW1pdCkKICAgICB7Ci0gICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9PSBp
bmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3RoTGlt
aXRDYXAudmFsdWVPcihncm93dGhMaW1pdCkpOworICAgICAgICBtX2dyb3d0aExpbWl0ID0gZ3Jv
d3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0
LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlX29yKGdyb3d0aExpbWl0KSk7CiAgICAgICAgIGVuc3Vy
ZUdyb3d0aExpbWl0SXNCaWdnZXJUaGFuQmFzZVNpemUoKTsKICAgICB9CiAKQEAgLTE0MCwxMyAr
MTQwLDEzIEBAIGNsYXNzIEdyaWRUcmFjayB7CiAgICAgYm9vbCBpbmZpbml0ZWx5R3Jvd2FibGUo
KSBjb25zdCB7IHJldHVybiBtX2luZmluaXRlbHlHcm93YWJsZTsgfQogICAgIHZvaWQgc2V0SW5m
aW5pdGVseUdyb3dhYmxlKGJvb2wgaW5maW5pdGVseUdyb3dhYmxlKSB7IG1faW5maW5pdGVseUdy
b3dhYmxlID0gaW5maW5pdGVseUdyb3dhYmxlOyB9CiAKLSAgICB2b2lkIHNldEdyb3d0aExpbWl0
Q2FwKE9wdGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKQorICAgIHZvaWQgc2V0R3Jv
d3RoTGltaXRDYXAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1pdENhcCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghZ3Jvd3RoTGltaXRDYXAgfHwgZ3Jvd3RoTGltaXRDYXAudmFs
dWUoKSA+PSAwKTsKICAgICAgICAgbV9ncm93dGhMaW1pdENhcCA9IGdyb3d0aExpbWl0Q2FwOwog
ICAgIH0KIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKCkgY29uc3Qg
eyByZXR1cm4gbV9ncm93dGhMaW1pdENhcDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gZ3Jvd3RoTGltaXRDYXAoKSBjb25zdCB7IHJldHVybiBtX2dyb3d0aExpbWl0Q2FwOyB9CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBncm93dGhMaW1pdElzSW5maW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX2dyb3d0aExpbWl0ID09IGluZmluaXR5OyB9CkBAIC0xNjIsNyArMTYyLDcgQEAgY2xhc3Mg
R3JpZFRyYWNrIHsKICAgICBMYXlvdXRVbml0IG1fZ3Jvd3RoTGltaXQgeyAwIH07CiAgICAgTGF5
b3V0VW5pdCBtX3BsYW5uZWRTaXplIHsgMCB9OwogICAgIExheW91dFVuaXQgbV90ZW1wU2l6ZSB7
IDAgfTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2dyb3d0aExpbWl0Q2FwOworICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9ncm93dGhMaW1pdENhcDsKICAgICBib29sIG1faW5m
aW5pdGVseUdyb3dhYmxlIHsgZmFsc2UgfTsKIH07CiAKQEAgLTI4NCwxMSArMjg0LDExIEBAIGNs
YXNzIFJlbmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhIHsKICAgICBWZWN0b3I8R3JpZFRyYWNrKj4g
Z3Jvd0JleW9uZEdyb3d0aExpbWl0c1RyYWNrczsKICAgICBWZWN0b3I8R3JpZEl0ZW1XaXRoU3Bh
bj4gaXRlbXNTb3J0ZWRCeUluY3JlYXNpbmdTcGFuOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gZnJlZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsgcmV0dXJu
IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gZnJlZVNwYWNlRm9yQ29sdW1ucyA6IGZyZWVTcGFj
ZUZvclJvd3M7IH0KLSAgICB2b2lkIHNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24sIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZSk7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBmcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikg
eyByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBmcmVlU3BhY2VGb3JDb2x1bW5zIDog
ZnJlZVNwYWNlRm9yUm93czsgfQorICAgIHZvaWQgc2V0RnJlZVNwYWNlKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpOwogCi0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2F2
YWlsYWJsZVNwYWNlOyB9Ci0gICAgdm9pZCBzZXRBdmFpbGFibGVTcGFjZShPcHRpb25hbDxMYXlv
dXRVbml0PiBhdmFpbGFibGVTcGFjZSkgeyBtX2F2YWlsYWJsZVNwYWNlID0gYXZhaWxhYmxlU3Bh
Y2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9hdmFpbGFibGVTcGFjZTsgfQorICAgIHZvaWQgc2V0QXZhaWxhYmxlU3Bh
Y2Uoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSkgeyBtX2F2YWlsYWJs
ZVNwYWNlID0gYXZhaWxhYmxlU3BhY2U7IH0KIAogICAgIFNpemluZ09wZXJhdGlvbiBzaXppbmdP
cGVyYXRpb24geyBUcmFja1NpemluZyB9OwogCkBAIC0zMjgsMTQgKzMyOCwxNCBAQCBjbGFzcyBS
ZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YSB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZUZvckNvbHVtbnM7Ci0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gZnJlZVNwYWNlRm9yUm93czsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGZy
ZWVTcGFjZUZvckNvbHVtbnM7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3Bh
Y2VGb3JSb3dzOwogICAgIC8vIE5vIG5lZWQgdG8gc3RvcmUgb25lIHBlciBkaXJlY3Rpb24gYXMg
aXQgd2lsbCBiZSBvbmx5IHVzZWQgZm9yIGNvbXB1dGF0aW9ucyBkdXJpbmcgZWFjaCBheGlzCiAg
ICAgLy8gdHJhY2sgc2l6aW5nLiBJdCdzIGNhY2hlZCBoZXJlIGJlY2F1c2Ugd2UgbmVlZCBpdCB0
byBjb21wdXRlIHJlbGF0aXZlIHNpemVzLgotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1fYXZh
aWxhYmxlU3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX2F2YWlsYWJsZVNw
YWNlOwogfTsKIAotdm9pZCBSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6c2V0RnJlZVNwYWNl
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+
IGZyZWVTcGFjZSkKK3ZvaWQgUmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEZyZWVTcGFj
ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGZyZWVTcGFjZSkKIHsKICAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAg
ICAgICAgIGZyZWVTcGFjZUZvckNvbHVtbnMgPSBmcmVlU3BhY2U7CkBAIC01MjYsNyArNTI2LDcg
QEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQpCiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBSZW5kZXJCbG9jazo6aGFz
RGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgYnV0IGl0IGRvZXMgbm90IHdvcmsgZm9yIHBvc2l0aW9u
ZWQgc3R1ZmYuCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGNhY2hpbmcgdGhlIGhhc0RlZmluaXRl
TG9naWNhbEhlaWdodCB2YWx1ZSB0aHJvdWdob3V0IHRoZSBsYXlvdXQuCi0gICAgYm9vbCBoYXNE
ZWZpbml0ZUxvZ2ljYWxIZWlnaHQgPSBoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkg
fHwgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxl
KCkubG9naWNhbEhlaWdodCgpLCBOdWxsb3B0KTsKKyAgICBib29sIGhhc0RlZmluaXRlTG9naWNh
bEhlaWdodCA9IGhhc092ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKSB8fCBjb21wdXRlQ29u
dGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVp
Z2h0KCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKCFoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQp
CiAgICAgICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KHNpemluZ0RhdGEpOwogICAg
IGVsc2UKQEAgLTY2Niw4ICs2NjYsOCBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5bwogICAgICAg
ICBjb25zdF9jYXN0PFJlbmRlckdyaWQqPih0aGlzKS0+cGxhY2VJdGVtc09uR3JpZChJbnRyaW5z
aWNTaXplQ29tcHV0YXRpb24pOwogCiAgICAgR3JpZFNpemluZ0RhdGEgc2l6aW5nRGF0YShudW1U
cmFja3MoRm9yQ29sdW1ucyksIG51bVRyYWNrcyhGb3JSb3dzKSk7Ci0gICAgc2l6aW5nRGF0YS5z
ZXRBdmFpbGFibGVTcGFjZShOdWxsb3B0KTsKLSAgICBzaXppbmdEYXRhLnNldEZyZWVTcGFjZShG
b3JDb2x1bW5zLCBOdWxsb3B0KTsKKyAgICBzaXppbmdEYXRhLnNldEF2YWlsYWJsZVNwYWNlKHN0
ZDo6bnVsbG9wdCk7CisgICAgc2l6aW5nRGF0YS5zZXRGcmVlU3BhY2UoRm9yQ29sdW1ucywgc3Rk
OjpudWxsb3B0KTsKICAgICBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9IEludHJpbnNpY1Np
emVDb21wdXRhdGlvbjsKICAgICBjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoRm9yQ29s
dW1ucywgc2l6aW5nRGF0YSwgbWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogCkBA
IC02ODYsOCArNjg2LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNh
bFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW8KIHZvaWQgUmVuZGVyR3Jp
ZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxIZWlnaHQoR3JpZFNpemluZ0RhdGEmIHNpemluZ0Rh
dGEpCiB7CiAgICAgQVNTRVJUKHNpemluZ0RhdGEuaXNWYWxpZFRyYW5zaXRpb24oRm9yUm93cykp
OwotICAgIHNpemluZ0RhdGEuc2V0QXZhaWxhYmxlU3BhY2UoTnVsbG9wdCk7Ci0gICAgc2l6aW5n
RGF0YS5zZXRGcmVlU3BhY2UoRm9yUm93cywgTnVsbG9wdCk7CisgICAgc2l6aW5nRGF0YS5zZXRB
dmFpbGFibGVTcGFjZShzdGQ6Om51bGxvcHQpOworICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNl
KEZvclJvd3MsIHN0ZDo6bnVsbG9wdCk7CiAgICAgc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24g
PSBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb247CiAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHQsIG1h
eEhlaWdodDsKICAgICBjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoRm9yUm93cywgc2l6
aW5nRGF0YSwgbWluSGVpZ2h0LCBtYXhIZWlnaHQpOwpAQCAtNzEwLDEwICs3MTAsMTAgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbEhlaWdodChHcmlkU2l6aW5nRGF0
YSYgc2l6aW5nRGF0YSkKICAgICBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9IFRyYWNrU2l6
aW5nOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBi
b3JkZXJBbmRQYWRkaW5nKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJH
cmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9n
aWNhbEhlaWdodExlbmd0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNMb2dp
Y2FsSGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CiB7CiAgICAgaWYg
KCFpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlz
TWluQ29udGVudCgpKQogICAgICAgICByZXR1cm4gbV9taW5Db250ZW50SGVpZ2h0OwpAQCAtNzIz
LDEzICs3MjMsMTMgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3QKIAogICAgIGlmIChsb2dpY2Fs
SGVpZ2h0TGVuZ3RoLmlzRml0Q29udGVudCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZmlsbEF2
YWlsYWJsZUV4dGVudCA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0
KEV4Y2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1f
bWF4Q29udGVudEhlaWdodC52YWx1ZU9yKDApLCBzdGQ6Om1heChtX21pbkNvbnRlbnRIZWlnaHQu
dmFsdWVPcigwKSwgZmlsbEF2YWlsYWJsZUV4dGVudCkpOworICAgICAgICByZXR1cm4gc3RkOjpt
aW4obV9tYXhDb250ZW50SGVpZ2h0LnZhbHVlX29yKDApLCBzdGQ6Om1heChtX21pbkNvbnRlbnRI
ZWlnaHQudmFsdWVfb3IoMCksIGZpbGxBdmFpbGFibGVFeHRlbnQpKTsKICAgICB9CiAKICAgICBp
ZiAobG9naWNhbEhlaWdodExlbmd0aC5pc0ZpbGxBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJu
IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEV4Y2x1ZGVNYXJnaW5C
b3JkZXJQYWRkaW5nKSAtIGJvcmRlckFuZFBhZGRpbmc7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
c3RhdGljIGlubGluZSBkb3VibGUgbm9ybWFsaXplZEZsZXhGcmFjdGlvbihjb25zdCBHcmlkVHJh
Y2smIHRyYWNrLCBkb3VibGUgZmxleEZhY3RvcikKQEAgLTczOSwxNCArNzM5LDE0IEBAIHN0YXRp
YyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNrJiB0
cmFjaywgZG91YmxlIGZsZXhGCiAKIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRo
T2ZHcmlkVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRTaXpp
bmdEYXRhJiBzaXppbmdEYXRhLCBMYXlvdXRVbml0JiBiYXNlU2l6ZXNXaXRob3V0TWF4aW1pemF0
aW9uLCBMYXlvdXRVbml0JiBncm93dGhMaW1pdHNXaXRob3V0TWF4aW1pemF0aW9uKSBjb25zdAog
ewotICAgIGNvbnN0IE9wdGlvbmFsPExheW91dFVuaXQ+IGluaXRpYWxGcmVlU3BhY2UgPSBzaXpp
bmdEYXRhLmZyZWVTcGFjZShkaXJlY3Rpb24pOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gaW5pdGlhbEZyZWVTcGFjZSA9IHNpemluZ0RhdGEuZnJlZVNwYWNlKGRpcmVjdGlv
bik7CiAgICAgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29s
dW1ucykgPyBzaXppbmdEYXRhLmNvbHVtblRyYWNrcyA6IHNpemluZ0RhdGEucm93VHJhY2tzOwog
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gZmxleGlibGVTaXplZFRyYWNrc0luZGV4OwogICAgIHNpemlu
Z0RhdGEuY29udGVudFNpemVkVHJhY2tzSW5kZXguc2hyaW5rKDApOwogCiAgICAgLy8gR3JpZCBn
dXR0ZXJzIHdlcmUgcmVtb3ZlZCBmcm9tIGZyZWVTcGFjZSBieSB0aGUgY2FsbGVyIChpZiBmcmVl
U3BhY2UgaXMgZGVmaW5pdGUpLAogICAgIC8vIGJ1dCB3ZSBtdXN0IHVzZSB0aGVtIHRvIGNvbXB1
dGUgcmVsYXRpdmUgKGkuZS4gcGVyY2VudGFnZXMpIHNpemVzLgotICAgIExheW91dFVuaXQgbWF4
U2l6ZSA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgp
LnZhbHVlT3IoTGF5b3V0VW5pdCgpKSk7CisgICAgTGF5b3V0VW5pdCBtYXhTaXplID0gc3RkOjpt
YXgoTGF5b3V0VW5pdCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoTGF5
b3V0VW5pdCgpKSk7CiAgICAgY29uc3QgYm9vbCBoYXNEZWZpbml0ZUZyZWVTcGFjZSA9IHNpemlu
Z0RhdGEuc2l6aW5nT3BlcmF0aW9uID09IFRyYWNrU2l6aW5nOwogCiAgICAgLy8gMS4gSW5pdGlh
bGl6ZSBwZXIgR3JpZCB0cmFjayB2YXJpYWJsZXMuCkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgZ3Jvd3RoTGltaXRzV2l0aG91dE1heGltaXphdGlv
biArPSB0cmFjay5ncm93dGhMaW1pdCgpOwogICAgICAgICAvLyBUaGUgZ3Jvd3RoIGxpbWl0IGNh
cHMgbXVzdCBiZSBjbGVhcmVkIG5vdyBpbiBvcmRlciB0byBwcm9wZXJseSBzb3J0IHRyYWNrcyBi
eSBncm93dGgKICAgICAgICAgLy8gcG90ZW50aWFsIG9uIGFuIGV2ZW50dWFsICJNYXhpbWl6ZSBU
cmFja3MiLgotICAgICAgICB0cmFjay5zZXRHcm93dGhMaW1pdENhcChOdWxsb3B0KTsKKyAgICAg
ICAgdHJhY2suc2V0R3Jvd3RoTGltaXRDYXAoc3RkOjpudWxsb3B0KTsKICAgICB9CiAgICAgTGF5
b3V0VW5pdCBmcmVlU3BhY2UgPSBpbml0aWFsRnJlZVNwYWNlID8gaW5pdGlhbEZyZWVTcGFjZS52
YWx1ZSgpIC0gYmFzZVNpemVzV2l0aG91dE1heGltaXphdGlvbiA6IExheW91dFVuaXQoMCk7CiAK
QEAgLTk3MywxMiArOTczLDEyIEBAIHN0YXRpYyBib29sIGhhc092ZXJyaWRlQ29udGFpbmluZ0Js
b2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAgcmV0dXJu
IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQuaGFzT3ZlcnJpZGVDb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGgoKSA6IGNoaWxkLmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNh
bEhlaWdodCgpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29u
c3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKICAgICByZXR1cm4gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5vdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IGNoaWxkLm92ZXJyaWRlQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0T3Zl
cnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQs
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+
IHNpemUpCitzdGF0aWMgdm9pZCBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXpl
Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQogewogICAgIGlmIChkaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucykKICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGVDb250YWluaW5nQmxv
Y2tDb250ZW50TG9naWNhbFdpZHRoKHNpemUpOwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJHcmlkOjpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkg
Y29uc3QKICAgICAvLyBJZiB8Y2hpbGR8IGhhcyBhIHJlbGF0aXZlIGxvZ2ljYWwgaGVpZ2h0LCB3
ZSBzaG91bGRuJ3QgbGV0IGl0IG92ZXJyaWRlIGl0cyBpbnRyaW5zaWMgaGVpZ2h0LCB3aGljaCBp
cwogICAgIC8vIHdoYXQgd2UgYXJlIGludGVyZXN0ZWQgaW4gaGVyZS4gVGh1cyB3ZSBuZWVkIHRv
IHNldCB0aGUgYmxvY2stYXhpcyBvdmVycmlkZSBzaXplIHRvIC0xIChubyBwb3NzaWJsZSByZXNv
bHV0aW9uKS4KICAgICBpZiAoc2hvdWxkQ2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQoY2hpbGQsIEZvclJvd3MpKSB7Ci0gICAgICAgIHNldE92ZXJyaWRlQ29u
dGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlv
biwgTnVsbG9wdCk7CisgICAgICAgIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNp
emVGb3JDaGlsZChjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICB9CiAKQEAgLTEx
MDQsMTMgKzExMDQsMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjptaW5TaXplRm9yQ2hpbGQo
UmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW8KICAgICBib29sIG92ZXJy
aWRlU2l6ZUhhc0NoYW5nZWQgPSB1cGRhdGVPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRT
aXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBzaXppbmdEYXRhKTsKICAg
ICBpZiAoaXNSb3dBeGlzKSB7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luTG9naWNhbFdpZHRo
ID0gc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gPT0gVHJhY2tTaXppbmcgPyBjb21wdXRlTWFy
Z2luTG9naWNhbFNpemVGb3JDaGlsZChjaGlsZElubGluZURpcmVjdGlvbiwgY2hpbGQpIDogbWFy
Z2luSW50cmluc2ljTG9naWNhbFdpZHRoRm9yQ2hpbGQoY2hpbGQpOwotICAgICAgICByZXR1cm4g
Y2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5T
aXplLCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNo
aWxkSW5saW5lRGlyZWN0aW9uKS52YWx1ZU9yKDApLCAqdGhpcywgbnVsbHB0cikgKyBtYXJnaW5M
b2dpY2FsV2lkdGg7CisgICAgICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbFdpZHRoSW5S
ZWdpb25Vc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIG92ZXJyaWRlQ29udGFpbmluZ0Jsb2Nr
Q29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxpbmVEaXJlY3Rpb24pLnZhbHVlX29y
KDApLCAqdGhpcywgbnVsbHB0cikgKyBtYXJnaW5Mb2dpY2FsV2lkdGg7CiAgICAgfQogCiAgICAg
aWYgKG92ZXJyaWRlU2l6ZUhhc0NoYW5nZWQgJiYgKGRpcmVjdGlvbiAhPSBGb3JDb2x1bW5zIHx8
IHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uICE9IEludHJpbnNpY1NpemVDb21wdXRhdGlvbikp
CiAgICAgICAgIGNoaWxkLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgY2hpbGQu
bGF5b3V0SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWlnaHRV
c2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIE51bGxvcHQpLnZhbHVlT3IoMCkgKyBjaGlsZC5t
YXJnaW5Mb2dpY2FsSGVpZ2h0KCkgKyBjaGlsZC5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7Cisg
ICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hpbGRN
aW5TaXplLCBzdGQ6Om51bGxvcHQpLnZhbHVlX29yKDApICsgY2hpbGQubWFyZ2luTG9naWNhbEhl
aWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogfQogCiBib29sIFJlbmRl
ckdyaWQ6OnVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChS
ZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlk
U2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkgY29uc3QKQEAgLTExMjgsOSArMTEyOCw5IEBAIExheW91
dFVuaXQgUmVuZGVyR3JpZDo6bWluQ29udGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdy
aWRUcmFja1NpemluZ0RpcmVjCiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGNoaWxkSW5s
aW5lRGlyZWN0aW9uID0gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY2hpbGQsIEZvckNvbHVt
bnMpOwogICAgIGlmIChkaXJlY3Rpb24gPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24pIHsKICAgICAg
ICAgLy8gSWYgfGNoaWxkfCBoYXMgYSByZWxhdGl2ZSBsb2dpY2FsIHdpZHRoLCB3ZSBzaG91bGRu
J3QgbGV0IGl0IG92ZXJyaWRlIGl0cyBpbnRyaW5zaWMgd2lkdGgsIHdoaWNoIGlzCi0gICAgICAg
IC8vIHdoYXQgd2UgYXJlIGludGVyZXN0ZWQgaW4gaGVyZS4gVGh1cyB3ZSBuZWVkIHRvIHNldCB0
aGUgb3ZlcnJpZGUgbG9naWNhbCB3aWR0aCB0byBOdWxsb3B0IChubyBwb3NzaWJsZSByZXNvbHV0
aW9uKS4KKyAgICAgICAgLy8gd2hhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBoZXJlLiBUaHVzIHdl
IG5lZWQgdG8gc2V0IHRoZSBvdmVycmlkZSBsb2dpY2FsIHdpZHRoIHRvIHN0ZDo6bnVsbG9wdCAo
bm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAgICAgICAgIGlmIChzaG91bGRDbGVhck92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgRm9yQ29sdW1ucykpCi0g
ICAgICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQo
Y2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBOdWxsb3B0KTsKKyAgICAgICAgICAgIHNldE92
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRJbmxp
bmVEaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAgLy8gRklYTUU6IEl0J3MgdW5j
bGVhciBpZiB3ZSBzaG91bGQgcmV0dXJuIHRoZSBpbnRyaW5zaWMgd2lkdGggb3IgdGhlIHByZWZl
cnJlZCB3aWR0aC4KICAgICAgICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMv
UHVibGljL3d3dy1zdHlsZS8yMDEzSmFuLzAyNDUuaHRtbApAQCAtMTE1OCw3ICsxMTU4LDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJHcmlkOjptYXhDb250ZW50Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaGls
ZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWMKICAgICAgICAgLy8gSWYgfGNoaWxkfCBoYXMgYSByZWxh
dGl2ZSBsb2dpY2FsIHdpZHRoLCB3ZSBzaG91bGRuJ3QgbGV0IGl0IG92ZXJyaWRlIGl0cyBpbnRy
aW5zaWMgd2lkdGgsIHdoaWNoIGlzCiAgICAgICAgIC8vIHdoYXQgd2UgYXJlIGludGVyZXN0ZWQg
aW4gaGVyZS4gVGh1cyB3ZSBuZWVkIHRvIHNldCB0aGUgaW5saW5lLWF4aXMgb3ZlcnJpZGUgc2l6
ZSB0byAtMSAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAgICAgICAgIGlmIChzaG91bGRDbGVh
ck92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgRm9yQ29s
dW1ucykpCi0gICAgICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXpl
Rm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBOdWxsb3B0KTsKKyAgICAgICAg
ICAgIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwg
Y2hpbGRJbmxpbmVEaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAgLy8gRklYTUU6
IEl0J3MgdW5jbGVhciBpZiB3ZSBzaG91bGQgcmV0dXJuIHRoZSBpbnRyaW5zaWMgd2lkdGggb3Ig
dGhlIHByZWZlcnJlZCB3aWR0aC4KICAgICAgICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcv
QXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEzSmFuLzAyNDUuaHRtbApAQCAtMTI3NCw3ICsx
Mjc0LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdG
dW5jdGlvbnNGb3JOb25TcGFubmluZ0l0ZW1zKEdyaWQKICAgICB9IGVsc2UgaWYgKHRyYWNrU2l6
ZS5oYXNNYXhDb250ZW50T3JBdXRvTWF4VHJhY2tCcmVhZHRoKCkpIHsKICAgICAgICAgTGF5b3V0
VW5pdCBncm93dGhMaW1pdCA9IG1heENvbnRlbnRGb3JDaGlsZChncmlkSXRlbSwgZGlyZWN0aW9u
LCBzaXppbmdEYXRhKTsKICAgICAgICAgaWYgKHRyYWNrU2l6ZS5pc0ZpdENvbnRlbnQoKSkKLSAg
ICAgICAgICAgIGdyb3d0aExpbWl0ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQsIHZhbHVlRm9yTGVu
Z3RoKHRyYWNrU2l6ZS5maXRDb250ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIHNpemluZ0Rh
dGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICBncm93dGhMaW1p
dCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUuZml0Q29u
dGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCku
dmFsdWVfb3IoMCkpKTsKICAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQoc3RkOjptYXgodHJh
Y2suZ3Jvd3RoTGltaXQoKSwgZ3Jvd3RoTGltaXQpKTsKICAgICB9CiB9CkBAIC0xNDYyLDggKzE0
NjIsOCBAQCBzdGF0aWMgYm9vbCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwoY29uc3Qg
R3JpZFRyYWNrKiB0cmFjazEsIGNvbnN0IEdyaWRUcgogICAgIGlmICh0cmFjazFIYXNJbmZpbml0
ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXAgfHwgdHJhY2sySGFzSW5maW5pdGVHcm93dGhQb3Rl
bnRpYWxXaXRob3V0Q2FwKQogICAgICAgICByZXR1cm4gdHJhY2sySGFzSW5maW5pdGVHcm93dGhQ
b3RlbnRpYWxXaXRob3V0Q2FwOwogCi0gICAgTGF5b3V0VW5pdCB0cmFjazFMaW1pdCA9IHRyYWNr
MS0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZU9yKHRyYWNrMS0+Z3Jvd3RoTGltaXQoKSk7Ci0gICAg
TGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZU9y
KHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CisgICAgTGF5b3V0VW5pdCB0cmFjazFMaW1pdCA9IHRy
YWNrMS0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZV9vcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwor
ICAgIExheW91dFVuaXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFs
dWVfb3IodHJhY2syLT5ncm93dGhMaW1pdCgpKTsKICAgICByZXR1cm4gKHRyYWNrMUxpbWl0IC0g
dHJhY2sxLT5iYXNlU2l6ZSgpKSA8ICh0cmFjazJMaW1pdCAtIHRyYWNrMi0+YmFzZVNpemUoKSk7
CiB9CiAKQEAgLTE1MzIsNyArMTUzMiw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6ZGlzdHJpYnV0ZVNw
YWNlVG9UcmFja3MoVmVjdG9yPEdyaWRUcmFjayo+JiB0cmFja3MsIFZlY3RvcjxHcmlkCiBib29s
IFJlbmRlckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkKIHsK
ICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzID0gKGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zKSA/IHNpemluZ0RhdGEuY29sdW1uVHJhY2tzIDogc2l6aW5nRGF0YS5yb3dUcmFja3M7
Ci0gICAgY29uc3QgTGF5b3V0VW5pdCBtYXhTaXplID0gc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFj
ZSgpLnZhbHVlT3IoMCk7CisgICAgY29uc3QgTGF5b3V0VW5pdCBtYXhTaXplID0gc2l6aW5nRGF0
YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0cmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYg
dHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIGksIHNpemluZ0RhdGEuc2l6aW5n
T3BlcmF0aW9uKTsKICAgICAgICAgaWYgKGNvbXB1dGVVc2VkQnJlYWR0aE9mTWluTGVuZ3RoKHRy
YWNrU2l6ZSwgbWF4U2l6ZSkgPiB0cmFja3NbaV0uYmFzZVNpemUoKSkKQEAgLTE1NTEsMTkgKzE1
NTEsMTkgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3Vu
dChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICBpZiAoIWF1dG9SZXBlYXRUcmFj
a0xpc3RMZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gYXZhaWxhYmxlU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJs
ZVNpemU7CiAgICAgaWYgKGlzUm93QXhpcykgewogICAgICAgICBpZiAoc2l6aW5nT3BlcmF0aW9u
ICE9IEludHJpbnNpY1NpemVDb21wdXRhdGlvbikKICAgICAgICAgICAgIGF2YWlsYWJsZVNpemUg
PSAgYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXZhaWxh
YmxlU2l6ZSA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVmZXJyZWRTaXpl
LCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgTnVsbG9wdCk7CisgICAgICAgIGF2YWlsYWJsZVNp
emUgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGlmICghYXZhaWxh
YmxlU2l6ZSkgewogICAgICAgICAgICAgY29uc3QgTGVuZ3RoJiBtYXhMZW5ndGggPSBzdHlsZSgp
LmxvZ2ljYWxNYXhIZWlnaHQoKTsKICAgICAgICAgICAgIGlmICghbWF4TGVuZ3RoLmlzVW5kZWZp
bmVkKCkpCi0gICAgICAgICAgICAgICAgYXZhaWxhYmxlU2l6ZSA9IGNvbXB1dGVDb250ZW50TG9n
aWNhbEhlaWdodChNYXhTaXplLCBtYXhMZW5ndGgsIE51bGxvcHQpOworICAgICAgICAgICAgICAg
IGF2YWlsYWJsZVNpemUgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbWF4
TGVuZ3RoLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChhdmFpbGFibGVT
aXplKQotICAgICAgICAgICAgYXZhaWxhYmxlU2l6ZSA9IGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgoYXZhaWxhYmxlU2l6ZS52YWx1ZSgpLCBOdWxsb3B0KTsKKyAgICAg
ICAgICAgIGF2YWlsYWJsZVNpemUgPSBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5
TWluTWF4KGF2YWlsYWJsZVNpemUudmFsdWUoKSwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAg
ICBib29sIG5lZWRzVG9GdWxmaWxsTWluaW11bVNpemUgPSBmYWxzZTsKQEAgLTE5MjYsNyArMTky
Niw3IEBAIHN0YXRpYyBjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBjb250ZW50QWxp
Z25tZW50Tm9ybWFsQmVoYXZpb3JHcmlkKCkKIAogdm9pZCBSZW5kZXJHcmlkOjphcHBseVN0cmV0
Y2hBbGlnbm1lbnRUb1RyYWNrc0lmTmVlZGVkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQogewotICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGZyZWVTcGFjZSA9IHNpemluZ0RhdGEuZnJlZVNwYWNlKGRpcmVjdGlvbik7CisgICAg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UgPSBzaXppbmdEYXRhLmZyZWVTcGFj
ZShkaXJlY3Rpb24pOwogICAgIGlmICghZnJlZVNwYWNlCiAgICAgICAgIHx8IGZyZWVTcGFjZS52
YWx1ZSgpIDw9IDAKICAgICAgICAgfHwgKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zICYmIHN0eWxl
KCkucmVzb2x2ZWRKdXN0aWZ5Q29udGVudERpc3RyaWJ1dGlvbihjb250ZW50QWxpZ25tZW50Tm9y
bWFsQmVoYXZpb3JHcmlkKCkpICE9IENvbnRlbnREaXN0cmlidXRpb25TdHJldGNoKQpAQCAtMTk1
MSw3ICsxOTUxLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjphcHBseVN0cmV0Y2hBbGlnbm1lbnRUb1Ry
YWNrc0lmTmVlZGVkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbgogICAgICAgICBhdXRvJiB0cmFj
ayA9IHRyYWNrc1t0cmFja0luZGV4XTsKICAgICAgICAgdHJhY2suc2V0QmFzZVNpemUodHJhY2su
YmFzZVNpemUoKSArIHNpemVUb0luY3JlYXNlKTsKICAgICB9Ci0gICAgc2l6aW5nRGF0YS5zZXRG
cmVlU3BhY2UoZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PigwKSk7CisgICAgc2l6aW5n
RGF0YS5zZXRGcmVlU3BhY2UoZGlyZWN0aW9uLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KDAp
KTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMoR3JpZFNpemluZ0RhdGEm
IHNpemluZ0RhdGEpCkBAIC0xOTY4LDggKzE5NjgsOCBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91
dEdyaWRJdGVtcyhHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkKIAogICAgICAgICAvLyBCZWNh
dXNlIHRoZSBncmlkIGFyZWEgY2Fubm90IGJlIHN0eWxlZCwgd2UgZG9uJ3QgbmVlZCB0byBhZGp1
c3QKICAgICAgICAgLy8gdGhlIGdyaWQgYnJlYWR0aCB0byBhY2NvdW50IGZvciAnYm94LXNpemlu
ZycuCi0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG9sZE92ZXJyaWRlQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxXaWR0aCA9IGNoaWxkLT5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aCgpID8gY2hpbGQtPm92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxXaWR0aCgpIDogTGF5b3V0VW5pdCgpOwotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBvbGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY2hpbGQt
Pmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpID8gY2hpbGQtPm92ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSA6IExheW91dFVuaXQoKTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvbGRPdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRMb2dpY2FsV2lkdGggPSBjaGlsZC0+aGFzT3ZlcnJpZGVDb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGgoKSA/IGNoaWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsV2lkdGgoKSA6IExheW91dFVuaXQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBvbGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0ID0g
Y2hpbGQtPmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpID8gY2hpbGQt
Pm92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSA6IExheW91dFVu
aXQoKTsKIAogICAgICAgICBMYXlvdXRVbml0IG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVu
dExvZ2ljYWxXaWR0aCA9IGdyaWRBcmVhQnJlYWR0aEZvckNoaWxkSW5jbHVkaW5nQWxpZ25tZW50
T2Zmc2V0cygqY2hpbGQsIEZvckNvbHVtbnMsIHNpemluZ0RhdGEpOwogICAgICAgICBMYXlvdXRV
bml0IG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQgPSBncmlkQXJl
YUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMoKmNoaWxkLCBGb3JSb3dz
LCBzaXppbmdEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGE3
NjY1YWMwYzMxMjZmZmRiOGI5YzliNDJiYWJkMmYyMmRkYzhjMjUuLjdiNWVmNmVmZWY1YTQxY2I4
N2JmYWQyZmIwZWY3MzUyMGZlMjc5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuaApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBSZW5kZXJHcmlkIGZpbmFsIDogcHVibGljIFJl
bmRlckJsb2NrIHsKICAgICBib29sIGlzUmVuZGVyR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91
dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBPcHRp
b25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRl
ckFuZFBhZGRpbmcpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2lj
YWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVu
dEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIGNsYXNzIEdyaWRJdGVyYXRvcjsKICAgICBjbGFzcyBHcmlkU2l6aW5nRGF0YTsKQEAgLTIy
OCw4ICsyMjgsOCBAQCBjbGFzcyBSZW5kZXJHcmlkIGZpbmFsIDogcHVibGljIFJlbmRlckJsb2Nr
IHsKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJveCosIEdyaWRBcmVhPiBtX2dyaWRJdGVtQXJl
YTsKICAgICBPcmRlckl0ZXJhdG9yIG1fb3JkZXJJdGVyYXRvcjsKIAotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IG1fbWluQ29udGVudEhlaWdodDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBt
X21heENvbnRlbnRIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX21pbkNv
bnRlbnRIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtX21heENvbnRlbnRI
ZWlnaHQ7CiAKICAgICBpbnQgbV9zbWFsbGVzdENvbHVtblN0YXJ0OwogICAgIGludCBtX3NtYWxs
ZXN0Um93U3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRl
eCA1YmJjYzAwMzkwNWFhYjlhNjg3NjVhZjdjN2NlODJkZWM2MTc0ZGNhLi5mOGJjMzY0YjRlODg2
MmI5ODBmZDg5ZjY1NWM3YTVjYWExZDc5ZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKQEAgLTQ0NjYsNyArNDQ2Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGggdGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0
byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4ZWxPZmZzZXQgPSBvZmZzZXRG
b3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNM
YXllcik7Ci0gICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8odGhp
cywgTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnRE
aXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAorICAgIExheWVyUGFpbnRpbmdJbmZvIHRy
YW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0Rldmlj
ZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSks
CiAgICAgICAgIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLCBhZGp1c3RlZFN1YnBpeGVsT2Zm
c2V0LCBwYWludGluZ0luZm8uc3VidHJlZVBhaW50Um9vdCwgcGFpbnRpbmdJbmZvLm92ZXJsYXBU
ZXN0UmVxdWVzdHMpOwogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4
dCwgdHJhbnNmb3JtZWRQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogICAgIGNvbnRleHQuc2V0
Q1RNKG9sZFRyYW5zZnJvbSk7CkBAIC01MTAwLDcgKzUxMDAsNyBAQCBSZW5kZXJMYXllciogUmVu
ZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXll
ciogY29udAogCiAgICAgLy8gQ2hlY2sgZm9yIGhpdCB0ZXN0IG9uIGJhY2tmYWNlIGlmIGJhY2tm
YWNlLXZpc2liaWxpdHkgaXMgJ2hpZGRlbicKICAgICBpZiAobG9jYWxUcmFuc2Zvcm1TdGF0ZSAm
JiByZW5kZXJlcigpLnN0eWxlKCkuYmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNp
YmlsaXR5SGlkZGVuKSB7Ci0gICAgICAgIE9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBp
bnZlcnRlZE1hdHJpeCA9IGxvY2FsVHJhbnNmb3JtU3RhdGUtPm1fYWNjdW11bGF0ZWRUcmFuc2Zv
cm0uaW52ZXJzZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4
PiBpbnZlcnRlZE1hdHJpeCA9IGxvY2FsVHJhbnNmb3JtU3RhdGUtPm1fYWNjdW11bGF0ZWRUcmFu
c2Zvcm0uaW52ZXJzZSgpOwogICAgICAgICAvLyBJZiB0aGUgei12ZWN0b3Igb2YgdGhlIG1hdHJp
eCBpcyBuZWdhdGl2ZSwgdGhlIGJhY2sgaXMgZmFjaW5nIHRvd2FyZHMgdGhlIHZpZXdlci4KICAg
ICAgICAgaWYgKGludmVydGVkTWF0cml4ICYmIGludmVydGVkTWF0cml4LnZhbHVlKCkubTMzKCkg
PCAwKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDAzMjQ3MjM5NDMzMzk3NDk5MDhh
YzcyOWEwODg1ZDRmMTkyOTE1NWIuLmJjYzMwNTczYTE5NGY0NzFiNGY4YzgzZDJjMWUzMGFhYzNh
OGI5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC03OTAsOSArNzkwLDkgQEAgY2xhc3MgQ29tcHV0ZWRPZmZzZXRzIHsKICAgICAg
ICAgcmV0dXJuIG1fZnJvbUFuY2VzdG9yR3JhcGhpY3NMYXllci52YWx1ZSgpOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbUFuY2VzdG9yR3JhcGhpY3NMYXllcjsKLSAg
ICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21QYXJlbnRHcmFwaGljc0xheWVyOwotICAgIE9w
dGlvbmFsPExheW91dFNpemU+IG1fZnJvbVByaW1hcnlHcmFwaGljc0xheWVyOworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9mcm9tQW5jZXN0b3JHcmFwaGljc0xheWVyOworICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9mcm9tUGFyZW50R3JhcGhpY3NMYXllcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbVByaW1hcnlHcmFwaGljc0xheWVyOwogICAg
IAogICAgIGNvbnN0IFJlbmRlckxheWVyJiBtX3JlbmRlckxheWVyOwogICAgIC8vIExvY2F0aW9u
IGlzIHJlbGF0aXZlIHRvIHRoZSByZW5kZXJlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAppbmRleCBiNzE2M2U2NmIzYzZmZjExODc3MWFjOTg5MDk3NmMzYjNi
ZTQ2NmZiLi4yYzZhOGVlN2M2NWM2MTJhODU4NjJkNGUxYjU3NjA3NDJmZjEwMjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0yODEsNyArMjgxLDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJMaXN0Qm94OjppdGVtQm91bmRpbmdCb3hSZWN0KGNvbnN0IExh
eW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2UKIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVt
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBh
aW50RnVuY3Rpb24gcGFpbnRGdW5jdGlvbikKIHsKICAgICBpbnQgbGlzdEl0ZW1zU2l6ZSA9IG51
bUl0ZW1zKCk7Ci0gICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2li
bGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBp
bnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRk
aW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBm
aXJzdFZpc2libGVJdGVtICsgbnVtVmlzaWJsZUl0ZW1zKENvbnNpZGVyUGFkZGluZzo6WWVzKTsK
ICAgICBmb3IgKGludCBpID0gZmlyc3RWaXNpYmxlSXRlbTsgaSA8IGxpc3RJdGVtc1NpemUgJiYg
aSA8IGVuZEluZGV4OyArK2kpCiAgICAgICAgIHBhaW50RnVuY3Rpb24ocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCwgaSk7CkBAIC01OTcsNyArNTk3LDcgQEAgYm9vbCBSZW5kZXJMaXN0Qm94OjpzY3Jv
bGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChpbnQgaW5kZXgpCiAKIGJvb2wgUmVuZGVyTGlz
dEJveDo6bGlzdEluZGV4SXNWaXNpYmxlKGludCBpbmRleCkKIHsKLSAgICBpbnQgZmlyc3RJbmRl
eCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZU9y
KG1faW5kZXhPZmZzZXQpOworICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRleE9mRmlyc3RWaXNp
YmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhPZmZzZXQpOwogICAg
IGludCBlbmRJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90
dG9tQXJlYQogICAgICAgICA/IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5n
Qm90dG9tQXJlYS52YWx1ZSgpICsgbnVtYmVyT2ZWaXNpYmxlSXRlbXNJblBhZGRpbmdCb3R0b20o
KQogICAgICAgICA6IG1faW5kZXhPZmZzZXQgKyBudW1WaXNpYmxlSXRlbXMoKTsKQEAgLTY2OSw4
ICs2NjksOCBAQCBpbnQgUmVuZGVyTGlzdEJveDo6bnVtYmVyT2ZWaXNpYmxlSXRlbXNJblBhZGRp
bmdCb3R0b20oKSBjb25zdAogCiB2b2lkIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVGaXJzdEluZGV4
ZXNWaXNpYmxlSW5QYWRkaW5nVG9wQm90dG9tQXJlYXMoKQogewotICAgIG1faW5kZXhPZkZpcnN0
VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYSA9IE51bGxvcHQ7Ci0gICAgbV9pbmRleE9m
Rmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhID0gTnVsbG9wdDsKKyAgICBt
X2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEgPSBzdGQ6Om51bGxv
cHQ7CisgICAgbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVh
ID0gc3RkOjpudWxsb3B0OwogCiAgICAgaW50IG1heGltdW1OdW1iZXJPZkl0ZW1zVGhhdEZpdElu
UGFkZGluZ1RvcEFyZWEgPSBwYWRkaW5nVG9wKCkgLyBpdGVtSGVpZ2h0KCk7CiAgICAgaWYgKG1h
eGltdW1OdW1iZXJPZkl0ZW1zVGhhdEZpdEluUGFkZGluZ1RvcEFyZWEpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGYyODBjMDczZDU3ZTZhOGFiMTcwZDk5
YzYyZWM3NGRmYTBkNmI3MzguLjczMDAzZTk5ZmUyYThiN2VhOTllNDYzY2EyYjlmNzZhMzdjOGMy
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtMTc1LDgg
KzE3NSw4IEBAIGNsYXNzIFJlbmRlckxpc3RCb3ggZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tG
bG93LCBwdWJsaWMgU2Nyb2xsYWJsZUFyZWEgewogICAgIGludCBtX29wdGlvbnNXaWR0aDsKICAg
ICBpbnQgbV9pbmRleE9mZnNldDsKIAotICAgIE9wdGlvbmFsPGludD4gbV9pbmRleE9mRmlyc3RW
aXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhOwotICAgIE9wdGlvbmFsPGludD4gbV9pbmRl
eE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVhOworICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWE7
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQ
YWRkaW5nQm90dG9tQXJlYTsKIAogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdkJhcjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCmluZGV4IDI3NWIxYWE3OTEw
ZmM3ODk2YjI4MzgxZTNkZDYzM2RlMmM0MWVkZGEuLjZlMGJhNzU1MjVhOGVmNTQ0YmM4YmRiNGQw
MmIwNmU3ODMzM2JlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5oCkBAIC0xMjIsOCArMTIyLDggQEAgY2xhc3MgUmVuZGVyTWVudUxpc3QgZmluYWwgOiBwdWJs
aWMgUmVuZGVyRmxleGlibGVCb3gsIHByaXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKICAgICB7CiAg
ICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmly
c3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsKICAgICB9Ci0gICAgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpm
aXJzdExpbmVCYXNlbGluZSgpOyB9Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
UmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQorICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJl
Y3Rpb24pOyB9CiAKICAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlz
dEluZGV4LCBDb2xvciYsIGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcAppbmRleCA3ZDJmYjQzNjI4MTU0Yjk0MjU2NmY5OTc4OWNmNTA4ZjUyYjQ5N2FkLi45MjEw
ZDc0NmZmZjAxNWViMjc0MjEwOTI3ZTBlNDVlMTQyNTdlZTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTQxNSw3ICs0MTUs
NyBAQCBMYXlvdXRVbml0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVNYXhDb2x1bW5I
ZWlnaHQoKSBjb25zdAogICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0ID0gbXVsdGlDb2x1
bW5GbG93VGhyZWFkKCktPmNvbHVtbkhlaWdodEF2YWlsYWJsZSgpOwogICAgIExheW91dFVuaXQg
bWF4Q29sdW1uSGVpZ2h0ID0gYXZhaWxhYmxlSGVpZ2h0ID8gYXZhaWxhYmxlSGVpZ2h0IDogUmVu
ZGVyRmxvd1RocmVhZDo6bWF4TG9naWNhbEhlaWdodCgpOwogICAgIGlmICghbXVsdGljb2xTdHls
ZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgbWF4Q29sdW1uSGVp
Z2h0ID0gc3RkOjptaW4obWF4Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29u
dGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0
KCksIE51bGxvcHQpLnZhbHVlT3IobWF4Q29sdW1uSGVpZ2h0KSk7CisgICAgICAgIG1heENvbHVt
bkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0
ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhl
aWdodCgpLCBzdGQ6Om51bGxvcHQpLnZhbHVlX29yKG1heENvbHVtbkhlaWdodCkpOwogICAgIHJl
dHVybiBoZWlnaHRBZGp1c3RlZEZvclNldE9mZnNldChtYXhDb2x1bW5IZWlnaHQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCA2MTFmNDZkMmUyZGRi
NTlmMzlkMGY4NTFlZDQzZDRiYTk3OTU4MDhjLi4zODZiNTI3ODAwMmYzMDU0NTI1NTM3YzA2ZjZi
YzEzOTNjMmNiMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
QEAgLTM3Myw5ICszNzMsOSBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVM
b2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmCiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHN0eWxlTG9naWNhbEhlaWdodC52YWx1ZSgpIC0gYm9yZGVyczsKICAgICB9
IGVsc2UgaWYgKHN0eWxlTG9naWNhbEhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKLSAg
ICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxI
ZWlnaHQpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2lj
YWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZV9vcigwKTsKICAgICBlbHNlIGlmIChz
dHlsZUxvZ2ljYWxIZWlnaHQuaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVJ
bnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKHN0eWxlTG9naWNhbEhlaWdodCwgbG9n
aWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZywgYm9yZGVyQW5kUGFkZGluZykudmFsdWVP
cigwKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdo
dFVzaW5nKHN0eWxlTG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFk
ZGluZywgYm9yZGVyQW5kUGFkZGluZykudmFsdWVfb3IoMCk7CiAgICAgZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTGF5b3V0VW5pdCgpOwpAQCAtMTQ2OCwz
NyArMTQ2OCwzNyBAQCB2b2lkIFJlbmRlclRhYmxlOjp1cGRhdGVGaXJzdExldHRlcihSZW5kZXJU
cmVlTXV0YXRpb25Jc0FsbG93ZWQpCiAKIGludCBSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPckNvbXB1dGUoWyZdIHsK
KyAgICByZXR1cm4gdmFsdWVPckNvbXB1dGUoZmlyc3RMaW5lQmFzZWxpbmUoKSwgWyZdIHsKICAg
ICAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKICAgICB9KTsKIH0KIAotT3B0
aW9uYWw8aW50PiBSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9u
TW9kZSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBUYWJsZXMgYXJlIHNr
aXBwZWQgd2hlbiBjb21wdXRpbmcgYW4gaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUuCi0gICAgcmV0
dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiB9
CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dAogewogICAgIC8vIFRoZSBiYXNlbGluZSBvZiBhICd0YWJsZScgaXMgdGhlIHNhbWUgYXMgdGhl
ICdpbmxpbmUtdGFibGUnIGJhc2VsaW5lIHBlciBDU1MgMyBGbGV4Ym94IChDU1MgMi4xCiAgICAg
Ly8gZG9lc24ndCBkZWZpbmUgdGhlIGJhc2VsaW5lIG9mIGEgJ3RhYmxlJyBvbmx5IGFuICdpbmxp
bmUtdGFibGUnKS4KICAgICAvLyBUaGlzIGlzIGFsc28gbmVlZGVkIHRvIHByb3Blcmx5IGRldGVy
bWluZSB0aGUgYmFzZWxpbmUgb2YgYSBjZWxsIGlmIGl0IGhhcyBhIHRhYmxlIGNoaWxkLgogCiAg
ICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+
KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAogICAgIHJlY2FsY1Nl
Y3Rpb25zSWZOZWVkZWQoKTsKIAogICAgIGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbiogdG9wTm9u
RW1wdHlTZWN0aW9uID0gdGhpcy0+dG9wTm9uRW1wdHlTZWN0aW9uKCk7CiAgICAgaWYgKCF0b3BO
b25FbXB0eVNlY3Rpb24pCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAotICAgIGlmIChPcHRpb25hbDxpbnQ+IGJh
c2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5maXJzdExpbmVCYXNlbGluZSgpKQotICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8aW50Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSAr
IGJhc2VsaW5lLnZhbHVlKCkpOworICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludD4gYmFzZWxpbmUg
PSB0b3BOb25FbXB0eVNlY3Rpb24tPmZpcnN0TGluZUJhc2VsaW5lKCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om9wdGlvbmFsPGludD4odG9wTm9uRW1wdHlTZWN0aW9uLT5sb2dpY2FsVG9wKCkgKyBi
YXNlbGluZS52YWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBBIHRhYmxlIHJvdyBhbHdheXMgaGFz
IGEgYmFzZWxpbmUgcGVyIENTUyAyLjEuIFdpbGwgdGhpcyByZXR1cm4gdGhlIHJpZ2h0IHZhbHVl
PwotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
aW50PigpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlclRhYmxlOjpvdmVyZmxvd0NsaXBSZWN0KGNv
bnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyUmVnaW9uKiByZWdpb24sIE92ZXJsYXlT
Y3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSwgUGFpbnRQaGFzZSBwaGFzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggZmQ5N2EwMTAyNTliYzFmMjI2MTI4
OWUwNjE3Y2ZlNzA3ZDdjNjJhMC4uODJlZDI3NzZmM2I3MjhlMDY0ZmZkZWE3N2ExNzEyZDMwZTk4
ODFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTI5MSw4ICsy
OTEsOCBAQCBjbGFzcyBSZW5kZXJUYWJsZSA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAgICAgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKICAgICBpbnQg
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29u
c3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVuZGVy
VGFibGVDb2wqIHNsb3dDb2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlLCBi
b29sKiBlbmRFZGdlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcAppbmRleCBjMDBjYmNjOTkxM2QxM2Q3NmYxN2FmZDgzMmM4NjhmMmFiNzhl
YjlkLi5lMWE3ZWFhNzU5YWQzMzE2OWJhMTExYTM1ZjkxNWE0YzFlOGM3NTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNDAxLDcgKzQwMSw3
IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpjZWxsQmFzZWxpbmVQb3NpdGlvbigpIGNv
bnN0CiAgICAgLy8gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvQ1ItQ1NTMjEtMjAwNzA3MTkv
dGFibGVzLmh0bWwjaGVpZ2h0LWxheW91dD46IFRoZSBiYXNlbGluZSBvZiBhIGNlbGwgaXMgdGhl
IGJhc2VsaW5lIG9mCiAgICAgLy8gdGhlIGZpcnN0IGluLWZsb3cgbGluZSBib3ggaW4gdGhlIGNl
bGwsIG9yIHRoZSBmaXJzdCBpbi1mbG93IHRhYmxlLXJvdyBpbiB0aGUgY2VsbCwgd2hpY2hldmVy
IGNvbWVzIGZpcnN0LiBJZiB0aGVyZQogICAgIC8vIGlzIG5vIHN1Y2ggbGluZSBib3ggb3IgdGFi
bGUtcm93LCB0aGUgYmFzZWxpbmUgaXMgdGhlIGJvdHRvbSBvZiBjb250ZW50IGVkZ2Ugb2YgdGhl
IGNlbGwgYm94LgotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoYm9yZGVy
QW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CisgICAgcmV0dXJu
IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsg
Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrQ2Vs
bERpcnR5V2hlbkNvbGxhcHNlZEJvcmRlckNoYW5nZXMoUmVuZGVyVGFibGVDZWxsKiBjZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRl
eCBkODg1ZThlMmM2MjVjNmRjMGI1ZjJkZmYxNTc5MzQzZWU1ZWU1MTBmLi43YjQ3ZDZjZTZhODNj
ODhmYmM3YmYxZGUyYmM1NmE4NjA0Y2RlNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtOTE3LDE2ICs5MTcsMTYgQEAgdm9pZCBS
ZW5kZXJUYWJsZVNlY3Rpb246OnJlY2FsY091dGVyQm9yZGVyKCkKICAgICBtX291dGVyQm9yZGVy
RW5kID0gY2FsY091dGVyQm9yZGVyRW5kKCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFi
bGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4g
UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2dyaWQuc2l6ZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICBpbnQgZmlyc3RMaW5lQmFzZWxp
bmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CiAgICAgaWYgKGZpcnN0TGluZUJhc2VsaW5lKQogICAg
ICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUgKyByb3VuZFRvSW50KG1fcm93UG9zWzBdKTsK
IAotICAgIE9wdGlvbmFsPGludD4gcmVzdWx0OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiByZXN1
bHQ7CiAgICAgY29uc3QgUm93JiBmaXJzdFJvdyA9IG1fZ3JpZFswXS5yb3c7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaXJzdFJvdy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBD
ZWxsU3RydWN0JiBjcyA9IGZpcnN0Um93LmF0KGkpOwpAQCAtOTM0LDcgKzkzNCw3IEBAIE9wdGlv
bmFsPGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAg
ICAgICAgIC8vIE9ubHkgY2VsbHMgd2l0aCBjb250ZW50IGhhdmUgYSBiYXNlbGluZQogICAgICAg
ICBpZiAoY2VsbCAmJiBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpKSB7CiAgICAgICAgICAg
ICBpbnQgY2FuZGlkYXRlID0gcm91bmRUb0ludChjZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxsLT5i
b3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZU9yKGNhbmRpZGF0ZSks
IGNhbmRpZGF0ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVf
b3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IDMzMzJjODFmYTRi
NWFmODEwNmZhOTBmODMwMmJiOGQ0NzExMmU2ZTAuLmFmOWFiNDRkM2RiYjQ1MzgyNDdiMTM0OWMw
NjcyNTMxNDg4NWYzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgUmVuZGVyVGFibGVTZWN0aW9uIGZp
bmFsIDogcHVibGljIFJlbmRlckJveCB7CiAKICAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVj
dCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKIAotICAg
IE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIHZvaWQgYWRkQ2VsbChSZW5kZXJUYWJsZUNlbGwqLCBSZW5kZXJUYWJsZVJvdyogcm93KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGNlMTU2ZWM4Zjk4
ZjkwYzY4MWU3MDZiNTg4ODI1YzRjYmJkYmY0ODUuLjM3YjA3NDE4NzhhMWJkOTgzOGVjNjI1M2Rl
ZDA3MTkxMDAxZmNjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTgwMCw3ICs4MDAsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgIGJvb2wgaXNT
cGFjZSA9IGZhbHNlOwogICAgIGJvb2wgZmlyc3RXb3JkID0gdHJ1ZTsKICAgICBib29sIGZpcnN0
TGluZSA9IHRydWU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGU7CisgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZTsKICAgICB1bnNpZ25lZCBsYXN0
V29yZEJvdW5kYXJ5ID0gMDsKIAogICAgIC8vIE5vbi16ZXJvIG9ubHkgd2hlbiBrZXJuaW5nIGlz
IGVuYWJsZWQsIGluIHdoaWNoIGNhc2Ugd2UgbWVhc3VyZSB3b3JkcyB3aXRoIHRoZWlyIHRyYWls
aW5nCkBAIC04MjIsNyArODIyLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAg
bWluaW11bVN1ZmZpeExlbmd0aCA9IGFmdGVyIDwgMCA/IDIgOiBhZnRlcjsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3c7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3c7CiAKICAgICBib29sIGJyZWFrTkJTUCA9IHN0
eWxlLmF1dG9XcmFwKCkgJiYgc3R5bGUubmJzcE1vZGUoKSA9PSBTUEFDRTsKICAgICAKQEAgLTg5
OCw3ICs4OTgsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICAgICAgZmxvYXQg
Y3Vyck1pbldpZHRoID0gMDsKICAgICAgICAgICAgIGJvb2wgaXNTcGFjZSA9IChqIDwgbGVuKSAm
JiBpc1NwYWNlQWNjb3JkaW5nVG9TdHlsZShjLCBzdHlsZSk7CiAgICAgICAgICAgICBmbG9hdCB3
OwotICAgICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7Cisg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwog
ICAgICAgICAgICAgaWYgKGlzU3BhY2UpCiAgICAgICAgICAgICAgICAgd29yZFRyYWlsaW5nU3Bh
Y2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwogICAgICAg
ICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC05MTUsNyArOTE1LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KIAogICAgICAgICAgICAgICAgIGlmIChzdWZmaXhTdGFydCkg
ewogICAgICAgICAgICAgICAgICAgICBmbG9hdCBzdWZmaXhXaWR0aDsKLSAgICAgICAgICAgICAg
ICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc1NwYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAg
d29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdvcmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNr
Rm9udHMpOwogICAgICAgICAgICAgICAgICAgICBpZiAod29yZFRyYWlsaW5nU3BhY2VXaWR0aCkK
QEAgLTEwMDAsNyArMTAwMCw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93
LnZhbHVlT3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKKyAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBm
aXJzdEdseXBoTGVmdE92ZXJmbG93LnZhbHVlX29yKGdseXBoT3ZlcmZsb3cubGVmdCk7CiAKICAg
ICBpZiAoKG5lZWRzV29yZFNwYWNpbmcgJiYgbGVuID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYm
ICFmaXJzdFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lkdGggKz0gd29yZFNwYWNpbmc7CkBAIC0x
Njc2LDkgKzE2NzYsOSBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5
cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAgIHNlY3VyZVRleHRU
aW1lci0+cmVzdGFydChvZmZzZXRBZnRlckxhc3RUeXBlZENoYXJhY3Rlcik7CiB9CiAKLVN0cmlu
Z1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCwgT3B0aW9uYWw8dW5z
aWduZWQ+IHN0b3ApIGNvbnN0CitTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5z
aWduZWQgc3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0gICAg
dW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlT3IodGV4dExlbmd0aCgpKTsKKyAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0b3AudmFsdWVfb3IodGV4dExlbmd0aCgpKTsKICAgICBB
U1NFUlQoc3RhcnQgPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChkZXN0aW5hdGlvbiA8PSBsZW5n
dGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGRlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDYxMzk5MDAzZGUyYzJmYmU4MTk0MTk4MjA4MWNjMmMy
OTA2YjhjMDUuLjljYTBmNTQwNmRmNDM3NGU4ZmI0ZTA5OGI1MDcwNTUzMWM0NGYwMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNz
IFJlbmRlclRleHQgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKICAgICB2b2lkIGRlbGV0ZUxpbmVC
b3hlc0JlZm9yZVNpbXBsZUxpbmVMYXlvdXQoKTsKICAgICBjb25zdCBTaW1wbGVMaW5lTGF5b3V0
OjpMYXlvdXQqIHNpbXBsZUxpbmVMYXlvdXQoKSBjb25zdDsKIAotICAgIFN0cmluZ1ZpZXcgc3Ry
aW5nVmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gTnVs
bG9wdCkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0ID0g
MCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RvcCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAK
ICAgICBMYXlvdXRVbml0IHRvcE9mRmlyc3RUZXh0KCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDA5NmY1NjRiZmY0Mjg1
YTgxMTU3NTFlMTc2M2VlMzEwMDhmNWIyYmQuLmQwOTNiNzkwNTYwYmFkOGY1MzBjNTQxNWIzYTFk
ZmE2YjVjYzg2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5oCkBAIC05OSw4ICs5OSw4IEBAIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJDb250
YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogICAgIHsKICAgICAgICAg
cmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lLCBmaXJzdExpbmUs
IGRpcmVjdGlvbiwgcG9zaXRpb24pOwogICAgIH0KLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGlu
ZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJC
bG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVy
QmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7
IH0KIAogcHJpdmF0ZToKICAgICBib29sIGlzRmxleGlibGVCb3hJbXBsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CmluZGV4IDgxMzBkMmU4MjA2YjBjMDQxNmRkZDlhZjFiZTQxZDQyNjQxNWIzYzEuLjU3NGJiMTQ0
OTM3MzE5NzVkNGNiMGMyNTJiMzllYjI4NzIwZDk0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJl
cGFpbnRTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290KSBj
b25zdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2Jq
ZWN0KiBzdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVu
ZCwgT3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tS
ZXBhaW50TW9kZSkKK3ZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCog
c3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVu
ZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBi
bG9ja1JlcGFpbnRNb2RlKQogewogICAgIC8vIE1ha2Ugc3VyZSBib3RoIG91ciBzdGFydCBhbmQg
ZW5kIG9iamVjdHMgYXJlIGRlZmluZWQuCiAgICAgLy8gQ2hlY2sgd3d3Lm1zbmJjLmNvbSBhbmQg
dHJ5IGNsaWNraW5nIGFyb3VuZCB0byBmaW5kIHRoZSBjYXNlIHdoZXJlIHRoaXMgaGFwcGVuZWQu
CkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVy
T2JqZWN0KiBzdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zLAogICAgIHNwbGl0U2Vs
ZWN0aW9uQmV0d2VlblN1YnRyZWVzKHN0YXJ0LCBzdGFydFBvcywgZW5kLCBlbmRQb3MsIGJsb2Nr
UmVwYWludE1vZGUpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OnNwbGl0U2VsZWN0aW9uQmV0d2Vl
blN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBz
dGFydFBvcywgY29uc3QgUmVuZGVyT2JqZWN0KiBlbmQsIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRQ
b3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpCit2b2lkIFJlbmRlclZp
ZXc6OnNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3Rh
cnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zLCBjb25zdCBSZW5kZXJPYmplY3Qq
IGVuZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9k
ZSBibG9ja1JlcGFpbnRNb2RlKQogewogICAgIC8vIENvbXB1dGUgdGhlIHZpc2libGUgc2VsZWN0
aW9uIGVuZCBwb2ludHMgZm9yIGVhY2ggb2YgdGhlIHN1YnRyZWVzLgogICAgIFJlbmRlclN1YnRy
ZWVzTWFwIHJlbmRlclN1YnRyZWVzTWFwOwpAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgUmVuZGVy
Vmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMoY29uc3QgUmVuZGVyT2JqZWN0KiBz
dGFydCwgT3B0aW9uCiAgICAgICAgICAgICBTZWxlY3Rpb25TdWJ0cmVlRGF0YSBzZWxlY3Rpb25E
YXRhID0gcmVuZGVyU3VidHJlZXNNYXAuZ2V0KCZyb290KTsKICAgICAgICAgICAgIGlmIChzZWxl
Y3Rpb25EYXRhLnNlbGVjdGlvbkNsZWFyKCkpIHsKICAgICAgICAgICAgICAgICBzZWxlY3Rpb25E
YXRhLnNldFNlbGVjdGlvblN0YXJ0KG5vZGUtPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgICAg
IHNlbGVjdGlvbkRhdGEuc2V0U2VsZWN0aW9uU3RhcnRQb3Mobm9kZSA9PSBzdGFydE5vZGUgPyBz
dGFydFBvcyA6IE9wdGlvbmFsPHVuc2lnbmVkPigwKSk7CisgICAgICAgICAgICAgICAgc2VsZWN0
aW9uRGF0YS5zZXRTZWxlY3Rpb25TdGFydFBvcyhub2RlID09IHN0YXJ0Tm9kZSA/IHN0YXJ0UG9z
IDogc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oMCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBzZWxlY3Rpb25EYXRhLnNldFNlbGVjdGlvbkVuZChub2RlLT5yZW5kZXJlcigpKTsKQEAg
LTExMDIsNyArMTEwMiw3IEBAIHZvaWQgUmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0aW9u
KGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBTZWxlY3RpCiAgICAgICAgIHNlbGVj
dGVkQmxvY2tJbmZvLnZhbHVlLT5yZXBhaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6Z2V0
U2VsZWN0aW9uKFJlbmRlck9iamVjdComIHN0YXJ0UmVuZGVyZXIsIE9wdGlvbmFsPHVuc2lnbmVk
PiYgc3RhcnRPZmZzZXQsIFJlbmRlck9iamVjdComIGVuZFJlbmRlcmVyLCBPcHRpb25hbDx1bnNp
Z25lZD4mIGVuZE9mZnNldCkgY29uc3QKK3ZvaWQgUmVuZGVyVmlldzo6Z2V0U2VsZWN0aW9uKFJl
bmRlck9iamVjdComIHN0YXJ0UmVuZGVyZXIsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiBzdGFy
dE9mZnNldCwgUmVuZGVyT2JqZWN0KiYgZW5kUmVuZGVyZXIsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+JiBlbmRPZmZzZXQpIGNvbnN0CiB7CiAgICAgc3RhcnRSZW5kZXJlciA9IG1fc2VsZWN0aW9u
VW5zcGxpdFN0YXJ0OwogICAgIHN0YXJ0T2Zmc2V0ID0gbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQ
b3M7CkBAIC0xMTEzLDcgKzExMTMsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmdldFNlbGVjdGlvbihS
ZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBPcHRpb25hbDx1bnNpZ25lZD4mCiB2b2lkIFJl
bmRlclZpZXc6OmNsZWFyU2VsZWN0aW9uKCkKIHsKICAgICBsYXllcigpLT5yZXBhaW50QmxvY2tT
ZWxlY3Rpb25HYXBzKCk7Ci0gICAgc2V0U2VsZWN0aW9uKG51bGxwdHIsIE51bGxvcHQsIG51bGxw
dHIsIE51bGxvcHQsIFJlcGFpbnROZXdNaW51c09sZCk7CisgICAgc2V0U2VsZWN0aW9uKG51bGxw
dHIsIHN0ZDo6bnVsbG9wdCwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBSZXBhaW50TmV3TWludXNP
bGQpOwogfQogCiBib29sIFJlbmRlclZpZXc6OnByaW50aW5nKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDZlODRmODM5NDNmYzExZmQxOTcxNzU4ODNmYThi
OTQ1YTI4ODQ3YWQuLjRhMTNhYWM4ZWE1OGMzMzg1MDk2MWE3NzFiZmIxZGRhZTZhNzc2OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtODQsOCArODQsOCBAQCBjbGFz
cyBSZW5kZXJWaWV3IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVibGljIFNlbGVj
dGlvblN1YnRyZWVSb290IHsKICAgICB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2VsZWN0aW9uUmVw
YWludE1vZGUgeyBSZXBhaW50TmV3WE9ST2xkLCBSZXBhaW50TmV3TWludXNPbGQsIFJlcGFpbnRO
b3RoaW5nIH07Ci0gICAgdm9pZCBzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFydCwgT3B0
aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZE9iamVjdCwgT3B0aW9u
YWw8dW5zaWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgPSBSZXBhaW50TmV3WE9S
T2xkKTsKLSAgICB2b2lkIGdldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVy
LCBPcHRpb25hbDx1bnNpZ25lZD4mIHN0YXJ0T2Zmc2V0LCBSZW5kZXJPYmplY3QqJiBlbmRSZW5k
ZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+JiBlbmRPZmZzZXQpIGNvbnN0OworICAgIHZvaWQgc2V0
U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0
YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZE9iamVjdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
ZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSA9IFJlcGFpbnROZXdYT1JPbGQpOworICAgIHZv
aWQgZ2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdComIHN0YXJ0UmVuZGVyZXIsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+JiBzdGFydE9mZnNldCwgUmVuZGVyT2JqZWN0KiYgZW5kUmVuZGVyZXIsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+JiBlbmRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJT
ZWxlY3Rpb24oKTsKICAgICBSZW5kZXJPYmplY3QqIHNlbGVjdGlvblVuc3BsaXRTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0OyB9CiAgICAgUmVuZGVyT2JqZWN0
KiBzZWxlY3Rpb25VbnNwbGl0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25VbnNwbGl0
RW5kOyB9CkBAIC0zMjUsNyArMzI1LDcgQEAgY2xhc3MgUmVuZGVyVmlldyBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJCbG9ja0Zsb3csIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiAKICAgICBi
b29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZvaWQgc3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMoY29uc3QgUmVuZGVyT2JqZWN0
KiBzdGFydFJlbmRlcmVyLCBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQb3MsIGNvbnN0IFJlbmRl
ck9iamVjdCogZW5kUmVuZGVyZXIsIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRQb3MsIFNlbGVjdGlv
blJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpOworICAgIHZvaWQgc3BsaXRTZWxlY3Rpb25C
ZXR3ZWVuU3VidHJlZXMoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywgY29uc3QgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJl
ciwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBi
bG9ja1JlcGFpbnRNb2RlKTsKICAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihjb25zdCBT
ZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25E
YXRhJikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyhSZW5kZXJT
dWJ0cmVlc01hcCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlKTsKICAgICB2b2lkIGFwcGx5U3VidHJl
ZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRN
b2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJik7CkBAIC0zMzcsOCArMzM3LDggQEAgY2xhc3Mg
UmVuZGVyVmlldyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3csIHB1YmxpYyBTZWxlY3Rp
b25TdWJ0cmVlUm9vdCB7CiAKICAgICBSZW5kZXJPYmplY3QqIG1fc2VsZWN0aW9uVW5zcGxpdFN0
YXJ0IHsgbnVsbHB0ciB9OwogICAgIFJlbmRlck9iamVjdCogbV9zZWxlY3Rpb25VbnNwbGl0RW5k
IHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3NlbGVjdGlvblVuc3BsaXRT
dGFydFBvczsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rpb25VbnNwbGl0RW5kUG9z
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0UG9z
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9uVW5zcGxpdEVuZFBvczsK
IAogICAgIC8vIEluY2x1ZGUgdGhpcyBSZW5kZXJWaWV3LgogICAgIHVpbnQ2NF90IG1fcmVuZGVy
ZXJDb3VudCB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxl
Y3Rpb25TdWJ0cmVlUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1
YnRyZWVSb290LmgKaW5kZXggMGQxOTM4NTI5ZGI3OTQyNTBhYjZmMDg1MmM1ZDc1NDI2NzVmMmNh
ZC4uYzczOTllZjk2ZDlhYzFhOTVlZmJiYTEyMTY2MGI0NmZjZTk2MzZjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmgKQEAgLTQ3LDggKzQ3
LDggQEAgY2xhc3MgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRQb3M7Ci0gICAgICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25FbmRQb3M7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBzZWxlY3Rpb25FbmRQb3M7CiAgICAgICAgIFNlbGVjdGVkT2JqZWN0TWFwIHNlbGVj
dGVkT2JqZWN0czsKICAgICAgICAgU2VsZWN0ZWRCbG9ja01hcCBzZWxlY3RlZEJsb2NrczsKICAg
ICB9OwpAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiAgICAg
cHVibGljOgogICAgICAgICBTZWxlY3Rpb25TdWJ0cmVlRGF0YSgpID0gZGVmYXVsdDsKIAotICAg
ICAgICBTZWxlY3Rpb25TdWJ0cmVlRGF0YShSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0LCBP
cHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRQb3MsIFJlbmRlck9iamVjdCogc2VsZWN0
aW9uRW5kLCBPcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9zKQorICAgICAgICBTZWxl
Y3Rpb25TdWJ0cmVlRGF0YShSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0LCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25TdGFydFBvcywgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25F
bmQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvbkVuZFBvcykKICAgICAgICAgICAg
IDogbV9zZWxlY3Rpb25TdGFydChzZWxlY3Rpb25TdGFydCkKICAgICAgICAgICAgICwgbV9zZWxl
Y3Rpb25TdGFydFBvcyhzZWxlY3Rpb25TdGFydFBvcykKICAgICAgICAgICAgICwgbV9zZWxlY3Rp
b25FbmQoc2VsZWN0aW9uRW5kKQpAQCAtNjYsOSArNjYsOSBAQCBjbGFzcyBTZWxlY3Rpb25TdWJ0
cmVlUm9vdCB7CiAgICAgICAgIH0KIAogICAgICAgICBSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0
YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydDsgfQotICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRQb3MoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlv
blN0YXJ0UG9zOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0
YXJ0UG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydFBvczsgfQogICAgICAgICBS
ZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uRW5k
OyB9Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25FbmRQb3MoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdGlvbkVuZFBvczsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzZWxlY3Rpb25FbmRQb3MoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkVuZFBvczsg
fQogICAgICAgICBib29sIHNlbGVjdGlvbkNsZWFyKCkgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuICFtX3NlbGVjdGlvblN0YXJ0CkBAIC04MywyMiArODMsMjIgQEAgY2xhc3Mg
U2VsZWN0aW9uU3VidHJlZVJvb3QgewogICAgICAgICAgICAgZW5kUG9zID0gbV9zZWxlY3Rpb25F
bmRQb3MudmFsdWUoKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0
KFJlbmRlck9iamVjdCogc2VsZWN0aW9uU3RhcnQpIHsgbV9zZWxlY3Rpb25TdGFydCA9IHNlbGVj
dGlvblN0YXJ0OyB9Ci0gICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhcnRQb3MoT3B0aW9uYWw8
dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zKSB7IG1fc2VsZWN0aW9uU3RhcnRQb3MgPSBzZWxl
Y3Rpb25TdGFydFBvczt9CisgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhcnRQb3Moc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRQb3MpIHsgbV9zZWxlY3Rpb25TdGFydFBv
cyA9IHNlbGVjdGlvblN0YXJ0UG9zO30KICAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25FbmQoUmVu
ZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQpIHsgbV9zZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmQ7
IH0KLSAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25FbmRQb3MoT3B0aW9uYWw8dW5zaWduZWQ+IHNl
bGVjdGlvbkVuZFBvcykgeyBtX3NlbGVjdGlvbkVuZFBvcyA9IHNlbGVjdGlvbkVuZFBvczt9Cisg
ICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5kUG9zKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNl
bGVjdGlvbkVuZFBvcykgeyBtX3NlbGVjdGlvbkVuZFBvcyA9IHNlbGVjdGlvbkVuZFBvczt9CiAg
ICAgICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3Nl
bGVjdGlvblN0YXJ0ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uU3RhcnRQb3Mg
PSBOdWxsb3B0OworICAgICAgICAgICAgbV9zZWxlY3Rpb25TdGFydFBvcyA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIG1fc2VsZWN0aW9uRW5kID0gbnVsbHB0cjsKLSAgICAgICAgICAgIG1f
c2VsZWN0aW9uRW5kUG9zID0gTnVsbG9wdDsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRW5kUG9z
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZW5k
ZXJPYmplY3QqIG1fc2VsZWN0aW9uU3RhcnQgeyBudWxscHRyIH07Ci0gICAgICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBtX3NlbGVjdGlvblN0YXJ0UG9zOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBtX3NlbGVjdGlvblN0YXJ0UG9zOwogICAgICAgICBSZW5kZXJPYmplY3QqIG1fc2Vs
ZWN0aW9uRW5kIHsgbnVsbHB0ciB9OwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxl
Y3Rpb25FbmRQb3M7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9u
RW5kUG9zOwogICAgIH07CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U2VsZWN0aW9uU3VidHJlZVJv
b3QqLCBTZWxlY3Rpb25TdWJ0cmVlRGF0YT4gUmVuZGVyU3VidHJlZXNNYXA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggMDcxZmIzMDk4MWNl
OTZhNDEzZTRhMTRjMDVmYzY2NzQwMTEwZGFiMy4uNWY4MDlkODgwMDdjMWQzYWRkNGI4MjZlZDk2
OWUxMjA1ZDU2OGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcApAQCAtNDAwLDExICs0MDAsMTEgQEAgY2xhc3MgTGluZVN0YXRlIHsKICAgICBm
bG9hdCBsb2dpY2FsTGVmdE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExlZnRPZmZz
ZXQ7IH0KICAgICBjb25zdCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50JiBvdmVy
Zmxvd2VkRnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ZWRGcmFnbWVudDsgfQog
ICAgIGJvb2wgaGFzVHJhaWxpbmdXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90cmFpbGlu
Z1doaXRlc3BhY2VMZW5ndGg7IH0KLSAgICBPcHRpb25hbDxUZXh0RnJhZ21lbnRJdGVyYXRvcjo6
VGV4dEZyYWdtZW50PiBsYXN0RnJhZ21lbnQoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8VGV4
dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudD4gbGFzdEZyYWdtZW50KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmIChtX2ZyYWdtZW50cy5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4g
bV9mcmFnbWVudHMubGFzdCgpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgYm9vbCBpc1doaXRlc3BhY2VPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0aCAmJiBtX3J1bnNXaWR0aCA9PSBt
X3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOyB9CiAgICAgYm9vbCBmaXRzKGZsb2F0IGV4dHJhKSBj
b25zdCB7IHJldHVybiBtX2F2YWlsYWJsZVdpZHRoID49IG1fcnVuc1dpZHRoICsgZXh0cmE7IH0K
QEAgLTgwNyw3ICs4MDcsNyBAQCBzdGF0aWMgRVRleHRBbGlnbiB0ZXh0QWxpZ25Gb3JMaW5lKGNv
bnN0IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpTdHlsZSYgc3R5bGUsIGJvbwogICAgIHJldHVybiB0
ZXh0QWxpZ247CiB9CiAKLXN0YXRpYyB2b2lkIGNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMo
TGluZVN0YXRlJiBsaW5lLCBMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGxhc3RSdW5JbmRleE9mUHJldmlvdXNMaW5lLCB1bnNpZ25lZCYgbGluZUNvdW50LAorc3Rh
dGljIHZvaWQgY2xvc2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhMaW5lU3RhdGUmIGxpbmUsIExh
eW91dDo6UnVuVmVjdG9yJiBydW5zLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0UnVuSW5k
ZXhPZlByZXZpb3VzTGluZSwgdW5zaWduZWQmIGxpbmVDb3VudCwKICAgICBjb25zdCBUZXh0RnJh
Z21lbnRJdGVyYXRvciYgdGV4dEZyYWdtZW50SXRlcmF0b3IsIGJvb2wgbGFzdExpbmVJbkZsb3cp
CiB7CiAgICAgaWYgKCFydW5zLnNpemUoKSB8fCAobGFzdFJ1bkluZGV4T2ZQcmV2aW91c0xpbmUg
JiYgcnVucy5zaXplKCkgLSAxID09IGxhc3RSdW5JbmRleE9mUHJldmlvdXNMaW5lLnZhbHVlKCkp
KQpAQCAtODM5LDcgKzgzOSw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRleHRSdW5zKExheW91dDo6
UnVuVmVjdG9yJiBydW5zLCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIHVuc2lnCiAgICAgTGluZVN0
YXRlIGxpbmU7CiAgICAgYm9vbCBpc0VuZE9mQ29udGVudCA9IGZhbHNlOwogICAgIFRleHRGcmFn
bWVudEl0ZXJhdG9yIHRleHRGcmFnbWVudEl0ZXJhdG9yID0gVGV4dEZyYWdtZW50SXRlcmF0b3Io
Zmxvdyk7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RSdW5JbmRleE9mUHJldmlvdXNMaW5l
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RSdW5JbmRleE9mUHJldmlvdXNMaW5l
OwogICAgIGRvIHsKICAgICAgICAgZmxvdy5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVIZWlnaHQgKiBs
aW5lQ291bnQgKyBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKTsKICAgICAgICAgTGluZVN0YXRlIHBy
ZXZpb3VzTGluZSA9IGxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggZWMwMjg2NTA3MDY2YjMxOWJjNzdm
MTZkNThmODMwY2Q5OWZmMzRkNi4uOTVhMzc0ODVlNTE1YzJhYTEzMTMyYmY5MzBjZDBhMzYxMGNl
ZWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtOTQsMTEgKzk0LDExIEBAIHZvaWQgcGFpbnRGbG93KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5m
byYgcGFpCiAgICAgdGV4dFBhaW50ZXIuc2V0Rm9udChzdHlsZS5mb250Q2FzY2FkZSgpKTsKICAg
ICB0ZXh0UGFpbnRlci5zZXRUZXh0UGFpbnRTdHlsZShjb21wdXRlVGV4dFBhaW50U3R5bGUoZmxv
dy5mcmFtZSgpLCBzdHlsZSwgcGFpbnRJbmZvKSk7CiAKLSAgICBPcHRpb25hbDxUZXh0RGVjb3Jh
dGlvblBhaW50ZXI+IHRleHREZWNvcmF0aW9uUGFpbnRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRl
eHREZWNvcmF0aW9uUGFpbnRlcj4gdGV4dERlY29yYXRpb25QYWludGVyOwogICAgIGlmIChzdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICE9IFRleHREZWNvcmF0aW9uTm9uZSkgewogICAg
ICAgICBjb25zdCBSZW5kZXJUZXh0KiB0ZXh0UmVuZGVyZXIgPSBjaGlsZHJlbk9mVHlwZTxSZW5k
ZXJUZXh0PihmbG93KS5maXJzdCgpOwogICAgICAgICBpZiAodGV4dFJlbmRlcmVyKSB7Ci0gICAg
ICAgICAgICB0ZXh0RGVjb3JhdGlvblBhaW50ZXIgPSBUZXh0RGVjb3JhdGlvblBhaW50ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRS
ZW5kZXJlciwgZmFsc2UpOworICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLmVtcGxh
Y2UocGFpbnRJbmZvLmNvbnRleHQoKSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwg
KnRleHRSZW5kZXJlciwgZmFsc2UpOwogICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVy
LT5zZXRGb250KHN0eWxlLmZvbnRDYXNjYWRlKCkpOwogICAgICAgICAgICAgdGV4dERlY29yYXRp
b25QYWludGVyLT5zZXRCYXNlbGluZShzdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRl
eHQuaAppbmRleCAxMWYyODMxYmZmZDA1MTNiMzQyMWExMWI3ZjkxYWY2MGRjM2NjM2E3Li5lZDc2
MTFlZjg5MDUxMDg3YjIzMTg2YTdhMDQxYzRkNTE2MGE2OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaApAQCAtNzAsNyArNzAsNyBAQCBz
dHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2UgewogICAgIHsKICAgICB9CiAKLSAgICBXVEY6Ok9wdGlv
bmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tGb250cykKKyAg
ICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3aWR0aChIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJh
Y2tGb250cykKICAgICB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFdvcmRUcmFpbGluZ1NwYWNl
U3RhdGU6OkNvbXB1dGVkKQogICAgICAgICAgICAgcmV0dXJuIG1fd2lkdGg7CkBAIC04NSw3ICs4
NSw3IEBAIHN0cnVjdCBXb3JkVHJhaWxpbmdTcGFjZSB7CiBwcml2YXRlOgogICAgIGVudW0gY2xh
c3MgV29yZFRyYWlsaW5nU3BhY2VTdGF0ZSB7IFVuaW5pdGlhbGl6ZWQsIENvbXB1dGVkIH07CiAg
ICAgV29yZFRyYWlsaW5nU3BhY2VTdGF0ZSBtX3N0YXRlIHsgV29yZFRyYWlsaW5nU3BhY2VTdGF0
ZTo6VW5pbml0aWFsaXplZCB9OwotICAgIFdURjo6T3B0aW9uYWw8ZmxvYXQ+IG1fd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV93aWR0aDsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
bV9zdHlsZTsKICAgICBUZXh0TGF5b3V0KiBtX3RleHRMYXlvdXQgeyBudWxscHRyIH07CiB9OwpA
QCAtMTczLDcgKzE3Myw3IEBAIGNsYXNzIEJyZWFraW5nQ29udGV4dCB7CiAgICAgICAgIG1faGFu
Z3NBdEVuZCA9IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgY29tbWl0TGluZUJyZWFrQXRDdXJy
ZW50V2lkdGgoUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCA9IDAsIE9wdGlv
bmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBPcHRpb25hbDx1bnNpZ25lZD4oKSkKKyAgICB2b2lk
IGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNp
Z25lZCBvZmZzZXQgPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPigpKQogICAgIHsKICAgICAgICAgbV93aWR0aC5jb21taXQoKTsK
ICAgICAgICAgbV9saW5lQnJlYWtIaXN0b3J5Lm1vdmVUbyhvYmplY3QsIG9mZnNldCwgbmV4dEJy
ZWFrKTsKQEAgLTIxMCwxNCArMjEwLDE0IEBAIGNsYXNzIEJyZWFraW5nQ29udGV4dCB7CiAKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDAp
LnJlbmRlcmVyKCk7IH0KICAgICAgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
dGhpcy0+YXQoMCkub2Zmc2V0KCk7IH0KLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRC
cmVha2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLm5leHRCcmVha2Fi
bGVQb3NpdGlvbigpOyB9CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVh
a2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLm5leHRCcmVha2FibGVQ
b3NpdGlvbigpOyB9CiAgICAgICAgIGJvb2wgYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCkgY29u
c3QgeyByZXR1cm4gdGhpcy0+YXQoMCkuYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCk7IH0KICAg
ICAgICAgVUNoYXIgcHJldmlvdXNJblNhbWVOb2RlKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQo
MCkucHJldmlvdXNJblNhbWVOb2RlKCk7IH0KICAgICAgICAgY29uc3QgSW5saW5lSXRlcmF0b3Im
IGdldChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gdGhpcy0+YXQoaSk7IH07CiAgICAgICAgIGNv
bnN0IElubGluZUl0ZXJhdG9yJiBjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0KDApOyB9CiAg
ICAgICAgIHNpemVfdCBoaXN0b3J5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+c2l6ZSgp
OyB9CiAKLSAgICAgICAgdm9pZCBtb3ZlVG8oUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVuc2lnbmVk
IG9mZnNldCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhayA9IE51bGxvcHQpCisgICAgICAg
IHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhayA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgewog
ICAgICAgICAgICAgcHVzaChbJl0oSW5saW5lSXRlcmF0b3ImIG1vZGlmeU1lKSB7CiAgICAgICAg
ICAgICAgICAgbW9kaWZ5TWUubW92ZVRvKG9iamVjdCwgb2Zmc2V0LCBuZXh0QnJlYWspOwpAQCAt
NjYyLDcgKzY2Miw3IEBAIGlubGluZSB2b2lkIGVuc3VyZUNoYXJhY3RlckdldHNMaW5lQm94KExp
bmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlJiBsaW5lV2hpdGVzCiAgICAgbGluZVdoaXRlc3Bh
Y2VDb2xsYXBzaW5nU3RhdGUuc3RvcElnbm9yaW5nU3BhY2VzKElubGluZUl0ZXJhdG9yKDAsIHRl
eHRQYXJhZ3JhcGhTZXBhcmF0b3IucmVuZGVyZXIoKSwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5v
ZmZzZXQoKSkpOwogfQogCi1pbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0
ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgaW50IGNvbnNl
Y3V0aXZlSHlwaGVuYXRlZExpbmVzTGltaXQsIGludCBtaW5pbXVtUHJlZml4TGltaXQsIGludCBt
aW5pbXVtU3VmZml4TGltaXQsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgcG9zLCBmbG9h
dCB4UG9zLCBpbnQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxh
cHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVyYXRvciYg
bGluZUJyZWFrLCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZSwgYm9vbCYgaHlwaGVu
YXRlZCkKK2lubGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRlclRleHQmIHRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIs
IHVuc2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBpbnQgY29uc2VjdXRpdmVIeXBo
ZW5hdGVkTGluZXNMaW1pdCwgaW50IG1pbmltdW1QcmVmaXhMaW1pdCwgaW50IG1pbmltdW1TdWZm
aXhMaW1pdCwgdW5zaWduZWQgbGFzdFNwYWNlLCB1bnNpZ25lZCBwb3MsIGZsb2F0IHhQb3MsIGlu
dCBhdmFpbGFibGVXaWR0aCwgYm9vbCBpc0ZpeGVkUGl0Y2gsIGJvb2wgY29sbGFwc2VXaGl0ZVNw
YWNlLCBpbnQgbGFzdFNwYWNlV29yZFNwYWNpbmcsIElubGluZUl0ZXJhdG9yJiBsaW5lQnJlYWss
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGUsIGJvb2wmIGh5cGhlbmF0ZWQp
CiB7CiAgICAgLy8gTWFwICdoeXBoZW5hdGUtbGltaXQte2JlZm9yZSxhZnRlcn06IGF1dG87JyB0
byAyLgogICAgIHVuc2lnbmVkIG1pbmltdW1QcmVmaXhMZW5ndGg7CkBAIC03NDAsNyArNzQwLDcg
QEAgaW5saW5lIGZsb2F0IEJyZWFraW5nQ29udGV4dDo6Y29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVu
V29yZHNXaWR0aChSZW5kZXJUZXh0JiByZW4KICAgICB3b3JkTWVhc3VyZW1lbnQuc3RhcnRPZmZz
ZXQgPSBsYXN0U3BhY2U7CiAgICAgCiAgICAgZmxvYXQgYWRkaXRpb25hbFRlbXBXaWR0aCA9IDA7
Ci0gICAgV1RGOjpPcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwogICAgIGlmIChjdXJy
ZW50Q2hhcmFjdGVyID09ICcgJykKICAgICAgICAgd29yZFRyYWlsaW5nU3BhY2VXaWR0aCA9IHdv
cmRUcmFpbGluZ1NwYWNlLndpZHRoKGZhbGxiYWNrRm9udHMpOwogICAgIGlmICh3b3JkVHJhaWxp
bmdTcGFjZVdpZHRoKQpAQCAtODcwLDcgKzg3MCw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29u
dGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29s
CiAgICAgICAgICAgICBtaWRXb3JkQnJlYWsgPSBtX3dpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3
cmFwVyArIGNoYXJXaWR0aCA+IG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKTsKICAgICAgICAgfQog
Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBtX2N1
cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IG1fY3VycmVudC5uZXh0QnJlYWthYmxlUG9z
aXRpb24oKTsKICAgICAgICAgYm9vbCBiZXR3ZWVuV29yZHMgPSBjID09ICdcbicgfHwgKG1fY3Vy
cldTICE9IFBSRSAmJiAhbV9hdFN0YXJ0ICYmIGlzQnJlYWthYmxlKG1fcmVuZGVyVGV4dEluZm8u
bGluZUJyZWFrSXRlcmF0b3IsIG1fY3VycmVudC5vZmZzZXQoKSwgbmV4dEJyZWFrYWJsZVBvc2l0
aW9uLCBicmVha05CU1AsIGlzTG9vc2VDSktNb2RlLCBrZWVwQWxsV29yZHMpCiAgICAgICAgICAg
ICAmJiAoc3R5bGUuaHlwaGVucygpICE9IEh5cGhlbnNOb25lIHx8IChtX2N1cnJlbnQucHJldmlv
dXNJblNhbWVOb2RlKCkgIT0gc29mdEh5cGhlbikpKTsKICAgICAgICAgbV9jdXJyZW50LnNldE5l
eHRCcmVha2FibGVQb3NpdGlvbihuZXh0QnJlYWthYmxlUG9zaXRpb24pOwpAQCAtOTcyLDcgKzk3
Miw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3Vy
ZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGxhc3QgYnJlYWtpbmcgcG9zaXRpb24g
aXMgYSBzb2Z0LWh5cGhlbi4KICAgICAgICAgICAgICAgICAgICAgaWYgKCFoeXBoZW5hdGVkICYm
IHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RCcmVha2luZ1Bvc2l0b247CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0QnJlYWtpbmdQb3NpdG9uOwog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlckF0QnJl
YWtpbmdQb3NpdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9s
aW5lQnJlYWtIaXN0b3J5Lm9mZnNldCgpIHx8IG1fbGluZUJyZWFrSGlzdG9yeS5uZXh0QnJlYWth
YmxlUG9zaXRpb24oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCcmVha2lu
Z1Bvc2l0b24gPSBtX2xpbmVCcmVha0hpc3Rvcnkub2Zmc2V0KCk7CkBAIC05ODMsNyArOTgzLDcg
QEAgaW5saW5lIGJvb2wgQnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVu
dHMmIHdvcmRNZWFzdXJlbWVudHMsIGJvb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJlckF0QnJlYWtpbmdQb3NpdGlvbiA9IG1fY3VycmVudC5yZW5kZXJlcigpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RCcmVh
a2luZ1Bvc2l0b24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDxVQ2hh
cj4gY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyPiBjaGFyYWN0ZXJCZWZvcmVCcmVha2luZ1Bvc2l0
aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gbGFzdCBicmVha2luZyBw
b3NpdGlvbiBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IGNvbnRleHQsIHdlIG5l
ZWQgdG8gbG9vayBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoZSBwcmV2aW91cyBub24tZW1wdHkgdGV4dCByZW5kZXJlci4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RCcmVha2luZ1Bvc2l0b24udmFsdWUoKSkK
QEAgLTEzMzYsNyArMTMzNiw3IEBAIGlubGluZSBJbmxpbmVJdGVyYXRvciBCcmVha2luZ0NvbnRl
eHQ6Om9wdGltYWxMaW5lQnJlYWtMb2NhdGlvbkZvclRyYWlsaW5nV29yZCgpCiAgICAgICAgIHJl
dHVybiBsaW5lQnJlYWs7CiAgICAgYm9vbCBpc0xvb3NlQ0pLTW9kZSA9IG1fcmVuZGVyVGV4dElu
Zm8udGV4dCAhPSAmcmVuZGVyVGV4dCAmJiBtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJh
dG9yLmlzTG9vc2VDSktNb2RlKCk7CiAgICAgYm9vbCBicmVha05CU1AgPSBtX2F1dG9XcmFwICYm
IG1fY3VycmVudFN0eWxlLT5uYnNwTW9kZSgpID09IFNQQUNFOwotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBsaW5lQnJlYWsubmV4dEJyZWFrYWJsZVBvc2l0
aW9uKCk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9u
ID0gbGluZUJyZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigpOwogICAgIGlzQnJlYWthYmxlKG1f
cmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IsIGxpbmVCcmVhay5vZmZzZXQoKSArIDEs
IG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJlYWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwgbV9jdXJy
ZW50U3R5bGUtPndvcmRCcmVhaygpID09IEtlZXBBbGxXb3JkQnJlYWspOwogICAgIGlmICghbmV4
dEJyZWFrYWJsZVBvc2l0aW9uIHx8IG5leHRCcmVha2FibGVQb3NpdGlvbi52YWx1ZSgpICE9IHJl
bmRlclRleHQudGV4dExlbmd0aCgpKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcAppbmRleCA1ZjMx
NmE0ODFiNGMwZWM5NzNlYTZjMzYyNTIyZGMyZWEwMGUxMGM3Li5jYTQ2YzJlYmNkMDJmZGUzNGU1
ZTZjMGJmMGJkOGI3MmEwNGEyZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL01hdGhNTFN0eWxlLmNwcApAQCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBNYXRoTUxT
dHlsZTo6cmVzb2x2ZU1hdGhNTFN0eWxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgLy8g
VGhlIGRpc3BsYXlzdHlsZSBhbmQgbWF0aHZhcmlhbnQgYXR0cmlidXRlcyBvdmVycmlkZSB0aGUg
ZGVmYXVsdCBiZWhhdmlvci4KICAgICBhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4ocmVuZGVyZXIpLT5lbGVtZW50KCk7CiAgICAgaWYgKGlzPE1hdGhNTEVsZW1lbnQ+KGVs
ZW1lbnQpKSB7Ci0gICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3BsYXlTdHlsZSA9IGRvd25jYXN0
PE1hdGhNTEVsZW1lbnQ+KGVsZW1lbnQpLT5zcGVjaWZpZWREaXNwbGF5U3R5bGUoKTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBkaXNwbGF5U3R5bGUgPSBkb3duY2FzdDxNYXRoTUxFbGVt
ZW50PihlbGVtZW50KS0+c3BlY2lmaWVkRGlzcGxheVN0eWxlKCk7CiAgICAgICAgIGlmIChkaXNw
bGF5U3R5bGUpCiAgICAgICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IGRpc3BsYXlTdHlsZS52YWx1
ZSgpOwotICAgICAgICBPcHRpb25hbDxNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudD4gbWF0aFZh
cmlhbnQgPSBkb3duY2FzdDxNYXRoTUxFbGVtZW50PihlbGVtZW50KS0+c3BlY2lmaWVkTWF0aFZh
cmlhbnQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFu
dD4gbWF0aFZhcmlhbnQgPSBkb3duY2FzdDxNYXRoTUxFbGVtZW50PihlbGVtZW50KS0+c3BlY2lm
aWVkTWF0aFZhcmlhbnQoKTsKICAgICAgICAgaWYgKG1hdGhWYXJpYW50KQogICAgICAgICAgICAg
bV9tYXRoVmFyaWFudCA9IG1hdGhWYXJpYW50LnZhbHVlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRl
eCA1MjE1NTBiMWRkNGMyYzEzZTZhMjkxMDIyNDBiODkzYzFjNjExNDUxLi40MTdlOWM2NTVjNzhh
ZTc3ODZlYWQ4M2UzNDlmMGE2MjZiMDE1YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIGludCBSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluCiAgICAgaWYgKGxpbmVQb3NpdGlvbk1vZGUgPT0g
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJl
dHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9z
aXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9k
ZSkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKFJlbmRlckJsb2Nr
OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxp
bmVQb3NpdGlvbk1vZGUpKTsKIH0KIAogI2lmIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKQEAg
LTE3MywxMSArMTczLDExIEBAIExheW91dFVuaXQgdG9Vc2VyVW5pdHMoY29uc3QgTWF0aE1MRWxl
bWVudDo6TGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgfQogfQogCi1P
cHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MVGFibGU6OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKIHsKICAgICAvLyBCeSBkZWZhdWx0IHRoZSB2ZXJ0aWNhbCBjZW50ZXIgb2YgPG10
YWJsZT4gaXMgYWxpZ25lZCBvbiB0aGUgbWF0aCBheGlzLgogICAgIC8vIFRoaXMgaXMgZGlmZmVy
ZW50IHRoYW4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJveEJhc2VsaW5lLCB3aGljaCByZXR1cm5z
IHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgcm93IG9mIGEgPHRhYmxlPi4KLSAgICByZXR1cm4g
T3B0aW9uYWw8aW50Pihsb2dpY2FsSGVpZ2h0KCkgLyAyICsgYXhpc0hlaWdodChzdHlsZSgpKSk7
CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50Pihsb2dpY2FsSGVpZ2h0KCkgLyAyICsgYXhp
c0hlaWdodChzdHlsZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OmxheW91dEl0
ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCA3YTQyN2JiMjU1OTI3OTRkYTg1
Zjc5NjkzNTA0OGQwMDlmODMyMDcyLi5iYjE0MmEyNTQyMGEzYTZiY2UxNGMxNTRiZGU5MzIzMzYz
NDM0ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTEJsb2Nr
IDogcHVibGljIFJlbmRlckJsb2NrIHsKIAogICAgIHN0YXRpYyBMYXlvdXRVbml0IGFzY2VudEZv
ckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgewotICAgICAgICByZXR1cm4gY2hp
bGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLmxvZ2ljYWxIZWlnaHQoKSk7Cisg
ICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLmxv
Z2ljYWxIZWlnaHQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZTsK
QEAgLTEwOSw3ICsxMDksNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxUYWJsZSBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJUYWJsZSB7CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxNYXRo
TUxTdHlsZT4gbV9tYXRoTUxTdHlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IDYzZjQxODhl
OTg0NmJiODM0ZjExZGQ3OWUxYjczYTI5ZjRlMTdhMWYuLjM1ZTQ0MTQ1ZjdmODYyYzA4YmQwNGUy
MTdlZDVmZDBkZTYzMGMxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCkBAIC0yNDIsMTAgKzI0MiwxMCBA
QCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFk
anVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIGxvZ2ljYWxXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkp
KTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzVmFsaWQoKSkKLSAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXNj
ZW50KSkpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0
YXRpY19jYXN0PGZsb2F0PihtX2FzY2VudCkpKTsKICAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxv
Y2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCBiOTk5NDgwMTk1
MDk1OTY0Y2M3ZjM4ZDc3ODk4MWU0OWY2ODlmMTUyLi4wYWQ5ZGZmYWE5YzVjNzlmNjFhOTgyYmIz
NzgzYzU5NmZjMGFlZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFJl
bmRlck1hdGhNTEZyYWN0aW9uIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAog
ICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lk
IGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdodCA9IDApIGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JikgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IDZkOWEwM2NhZDBjNTU0ZTRjZjRi
YzJmN2Y1MzNjZmQwZTk4MWQ4NDAuLjlmOTc5MjZmMjUzZDE0OGY5Y2E0MzljNzA1MzkzMjY3OGZl
OGQyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0yODcsMTAgKzI4NywxMCBAQCBMYXlvdXRVbml0
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjp2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSBj
b25zdAogICAgIHJldHVybiAobV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lIC0gbV9zdHJldGNo
SGVpZ2h0QWJvdmVCYXNlbGluZSAtIG1fbWF0aE9wZXJhdG9yLmRlc2NlbnQoKSArIG1fbWF0aE9w
ZXJhdG9yLmFzY2VudCgpKSAvIDI7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmICh1
c2VNYXRoT3BlcmF0b3IoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RkOjpscm91
bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbWF0aE9wZXJhdG9yLmFzY2VudCgpIC0gdmVydGljYWxT
dHJldGNoZWRPcGVyYXRvclNoaWZ0KCkpKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbWF0aE9wZXJhdG9yLmFzY2Vu
dCgpIC0gdmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkpKSk7CiAgICAgcmV0dXJuIFJl
bmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5k
ZXggNjA3MWVkZjQzZWI4NDYxMjQ4NmFhODhkYTQ2NWQzY2M5ZGM3YTZkMy4uZTIxMmU5YmY3MzRh
ZDI1NWYwNmU2OTBlYzI1ZTE3ODVhOTI5OWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNzcsNyArNzcs
NyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxPcGVyYXRvciA6IHB1YmxpYyBSZW5kZXJNYXRoTUxUb2tl
biB7CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNJbnZpc2libGVPcGVyYXRvcigpIGNvbnN0OwogCi0gICAg
T3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRl
ck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBmaW5hbCB7IHJldHVybiB0
aGlzOyB9CiAKICAgICBMYXlvdXRVbml0IHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxQYWRkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxQYWRkZWQuY3BwCmluZGV4IGMxMzVhMjc2ZjYxYjA2NDU5MWMwMjMzZjIwNTcxZDIx
YjQ5YTk2Y2EuLjU5YjJiMDFkZjY3YWY1MDllNjE1MTVkZjE4NDcwMGNmNmY3ZjU2ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBh
ZGRlZC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFBhZGRlZDo6bGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVl
ZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxQYWRkZWQ6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxQYWRk
ZWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBXZSB0cnkgYW5kIGNhbGN1
bGF0ZSB0aGUgYmFzZWxpbmUgZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoaWxkLgog
ICAgIExheW91dFVuaXQgYXNjZW50OwpAQCAtMTE4LDcgKzExOCw3IEBAIE9wdGlvbmFsPGludD4g
UmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgICAgIGFz
Y2VudCA9IGFzY2VudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxv
Z2ljYWxUb3AoKSArIHZvZmZzZXQoKTsKICAgICBlbHNlCiAgICAgICAgIGFzY2VudCA9IG1wYWRk
ZWRIZWlnaHQoMCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RkOjpscm91bmQoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGFzY2VudCkpKTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0
ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0Pihhc2NlbnQpKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCmlu
ZGV4IDBhYzNjODkwNzI1NDNkY2Y1YTBjNGM3YmI1NTY1MGU4ODRkNTVlY2QuLmIxNTk4ZDhlYTc1
MzM2ZDFjMTg3MjZkMTE0ZDcwMWIwNTY0OGYxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaApAQCAtNDIsNyArNDIsNyBA
QCBjbGFzcyBSZW5kZXJNYXRoTUxQYWRkZWQgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MUm93
IHsKIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAg
ICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IDApIGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIE1hdGhNTFBhZGRlZEVsZW1lbnQmIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxQYWRkZWRFbGVtZW50Jj4obm9kZUZv
ck5vbkFub255bW91cygpKTsgfQogICAgIExheW91dFVuaXQgdm9mZnNldCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3Bw
CmluZGV4IGU1ZjEyYjMzZWEyOGMyYjIwOGVkNDkxYzJlMjNmZDk4YTIwMGQ1NTguLmM0YmViYzJh
MjNjMzkyN2IxZmE1NGRkZWY4MmI3NTNiMTcwMjc3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKQEAgLTQ5LDEzICs0OSwx
MyBAQCBNYXRoTUxSb3dFbGVtZW50JiBSZW5kZXJNYXRoTUxSb3c6OmVsZW1lbnQoKSBjb25zdAog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxSb3dFbGVtZW50Jj4obm9kZUZvck5vbkFub255
bW91cygpKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxSb3c6OmZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxSb3c6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBhdXRvKiBiYXNlbGluZUNoaWxkID0gZmlyc3RD
aGlsZEJveCgpOwogICAgIGlmICghYmFzZWxpbmVDaGlsZCkKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCi0gICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNo
aWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkpKTsKKyAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZihhc2Nl
bnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkp
KSk7CiB9CiAKIHZvaWQgUmVuZGVyTWF0aE1MUm93Ojpjb21wdXRlTGluZVZlcnRpY2FsU3RyZXRj
aChMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAppbmRleCAyODk0MjFk
MmZiODlmMmIzYTk3NDE4MGM5NzljMDNjOGVjYzhkMzc3Li5mOWMxNjc4OWIxMWNlYWMyOWU0MzIw
Zjg3ZDk4ODQ5NGM3YTI5NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgUmVuZGVyTWF0
aE1MUm93IDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIAogcHJvdGVjdGVkOgogICAgIHZv
aWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBsYXlvdXRSb3dJdGVtcyhMYXlv
dXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQpOwogICAgIHZvaWQgY29tcHV0ZUxp
bmVWZXJ0aWNhbFN0cmV0Y2goTGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuY3BwCmluZGV4IGZjZmE0YWYxNzVmZWFiYjI5NDkzNDgyNDc0YzgyMDRlOGVj
MWEyYmUuLjA1ZDUwZTBjOWQwN2FjNzRjMmMzYWIwNDNhMmY3ODFmMmY3ZmNhNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmNwcApAQCAtNzYsMTMgKzc2LDEzIEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBSZW5kZXJN
YXRoTUxTY3JpcHRzOjp1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKQogICAgIHJldHVybiBkb3duY2Fz
dDxSZW5kZXJNYXRoTUxCbG9jaz4oYmFzZSktPnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOwogfQog
Ci1PcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVy
TWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbmRHZXRSZWZlcmVuY2VDaGlsZHJlbigpCitzdGQ6Om9w
dGlvbmFsPFJlbmRlck1hdGhNTFNjcmlwdHM6OlJlZmVyZW5jZUNoaWxkcmVuPiBSZW5kZXJNYXRo
TUxTY3JpcHRzOjp2YWxpZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKCkKIHsKICAgICAvLyBB
bGwgc2NyaXB0ZWQgZWxlbWVudHMgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBjaGlsZC4KICAgICAv
LyBUaGUgZmlyc3QgY2hpbGQgaXMgdGhlIGJhc2UuCiAgICAgYXV0byBiYXNlID0gZmlyc3RDaGls
ZEJveCgpOwogICAgIGlmICghYmFzZSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZWZlcmVuY2VDaGlsZHJlbiByZWZlcmVuY2U7
CiAgICAgcmVmZXJlbmNlLmJhc2UgPSBiYXNlOwpAQCAtMTAzLDcgKzEwMyw3IEBAIE9wdGlvbmFs
PFJlbmRlck1hdGhNTFNjcmlwdHM6OlJlZmVyZW5jZUNoaWxkcmVuPiBSZW5kZXJNYXRoTUxTY3Jp
cHRzOjp2YWxpZGF0ZUFuCiAgICAgICAgIC8vIDxtb3Zlcj4gYmFzZSBvdmVyc2NyaXB0IDwvbW92
ZXI+CiAgICAgICAgIGF1dG8gc2NyaXB0ID0gYmFzZS0+bmV4dFNpYmxpbmdCb3goKTsKICAgICAg
ICAgaWYgKCFzY3JpcHQgfHwgaXNQcmVzY3JpcHREZWxpbWl0ZXIoKnNjcmlwdCkgfHwgc2NyaXB0
LT5uZXh0U2libGluZ0JveCgpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZWZlcmVuY2UuZmlyc3RQb3N0U2Ny
aXB0ID0gc2NyaXB0OwogICAgICAgICByZXR1cm4gcmVmZXJlbmNlOwogICAgIH0KQEAgLTExNSwx
MCArMTE1LDEwIEBAIE9wdGlvbmFsPFJlbmRlck1hdGhNTFNjcmlwdHM6OlJlZmVyZW5jZUNoaWxk
cmVuPiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFuCiAgICAgICAgIC8vIDxtdW5kZXJv
dmVyPiBiYXNlIHN1YnNjcmlwdCBzdXBlcnNjcmlwdCA8L211bmRlcm92ZXI+CiAgICAgICAgIGF1
dG8gc3ViU2NyaXB0ID0gYmFzZS0+bmV4dFNpYmxpbmdCb3goKTsKICAgICAgICAgaWYgKCFzdWJT
Y3JpcHQgfHwgaXNQcmVzY3JpcHREZWxpbWl0ZXIoKnN1YlNjcmlwdCkpCi0gICAgICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGF1dG8gc3VwZXJTY3JpcHQgPSBzdWJTY3JpcHQtPm5leHRTaWJsaW5nQm94KCk7CiAgICAgICAg
IGlmICghc3VwZXJTY3JpcHQgfHwgaXNQcmVzY3JpcHREZWxpbWl0ZXIoKnN1cGVyU2NyaXB0KSB8
fCBzdXBlclNjcmlwdC0+bmV4dFNpYmxpbmdCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVmZXJlbmNl
LmZpcnN0UG9zdFNjcmlwdCA9IHN1YlNjcmlwdDsKICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZTsK
ICAgICB9CkBAIC0xNDgsMTkgKzE0OCwxOSBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRz
OjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbgogICAg
ICAgICAgICAgaWYgKGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzY3JpcHQpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBhIDxtcHJlc2NyaXB0cy8+LiBMZXQncyBjaGVjayAyYSkgYW5kIDJj
KS4KICAgICAgICAgICAgICAgICBpZiAoIW51bWJlck9mU2NyaXB0SXNFdmVuIHx8IHJlZmVyZW5j
ZS5maXJzdFByZVNjcmlwdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAg
cmVmZXJlbmNlLmZpcnN0UHJlU2NyaXB0ID0gc2NyaXB0LT5uZXh0U2libGluZ0JveCgpOyAvLyBX
ZSBkbyAxKS4KICAgICAgICAgICAgICAgICByZWZlcmVuY2UucHJlc2NyaXB0RGVsaW1pdGVyID0g
c2NyaXB0OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gPSAhbnVtYmVyT2ZTY3JpcHRJc0V2ZW47CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG51bWJlck9mU2NyaXB0SXNFdmVuID8gT3B0aW9uYWw8UmVm
ZXJlbmNlQ2hpbGRyZW4+KHJlZmVyZW5jZSkgOiBOdWxsb3B0OyAvLyBXZSB2ZXJpZnkgMmIpLgor
ICAgICAgICByZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gPyBzdGQ6Om9wdGlvbmFsPFJlZmVy
ZW5jZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogc3RkOjpudWxsb3B0OyAvLyBXZSB2ZXJpZnkgMmIp
LgogICAgIH0KICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBMYXlvdXRVbml0IFJlbmRl
ck1hdGhNTFNjcmlwdHM6OnNwYWNlQWZ0ZXJTY3JpcHQoKQpAQCAtNDcxLDEzICs0NzEsMTMgQEAg
dm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQpCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogfQogCi1PcHRpb25hbDxp
bnQ+IFJlbmRlck1hdGhNTFNjcmlwdHM6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFuZWVkc0xheW91dCgpKTsKICAgICBhdXRvKiBiYXNlID0gZmly
c3RDaGlsZEJveCgpOwogICAgIGlmICghYmFzZSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGlu
dD4oKTsKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYo
YXNjZW50Rm9yQ2hpbGQoKmJhc2UpICsgYmFzZS0+bG9naWNhbFRvcCgpKSkpOworICAgICAgICBy
ZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50
PihzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2UpICsgYmFzZS0+
bG9naWNhbFRvcCgpKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCmluZGV4IGQ0ODcwYjRkOTRkMzFmNWE4
ZjdmOTJkMzJhNjM1NWI0NzFjM2Y2NDMuLmZmMDRlODZjNWQ4N2NhZGFjZWJkMTY5MjliZjI3ZTM5
ZTIxODkxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC01MiwxNCArNTIsMTQgQEAgY2xhc3MgUmVuZGVyTWF0
aE1MU2NyaXB0cyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiAKIHByaXZhdGU6CiAgICAg
TWF0aE1MU2NyaXB0c0VsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgc3RydWN0IFJlZmVyZW5jZUNo
aWxkcmVuIHsKICAgICAgICAgUmVuZGVyQm94KiBiYXNlOwogICAgICAgICBSZW5kZXJCb3gqIHBy
ZXNjcmlwdERlbGltaXRlcjsKICAgICAgICAgUmVuZGVyQm94KiBmaXJzdFBvc3RTY3JpcHQ7CiAg
ICAgICAgIFJlbmRlckJveCogZmlyc3RQcmVTY3JpcHQ7CiAgICAgfTsKLSAgICBPcHRpb25hbDxS
ZWZlcmVuY2VDaGlsZHJlbj4gdmFsaWRhdGVBbmRHZXRSZWZlcmVuY2VDaGlsZHJlbigpOworICAg
IHN0ZDo6b3B0aW9uYWw8UmVmZXJlbmNlQ2hpbGRyZW4+IHZhbGlkYXRlQW5kR2V0UmVmZXJlbmNl
Q2hpbGRyZW4oKTsKICAgICBMYXlvdXRVbml0IHNwYWNlQWZ0ZXJTY3JpcHQoKTsKICAgICBMYXlv
dXRVbml0IGl0YWxpY0NvcnJlY3Rpb24oY29uc3QgUmVmZXJlbmNlQ2hpbGRyZW4mKTsKICAgICBz
dHJ1Y3QgVmVydGljYWxQYXJhbWV0ZXJzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKaW5kZXggNGMxZmU5ZTY5MGUwYzJj
YjFhODU2YTAwZWNjOWIzNzE2NWYzZjNkZS4uMDcwYWVlN2ZkYjE4M2VkODQ2NjNiMzc1M2I3YThh
Yzk2MGZlYWY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTgyLDExICs4MiwxMSBAQCB2b2lkIFJlbmRlck1h
dGhNTFNwYWNlOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQp
CiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhN
TFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVu
ZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBMYXlvdXRV
bml0IGhlaWdodCwgZGVwdGg7CiAgICAgZ2V0U3BhY2VIZWlnaHRBbmREZXB0aChoZWlnaHQsIGRl
cHRoKTsKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihoZWlnaHQpOworICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPGludD4oaGVpZ2h0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCmluZGV4IDBlYjIwNTZlODdkYWY5
NGJiNDc0MzRjMzIzNWRmZTc3ODdhZTQyMmUuLmZkMTliZTJkNmZjYjA2NGRhOGQ2YTg2YWNhNmYz
OTZlNWU4OTBjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNwYWNlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1M
U3BhY2UgZmluYWwgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogICAgIGJvb2wgaXNDaGls
ZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIGZpbmFsOwotICAgIE9wdGlvbmFs
PGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIExheW91dFVuaXQg
c3BhY2VXaWR0aCgpIGNvbnN0OwogICAgIHZvaWQgZ2V0U3BhY2VIZWlnaHRBbmREZXB0aChMYXlv
dXRVbml0JiBoZWlnaHQsIExheW91dFVuaXQmIGRlcHRoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXgg
YmQxZTk2YmEzZmMxMWYxMTY4NDhkY2QwZDgyZDViMTg5Y2MyZjlkMS4uNDNiZjIwNmZjZWYxZDlh
MmZmNjcyMThmZTQyM2VkMWNkNmZhN2FlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUxNiw3ICs1MTYsNyBA
QCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKCkKIHsKICAg
ICBBU1NFUlQobV9tYXRoVmFyaWFudEdseXBoRGlydHkpOwogCi0gICAgbV9tYXRoVmFyaWFudENv
ZGVQb2ludCA9IE51bGxvcHQ7CisgICAgbV9tYXRoVmFyaWFudENvZGVQb2ludCA9IHN0ZDo6bnVs
bG9wdDsKICAgICBtX21hdGhWYXJpYW50R2x5cGhEaXJ0eSA9IGZhbHNlOwogCiAgICAgLy8gRWFy
bHkgcmV0dXJuIGlmIHRoZSB0b2tlbiBlbGVtZW50IGNvbnRhaW5zIFJlbmRlckVsZW1lbnRzLgpA
QCAtNTUxLDEyICs1NTEsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlRnJvbUVs
ZW1lbnQoKQogICAgIHNldE1hdGhWYXJpYW50R2x5cGhEaXJ0eSgpOwogfQogCi1PcHRpb25hbDxp
bnQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPGludD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QK
IHsKICAgICBpZiAobV9tYXRoVmFyaWFudENvZGVQb2ludCkgewogICAgICAgICBhdXRvIG1hdGhW
YXJpYW50R2x5cGggPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQudmFsdWUoKSwgbV9tYXRoVmFyaWFudElzTWlycm9yZWQp
OwogICAgICAgICBpZiAobWF0aFZhcmlhbnRHbHlwaC5mb250KQotICAgICAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKC1tYXRoVmFyaWFudEdseXBo
LmZvbnQtPmJvdW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpLnkoKSkpKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91
bmRmKC1tYXRoVmFyaWFudEdseXBoLmZvbnQtPmJvdW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5
cGguZ2x5cGgpLnkoKSkpKTsKICAgICB9CiAgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpm
aXJzdExpbmVCYXNlbGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IGMzMzFlYzVmMWQyYjkxOGMwZTYzODgx
MGE4ZjU5OTZhOTQzODIyYjEuLjUxMDFkNmFmMWM1MDNmODIzNzJjY2JkMmU0NTRlZDU1NjYwYzVk
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MVG9rZW4gOiBw
dWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q2hp
bGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYg
Zm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQg
PSAwKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkg
b3ZlcnJpZGU7CiAKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MVG9rZW4gOiBw
dWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogICAgICAgICBtX21hdGhWYXJpYW50R2x5cGhEaXJ0
eSA9IHRydWU7CiAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwog
ICAgIH0KLSAgICBPcHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgTnVs
bG9wdCB9OworICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gbV9tYXRoVmFyaWFudENvZGVQb2lu
dCB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIGJvb2wgbV9tYXRoVmFyaWFudElzTWlycm9yZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9tYXRoVmFyaWFudEdseXBoRGlydHkgeyBmYWxzZSB9OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcAppbmRleCBlZWE0ZjBkODMyMDZmMzQ3YjE3N2Y3M2YwNzI2NThkMDE2NmU2NDAzLi5jY2Rm
MjRmOWM2MWU2MmQ1OWE1YmI4NWI3ZWNhYWI3Y2E5YWU3NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0xNzMsNyAr
MTczLDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICBpZiAoIXBvaW50SXNJbnNpZGVW
aWV3cG9ydENsaXAocG9pbnRJblBhcmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7Cisg
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7
CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMs
IGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCAy
YmYwODZmYzFmMzA3OTgzNTliZDY3NjhhNjM4NGFmMDk5ZDU3M2QwLi4xMDk1ZDI0ZTExMjE5YjYy
MjdjOGMyZDY5ZTE2ZjMxNzRjNWExMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBib29sIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdAogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhp
dFRlc3RGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50
IGxvY2FsUG9pbnQgPSBsb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2Fs
UG9pbnQgPSBsb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAvLyBFYXJseSBleGl0IGlmIGxv
Y2FsIHBvaW50IGlzIG5vdCBjb250YWluZWQgaW4gY2xpcHBlZCB2aWV3cG9ydCBhcmVhCiAgICAg
aWYgKFNWR1JlbmRlclN1cHBvcnQ6OmlzT3ZlcmZsb3dIaWRkZW4oKnRoaXMpICYmICFtX3ZpZXdw
b3J0LmNvbnRhaW5zKGxvY2FsUG9pbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAxZGVkNjUxYzU4YjNiMTc4MmFkMjQwZTYzMmIz
YjhhYTJlNjYxZmFmLi44ZGU1YmY0NWM0NTBjNjZmZWQxYTBkNjNkZTNmZDZhYTMxNTU4OTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApA
QCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgUG9pbnRlckV2
ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX0lNQUdFX0hJ
VFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsKICAgICBib29sIGlz
VmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKTsKICAgICBpZiAoaXNW
aXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewotICAgICAgICBGbG9hdFBvaW50
IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICBGbG9h
dFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKICAgICAg
ICAgICAgIAogICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0Fy
ZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCmluZGV4IGI1Y2JkZTZhOGUxNWQ4YjI5MjFiZmMxYmQ4ZGY5ZjBjYWQ0Y2FhMzYu
LjVkODM1ZmUxNzA2ZDg5MzAwZGVhY2FlNzI1YTFmMTAxMGRkZDhiNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKQEAgLTI2NywxMCArMjY3LDEwIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
OjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluCiAgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0JveC55KCkpOwogICAgICAg
ICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9i
amVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICAgICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICAg
ICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludCk7CiAgICAgfQogCi0gICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQo
KS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICBwb2ludCA9IGNsaXBQYXRoRWxlbWVudCgpLmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50KTsKIAogICAgIGZvciAoTm9kZSogY2hpbGROb2RlID0gY2xpcFBh
dGhFbGVtZW50KCkuZmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxkTm9k
ZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hp
bGROb2RlLT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBhNDkwNDY0Yjc5ZWEyZmQ5
MzA3MDU4NTRmOTVkMzA2ZGQ4YTVhMDZlLi5jZDViZjc1ZjZhMDA1OTg5NDZjYWMzNmRlOGJkMTU4
ODk5Zjg5MzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBHcmFwaGljCiAKICAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFz
dEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICBpZiAocmVzdWx0SW1hZ2UpIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0
ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgICAg
ICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAg
ICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+Zmls
dGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJl
c29sdXRpb24oKS5oZWlnaHQoKSkpOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKCpyZXN1bHRJbWFnZSwgbGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBjNTI2
ZWNmMTUyMjQ1OGYzMGM3YjA0Y2JlZjk0ZGM0NmJjN2RhYmMyLi5iZWY5MDNlOTFmZDhmMDVmN2Zm
NzIyYTc0NDRjZTA0MzBhYjFlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTQzMCw3ICs0MzAsNyBAQCBib29sIFJlbmRlclNWR1Jv
b3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZQogICAgIC8vIE9ubHkgdGVzdCBTVkcgY29udGVudCBpZiB0aGUgcG9pbnQgaXMgaW4g
b3VyIGNvbnRlbnQgYm94LgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBpbnRlcnNl
Y3Rpb24gd2hlbiByZWN0LWJhc2VkIGhpdCB0ZXN0cyBhcmUgc3VwcG9ydGVkIGJ5IG5vZGVBdEZs
b2F0UG9pbnQuCiAgICAgaWYgKGNvbnRlbnRCb3hSZWN0KCkuY29udGFpbnMocG9pbnRJbkJvcmRl
ckJveCkpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRy
YW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChG
bG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50
ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CiAKICAgICAgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IG5vZGVBdEZs
b2F0UG9pbnQoKSBkb2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIGhpdCB0ZXN0cyB5ZXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDE1
ZWFhM2RmYTcyZjRlNjJlZTUzNTc3NjI0ZWFhOTNjMTVkYTdhMmQuLjQzYWI3ZDg5YTdkM2FhYTI0
ZmNmNGQ1NDMzZWU4NmZlMmU2YWYxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgUGF0aCogUmVuZGVy
U1ZHU2hhcGU6Om5vblNjYWxpbmdTdHJva2VQYXRoKGNvbnN0IFBhdGgqIHBhdGgsIGNvbnN0IEFm
ZmluZVRyYW5zZm8KIAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2V0dXBOb25TY2FsaW5nU3Ryb2tl
Q29udGV4dChBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZVRyYW5zZm9ybSwgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciYgc3RhdGVTYXZlcikKIHsKLSAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+
IGludmVyc2UgPSBzdHJva2VUcmFuc2Zvcm0uaW52ZXJzZSgpOworICAgIHN0ZDo6b3B0aW9uYWw8
QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gc3Ryb2tlVHJhbnNmb3JtLmludmVyc2UoKTsKICAg
ICBpZiAoIWludmVyc2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzM4LDcgKzMzOCw3
IEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0
VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IG1fbG9jYWxUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludCA9IG1fbG9jYWxUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9y
dDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQxMCw3ICs0MTAsNyBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHU2hhcGU6OmNh
bGN1bGF0ZVN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3QKICAgICAgICAgQm91bmRpbmdSZWN0U3Ry
b2tlU3R5bGVBcHBsaWVyIHN0cm9rZVN0eWxlKCp0aGlzKTsKICAgICAgICAgaWYgKGhhc05vblNj
YWxpbmdTdHJva2UoKSkgewogICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG5vblNjYWxpbmdU
cmFuc2Zvcm0gPSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBpZiAo
T3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gbm9uU2NhbGluZ1RyYW5zZm9ybS5p
bnZlcnNlKCkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9y
bT4gaW52ZXJzZSA9IG5vblNjYWxpbmdUcmFuc2Zvcm0uaW52ZXJzZSgpKSB7CiAgICAgICAgICAg
ICAgICAgUGF0aCogdXNlUGF0aCA9IG5vblNjYWxpbmdTdHJva2VQYXRoKG1fcGF0aC5nZXQoKSwg
bm9uU2NhbGluZ1RyYW5zZm9ybSk7CiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHN0cm9rZUJv
dW5kaW5nUmVjdCA9IHVzZVBhdGgtPnN0cm9rZUJvdW5kaW5nUmVjdCgmc3Ryb2tlU3R5bGUpOwog
ICAgICAgICAgICAgICAgIHN0cm9rZUJvdW5kaW5nUmVjdCA9IGludmVyc2UudmFsdWUoKS5tYXBS
ZWN0KHN0cm9rZUJvdW5kaW5nUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCA1OTAwYTUxZTM2YjBjZjk4ZDgxNjJmNDg3NzFkYWEy
NDBjYjBiMjdkLi5kM2JiMzBkMDJhMzhjYWUwM2VkMTJhZjk4NDU3NDk1NTg4NWU2OGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQz
Myw3ICs0MzMsNyBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bAogICAgIGlmIChpc1Zpc2libGUg
fHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2Fu
SGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVz
LnJlcXVpcmVTdHJva2UpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYg
KHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNGaWxsKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSkp
IHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9p
bnRJblBhcmVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRv
UGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBw
b3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggODRiN2UzZjZjOWU5Y2Y2ZTI2NTExMzI3
ZTgyMDFiZWJhNGFkM2NmZi4uYjc4Mjk0MGUzNTA2NWYwZjc4N2UxNzIyMzc4MDc1NTFkMjljZTFk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBw
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNl
Y3RSZXBhaW50UmVjdFdpdGhTaGFkb3dzKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmQKICAgICBp
ZiAobG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gcm9vdFRvTG9jYWxUcmFuc2Zvcm0gPSBsb2NhbFRvUm9vdFRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgQWZmaW5l
VHJhbnNmb3JtIHJvb3RUb0xvY2FsVHJhbnNmb3JtID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICByZXBhaW50UmVjdCA9IHJv
b3RUb0xvY2FsVHJhbnNmb3JtLm1hcFJlY3QocmVwYWludFJlY3QpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCA0ZjM1ZWQ5ZWFhMDM5MTM0ZTcwYzhjZTIzMTk1ODVjY2RmOWQ5Njk1Li5jNGIzYWFjNWJmZDFj
ZThjYzU2NjFjOGRiYmJlNGM1MzI0NjdlZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMxOCw3ICszMTgsNyBA
QCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogCiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJl
ZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdl
IHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9j
ZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdl
bGwuCi0gICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0
ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKICAgICBj
b250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0
KTsKICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAppbmRleCAzNTIwYzJhMmNh
MDE1ZjQ3ZmJhMDQwOGUzZTVlOTgzNDM4NzlmODgzLi44NmU0YmYyZjNkNTFlY2ZkYzJmODhhYzA1
NTg0ODI4YjcyZWVhZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0UXVlcnkuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBTVkdUZXh0UXVlcnk6Om1vZGlm
eVN0YXJ0RW5kUG9zaXRpb25zUmVzcGVjdGluZ0xpZ2F0dXJlcyhEYXRhKiBxdWVyeURhdGEsIHUK
ICAgICBib29sIGFsdGVyU3RhcnRQb3NpdGlvbiA9IHRydWU7CiAgICAgYm9vbCBhbHRlckVuZFBv
c2l0aW9uID0gdHJ1ZTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0UG9zaXRpb25PZmZz
ZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdFBvc2l0aW9uT2Zmc2V0OwogICAg
IGZvciAoOyB0ZXh0TWV0cmljc09mZnNldCA8IHRleHRNZXRyaWNzU2l6ZSAmJiBwb3NpdGlvbk9m
ZnNldCA8IHBvc2l0aW9uU2l6ZTsgKyt0ZXh0TWV0cmljc09mZnNldCkgewogICAgICAgICBTVkdU
ZXh0TWV0cmljcyYgbWV0cmljcyA9IHRleHRNZXRyaWNzVmFsdWVzW3RleHRNZXRyaWNzT2Zmc2V0
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDc4
MmE2YWI2NDg0YWEzNDI0YjhmYzhjNWZhYzlhY2ZmNGEyZDE2OTUuLjUxYzY5M2M3YWM4MWMyYTkz
YmFlZDg2MDlhYjY5Njc0Yzg1OTFlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJU
cmVlVXBkYXRlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVu
dDo6UGFyZW50KENvbnRhaW5lck5vZGUmIHJvb3QpCiBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50
OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgU3R5bGU6OkNoYW5nZSBzdHlsZUNoYW5nZSkKICAg
ICA6IGVsZW1lbnQoJmVsZW1lbnQpCiAgICAgLCBzdHlsZUNoYW5nZShzdHlsZUNoYW5nZSkKLSAg
ICAsIHJlbmRlclRyZWVQb3NpdGlvbihlbGVtZW50LnJlbmRlcmVyKCkgPyBtYWtlT3B0aW9uYWwo
UmVuZGVyVHJlZVBvc2l0aW9uKCplbGVtZW50LnJlbmRlcmVyKCkpKSA6IE51bGxvcHQpCisgICAg
LCByZW5kZXJUcmVlUG9zaXRpb24oZWxlbWVudC5yZW5kZXJlcigpID8gc3RkOjptYWtlX29wdGlv
bmFsKFJlbmRlclRyZWVQb3NpdGlvbigqZWxlbWVudC5yZW5kZXJlcigpKSkgOiBzdGQ6Om51bGxv
cHQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oCmluZGV4
IDQ2ODliMDhkNDIwNDZlMmVjNDRlNDkzYjAxOTZlNGUwYjY0ODJhNjMuLjliZjQ3NWJhN2IxNThj
MzZmYTk4MjBkNDYwZjc2YmJmOGEyM2U4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVy
VHJlZVVwZGF0ZXIuaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBSZW5kZXJUcmVlVXBkYXRlciB7
CiAgICAgc3RydWN0IFBhcmVudCB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgeyBudWxscHRy
IH07CiAgICAgICAgIFN0eWxlOjpDaGFuZ2Ugc3R5bGVDaGFuZ2UgeyBTdHlsZTo6Tm9DaGFuZ2Ug
fTsKLSAgICAgICAgT3B0aW9uYWw8UmVuZGVyVHJlZVBvc2l0aW9uPiByZW5kZXJUcmVlUG9zaXRp
b247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyVHJlZVBvc2l0aW9uPiByZW5kZXJUcmVl
UG9zaXRpb247CiAKICAgICAgICAgUGFyZW50KENvbnRhaW5lck5vZGUmIHJvb3QpOwogICAgICAg
ICBQYXJlbnQoRWxlbWVudCYsIFN0eWxlOjpDaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5oCmluZGV4IGNmMTBiNjZhNzA4NTA0Y2ZmZWNmNDFjMjY3ZTRlZjQ3MDJkYTg5ZjQuLjBhNmU3
MGYwZjhiODQyN2EyMzFhYmRlMTIxZWMxYTRkZTEwYzc5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBTY29wZSB7CiAgICAgaW50IG1fcGVu
ZGluZ1N0eWxlU2hlZXRDb3VudCB7IDAgfTsKICAgICBib29sIG1fZGlkVXBkYXRlQWN0aXZlU3R5
bGVTaGVldHMgeyBmYWxzZSB9OwogCi0gICAgT3B0aW9uYWw8VXBkYXRlVHlwZT4gbV9wZW5kaW5n
VXBkYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8VXBkYXRlVHlwZT4gbV9wZW5kaW5nVXBkYXRlOwog
ICAgIGJvb2wgbV9oYXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUgeyBmYWxzZSB9OwogCiAg
ICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGIyY2IzYjMzY2FjMWI3MmI2YWRkMjQyNGMzYWI0YTIw
YWEyMDU2YzcuLmYwNDE1ZmNhMzBmOWNlNGM0MTAyZmE1OGQ3YjM1MmZhZmY4NWVjM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIFNWR0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdgogICAgIGlmIChuYW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAg
ICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjbGVhclRhYkluZGV4RXhw
bGljaXRseUlmTmVlZGVkKCk7Ci0gICAgICAgIGVsc2UgaWYgKE9wdGlvbmFsPGludD4gdGFiSW5k
ZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpvcHRp
b25hbDxpbnQ+IHRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgICAg
ICBzZXRUYWJJbmRleEV4cGxpY2l0bHkodGFiSW5kZXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIGNvbnRleHRF
bGVtZW50LT5zeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCk7CiB9CiAKLU9wdGlvbmFsPEVsZW1l
bnRTdHlsZT4gU1ZHRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQorc3RkOjpvcHRpb25hbDxFbGVtZW50
U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBpcyBpbiBhIDx1c2U+IHRyZWUgd2UgZ2V0IHRoZSBzdHlsZSBmcm9tIHRoZSBkZWZpbml0aW9u
IHRyZWUuCiAgICAgaWYgKGF1dG8qIHN0eWxlRWxlbWVudCA9IHRoaXMtPmNvcnJlc3BvbmRpbmdF
bGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCBjOWJjM2FjOGE1NjZmYmMxYjI5
ZmQ3Y2UwMDEwZWMxZTFkNjk1ODYwLi5jNjY2YTZhYTdhZDYxMDhjMDI5YjYyMWExMjU2ZDZiNTlj
ODZhNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFz
cyBTVkdFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQsIHB1YmxpYyBTVkdMYW5nU3BhY2Ug
ewogICAgIHZvaWQgc3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVBbGxBbmltYXRlZFNW
R0F0dHJpYnV0ZShTVkdFbGVtZW50Kik7CiAgCi0gICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAK
ICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQpOwogICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCAwZWVhYTVmYzQzZmEzNzM0NTc2OGFj
NzZlYmJkMGI3YjRlMGM3N2ExLi5mMDY0M2QzODM2NjdhOTdiNTRkNWQ5MGE4OGFmMzUwNjc2MzA0
MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
CkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgU1ZHVG9PVEZGb250Q29udmVydGVyIHsKIAogICAg
IHVpbnQzMl90IGNhbGN1bGF0ZUNoZWNrc3VtKHNpemVfdCBzdGFydGluZ09mZnNldCwgc2l6ZV90
IGVuZGluZ09mZnNldCkgY29uc3Q7CiAKLSAgICB2b2lkIHByb2Nlc3NHbHlwaEVsZW1lbnQoY29u
c3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0IFNWR0dseXBo
RWxlbWVudCosIGZsb2F0IGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZmxvYXQgZGVmYXVsdFZl
cnRpY2FsQWR2YW5jZSwgY29uc3QgU3RyaW5nJiBjb2RlcG9pbnRzLCBPcHRpb25hbDxGbG9hdFJl
Y3Q+JiBib3VuZGluZ0JveCk7CisgICAgdm9pZCBwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBjb25zdCBTVkdHbHlwaEVsZW1l
bnQqLCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNh
bEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+JiBib3VuZGluZ0JveCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKFNWR1RvT1RGRm9udENvbnZl
cnRlcjo6KkZvbnRBcHBlbmRpbmdGdW5jdGlvbikoKTsKICAgICB2b2lkIGFwcGVuZFRhYmxlKGNv
bnN0IGNoYXIgaWRlbnRpZmllcls0XSwgRm9udEFwcGVuZGluZ0Z1bmN0aW9uKTsKQEAgLTIyMSw3
ICsyMjEsNyBAQCBjbGFzcyBTVkdUb09URkZvbnRDb252ZXJ0ZXIgewogCiAgICAgdm9pZCBhcHBl
bmRWYWxpZENGRlN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAotICAgIFZlY3RvcjxjaGFyPiB0cmFu
c2NvZGVHbHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlz
c2luZ0dseXBoRWxlbWVudCwgT3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpIGNvbnN0
OworICAgIFZlY3RvcjxjaGFyPiB0cmFuc2NvZGVHbHlwaFBhdGhzKGZsb2F0IHdpZHRoLCBjb25z
dCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+JiBib3VuZGluZ0JveCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZENvZGVwb2ludFJh
bmdlcyhjb25zdCBVbmljb2RlUmFuZ2VzJiwgSGFzaFNldDxHbHlwaD4mIGdseXBoU2V0KSBjb25z
dDsKICAgICB2b2lkIGFkZENvZGVwb2ludHMoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBjb2RlcG9p
bnRzLCBIYXNoU2V0PEdseXBoPiYgZ2x5cGhTZXQpIGNvbnN0OwpAQCAtMTE1NSw3ICsxMTU1LDcg
QEAgY2xhc3MgQ0ZGQnVpbGRlciBmaW5hbCA6IHB1YmxpYyBTVkdQYXRoQ29uc3VtZXIgewogICAg
ICAgICBtX2NmZkRhdGEuYXBwZW5kKHJNb3ZlVG8pOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gYm91bmRpbmdCb3goKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBib3VuZGluZ0JveCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9ib3VuZGluZ0Jv
eDsKICAgICB9CkBAIC0xMjQ2LDExICsxMjQ2LDExIEBAIGNsYXNzIENGRkJ1aWxkZXIgZmluYWwg
OiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVyIHsKICAgICBWZWN0b3I8Y2hhcj4mIG1fY2ZmRGF0YTsK
ICAgICBGbG9hdFBvaW50IG1fc3RhcnRpbmdQb2ludDsKICAgICBGbG9hdFBvaW50IG1fY3VycmVu
dDsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fYm91bmRpbmdCb3g7CisgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IG1fYm91bmRpbmdCb3g7CiAgICAgZmxvYXQgbV91bml0c1BlckVtU2Nh
bGFyOwogfTsKIAotVmVjdG9yPGNoYXI+IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2Rl
R2x5cGhQYXRocyhmbG9hdCB3aWR0aCwgY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdH
bHlwaEVsZW1lbnQsIE9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KSBjb25zdAorVmVj
dG9yPGNoYXI+IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyhmbG9h
dCB3aWR0aCwgY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpIGNvbnN0CiB7CiAgICAgVmVjdG9y
PGNoYXI+IHJlc3VsdDsKIApAQCAtMTI4Niw3ICsxMjg2LDcgQEAgVmVjdG9yPGNoYXI+IFNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6dHJhbnNjb2RlR2x5cGhQYXRocyhmbG9hdCB3aWR0aCwgY29uc3Qg
U1ZHRWwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNWR1RvT1RGRm9udENvbnZlcnRl
cjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0ds
eXBoRWxlbWVudCwgY29uc3QgU1ZHR2x5cGhFbGVtZW50KiBnbHlwaEVsZW1lbnQsIGZsb2F0IGRl
ZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZmxvYXQgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgY29u
c3QgU3RyaW5nJiBjb2RlcG9pbnRzLCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCkK
K3ZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBjb25zdCBTVkdHbHlwaEVsZW1l
bnQqIGdseXBoRWxlbWVudCwgZmxvYXQgZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBmbG9hdCBk
ZWZhdWx0VmVydGljYWxBZHZhbmNlLCBjb25zdCBTdHJpbmcmIGNvZGVwb2ludHMsIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpCiB7CiAgICAgYm9vbCBvazsKICAgICBmbG9h
dCBob3Jpem9udGFsQWR2YW5jZSA9IHNjYWxlVW5pdHNQZXJFbShnbHlwaE9yTWlzc2luZ0dseXBo
RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9h
ZHZfeEF0dHIpLnRvRmxvYXQoJm9rKSk7CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIFNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBn
bHlwaE9yTWlzc2luZwogICAgICAgICB2ZXJ0aWNhbEFkdmFuY2UgPSBkZWZhdWx0VmVydGljYWxB
ZHZhbmNlOwogICAgIG1fYWR2YW5jZUhlaWdodE1heCA9IHN0ZDo6bWF4KG1fYWR2YW5jZUhlaWdo
dE1heCwgdmVydGljYWxBZHZhbmNlKTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2x5cGhC
b3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gZ2x5cGhCb3VuZGluZ0Jv
eDsKICAgICBhdXRvIHBhdGggPSB0cmFuc2NvZGVHbHlwaFBhdGhzKGhvcml6b250YWxBZHZhbmNl
LCBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwgZ2x5cGhCb3VuZGluZ0JveCk7CiAgICAgaWYg
KCFwYXRoLnNpemUoKSkgewogICAgICAgICAvLyBJdCdzIGJldHRlciB0byB1c2UgYSBmYWxsYmFj
ayBmb250IHJhdGhlciB0aGFuIHVzZSBhIGZvbnQgd2l0aG91dCBhbGwgaXRzIGdseXBocy4KQEAg
LTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5
cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nCiAgICAgaWYgKGdseXBo
Qm91bmRpbmdCb3gpCiAgICAgICAgIG1fbWluUmlnaHRTaWRlQmVhcmluZyA9IHN0ZDo6bWluKG1f
bWluUmlnaHRTaWRlQmVhcmluZywgaG9yaXpvbnRhbEFkdmFuY2UgLSBnbHlwaEJvdW5kaW5nQm94
LnZhbHVlKCkubWF4WCgpKTsKIAotICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92
ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNl
LCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7Cisg
ICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQs
IGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFs
dWVfb3IoRmxvYXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CiB9CiAKIHZvaWQgU1ZHVG9PVEZGb250
Q29udmVydGVyOjphcHBlbmRMaWdhdHVyZUdseXBocygpCkBAIC0xNDIxLDcgKzE0MjEsNyBAQCBT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcihjb25zdCBTVkdGb250
RWxlbWVudCYgZm9udEVsZW1lbnQpCiAKICAgICBwb3B1bGF0ZUVtcHR5R2x5cGhDaGFyU3RyaW5n
KG1fZW1wdHlHbHlwaENoYXJTdHJpbmcsIHNfb3V0cHV0VW5pdHNQZXJFbSk7CiAKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGJvdW5kaW5nQm94OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBib3VuZGluZ0JveDsKICAgICBpZiAobV9taXNzaW5nR2x5cGhFbGVtZW50KQogICAgICAgICBw
cm9jZXNzR2x5cGhFbGVtZW50KCptX21pc3NpbmdHbHlwaEVsZW1lbnQsIG51bGxwdHIsIGRlZmF1
bHRIb3Jpem9udGFsQWR2YW5jZSwgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgU3RyaW5nKCksIGJv
dW5kaW5nQm94KTsKICAgICBlbHNlIHsKQEAgLTE0MzUsNyArMTQzNSw3IEBAIFNWR1RvT1RGRm9u
dENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBm
b250RWxlbWVudCkKICAgICAgICAgICAgIHByb2Nlc3NHbHlwaEVsZW1lbnQoZ2x5cGhFbGVtZW50
LCAmZ2x5cGhFbGVtZW50LCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNh
bEFkdmFuY2UsIHVuaWNvZGVBdHRyaWJ1dGUsIGJvdW5kaW5nQm94KTsKICAgICB9CiAKLSAgICBt
X2JvdW5kaW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSk7CisgICAgbV9i
b3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlX29yKEZsb2F0UmVjdCgpKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDEwMDAK
ICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMjAwODYyMjM+IENvY29hIGhhcyBhIGJ1ZyB3aGVyZSBn
bHlwaCBib3VuZGluZyBib3hlcyBhcmUgbm90IGNvcnJlY3RseSByZXNwZWN0ZWQgZm9yIGZydXN0
dW0gY3VsbGluZy4gV29yayBhcm91bmQgdGhpcyBieQpAQCAtMTU4NCwxMyArMTU4NCwxMyBAQCBi
b29sIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6Y29udmVydFNWR1RvT1RGRm9udCgpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9u
dChjb25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGNo
YXI+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIFNWR1RvT1RGRm9udENvbnZlcnRlciBjb252ZXJ0ZXIoZWxlbWVudCk7CiAgICAgaWYg
KGNvbnZlcnRlci5lcnJvcigpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWNvbnZlcnRlci5jb252ZXJ0U1ZHVG9PVEZGb250
KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBjb252ZXJ0ZXIucmVsZWFzZVJlc3VsdCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaAppbmRleCBjYzUzZGUzMDA5ZTBlODc1
MTExMWM4MGVhZDg5YWQwNTE4MGFjNjdjLi43NzU2ZTQ1MjliNjdjMGUzYWJlMjc2NDRlNDkwOTVj
OWRiNTgxMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9u
LmgKQEAgLTMyLDYgKzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdGb250
RWxlbWVudDsKIAotT3B0aW9uYWw8VmVjdG9yPGNoYXI+PiBjb252ZXJ0U1ZHVG9PVEZGb250KGNv
bnN0IFNWR0ZvbnRFbGVtZW50Jik7CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVy
dFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTM4YzdmMDM2ZWVh
ZmZkMzNhZDJmYzVkMmUwOTZjM2IyYmQ5MjY4Yy4uMTBmNjhmZTZjYzI0ZWZjNWFlYTA3MzhkMmVh
MGE4MGU4NjI5OGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtODU0
LDE0ICs4NTQsMTQgQEAgYm9vbCBJbnRlcm5hbHM6OmFyZVRpbWVyc1Rocm90dGxlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIGNvbnRleHREb2N1bWVudCgpLT5pc1RpbWVyVGhyb3R0bGluZ0VuYWJsZWQo
KTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJp
ZGUoT3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IHZhbHVlKQordm9pZCBJbnRlcm5h
bHM6OnNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxFdmVu
dFRocm90dGxpbmdCZWhhdmlvcj4gdmFsdWUpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
Y29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2Uo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBkb2N1bWVu
dC0+cGFnZSgpLT5zZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE51bGxvcHQpOwor
ICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5zZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NSwxNSAr
ODc1LDE1IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2CiAgICAgfQogfQogCi1PcHRpb25hbDxJ
bnRlcm5hbHM6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yT3ZlcnJpZGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRlcm5hbHM6OkV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
T3ZlcnJpZGUoKSBjb25zdAogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byBiZWhhdmlvciA9IGRvY3VtZW50LT5wYWdlKCktPmV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3Zl
cnJpZGUoKTsKICAgICBpZiAoIWJlaGF2aW9yKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBzd2l0Y2ggKGJlaGF2aW9yLnZh
bHVlKCkpIHsKICAgICBjYXNlIFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yOjpSZXNw
b25zaXZlOgpAQCAtODkyLDcgKzg5Miw3IEBAIE9wdGlvbmFsPEludGVybmFsczo6RXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3I+IEludGVybmFsczo6ZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPCiAgICAg
ICAgIHJldHVybiBJbnRlcm5hbHM6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yOjpVbnJlc3BvbnNp
dmU7CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogU3RyaW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQmIGVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyNTBmZDA1YWFhZjg4NThk
Zjc1YzEyY2I0NTkyYTYxZDg3ODlmMzE2Li4xMDBlODJjNzMwODkzNjJhZTEwNWFkZjYyMTVhODdl
ZTU1YzZmYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEyMiw4ICsxMjIs
OCBAQCBjbGFzcyBJbnRlcm5hbHMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcm5hbHM+
LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbgogICAgIGJvb2wgYXJlVGltZXJzVGhyb3R0bGVk
KCkgY29uc3Q7CiAKICAgICBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsgUmVzcG9uc2l2
ZSwgVW5yZXNwb25zaXZlIH07Ci0gICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92
ZXJyaWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPik7Ci0gICAgT3B0aW9uYWw8
RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUo
KSBjb25zdDsKKyAgICB2b2lkIHNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3Rk
OjpvcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4pOworICAgIHN0ZDo6b3B0aW9uYWw8
RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IGV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUo
KSBjb25zdDsKIAogICAgIC8vIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgIEV4Y2Vw
dGlvbk9yPHVuc2lnbmVkPiBsYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggMTI4ODRjZmQxMDAyZGU2NjZmMGY1MTZh
MDY4ZTkzYWE0YThmMDk3MS4uMTlkOGQ1NjJiZjI4NGMwMDk3NjEzMWM3ZTliNmEzNTljMDM0NjEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIFdvcmtl
ciBmaW5hbCA6IHB1YmxpYyBBYnN0cmFjdFdvcmtlciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwg
cHJpdmF0ZSBXb3JrCiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2Fk
ZXI7CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBXb3JrZXJHbG9iYWxTY29wZVByb3h5
KiBtX2NvbnRleHRQcm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVy
Zm9ybSB0aHJlYWQgc2h1dGRvd24uCi0gICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzPiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsK
KyAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4g
bV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiAgICAgYm9vbCBtX3Nob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSB7IGZhbHNlIH07CiAgICAgSlND
OjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggNTA5YTlhOWNkNzEwYjQ1YmZjMGNiOWVlOTFhMjJmMTM3Y2Y2OGI3
YS4uMGNhNzM4OWViYTI3ZjljN2I5YWFkZmU3ZDVlNTI0MWJlMTA3NzcyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00NzYsMTAgKzQ3NiwxMCBAQCBFeGNlcHRpb25P
cjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
U3RyaW5nJiB1cmwsCiAgICAgcmV0dXJuIG9wZW4obWV0aG9kLCB1cmxXaXRoQ3JlZGVudGlhbHMs
IGFzeW5jKTsKIH0KIAotT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0
OjpwcmVwYXJlVG9TZW5kKCkKK3N0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0
dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKIHsKLSAgICAvLyBBIHJldHVybiB2YWx1ZSBvdGhl
ciB0aGFuIE51bGxvcHQgbWVhbnMgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc2VuZCwgYW5kIHdlIHNo
b3VsZCByZXR1cm4gdGhhdCB2YWx1ZSB0byB0aGUgY2FsbGVyLgotICAgIC8vIE51bGxvcHQgbWVh
bnMgd2UgYXJlIHJlYWR5IHRvIHNlbmQgYW5kIHNob3VsZCBjb250aW51ZSB3aXRoIHRoZSBzZW5k
IGFsZ29yaXRobS4KKyAgICAvLyBBIHJldHVybiB2YWx1ZSBvdGhlciB0aGFuIHN0ZDo6bnVsbG9w
dCBtZWFucyB3ZSBzaG91bGQgbm90IHRyeSB0byBzZW5kLCBhbmQgd2Ugc2hvdWxkIHJldHVybiB0
aGF0IHZhbHVlIHRvIHRoZSBjYWxsZXIuCisgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGFy
ZSByZWFkeSB0byBzZW5kIGFuZCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgc2VuZCBhbGdvcml0
aG0uCiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbk9yPHZvaWQ+IHsgfTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBPcHRpb25hbDxFeGNl
cHRpb25Pcjx2b2lkPj4gWE1MSHR0cFJlcXVlc3Q6OnByZXBhcmVUb1NlbmQoKQogICAgIH0KIAog
ICAgIG1fZXJyb3IgPSBmYWxzZTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChE
b2N1bWVudCYgZG9jdW1lbnQpCkBAIC05ODAsNyArOTgwLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVz
dDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSkKIAog
ICAgIG1fcmVzcG9uc2VCdWlsZGVyLnNocmlua1RvRml0KCk7CiAKLSAgICBPcHRpb25hbDxTdHJp
bmc+IGRlY29kZWRUZXh0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVkVGV4dDsK
ICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQogICAgICAgICBkZWNvZGVkVGV4dCA9
IG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZyhzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIHRoaXMsIGlkZW50aWZpZXIsIGRlY29kZWRUZXh0LCBtX3VybCwgbV9sYXN0U2Vu
ZFVSTCwgbV9sYXN0U2VuZExpbmVOdW1iZXIsIG1fbGFzdFNlbmRDb2x1bW5OdW1iZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBhZjY1MGZlNzkzZDljOGRiNTgwODU5OTI4
MWJkZjgwMGJlNTNiNzQ5Li4wNGFiYzA5ZGQ3ZjZiYjhiOGE5NWE1MjQxMjdjMTQ2OGNmZGFjMjcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTUzLDcgKzE1Myw3IEBAIGNs
YXNzIFhNTEh0dHBSZXF1ZXN0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVl
c3Q+LCBwdWJsaWMgWE1MSHR0cFJlCiAKICAgICBib29sIHJlc3BvbnNlSXNYTUwoKSBjb25zdDsK
IAotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBwcmVwYXJlVG9TZW5kKCk7CisgICAg
c3RkOjpvcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gcHJlcGFyZVRvU2VuZCgpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNlbmRCeXRlc0RhdGEoY29uc3Qgdm9pZCosIHNpemVfdCk7CiAKICAg
ICB2b2lkIGNoYW5nZVN0YXRlKFN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCmluZGV4IDUwM2ZmNjJjNmY2OTEzY2M5NTA4ZGVk
ODhjMGMwYjYzNTAxMjdiNGEuLmZkZmE2ZThmYzMzYTdiOWJkNjJiYTgwY2MwOTU1N2JmMmFiYmVm
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVj
dGlvbi5tbQpAQCAtOTAsNyArOTAsNyBAQCAtICh2b2lkKWFkZDooRE9NSFRNTE9wdGlvbkVsZW1l
bnQgKilvcHRpb24gaW5kZXg6KHVuc2lnbmVkKWluZGV4CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwogICAgIGlmICghb3B0aW9uKQogICAgICAgICByYWlzZVR5cGVF
cnJvckV4Y2VwdGlvbigpOwotICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5hZGQoY29yZShvcHRp
b24pLCBPcHRpb25hbDxXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OkhUTUxFbGVtZW50
T3JJbnQ+IHsgc3RhdGljX2Nhc3Q8aW50PihpbmRleCkgfSkpOworICAgIHJhaXNlT25ET01FcnJv
cihJTVBMLT5hZGQoY29yZShvcHRpb24pLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6SFRNTEVsZW1lbnRPckludD4geyBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4
KSB9KSk7CiB9CiAKIC0gKHZvaWQpcmVtb3ZlOih1bnNpZ25lZClpbmRleApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCmluZGV4IDM2ZGJiZWM2MjRlZWIwNTRmMDYyYTAyODQxMDAyOWJmMDhl
NDI5ZDkuLmI5YWI4YTBkZGRjYzc2NDdkYTc4NjMzOTg0MjMyN2NhNWM3YTk3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTg4OSw3ICs4ODksNyBAQCBib29sIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IFN0
cmluZyYgc2NyaQogICAgIFN0cm9uZzxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0KHZtLCBm
cmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHBsdWdpbldvcmxkKCkpKTsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAotICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoYWxsb3dQb3B1cHMgPyBPcHRpb25hbDxQcm9jZXNz
aW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IE51bGxvcHQpOwor
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoYWxsb3dQb3B1cHMgPyBz
dGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpIDogc3RkOjpudWxsb3B0KTsKICAgICAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6
ZXZhbHVhdGUoZXhlYywgbWFrZVNvdXJjZShzY3JpcHQpKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggZWVhYWJh
ODI0ODFlNzM5MGQzNjJlOGIzYTE0MmFlNTIyMDMyMjRhYi4uZDllNThlMzM2OTRkNTBjYzFmNjc2
YjA0ZmMxZjk4ZTNlZmE0YmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTY2Niw3ICs2NjYsNyBAQCAtIChCT09MKXNl
bmRFdmVudDoodm9pZCopZXZlbnQgaXNEcmF3UmVjdDooQk9PTClldmVudElzRHJhd1JlY3QKICAg
ICBBU1NFUlQoX2V2ZW50SGFuZGxlcik7CiAgICAgewogICAgICAgICBKU0M6OkpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkpOwotICAg
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXIt
PmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogTnVsbG9wdCk7CisgICAgICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVu
dEV2ZW50SXNVc2VyR2VzdHVyZSgpID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1
cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IGFjY2VwdGVkRXZlbnQgPSBbX3BsdWdpblBhY2thZ2UuZ2V0KCkgcGx1Z2luRnVuY3NdLT5ldmVu
dChwbHVnaW4sIGV2ZW50KTsKICAgICB9CiAgICAgW3NlbGYgZGlkQ2FsbFBsdWdJbkZ1bmN0aW9u
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDM2MmRjNmQzNGM1MmMwOWNkNDUwYjllZTZhZjIwNjljYWFl
ZTQzZGIuLmExMWZiODhiZGJkOTFiYWQ4ZmQ4ZGY5ZmQyOTJmODI1ODhmYzQ1ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
c3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVu
dExvYWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZjBiMzEyZmJkMzBjMWYyNzFi
OTAzZDcwNDM3NzUyYjMwZjUzYjMzZi4uYzQ5ZDUxYjlmODVjMjcxZmUzY2JlNDhjYjI4YWRjMmYw
NjAxY2E0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTY5MCw3ICs2OTAsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJiB0aQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRp
b25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZS5zdHJpbmco
KSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+KQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8
SGFzSW5zZWN1cmVDb250ZW50PikKIHsKICAgICAvLyBUZWxsIHRoZSBjbGllbnQgd2UndmUgY29t
bWl0dGVkIHRoaXMgVVJMLgogICAgIEFTU0VSVChbbV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZy
YW1lVmlldyBkb2N1bWVudFZpZXddICE9IG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5o
CmluZGV4IGNmZmMxMTNhZGViMzc3NDQwYTQ3OGJmMTBmOTlkODBjNzU1OTAwMzAuLjAyMTAwNjRi
NTc0NmFiNWU3ZTg5MmFlZDIwZDJhYWM4YjY2YTFlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllCiAgICAgdm9p
ZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZTsKICAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpTaGlwcGluZ01ldGhvZD4mLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90
YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29t
cGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+Jiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1Rv
dGFsQW5kSXRlbXMpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGlu
ZUl0ZW1zPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKFdlYkNv
cmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIGFib3J0
UGF5bWVudFNlc3Npb24oKSBvdmVycmlkZTsKICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRl
c3Ryb3llZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCmluZGV4IDgw
YjRmN2Y0ZmQyY2U1ZjFiYmMxYWFhZTAzOWFkNmEyZWJhM2Y4MjYuLmViZmQ4MzU0MGYxMjJiZTdl
OWNmZjc5YWY1OGQyN2YwNzJiOWE4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0K
QEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bQogewogfQogCi12b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgT3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikKK3ZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pCiB7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQ6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nTWV0aG9kPiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPikKIHsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQ6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQ6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW0KaW5kZXggMTRmM2Y0NGZmNmYyMjhjNTkyZjAyMDhiOTdmODViOWQzMTNkNDhlOS4uNGY0MjQ4
MzdkZWE4YTlhMmM0ZDU3Y2FmNmM4M2RhYWY4NGU3MmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTg4LDcg
Kzg4LDcgQEAgLSAoTlNTdHJpbmcgKilzdHJpbmdWYWx1ZQogCiAtICh1bnNpZ25lZCBzaG9ydClw
b3J0CiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJp
dmF0ZSktPnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNl
Y3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CiAKIC8vIEZJ
WE1FOiBPdmVycmlkaW5nIGlzRXF1YWw6IHdpdGhvdXQgb3ZlcnJpZGluZyBoYXNoIHdpbGwgY2F1
c2UgdHJvdWJsZSBpZiB0aGlzIGV2ZXIgZ29lcyBpbnRvIGFuIE5TU2V0IG9yIGlzIHRoZSBrZXkg
aW4gYW4gTlNEaWN0aW9uYXJ5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KaW5kZXggODkyMzIwYzExZDg0MWY0YTBiOTFmMzE3ZjNhODM0ZGYwYWMxMTI3Ny4uZDI4OWYx
YTdjNWVkODk3NDNkMDg3MTAzMzRiNzJhOWYxZjA3Y2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xODIsNyArMTgyLDcgQEAgLSAodm9pZClzZXRNZW51
Q29udHJvbGxlcjooV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyKiltZW51Q29udHJvbGxl
cjsKIC0gKHZvaWQpZm9yd2FyZENvbnRleHRNZW51QWN0aW9uOihpZClzZW5kZXI7CiBAZW5kCiAK
LXN0YXRpYyBPcHRpb25hbDxDb250ZXh0TWVudUFjdGlvbj4gdG9BY3Rpb24oTlNJbnRlZ2VyIHRh
ZykKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0lu
dGVnZXIgdGFnKQogewogICAgIGlmICh0YWcgPj0gQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRh
ZyAmJiB0YWcgPD0gQ29udGV4dE1lbnVJdGVtTGFzdEN1c3RvbVRhZykgewogICAgICAgICAvLyBK
dXN0IHBhc3MgdGhlc2UgdGhyb3VnaC4KQEAgLTM1NywxNCArMzU3LDE0IEBAIHN0YXRpYyBPcHRp
b25hbDxDb250ZXh0TWVudUFjdGlvbj4gdG9BY3Rpb24oTlNJbnRlZ2VyIHRhZykKICAgICBjYXNl
IFdlYk1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU6CiAgICAgICAgIHJldHVybiBDb250
ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZTsKICAgICB9Ci0gICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPE5T
SW50ZWdlcj4gdG9UYWcoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8TlNJbnRlZ2VyPiB0b1RhZyhDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCiB7CiAgICAg
c3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uOgot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdzoKICAgICAgICAg
cmV0dXJuIFdlYk1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdzsKQEAgLTU0Nyw3ICs1NDcs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8TlNJbnRlZ2VyPiB0b1RhZyhDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24pCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJldHVy
biBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBXZWJNZW51
VGFyZ2V0KiB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBkYWRkM2I3NDVmN2Y0ZmI3MWY1ZDNhYTZmOWVkMDc4YzliODI2MDI4Li4yMDdhOTYxM2Nj
YThkOWMxMDM3Y2ZiNGQxYjFlNDJhNjg1MTk1Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBl
cmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgVVJMIHJlcXVlc3RVUkwg
PSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAg
ICAgU3RyaW5nIGpzU3RyaW5nID0gc2NyaXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RV
UkwpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0
LT5zaG91bGRBbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3Rh
dGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBOdWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkgPyBz
dGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChqc1N0cmluZy5pc051bGwoKSkgewog
ICAgICAgICAvLyBpZiB0aGlzIGlzIG5vdCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0
cmVhbSBmb3IgaXQuIG90aGVyd2lzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3NDI3ZTBjMmYx
MzhlMzcyYzI0NTFjODZkMzc1NGJkYmI4MjE1YTc5Li4xNTYxODUyNzYzMGUzYjIwOTBmYTMwYzQ4
OTU4NTNmZGYyMzAxOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGkKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJl
Y2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlLnN0cmluZygpKSwgbV93ZWJGcmFtZSk7
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChP
cHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PikK
IHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENP
TVB0cjxJV2ViRnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggZjI3MmU2MGM0NGI5MGJlMTM4N2I3MzRkN2ZiZDIyYTMxNTllYzliMC4uOGNhOWI5
ZGVjZDE5Y2VjOTdlNGJhN2QzZDUxNjg2NGNlMTg5ZWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC04
Niw3ICs4Niw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6CiAgICAgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVJY29uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3Bh
dGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1l
bnRMb2FkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1
cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAK
aW5kZXggNGJhNDU2YThjZWU1YjczY2Y5NGFiYmI3MmYxNGJlNzJkZmNjYWY3Yy4uOTA2Y2JiYTUx
ZGM3NTQ5YmI3M2VkZjI1NzNmMmFmYWUwMjNkYzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIEhSRVNVTFQgV2ViU2VjdXJpdHlP
cmlnaW46OnBvcnQoX091dF8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpyZXN1bHQgPSBtX3NlY3VyaXR5
T3JpZ2luLT5wb3J0KCkudmFsdWVPcigwKTsKKyAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdp
bi0+cG9ydCgpLnZhbHVlX29yKDApOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAppbmRleCAzMTI1
ODg4MzM1NTBlYTFmODI0N2MzN2M5ZmQzOTdlODVhOGMxZDQ0Li45YmZhNGVjNjRjODQ3MGM3ZGJl
YmNlNGZmZTNiZmMwNGM4NTYzYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlc3BvbnNlQ28KICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGlmIChyZXNwb25zZS5pc0h0
dHBWZXJzaW9uMF85KCkpIHsKICAgICAgICAgYXV0byB1cmwgPSByZXNwb25zZS51cmwoKTsKLSAg
ICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKICAgICAgICAgaWYgKHBvcnQg
JiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LnZhbHVlKCksIHVybC5wcm90b2NvbCgp
KSkgewogICAgICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29t
cGxldGVXaXRoRXJyb3IoeyBTdHJpbmcoKSwgMCwgdXJsLCAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAn
IiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQg
aXMgdXNpbmcgSFRUUC8wLjkuIiB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCmluZGV4IDdkMTRjOGMyYWE2MzgzNmE3MDFkZDE0YjJjNzg3M2Q1OGYzMmRl
MDMuLjc2NmJkNTBkY2M4OTkzNDEzNTYyMGZiYmZkNWUxZTlhZWQwNmYzMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtMTM1LDcgKzEzNSw3IEBA
IGNsYXNzIE5ldHdvcmtMb2FkIGZpbmFsIDoKICAgICBjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMgbV9wYXJhbWV0ZXJzOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgUmVmUHRyPE5l
dHdvcmtEYXRhVGFzaz4gbV90YXNrOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQogICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIG1fY2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDRmMzk4MWJhYmM3
YzJjMDNhOGNmMmM3Yjk5NTY0ZTgwZmQ0NWI2OTcuLjZiOTk0NzZlYzg2NjU1ZjlhNGJhZTE1YTU3
OGQ3YjU0NWEyYTU1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBib29s
IGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBwb2xpY3kpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCByZXNwb25z
ZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZXN0YW1wLCBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFsZSkKK3N0YXRpYyBib29sIHJlc3BvbnNl
SGFzRXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lc3RhbXAsIHN0ZDo6b3B0aW9u
YWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3Bv
bnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUNvZGVycy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQ29kZXJzLmgKaW5kZXggM2U5ZTIyOGE0MTMxZTQ3Y2RjNDFiYTk4ODc4NTgzNTAxYzMz
Yjc2MC4uNDE3MWFjZTA5ZDE4NjNkOGUyYzljZDdhNmY5MGFmYzA5NzQwZWQ1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
Q29kZXJzLmgKQEAgLTgwLDggKzgwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmVwLCB0eXBlbmFt
ZSBQZXJpb2Q+IHN0cnVjdCBDb2RlcjxzdGQ6OmNocm9ubzo6ZHVyYXRpb248UmVwLAogICAgIH0K
IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxUPj4gewot
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBPcHRpb25hbDxU
PiYgb3B0aW9uYWwpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29kZXI8c3RkOjpvcHRp
b25hbDxUPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKICAgICB7CiAgICAgICAgIGlmICghb3B0aW9u
YWwpIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CkBAIC05MiwxNCArOTIsMTQgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgICAg
IGVuY29kZXIgPDwgb3B0aW9uYWwudmFsdWUoKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIGJv
b2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKKyAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwgc3RkOjpvcHRpb25hbDxUPiYgb3B0
aW9uYWwpCiAgICAgewogICAgICAgICBib29sIGlzRW5nYWdlZDsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpc0VuZ2FnZWQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKICAgICAgICAgaWYgKCFpc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG9wdGlvbmFsID0gTnVs
bG9wdDsKKyAgICAgICAgICAgIG9wdGlvbmFsID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IDMx
M2Y4ZGE0Y2NiMGU3NDAwZDQ3YTBhYjJlY2QwOWZhYmEwYmQ5MWYuLjMxYWU0OGZlNWFkMmQ5N2Ri
NmIxY2Y2ODQ3YTJlZjg0YzIwZDA3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0xMzcsNyArMTM3
LDcgQEAgc3RhdGljIFNhbHQgbWFrZVNhbHQoKQogICAgIHJldHVybiBzYWx0OwogfQogCi1PcHRp
b25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlv
bmFsPFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBhdXRv
IGNwYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1
dG8gZmQgPSBvcGVuKGNwYXRoLmRhdGEoKSwgT19SRE9OTFksIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCmluZGV4
IDhmNTRmMGViZGZmMTA3YmE1ODBiZDVjMjJiODhhYWRmMzdjY2YzNzguLjcyNDYwOGQ4NzdhYTVh
NTFkNDZiYWJjOTc0NzE4MzBkMmFkMzYxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTE1OSw3ICsxNTks
NyBAQCBEYXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCk7CiAKIHVzaW5nIFNhbHQgPSBzdGQ6
OmFycmF5PHVpbnQ4X3QsIDg+OwogCi1PcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25z
dCBTdHJpbmcmIHBhdGgpOworc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25z
dCBTdHJpbmcmIHBhdGgpOwogU0hBMTo6RGlnZXN0IGNvbXB1dGVTSEExKGNvbnN0IERhdGEmLCBj
b25zdCBTYWx0Jik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAKaW5kZXggZjI2MjI5ZDBlMGE5YTc3YTE3NmFlZjQxMTlkYzRlN2Q4NDg5YjQx
OC4uYTQzNTlmM2IwMTdjNDQxNzMxYWM4OWViODc3ZmVlMmYyYzU3YjE4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpFeHBpcmluZ0VudHJ5IHsKIGNsYXNz
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlByZWxvYWRlZEVudHJ5IDogcHJpdmF0ZSBFeHBpcmlu
Z0VudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQcmVs
b2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBPcHRpb25hbDxSZXNvdXJj
ZVJlcXVlc3Q+JiYgc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCwgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiYgbGlmZXRpbWVSZWFjaGVkSGFuZGxlcikKKyAgICBQcmVsb2FkZWRFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4m
JiBzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBs
aWZldGltZVJlYWNoZWRIYW5kbGVyKQogICAgICAgICA6IEV4cGlyaW5nRW50cnkoV1RGTW92ZShs
aWZldGltZVJlYWNoZWRIYW5kbGVyKSkKICAgICAgICAgLCBtX2VudHJ5KFdURk1vdmUoZW50cnkp
KQogICAgICAgICAsIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdChXVEZNb3ZlKHNwZWN1
bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QpKQpAQCAtMTQ1LDEyICsxNDUsMTIgQEAgY2xhc3MgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnkgOiBwcml2YXRlIEV4cGlyaW5nRW50
cnkgewogICAgICAgICByZXR1cm4gV1RGTW92ZShtX2VudHJ5KTsKICAgICB9CiAKLSAgICBjb25z
dCBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiByZXZhbGlkYXRpb25SZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OyB9CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiByZXZhbGlkYXRpb25SZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OyB9CiAgICAgYm9vbCB3YXNS
ZXZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1
ZXN0OyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtX2VudHJ5Owot
ICAgIE9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1
ZXN0OworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiBtX3NwZWN1bGF0aXZlVmFs
aWRhdGlvblJlcXVlc3Q7CiB9OwogCiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5k
aW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1lTG9hZD4gewpAQCAt
MzgwLDcgKzM4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2Fk
KGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJlCiAgICAgICAgIHBlbmRpbmdG
cmFtZUxvYWQtPnJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKHJlcXVlc3QsIHJlc291cmNlS2V5KTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBP
cHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCkKK3ZvaWQgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxS
ZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCkKIHsKICAgICBBU1NFUlQoZW50
cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaAppbmRleCA0MjU1MjM2ZDk1NGIyZDUy
YzZiZTQ3MzU0ZDkxZmIwZDM3MmNlNjgxLi5kZDYwNmQ1NjQxODIxYjM4NTY2M2EyNmZjNWEyZjY0
OWZjNjhlMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIgewogcHJp
dmF0ZToKICAgICBjbGFzcyBQcmVsb2FkZWRFbnRyeTsKIAotICAgIHZvaWQgYWRkUHJlbG9hZGVk
RW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlv
bmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4mJiByZXZhbGlkYXRpb25SZXF1ZXN0ID0gTnVs
bG9wdCk7CisgICAgdm9pZCBhZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBw
cmVsb2FkRW50cnkoY29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xv
YmFsRnJhbWVJRCYpOwogICAgIHZvaWQgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKGNvbnN0IEtl
eSYsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCByZXZhbGlkYXRlRW50
cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3Qg
R2xvYmFsRnJhbWVJRCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCBlOGRjNjQz
YzdmMjQ1MmJhOWRjNTMzZjUxOGUxZmZiYTk5ODhkNTFiLi4xMGE1MjAzZWZkODE4MGUwYWNhMzRi
ZTU0ZGY1MjU4MmY1OWM5NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApAQCAtMjE2
LDcgKzIxNiw3IEBAIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkTm90VXNpbmdDYWNoZUZvclJlcXVl
c3QodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmIGtlCiAgICAgQVNTRVJUKHJldHJpZXZl
RGVjaXNpb24gIT0gUmV0cmlldmVEZWNpc2lvbjo6WWVzKTsKIAogICAgIGF1dG8gaGFzaCA9IGtl
eS5oYXNoQXNTdHJpbmcoKTsKLSAgICBxdWVyeVdhc0V2ZXJSZXF1ZXN0ZWQoaGFzaCwgTmVlZFVu
Y2FjaGVkUmVhc29uOjpObywgW3RoaXMsIGhhc2gsIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgp
LCB3ZWJQYWdlSUQsIHJldHJpZXZlRGVjaXNpb25dKGJvb2wgd2FzRXZlclJlcXVlc3RlZCwgY29u
c3QgT3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4mKSB7CisgICAgcXVlcnlXYXNFdmVyUmVxdWVzdGVk
KGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbjo6Tm8sIFt0aGlzLCBoYXNoLCByZXF1ZXN0VVJMID0g
cmVxdWVzdC51cmwoKSwgd2ViUGFnZUlELCByZXRyaWV2ZURlY2lzaW9uXShib29sIHdhc0V2ZXJS
ZXF1ZXN0ZWQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4mKSB7CiAgICAgICAg
IGlmICh3YXNFdmVyUmVxdWVzdGVkKSB7CiAgICAgICAgICAgICBTdHJpbmcgZGlhZ25vc3RpY0tl
eSA9IHJldHJpZXZlRGVjaXNpb25Ub0RpYWdub3N0aWNLZXkocmV0cmlldmVEZWNpc2lvbik7CiAg
ICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQg
JSIgUFJJdTY0ICI6ICVzIHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCBidXQgd2UgYXJlIG5vdCB1
c2luZyB0aGUgY2FjaGUsIHJlYXNvbjogJXMiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5n
KCkuYXNjaWkoKS5kYXRhKCksIGRpYWdub3N0aWNLZXkudXRmOCgpLmRhdGEoKSk7CkBAIC0yNTYs
NyArMjU2LDcgQEAgc3RhdGljIFN0cmluZyBzdG9yZURlY2lzaW9uVG9EaWFnbm9zdGljS2V5KFN0
b3JlRGVjaXNpb24gc3RvcmVEZWNpc2lvbikKIHZvaWQgU3RhdGlzdGljczo6cmVjb3JkUmV0cmll
dmFsRmFpbHVyZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgYXV0byBoYXNoID0ga2V5Lmhh
c2hBc1N0cmluZygpOwotICAgIHF1ZXJ5V2FzRXZlclJlcXVlc3RlZChoYXNoLCBOZWVkVW5jYWNo
ZWRSZWFzb246OlllcywgW3RoaXMsIGhhc2gsIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpLCB3
ZWJQYWdlSURdKGJvb2wgd2FzUHJldmlvdXNseVJlcXVlc3RlZCwgY29uc3QgT3B0aW9uYWw8U3Rv
cmVEZWNpc2lvbj4mIHN0b3JlRGVjaXNpb24pIHsKKyAgICBxdWVyeVdhc0V2ZXJSZXF1ZXN0ZWQo
aGFzaCwgTmVlZFVuY2FjaGVkUmVhc29uOjpZZXMsIFt0aGlzLCBoYXNoLCByZXF1ZXN0VVJMID0g
cmVxdWVzdC51cmwoKSwgd2ViUGFnZUlEXShib29sIHdhc1ByZXZpb3VzbHlSZXF1ZXN0ZWQsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4mIHN0b3JlRGVjaXNpb24pIHsKICAgICAg
ICAgaWYgKHdhc1ByZXZpb3VzbHlSZXF1ZXN0ZWQpIHsKICAgICAgICAgICAgIFN0cmluZyBkaWFn
bm9zdGljS2V5ID0gc3RvcmVEZWNpc2lvblRvRGlhZ25vc3RpY0tleShzdG9yZURlY2lzaW9uLnZh
bHVlKCkpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykg
d2ViUGFnZUlEICUiIFBSSXU2NCAiOiAlcyB3YXMgcHJldmlvdXNseSByZXF1ZXN0IGJ1dCBpcyBu
b3QgaW4gdGhlIGNhY2hlLCByZWFzb246ICVzIiwgd2ViUGFnZUlELCByZXF1ZXN0VVJMLnN0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpLCBkaWFnbm9zdGljS2V5LnV0ZjgoKS5kYXRhKCkpOwpAQCAtMzUx
LDcgKzM1MSw3IEBAIHZvaWQgU3RhdGlzdGljczo6cXVlcnlXYXNFdmVyUmVxdWVzdGVkKGNvbnN0
IFN0cmluZyYgaGFzaCwgTmVlZFVuY2FjaGVkUmVhc29uIG5lCiAgICAgLy8gUXVlcnkgcGVuZGlu
ZyB3cml0ZXMgZmlyc3QuCiAgICAgYm9vbCB3YXNBbHJlYWR5UmVxdWVzdGVkID0gbV9oYXNoZXNU
b0FkZC5jb250YWlucyhoYXNoKTsKICAgICBpZiAod2FzQWxyZWFkeVJlcXVlc3RlZCAmJiBuZWVk
VW5jYWNoZWRSZWFzb24gPT0gTmVlZFVuY2FjaGVkUmVhc29uOjpObykgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih0cnVlLCBOdWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobmVl
ZFVuY2FjaGVkUmVhc29uID09IE5lZWRVbmNhY2hlZFJlYXNvbjo6WWVzICYmIG1fc3RvcmVEZWNp
c2lvbnNUb0FkZC5jb250YWlucyhoYXNoKSkgewpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgU3Rh
dGlzdGljczo6cXVlcnlXYXNFdmVyUmVxdWVzdGVkKGNvbnN0IFN0cmluZyYgaGFzaCwgTmVlZFVu
Y2FjaGVkUmVhc29uIG5lCiAgICAgbV9hY3RpdmVRdWVyaWVzLmFkZChXVEZNb3ZlKGV2ZXJSZXF1
ZXN0ZWRRdWVyeSkpOwogICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3Ro
aXMsIHdhc0FscmVhZHlSZXF1ZXN0ZWQsICZxdWVyeV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFdl
YkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9u
Q291bnRlcjsKLSAgICAgICAgT3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4gc3RvcmVEZWNpc2lvbjsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTdG9yZURlY2lzaW9uPiBzdG9yZURlY2lzaW9uOwogICAg
ICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkgewogICAgICAgICAgICAgaWYgKCF3YXNBbHJl
YWR5UmVxdWVzdGVkKSB7CiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudChtX2RhdGFiYXNlLCBBU0NJSUxpdGVyYWwoIlNFTEVDVCBoYXNoIEZST00gQWxy
ZWFkeVJlcXVlc3RlZCBXSEVSRSBoYXNoPT8iKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmgKaW5k
ZXggY2MyOWZhZTdjZmI5ZmUwNjQ4N2UwYjYyYjE2NjViNGM1MDVjZWZhYS4uYjY3YzI2MGUxOTRk
ZTgzMGViZTMxYmM4OTIzZGQ3MDgwNzM0MWU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaApA
QCAtNjYsNyArNjYsNyBAQCBjbGFzcyBTdGF0aXN0aWNzIHsKICAgICB2b2lkIGFkZFN0b3JlRGVj
aXNpb25zVG9EYXRhYmFzZShjb25zdCBIYXNoTWFwPFN0cmluZywgTmV0d29ya0NhY2hlOjpTdG9y
ZURlY2lzaW9uPiYpOwogICAgIHZvaWQgd3JpdGVUaW1lckZpcmVkKCk7CiAKLSAgICB0eXBlZGVm
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCB3YXNFdmVyUmVxdWVzdGVkLCBjb25zdCBPcHRpb25h
bDxTdG9yZURlY2lzaW9uPiYpPiBSZXF1ZXN0ZWRDb21wbGV0aW9uSGFuZGxlcjsKKyAgICB0eXBl
ZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCB3YXNFdmVyUmVxdWVzdGVkLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFN0b3JlRGVjaXNpb24+Jik+IFJlcXVlc3RlZENvbXBsZXRpb25IYW5kbGVyOwog
ICAgIGVudW0gY2xhc3MgTmVlZFVuY2FjaGVkUmVhc29uIHsgTm8sIFllcyB9OwogICAgIHZvaWQg
cXVlcnlXYXNFdmVyUmVxdWVzdGVkKGNvbnN0IFN0cmluZyYsIE5lZWRVbmNhY2hlZFJlYXNvbiwg
UmVxdWVzdGVkQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBtYXJrQXNSZXF1ZXN0ZWQo
Y29uc3QgU3RyaW5nJiBoYXNoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggMDVhM2QxYzYx
ZjYzMGM2MWE0NWU0NzQyOGFlYmNlOGEyZjIzMmU2Yy4uYjA2YjFjZjg2YTg1ZDQ0MWRhYzE3Yzgz
NTUwM2Y1ZjAzY2RlYzFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTQ4MCw3ICs0ODAs
NyBAQCBzdGF0aWMgRGF0YSBlbmNvZGVSZWNvcmRNZXRhRGF0YShjb25zdCBSZWNvcmRNZXRhRGF0
YSYgbWV0YURhdGEpCiAgICAgcmV0dXJuIERhdGEoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5i
dWZmZXJTaXplKCkpOwogfQogCi1PcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gU3RvcmFnZTo6
c3RvcmVCb2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJiB3cml0ZU9wZXJhdGlvbikKK3N0ZDo6b3B0
aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IFN0b3JhZ2U6OnN0b3JlQm9keUFzQmxvYihXcml0ZU9w
ZXJhdGlvbiYgd3JpdGVPcGVyYXRpb24pCiB7CiAgICAgYXV0byBibG9iUGF0aCA9IGJsb2JQYXRo
Rm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkpOwogCkBAIC01MDUsNyArNTA1LDcgQEAg
T3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IFN0b3JhZ2U6OnN0b3JlQm9keUFzQmxvYihXcml0
ZU9wZXJhdGlvbiYgd3JpdGVPcGVyYXQKICAgICByZXR1cm4gYmxvYjsKIH0KIAotRGF0YSBTdG9y
YWdlOjplbmNvZGVSZWNvcmQoY29uc3QgUmVjb3JkJiByZWNvcmQsIE9wdGlvbmFsPEJsb2JTdG9y
YWdlOjpCbG9iPiBibG9iKQorRGF0YSBTdG9yYWdlOjplbmNvZGVSZWNvcmQoY29uc3QgUmVjb3Jk
JiByZWNvcmQsIHN0ZDo6b3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IGJsb2IpCiB7CiAgICAg
QVNTRVJUKCFibG9iIHx8IGJ5dGVzRXF1YWwoYmxvYi52YWx1ZSgpLmRhdGEsIHJlY29yZC5ib2R5
KSk7CiAKQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVy
YXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogICAgICAg
ICArK3dyaXRlT3BlcmF0aW9uLmFjdGl2ZUNvdW50OwogCiAgICAgICAgIGJvb2wgc2hvdWxkU3Rv
cmVBc0Jsb2IgPSBzaG91bGRTdG9yZUJvZHlBc0Jsb2Iod3JpdGVPcGVyYXRpb24ucmVjb3JkLmJv
ZHkpOwotICAgICAgICBhdXRvIGJsb2IgPSBzaG91bGRTdG9yZUFzQmxvYiA/IHN0b3JlQm9keUFz
QmxvYih3cml0ZU9wZXJhdGlvbikgOiBOdWxsb3B0OworICAgICAgICBhdXRvIGJsb2IgPSBzaG91
bGRTdG9yZUFzQmxvYiA/IHN0b3JlQm9keUFzQmxvYih3cml0ZU9wZXJhdGlvbikgOiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgYXV0byByZWNvcmREYXRhID0gZW5jb2RlUmVjb3JkKHdyaXRlT3Bl
cmF0aW9uLnJlY29yZCwgYmxvYik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAppbmRleCBlYzJmYjE0NDgx
YjEwNjJkMmU2MTY2YmFkNDg3NTA4M2ZiMWQ2MWI4Li4yZTljMjUxODdlN2E1NDBjMzAzNDllM2Vj
Y2IyYzEzODRhYmFjMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC0xMjQsOCArMTI0LDggQEAg
Y2xhc3MgU3RvcmFnZSB7CiAgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMo
KTsKICAgICB2b2lkIGZpbmlzaFdyaXRlT3BlcmF0aW9uKFdyaXRlT3BlcmF0aW9uJik7CiAKLSAg
ICBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gc3RvcmVCb2R5QXNCbG9iKFdyaXRlT3BlcmF0
aW9uJik7Ci0gICAgRGF0YSBlbmNvZGVSZWNvcmQoY29uc3QgUmVjb3JkJiwgT3B0aW9uYWw8Qmxv
YlN0b3JhZ2U6OkJsb2I+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBz
dG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mKTsKKyAgICBEYXRhIGVuY29kZVJlY29yZChj
b25zdCBSZWNvcmQmLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPik7CiAgICAgdm9p
ZCByZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mLCBjb25zdCBEYXRhJik7CiAKICAgICB2b2lkIHVw
ZGF0ZUZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDA1NjhhY2VhOWY0Nzk3
MTQ1YjAwZDlkYjU3NmMzYzE4Yzc3NTNlMWMuLmY2ZDg4YjdjZGJiN2RlNmZhNmEyZGNiNTRhZjg2
ZmEzY2E3OTc2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCkBAIC02OSw4ICs2OSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1
bWVudENvZGVyPE9wdGlvblNldDxUPj4gewogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6T3B0aW9uYWw8VD4+IHsKLSAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV1RGOjpPcHRpb25hbDxUPiYgb3B0
aW9uYWwpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6Om9w
dGlvbmFsPFQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8VD4mIG9wdGlvbmFsKQogICAgIHsKICAgICAgICAgaWYgKCFvcHRp
b25hbCkgewogICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKQEAgLTgxLDE0ICs4MSwxNCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6Ok9wdGlvbmFs
PFQ+PiB7CiAgICAgICAgIGVuY29kZXIgPDwgb3B0aW9uYWwudmFsdWUoKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV1RGOjpPcHRpb25hbDxUPiYg
b3B0aW9uYWwpCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIHN0ZDo6
b3B0aW9uYWw8VD4mIG9wdGlvbmFsKQogICAgIHsKICAgICAgICAgYm9vbCBpc0VuZ2FnZWQ7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgICAgICBpZiAoIWlzRW5nYWdlZCkgewotICAgICAgICAgICAgb3B0aW9u
YWwgPSBOdWxsb3B0OworICAgICAgICAgICAgb3B0aW9uYWwgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uaAppbmRleCA1MDNjZjVmM2JiMjI2MjYxYzIyNDBkZWM4MmQ2ZTA3ZWFh
ZGZlMWUyLi5mMDEyYTAxYjU0ZGU3ZDFmY2UyMTc5N2U2ZjQ1NTA1MGM4M2U2ODg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBj
bGFzcyBDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvbm5lY3Rpb24+
IHsKICAgICB2b2lkIHBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUo
KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0g
eyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRXaXRoUmVwbHkoVCYmIG1l
c3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlE
aXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5
cGVuYW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hlciwgRnVuY3Rpb248
dm9pZCAoc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OlJlcGx5
Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwg
T3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkodWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2FpdEZvck9w
dGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOwogCkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBD
b25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRp
b25TZXQ8U2VuZE9wdGlvbj4KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgQ29ubmVj
dGlvbjo6c2VuZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
RnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQgKE9wdGlv
bmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6UmVwbHk+OjpUeXBlPik+JiYgcmVw
bHlIYW5kbGVyKQordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hl
ciwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVu
YW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBy
ZXF1ZXN0SUQgPSAwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyID0gY3Jl
YXRlU3luY01lc3NhZ2VFbmNvZGVyKFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3Rp
bmF0aW9uSUQsIHJlcXVlc3RJRCk7CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBDb25uZWN0aW9u
OjpzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5j
dGlvbkRpc3AKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlcGx5SGFuZGxl
cihOdWxsb3B0KTsKKyAgICAgICAgcmVwbHlIYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggMGNjNjJkZDFm
YjRjZGVhOTNkNWEwMjE1OTUzMjQ1NjlkMDkzNzRjYS4uN2RmOGUyZmZjZGFmNTJhY2M0N2Q2NWIw
NTY2ZjBmZDMwZmIxMjk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
QEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTaGFyZWRNZW1vcnk+IHsKICAgICBQcm90ZWN0aW9uIG1fcHJvdGVjdGlvbjsKIAogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIE9wdGlvbmFsPGludD4gbV9maWxlRGVzY3JpcHRv
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9maWxlRGVzY3JpcHRvcjsKICAgICBib29sIG1f
aXNXcmFwcGluZ01hcCB7IGZhbHNlIH07CiAjZWxpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0
X3QgbV9wb3J0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFy
ZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVt
b3J5VW5peC5jcHAKaW5kZXggMjdiMjViN2U1YjNjN2QxNzQ5ODYxNDQ2ZjBlMDk2OTgyMjM1Mzg0
YS4uOWQ5MTE3OTI1OWQ1ZTI1MGU4NTFkYTk2NzlkZmExZjJlYmYzMDJmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC0xNjQs
NyArMTY0LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjptYXAoY29uc3Qg
SGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rpb24gcHJvdGVjdGkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBpbnN0YW5jZSA9IHdyYXBNYXAoZGF0YSwg
aGFuZGxlLm1fYXR0YWNobWVudC5zaXplKCksIC0xKTsKLSAgICBpbnN0YW5jZS0+bV9maWxlRGVz
Y3JpcHRvciA9IE51bGxvcHQ7CisgICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0b3IgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgaW5zdGFuY2UtPm1faXNXcmFwcGluZ01hcCA9IGZhbHNlOwogICAgIHJl
dHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKaW5kZXggMDU5ZWM4NWMyMjJiOWM5ZTM4NWJlMjZhN2JlMTRhMTcxZTY1NzUzMC4uYWY5NDQ3
YjEwNjljNjQzNmE1MDFiZjhkNmE0OTMzMzZhZGVlZGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdDIvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI5MCw3ICsyOTAsNyBAQCBkZWYgY2xhc3NfdGVt
cGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpbmcpOgogCiAgICAgY2xhc3NfdGVtcGxhdGVfdHlw
ZXMgPSB7CiAgICAgICAgICdIYXNoTWFwJzogeydoZWFkZXJzJzogWyc8d3RmL0hhc2hNYXAuaD4n
XSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKLSAg
ICAgICAgJ09wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvbmFsLmg+J10sICdhcmd1
bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdz
dGQ6Om9wdGlvbmFsJzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvbmFsLmg+J10sICdhcmd1bWVu
dF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdPcHRp
b25TZXQnOiB7J2hlYWRlcnMnOiBbJzx3dGYvT3B0aW9uU2V0Lmg+J10sICdhcmd1bWVudF9jb2Rl
cl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdWZWN0b3InOiB7
J2hlYWRlcnMnOiBbJzx3dGYvVmVjdG9yLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzog
WyciQXJndW1lbnRDb2RlcnMuaCInXX0sCiAgICAgICAgICdzdGQ6OnBhaXInOiB7J2hlYWRlcnMn
OiBbJzx1dGlsaXR5PiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29k
ZXJzLmgiJ119LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZWN1
cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdp
bi5oCmluZGV4IDdiYzNjNmY2YmE3MWVhYTNlNzA5MGYyNWUxMzE2MTlmOTdjOWVkMjMuLjg5MTdj
NjcwNDkwNGQzN2Y4NGI4MzE1YjkzMzk5ZGYyZGU3NGQ0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3Mg
U2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpTZWN1cml0eU9yaWdpbj4KICAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzdHJpbmcpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIHByb3RvY29s
LCBjb25zdCBXVEY6OlN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCisgICAg
c3RhdGljIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBw
cm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+
IHBvcnQpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUocHJvdG9jb2wsIGhvc3QsIHBvcnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlLm1tCmluZGV4IGIwZGE0YjYxZjM3ZGFmOWUxY2RmYzUwMzYwMTZiNjRjODYwZTgzMTkuLjJi
NmEzMWRjNGQwOWJjYjgyNjFmNTFjMjFlZDU2N2UxM2U5NDgxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlLm1tCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBNZXRob2RJbmZvIHsKICAgICAgICAgQ1N0
cmluZyByZXBseVNpZ25hdHVyZTsKICAgICAgICAgVmVjdG9yPEhhc2hTZXQ8Q2xhc3M+PiBhbGxv
d2VkUmVwbHlDbGFzc2VzOwogICAgIH07Ci0gICAgT3B0aW9uYWw8UmVwbHlJbmZvPiByZXBseUlu
Zm87CisgICAgc3RkOjpvcHRpb25hbDxSZXBseUluZm8+IHJlcGx5SW5mbzsKIH07CiAKIEBpbXBs
ZW1lbnRhdGlvbiBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IDJmZGUzM2U1
NDU3YmI2YjM0ODRiY2I4NWJjNGRjY2E0ZTQ2NzUwODcuLmQxMTYwNzQwYzczYzVhNDkxZWNkMmQz
MjdmMzFiNWE1MWYxM2UzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgV0tTdHJpbmdSZWYg
V0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmln
aW4pCiAKIHVuc2lnbmVkIHNob3J0IFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KFdLU2VjdXJpdHlP
cmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzZWN1cml0eU9y
aWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHRv
SW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlX29yKDAp
OwogfQogCiAvLyBGb3IgYmFja3dhcmRzIEFCSSBjb21wYXRpYmlsaXR5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IGRlZTc2OGI3Yzc2ZWJjZGM2MTMwZTllOTNiZGY5NDNj
NDI4ZjQ5YjguLjBmZjdiYmEwMTExYjZjNDM4NThkNDg1YTNlYWFhNWEwOTc3Mjk4NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTY2LDggKzY2LDggQEAgc3RydWN0IEhU
VFBCb2R5IHsKICAgICAgICAgLy8gRmlsZS4KICAgICAgICAgU3RyaW5nIGZpbGVQYXRoOwogICAg
ICAgICBpbnQ2NF90IGZpbGVTdGFydDsKLSAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gZmlsZUxl
bmd0aDsKLSAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGZpbGVMZW5ndGg7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogCiAg
ICAgICAgIC8vIEJsb2IuCiAgICAgICAgIFN0cmluZyBibG9iVVJMU3RyaW5nOwpAQCAtOTAsNyAr
OTAsNyBAQCBzdHJ1Y3QgRnJhbWVTdGF0ZSB7CiAgICAgU3RyaW5nIHRhcmdldDsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGRvY3VtZW50U3RhdGU7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBzdGF0ZU9iamVjdERhdGE7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHN0
YXRlT2JqZWN0RGF0YTsKIAogICAgIGludDY0X3QgZG9jdW1lbnRTZXF1ZW5jZU51bWJlcjsKICAg
ICBpbnQ2NF90IGl0ZW1TZXF1ZW5jZU51bWJlcjsKQEAgLTk4LDcgKzk4LDcgQEAgc3RydWN0IEZy
YW1lU3RhdGUgewogICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uOwogICAgIGZs
b2F0IHBhZ2VTY2FsZUZhY3RvcjsKIAotICAgIE9wdGlvbmFsPEhUVFBCb2R5PiBodHRwQm9keTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEhUVFBCb2R5PiBodHRwQm9keTsKIAogICAgIC8vIEZJWE1FOiBU
aGVzZSBzaG91bGQgbm90IGJlIHBlciBmcmFtZS4KICNpZiBQTEFURk9STShJT1MpCkBAIC0xMzks
NyArMTM5LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlzdFN0YXRlIHsKICAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQmFja0ZvcndhcmRMaXN0U3RhdGUmKTsKIAogICAgIFZl
Y3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1zOwotICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBjdXJyZW50SW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY3VycmVudElu
ZGV4OwogfTsKIAogc3RydWN0IFNlc3Npb25TdGF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3ZmEwMjdlMDc3ODhlN2Yw
MmI5OTE4OGU4YWY1M2M4NmU3NzczNTI5Li40MGI0MjA1NzM5NTUwNjVjOTk4ZjU1YmZkYzM4YjVh
OGFiMGYyMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKQEAgLTEwOSw5ICsxMDksOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyB7CiAgICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNj
cm9sbFBpbm5pbmdCZWhhdmlvcjsKIAotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBXVEY6
Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4sIGJ1dCB3ZSB3b3VsZCBu
ZWVkIHRvCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiwgYnV0IHdlIHdvdWxkIG5lZWQgdG8KICAgICAvLyBj
b3JyZWN0bHkgaGFuZGxlIGVudW1zIGluc2lkZSBPcHRpb25hbHMgd2hlbiBlbmNvZGluZyBhbmQg
ZGVjb2RpbmcuIAotICAgIFdURjo6T3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhck92ZXJsYXlT
dHlsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7
CiAKICAgICBib29sIGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCBkN2JkMzI3OTY4YzhmN2Y3
M2I4MTc0ZDc2YjMxMzY4MjY1OTRkODE1Li43MGRjOTA5ZWNmY2Y3NzcxNDRmZmQ0Y2RlOGI2NDcx
YjVmZjNhNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmpl
Y3RHcmFwaC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFw
aC5tbQpAQCAtMTEzLDcgKzExMyw3IEBAIGVudW0gY2xhc3MgT2JqQ1R5cGUgewogI2VuZGlmCiB9
OwogCi1zdGF0aWMgT3B0aW9uYWw8T2JqQ1R5cGU+IHR5cGVGcm9tT2JqZWN0KGlkIG9iamVjdCkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE9iakNUeXBlPiB0eXBlRnJvbU9iamVjdChpZCBvYmplY3Qp
CiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8T2JqQ1R5cGU+IHR5cGVGcm9tT2JqZWN0KGlkIG9iamVjdCkKICAgICAgICAgcmV0dXJu
IE9iakNUeXBlOjpXS1R5cGVSZWZXcmFwcGVyOwogI2VuZGlmCiAKLSAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE9iakNPYmplY3RHcmFwaDo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgaWQgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAppbmRleCA0MzcwMGQxYTNiZmM0NDRiZjkwMTBjYThh
YzUxMDFlNmU3NTM4MmRiLi44NTQzM2JkNTk4NmMxMzZhOGJlY2M5ODFiZmQ3MGQ4NGVlNDdkNDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcApAQCAtNzEsOSAr
NzEsOSBAQCBzdGF0aWMgV29ya1F1ZXVlJiB3b3JrUXVldWUoKQogICAgIHJldHVybiAqd29ya1F1
ZXVlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0
ZW1SZXF1ZXN0KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9u
YXJ5UmVmIHF1ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0ZW1SZXF1ZXN0
KFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZSByZXF1ZXN0VHlwZSwgQ0ZEaWN0aW9uYXJ5UmVmIHF1
ZXJ5LCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlc1RvTWF0Y2ggPSAwKQogewotICAgIE9wdGlv
bmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlOworICAgIHN0ZDo6b3B0aW9uYWw8U2Vj
SXRlbVJlc3BvbnNlRGF0YT4gcmVzcG9uc2U7CiAKICAgICBhdXRvIHNlbWFwaG9yZSA9IGFkb3B0
T1NPYmplY3QoZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0ZSgwKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5jcHAKaW5kZXggMWViNzZkMTIyNzMzYmM0ZmFkZWNkM2QzMTFlYjE5N2Q2ZTJkZDU2NC4uYjMy
MmU0MzE5OWZhOTAxZjEwMGI3NGEzMGJkYmIxM2UzYjlhZTIzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5jcHAKQEAgLTEwMSw5ICsxMDEsOSBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUgogCiAgICAg
ICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
T3JpZ2luS2V5KCkpLT5zdHJpbmcoKSwgb3JpZ2luKTsKICAgICAgICAgICAgIGlmIChvcmlnaW5E
ZXRhaWxzLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0lt
cGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5zdHJpbmco
KSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNyZWF0aW9uVGltZS52YWx1ZU9y
KDApKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQSTo6RG91Ymxl
OjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVfb3IoMCkpKTsKICAgICAg
ICAgICAgIGlmIChvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUpCi0gICAgICAgICAgICAg
ICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlm
aWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRl
dGFpbHMubW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICAgICAgZGV0
YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlv
blRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMu
bW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcigwKSkpOwogCiAgICAgICAgICAgICByZXN1bHQudW5j
aGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUoZGV0YWlsc01hcCkp
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGM1NTQzYTIwYjcxZThjOTc2ZTIxMjJiOWI0
YmVhNDhiMzc1MWZjNzAuLmI3MTEyY2VlMTdiZGNjMjY5YmM5ZjllMjcxZDI0MDJkYTIxNjY4MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0
eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2Vj
dXJpdHlPcmlnaW4ubW0KQEAgLTU4LDcgKzU4LDcgQEAgLSAoTlNTdHJpbmcgKilob3N0CiAKIC0g
KE5TSW50ZWdlcilwb3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlP
cmlnaW4oKS5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5z
ZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdL
T2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDk5NDU4NGJhMjlhNDI2ZjJlMjMyN2Fj
MzNlMzNiNWJkOTFlYTJhMmEuLjllOTBhYmE3OTZhOTZlNzhhNmJjMTQ5NTMzMDEzNWFhZDY0NDY5
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC0yMzUsMTEgKzIzNSwxMSBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IHsKICAg
ICB1aW50NjRfdCBfZmlyc3RQYWludEFmdGVyQ29tbWl0TG9hZFRyYW5zYWN0aW9uSUQ7CiAgICAg
RHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSBfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZTsKICAg
ICBDQVRyYW5zZm9ybTNEIF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1BZGp1c3RtZW50czsKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9u
SUQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9y
bVRyYW5zYWN0aW9uSUQ7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gX3Jlc2l6ZUFuaW1hdGlvblZp
ZXc7CiAgICAgQ0dGbG9hdCBfbGFzdEFkanVzdG1lbnRGb3JTY3JvbGxlcjsKLSAgICBPcHRpb25h
bDxDR1JlY3Q+IF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3Q7Ci0gICAgT3B0aW9uYWw8Q0dSZWN0
PiBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q0dSZWN0
PiBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q0dSZWN0PiBf
ZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0OwogCiAgICAgQk9PTCBfbmVlZHNUb1Jlc3RvcmVT
Y3JvbGxQb3NpdGlvbjsKICAgICBCT09MIF9jb21taXREaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb247
CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCAtICh2b2lkKV9kaWRDb21taXRMYXllclRyZWU6KGNvbnN0
IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZQogCiAgICAgaWYg
KF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlICE9IER5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU6
Ok5vdFJlc2l6aW5nKSB7CiAgICAgICAgIGlmIChfcmVzaXplQW5pbWF0aW9uVHJhbnNmb3JtVHJh
bnNhY3Rpb25JRCAmJiBsYXllclRyZWVUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkgPj0gX3Jl
c2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9uSUQudmFsdWUoKSkgewotICAgICAgICAg
ICAgX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9uSUQgPSBOdWxsb3B0OworICAg
ICAgICAgICAgX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9uSUQgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICBbX3Jlc2l6ZUFuaW1hdGlvblZpZXcgbGF5ZXJdLnN1YmxheWVy
VHJhbnNmb3JtID0gX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybUFkanVzdG1lbnRzOwogICAgICAg
ICAgICAgaWYgKF9keW5hbWljVmlld3BvcnRVcGRhdGVNb2RlID09IER5bmFtaWNWaWV3cG9ydFVw
ZGF0ZU1vZGU6OlJlc2l6aW5nV2l0aERvY3VtZW50SGlkZGVuKSB7CiAgICAgICAgICAgICAgICAg
W19jb250ZW50VmlldyBzZXRIaWRkZW46Tk9dOwpAQCAtMjMwMSw4ICsyMzAxLDggQEAgLSAodm9p
ZClfbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbgogCiAtICh2b2lkKV9uYXZpZ2F0aW9uR2VzdHVy
ZURpZEVuZAogewotICAgIF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QgPSBOdWxsb3B0OwotICAg
IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3QgPSBOdWxsb3B0OworICAgIF9mcm96ZW5WaXNp
YmxlQ29udGVudFJlY3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgX2Zyb3plblVub2JzY3VyZWRDb250
ZW50UmVjdCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmluZGV4IGY4NjBmODhhN2Q4YTdjNzdmYWMyZjQz
MjU2ZWIxNzg1ZjIxZTI4ZDQuLmZkZGQ2YTUzYTFlYjQ0YWIwZjM2OTEwODljNTAyZWVmNjYwNDNj
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApAQCAtNDAsNyArNDAsNyBAQCBp
bmxpbmUgV0tXZWJzaXRlRGF0YVJlY29yZCAqd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhUmVjb3Jk
JiB3ZWJzaXRlRGF0YVJlY29yZCkKICAgICByZXR1cm4gKFdLV2Vic2l0ZURhdGFSZWNvcmQgKil3
ZWJzaXRlRGF0YVJlY29yZC53cmFwcGVyKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0cmluZyAqd2Vic2l0ZURhdGFU
eXBlKQorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJz
aXRlRGF0YVR5cGUoTlNTdHJpbmcgKndlYnNpdGVEYXRhVHlwZSkKIHsKICAgICBpZiAoW3dlYnNp
dGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6V0tXZWJzaXRlRGF0YVR5cGVDb29raWVzXSkKICAg
ICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q29va2llczsKQEAgLTcxLDcgKzcxLDcgQEAg
c3RhdGljIGlubGluZSBPcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBl
KE5TU3RyaW5nICp3ZWJzaXRlRGF0YVQKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBpc0VxdWFs
VG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljc10pCiAgICAg
ICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OldlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0
YXRpc3RpY3M7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4g
dG9XZWJzaXRlRGF0YVR5cGVzKE5TU2V0ICp3ZWJzaXRlRGF0YVR5cGVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCBjYWYwZDcyM2YwNjU5Njll
MGMwOGM0NmUwMmMyNGE2ZTQ3YzExOWQ4Li5kMjc3MDA1OTYxZDI5YWVkNjc1MDkzNjk0YjIzZTRl
ODI1NWUxMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcApAQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWQgRXdrVmlldzo6c2V0Q3Vyc29yKGNvbnN0IEN1
cnNvciYgY3Vyc29yKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIAotICAgICAgICBP
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCA9IGN1cnNvckltYWdlLT5ob3RTcG90KCk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QgPSBjdXJzb3JJbWFnZS0+aG90U3Bv
dCgpOwogICAgICAgICBFY29yZV9YX0N1cnNvciBjdXN0b21DdXJzb3IgPSBjcmVhdGVDdXN0b21D
dXJzb3Iod2luZG93LCBjdXJzb3JJbWFnZSwgSW50U2l6ZShjdXJzb3JJbWFnZS0+c2l6ZSgpKSwg
aG90U3BvdCA/IGhvdFNwb3QudmFsdWUoKSA6IEludFBvaW50KCkpOwogICAgICAgICBpZiAoIWN1
c3RvbUN1cnNvcikKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBhNjMzOThhNjdmZjU2ODYzYjBlY2VhYjMxZjU0ZTRi
MmI4ZGNmNzk4Li4yZmVmMWIwYmM1ZjZkZTVlMTY4NGI3ODdhMTg3ZTlhN2M3OGFjZmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0xMzI5LDcgKzEz
MjksNyBAQCAtIChDR0Zsb2F0KV90b3RhbEhlaWdodE9mQmFubmVycwogICAgIHJldHVybiBfZGF0
YS0+X2ltcGwtPnRvdGFsSGVpZ2h0T2ZCYW5uZXJzKCk7CiB9CiAKLXN0YXRpYyBXVEY6Ok9wdGlv
bmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUo
X1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHNjcm9sbGJhclN0eWxlKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiB0b0NvcmVTY3JvbGxiYXJTdHls
ZShfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgc2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAgc3dpdGNo
IChzY3JvbGxiYXJTdHlsZSkgewogICAgIGNhc2UgX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlRGFy
azoKQEAgLTEzNDMsMTAgKzEzNDMsMTAgQEAgc3RhdGljIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiB0b0NvcmVTY3JvbGxiYXJTdHlsZShfV0tPdmUKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAotc3RhdGljIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSB0b0FQSVNjcm9s
bGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBj
b3JlU2Nyb2xsYmFyU3R5bGUpCitzdGF0aWMgX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHRvQVBJ
U2Nyb2xsYmFyU3R5bGUoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5
bGU+IGNvcmVTY3JvbGxiYXJTdHlsZSkKIHsKICAgICBpZiAoIWNvcmVTY3JvbGxiYXJTdHlsZSkK
ICAgICAgICAgcmV0dXJuIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZUF1dG9tYXRpYzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDRmZTk0NWYyN2I4MWIyNmZmMjdhOTY2Nzg4
YWQ5YjkyNzdiNTJiZjguLjkyYTE5ZjhlM2UwYmZjODMwOTY5MTUxMTUzY2MyNTY2NzhlZjY3MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9u
KGNvbnN0IFdlYkNvcmU6OlBheW1lCiAgICAgbV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSA9IE1l
cmNoYW50VmFsaWRhdGlvblN0YXRlOjpWYWxpZGF0aW9uQ29tcGxldGU7CiB9CiAKLXZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
dWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykKK3ZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
dWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQogewog
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBh
bHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7
CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
PiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Ojpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBu
ZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCiB7CiAgICAg
Ly8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBwYXltZW50IGhhcyBiZWVuIGNhbmNlbGVkIGFscmVh
ZHkuCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OklkbGUpCkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24odWludDMyX3Qgb3BhcXUKICAgICBtX3N0YXRlID0gU3RhdGU6OkFjdGl2ZTsKIH0K
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9k
U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFu
ZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90
YWxBbmRMaW5lSXRlbXMpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBwYXltZW50
IGhhcyBiZWVuIGNhbmNlbGVkIGFscmVhZHkuCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Oklk
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGExYjhkZGNlZjM5MTZhZDM0ZWE0
ZjI0MDVhYzExYTk3YjU3ODU2NDQuLmMyNmY3Y2VlZTFkNDJkNzllNjdjNjhhZjI5YjQ2NTU2Mjkw
ODE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC04MCw5ICs4MCw5IEBAIGNs
YXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIHVpbnQ2NF90IHJlcXVlc3RJRCk7
CiAgICAgdm9pZCBzaG93UGF5bWVudFVJKGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0JiwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsK
LSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVl
U3RhdHVzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+Jik7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1
aW50MzJfdCBvcGFxdWVTdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKLSAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7CisgICAgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7CisgICAg
dm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0
dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+
JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOwogICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lv
bih1aW50MzJfdCBvcGFxdWVTdGF0dXMpOwogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigp
OwogCkBAIC05OCw5ICs5OCw5IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW5QYXlt
ZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZG9tYWluTmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIp
OwogICAgIHZvaWQgcGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3Jp
Z2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Jiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4g
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFs
aWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAgdm9p
ZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBu
ZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpU
b3RhbEFuZExpbmVJdGVtcz4mKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
Jik7CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdl
YkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4mKTsKKyAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0
ZW1zPiYpOwogICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uKFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKTsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQ
YWdlUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggODVlYWI0YzY0ZWNlY2NkMDk3NWFlODQ0NzhlZjk0OTIzZmM0YWFlMC4uODY0OTgxNmJk
OGIxYjE2MjcxM2M2YWY1MDUxN2Y3NzUxY2E3ZDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzIsOSArMzIsOSBAQCBtZXNzYWdlcyAtPiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSB7CiAKICAgICBTaG93UGF5bWVudFVJKFN0cmluZyBv
cmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0KQog
ICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNl
c3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbik7Ci0gICAgQ29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKLSAgICBDb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIFZlY3Rv
cjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+IG5ld1NoaXBwaW5nTWV0
aG9kcywgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
PiBuZXdUb3RhbEFuZEl0ZW1zKQotICAgIENvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihP
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1Rv
dGFsQW5kSXRlbXMpCisgICAgQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbih1aW50MzJf
dCBvcGFxdWVTdGF0dXMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQorICAgIENvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgVmVjdG9yPFdlYkNvcmU6OlBh
eW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gbmV3U2hpcHBpbmdNZXRob2RzLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90
YWxBbmRJdGVtcykKKyAgICBDb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFs
QW5kSXRlbXMpCiAgICAgQ29tcGxldGVQYXltZW50U2Vzc2lvbih1aW50MzJfdCBvcGFxdWVTdGF0
dXMpCiAgICAgQWJvcnRQYXltZW50U2Vzc2lvbigpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IDU3OWFmYWZhOGIyNjZkNTcyZmRkNmU4
NDE2ZmJhZjJjMzMyOTFkZjAuLmU2NGVkYzM2NGJjNDQyOGM0NTA3NGJiZGU0MzFhYTRjMWEzMzRl
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
CkBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RlY2ltYWxOdW1iZXI+IHRv
RGVjaW1hbE51bWJlcihpbnQ2NF90IHZhbHVlKQogCiBzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVu
dFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCiB7Ci0gICAgcmV0dXJuIFtnZXRQS1BheW1l
bnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwg
YW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFsdWVPcigwKSkuZ2V0KCkg
dHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07CisgICAgcmV0
dXJuIFtnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6
bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQudmFs
dWVfb3IoMCkpLmdldCgpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0u
dHlwZSldOwogfQogCiBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxpdHkgdG9QS01lcmNoYW50Q2Fw
YWJpbGl0aWVzKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxp
dGllcyYgbWVyY2hhbnRDYXBhYmlsaXRpZXMpCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlv
bihjb25zdCBXZWJDb3IKICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3Nlc3Npb25CbG9jayA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5k
TGluZUl0ZW1zKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzIHN0YXR1cywgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykKIHsKICAgICBBU1NF
UlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKICAgICBBU1NFUlQobV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwpAQCAtNDkwLDcgKzQ5
MCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRp
b24gPSBudWxscHRyOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzIHN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxBbmRM
aW5lSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzIHN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlw
cGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJ
dGVtcykKIHsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
KTsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yCiAgICAgbV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlw
cGluZ0NvbnRhY3RDb21wbGV0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYg
bmV3VG90YWxBbmRMaW5lSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5k
TGluZUl0ZW1zKQogewogICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIpOwogICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggODIzMjMxNGI0Y2MxZGIyNzI1
OTdiOWViY2Y4N2U3N2EyM2UxNjNiYi4uNjQ4ZTIwZWM0ZWJjYzRiZmNmYzg0NDc0MmU0NDEwNmM2
YmZjN2EyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yTmFt
ZUFuZERldGFpbHNTZXBhcmF0b3IgPSAiOyI7CiAKIC8vIE1ha2Ugc3VyZSB0aGUgcHJlZGVmaW5l
ZCBlcnJvciBuYW1lIGlzIHZhbGlkLCBvdGhlcndpc2UgdXNlIEludGVybmFsRXJyb3IuCi0jZGVm
aW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJpbmcpLnZhbHVl
T3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5h
bEVycm9yKQorI2RlZmluZSBWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9y
U3RyaW5nKS52YWx1ZV9vcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1l
c3NhZ2U6OkludGVybmFsRXJyb3IpCiAKIC8vIElmIHRoZSBlcnJvciBuYW1lIGlzIGluY29ycmVj
dCBmb3IgdGhlc2UgbWFjcm9zLCBpdCB3aWxsIGJlIGEgY29tcGlsZS10aW1lIGVycm9yLgogI2Rl
ZmluZSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShlcnJvck5hbWUpIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OmVycm9yTmFtZSkKQEAg
LTE3NCwxNCArMTc0LDE0IEBAIFN0cmluZyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aGFuZGxlRm9y
V2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAgICAgcmV0dXJuIGhh
bmRsZTsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3ZWJG
cmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYgaGFuZGxlKQorc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lSURGb3JIYW5kbGUoY29uc3QgU3Ry
aW5nJiBoYW5kbGUpCiB7CiAgICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgYXV0byBpdGVyID0gbV9oYW5kbGVXZWJGcmFtZU1hcC5maW5kKGhhbmRsZSk7
CiAgICAgaWYgKGl0ZXIgPT0gbV9oYW5kbGVXZWJGcmFtZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
aXRlci0+dmFsdWU7CiB9CkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJy
b3IKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdp
bmRvd05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJh
bWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUg
OiBlbXB0eVN0cmluZygpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0g
d2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVI
YW5kbGUgOiBlbXB0eVN0cmluZygpKTsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCkBAIC00ODQsNyArNDg0LDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
SW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXIKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxl
ID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShvcHRpb25hbEZyYW1l
SGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0cmluZygpKTsKICAgICBpZiAo
IWZyYW1lSUQpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91
bmQpOwogCkBAIC01MjcsNyArNTI3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVz
b2x2ZUNoaWxkRnJhbWVIYW5kbGUoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3IKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZv
dW5kKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhh
bmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBlbXB0eVN0
cmluZygpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJ
REZvckhhbmRsZShvcHRpb25hbEZyYW1lSGFuZGxlID8gKm9wdGlvbmFsRnJhbWVIYW5kbGUgOiBl
bXB0eVN0cmluZygpKTsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6
RXJyb3JTdHJpbmcmIGVycm8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVE
RUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUoZnJhbWVIYW5kbGUp
OwogICAgIGlmICghZnJhbWVJRCkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
RnJhbWVOb3RGb3VuZCk7CiAKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJv
clN0cgogICAgIGlmICghcGFnZSkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1Io
V2luZG93Tm90Rm91bmQpOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQgPSB3ZWJG
cmFtZUlERm9ySGFuZGxlKGZyYW1lSGFuZGxlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CiAgICAgaWYgKCFm
cmFtZUlEKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5k
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNmE4ZDA1MGRlMmVhMDNhYTgzNmNiMjY2Y2Zl
MDQxYWYxNDQxMTMzZi4uNjAyNGFhNDliYjMwNjA4NzczMzkyYjYwOGUxOGEzMDEzYTAwYzE4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xMzQsNyArMTM0LDcgQEAgY2xhc3MgV2ViQXV0b21h
dGlvblNlc3Npb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpBdXQKICAgICBTdHJpbmcgaGFuZGxlRm9yV2ViUGFnZVByb3h5KGNvbnN0IFdlYlBhZ2VQ
cm94eSYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93
c2luZ0NvbnRleHQ+IGJ1aWxkQnJvd3NpbmdDb250ZXh0Rm9yUGFnZShXZWJQYWdlUHJveHkmKTsK
IAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHdlYkZyYW1lSURGb3JIYW5kbGUoY29u
c3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lSUQodWludDY0X3QgZnJh
bWVJRCk7CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYkZyYW1lUHJveHkoY29uc3QgV2ViRnJhbWVQ
cm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
CmluZGV4IGY3NzQ0Y2ZhYWNiNzJmZGUzYzdmODZlMjk4MGE0YTZiZGYzYzNmYjYuLmI4MDY5Nzgz
MGVkZDQ3MzE1MjhmZGQ0MTE5NzJjNjFlMGZiZjE1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0yMzAsOCArMjMwLDggQEAgY2xhc3MgV2Vi
Vmlld0ltcGwgewogICAgIE5TQ29sb3IgKnVuZGVybGF5Q29sb3IoKSBjb25zdDsKICAgICBOU0Nv
bG9yICpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0
T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSk7Ci0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpT
Y3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0OworICAg
IHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSk7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNv
bnN0OwogCiAgICAgdm9pZCBiZWdpbkRlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXMoKTsKICAg
ICAvLyBGSVhNRTogTWVyZ2UgdGhlc2UgdHdvPwpAQCAtNjg2LDcgKzY4Niw3IEBAIGNsYXNzIFdl
YlZpZXdJbXBsIHsKICAgICBTdHJpbmcgbV9wcm9taXNlZEZpbGVuYW1lOwogICAgIFN0cmluZyBt
X3Byb21pc2VkVVJMOwogCi0gICAgV1RGOjpPcHRpb25hbDxOU0ludGVnZXI+IG1fc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWc7CisgICAgc3RkOjpvcHRpb25hbDxOU0ludGVnZXI+IG1fc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWc7CiAKICAgICBDR0Zsb2F0IG1fdG90YWxIZWlnaHRPZkJhbm5lcnMgeyAw
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpp
bmRleCAxZTBlMDc2MmI2ZGVkNWVkODhhNjI0NDg0ODQ4MGEyMGU1YmY2Mjg0Li5iMDA3ZTUwNWEx
YzcxZjZlNTcxNDE4NTcwOGQ2OTNkZjdjM2Y5YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xNjM1LDcgKzE2MzUsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp1cGRhdGVWaWV3RXhwb3NlZFJlY3QoKQogICAgICAgICBleHBvc2VkUmVjdCA9
IENHUmVjdFVuaW9uKG1fY29udGVudFByZXBhcmF0aW9uUmVjdCwgZXhwb3NlZFJlY3QpOwogCiAg
ICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3BhZ2UtPmRyYXdpbmdBcmVhKCkpCi0gICAgICAg
IGRyYXdpbmdBcmVhLT5zZXRWaWV3RXhwb3NlZFJlY3QobV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KGV4cG9zZWRSZWN0KSA6IE51bGxvcHQpOworICAg
ICAgICBkcmF3aW5nQXJlYS0+c2V0Vmlld0V4cG9zZWRSZWN0KG1fY2xpcHNUb1Zpc2libGVSZWN0
ID8gc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KGV4cG9zZWRSZWN0KSA6IHN0ZDo6
bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldENsaXBzVG9WaXNpYmxlUmVjdChi
b29sIGNsaXBzVG9WaXNpYmxlUmVjdCkKQEAgLTIwODQsMTIgKzIwODQsMTIgQEAgTlNDb2xvciAq
V2ViVmlld0ltcGw6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAgcmV0
dXJuIFdlYkNvcmU6Om5zQ29sb3IoY29sb3IpOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRP
dmVybGF5U2Nyb2xsYmFyU3R5bGUoV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVy
bGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0T3ZlcmxheVNj
cm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PiBzY3JvbGxiYXJTdHlsZSkKIHsKICAgICBtX3BhZ2UtPnNldE92ZXJsYXlTY3JvbGxiYXJTdHls
ZShzY3JvbGxiYXJTdHlsZSk7CiB9CiAKLVdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFy
T3ZlcmxheVN0eWxlPiBXZWJWaWV3SW1wbDo6b3ZlcmxheVNjcm9sbGJhclN0eWxlKCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBXZWJWaWV3SW1w
bDo6b3ZlcmxheVNjcm9sbGJhclN0eWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLT5v
dmVybGF5U2Nyb2xsYmFyU3R5bGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCA2OWU4YzViMzIyMzIyZGIwMzcxYmJjYjFmMzY0MGZl
NGM5NmQ4NTY1Li5iNDVmMjI3OWU3MmJlZWUwYWU3MzNjNmUxMGFiMTQxOTJlMDFmMmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCkBAIC03NSw3
ICs3NSw3IEBAIE1hY2hTZW5kUmlnaHQgRHJhd2luZ0FyZWFQcm94eTo6Y3JlYXRlRmVuY2UoKQog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi12b2lkIERyYXdpbmdBcmVhUHJveHk6OnNldFZp
ZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVj
dCkKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgaWYgKCFtX3dl
YlBhZ2VQcm94eS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGQ2OTlmNjM5ODZmODc1NzAwOGZhODNj
ZjQ0ZDEwMDk2NzIxNDYwYzAuLmE1ZDRlYjI0MWJlODdkZGU4ZDA4NTgxMTFmOWMyYjgxODgwZGU3
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAt
ODIsOCArODIsOCBAQCBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZpcnR1
YWwgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3
RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KICAgICB2b2lkIHZpZXdFeHBvc2VkUmVjdENoYW5n
ZWRUaW1lckZpcmVkKCk7CiAjZW5kaWYKIApAQCAtMTM2LDggKzEzNiw4IEBAIGNsYXNzIERyYXdp
bmdBcmVhUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFJ1bkxvb3A6OlRpbWVyPERyYXdpbmdBcmVhUHJveHk+IG1fdmlld0V4cG9z
ZWRSZWN0Q2hhbmdlZFRpbWVyOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92
aWV3RXhwb3NlZFJlY3Q7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX2xhc3RT
ZW50Vmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiBtX3ZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gbV9sYXN0U2VudFZpZXdFeHBvc2VkUmVjdDsKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAj
ZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCBlOGFjZDk3MTQ0NzI0YzhiMWI1YzI2YmFmZjM2ZGE5ZmFhNDk4OThiLi43YWY4NTQyMTczZDVi
ZWM2NGQ2NzU0ZDAwZTI0Yzg0OWQ0Njg0ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbi5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb246OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpCiAg
ICAgbV9zZXJ2ZXItPmRpZENsb3NlV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbih0aGlzKTsKIH0K
IAotdm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFt
RGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBjaGFyKiBkYXRhLCBPcHRpb25hbDxzaXpl
X3Q+IGxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVNv
Y2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciogZGF0YSwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkKIHsKICAgICAvLyBFYWNoIGRpZFJlY2VpdmVEYXRh
IGNhbGwgYWRkcyBtb3JlIGRhdGEgdG8gb3VyIGJ1ZmZlci4KICAgICAvLyBXZSBjbGVhciB0aGUg
YnVmZmVyIHdoZW4gd2UgaGF2ZSBoYW5kbGVkIGRhdGEgZnJvbSBpdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJT
b2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggYTJkNDExOTM1MGZmOTg2ZjE1N2UwMjljYmJk
YWQ0ZjU3ZGZhOTBiYi4uMWVhZDUwMWE5ODcwN2U2NTU1YzQyMTUzMDQ5ZjdhMmY2OGM1NmYzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJT
b2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY5LDcgKzY5LDcg
QEAgY2xhc3MgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQKICAgICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQgaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkQ2xvc2VTb2NrZXRT
dHJlYW0oV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25z
dCBjaGFyKiBkYXRhLCBPcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBj
b25zdCBjaGFyKiBkYXRhLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsU29ja2V0
U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUVycm9yJikgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuY3BwCmluZGV4IDM1NmM3OGE5YzEzNzA5NjdhNTUwZWRlMGJiNDBkYmE3MjMyYTkz
YTcuLjM4M2RmNTg5NDZhN2ZkN2MxOGM1ZjBhZjJmZmJlMDVlYjE1NTZlOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZv
aWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y3VycmVudFNuYXBQb2ludEluZGlj
ZXNEaWRDaGFuZ2UoV2ViQ29yZTo6CiB9CiAKIC8vIFRoaXMgY29tZXMgZnJvbSB0aGUgc2Nyb2xs
aW5nIHRyZWUuCi12b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNjcm9sbGlu
Z1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxlZE5vZGVJRCwgY29uc3Qg
RmxvYXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPEZsb2F0UG9pbnQ+
JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5OjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xs
ZWROb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQogewogICAgIC8v
IFNjcm9sbCB1cGRhdGVzIGZvciB0aGUgbWFpbiBmcmFtZSBhcmUgc2VudCB2aWEgV2ViUGFnZVBy
b3h5Ojp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKCkKICAgICAvLyBzbyBkb24ndCBzZW5kIHRo
ZW0gaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggOWJm
YjQzOTg4NmYyNmRlNTcwYjhiNGQ4MWYxZDliOGRhZDM0MWVmMy4uZTg3YmIyYzJlODRjODQ5YjA1
ZmUxM2JmMDk5NmVjMGUzNWU3ZGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSB7CiAgICAgYm9vbCB2aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGluZ1RyZWUgJiYgbV9zY3JvbGxpbmdUcmVlLT52aXN1YWxWaWV3cG9ydEVuYWJs
ZWQoKTsgfQogCiAgICAgLy8gSW5mb3JtIHRoZSB3ZWIgcHJvY2VzcyB0aGF0IHRoZSBzY3JvbGwg
cG9zaXRpb24gY2hhbmdlZCAoY2FsbGVkIGZyb20gdGhlIHNjcm9sbGluZyB0cmVlKQotICAgIHZv
aWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBXZWJDb3JlOjpT
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKKyAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2Rl
RGlkU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBXZWJDb3JlOjpTY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uKTsKICAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlUmVxdWVzdHNTY3JvbGwo
V2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3Jv
bGxQb3NpdGlvbiwgYm9vbCByZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKTsKIAogICAgIFdl
YkNvcmU6OlRyYWNraW5nVHlwZSBldmVudFRyYWNraW5nVHlwZUZvclBvaW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lLCBXZWJDb3JlOjpJbnRQb2ludCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdU
cmVlLmNwcAppbmRleCA5ZTQ4ZWM2ZjVjYjA5Y2YwZmE3MjUxMDI5MzMzOWVkODEyMWY1OWE0Li5l
MTE1NTI5MTA2NDcwMWI4OGI3YjMyYWJjZDFmMmU2NTQzM2UyODllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJl
ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWU6OnNjcm9s
bGluZ1RyZWVOb2RlRGlkRW5kU2Nyb2xsKCkKIAogI2VuZGlmCiAKLXZvaWQgUmVtb3RlU2Nyb2xs
aW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPEZsb2F0
UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlv
biBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQordm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVl
OjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25z
dCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBv
aW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24g
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKIHsKICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwobm9kZUlELCBzY3JvbGxQb3NpdGlv
biwgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVT
Y3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90
ZVNjcm9sbGluZ1RyZWUuaAppbmRleCA2YzBjMjU4NjAzMzE3Yzk0NDdhZGJmZmI2Y2M5NjkzYThh
NTNhZWYxLi5kNjViMmY1ZWQ2ZGRmNTdlYzQ0MGRmNDkwZDJlMTE2OGM4ZWMwNWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1Ry
ZWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9s
bGluZ1RyZWUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBSZW1vdGVTY3JvbGxpbmdUcmVlIDog
cHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUgewogCiAgICAgY29uc3QgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSYgc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsgfQogCi0gICAgdm9pZCBzY3JvbGxp
bmdUcmVlTm9kZURpZFNjcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFdlYkNvcmU6OlNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpT
eW5jKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFdlYkNv
cmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4mIGxheW91dFZp
ZXdwb3J0T3JpZ2luLCBXZWJDb3JlOjpTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gV2Vi
Q29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05v
ZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgcmVw
cmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGN1cnJlbnRT
bmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgdW5zaWdu
ZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAKaW5kZXggOTk4OTcxMDgzMDFlYmIyMWRiMmM0Nzc5ZTZhOTE3NjVm
Njk5NmI3OC4uYjRmNDRmMDZjMWU3MWVmNWU1M2Q4ZTg3MWFjYTJhNTI5NjRmODRiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0xMjUsMTcgKzEyNSwxNyBAQCB2b2lkIExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKICAgICBkZWxl
dGVFbXB0eURpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDx0aW1lX3Q+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
K3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSA/IHRpbWUgOiBPcHRpb25hbDx0aW1lX3Q+KE51bGxv
cHQpOworICAgIHJldHVybiBnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSA/IHRp
bWUgOiBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4oc3RkOjpudWxsb3B0KTsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPHRpbWVfdD4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICB0aW1lX3QgdGltZTsKICAgICBpZiAoIWdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdGltZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggZGE1NDE5MzQxNTc4NjUxYWExMTIxNjUy
ZGMzZjQ2NWRjNjFlNzk1NS4uYmI3ZmI0ODdlZWUxYWMwYjY1YTMxZTA0ODcwYTFkM2Q5MTcwNjNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTYxLDggKzYxLDggQEAgY2xhc3Mg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PExvY2FsU3RvcmFnZURhdGEKIAogICAgIHN0cnVjdCBPcmlnaW5EZXRhaWxzIHsKICAgICAgICAg
U3RyaW5nIG9yaWdpbklkZW50aWZpZXI7Ci0gICAgICAgIE9wdGlvbmFsPHRpbWVfdD4gY3JlYXRp
b25UaW1lOwotICAgICAgICBPcHRpb25hbDx0aW1lX3Q+IG1vZGlmaWNhdGlvblRpbWU7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBjcmVhdGlvblRpbWU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dGltZV90PiBtb2RpZmljYXRpb25UaW1lOwogICAgIH07CiAgICAgVmVjdG9yPE9yaWdp
bkRldGFpbHM+IG9yaWdpbkRldGFpbHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggNTU4MGIyY2MyYTAzOTllYmVkNTYwMTIwMzAxMzg1ZjQyOTk0NzQ5YS4u
MGY4MWUwYjg4Yjc1ODQ5YjNmYWIzNmU0OWZlNTU2MjEzMDU2YmIwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0yMTMsOCArMjEzLDggQEAgdm9pZCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9y
RnJhbWUodWludDYKICAgICBhdXRvIHJlcXVlc3QgPSBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQ
cm94eTo6Y3JlYXRlKCp0aGlzLCB1c2VyTWVkaWFJRCk7CiAgICAgbV9wZW5kaW5nRGV2aWNlUmVx
dWVzdHMuYWRkKHVzZXJNZWRpYUlELCByZXF1ZXN0LnB0cigpKTsKIAotICAgIGF1dG8gdXNlck1l
ZGlhT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZp
ZXIpLnZhbHVlT3IoU2VjdXJpdHlPcmlnaW5EYXRhKCkpLnNlY3VyaXR5T3JpZ2luKCkpOwotICAg
IGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvcExldmVsRG9jdW1lbnRPcmln
aW5JZGVudGlmaWVyKS52YWx1ZU9yKFNlY3VyaXR5T3JpZ2luRGF0YSgpKS5zZWN1cml0eU9yaWdp
bigpKTsKKyAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodXNlck1lZGlh
RG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKS52YWx1ZV9vcihTZWN1cml0eU9yaWdpbkRhdGEoKSku
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIodG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIpLnZhbHVlX29yKFNlY3VyaXR5T3Jp
Z2luRGF0YSgpKS5zZWN1cml0eU9yaWdpbigpKTsKIAogICAgIGlmICghbV9wYWdlLnVpQ2xpZW50
KCkuY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKG1fcGFnZSwgKm1fcGFnZS5wcm9j
ZXNzKCkud2ViRnJhbWUoZnJhbWVJRCksICp1c2VyTWVkaWFPcmlnaW4uZ2V0KCksICp0b3BMZXZl
bE9yaWdpbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRGV2aWNl
UmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGYyYTI4OTg5YjIyMzc4ZDAyZWM5YjY1OWEy
NDZlYTc1YzZmZWIwNDYuLjM2OGQ5MmE5YmM3N2FiNjkwMzM2YTRiZDY3ZTgwZjg5NmE4NWU4ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CkBAIC00MTUsNyArNDE1LDcgQEAgQmFja0ZvcndhcmRMaXN0U3RhdGUgV2ViQmFja0ZvcndhcmRM
aXN0OjpiYWNrRm9yd2FyZExpc3RTdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW8KICAgICB9CiAKICAg
ICBpZiAoYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuaXNFbXB0eSgpKQotICAgICAgICBiYWNr
Rm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBOdWxsb3B0OworICAgICAgICBiYWNrRm9y
d2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAo
YmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuc2l6ZSgpIDw9IGJhY2tGb3J3YXJkTGlzdFN0YXRl
LmN1cnJlbnRJbmRleC52YWx1ZSgpKQogICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJy
ZW50SW5kZXggPSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcy5zaXplKCkgLSAxOwogCkBAIC00
MzIsNyArNDMyLDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3RhdGUo
QmFja0ZvcndhcmRMaXN0U3RhdGUgYmFja0ZvcndhcmRMaXN0U3QKICAgICAgICAgaXRlbXMudW5j
aGVja2VkQXBwZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpKTsKICAgICB9CiAgICAgbV9o
YXNDdXJyZW50SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleDsKLSAg
ICBtX2N1cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1
ZU9yKDApOworICAgIG1fY3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVu
dEluZGV4LnZhbHVlX29yKDApOwogICAgIG1fZW50cmllcyA9IFdURk1vdmUoaXRlbXMpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDVhZGRhMDFh
MTdmZTRkNGIyOGZlM2FjNTdhNjFhZDEyZDZiOWRiM2UuLjY3NzU5ZGJhYWJiZDJiOTFjYjcyNTcz
MGIzNGRlN2ZmNzI4Mzg2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC0zMjk1LDcgKzMyOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2Fk
RGVwZW5kZW50Q2FsbGJhY2tzKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBP
cHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9w
YXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlm
aWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8SGFz
SW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQp
OwogCkBAIC01NTUyLDcgKzU1NTIsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBh
Z2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICBpZiAobV9zY3JvbGxiYXJPdmVybGF5
U3R5bGUpCiAgICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gbV9zY3Jv
bGxiYXJPdmVybGF5U3R5bGUudmFsdWUoKTsKICAgICBlbHNlCi0gICAgICAgIHBhcmFtZXRlcnMu
c2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gTnVsbG9wdDsKKyAgICAgICAgcGFyYW1ldGVycy5zY3Jv
bGxiYXJPdmVybGF5U3R5bGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5iYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2UgPSBtX2JhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTsKICAg
ICBwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUgPSBtX2xheWVySG9zdGluZ01vZGU7CiAgICAg
cGFyYW1ldGVycy5jb250cm9sbGVkQnlBdXRvbWF0aW9uID0gbV9jb250cm9sbGVkQnlBdXRvbWF0
aW9uOwpAQCAtNjE4MCw3ICs2MTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBp
bm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKICAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3Io
cGlubmluZyksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlT
Y3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gc2Nyb2xsYmFyU3R5bGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJh
clN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3Jv
bGxiYXJTdHlsZSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlICYmICFzY3Jv
bGxiYXJTdHlsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjE5MCw3ICs2MTkwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNv
cmU6OlNjcm9sbGJhck92ZXIKIAogICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc2Nyb2xs
YmFyU3R5bGU7CiAKLSAgICBXVEY6Ok9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZUZv
ck1lc3NhZ2U7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGVGb3JN
ZXNzYWdlOwogICAgIGlmIChzY3JvbGxiYXJTdHlsZSkKICAgICAgICAgc2Nyb2xsYmFyU3R5bGVG
b3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxiYXJT
dHlsZS52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDFlYzhkZjFkYWFlMTgyYWNiMTA5NDY0MDUxOGU2YjkwZGI4M2M3MDEuLjIwZmExYmY3MDll
MDIyYTcwN2VhOTg4YmZlNzIyM2ZhMGI3MDU4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTEwMTgsOCArMTAxOCw4IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9p
ZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9y
KTsKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2
aW9yKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7IH0KIAotICAgIHZv
aWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPik7Ci0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJP
dmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsYmFyT3ZlcmxheVN0eWxlOyB9CisgICAgdm9pZCBzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gb3ZlcmxheVNjcm9sbGJh
clN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KIAogICAg
IGJvb2wgc2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90czsgfQogICAgIHZvaWQgc2V0U2hvdWxkUmVj
b3JkTmF2aWdhdGlvblNuYXBzaG90cyhib29sIHNob3VsZFJlY29yZFNuYXBzaG90cykgeyBtX3No
b3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMgPSBzaG91bGRSZWNvcmRTbmFwc2hvdHM7IH0K
QEAgLTEyMTcsNyArMTIxNyw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQz
Ml90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9p
ZCBkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTkxNSw3ICsxOTE1LDcg
QEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6UGFnZT4KICAgICBIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3Vu
dGVyOjpUb2tlbiBtX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291
bnQ7CiAgICAgICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9s
bFBpbm5pbmdCZWhhdmlvcjsKLSAgICBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92
ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwog
CiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDkwMjNkNTcxOWQyMzEwMDhk
Mjg5ZDE1N2UwMmJjODA3OWExMGZlOTMuLjM2MTdiYmZjZDcwNzhjZmFiOTU3ODIwZjdhZmJiYzkz
ZTA2NjdkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJs
KQogICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERpZENvbW1p
dExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0
cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxv
YWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIGNv
bnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVu
dD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQor
ICAgIERpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJ
bmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQogICAgIERpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVJlY29yZC5oCmluZGV4IGJjM2Y5ODUwMjk0NDM2NmZiNzY4M2YwODNiODdkMTNiMzkzZmM3NDYu
LjEzN2ZjMWMzMWIzNDg3N2JmYjY4YTUxNmRmYmM5MDhmNzE4YmU4ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29y
ZC5oCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgICAg
IHVpbnQ2NF90IHRvdGFsU2l6ZTsKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgdWludDY0X3Q+
IHR5cGVTaXplczsKICAgICB9OwotICAgIE9wdGlvbmFsPFNpemU+IHNpemU7CisgICAgc3RkOjpv
cHRpb25hbDxTaXplPiBzaXplOwogCiAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IG9yaWdpbnM7CiAgICAgSGFzaFNldDxTdHJpbmc+IGNvb2tpZUhvc3ROYW1lczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDUwM2NhNjAzNWIyZDYz
NzFmZTcwMzFhZmZiNDI0ZTdjNTBhMTRjNjMuLmVjZGUzNGI3MGIwYzAxMzU4OGI4ZTFmMjdjMWEw
ZjY1M2Q4NTVjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApA
QCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgV2ViVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlCiAKIEFmZmluZVRyYW5z
Zm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUoKSBjb25zdAogewotICAgIHJldHVybiB0
cmFuc2Zvcm1Ub1NjZW5lKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOwor
ICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybVRvU2Nl
bmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcAppbmRleCAxNDlkZTJhMTc5OTg3NGU5YjU4
NDc2YmJkZGFhZGZmN2I5NzA2Y2ZjLi43NmEzODkxMjU4ZDUzOTE4YmI0MWNkZWNhZWRhOGE3NDZj
MmE1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcApAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBPcHRpb25h
bDxpbnQ+IHNfZGFtYWdlRXZlbnRCYXNlOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50PiBzX2Rh
bWFnZUV2ZW50QmFzZTsKIAogY2xhc3MgWERhbWFnZU5vdGlmaWVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShYRGFtYWdlTm90aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcAppbmRleCAzZjA1ODVkNTBjMzMyMmI4N2E0
MDhlYjNjM2YwOTdiOWRmOWViM2YyLi5jYjQ5YmQ2YTI0YzU3ZjlmY2FlNzQzNDZmNzQ2NWI3NjUx
NDNkMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZl
cmVuY2VzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByZWZl
cmVuY2VzR3RrLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0
Zm9ybUluaXRpYWxpemVTdG9yZSgpCiAjaWYgVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQ
bGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgewogICAgICAgICBhdXRvJiBkaXNwbGF5ID0gZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KSk7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gZGFtYWdlQmFzZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IGRhbWFnZUJhc2U7CiAgICAgICAgIGlmICghZGlzcGxheS5zdXBwb3J0c1hDb21w
b3NpdGUoKSB8fCAhZGlzcGxheS5zdXBwb3J0c1hEYW1hZ2UoZGFtYWdlQmFzZSkpCiAgICAgICAg
ICAgICBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCAyMGQ5MDRhM2RkYjJhMDY0NjE0YzA5NzZmMzhlMDkzMjBiZWQxNTQ2
Li5mMmRhOGUxMTVlMTNhNmUxNjljNDkzMWQ1MTg2ODdkZWQzMDYwY2EyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtMzE4OCwxNiArMzE4OCwxNiBAQCAtICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVudDoo
V2ViSU9TRXZlbnQgKilldmVudCBldmVudFdhc0hhbmRsZWQ6KEJPT0wpZXZlbnRXYXNIYQogICAg
IF91aUV2ZW50QmVpbmdSZXNlbnQgPSBuaWw7CiB9CiAKLS0gKE9wdGlvbmFsPEZsb2F0UG9pbnQ+
KV9zY3JvbGxPZmZzZXRGb3JFdmVudDooV2ViSU9TRXZlbnQgKilldmVudAorLSAoc3RkOjpvcHRp
b25hbDxGbG9hdFBvaW50Pilfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6KFdlYklPU0V2ZW50ICopZXZl
bnQKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga1dlYlNwYWNlS2V5ID0gMHgyMDsKIAog
ICAgIGlmIChfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBOU1N0
cmluZyAqY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gZXZlbnQuY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOwogICAgIGlmICghY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLmxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBlbnVtIFNjcm9sbGluZ0luY3JlbWVudCB7IERvY3VtZW50LCBQYWdlLCBMaW5lIH07
CiAgICAgZW51bSBTY3JvbGxpbmdEaXJlY3Rpb24geyBVcCwgRG93biwgTGVmdCwgUmlnaHQgfTsK
QEAgLTMyNDksNyArMzI0OSw3IEBAIC0gKE9wdGlvbmFsPEZsb2F0UG9pbnQ+KV9zY3JvbGxPZmZz
ZXRGb3JFdmVudDooV2ViSU9TRXZlbnQgKilldmVudAogICAgIGlmIChbY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzIGNoYXJhY3RlckF0SW5kZXg6MF0gPT0ga1dlYlNwYWNlS2V5KQogICAgICAg
ICByZXR1cm4gY29tcHV0ZU9mZnNldChQYWdlLCAoZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2
ZW50RmxhZ01hc2tTaGlmdCkgPyBVcCA6IERvd24pOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLSAoQk9PTClfaW50ZXJwcmV0S2V5RXZlbnQ6
KFdlYklPU0V2ZW50ICopZXZlbnQgaXNDaGFyRXZlbnQ6KEJPT0wpaXNDaGFyRXZlbnQKQEAgLTMy
NjYsNyArMzI2Niw3IEBAIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihXZWJJT1NFdmVudCAq
KWV2ZW50IGlzQ2hhckV2ZW50OihCT09MKWlzQ2hhckV2ZW50CiAgICAgaWYgKCFjb250ZW50RWRp
dGFibGUgJiYgZXZlbnQuaXNUYWJLZXkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIGlmIChP
cHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxPZmZzZXQgPSBbc2VsZiBfc2Nyb2xsT2Zmc2V0Rm9y
RXZlbnQ6ZXZlbnRdKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xs
T2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2ZW50OmV2ZW50XSkgewogICAgICAgICBb
X3dlYlZpZXcgX3Njcm9sbEJ5Q29udGVudE9mZnNldDoqc2Nyb2xsT2Zmc2V0XTsKICAgICAgICAg
cmV0dXJuIFlFUzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKaW5kZXggMDE2YzZiOTMzNDY1M2Nm
ZWEyMjkwYjIxNjUwMGFiMDA5MjFiZGU2Zi4uMTdmNjZiNzE3NzljMDU0OWNmNjhhZTI4MTY1ODE4
YTcyOWQ2NjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApAQCAtMjgyLDggKzI4Miw4IEBAIHN0YXRp
YyB2b2lkIGVuY29kZUZvcm1EYXRhRWxlbWVudChIaXN0b3J5RW50cnlEYXRhRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgSFRUUEJvCiAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CiAKICAgICAgICAg
ZW5jb2RlciA8PCBlbGVtZW50LmZpbGVTdGFydDsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50
LmZpbGVMZW5ndGgudmFsdWVPcigtMSk7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlT3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKSk7CisgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlTGVuZ3Ro
LnZhbHVlX29yKC0xKTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUudmFsdWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWll
dF9OYU4oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6
VHlwZTo6QmxvYjoKQEAgLTcwNCwxMyArNzA0LDEzIEBAIGNsYXNzIEhpc3RvcnlFbnRyeURhdGFE
ZWNvZGVyIHsKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBhdXRvIG9w
ZXJhdG9yPj4oT3B0aW9uYWw8VD4mIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX2VudW08VD46OnZhbHVlLCBIaXN0b3J5RW50cnlEYXRhRGVjb2RlciY+Ojp0eXBlCisg
ICAgYXV0byBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8VD4mIHZhbHVlKSAtPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2VudW08VD46OnZhbHVlLCBIaXN0b3J5RW50cnlEYXRhRGVj
b2RlciY+Ojp0eXBlCiAgICAgewogICAgICAgICB1aW50MzJfdCB1bmRlcmx5aW5nRW51bVZhbHVl
OwogICAgICAgICAqdGhpcyA+PiB1bmRlcmx5aW5nRW51bVZhbHVlOwogCiAgICAgICAgIGlmICgh
aXNWYWxpZCgpIHx8ICFpc1ZhbGlkRW51bShzdGF0aWNfY2FzdDxUPih1bmRlcmx5aW5nRW51bVZh
bHVlKSkpCi0gICAgICAgICAgICB2YWx1ZSA9IE51bGxvcHQ7CisgICAgICAgICAgICB2YWx1ZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNf
Y2FzdDxUPih1bmRlcmx5aW5nRW51bVZhbHVlKTsKIApAQCAtNzkwLDcgKzc5MCw3IEBAIGNsYXNz
IEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyIHsKIAogc3RhdGljIHZvaWQgZGVjb2RlRm9ybURhdGFF
bGVtZW50KEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyJiBkZWNvZGVyLCBIVFRQQm9keTo6RWxlbWVu
dCYgZm9ybURhdGFFbGVtZW50KQogewotICAgIE9wdGlvbmFsPEZvcm1EYXRhRWxlbWVudFR5cGU+
IGVsZW1lbnRUeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9ybURhdGFFbGVtZW50VHlwZT4gZWxl
bWVudFR5cGU7CiAgICAgZGVjb2RlciA+PiBlbGVtZW50VHlwZTsKICAgICBpZiAoIWVsZW1lbnRU
eXBlKQogICAgICAgICByZXR1cm47CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBzdGF0aWMgYm9vbCBk
ZWNvZGVWMVNlc3Npb25IaXN0b3J5KENGRGljdGlvbmFyeVJlZiBzZXNzaW9uSGlzdG9yeURpY3Rp
b25hcnksIEJhYwogICAgIGF1dG8gY3VycmVudEluZGV4TnVtYmVyID0gZHluYW1pY19jZl9jYXN0
PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzZXNzaW9uSGlzdG9yeURpY3Rpb25h
cnksIHNlc3Npb25IaXN0b3J5Q3VycmVudEluZGV4S2V5KSk7CiAgICAgaWYgKCFjdXJyZW50SW5k
ZXhOdW1iZXIpIHsKICAgICAgICAgLy8gTm8gY3VycmVudCBpbmRleCBtZWFucyB0aGUgZGljdGlv
bmFyeSByZXByZXNlbnRzIGFuIGVtcHR5IHNlc3Npb24uCi0gICAgICAgIGJhY2tGb3J3YXJkTGlz
dFN0YXRlLmN1cnJlbnRJbmRleCA9IE51bGxvcHQ7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0
YXRlLmN1cnJlbnRJbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYmFja0ZvcndhcmRMaXN0
U3RhdGUuaXRlbXMgPSB7IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmgKaW5kZXggZDcxZTEwYzdlYzdhNTVkMjA5M2FhM2RhYjhmYzZhOGVh
ZTQ4MDNlOC4uM2U1ZTliZjAwMjM5YzZiYWRlZGJmNTNiZTRiYzk4Y2VhMjk5Y2ZmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5LmgKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBmaW5hbCA6IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5IHsK
ICAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4p
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRSZWN0Pikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIGZsb2F0IGluZGljYXRv
clNjYWxlKFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbQppbmRleCBlZjVjMzM4YTllMDIxMzNkMTMwMWQwZjA4NDdiOTczNzRi
OGJiYTM4Li4zNDkzMGRkMWM0MGU1YzBmNWFkYWM0MjU1MGE5MDcxMjQyYzRlMmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjphY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50
NjRfdCBsYXllckkKIHN0YXRpYyBjb25zdCBmbG9hdCBpbmRpY2F0b3JJbnNldCA9IDEwOwogCiAj
aWYgUExBVEZPUk0oTUFDKQotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojpz
ZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3Nl
ZFJlY3QpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdFeHBv
c2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0
KQogewogICAgIERyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdFeHBvc2VkUmVjdCh2aWV3RXhwb3Nl
ZFJlY3QpOwogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9yUG9zaXRpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcAppbmRleCAxZmY1OWJlZGNlMzNmNzUxZDkzMDgzYWIwNTgwNmUzZDY5ZDNlODU1
Li4wZGRmNjNmZDIzZWViZDk4MjdmYzgzMGExZDJmMWNiZGZlNWE0ZjZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuY3BwCkBAIC0xMTcsMTcgKzExNywxNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1l
cgogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6Q29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24ocGF5bWVudE1lcmNoYW50U2Vzc2lvbikpOwog
fQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIE9wdGlv
bmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxB
bmRJdGVtcykKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
IG5ld1RvdGFsQW5kSXRlbXMpCiB7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0
YXRpY19jYXN0PHVpbnQzMl90PihzdGF0dXMpLCBuZXdUb3RhbEFuZEl0ZW1zKSk7CiB9CiAKLXZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01l
dGhvZHMsIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4gbmV3VG90YWxBbmRJdGVtcykKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyBzdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBp
bmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogewogICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0YXR1
cyksIG5ld1NoaXBwaW5nTWV0aG9kcywgbmV3VG90YWxBbmRJdGVtcykpOwogfQogCi12b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlv
bmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxB
bmRJdGVtcykKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxB
bmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCiB7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24obmV3VG90YWxBbmRJdGVtcykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXgg
MzZiMmFhNDcxN2Y2MmU2MjFjZGY5OTQ5M2Y0YTIxOTZmODJmOTRkZi4uMjM5Y2U3NzM5MDczOTQ3
MTcxZGQwOWE4YWRlZDY0ZjRmNGNlNTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC01OSw5
ICs1OSw5IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByCiAgICAgdm9pZCBvcGVuUGF5bWVudFNl
dHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFp
bk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVy
cmlkZTsKICAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5h
dGluZ1VSTCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVSTD4mIGxpbmtJY29uVVJMcywgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpTaGlwcGluZ01ldGhvZD4mLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90
YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29t
cGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+Jiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1Rv
dGFsQW5kSXRlbXMpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGlu
ZUl0ZW1zPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKFdlYkNv
cmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIGFib3J0
UGF5bWVudFNlc3Npb24oKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
CmluZGV4IGQzMmRhZDZlN2I4ZWZhMGQ2MTc1ODRmYjE4OWEwZGFmZGQxZmM1OWQuLjgyODAxOGFm
Mjc5MGI0OTE1MDk3NDNmYmM0OWMxNmU1NjJhMTI0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKQEAgLTY5NCw3ICs2OTQsNyBAQCBXS0FycmF5UmVmIFdLQnVuZGxlUGFnZUNvcHlP
cmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAKIHZvaWQg
V0tCdW5kbGVQYWdlU2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IqIGJlaGF2aW9yKQogewotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBiZWhhdmlvclZhbHVlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IGJlaGF2
aW9yVmFsdWU7CiAgICAgaWYgKGJlaGF2aW9yKSB7CiAgICAgICAgIHN3aXRjaCAoKmJlaGF2aW9y
KSB7CiAgICAgICAgIGNhc2UgRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JSZXNwb25zaXZlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVk
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXBy
ZWNhdGVkUERGUGx1Z2luLm1tCmluZGV4IDA2MzlkZWZmZWZmN2JkYjM4Y2I2M2RhNzU2ZDliZDlh
MWRhZTlkMDkuLmJhZTk2YjZhMmNkZGY5YmIyYzgwOTExZjc2YTZmNDQ4YWNkZGYyNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBE
RlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0Rl
cHJlY2F0ZWRQREZQbHVnaW4ubW0KQEAgLTExOTYsNyArMTE5Niw3IEBAIEludFBvaW50IFBERlBs
dWdpbjo6Y29udmVydEZyb21Sb290Vmlld1RvUGx1Z2luKGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmlldyhj
b25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnRJblBsdWdp
bkNvb3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsKLSAg
ICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOworICAg
IHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQog
CiBGbG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBG
bG9hdFJlY3QmIHJlY3QpIGNvbnN0CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBGbG9hdFJlY3QgUERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIEZsb2F0UG9pbnQgb3Jp
Z2luSW5QbHVnaW5Db29yZGluYXRlcyhyZWN0LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcmVjdC55
KCkgLSByZWN0LmhlaWdodCgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUmVjdChGbG9hdFJlY3Qob3JpZ2luSW5QbHVnaW5Db29yZGluYXRl
cywgcmVjdC5zaXplKCkpKTsKKyAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFJlY3QoRmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMs
IHJlY3Quc2l6ZSgpKSk7CiAKICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1RvU2NyZWVu
KGVuY2xvc2luZ0ludFJlY3QocmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpOwogfQpAQCAtMTIy
MCw3ICsxMjIwLDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CisgICAgRmxvYXRSZWN0IHJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CiAgICAg
cmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIApAQCAtMTIzMCw3ICsxMjMwLDcgQEAgdm9pZCBQ
REZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNv
bnN0IEludFJlY3QmLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gcGx1Z2lu
U2l6ZTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX3Jv
b3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgW21fcGRmTGF5ZXJDb250cm9s
bGVyIHNldEZyYW1lU2l6ZTpwbHVnaW5TaXplXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2lu
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KaW5kZXggNGE3MmFiNzkzNTI1OWI1NGI4NDVkYWRjOWZhMzZmYmE4Y2E4MzY5YS4uNzgx
NmRhYzY4MTNkYmFiNTdjN2Y5OTY5OWVhMWZiMzdmZmU2NjUwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkzMiw3ICs5
MzIsNyBAQCBJbnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogdm9pZCBQ
REZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNv
bnN0IEludFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9vdFZpZXdUcmFu
c2Zvcm0pCiB7CiAgICAgbV9wbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsK
KyAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgbV9zaXplID0g
cGx1Z2luU2l6ZTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gd2ViRnJhbWUoKS0+Y29y
ZUZyYW1lKCktPnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCBhMGQ4YWI4NjZmYzBiYWQxMDIwYmQxNjViZmQ1NGY1NWUy
MWNmNjk0Li5hYzFkYWFiYWQwNjNhNDk2MjZiMzdlMDQwMmU5ZWJmNTQ5MmQzYjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0x
MjA1LDcgKzEyMDUsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1GcmFtZUxvYWRVUkxSZXF1
ZXN0KFVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93UG9wdXBz
KCkgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IE51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwog
CiAgICAgLy8gRmlyc3QsIHRyeSB0byBmaW5kIGEgdGFyZ2V0IGZyYW1lLgogICAgIEZyYW1lKiB0
YXJnZXRGcmFtZSA9IGZyYW1lLT5sb2FkZXIoKS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKHJlcXVl
c3QtPnRhcmdldCgpKTsKQEAgLTE1MDAsNyArMTUwMCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6ZXZh
bHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywgTlBW
YXJpCiAgICAgLy8gcHJvdGVjdCB0aGUgcGx1Zy1pbiB2aWV3IGZyb20gZGVzdHJ1Y3Rpb24uCiAg
ICAgTlBSdW50aW1lT2JqZWN0TWFwOjpQbHVnaW5Qcm90ZWN0b3IgcGx1Z2luUHJvdGVjdG9yKCZt
X25wUnVudGltZU9iamVjdE1hcCk7CiAKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJl
SW5kaWNhdG9yKGFsbG93UG9wdXBzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3Rh
dGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBOdWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gc3RkOjpvcHRpb25hbDxQcm9j
ZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVs
bG9wdCk7CiAgICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmV2YWx1YXRlKG5wT2JqZWN0
LCBzY3JpcHRTdHJpbmcsIHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKaW5kZXgg
Yzk5MzI2ZGYxMjNlODUzOWY3NmM3M2MwYTM0ODY4ODQ5MDRkNzk0OS4uOWZkYjg2NTQ4NWEyMDk0
YmE2OTRlODYwY2Y5YzU4MGU5MWU1ZWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKQEAgLTE2
NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQbHVnaW5D
YWNoZShjb25zdCBXZWJDb3JlOjpQYWdlJiBwYWdlKQogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCi1PcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYg
aG9zdCwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYgaW5mbykgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
OjpwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0
IFdlYkNvcmU6OlBsdWdpbkluZm8mIGluZm8pIGNvbnN0CiB7CiAgICAgU3RyaW5nIGhvc3RUb0xv
b2tVcCA9IGhvc3Q7CiAgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBpbmZvLmJ1bmRsZUlkZW50aWZp
ZXI7CkBAIC0xODEsNyArMTgxLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVu
dFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW4KICAgICAgICAg
fQogICAgIH0KICAgICBpZiAocG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9PSBtX2hvc3Rz
VG9QbHVnaW5JZGVudGlmaWVyRGF0YS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwb2xpY2llc0J5SWRlbnRp
ZmllciA9IHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3ItPnZhbHVlOwogCkBAIC0xOTUsNyAr
MTk1LDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gV2ViUGx1
Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW4KICAgICB9CiAKICAgICBpZiAoaWRlbnRp
ZmllclBvbGljeUl0ZXJhdG9yID09IHBvbGljaWVzQnlJZGVudGlmaWVyLmVuZCgpKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8mIHZlcnNpb25zVG9Qb2xpY2llcyA9IGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvci0+dmFsdWU7
CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5PiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkxvYWRDbGllbgogICAgIH0KIAog
ICAgIGlmIChwb2xpY3lJdGVyYXRvciA9PSB2ZXJzaW9uc1RvUG9saWNpZXMuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHBvbGljeUl0ZXJhdG9yLT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCA3
YTczMmVmZTcwNjBhMjNmNmU5MWU3ZTA2NzNkMTdiYzhiZTJjNGJhLi5mNzZkM2Y1ODU4ZWVhMjZj
MmRlZTc2YjEyMTM2MjliZjIzZDZmMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCkBAIC01NCw3ICs1
NCw3IEBAIGNsYXNzIFdlYlBsdWdpbkluZm9Qcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpQbHVnaW5JbmZvUHJvdmlkZXIgewogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxv
YWRDbGllbnRQb2xpY3k+IHBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IHBsdWdpbkxvYWRDbGllbnRQb2xpY3lG
b3JIb3N0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mKSBjb25zdDsK
ICAgICBTdHJpbmcgbG9uZ2VzdE1hdGNoZWRXaWxkY2FyZEhvc3RGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYgaG9zdCkgY29uc3Q7CiAgICAgYm9vbCByZXBsYWNlSG9zdFdpdGhNYXRjaGVkV2lsZGNhcmRI
b3N0KFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQppbmRleCBjNmNjNmFiZGFkY2FlYzViNGFkMGM1
ODY4Yjc3N2E1MmUyYjRlZTEzLi44ODY0MTUyNWU1MmI5NzlkZTQwM2E2ZTZhNzEwMmNkM2EyNWQz
MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQpAQCAtOTcsNyArOTcsNyBA
QCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpidWlsZFRyYW5zYWN0aW9uKFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbgogLy8gTm90aWZpY2F0aW9uIGZyb20gdGhlIFVJIHBy
b2Nlc3MgdGhhdCB3ZSBzY3JvbGxlZC4KIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29u
c3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgc3luY0xheWVyUG9zaXRpb24pCiB7
Ci0gICAgc2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlE
LCBzY3JvbGxQb3NpdGlvbiwgTnVsbG9wdCwgZmFsc2UgLyogRklYTUUgKi8sIHN5bmNMYXllclBv
c2l0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb246OlNldCk7CisgICAgc2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlv
bkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgc3RkOjpudWxsb3B0LCBm
YWxzZSAvKiBGSVhNRSAqLywgc3luY0xheWVyUG9zaXRpb24gPyBTY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uOjpTeW5jIDogU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKIH0K
IAogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3VycmVudFNuYXBQb2ludEluZGlj
ZXNDaGFuZ2VkRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCB1bnNpZ25lZCBob3Jpem9u
dGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCmluZGV4IDFjYTdmNDQ5N2E3OThiM2U1ZGVkNGFlZWIxOGVhY2MyZjE5YWE3NzEuLjI4Zjc1
N2ZmZTBiNDM0NmYyNjM3OTlmMDQ3Zjc2MTQ3YjY4NDRjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6
Ci0gICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgs
IGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcihCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZh
bHVlT3IoaW52YWxpZEZpbGVUaW1lKCkpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRG
aWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmls
ZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29yKGludmFsaWRGaWxlVGltZSgpKSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBl
OjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDgxZDU2MTk1NTMwNWVjMDM1MmUz
NTkxZDljOTU0MTE5N2JhY2Y4ODAuLjdmMGU3NWRjYjk4MjNiYjJkZGMxMGNlNjA5MWQxOTQ0YWQ5
MjJhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTk3MCw3ICs5NzAsNyBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShTY3Jv
bGxiYXJTdHlsZSBuZXdTdHlsZQogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlkQ2hhbmdlKHN0YXRpY19jYXN0PGludDMy
X3Q+KG5ld1N0eWxlKSkpOwogfQogCi1XVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gV2ViQ2hyb21lQ2xpZW50OjpwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKQorc3Rk
OjpvcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IFdlYkNocm9tZUNsaWVudDo6cHJlZmVy
cmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkKIHsKICAgICByZXR1cm4gbV9wYWdlLT5zY3JvbGxi
YXJPdmVybGF5U3R5bGUoKTsgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA2YTdlY2M0YWFh
N2JmMDQ1MDM0ODhiMWQ2NTYzMGZjYTUwYTlmNDc5Li4wNWU0YjM1YTFkZTE4YjllYmVmODU0MDUy
NmFmYjJhNWVmZGZkNzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI4MCw3ICsyODAsNyBA
QCBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsK
ICAgICB2b2lkIG5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHls
ZURpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAK
LSAgICBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVy
cmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlT
dHlsZSgpIG92ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDFj
ODgxNTMwYWE0MWFhZjdlYWMyMmExZmIwMjY3Yzg3YmZkMjY1ZTEuLmVkZWZkYjhmMzQyMGRhZWQ1
MWNiMWFiNTM4NjRjMTcxMDJmMmIxMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGkKICAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgdGl0bGUuc3RyaW5nKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRp
b25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCkKIHsKICAgICBXZWJQ
YWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTQ1
NCw3ICs0NTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYQogICAgIHdlYlBhZ2UtPnNhbmRi
b3hFeHRlbnNpb25UcmFja2VyKCkuZGlkQ29tbWl0UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwog
CiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2Uo
KS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCBk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRl
KFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3Vt
ZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JD
b21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsg
cmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3Vt
ZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50LCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
LmdldCgpKS5nZXQoKSkpKTsKICAgICB3ZWJQYWdlLT5kaWRDb21taXRMb2FkKG1fZnJhbWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZjJiYmJhZjU3YTc3ODY3MGRl
MjQ5ZmUxNmQ0MWZlM2Y3MTI2ZTdiYy4uZGIyZjk0OTE0MDcyNDA3NzczYmQwODZmN2Y4YjlhY2Qw
N2VlYTc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTgsNyArOTgsNyBA
QCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudCB7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9u
YWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNw
YXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRl
bnQ+KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDc4M2Fk
ZWMzNWYyY2YzODRlY2JkYzQ2MGU2NzcwZTk0ZDQwODkwYTcuLjhlNGQwOWM0ODQzYjFhYzEzNGE1
OTJiZWRhOGE2OTlkYzY3ZDc5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC04OCw4ICs4OCw4IEBAIGNsYXNzIERyYXdpbmdBcmVh
IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICB2aXJ0dWFsIHZvaWQgbWFpbkZy
YW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QoT3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PikgPSAwOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4pID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2
aWV3RXhwb3NlZFJlY3QoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0
ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCAvKmxheWVySUQqLywgY29uc3QgU3RyaW5nJiAv
KmtleSovLCBkb3VibGUgLypzdGFydFRpbWUqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IC8qbGF5ZXJJRCovLCBjb25zdCBTdHJpbmcm
IC8qa2V5Ki8pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCmluZGV4IDg0ODMyYjMzMzRhYzUxZTZhNmQx
Y2UxMjUzYWRhNzZjNjA0ZGNkZGIuLmIwNzZmMzRjMWFjNjhjMzlkMGQ4MDBmM2VhYWM0MDY1ZjA1
NzBlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTI5LDcgKzI5LDcgQEAgbWVzc2FnZXMgLT4g
RHJhd2luZ0FyZWEgewogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1Np
emUsIFdlYkNvcmU6OkludFNpemUgbGF5ZXJQb3NpdGlvbiwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHksIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxl
RmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogICAgIFNldENvbG9yU3BhY2Uoc3RydWN0
IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKLSAgICBTZXRWaWV3RXhwb3NlZFJl
Y3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCisgICAgU2V0
Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QpCiAKICAgICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjRjMGQzZGFmMTE2ZjVkYTIwZjI4MTJh
ZGE4Y2QzODFhZWU4Njc4Mi4uNTM4MWI3NTNiYmNhYzUwMGZkNjUzM2U3MDkxZWM0OGQ1ZTI2Yzk2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC00MTgsNyArNDE4LDcgQEAgQ2VydGlmaWNhdGVJbmZvIFdlYkZyYW1lOjpjZXJ0aWZpY2F0
ZUluZm8oKSBjb25zdAogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJ
bmZvKCkudmFsdWVPckNvbXB1dGUoW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pOwor
ICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5jZXJ0
aWZpY2F0ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pOwogfQogCiBT
dHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDk1MDE4M2Y1MWMyNTcyOTEzZmNhYjcy
ZDY0MDE1OWYxNzkyMTIzNi4uMDI1N2Y3MmI3Njc1NzdhNjMzNGVkNTQzYWJiMDc3OWI4Yzk5YTc0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNDQ5LDcgKzQ0OSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIGlmIChwYXJhbWV0
ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSkKICAgICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5
bGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHBhcmFtZXRlcnMuc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlLnZhbHVlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zY3JvbGxiYXJP
dmVybGF5U3R5bGUgPSBXVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4oKTsKKyAg
ICAgICAgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBzdGQ6Om9wdGlvbmFsPFNjcm9sbGJhck92
ZXJsYXlTdHlsZT4oKTsKIAogICAgIHNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShwYXJh
bWV0ZXJzLmJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSk7CiAKQEAgLTUzOTQsMTIgKzUzOTQs
MTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlu
bmluZykKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsUGlubmluZ0Jl
aGF2aW9yKG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5
bGUpCit2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIHsKICAgICBpZiAoc2Nyb2xsYmFyU3R5bGUpCiAg
ICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
c2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gV1RGOjpPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5
bGU+KCk7CisgICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RkOjpvcHRpb25hbDxT
Y3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkt
PnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDY5MzA1M2Y3ZDgyYmE0ZjllODll
Y2QxNjk3YzhhMTZkYjhhYmMyNDEuLjE4MzFmMmI1MDA0MjFkOGRjNzA3ZGE5MWRlZjJhYTgzYzUz
NzgzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtOTEwLDggKzkxMCw4IEBAIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQCiAgICAgV2ViQ29yZTo6
U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZp
b3IodWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yICovIHBpbm5pbmcp
OwogCi0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9
Ci0gICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1aW50MzJf
dCAvKiBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KKyAg
ICB2b2lkIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90IC8q
IFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZSAqLz4gc2Nyb2xsYmFyU3R5bGUpOwogCiAg
ICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihXZWJD
b3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9pZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRl
cihXZWJEb2N1bWVudExvYWRlciYsIFdlYkNvcmU6OkZyYW1lJik7CkBAIC0xNDg0LDcgKzE0ODQs
NyBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIHVuc2lnbmVkIG1fbWF4aW11bVJlbmRl
cmluZ1N1cHByZXNzaW9uVG9rZW4geyAwIH07CiAgICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlu
bmluZ0JlaGF2aW9yIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yIHsgV2ViQ29yZTo6RG9Ob3RQaW4g
fTsKLSAgICBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gbV9z
Y3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxi
YXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogCiAgICAgYm9vbCBtX3Vz
ZUFzeW5jU2Nyb2xsaW5nIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5ZmNiOGUzNDg4N2Ux
NTgwMjAyOTE2OGYzNTliYWY0YWJkZGJmYjgyLi4xYjExMTk5OTMzZjljNWFmZTlhMTE5OTIyOThk
NGRiOWJjMDY3ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDA0LDcgKzQwNCw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBTZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IodWludDMyX3QgcGlubmluZykKLSAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUo
T3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQorICAgIFNldFNjcm9sbGJhck92ZXJs
YXlTdHlsZShzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKIAogICAgIEdl
dEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKaW5kZXggZjM0NjVkMmI3MDU4Njg0YjQ5MjQxOTJlN2M1NmMxZDVi
YzQ3YWNmMC4uZmQwNzE0OGZhMzVmMWEzYmJhYzMyZGRhMjg2OWM5Mzg2YjA5MDQ0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtODMsOCArODMsOCBAQCBjbGFzcyBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSA6IHB1YmxpYyBEcmF3aW5nQXJlYSwgcHVibGljIFdl
YkNvcmU6OkdyYXBoaWNzTAogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UmVjdD4pIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4
cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JvbGxlZFZpZXdFeHBvc2Vk
UmVjdDsgfQorICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0Pikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xs
ZWRWaWV3RXhwb3NlZFJlY3Q7IH0KIAogICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRpb25EaWRT
dGFydCh1aW50NjRfdCBsYXllcklELCBjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHN0YXJ0VGlt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRf
dCBsYXllcklELCBjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CkBAIC0xNDEsOCArMTQxLDgg
QEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0FyZWEs
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0wKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3
U2l6ZTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJl
Y3Q7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX3Njcm9sbGVkVmlld0V4cG9z
ZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBtX3ZpZXdFeHBv
c2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV9zY3JvbGxl
ZFZpZXdFeHBvc2VkUmVjdDsKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fbGF5ZXJGbHVzaFRpbWVy
OwogICAgIGJvb2wgbV9pc0ZsdXNoaW5nU3VzcGVuZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KaW5kZXggNTk0ZDkwMGVmZjAyMjBmODNjZGFmMGMzZmQ5OGI5ZWJmNzE5
MmJjZC4uNWE2NzMzNGQ4YWEzYTQ2MWIzMzhlMGI4ZWE4NDA3MWRkYzhkMDdkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWlu
dDY0X3QgbGF5ZXJJRCwgY28KICAgICBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQtPmFuaW1hdGlv
bkRpZEVuZChsYXllcklELCBrZXkpOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3
RXhwb3NlZFJlY3QpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRWaWV3RXhw
b3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVj
dCkKIHsKICAgICBtX3ZpZXdFeHBvc2VkUmVjdCA9IHZpZXdFeHBvc2VkUmVjdDsKICAgICB1cGRh
dGVTY3JvbGxlZEV4cG9zZWRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKaW5kZXggN2E2YjBlMmYwNGU5NWFmMGQ0OWJmN2M4ODgzMjQzYmQ5Mzg4ZDM4Yi4u
OTU4MzM4YTAzZWU3YzdhZGE1ZjFjM2NlYjg5Yjc4MTVkY2ZmZDQ2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtNzIsOCArNzIsOCBAQCBjbGFzcyBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSA6IHB1YmxpYyBEcmF3aW5nQXJlYSwgV2ViQ29yZTo6
TGF5ZXJGbHVzaFNjaAogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFpbkZyYW1lQ29udGVudFNpemVDaGFu
Z2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0Vmll
d0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsgfQorICAgIHZvaWQgc2V0
Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pikgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7IH0K
IAogICAgIGJvb2wgc3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIApAQCAtMTM3LDggKzEzNyw4IEBAIGNsYXNzIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhIDogcHVibGljIERyYXdpbmdBcmVhLCBXZWJDb3JlOjpMYXllckZsdXNoU2NoCiAKICAg
ICBib29sIG1faXNQYWludGluZ1N1c3BlbmRlZDsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRS
ZWN0PiBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRSZWN0PiBtX3ZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4gbV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsKIAogICAgIFdlYkNvcmU6
OkludFNpemUgbV9sYXN0U2VudEludHJpbnNpY0NvbnRlbnRTaXplOwogICAgIGJvb2wgbV9pblVw
ZGF0ZUdlb21ldHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
aW5kZXggNThkOGE5YWNiMGMzZDhhNmU2NDA5NGZlZmJlOTYyMDJiODRlNjFlOS4uZjRlZWEwMWZl
NmVhNTcxYzNiNWNiNDMwZjljMTg3NDNjZTlhNDBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQogICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1Jl
bmRlckRpZFJlc3VtZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1faG9zdGluZ0xheWVyLmdldCgpIGZvcktleTpAImxh
eWVyIl1dOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRWaWV3
RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3Qp
Cit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRWaWV3RXhwb3NlZFJlY3Qo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAg
ICBtX3ZpZXdFeHBvc2VkUmVjdCA9IHZpZXdFeHBvc2VkUmVjdDsKICAgICB1cGRhdGVTY3JvbGxl
ZEV4cG9zZWRSZWN0KCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNmEyNTM2YzljNmY5NjBmMTAzN2IzOTdiOGNkOTlmZGI0MWQ5MWFhNC4uZjhk
MmE3MGJmNzg0ZDg5NTY3Yzg4ODE0MTM5NDE4ZDNiYzI0NzJjZSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE2LTEx
LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtX
VEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6
Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBhbmQgU2FtIFdlaW5p
Zy4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6dmFsdWVfb3IuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUpOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJpZGUpOgorICAgICAgICAq
IFRlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNXcmFwcGFibGUuaDoKKyAgICAgICAgKFdUUjo6
SlNWYWx1ZU1ha2VCb29sZWFuT3JOdWxsKToKKyAgICAgICAgKFdUUjo6SlNWYWx1ZVRvTnVsbGFi
bGVCb29sZWFuKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OnN0YWJsZVN0YXRlT3ZlcnJpZGUpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OnNldFN0YWJsZVN0YXRlT3ZlcnJpZGUpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21z
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RQYXJzZUhUTUxJbnRlZ2VyKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RQYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y2hlY2tSZWxhdGl2ZVVSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTERpZmZl
cmVuY2VzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkxEaWZmZXJl
bmNlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3Zl
cnJpZGUpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0YXRl
T3ZlcnJpZGUpOgorCiAyMDE2LTExLTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IGNvbXBpbGUgd2FybmluZ3MgYWZ0ZXIgcjIwODQxNQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5k
ZXggYzZjYTBkNTUzZTVjMmJlNWY5MjU2OTdlNWMzZjJkMmFjYTM0ZTlkOC4uZmY5ZDU3YTU4Yjg5
MGQ5Nzc1NjdhY2VlYTBiODJmMDc4NTA2NjAyMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0xOTksMTIgKzE5OSwxMiBAQCBk
b3VibGUgVUlTY3JpcHRDb250cm9sbGVyOjptYXhpbXVtWm9vbVNjYWxlKCkgY29uc3QKICAgICBy
ZXR1cm4gZ1dlYlNjcm9sbFZpZXcubWF4aW11bVpvb21TY2FsZTsKIH0KIAotT3B0aW9uYWw8Ym9v
bD4gVUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8Ym9vbD4gVUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRp
b25hbDxib29sPikKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvQmluZGluZ3MvSlNXcmFwcGFibGUuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvQmluZGluZ3MvSlNXcmFwcGFibGUuaAppbmRleCAxNWIzOTBkYzQxNTJjZGI5YmZjYjE1YTIw
YzZkNzdjNzcwMzYxZmNiLi5lNzkyMDhjYWVlM2JhNWZlYzY1YjcyOGIzNjEzYTAxNmE1YTIwOGFm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxl
LmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oCkBA
IC0zNywxNCArMzcsMTQgQEAgY2xhc3MgSlNXcmFwcGFibGUgOiBwdWJsaWMgUmVmQ291bnRlZDxK
U1dyYXBwYWJsZT4gewogICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKSA9IDA7
CiB9OwogCi1pbmxpbmUgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZUJvb2xlYW5Pck51bGwoSlNDb250
ZXh0UmVmIGNvbnRleHQsIE9wdGlvbmFsPGJvb2w+IHZhbHVlKQoraW5saW5lIEpTVmFsdWVSZWYg
SlNWYWx1ZU1ha2VCb29sZWFuT3JOdWxsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZSA/IEpTVmFsdWVNYWtlQm9vbGVh
bihjb250ZXh0LCB2YWx1ZS52YWx1ZSgpKSA6IEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKIH0K
IAotaW5saW5lIE9wdGlvbmFsPGJvb2w+IEpTVmFsdWVUb051bGxhYmxlQm9vbGVhbihKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPGJv
b2w+IEpTVmFsdWVUb051bGxhYmxlQm9vbGVhbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHZh
bHVlKSB8fCBKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSA/IE51bGxvcHQgOiBPcHRpb25h
bDxib29sPihKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIHZhbHVlKSk7CisgICAgcmV0dXJuIEpT
VmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzTnVsbChjb250ZXh0
LCB2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+KEpTVmFsdWVUb0Jv
b2xlYW4oY29udGV4dCwgdmFsdWUpKTsKIH0KIAogaW5saW5lIEpTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VTdHJpbmdPck51bGwoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHN0cmluZ09y
TnVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDlhY2UyMDJkMWQ4ZTAyZjVmODFl
M2RhMWMxMzQ0MjkyZDliM2UzY2YuLjE2OTExNDVhYzljMzhmNWVjYzg2YzAwNGJlZDY0YmExN2Ex
ZTNhZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjg4LDEyICsyODgsMTIgQEAg
ZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAg
cmV0dXJuIDE7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxl
U3RhdGVPdmVycmlkZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJv
bGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OnNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pCit2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGFmYzhjZmFlMGIxNDkzNzk4MDY1YjNhYzMz
NWUxMDJjNWQ0NGMyNjYuLjA0OTMyNjk2ZTllNWIwNzg4YmRhYjc5NDZlNTA1YjkzNTQwMTJhNjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMjIsOCArMTIyLDggQEAgY2xhc3MgVUlTY3Jp
cHRDb250cm9sbGVyIDogcHVibGljIEpTV3JhcHBhYmxlIHsKICAgICBkb3VibGUgbWluaW11bVpv
b21TY2FsZSgpIGNvbnN0OwogICAgIGRvdWJsZSBtYXhpbXVtWm9vbVNjYWxlKCkgY29uc3Q7CiAg
ICAgCi0gICAgT3B0aW9uYWw8Ym9vbD4gc3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPik7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBzdGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRT
dGFibGVTdGF0ZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAgICAgSlNPYmplY3RS
ZWYgY29udGVudFZpc2libGVSZWN0KCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKaW5kZXggYTA3MTVmZDYyZmU3NmMxMDJjNDQzYTFjNzc0
NmY2ZDRiODhjNzRiYi4uYTcwODgxZjM1Yzk4MjcwN2Q4NzM2ZDY5MWNkYWEyZjc3MDllMjBlZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcApAQCAtMzIsMTMg
KzMyLDEzIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV1RGX09wdGlvbmFsLCBE
aXNlbmdhZ2VkKQogewogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBvcHRpb25hbDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG9wdGlvbmFsOwogCiAgICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAgIH0KIAogICAgIHsKLSAgICAgICAg
T3B0aW9uYWw8aW50PiBvcHRpb25hbCB7IE51bGxvcHQgfTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IG9wdGlvbmFsIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCBU
RVNUKFdURl9PcHRpb25hbCwgRGlzZW5nYWdlZCkKIAogVEVTVChXVEZfT3B0aW9uYWwsIEVuZ2Fn
ZWQpCiB7Ci0gICAgT3B0aW9uYWw8aW50PiBvcHRpb25hbCB7IDEwIH07CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IG9wdGlvbmFsIHsgMTAgfTsKIAogICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0
PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgRVhQRUNUX0VRKDEwLCBvcHRpb25hbC52YWx1ZSgpKTsK
QEAgLTY0LDcgKzY0LDcgQEAgVEVTVChXVEZfT3B0aW9uYWwsIERlc3RydWN0b3IpCiAgICAgfTsK
IAogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8QT4gb3B0aW9uYWwgeyBJblBsYWNlIH07CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8QT4gb3B0aW9uYWwgeyBzdGQ6OmluX3BsYWNlIH07CiAKICAgICAg
ICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CkBAIC03
NSw4ICs3NSw4IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBEZXN0cnVjdG9yKQogVEVTVChXVEZfT3B0
aW9uYWwsIENhbGxiYWNrKQogewogICAgIGJvb2wgY2FsbGVkID0gZmFsc2U7Ci0gICAgT3B0aW9u
YWw8aW50PiBhOwotICAgIGludCByZXN1bHQgPSBhLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IGE7CisgICAgaW50IHJlc3VsdCA9IHZhbHVlT3JDb21wdXRlKGEs
IFsmXSB7CiAgICAgICAgIGNhbGxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiAzMDA7CiAgICAg
fSk7CkBAIC04NSw3ICs4NSw3IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFjaykKIAogICAg
IGEgPSAyNTA7CiAgICAgY2FsbGVkID0gZmFsc2U7Ci0gICAgcmVzdWx0ID0gYS52YWx1ZU9yQ29t
cHV0ZShbJl0geworICAgIHJlc3VsdCA9IHZhbHVlT3JDb21wdXRlKGEsIFsmXSB7CiAgICAgICAg
IGNhbGxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiAzMDA7CiAgICAgfSk7CkBAIC05NSwyMiAr
OTUsMjIgQEAgVEVTVChXVEZfT3B0aW9uYWwsIENhbGxiYWNrKQogCiBURVNUKFdURl9PcHRpb25h
bCwgRXF1YWxpdHkpCiB7Ci0gICAgT3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQxOwotICAgIE9wdGlv
bmFsPGludD4gdW5lbmdhZ2VkMjsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gdW5lbmdhZ2VkMTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGludD4gdW5lbmdhZ2VkMjsKIAotICAgIE9wdGlvbmFsPGludD4g
ZW5nYWdlZDEgeyAxIH07Ci0gICAgT3B0aW9uYWw8aW50PiBlbmdhZ2VkMiB7IDIgfTsKLSAgICBP
cHRpb25hbDxpbnQ+IGVuZ2FnZWR4MiB7IDIgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZW5n
YWdlZDEgeyAxIH07CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVuZ2FnZWQyIHsgMiB9OworICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiBlbmdhZ2VkeDIgeyAyIH07CiAKICAgICBFWFBFQ1RfVFJVRSh1
bmVuZ2FnZWQxID09IHVuZW5nYWdlZDIpOwogICAgIEVYUEVDVF9GQUxTRShlbmdhZ2VkMSA9PSBl
bmdhZ2VkMik7CiAgICAgRVhQRUNUX0ZBTFNFKGVuZ2FnZWQxID09IHVuZW5nYWdlZDEpOwogICAg
IEVYUEVDVF9UUlVFKGVuZ2FnZWQyID09IGVuZ2FnZWR4Mik7CiAKLSAgICBFWFBFQ1RfVFJVRSh1
bmVuZ2FnZWQxID09IE51bGxvcHQpOwotICAgIEVYUEVDVF9GQUxTRShlbmdhZ2VkMSA9PSBOdWxs
b3B0KTsKLSAgICBFWFBFQ1RfVFJVRShOdWxsb3B0ID09IHVuZW5nYWdlZDEpOwotICAgIEVYUEVD
VF9GQUxTRShOdWxsb3B0ID09IGVuZ2FnZWQxKTsKKyAgICBFWFBFQ1RfVFJVRSh1bmVuZ2FnZWQx
ID09IHN0ZDo6bnVsbG9wdCk7CisgICAgRVhQRUNUX0ZBTFNFKGVuZ2FnZWQxID09IHN0ZDo6bnVs
bG9wdCk7CisgICAgRVhQRUNUX1RSVUUoc3RkOjpudWxsb3B0ID09IHVuZW5nYWdlZDEpOworICAg
IEVYUEVDVF9GQUxTRShzdGQ6Om51bGxvcHQgPT0gZW5nYWdlZDEpOwogCiAgICAgRVhQRUNUX1RS
VUUoZW5nYWdlZDEgPT0gMSk7CiAgICAgRVhQRUNUX1RSVUUoMSA9PSBlbmdhZ2VkMSk7CkBAIC0x
MjAsMjIgKzEyMCwyMiBAQCBURVNUKFdURl9PcHRpb25hbCwgRXF1YWxpdHkpCiAKIFRFU1QoV1RG
X09wdGlvbmFsLCBJbmVxdWFsaXR5KQogewotICAgIE9wdGlvbmFsPGludD4gdW5lbmdhZ2VkMTsK
LSAgICBPcHRpb25hbDxpbnQ+IHVuZW5nYWdlZDI7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHVu
ZW5nYWdlZDE7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHVuZW5nYWdlZDI7CiAKLSAgICBPcHRp
b25hbDxpbnQ+IGVuZ2FnZWQxIHsgMSB9OwotICAgIE9wdGlvbmFsPGludD4gZW5nYWdlZDIgeyAy
IH07Ci0gICAgT3B0aW9uYWw8aW50PiBlbmdhZ2VkeDIgeyAyIH07CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGVuZ2FnZWQxIHsgMSB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBlbmdhZ2VkMiB7
IDIgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZW5nYWdlZHgyIHsgMiB9OwogCiAgICAgRVhQ
RUNUX0ZBTFNFKHVuZW5nYWdlZDEgIT0gdW5lbmdhZ2VkMik7CiAgICAgRVhQRUNUX1RSVUUoZW5n
YWdlZDEgIT0gZW5nYWdlZDIpOwogICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQxICE9IHVuZW5nYWdl
ZDEpOwogICAgIEVYUEVDVF9GQUxTRShlbmdhZ2VkMiAhPSBlbmdhZ2VkeDIpOwogCi0gICAgRVhQ
RUNUX0ZBTFNFKHVuZW5nYWdlZDEgIT0gTnVsbG9wdCk7Ci0gICAgRVhQRUNUX1RSVUUoZW5nYWdl
ZDEgIT0gTnVsbG9wdCk7Ci0gICAgRVhQRUNUX0ZBTFNFKE51bGxvcHQgIT0gdW5lbmdhZ2VkMSk7
Ci0gICAgRVhQRUNUX1RSVUUoTnVsbG9wdCAhPSBlbmdhZ2VkMSk7CisgICAgRVhQRUNUX0ZBTFNF
KHVuZW5nYWdlZDEgIT0gc3RkOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfVFJVRShlbmdhZ2VkMSAh
PSBzdGQ6Om51bGxvcHQpOworICAgIEVYUEVDVF9GQUxTRShzdGQ6Om51bGxvcHQgIT0gdW5lbmdh
Z2VkMSk7CisgICAgRVhQRUNUX1RSVUUoc3RkOjpudWxsb3B0ICE9IGVuZ2FnZWQxKTsKIAogICAg
IEVYUEVDVF9GQUxTRShlbmdhZ2VkMSAhPSAxKTsKICAgICBFWFBFQ1RfVFJVRShlbmdhZ2VkMSAh
PSAyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCAwZjFjMDJkOWU2Y2E4NWMwOWNiNDk2Y2IzN2YxMmMyOTlm
NThmZWY4Li42ZTllNzM4YWI1YmNlMWRmYWJmYjQyZjYwZWI3YjJmMmI2NDVjYjRmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBpbnQgdGVzdFBhcnNlSFRNTEludGVnZXIo
Y29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VI
VE1MSW50ZWdlcihpbnB1dCk7CiAgICAgRVhQRUNUX1RSVUUoISFvcHRpb25hbFJlc3VsdCk7Ci0g
ICAgcmV0dXJuIG9wdGlvbmFsUmVzdWx0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG9wdGlvbmFs
UmVzdWx0LnZhbHVlX29yKDApOwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZUhUTUxJbnRlZ2VyRmFp
bHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgdGVzdFBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0KQog
ewogICAgIGF1dG8gb3B0aW9uYWxSZXN1bHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
aW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJldHVybiBv
cHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1
ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyRmFp
bHMoY29uc3QgU3RyaW5nJiBpbnB1dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTFBhcnNlci5jcHAKaW5kZXggNWU3NmZhYjA3Y2QwMTBmMGU0MDZkYzk1ZDFmYTJi
NjgyNDAxNWJmNi4uN2M0MmQ0ZjAwOTJkMzJiMGNiZmIwYmM4ZDM1OTVlMWM0MTc2NTkxNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigw
KSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMDgsNyArMTA4
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEV4cGVjdGVkUGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51
c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQs
IG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCBvbGRVUkwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVP
cigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7
CkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0
LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFs
dWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xNTIs
NyArMTUyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy51c2VyLCBvbGRVUkwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCBv
bGRVUkwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCku
dmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFs
dWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIG9sZFVSTC5wYXRoKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmll
cigpKSk7CkBAIC0xODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNl
cyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGEKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBv
cnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQs
IHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBh
dGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVyeSwgdXJs
LnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZvaWQgY2hl
Y2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgRXhwZWN0ZWRQ
YXJ0cyYgcGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRVUkwudXNlcigp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0g
ICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7Cisg
ICAgRVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c09sZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c09sZC5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigp
KSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZl
cmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQs
IHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVy
bC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgs
IHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVyeSwgdXJsLnF1
ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpKSk7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tS
ZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC51c2VyLCBvbGRVUkwudXNlcigpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucGFzc3dvcmQsIG9sZFVSTC5wYXNzKCkpKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5ob3N0LCBvbGRVUkwuaG9zdCgpKSk7Ci0gICAg
RVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAg
RVhQRUNUX0VRKHBhcnRzT2xkLnBvcnQsIG9sZFVSTC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhdGgsIG9sZFVSTC5wYXRoKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c09sZC5xdWVyeSwgb2xkVVJMLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c09sZC5mcmFnbWVudCwgb2xkVVJMLmZyYWdtZW50SWRlbnRpZmllcigpKSk7
CkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnMKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMucGFzc3dvcmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0
LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFs
dWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3Io
MCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0zMDgs
NyArMzA4LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dv
cmQsIHVybC5wYXNzKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9z
dCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7
CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggZmFmNzAz
N2I5Njg0NWMxYWI2MWRhNTcwM2M0MTRlNzFiMWM2OTEyNS4uY2Q2ODdhMzgyYTYwNWFlMWNkNDk4
YjhlYjk5MjEwMzUyZTI2NGQyNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNDA1LDE2ICs0MDUsMTYgQEAgZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHdlYlZpZXcuc2Nyb2xsVmlldy5tYXhpbXVtWm9vbVNjYWxlOwogfQogCi1PcHRpb25hbDxib29s
PiBVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAorc3RkOjpv
cHRpb25hbDxib29sPiBVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBj
b25zdAogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAgICAgaWYgKHdl
YlZpZXcuX3N0YWJsZVN0YXRlT3ZlcnJpZGUpCiAgICAgICAgIHJldHVybiB3ZWJWaWV3Ll9zdGFi
bGVTdGF0ZU92ZXJyaWRlLmJvb2xWYWx1ZTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFi
bGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IG92ZXJyaWRlVmFsdWUpCit2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+
IG92ZXJyaWRlVmFsdWUpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsK
ICAgICBpZiAob3ZlcnJpZGVWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295450</attachid>
            <date>2016-11-26 16:45:55 -0800</date>
            <delta_ts>2016-11-26 17:35:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164199-20161126184433.patch</filename>
            <type>text/plain</type>
            <size>1227229</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
OWI0MjljMjk4ZDljZDEyMzEyOWIwNjE0OGQwZmU0ZmM5MjA5ODc5Li40Yjc3NGQ2OWE0M2YwZWQz
ODJkYzFmZThiNWRmZDY0ZTNmZTdkYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDggQEAKKzIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGlt
cGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpIGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFByZXZpb3VzIFdURjo6T3B0aW9uYWw6
Om9wZXJhdG9yPSBpcyBub3QgY29tcGF0aWJsZSB0byBzdGQ6Om9wdGlvbmFsOjpvcGVyYXRvcj0u
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw6OmVtcGxhY2UgaGFzIHRoZSBzYW1lIHNlbWFudGljcyB0
byB0aGUgcHJldmlvdXMgb25lLgorICAgICAgICBTbyB3ZSBjaGFuZ2UgdGhlIGNvZGUgdG8gdXNl
IGl0LgorCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHk6
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNl
cGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDoK
KyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rv
ci1Db21iaW5lZC5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVz
dWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlw
dENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJlc3VsdDoKKyAgICAgICAg
KiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQW5vdGhlckd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAq
IFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENh
c2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNvbW11
dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdCk6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNp
YWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAg
ICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAg
ICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmg6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2NhbGVGb3JTaGwpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKToKKyAgICAgICAgKiBiMy9C
M09wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjppbnZlcnRlZENvbXBhcmUpOgorICAgICAg
ICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAg
ICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2tt
YXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNp
YWwuaDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjppbnZlcnRlZENvbXBhcmUpOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkU2NhbGUpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpBcmc6OmlzVmFsaWRBZGRyRm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNW
YWxpZEluZGV4Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZEZvcm0p
OgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
UGF0Y2hDdXN0b206OnNob3VsZFRyeUFsaWFzaW5nRGVmKToKKyAgICAgICAgKiBiMy9haXIvQWly
Rml4T2J2aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuaDoKKyAgICAg
ICAgKiBiMy9haXIvQWlySW5zdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5z
dDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJl
Z2lzdGVyQ29hbGVzY2luZy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZik6Cisg
ICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFBDKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lOjpjdXJyZW50UG9zaXRpb24pOgorICAgICAgICAqIGRlYnVnZ2VyL0Rl
YnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJQYXVzZVBvc2l0aW9u
czo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbik6CisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXJQYXJzZURhdGEuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZmZWN0cyk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmZp
bmRQQyk6CisgICAgICAgICogZGZnL0RGR0pJVENvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5h
bCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkRGRzo6U2xvd1BhdGhHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpydW5T
bG93UGF0aEdlbmVyYXRvcnMpOgorICAgICAgICAoSlNDOjpERkc6OkpTVmFsdWVSZWdzVGVtcG9y
YXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRVbnR5cGVkQml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhEaXYpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2FsbERPTUdldHRlcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAg
KiBmdGwvRlRMSklUQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklUQ29kZTo6ZmluZFBD
KToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6
CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3RTeW5jKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdEluVGhyZWFkKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6cmVxdWVzdENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpIZWFw
Ojp3aWxsU3RhcnRDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmluaXNoQ29s
bGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24pOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0aW9uU2Nv
cGUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90LmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cFNuYXBzaG90Ojpub2RlRm9yQ2VsbCk6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdDo6bm9k
ZUZvck9iamVjdElkZW50aWZpZXIpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFJlbW90ZU9iamVjdCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcyk6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVy
LnB5OgorICAgICAgICAoX2dlbmVyYXRlX2RlY2xhcmF0aW9uc19mb3JfZW51bV9jb252ZXJzaW9u
X21ldGhvZHMpOgorICAgICAgICAoX2dlbmVyYXRlX2RlY2xhcmF0aW9uc19mb3JfZW51bV9jb252
ZXJzaW9uX21ldGhvZHMucmV0dXJuX3R5cGVfd2l0aF9leHBvcnRfbWFjcm8pOgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2lt
cGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLl9nZW5lcmF0ZV9lbnVtX2NvbnZlcnNpb25fbWV0aG9kc19mb3JfZG9tYWluLmdl
bmVyYXRlX2NvbnZlcnNpb25fbWV0aG9kX2JvZHkpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dl
ZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24t
cmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6
ZmluZFBDKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6UENUb0NvZGVPcmlnaW5NYXA6OmZpbmRQQyk6CisgICAgICAgICogaml0L1BD
VG9Db2RlT3JpZ2luTWFwLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6UnVu
dGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToK
KyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1
bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29uY3VycmVu
dEpTTG9jay5oOgorICAgICAgICAoSlNDOjpDb25jdXJyZW50SlNMb2NrZXI6OkNvbmN1cnJlbnRK
U0xvY2tlcik6CisgICAgICAgICogcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjp3cml0YWJsZSk6CisgICAg
ICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6Y29uZmlndXJhYmxlKToKKyAgICAg
ICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlKToKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Okdl
bmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVu
dHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50
czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSGFzT3duUHJv
cGVydHlDYWNoZS5oOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0eUNhY2hlOjpnZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6Y29uY3VycmVu
dEpTTWFwSGFzaCk6CisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChK
U0M6OnBhcnNlSW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pT
Q0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b051bWJlckZyb21QcmltaXRp
dmUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZSk6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzo6dG9BZGFw
dG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RNYXlCZUluZGV4
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpwdXRJbmxpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpnZXRTdHJpbmdQcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcnVudGlt
ZS9NYXRoQ29tbW9uLmg6CisgICAgICAgIChKU0M6OnNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25z
dCk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuaDoKKyAgICAgICAgKEpTQzo6dG9Qcm9wZXJ0eURlc2NyaXB0b3IpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChKU0M6OnBhcnNlSW5k
ZXgpOgorICAgICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChK
U0M6OlNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjppc1N0cmluZ093blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6U3RyaW5nT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9U
b05hdGl2ZUZyb21WYWx1ZS5oOgorICAgICAgICAoSlNDOjp0b05hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbik6CisgICAgICAgICogcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaDoKKyAg
ICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzJX
aXRob3V0Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9y
Ojp0b05hdGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpJbnRl
Z3JhbFR5cGVkQXJyYXlBZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24p
OgorICAgICAgICAoSlNDOjpGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQz
MldpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OkZsb2F0VHlwZWRBcnJheUFkYXB0b3I6
OnRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6OlVpbnQ4
Q2xhbXBlZEFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKToKKyAgICAg
ICAgKEpTQzo6VWludDhDbGFtcGVkQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENv
ZXJjaW9uKToKKwogMjAxNi0xMS0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9BU1NFTUJMRVJfV1hfRVhDTFVTSVZFIGNvZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOWYzZjhmMjkxYzMzZGZjNjVkYTc1MzVkZmFiNTU4YjM5Nzc3Y2Q2ZS4uOTQyOTVhZjYx
MDI3ZGI0MmI4OWI0MjY3Y2E0MmJlMmQ0NjU0MjliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEgQEAKKzIw
MTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFz
IFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpIGFuZCBTYW0g
V2VpbmlnLgorCisgICAgICAgIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1l
bnRhdGlvbiBvZmZlcmVkIGJ5IHRoZSBDKysxNworICAgICAgICBvcmlnaW5hbCBwcm9wb3NhbCBw
YXBlci4gSXQgaGFzIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eQorICAgICAg
ICB0byB0aGUgQysrMTcncyBvbmUuIFByZXZpb3VzIFdURjo6T3B0aW9uYWwgbGFja3Mgc2V2ZXJh
bCBmdW5jdGlvbmFsaXRpZXMuCisgICAgICAgIFRoZSBsYXJnZXN0IG9uZSBpcyB0aGUgY29ycmVj
dCBjb25zdGV4cHIgY29uc3RydWN0b3JzLiBUaGlzIGZhY3QgcHJldmVudHMKKyAgICAgICAgdXMg
ZnJvbSB1c2luZyBPcHRpb25hbDxsaXRlcmFsIHR5cGU+IGluIGNvbnN0ZXhwciBjb250ZXh0IGlu
IFdlYktpdC4KKworICAgICAgICBJbiBXZWJLaXQsIHdlIGRvIG5vdCBhbGxvdyBnbG9iYWwgY29u
c3RydWN0b3JzLiBTbyBvbmx5IHRoZSBjb25zdGV4cHIKKyAgICAgICAgY29uc3RydWN0b3IgaXMg
dGhlIHdheSB0byB1c2UgV1RGOjpPcHRpb25hbCBpbiB0aGUgc3RhdGljIGNvbnN0CisgICAgICAg
IGdsb2JhbCB2YXJpYWJsZXMuIFdURjo6T3B0aW9uYWwgaXMgdXNlZCBpbiBET01KSVQ6OkVmZmVj
dCBhbmQKKyAgICAgICAgd2Ugd291bGQgbGlrZSB0byBlbWl0IHN0YXRpYyBjb25zdCBnbG9iYWwg
dmFyaWFibGVzIHRoYXQgaW5jbHVkZXMKKyAgICAgICAgdGhpcyBET01KSVQ6OkVmZmVjdC4gVGhh
dCBpcyB0aGUgbWFpbiBtb3RpdmF0aW9uIG9mIHRoaXMgd29yay4KKyAgICAgICAgVGhpcyBmdW5j
dGlvbmFsaXR5IGFsbG93cyB0aGUgSURMIGNvZGUgZ2VuZXJhdG9yIHRvIGVtaXQgRE9NSklUCisg
ICAgICAgIHNpZ25hdHVyZXMgYXMgc3RhdGljIGNvbnN0IGdsb2JhbCB2YXJpYWJsZXMuCisKKyAg
ICAgICAgV2UgaW1wb3J0IHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb25lIGluc3RlYWQg
b2YgTExWTSBsaWJjKysncyBvbmUuCisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSBMTFZNIGxpYmMr
KydzIG9uZSBkZXBlbmRzIG9uIG1hbnkgbWFjcm8gYW5kIHR5cGVfdHJhaXRzCisgICAgICAgIG9m
ZmVyZWQgYnkgbGliYysrIGltcGxlbWVudGF0aW9uLiBBbmQgYWRvcHRpbmcgaXQgdG8gV2ViS2l0
IHJlcXVpcmVzCisgICAgICAgIGxhcmdlIG1vZGlmaWNhdGlvbiBjb21wYXJlZCB0byB0aGlzIHJl
ZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvbmUuCisgICAgICAgIEZ1cnRoZXJtb3JlLCBpdCBpcyBk
aWZmaWN1bHQgdG8gY29tcGlsZSBsaWJjKysncyBvcHRpb25hbCBpbiBvbGQgR0NDIGFuZCBWQysr
LgorICAgICAgICBJdCBhbHNvIHJlcXVpcmVzIHNvbWUgbW9yZSBtb2RpZmljYXRpb25zLiBUbyBr
ZWVwIHRoZSB0aGluZyBzaW1wbGUsCisgICAgICAgIHdlIGltcG9ydCB0aGUgcmVmZXJlbmNlIGlt
cGxlbWVudGF0aW9uIG9uZSBub3cuIE9uY2UgQysrMTcgaXMgcmVsZWFzZWQKKyAgICAgICAgYW5k
IHdlIHVwZGF0ZSB0aGUgY29tcGlsZXIgYmFzZWxpbmUsIHdlIGNhbiBzbW9vdGhseSBzd2l0Y2gg
dG8gdGhlIHN0YW5kYXJkCisgICAgICAgIGxpYnJhcnkncyBzdGQ6Om9wdGlvbmFsLgorCisgICAg
ICAgIFdlIGFsc28gYWRkIHN1cHBvcnQgZm9yIHRoZSBlbnZpcm9ubWVudCB0aGF0IGRvZXMgbm90
IHVzZSBleGNlcHRpb25zIHRvIHRoaXMKKyAgICAgICAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgIEFuZCB3ZSBhbHNvIGFkZCB2YWx1ZU9yQ29tcHV0ZSBoZWxwZXIgZnVuY3Rp
b24uIFRoYXQga2VlcHMgdGhlIGV4dGVuZGVkCisgICAgICAgIGZ1bmN0aW9uYWxpdHkgdGhhdCBw
cmV2aW91cyBXVEY6Ok9wdGlvbmFsIGhhcy4KKworICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFF1
ZXVlLmg6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkUXVldWU8RGF0YVR5cGU+Ojp0cnlHZXRN
ZXNzYWdlKToKKyAgICAgICAgKiB3dGYvRXhwZWN0ZWQuaDoKKyAgICAgICAgKFdURjo6bWFrZUV4
cGVjdGVkKToKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAgICAgICAqIHd0Zi9IYXNoVHJh
aXRzLmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8UmVmPFA+Pjo6dGFrZSk6CisgICAgICAg
ICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplR0NUaHJlYWRz
KToKKyAgICAgICAgKFdURjo6bWF5QmVHQ1RocmVhZCk6CisgICAgICAgICogd3RmL01haW5UaHJl
YWQuaDoKKyAgICAgICAgKiB3dGYvT3B0aW9uYWwuaDoKKyAgICAgICAgKHN0ZDo6ZGV0YWlsXzo6
aXNfYXNzaWduYWJsZTo6aGFzX2Fzc2lnbik6CisgICAgICAgIChzdGQ6OmRldGFpbF86Omhhc19v
dmVybG9hZGVkX2FkZHJlc3NvZjo6aGFzX292ZXJsb2FkKToKKyAgICAgICAgKHN0ZDo6ZGV0YWls
Xzo6c3RhdGljX2FkZHJlc3NvZik6CisgICAgICAgIChzdGQ6OmRldGFpbF86OmNvbnZlcnQpOgor
ICAgICAgICAoc3RkOjpudWxsb3B0X3Q6Om51bGxvcHRfdCk6CisgICAgICAgIChzdGQ6OmJhZF9v
cHRpb25hbF9hY2Nlc3M6OmJhZF9vcHRpb25hbF9hY2Nlc3MpOgorICAgICAgICAoc3RkOjpvcHRp
b25hbF9iYXNlOjpvcHRpb25hbF9iYXNlKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWxfYmFzZTo6
fm9wdGlvbmFsX2Jhc2UpOgorICAgICAgICAoc3RkOjpjb25zdGV4cHJfb3B0aW9uYWxfYmFzZTo6
Y29uc3RleHByX29wdGlvbmFsX2Jhc2UpOgorICAgICAgICAoc3RkOjpvcHRpb25hbDo6ZGF0YXB0
cik6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsOjpjb250YWluZWRfdmFsKToKKyAgICAgICAgKHN0
ZDo6b3B0aW9uYWw6Ol9fTk9FWENFUFRfKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wdGlv
bmFsKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yPSk6CisgICAgICAgIChzdGQ6
Om9wdGlvbmFsOjplbXBsYWNlKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yIC0+
KToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6Om9wZXJhdG9yICopOgorICAgICAgICAoc3RkOjpv
cHRpb25hbDo6dmFsdWUpOgorICAgICAgICAoc3RkOjpvcHRpb25hbDo6dmFsdWVfb3IpOgorICAg
ICAgICAoc3RkOjpvcGVyYXRvcj09KToKKyAgICAgICAgKHN0ZDo6b3BlcmF0b3IhPSk6CisgICAg
ICAgIChzdGQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChzdGQ6Om9wZXJhdG9yPik6CisgICAgICAg
IChzdGQ6Om9wZXJhdG9yPD0pOgorICAgICAgICAoc3RkOjpvcGVyYXRvcj49KToKKyAgICAgICAg
KHN0ZDo6X19OT0VYQ0VQVF8pOgorICAgICAgICAoc3RkOjptYWtlX29wdGlvbmFsKToKKyAgICAg
ICAgKHN0ZDo6aGFzaDxzdGQ6Om9wdGlvbmFsPFQ+Pjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChX
VEY6Ok51bGxvcHRUYWc6Ok51bGxvcHRUYWcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRp
b25hbDo6T3B0aW9uYWwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6fk9wdGlv
bmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yPSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvciBib29sKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uYWw6Om9wZXJhdG9yLT4pOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpPcHRpb25hbDo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6
OnZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6OnZhbHVlT3IpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpPcHRpb25hbDo6dmFsdWVPckNvbXB1dGUpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpPcHRpb25hbDo6YXNQdHIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpP
cHRpb25hbDo6ZGVzdHJveSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om9wZXJhdG9yPT0pOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6bWFrZU9wdGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsOjpJbXBsKToK
KyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0
ZXJhdG9yKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisKIDIwMTYtMTEtMjIg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE9uZSBtb3JlIHRpbnkg
Yml0IG9mIGZvbGxvdy11cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwM2NhOTJiNzk5NmMwYjY2YTJiZDNjZTRk
ZTVkYzg1OGY5NzdhYmYwLi4zNzg3ZTk5NGE5NDk2YjdhMTRjOTk2YTAyZWFjODdhNDEyMGNjNzE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE0NCBAQAorMjAxNi0xMS0yNiAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpv
cHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkgYW5kIFNhbSBXZWluaWcuCisKKyAgICAgICAgUmVu
YW1lIHZhbHVlT3IgdG8gdmFsdWVfb3IuIFRoaXMgaXMgc3BlY2lmaWVkIGluIEMrKzE3IHByb3Bv
c2FsLgorCisgICAgICAgIFVzZSBPcHRpb25hbDo6ZW1wbGFjZS4gQysrMTcgT3B0aW9uYWw6Om9w
ZXJhdG9yPShPcHRpb25hbCYmKSByZXF1aXJlcworICAgICAgICBlaXRoZXIgY29weSBhc3NpZ25t
ZW50IG9wZXJhdG9yIG9yIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvci4gQnV0CisgICAgICAgIERG
Rzo6SlNWYWx1ZU9wZXJhbmQgZXRjLiBvbmx5IGRlZmluZXMgbW92ZSBjb25zdHJ1Y3RvcnMgYW5k
IGRyb3AKKyAgICAgICAgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9ycy4KKworICAg
ICAgICBJdCB3YXMgT0sgaW4gdGhlIHByZXZpb3VzIFdURjo6T3B0aW9uYWwgc2luY2UgaXQgYWx3
YXlzIHVzZXMgbW92ZQorICAgICAgICBjb25zdHJ1Y3RvcnMuIEJ1dCBpdCBpcyBub3QgdmFsaWQg
aW4gQysrMTcgT3B0aW9uYWwuIFdlIHVzZSBPcHRpb25hbDo6ZW1wbGFjZQorICAgICAgICBpbnN0
ZWFkLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgdG8gdGhlIHByZXZpb3Vz
IFdURjo6T3B0aW9uYWwncworICAgICAgICBvcGVyYXRvcj0uCisKKyAgICAgICAgTm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29udGFjdEZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjp0b0xpbmVJdGVtVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaW5lSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVMaW5lSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWVyY2hhbnRDYXBhYmls
aXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU3VwcG9ydGVkTmV0d29ya3MpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9TaGlwcGluZ1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
U2hpcHBpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2hpcHBpbmdNZXRob2Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBheW1lbnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnRvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpOgorICAgICAgICAqIE1vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3QuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50Q29udGFjdDo6ZnJvbUpTKToKKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb246OmZyb21KUyk6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmV4dHJhY3Qp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlP
d25lcjo6RmV0Y2hCb2R5T3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6
OmxvYWRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9i
TG9hZGluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hIZWFkZXJzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0UmVmZXJyZXJQb2xpY3kpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWRpcmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UmVmZXJy
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVxdWVzdDo6Y2xvbmUpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdCk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUyk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNl
OjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0b3ApOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
OgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZXM6OmFsdGl0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVzOjpoZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVzOjpzcGVlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJz
b3I6OnN0cmluZ1RvRGlyZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpoYXNoKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rv
cnk6Om9wZW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6Z2V0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGxL
ZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6Omlzb2xh
dGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Z2V0QWxsS2V5cyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZl
cnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUluZGV4OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9i
amVjdFN0b3JlQ2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9i
amVjdFN0b3JlQ3Vyc29yOjprZXlEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZpcnN0SW5SZW1haW5pbmdSYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRG
b3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0UmV2ZXJzZUl0ZXJhdG9yRnJvbVJl
bWFpbmluZ1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmVDdXJzb3I6OmluY3JlbWVudEZvcndhcmRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRSZXZlcnNlSXRl
cmF0b3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZUN1cnNvci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbyk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUluZm86OmNyZWF0ZU5ld09iamVjdFN0b3JlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmg6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUluZm86OklEQk9iamVjdFN0b3JlSW5mbyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVJbmZvOjprZXlQYXRoKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OmRpc3BsYXlOYW1lRm9yVHJhY2spOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpzdHJlYW1FbmRlZFdpdGhFcnJvcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRl
T2ZmZXJTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpjcmVhdGVPZmZlckZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZUFuc3dlclN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZUFuc3dlckZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9u
RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0UmVt
b3RlRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZUZhaWxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnN0b3ApOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDSWNlQ2FuZGlkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZTo6UlRDSWNlQ2FuZGlk
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDSWNlQ2FuZGlkYXRlOjpzZHBNTGluZUluZGV4KToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppY2VDYW5kaWRhdGVGcm9tSlNPTik6CisgICAgICAgICogTW9kdWxlcy9wcm94aW1pdHkv
RGV2aWNlUHJveGltaXR5RXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNl
OjpzdGFydEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNl
OjpwdWxsRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Tb3VyY2U6
OmNsZWFuKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0Lmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Lmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAg
ICAgICogYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6SURM
VHlwZTo6bnVsbFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdDo6ZXJyb3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rp
b25hcnk6OmdldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXJCYXNl
Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldGFpbDo6VmFyaWFkaWNDb252ZXJ0ZXJC
YXNlPElETEludGVyZmFjZTxUPj46OmNvbnZlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVy
dFZhcmlhZGljQXJndW1lbnRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvclRyYWl0cz46Om5leHQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlz
ZTo6RE9NUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNlOjpvcGVyYXRvcj0p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5
Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0ZpbGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
bEhUTUxBbGxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rp
b246Oml0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJM
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVN0cmluZ0NvbnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQm9vbGVhbkNv
bnN0cmFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRG91YmxlQ29uc3RyYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnRDb25zdHJhaW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
bXBvcnRLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5k
bGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSk6CisgICAgICAgIChHZW5lcmF0
ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlRW51
bWVyYXRpb25IZWFkZXJDb250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlRGVmYXVsdFZhbHVlKToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0
NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJyYXk6OnB1dCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4pOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4pOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4pOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4pOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4pOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4pOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPik6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4pOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4pOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQ2FsbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXJnQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdDYWxsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0NhbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUNhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEJvb2xlYW5DYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRDYWxsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMkNhbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudENhbGxlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9u
ZURpY3Rpb25hcnlGaWxlPik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFk
b3dDYWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkZ1bmNXaXRoQ2xhbXBDYWxsZXIpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgICogY3J5cHRvL0NyeXB0
b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjppZGVudGlmaWVyKToKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnkuaDoKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oOgor
ICAgICAgICAqIGNyeXB0by9Kc29uV2ViS2V5Lmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OmltcG9ydEtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1I
TUFDOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFD
OjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRl
U2lnbmF0dXJlKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaDoKKyAgICAg
ICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmg6CisgICAgICAgICogY3J5cHRvL2tleXMv
Q3J5cHRvS2V5UlNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6aW1wb3J0
SndrKToKKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaDoKKyAgICAgICAgKiBj
cnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0tleVNlcmlhbGl6YXRpb25SYXc6OnJlY29uY2lsZUFsZ29yaXRobSk6CisgICAg
ICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oOgorICAgICAgICAq
IGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgICogY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oOgorICAgICAgICAqIGNyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmNhbGN1bGF0ZVN0eWxlTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayk6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGb250VHJhaXRzTWFzayk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNoZWV0OjphZGRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5o
OgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFj
ZTo6Zm9udFN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6CisgICAgICAg
ICogY3NzL0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpj
b21wbGV0ZWRMb2FkaW5nKToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuaDoKKyAgICAgICAg
KiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb3VibGVW
YWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNw
ZWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dE1hcnF1ZWVJbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KToKKyAgICAgICAgKiBjc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVMaW5lSGVpZ2h0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlSW1wb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxlU2hlZXQpOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvckZyb21WYWx1ZSk6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JD
b21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5jcHA6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmdldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmg6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpkcm9wRXZlbnREaXNwYXRjaEFz
c2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpj
bGVhcik6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbk9yLmg6CisgICAgICAgICogZG9tL0lubGlu
ZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlSW5saW5lU3R5bGVT
aGVldENhY2hlS2V5KToKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAq
IGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVDbGFzc2ljU2NyaXB0OjplcnJvcik6CisgICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkYWJsZU1vZHVsZVNjcmlwdDo6ZXJyb3IpOgorICAgICAgICAqIGRvbS9M
b2FkYWJsZU1vZHVsZVNjcmlwdC5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZVNjcmlwdC5oOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZUV2ZW50OjpNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgICogZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2
ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBkb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6Y2hlY2tTdHlsZVNoZWV0KToKKyAgICAgICAgKiBkb20vUHNldWRvRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUp
OgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1JhbmdlQm91
bmRhcnlQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRU
b0JlZm9yZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6c2V0
VG9BZnRlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6c2V0
VG9FbmRPZk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VCb3VuZGFyeVBvaW50OjppbnZh
bGlkYXRlT2Zmc2V0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpkZXRlcm1pbmVTY3JpcHRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogZG9tL1RleHREZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIGRvbS9U
ZXh0RGVjb2Rlci5oOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0
b3IpOgorICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oOgorICAgICAgICAqIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
aXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6Omhh
c0luc2VjdXJlQ29udGVudCk6CisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVG9rZW5MaXN0Ojp0b2dnbGUpOgorICAgICAgICAqIGh0bWwvRE9N
VG9rZW5MaXN0Lmg6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2spOgorICAgICAgICAq
IGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZh
c0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnQ6OnBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9y
SlNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoZWlnaHQpOgorICAgICAg
ICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpmaW5kQ2xvc2Vz
dFRpY2tNYXJrVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWF4
TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50Ojppbml0aWFsaXplU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6Omljb25UeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6YWRkKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Vs
ZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6bWluTGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
SW5wdXRUeXBlOjp3aWR0aCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUpOgorICAgICAg
ICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5j
cHA6CisgICAgICAgICogaHRtbC9MaW5rUmVsQXR0cmlidXRlLmg6CisgICAgICAgICogaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Zmlu
ZENsb3Nlc3RUaWNrTWFya1ZhbHVlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludElu
UGF0aEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpmaWxsVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFycmF5QnVmZmVyVmll
d0VsZW1lbnRTaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVuY0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2UyRCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6cmVjb25zdHJ1Y3RU
aGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VIVE1MSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWYWxpZEhU
TUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVZh
bGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVZhbGlk
SFRNTEZsb2F0aW5nUG9pbnROdW1iZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VI
VFRQUmVmcmVzaEludGVybmFsKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmg6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZURlc2NyaXB0b3JzKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRQ
b3NpdGlvbkZyb21Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJDb250YWluZXJF
bGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwv
dHJhY2svVHJhY2tFdmVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
bmlzaFhIUkxvYWRpbmdJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNldEluc3RydW1lbnRzKToK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNsZWFyUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGln
aHRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
cHJlZmxpZ2h0RmFpbHVyZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxv
YWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNw
YXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFy
VGVzdGluZ092ZXJyaWRlcyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJv
bUFzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToK
KyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6U3Vi
cmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6
bm90aWZ5RG9uZSk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjpzZXRMb2FkUHJpb3JpdHkpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6
cHJpb3JpdHkpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6c3BlY2lmaWVkTWF0aFZhcmlhbnQpOgorICAgICAgICAq
IG1hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhN
TE1hdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50Ojpz
cGVjaWZpZWREaXNwbGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTE1lbmNsb3NlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6c2VhcmNoKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNvbXB1dGVPcGVyYXRv
ckZsYWcpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MT3BlcmF0b3JFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6YXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFn
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE9wZXJhdG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaDoKKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxQYWRkZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhN
TFBhZGRlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojpj
YWNoZWRCb29sZWFuQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQ6OmNhY2hlZE1hdGhNTExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6c3BlY2lmaWVkTWF0aFZhcmlhbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojp0b09wdGlvbmFsQm9v
bCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTFNjcmlwdHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhN
TFNwYWNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxTcGFjZUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50Lmg6
CisgICAgICAgICogbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludCk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRo
TUxVbmRlck92ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFVuZGVyT3Zl
ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVW5kZXJP
dmVyRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICog
cGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6YWxpZ25lZEZp
cmVUaW1lKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmg6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxCeSk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSk6CisgICAgICAg
ICogcGFnZS9FdmVudFNvdXJjZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJy
aWRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVj
dCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcik6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpldmVudFRo
cm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUpOgorICAgICAgICAqIHBhZ2UvU2Nyb2xsVG9P
cHRpb25zLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bi5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnBvcnQpOgorICAgICAgICAq
IHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpT
ZWN1cml0eU9yaWdpbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
Ojppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YUhhc2g6Omhh
c2gpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkhhc2g6Omhhc2gpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVh
dHVyZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEaWFsb2dGZWF0dXJlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpib29sRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpmbG9hdEZlYXR1
cmUpOgorICAgICAgICAqIHBhZ2UvV2luZG93RmVhdHVyZXMuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0TWF0Y2hl
cyk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmg6Cisg
ICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJz
ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0OjpwYXJzZVBvcnQpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3QuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNjaGVkdWxlZFNjcm9s
bFVwZGF0ZTo6U2NoZWR1bGVkU2Nyb2xsVXBkYXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2Nyb2xsUG9z
aXRpb25DaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWlu
dHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29u
c3RyYWludHMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9T
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6OnNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZUlPUy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25z
dHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9MaW5rSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6aGFuZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRT
aXplQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgICog
cGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sRm9udCk6
CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFz
ZTo6YWxpZ25lZEZpcmVUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6cG9ydEFsbG93ZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL1VSTC5oOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wpOgorICAgICAgICAo
V2ViQ29yZTo6ZmluZExvbmdlc3RaZXJvU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJM
UGFyc2VyOjpwYXJzZUlQdjRQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBh
cnNlSVB2NEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVj
ZUluc2lkZUlQdjYpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRy
ZXNzSW5zaWRlSVB2Nik6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlSVB2Nkhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vVVJMUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0FzY2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrRGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrSGVpZ2h0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyOjpJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldEFwcHJveGltYXRlUG9zaXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZTo6aG90U3BvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZUNhY2hlOjpjbGVhck1ldGFkYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVDYWNoZTo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZUNhY2hlOjpmcmFtZU1ldGFkYXRhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lQ2FjaGU6OmhvdFNwb3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aG90U3BvdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWN0RnJvbVBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFV0aWxpdGllczo6cGF0aFdp
dGhTaHJpbmtXcmFwcGVkUmVjdHNGb3JPdXRsaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1
bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRw
dXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Zmx1c2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjpjb21wdXRlVmlzaWJsZUFuZENvdmVyYWdlUmVjdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldExheW91dFZpZXdwb3J0UmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6ZGF0YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlblR5cGVGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFuY2VGb3JDb2xvckJp
dG1hcEZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzOjpsb2NhbEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xp
bmU6OmxvY2FsQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGlu
ZXNGb3JUZXh0Ojpsb2NhbEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcjo6bG9jYWxCb3VuZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoOjpsb2NhbEJvdW5kcyk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzOjpsb2NhbEJvdW5kcyk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlUmVjdDo6bG9jYWxCb3VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg6OmxvY2FsQm91bmRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VFbGxpcHNlOjpsb2NhbEJv
dW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3aW5nSXRlbTo6
bG9jYWxCb3VuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6dXBkYXRlSXRlbUV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6Q29udGV4dFN0YXRlOjpjb25jYXRDVE0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjplbmNvZGVJbWFnZUpQRUcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRv
RGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6bWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hh
cmZCdXp6U2hhcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpzZWxl
Y3Rpb25SZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhcGl0YWxpemVkKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZFN5bnRoZXNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNhKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9sbE9mZnNldCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybVN0YXRlOjptYXBRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojpob3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNw
bGF5WDExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9y
dHNYRGFtYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNw
bGF5WDExLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6
OklDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bXByZXNzUkdCQUJpZ0VuZGlhblRvSlBFRyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZW5j
b2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlQ2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpzZXRPdmVycmlkZVZpc2libGVSZWN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tOgorICAgICAgICAo
LVtMZWdhY3lUaWxlSG9zdExheWVyIHJlbmRlckluQ29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmNvbnRyb2xGb250KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRy
YWNrQ29uc3RyYWludFNldE1hcDo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhVHJh
Y2tDb25zdHJhaW50U2V0TWFwOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwOjpzYW1wbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjphc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6ZnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjp2b2x1bWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmVjaG9DYW5jZWxsYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmZhY2luZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OmRldmljZUlkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpncm91cElkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1l
UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphcHBseVNpemVB
bmRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBw
bHlDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRw
b2ludE93ci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6SFRUUEhlYWRlck1h
cENvbnN0SXRlcmF0b3I6OnVwZGF0ZUtleVZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUERhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbE1heEFnZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZURhdGVWYWx1ZUluSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjphZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNlcnRpZmljYXRlSW5mbyk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxD
dXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRm
b3JtU2VuZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0luUGFydGl0aW9uRm9yVVJMKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkQnl0ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKToK
KyAgICAgICAgKiByZW5kZXJpbmcvQnJlYWtMaW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0QnJl
YWthYmxlUG9zaXRpb25Mb29zZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OmlzQnJlYWthYmxlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zv
cm0pOgorICAgICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25RdWFs
aXR5RnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6
OmNob29zZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6Om1vdmVUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6bmV4dEJyZWFrYWJsZVBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpzZXROZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OnN1YnN0cmluZ1RvUmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRC
b3g6Omh5cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpzdWJzdHJpbmdUb1Jl
bmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpoeXBoZW5hdGVkU3RyaW5n
Rm9yVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RU
ZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpPcmRlckl0ZXJhdG9yOjpyZXNldCk6CisgICAgICAgICogcmVuZGVyaW5nL09y
ZGVySXRlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6CisgICAgICAg
IChXZWJDb3JlOjpQYWludEluZm86OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tSYXJlRGF0
YTo6UmVuZGVyQmxvY2tSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RM
aW5lQmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlubGluZUJsb2Nr
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNldENhY2hlZEZsb3dU
aHJlYWRDb250YWluaW5nQmxvY2tOZWVkc1VwZGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb25zdHJhaW5M
b2dpY2FsSGVpZ2h0QnlNaW5NYXgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb25z
dHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNldE92ZXJy
aWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphZGp1c3RDb250ZW50Qm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVD
b250ZW50TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphdmFpbGFibGVM
b2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9n
aWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6aW5saW5lQmxvY2tCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvbWJp
bmVUZXh0Ojpjb21wdXRlVGV4dE9yaWdpbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNv
bWJpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6
OmxheW91dEhvcml6b250YWxCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5l
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJs
b2NrQmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhp
YmxlQm94OjpwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluU2l6ZUZyb21B
c3BlY3RSYXRpb1VzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojph
ZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1heCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bG93VGhyZWFkOjphZGRGb3JjZWRSZWdpb25CcmVhayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpzZXRHcm93dGhMaW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2s6OnNldEdyb3d0aExpbWl0Q2FwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6Z3Jvd3RoTGltaXRDYXApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OmZyZWVTcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6YXZhaWxhYmxlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEF2YWlsYWJsZVNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRG
cmVlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Om92
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bG9naWNhbEhlaWdodEZvckNoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Om1pblNpemVGb3JDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjptaW5Db250ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6bWF4Q29udGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvck5vblNwYW5u
aW5nSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6c29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50
aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1p
blRyYWNrQnJlYWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlQXV0
b1JlcGVhdFRyYWNrc0NvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmFwcGx5
U3RyZXRjaEFsaWdubWVudFRvVHJhY2tzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94Ojpjb21wdXRlRmlyc3RJbmRleGVzVmlzaWJs
ZUluUGFkZGluZ1RvcEJvdHRvbUFyZWFzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjppbmxpbmVCbG9ja0Jhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZVBvc2l0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpzdHJpbmdW
aWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpnZXRTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6Y2xlYXJTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3Vi
dHJlZURhdGE6OlNlbGVjdGlvblN1YnRyZWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2VsZWN0aW9uU3RhcnRQb3Mp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRy
ZWVEYXRhOjpzZWxlY3Rpb25FbmRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3Vi
dHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZXRTZWxlY3Rpb25TdGFydFBvcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURh
dGE6OnNldFNlbGVjdGlvbkVuZFBvcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0
cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURhdGE6OmNsZWFyU2VsZWN0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpMaW5lU3RhdGU6Omxhc3RGcmFnbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaW1wbGVMaW5lTGF5b3V0OjpjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0ZVRleHRSdW5zKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9s
aW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6V29yZFRyYWlsaW5nU3Bh
Y2U6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6Y29tbWl0TGlu
ZUJyZWFrQXRDdXJyZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0
OjpJbmxpbmVJdGVyYXRvckhpc3Rvcnk6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OklubGluZUl0ZXJhdG9ySGlzdG9yeTo6bW92ZVRv
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUh5cGhlbmF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkJyZWFraW5nQ29udGV4dDo6Y29tcHV0ZUFkZGl0aW9uYWxCZXR3ZWVuV29yZHNXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFp
bGluZ1dvcmQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTEJsb2NrOjphc2NlbnRGb3JDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1h
dGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUGFkZGVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFBh
ZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUGFkZGVkLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVC
YXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbmRHZXRSZWZlcmVu
Y2VDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJz
dExpbmVCYXNlbGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxp
bmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6
Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzZXR1cE5vblNjYWxpbmdTdHJv
a2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9h
dFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpjYWxjdWxhdGVTdHJv
a2VCb3VuZGluZ0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0OjppbnRlcnNlY3RSZXBhaW50UmVjdFdpdGhTaGFkb3dz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRRdWVyeTo6bW9kaWZ5U3RhcnRFbmRQb3NpdGlvbnNSZXNwZWN0aW5nTGlnYXR1
cmVzKToKKyAgICAgICAgKiBzdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQpOgorICAgICAgICAqIHN0
eWxlL1JlbmRlclRyZWVVcGRhdGVyLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5oOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlc29s
dmVDdXN0b21TdHlsZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09U
RkZvbnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnRTVkdUb09URkZvbnQpOgorICAgICAgICAqIHN2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92
ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3JPdmVycmlkZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMTYtMTEtMjUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIEZvbnQgTG9hZGluZ10gRm9udEZh
Y2UubG9hZCgpIHByb21pc2VzIGRvbid0IGFsd2F5cyBmaXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MWQyZThiMmFmYjM1YWM4OGM4YTI4NjFjMDFkMTY5NWRhMjRmMTk4MS4uMDY0MGFhYjczZGFhZWNj
YTE3NTJjYjI5NTcxZWE2YWNkMjU3MjUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDE2LTExLTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRh
dGlvbiBhcyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBh
bmQgU2FtIFdlaW5pZy4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6dmFsdWVfb3IuCisK
KyAgICAgICAgKiBET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tOgorICAgICAgICAoLVtE
T01IVE1MT3B0aW9uc0NvbGxlY3Rpb24gYWRkOmluZGV4Ol0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSk6CisgICAgICAgICogUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2lu
VmlldyBzZW5kRXZlbnQ6aXNEcmF3UmVjdDpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYlBheW1lbnRDb29y
ZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgor
ICAgICAgICAoLVtXZWJTZWN1cml0eU9yaWdpbiBwb3J0XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MVmlldy5tbToKKyAgICAgICAgKHRvQWN0aW9uKToKKyAgICAgICAgKHRvVGFnKToKKwog
MjAxNi0xMS0yMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtN
YWNdIEluIExlZ2FjeSBXZWJLaXQsIHByZXNzaW5nIGFuIGFycm93IGtleSBpbiBlZGl0YWJsZSBj
b250ZW50IGRvZXNu4oCZdCBoaWRlIHRoZSBtb3VzZSBjdXJzb3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRl
eCAzYmI4YTY0YjJlOTc2MDJlYjIxM2ViNzMxNTQzZWUwNTRjMjBjZjY5Li4yMmZiOWI0ZjQ3YWQx
YjE3MWQ5Nzk1NjcwZjMwZTQ2ZTFkN2FiZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVu
dGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRp
IGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFVzZSBXVEY6Ok9wdGlvbmFsOjp2YWx1ZV9vci4K
KworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJTZWN1cml0eU9yaWdpbjo6cG9ydCk6CisKIDIwMTYtMTEtMTkgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIFdoZW4gem9vbWVk
IGluIGFuZCBwYW5uaW5nIG9uIHBhZ2VzIHdpdGggZml4ZWQgYmFycywgcGFydHMgb2YgdGhlIGJh
cnMgYXJlIHNvbWV0aW1lcyBtaXNzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjMwZGQyMmI5ODEzNDU0ZTM5
ODdhZTBkNTVkNzQwMjJlMjE1OTI0Zi4uZjU2ZmEzMTJiM2RiZTNhZTc1ODFkOWI3MTNhY2RkNWEz
ZTgwOWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MSBAQAorMjAxNi0xMS0yNiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQg
c3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkgYW5kIFNhbSBXZWluaWcuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJlc3BvbnNl
SGFzRXhwaXJlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
Q29kZXJzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8c3RkOjpvcHRp
b25hbDxUPj46OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q29kZXI8
c3RkOjpvcHRpb25hbDxUPj46OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6Q29kZXI8T3B0aW9uYWw8VD4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPE9wdGlvbmFsPFQ+Pjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZWFkT3JNYWtlU2FsdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlByZWxv
YWRlZEVudHJ5OjpQcmVsb2FkZWRFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnk6OnJldmFsaWRhdGlvblJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RhdGlzdGljczo6cmVjb3JkTm90VXNpbmdDYWNoZUZvclJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZFJl
dHJpZXZhbEZhaWx1cmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3Rp
Y3M6OnF1ZXJ5V2FzRXZlclJlcXVlc3RlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OnN0b3JlQm9keUFzQmxvYik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6ZW5jb2RlUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpv
cHRpb25hbDxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8c3RkOjpv
cHRpb25hbDxUPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V1RGOjpP
cHRpb25hbDxUPj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V1RGOjpPcHRpb25hbDxUPj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhS
ZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogUGxh
dGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVk
TWVtb3J5OjptYXApOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAoY2xhc3NfdGVtcGxhdGVfaGVhZGVycyk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElT
ZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHA6CisgICAgICAg
IChXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydCk6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25TdGF0
ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW06CisgICAgICAgIChXZWJLaXQ6OnR5
cGVGcm9tT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6c2VuZFNlY0l0ZW1SZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKC1bV0tTZWN1cml0
eU9yaWdpbiBwb3J0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX25hdmlnYXRpb25HZXN0dXJlRGlkRW5kXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaDoKKyAgICAgICAg
KFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6c2V0Q3Vyc29yKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICh0b0NvcmVTY3JvbGxiYXJTdHls
ZSk6CisgICAgICAgICh0b0FQSVNjcm9sbGJhclN0eWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRT
dW1tYXJ5SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2ViRnJhbWVJREZvckhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzd2l0Y2hUb0Jyb3dzaW5nQ29u
dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpldmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlVmlld0V4
cG9zZWRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldE92ZXJsYXlTY3Jv
bGxiYXJTdHlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpvdmVybGF5U2Nyb2xs
YmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eTo6c2V0Vmlld0V4cG9zZWRSZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVE
aWRTY3JvbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5n
VHJlZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGVDcmVhdGlvblRpbWUpOgorICAgICAg
ICAoV2ViS2l0OjpmaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgICogVUlQcm9jZXNzL1N0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1l
ZGlhRGV2aWNlc0ZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrRm9yd2Fy
ZExpc3RTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9y
ZUZyb21TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFSZWNvcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9zY3JvbGxPZmZzZXRGb3JFdmVudDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
aW50ZXJwcmV0S2V5RXZlbnQ6aXNDaGFyRXZlbnQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVG
b3JtRGF0YUVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVGb3JtRGF0YUVsZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVWMVNlc3Npb25IaXN0b3J5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdFeHBv
c2VkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50
Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZp
b3JPdmVycmlkZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVk
UERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9tUERG
Vmlld1RvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9t
UERGVmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpib3VuZHNPblNj
cmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OnBlcmZvcm1GcmFtZUxvYWRVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6ZXZhbHVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZv
UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBs
dWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TY3JvbGxp
bmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNldFZpZXdFeHBvc2VkUmVjdCk6CisKIDIwMTYtMTEtMjUgIE1pY2hhZWwg
Q2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZvbGxv
dy11cCBmaXhlcyB0byByMjA4OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKaW5kZXggODcyOGFk
NzJiNTE0M2FhZGZjOGJjM2M4OGEyNDg0M2IxNDJmMjUwNy4uNWUzZWU4MmE2MTNiYTRiNzUzNDYy
NTVjNDI5NmFiZTAzNzBhYmU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtODUsNyAr
ODUsNyBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRlczoKICNkZWZpbmUgREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQp
IFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBCdWlsdGluc0dl
bmVyYXRvclRlbXBsYXRlczoKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVy
biB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9y
VGVtcGxhdGVzOgogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJu
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygp
LmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIEJ1aWx0aW5zR2VuZXJhdG9y
VGVtcGxhdGVzOgogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3Io
SlNDOjpWTSYgdm0pIFxcCiB7XFwKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFxcCi0gICAgcmV0dXJu
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygp
LmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS4ke29iamVjdE5hbWVMQ31CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwg
c18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8k
e29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVp
bHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJv
bWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKaW5kZXggZmFmNDQ5OTFmMGNiNTdhNDJlZDk4ZjNkZTA4
ZDdjYTExM2M0NDc5ZS4uOWJiMjFkNjAzNzlmYjQ0MDI0MjI2YjdmODcwMjc1Njg1N2IwMzBlZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0CkBA
IC0xNTIsNyArMTUyLDcgQEAgY29uc3QgY2hhciogc19idWlsdGluUHJvbWlzZUZ1bGZpbGxQcm9t
aXNlQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29k
ZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFt
ZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNv
ZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7
IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAj
dW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDYxMWFlZWY0NDk5YThmNmU4NTJiNDQ5
ZjJjOWMzZTE4MDlhZTVlNGQuLjg3ZmRhZWUzOGVkYTY2OTc5YjJlODc5YTU0ZWRkYTNiYzRlYTEy
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNlcGFyYXRlLmpzLXJlc3Vs
dApAQCAtMTUxLDcgKzE1MSw3IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxs
UHJvbWlzZUNvZGUgPQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUs
IGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUq
IGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5z
aWMpOyB9CiBKU0NfRk9SRUFDSF9CVUlMVElOLlBST01JU0VfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
SmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5cGUtQ29tYmluZWQuanMtcmVzdWx0CmluZGV4
IDY4NzY4OGFiZjdiOGY5YmI4MzdkZmU3MWNhZGUxMDMwNTU3MTg2YmYuLjZiZjY5NmZkZGQ1MTJh
NWJhMzQwMTQ5OTNhYjAwMjRlMzNiNmU2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0
aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LnByb3RvdHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKQEAgLTE3Niw3ICsxNzYsNyBAQCBjb25zdCBj
aGFyKiBzX2J1aWx0aW5Qcm90b3R5cGVGb3JFYWNoQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkg
XAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291
cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpz
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3Vs
dAppbmRleCA5ZGFkYzU2OGExMjA2YTUwMjE5ZDRhZjE3MTZlMGYzNTkyOGQ1MTcwLi5kMGM4ZjI2
ZWYxOGE2MmVmMWZhZDliNzM5MDliMTEyNTkyN2NmZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUt
QnVpbHRpbi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0xNzUsNyArMTc1LDcgQEAg
Y29uc3QgY2hhciogc19idWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQogI2RlZmluZSBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3Vu
dCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpW
TSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICBy
ZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6
bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CiBKU0NfRk9SRUFDSF9CVUlMVElO
LlBST1RPVFlQRV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVm
IERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWls
dGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNv
bnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdAppbmRleCA2N2JlZDY0OTUwMTBhYWJlNDdhNmIx
M2M5ZmNlZGQ0NDYwYWZhNzYzLi4wMjNhODI5OGM0Y2I0NTQ1YjUzYTcwNWJlN2ZmYjgyZGM3MjFj
MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWls
dGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQu
anMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1Db21iaW5lZC5q
cy1yZXN1bHQKQEAgLTE4OSw3ICsxODksNyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Db25zdHJ1
Y3RvckZyb21Db2RlID0KICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1l
LCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
KiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2bS5i
dWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0u
YnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygp
LT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMo
KS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmlu
c2ljKTsgfQogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlw
dENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMDk2MjAxMzI3YTI5
NmQxOWJmZTI4NDBjODY0Y2EyNGIwOWU0OTllYS4uODAwMGI2OTYzODQ3YzdiYjE4ZmJiNmRiMjg4
MzY3YzhlYTlhZjM5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9y
LVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3It
U2VwYXJhdGUuanMtcmVzdWx0CkBAIC0xODgsNyArMTg4LDcgQEAgY29uc3QgY2hhciogc19idWls
dGluQ29uc3RydWN0b3JGcm9tQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRP
Uihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICBy
ZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxp
bmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5h
bWUjI0ludHJpbnNpYyk7IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5DT05TVFJVQ1RPUl9CVUlMVElO
X0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dF
TkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMt
Q29tYmluZWQuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNv
bWJpbmVkLmpzLXJlc3VsdAppbmRleCBiZjhhNDZjZjE4NDliMTI3ZWUzNTViNTk0ZDNjNGYxYzk5
OGVkZGZhLi44Y2JiNTM5YmU3YTlkY2NlOGE1MTg3ZDFiMjI4Mjg3OTAxN2ExNDdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3Rl
ZC9KYXZhU2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1lcy1Db21iaW5lZC5qcy1yZXN1
bHQKQEAgLTEzOSw3ICsxMzksNyBAQCBjb25zdCBjaGFyKiBzX2ludGVybmFsQ2xhc2hpbmdOYW1l
c0lzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VO
RVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAot
ICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwg
TnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgcmV0dXJuIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWls
dGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNj
b2RlTmFtZSMjSW50cmluc2ljKTsgfQogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS1Bbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLUFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJl
c3VsdAppbmRleCA4Zjg0NTExMjc4MjM3OTM1MmVjODU0ZDQ4MTJiNWU4NjQ3Mjc3ZmM5Li5hZDUz
MGIyZjU1YjdmOGI2MjU0NWNlMjcwNjRiYWM1ODkwZjViNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFu
b3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3Jl
LUFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMjE0
LDcgKzIxNCw3IEBAIGNvbnN0IGNoYXIqIHNfYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5M
ZXRzRmV0Y2hDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJh
dG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVy
biBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1
aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0
aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFub3RoZXJH
dWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRl
cm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBz
XyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9BTk9USEVSR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJp
dHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5
Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMjljZTIxODYwYTU3OTc4
ZTMyMDM3NDI0OGE1Y2Q4OTE1ZjlkOWQxMi4uZjkxYjZkOWNjZTE0NjJmY2QzYzZkMTFlNzJlNGQx
OTI5MGMzMzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0
cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmQtU2Vw
YXJhdGUuanMtcmVzdWx0CkBAIC0xODQsNyArMTg0LDcgQEAgY29uc3QgY2hhciogc19hcmJpdHJh
cnlDb25kaXRpb25hbEd1YXJkSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCiAg
ICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS5hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYXJiaXRy
YXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLmFyYml0cmFyeUNvbmRpdGlvbmFsR3VhcmRCdWlsdGlucygpLmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMo
KS5hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCks
IHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZP
UkVBQ0hfQVJCSVRSQVJZQ09ORElUSU9OQUxHVUFSRF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
V2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA3YzIwMDI4ODIzMGQzNTUzYWUxYjBiZTJh
MDM4OWI3ZWE1YzcyMzA5Li5lOTcxNzU1MWI3MDlhYWE1YjdmNTA1ZDhlMTI3OWVmMTUxODhmM2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTg0LDcgKzE4NCw3
IEBAIGNvbnN0IGNoYXIqIHNfZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZSA9CiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXAoge1wKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1cm4gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuZ3Vh
cmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+
bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWlsdGluQnVp
bHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5q
cy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0
CmluZGV4IDIyZTdhNzQ3NmZlZTk0M2U1MWI5Y2ZhOTUwZjQ1MDhlZTkxYjg5NzkuLjAzOWNjYzEy
ZDI2MjhlMjE1OTMzYTY4MWI2OTdjM2IzMzE5N2M1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50
ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMjE2LDcgKzIxNiw3IEBAIGNvbnN0
IGNoYXIqIHNfZ3VhcmRlZEludGVybmFsQnVpbHRpbklzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2Rl
ID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwg
TnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERh
dGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5j
b2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgp
LCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9G
T1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElO
X0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRl
ZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IGFjMTBhMTFhNTAwNGNlMzZkODRmNmIz
ZGJhMmYzYjQ0MjY2ZTMzODUuLmYxZGNhY2U5ZTQ3ZTg4YTc1MDU2OThkOGVhMGNkMTBiM2Q0Mjk0
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTc4LDcg
KzE3OCw3IEBAIGNvbnN0IGNoYXIqIHNfdW5ndWFyZGVkQnVpbHRpbklzUmVhZGFibGVTdHJlYW1M
b2NrZWRDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9y
KEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAotICAgIHJldHVybiBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCku
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEt
PmJ1aWx0aW5GdW5jdGlvbnMoKS51bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMj
RXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkudW5n
dWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRF
REJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1T
ZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0
CmluZGV4IGQ1YmU2MmYwNzM3M2YyYTdmZWYyNzZhZGVjZWE0YmRlZTMxMDcxOTAuLmQyMTYyNmRh
NDAxYjM1Y2U1NzZkYTNmMjMxNWNjMWQ3MzhiNDMxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2Fz
aW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFy
YXRlLmpzLXJlc3VsdApAQCAtMjY3LDcgKzI2Nyw3IEBAIGNvbnN0IGNoYXIqIHNfeG1sQ2FzaW5n
VGVzdFVybENhc2luZ1Rlc3RDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGll
bnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXAot
ICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1
aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2Uo
KSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVu
dERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lO
R1RFU1RfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNjU0NjEwNzBhYjFkNjBkZGFjMDA3
YWM4MzgyNjJmOGRjM2JkNTNlZC4uZTM4MDU3Yjc0ODAzYzMxZjZjZTgyMTcwMGYzMjQ0ODA4ZTVi
MTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKQEAgLTMyOTIsNyArMzI5Miw3IEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02NEFzc2VtYmxlciwg
TWFjcm9BCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbmFsQ29uZGl0aW9uPihB
Uk02NEFzc2VtYmxlcjo6aW52ZXJ0KHN0YXRpY19jYXN0PEFSTTY0QXNzZW1ibGVyOjpDb25kaXRp
b24+KGNvbmQpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFJlc3VsdENvbmRpdGlv
bj4gY29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQp
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVzdWx0Q29uZGl0aW9uPiBjb21tdXRlQ29tcGFy
ZVRvWmVyb0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKICAgICB7CiAgICAgICAg
IHN3aXRjaCAoY29uZCkgewogICAgICAgICBjYXNlIEVxdWFsOgpAQCAtMzMwNSw3ICszMzA1LDcg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFSTTY0QXNzZW1ibGVyLCBNYWNyb0EKICAgICAgICAgICAgIHJldHVybiBQb3NpdGl2ZU9y
WmVybzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggY2FmNzkyYTRiMjJlNDBiOGE2Nzc0
ODRlYTA1Mjc4ODUxMTFhODI2OC4uZGFhMjNjM2JiY2JmMGMxNzM4ZmNmNzQzZjFlODJmZTk5ODZh
N2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjY1Niw3ICsyNjU2LDcgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxYODZB
c3NlbWJsZXIsIE1hY3IKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxS
ZXN1bHRDb25kaXRpb24+IGNvbW11dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdENvbmRpdGlvbj4g
Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKICAgICAgICAgY2FzZSBFcXVhbDoKQEAgLTI2
NjksNyArMjY2OSw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8WDg2QXNzZW1ibGVyLCBNYWNyCiAgICAgICAgICAgICByZXR1
cm4gUG9zaXRpdmVPclplcm87CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0No
ZWNrU3BlY2lhbC5jcHAKaW5kZXggODY2MWJiZDVjYzdhZGFiM2I1YTVkMmZiZTIzMDYwZGIxYzA3
OTU3OC4uNmY3ODI2Y2I1ZjlkZjRjODk5MWVjZTBhNThkNjcxOTgyZGNmMDU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCkBAIC0xMTUsNyArMTE1LDcg
QEAgdm9pZCBDaGVja1NwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVk
TGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxsYmEKICAgICAgICAgICAgIGNhbGxiYWNrKGluc3QuYXJn
c1sxICsgaW5kZXhdLCByb2xlLCB0eXBlLCB3aWR0aCk7CiAgICAgICAgIH0pOwogCi0gICAgT3B0
aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXg7CiAgICAgaWYgKG1fY2hlY2tLaW5kLm9w
Y29kZSA9PSBCcmFuY2hBZGQzMiB8fCBtX2NoZWNrS2luZC5vcGNvZGUgPT0gQnJhbmNoQWRkNjQp
CiAgICAgICAgIGZpcnN0UmVjb3ZlcmFibGVJbmRleCA9IDE7CiAgICAgZm9yRWFjaEFyZ0ltcGwo
bnVtQjNBcmdzKGluc3QpLCBtX251bUNoZWNrQXJncyArIDEsIGluc3QsIG1fc3RhY2ttYXBSb2xl
LCBmaXJzdFJlY292ZXJhYmxlSW5kZXgsIGNhbGxiYWNrKTsKQEAgLTEzNSwxMSArMTM1LDExIEBA
IGJvb2wgQ2hlY2tTcGVjaWFsOjphZG1pdHNTdGFjayhJbnN0JiBpbnN0LCB1bnNpZ25lZCBhcmdJ
bmRleCkKICAgICByZXR1cm4gYWRtaXRzU3RhY2tJbXBsKG51bUIzQXJncyhpbnN0KSwgbV9udW1D
aGVja0FyZ3MgKyAxLCBpbnN0LCBhcmdJbmRleCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBD
aGVja1NwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGluc3QpCitzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBDaGVja1NwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmIGlu
c3QpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBicmFuY2hEZWYgPSBoaWRkZW5CcmFu
Y2goaW5zdCkuc2hvdWxkVHJ5QWxpYXNpbmdEZWYoKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gYnJhbmNoRGVmID0gaGlkZGVuQnJhbmNoKGluc3QpLnNob3VsZFRyeUFsaWFzaW5n
RGVmKCkpCiAgICAgICAgIHJldHVybiAqYnJhbmNoRGVmICsgMTsKLSAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hl
Y2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJh
dGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1NwZWNpYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3Bl
Y2lhbC5oCmluZGV4IGFlYzE4OTcxNWVjMDRmM2UwYmU5NDliZDM4NmZjZmUwYTc1OTNhY2QuLmFh
N2YyZmVhYjljODQxNTk4YzgxYTNhNTQxZTU5N2MzYzgzNGZiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgY2xhc3MgQ2hl
Y2tTcGVjaWFsIDogcHVibGljIFN0YWNrbWFwU3BlY2lhbCB7CiAgICAgdm9pZCBmb3JFYWNoQXJn
KEFpcjo6SW5zdCYsIGNvbnN0IFNjb3BlZExhbWJkYTxBaXI6Okluc3Q6OkVhY2hBcmdDYWxsYmFj
az4mKSBvdmVycmlkZTsKICAgICBib29sIGlzVmFsaWQoQWlyOjpJbnN0Jikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBhZG1pdHNTdGFjayhBaXI6Okluc3QmLCB1bnNpZ25lZCBhcmdJbmRleCkgb3ZlcnJp
ZGU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKEFpcjo6SW5z
dCYpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFz
aW5nRGVmKEFpcjo6SW5zdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gTk9URTogdGhlIGdlbmVyYXRl
IG1ldGhvZCB3aWxsIGdlbmVyYXRlIHRoZSBoaWRkZW4gYnJhbmNoIGFuZCB0aGVuIHJlZ2lzdGVy
IGEgTGF0ZVBhdGggdGhhdAogICAgIC8vIGdlbmVyYXRlcyB0aGUgc3RhY2ttYXAuIFN1cGVyIGNy
YXp5IGR1ZGUhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4
IDk3NTkyMjZlNTJiODgwOWFiNTA0YTk2YjViZGQ4MWI3NTEwODNkZDIuLjQ5MGJhZTQ0NTJjYTZj
ZTA5N2VkYTNlMDRiNDlhMzI0MGM3ZmUyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCkBAIC00MjcsMTIgKzQyNywxMiBAQCBjbGFzcyBMb3dlclRvQWlyIHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBzY2FsZUZvclNobChWYWx1ZSogc2hsLCBpbnQzMl90IG9mZnNldCwgT3B0aW9uYWw8QXJnOjpX
aWR0aD4gd2lkdGggPSBOdWxsb3B0KQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxl
Rm9yU2hsKFZhbHVlKiBzaGwsIGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEFyZzo6V2lk
dGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKHNobC0+b3Bjb2Rl
KCkgIT0gU2hsKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIXNobC0+Y2hpbGQoMSktPmhhc0ludDMyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHVuc2lnbmVkIGxvZ1NjYWxlID0gc2hsLT5jaGlsZCgxKS0+YXNJbnQz
MigpOwogICAgICAgICBpZiAoc2hsLT50eXBlKCkgPT0gSW50MzIpCiAgICAgICAgICAgICBsb2dT
Y2FsZSAmPSAzMTsKQEAgLTQ0MiwxMCArNDQyLDEwIEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAg
ICAgICAvLyB0byBzaWduZWQgc2luY2UgdGhhdCdzIHdoYXQgYWxsIG9mIG91ciBBUElzIHdhbnQu
CiAgICAgICAgIGludDY0X3QgYmlnU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvZ1NjYWxlKTsKICAgICAgICAgaWYgKCFpc1JlcHJlc2Vu
dGFibGVBczxpbnQzMl90PihiaWdTY2FsZSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHVuc2lnbmVkIHNjYWxl
ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYmlnU2NhbGUpOwogICAgICAgICBpZiAoIUFyZzo6aXNW
YWxpZEluZGV4Rm9ybShzY2FsZSwgb2Zmc2V0LCB3aWR0aCkpCi0gICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biBzY2FsZTsKICAgICB9CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsK
ICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IGFkZHJlc3MtPmNoaWxkKDEpOwogCiAgICAgICAg
ICAgICBhdXRvIHRyeUluZGV4ID0gWyZdIChWYWx1ZSogaW5kZXgsIFZhbHVlKiBiYXNlKSAtPiBB
cmcgewotICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9y
U2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKGluZGV4LCBvZmZzZXQsIHdpZHRoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXNjYWxlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJn
KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGluZGV4LT5jaGlsZCgw
KSkgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFzZSkpCkBAIC0xOTM0LDcgKzE5MzQsNyBAQCBjbGFz
cyBMb3dlclRvQWlyIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYXV0byB0cnlTaGwg
PSBbJl0gKFZhbHVlKiBzaGwsIFZhbHVlKiBvdGhlcikgLT4gYm9vbCB7Ci0gICAgICAgICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChzaGwsIG9mZnNldCk7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZSA9IHNjYWxlRm9yU2hsKHNobCwg
b2Zmc2V0KTsKICAgICAgICAgICAgIGlmICghc2NhbGUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgaWYgKCFjYW5CZUludGVybmFsKHNobCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRleCAzYzdmZWRlNDUwNGQ3NWYxM2ZlOWUyOTM0NWJj
YTI3Nzg3Mzc4MzkyLi5hMGFhNWE5OTA2OTc0OGUzOTRhYjliYmNlNjZkOWNhZmQ3ZTc2YTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKLU9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0
ZWRDb21wYXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKK3N0ZDo6b3B0aW9uYWw8T3Bjb2Rl
PiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAob3Bjb2RlKSB7CiAgICAgY2FzZSBFcXVhbDoKQEAgLTQyLDE5ICs0MiwxOSBAQCBPcHRpb25h
bDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUpCiAgICAg
Y2FzZSBMZXNzVGhhbjoKICAgICAgICAgaWYgKGlzSW50KHR5cGUpKQogICAgICAgICAgICAgcmV0
dXJuIEdyZWF0ZXJFcXVhbDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBHcmVhdGVyVGhhbjoKICAgICAgICAgaWYgKGlzSW50
KHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIExlc3NFcXVhbDsKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBMZXNzRXF1YWw6
CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhh
bjsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgY2FzZSBHcmVhdGVyRXF1YWw6CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAg
ICAgICAgIHJldHVybiBMZXNzVGhhbjsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBBYm92ZToKICAgICAgICAgcmV0dXJuIEJl
bG93RXF1YWw7CiAgICAgY2FzZSBCZWxvdzoKQEAgLTY0LDcgKzY0LDcgQEAgT3B0aW9uYWw8T3Bj
b2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogICAgIGNhc2Ug
QmVsb3dFcXVhbDoKICAgICAgICAgcmV0dXJuIEFib3ZlOwogICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCBjNjhhYWJiMGRiN2FjODE1ODI0
NTFhNDNiN2Q1ZDVkY2VlMzgyNGZiLi45NTZkYmE5OWFkYTJjYTAzMmQ4MjI0NDQ1YmE3MTZhY2Y5
ZmE4NTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtMjY1LDcgKzI2NSw3
IEBAIGlubGluZSBib29sIGlzQ2hlY2tNYXRoKE9wY29kZSBvcGNvZGUpCiAgICAgfQogfQogCi1P
cHRpb25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOworc3RkOjpvcHRp
b25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUsIFR5cGUpOwogCiBpbmxpbmUgT3Bj
b2RlIGNvbnN0UHRyT3Bjb2RlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1BhdGNocG9pbnRTcGVjaWFsLmNwcAppbmRleCA3MWFkYWM5ZDJhOTgzY2M5Y2ZiYjlmODcxYjk1
NDRkZTFkMmMwMzQzLi5jNWZjNTg4NWQzYWNhZjg5NWM4YzljMDFkYWY4ODI3MWQ2YzFlMjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgUGF0Y2hwb2ludFNwZWNpYWw6OmZvckVhY2hBcmcoSW5z
dCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDCiAgICAgICAgIGNhbGxi
YWNrKGluc3QuYXJnc1thcmdJbmRleCsrXSwgcm9sZSwgaW5zdC5vcmlnaW4tPmFpclR5cGUoKSwg
aW5zdC5vcmlnaW4tPmFpcldpZHRoKCkpOwogICAgIH0KIAotICAgIGZvckVhY2hBcmdJbXBsKDAs
IGFyZ0luZGV4LCBpbnN0LCBTYW1lQXNSZXAsIE51bGxvcHQsIGNhbGxiYWNrKTsKKyAgICBmb3JF
YWNoQXJnSW1wbCgwLCBhcmdJbmRleCwgaW5zdCwgU2FtZUFzUmVwLCBzdGQ6Om51bGxvcHQsIGNh
bGxiYWNrKTsKICAgICBhcmdJbmRleCArPSBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsg
aS0tOykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3Bl
Y2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3Bw
CmluZGV4IDhjZjgxZDAzN2ExYzkwZmIwOGM4MjU3MTc4MmM3YmY4NTBmYjc2NDEuLmI1YWE2YzNm
ZmVjMDg5OTE2OWYxNjk4NTQwMGU3MDc4MzZiYWQ1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcApAQCAtNzMsNyArNzMsNyBAQCBSZWdpc3Rl
clNldCBTdGFja21hcFNwZWNpYWw6OmV4dHJhRWFybHlDbG9iYmVyZWRSZWdzKEluc3QmIGluc3Qp
CiAKIHZvaWQgU3RhY2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCgKICAgICB1bnNpZ25lZCBu
dW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywKLSAgICBJbnN0JiBp
bnN0LCBSb2xlTW9kZSByb2xlTW9kZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFi
bGVJbmRleCwKKyAgICBJbnN0JiBpbnN0LCBSb2xlTW9kZSByb2xlTW9kZSwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4LAogICAgIGNvbnN0IFNjb3BlZExhbWJk
YTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKICAgICBTdGFja21hcFZhbHVl
KiB2YWx1ZSA9IGluc3Qub3JpZ2luLT5hczxTdGFja21hcFZhbHVlPigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAppbmRleCBiZDZhM2I1NDc0ODk4NzY1
OTNlNTUxZDZlMjgxYjNkYmJjNjc3YTE3Li45N2EwODEzZDFkYzU4MTllMGIxNzgyNGU3MGZiZThk
NDkyMDkyYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21h
cFNwZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNp
YWwuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBTdGFja21hcFNwZWNpYWwgOiBwdWJsaWMgQWly
OjpTcGVjaWFsIHsKICAgICAvLyBzdWJjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoYXQuCiAgICAg
dm9pZCBmb3JFYWNoQXJnSW1wbCgKICAgICAgICAgdW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywg
dW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsCi0gICAgICAgIEFpcjo6SW5zdCYsIFJvbGVNb2Rl
LCBPcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4LAorICAgICAgICBBaXI6
Okluc3QmLCBSb2xlTW9kZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RSZWNvdmVyYWJs
ZUluZGV4LAogICAgICAgICBjb25zdCBTY29wZWRMYW1iZGE8QWlyOjpJbnN0OjpFYWNoQXJnQ2Fs
bGJhY2s+Jik7CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkSW1wbCgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcAppbmRleCA2NDQxMGFjNTRmYzk1ZDYzYTdkNTE5MDMzYTg4ZWUzMGYwMWM5
NzUwLi5iNGZjNDMzNjk5ZDAxYWE2MGIzM2ZmMGUxMDMzMWY4M2I0ZjRmMGVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgVmFsdWUqIFZhbHVl
OjppbnZlcnRlZENvbXBhcmUoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogewogICAgIGlmICghbnVt
Q2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKE9wdGlvbmFsPE9w
Y29kZT4gaW52ZXJ0ZWRPcGNvZGUgPSBCMzo6aW52ZXJ0ZWRDb21wYXJlKG9wY29kZSgpLCBjaGls
ZCgwKS0+dHlwZSgpKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRP
cGNvZGUgPSBCMzo6aW52ZXJ0ZWRDb21wYXJlKG9wY29kZSgpLCBjaGlsZCgwKS0+dHlwZSgpKSkg
ewogICAgICAgICBBU1NFUlQoIWtpbmQoKS5oYXNFeHRyYUJpdHMoKSk7CiAgICAgICAgIHJldHVy
biBwcm9jLmFkZDxWYWx1ZT4oKmludmVydGVkT3Bjb2RlLCB0eXBlKCksIG9yaWdpbigpLCBjaGls
ZHJlbigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCAy
ZTllNTdkNmNlMTFkMGY0MDkwZTIwMmI4ZTRiNWY5ZjVjNmY1YzZkLi4xM2RiMWNlN2VmOTc4Y2Rh
YjcxYjdhZjM3YzUyMWZkOGEyOGE4Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgKQEAgLTU0NSw3ICs1NDUsNyBAQCBjbGFzcyBBcmcgewogICAgIH0KIAogICAgIC8vIElm
IHlvdSBkb24ndCBwYXNzIGEgV2lkdGgsIHRoaXMgb3B0aW1pc3RpY2FsbHkgYXNzdW1lcyB0aGF0
IHlvdSdyZSB1c2luZyB0aGUgcmlnaHQgd2lkdGguCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFNj
YWxlKHVuc2lnbmVkIHNjYWxlLCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBOdWxsb3B0KQorICAg
IHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgc3RkOjpvcHRpb25hbDxX
aWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHNjYWxl
KSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTEwODUsNyArMTA4NSw3IEBAIGNsYXNzIEFyZyB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRk
ckZvcm0oaW50MzJfdCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IE51bGxvcHQpCisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChpc1g4
NigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCBjbGFz
cyBBcmcgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wg
aXNWYWxpZEluZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgaW50MzJfdCBvZmZzZXQsIE9wdGlvbmFs
PFdpZHRoPiB3aWR0aCA9IE51bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEluZGV4Rm9y
bSh1bnNpZ25lZCBzY2FsZSwgaW50MzJfdCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdp
ZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkU2NhbGUoc2Nh
bGUsIHdpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMjQsNyArMTEyNCw3
IEBAIGNsYXNzIEFyZyB7CiAgICAgLy8gSWYgeW91IGRvbid0IHBhc3MgYSB3aWR0aCB0aGVuIHRo
aXMgb3B0aW1pc3RpY2FsbHkgYXNzdW1lcyB0aGF0IHlvdSdyZSB1c2luZyB0aGUgcmlnaHQgd2lk
dGguIEJ1dAogICAgIC8vIHRoZSB3aWR0aCBpcyByZWxldmFudCB0byB2YWxpZGl0eSwgc28gcGFz
c2luZyBhIG51bGwgd2lkdGggaXMgb25seSB1c2VmdWwgZm9yIGFzc2VydGlvbnMuIERvbid0CiAg
ICAgLy8gcGFzcyBudWxsIHdpZHRocyB3aGVuIGNhc2NhZGluZyB0aHJvdWdoIEFyZ3MgaW4gdGhl
IGluc3RydWN0aW9uIHNlbGVjdG9yIQotICAgIGJvb2wgaXNWYWxpZEZvcm0oT3B0aW9uYWw8V2lk
dGg+IHdpZHRoID0gTnVsbG9wdCkgY29uc3QKKyAgICBib29sIGlzVmFsaWRGb3JtKHN0ZDo6b3B0
aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAgIHsKICAgICAgICAg
c3dpdGNoIChraW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnZhbGlkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKaW5kZXggYjBkNTVjZGZhYzM1MDlhZDAzOTNhNDFmMDFl
NWFmYTg1N2Y4NjU1MC4uNjQ0YjdhMWIyOWUwZWNjZTM5NjM4ZmJjMmZmNTlhM2NmMTlmODMwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCkBAIC04Miw3ICs4Miw3
IEBAIHN0cnVjdCBQYXRjaEN1c3RvbSB7CiAgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uc3Bl
Y2lhbCgpLT5hZG1pdHNTdGFjayhpbnN0LCBhcmdJbmRleCk7CiAgICAgfQogCi0gICAgc3RhdGlj
IE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0
JiBpbnN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGluc3QuYXJnc1swXS5zcGVjaWFsKCktPnNo
b3VsZFRyeUFsaWFzaW5nRGVmKGluc3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IGVjODlhYzUyZjQz
YzhmZjdjNTcxYmU3NGViZTE4M2M5YWYzMDU5ZjcuLmQwMDBkNmM1ZDNiMjJiZDFkOTM0MDIwZjQw
MjAxYTVkMjAwNmJmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4T2J2aW91c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcApAQCAtMTI5LDEyICsxMjksMTIgQEAgY2xhc3MgRml4
T2J2aW91c1NwaWxscyB7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNTcGlsbFNsb3QoaW5z
dC5hcmdzWzFdKSkKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhTbG90Q29u
c3QoaW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCBpbnN0LmFyZ3NbMF0udmFsdWUoKSkpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMF0pICYmIGluc3QuYXJn
c1sxXS5pc1JlZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0X3Q+IGNv
bnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAgICAgICAg
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFu
dEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFz
KFJlZ0NvbnN0KGluc3QuYXJnc1sxXS5yZWcoKSwgKmNvbnN0YW50KSk7CiAgICAgICAgICAgICAg
ICAgbV9zdGF0ZS5hZGRBbGlhcygKICAgICAgICAgICAgICAgICAgICAgUmVnU2xvdChpbnN0LmFy
Z3NbMV0ucmVnKCksIGluc3QuYXJnc1swXS5zdGFja1Nsb3QoKSwgUmVnU2xvdDo6QWxsQml0cykp
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChpbnN0LmFyZ3NbMF0uaXNSZWcoKSAmJiBpc1NwaWxs
U2xvdChpbnN0LmFyZ3NbMV0pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludDY0
X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQorICAgICAg
ICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5j
b25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLmFk
ZEFsaWFzKFNsb3RDb25zdChpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksICpjb25zdGFudCkpOwog
ICAgICAgICAgICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoCiAgICAgICAgICAgICAgICAgICAgIFJl
Z1Nsb3QoaW5zdC5hcmdzWzBdLnJlZygpLCBpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksIFJlZ1Ns
b3Q6OkFsbEJpdHMpKTsKQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGNsYXNzIEZpeE9idmlvdXNTcGls
bHMgewogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzU3BpbGxTbG90KGluc3QuYXJnc1sxXSkp
CiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoU2xvdENvbnN0KGluc3QuYXJn
c1sxXS5zdGFja1Nsb3QoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGluc3QuYXJnc1swXS52YWx1
ZSgpKSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMF0p
ICYmIGluc3QuYXJnc1sxXS5pc1JlZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFs
PGludDY0X3Q+IGNvbnN0YW50ID0gbV9zdGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQor
ICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50ID0gbV9z
dGF0ZS5jb25zdGFudEZvcihpbnN0LmFyZ3NbMF0pKQogICAgICAgICAgICAgICAgICAgICBtX3N0
YXRlLmFkZEFsaWFzKFJlZ0NvbnN0KGluc3QuYXJnc1sxXS5yZWcoKSwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KCpjb25zdGFudCkpKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFzKAog
ICAgICAgICAgICAgICAgICAgICBSZWdTbG90KGluc3QuYXJnc1sxXS5yZWcoKSwgaW5zdC5hcmdz
WzBdLnN0YWNrU2xvdCgpLCBSZWdTbG90OjpaRXh0MzIpKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoaW5zdC5hcmdzWzBdLmlzUmVnKCkgJiYgaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzFdKSkgewot
ICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUu
Y29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBd
KSkKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhTbG90Q29uc3QoaW5zdC5h
cmdzWzFdLnN0YWNrU2xvdCgpLCBzdGF0aWNfY2FzdDxpbnQzMl90PigqY29uc3RhbnQpKSk7CiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcygKICAgICAgICAgICAgICAgICAgICAgUmVn
U2xvdChpbnN0LmFyZ3NbMF0ucmVnKCksIGluc3QuYXJnc1sxXS5zdGFja1Nsb3QoKSwgUmVnU2xv
dDo6TWF0Y2gzMikpOwpAQCAtNDU0LDE5ICs0NTQsMTkgQEAgY2xhc3MgRml4T2J2aW91c1NwaWxs
cyB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIE9w
dGlvbmFsPGludDY0X3Q+IGNvbnN0YW50Rm9yKGNvbnN0IEFyZyYgYXJnKQorICAgICAgICBzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IGNvbnN0YW50Rm9yKGNvbnN0IEFyZyYgYXJnKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoYXJnLmlzUmVnKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29u
c3QgUmVnQ29uc3QqIGFsaWFzID0gZ2V0UmVnQ29uc3QoYXJnLnJlZygpKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFsaWFzLT5jb25zdGFudDsKLSAgICAgICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGFyZy5pc1N0YWNrKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IGdldFNsb3RDb25zdChhcmcuc3RhY2tTbG90KCkp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxpYXMtPmNvbnN0YW50OwotICAgICAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGNsb2Ji
ZXIoY29uc3QgQXJnJiBhcmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpckluc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCmlu
ZGV4IDMwZjI0ZDg2NGJjZGZmMGRhZGE3NGFhZDc0NWEyOWJiM2ExMTQ3ZjMuLmYzOGMyMWRmODRh
ODM4ZjliMmZkNDdkOGMzZDM2MDg3NmFkYmVjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlySW5zdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlySW5zdC5oCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RydWN0IEluc3QgewogICAgIC8vIEZv
ciBleGFtcGxlLAogICAgIC8vICAgICBBZGQgVG1wMSwgVG1wMiwgVG1wMwogICAgIC8vIHJldHVy
bnMgMiBpZiAwIGFuZCAxIGJlbmVmaXQgZnJvbSBhbGlhc2luZyB0byBUbXAzLgotICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZigpOworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHNob3VsZFRyeUFsaWFzaW5nRGVmKCk7CiAgICAgCiAgICAgLy8gVGhpcyBjb21w
dXRlcyBhIGhhc2ggZm9yIGNvbXBhcmluZyB0aGlzIHRvIEpTQWlyJ3MgSW5zdC4KICAgICB1bnNp
Z25lZCBqc0hhc2goKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
SW5zdElubGluZXMuaAppbmRleCAxYWFhMDZjNTBjMDg2N2MxNWVjMTMzOGFlY2IyNzg3NzE4OWYw
NDY0Li5iNzUzOTIxZTE5YjEyNDUwZDA0NDA1MDU0YjliMzBkOTk4MTgzODNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCkBAIC0xMTEsMTAgKzEx
MSwxMCBAQCBpbmxpbmUgYm9vbCBJbnN0OjphZG1pdHNTdGFjayhBcmcmIGFyZykKICAgICByZXR1
cm4gYWRtaXRzU3RhY2soJmFyZyAtICZhcmdzWzBdKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPHVu
c2lnbmVkPiBJbnN0OjpzaG91bGRUcnlBbGlhc2luZ0RlZigpCitpbmxpbmUgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKQogewogICAgIGlmICghaXNY
ODYoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKSB7CiAgICAgY2FzZSBBZGQzMjoKQEAgLTE0
MCw3ICsxNDAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFs
aWFzaW5nRGVmKCkKICAgICBjYXNlIE11bEZsb2F0OgogI2lmIENQVShYODYpIHx8IENQVShYODZf
NjQpCiAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNBVlgoKSkKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogICAgICAgICBpZiAoYXJncy5zaXplKCkgPT0gMykKICAgICAgICAgICAgIHJldHVybiAy
OwpAQCAtMTcxLDcgKzE3MSw3IEBAIGlubGluZSBPcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hv
dWxkVHJ5QWxpYXNpbmdEZWYoKQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxp
bmUgYm9vbCBpc1NoaWZ0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVz
Y2luZy5jcHAKaW5kZXggOTRkNjI5MTg4ZmE1NTRjMzhkYTVkN2UwMzVjZWFmODM3MWNjNmU4ZS4u
YmQxYTVjNzk2MmIzMmQwODcwMjA2Y2QyMDU1ZTY2ZmM4MTNlMThkYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVy
Q29hbGVzY2luZy5jcHAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIGNsYXNzIENvbG9yaW5nQWxsb2Nh
dG9yIDogcHVibGljIEFic3RyYWN0Q29sb3JpbmdBbGxvY2F0b3I8dW5zaWduZWQ+IHsKICAgICAg
ICAgbV93b3JrbGlzdE1vdmVzLnN0YXJ0QWRkaW5nTG93UHJpb3JpdHlNb3ZlcygpOwogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9jb2RlKSB7CiAgICAgICAgICAgICBmb3IgKElu
c3QmIGluc3QgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8dW5zaWdu
ZWQ+IGRlZkFyZ0luZGV4ID0gaW5zdC5zaG91bGRUcnlBbGlhc2luZ0RlZigpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGRlZkFyZ0luZGV4ID0gaW5zdC5z
aG91bGRUcnlBbGlhc2luZ0RlZigpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFyZyBvcDEgPSBp
bnN0LmFyZ3NbKmRlZkFyZ0luZGV4IC0gMl07CiAgICAgICAgICAgICAgICAgICAgIEFyZyBvcDIg
PSBpbnN0LmFyZ3NbKmRlZkFyZ0luZGV4IC0gMV07CiAgICAgICAgICAgICAgICAgICAgIEFyZyBk
ZXN0ID0gaW5zdC5hcmdzWypkZWZBcmdJbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTcGVjaWFsLmNwcAppbmRleCAwYTcyMmU4MTBhNTZkNTQ1NWMxMmFkMDExZTEzNzVm
OGViMzI3ZTI5Li5lODI1NzY3YjA0ZDhhYjNiOWNlYzc1YWY0ZTkxOTgwYTg5MjkwNTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTUwLDkgKzUw
LDkgQEAgQ1N0cmluZyBTcGVjaWFsOjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gb3V0LnRvQ1N0
cmluZygpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNp
bmdEZWYoSW5zdCYpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBTcGVjaWFsOjpzaG91bGRUcnlB
bGlhc2luZ0RlZihJbnN0JikKIHsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBib29sIFNwZWNpYWw6OmlzVGVybWluYWwoSW5zdCYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCmluZGV4IDZjMTBjYjU3ZjliNGNiOWU5
OGNiMjg1ZTY2NzU1YmFkZjIzMTZjZTkuLjQ4MGNiZmNiYTU4ZmRkZTgxMTYzNmQ4NmYyNjdiNTFj
OGE2YzhiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3Bl
Y2lhbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5oCkBA
IC01NSw3ICs1NSw3IEBAIGNsYXNzIFNwZWNpYWwgewogICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNo
QXJnKEluc3QmLCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZChJbnN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBhZG1pdHNTdGFjayhJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFs
IE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7CisgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0Jik7
CiAKICAgICAvLyBUaGlzIGdldHMgY2FsbGVkIG9uIGZvciBlYWNoIEluc3QgdGhhdCB1c2VzIHRo
aXMgU3BlY2lhbC4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHdheSB0bwogICAgIC8vIGd1YXJhbnRl
ZSB0aGF0IGEgU3BlY2lhbCBnZXRzIHVzZWQgZnJvbSBqdXN0IG9uZSBJbnN0LCBiZWNhdXNlIEFp
ciBtaWdodCB0YWlsZHVwIGxhdGUuIFNvLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXgg
OTU5MDNlMjFlYmRmMTk0MGE5ZmQwNzgzYjEwZjgyZjJiYTdmYjdiMy4uZjdlMWU5YTNkNmQ5YmU4
ZTg3M2M2ZjcyODA4NTE1ODE1NDFmYmE4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gewogCiAg
ICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgICAgIG1fc3Rv
cmFnZXMucmVzaXplKGluZGV4ICsgMSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBz
dG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPFN0
b3JhZ2U+IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKICAgICAgICAgICAgIHJldHVybiAq
c3RvcmFnZTsKIAogICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBjbGFzcyBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbiB7CiAKICAgICB1bnNpZ25lZCBtX2VudGVyUG9pbnQgeyAwIH07CiAgICAgQnl0
ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKLSAgICBWZWN0b3I8T3B0aW9u
YWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8U3RvcmFn
ZT4+IG1fc3RvcmFnZXM7CiAgICAgWWllbGRzIG1feWllbGRzOwogICAgIFN0cm9uZzxTeW1ib2xU
YWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOwogICAgIGludCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggMjQ5ZDExM2ZhMDgzODkyZDk2ZTIwNzVkYTNjZjI2ZjE2MTY3N2Ix
Mi4uYTEyYmMwYTMwODRiNmEwMmM3NTJkNTU4OTFlYTI5ZmJjMDljNmM2NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ1MTIsMjkgKzQ1MTIs
MjkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6dW5pcXVlX3B0
cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJiBtYXApCiAgICAgbV9wY1RvQ29kZU9yaWdpbk1hcCA9IFdU
Rk1vdmUobWFwKTsKIH0KIAotT3B0aW9uYWw8Q29kZU9yaWdpbj4gQ29kZUJsb2NrOjpmaW5kUEMo
dm9pZCogcGMpCitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZv
aWQqIHBjKQogewogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwKSB7Ci0gICAgICAgIGlmIChP
cHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gbV9wY1RvQ29kZU9yaWdpbk1hcC0+Zmlu
ZFBDKHBjKSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdp
biA9IG1fcGNUb0NvZGVPcmlnaW5NYXAtPmZpbmRQQyhwYykpCiAgICAgICAgICAgICByZXR1cm4g
Y29kZU9yaWdpbjsKICAgICB9CiAKICAgICBmb3IgKEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0
ZXJhdG9yIGl0ZXIgPSBtX3N0dWJJbmZvcy5iZWdpbigpOyAhIWl0ZXI7ICsraXRlcikgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YiA9ICppdGVyOwogICAgICAgICBpZiAoc3R1Yi0+
Y29udGFpbnNQQyhwYykpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Q29kZU9yaWdpbj4o
c3R1Yi0+Y29kZU9yaWdpbik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2Rl
T3JpZ2luPihzdHViLT5jb2RlT3JpZ2luKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8Q29k
ZU9yaWdpbj4gY29kZU9yaWdpbiA9IG1faml0Q29kZS0+ZmluZFBDKHRoaXMsIHBjKSkKKyAgICBp
ZiAoc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gbV9qaXRDb2RlLT5maW5k
UEModGhpcywgcGMpKQogICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsKIAotICAgIHJldHVybiBO
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKIAotT3B0aW9uYWw8dW5zaWduZWQ+IENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXRGcm9tQ2Fs
bFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgpCitzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNp
dGVJbmRleCBjYWxsU2l0ZUluZGV4KQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29k
ZU9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldDsKICAg
ICBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUgPSB0aGlzLT5qaXRUeXBlKCk7CiAgICAgaWYgKGpp
dFR5cGUgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2YmI5MWRiNTJhZWZlZDcyZmIyZTdlNTMwODU0
ZTZiMWYxZWZlMmIyLi5hYWZlYTE5YWZiYmY2MTUzODU2MzViODEzNDIzZGNkYzQ2OTdjYzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yMzMsNyAr
MjMzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBleHBy
ZXNzaW9uUmFuZ2VGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgaW50
JiBkaXZvdCwKICAgICAgICAgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQsIHVuc2ln
bmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOworICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgo
Q2FsbFNpdGVJbmRleCk7CiAKICAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U3R1YkluZm9N
YXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7CkBAIC04ODksNyArODg5LDcgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgc2V0UENU
b0NvZGVPcmlnaW5NYXAoc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiYmKTsKLSAg
ICBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEModm9pZCogcGMpOworICAgIHN0ZDo6b3B0aW9u
YWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBlM2FmNjFmNWM4ODg5OThlMDk1ZGFjYmY5Njhj
ZTYyN2JmMmIyZTc2Li45NTJlOThiYTMzYjJhMmI1ZjAyNmViOWY0OGE4NGIwY2RhNWZhYWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0bwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2Vk
Q29kZUJsb2NrRm9yQ29uc3RydWN0KTsKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVy
U291cmNlLCBPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciwgSW50cmluc2ljIGludHJp
bnNpYykKK0Z1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6Omxp
bmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBvd25lclNvdXJjZSwgc3RkOjpvcHRpb25hbDxp
bnQ+IG92ZXJyaWRlTGluZU51bWJlciwgSW50cmluc2ljIGludHJpbnNpYykKIHsKICAgICBTb3Vy
Y2VDb2RlIHNvdXJjZSA9IG1fc291cmNlT3ZlcnJpZGUgPyBTb3VyY2VDb2RlKG1fc291cmNlT3Zl
cnJpZGUpIDogb3duZXJTb3VyY2U7CiAgICAgdW5zaWduZWQgZmlyc3RMaW5lID0gc291cmNlLmZp
cnN0TGluZSgpICsgbV9maXJzdExpbmVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4
IDZmNTU4Y2Y3YTk3NGM4NTMzM2JhODUyMzAwMjE4ZmUyMzEyMmUxNjUuLmJmM2M1Mjg4YmNiYjAz
ZWQyYjk5ZDExZjllOTcwYjU3NzY1OTU2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0x
MDYsNyArMTA2LDcgQEAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYsIEV4ZWNTdGF0ZSYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlvbiwgCiAgICAgICAgIGludCBvdmVy
cmlkZUxpbmVOdW1iZXIpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVjdXRh
YmxlKiBsaW5rKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVM
aW5lTnVtYmVyID0gTnVsbG9wdCwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGluayhWTSYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBzdGQ6Om9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0
LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYyk7CiAKICAgICB2b2lkIGNsZWFyQ29kZSgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDA0NmQyYTc2NTgzNzlmMjA4MDExMmRkYWE0MGQ4ODgzZmU1Yzli
ZjAuLmJmMTMyMGZkOWQ2MTZhMTczZDFjZGQ3YTU5YzBiZGEwMTY2ZmNiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTkxMCw3ICs5MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKICAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFREWk5lY2Vzc2l0
eUxldmVsLCBJZGVudGlmaWVyUmVwSGFzaD4gVERaTWFwOwogICAgICAgICBWZWN0b3I8VERaTWFw
PiBtX1REWlN0YWNrOwotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVTeW1ib2xU
YWJsZUluZGV4OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV92YXJTY29wZVN5bWJv
bFRhYmxlSW5kZXg7CiAgICAgICAgIHZvaWQgcHVzaFREWlZhcmlhYmxlcyhjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiwgVERaQ2hlY2tPcHRpbWl6YXRpb24sIFREWlJlcXVpcmVtZW50KTsKIAog
ICAgICAgICBTY29wZU5vZGUqIGNvbnN0IG1fc2NvcGVOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGVkYjY1ZDdk
ZWU5MGNjMmUyMjMwOGExZGUxYzI5NjBhOTY2ODY4NzMuLjY4YWViNWFhNGYyNmY0OTdjMDcyNmRi
NjE0MzI1MzEyM2E1ZTdlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChjb25zdCBhdXRv
KiBpZGVudGlmaWVyID0gbm9kZS5uYW1lKCkpIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+
IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KCppZGVudGlmaWVyKTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgoKmlkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIW9wdGlvbmFsSW5kZXgpIHsKICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RGlyZWN0UHV0QnlJZChuZXdPYmosICppZGVudGlmaWVyLCB2YWx1ZS5nZXQoKSwgbm9kZS5w
dXRUeXBlKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzk2Nyw3ICszOTY3LDcgQEAgdm9p
ZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGlmICghdGFyZ2V0LnByb3BlcnR5RXhw
cmVzc2lvbikgewogICAgICAgICAgICAgLy8gU2hvdWxkIG5vdCBlbWl0IGdldF9ieV9pZCBmb3Ig
aW5kZXhlZCBvbmVzLgotICAgICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5k
ZXggPSBwYXJzZUluZGV4KHRhcmdldC5wcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgodGFyZ2V0LnByb3Bl
cnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbmFsSW5kZXgpCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAuZ2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuY3BwCmluZGV4IDk4YWNkMzJkY2Y0MTI0NmIzZjRlYzJjZjhjM2FlYWIzYTI2
MTI3ODguLmRlMjNlMTM5ZDY0YzY1NWFhZjJiMDRjOWZjZmRiYjliMWQ5MzI3NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMzYwLDcgKzM2MCw3
IEBAIHZvaWQgRGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9p
bnQsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQCiAgICAgdW5zaWduZWQgY29sdW1uID0gYnJlYWtw
b2ludC5jb2x1bW4gPyBicmVha3BvaW50LmNvbHVtbiA6IEJyZWFrcG9pbnQ6OnVuc3BlY2lmaWVk
Q29sdW1uOwogCiAgICAgRGVidWdnZXJQYXJzZURhdGEmIHBhcnNlRGF0YSA9IGRlYnVnZ2VyUGFy
c2VEYXRhKGJyZWFrcG9pbnQuc291cmNlSUQsIHNvdXJjZVByb3ZpZGVyKTsKLSAgICBPcHRpb25h
bDxKU1RleHRQb3NpdGlvbj4gcmVzb2x2ZWRQb3NpdGlvbiA9IHBhcnNlRGF0YS5wYXVzZVBvc2l0
aW9ucy5icmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKChpbnQpbGluZSwgKGludCljb2x1
bW4pOworICAgIHN0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IHJlc29sdmVkUG9zaXRpb24g
PSBwYXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVt
bigoaW50KWxpbmUsIChpbnQpY29sdW1uKTsKICAgICBpZiAoIXJlc29sdmVkUG9zaXRpb24pCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKaW5kZXggMTZhYzFhZGQ5ZjI3ZjJkOTkwMTQwNTBhM2Jj
NmIwYjNhNWI5MWU0NC4uN2Y4MjEyNzM5NTBjYTMzM2ZmNTdiZjQ2ZjUzNjQzMjE3MTgxM2JhOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgVGV4dFBvc2l0aW9uIERlYnVnZ2VyQ2FsbEZy
YW1lOjpjdXJyZW50UG9zaXRpb24oKQogCiAgICAgaWYgKGlzVGFpbERlbGV0ZWQoKSkgewogICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fc2hhZG93Q2hpY2tlbkZyYW1lLmNvZGVCbG9j
azsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXRGcm9tQ2FsbFNpdGVJbmRleChtX3NoYWRvd0NoaWNrZW5GcmFt
ZS5jYWxsU2l0ZUluZGV4KSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Ynl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5k
ZXgobV9zaGFkb3dDaGlja2VuRnJhbWUuY2FsbFNpdGVJbmRleCkpIHsKICAgICAgICAgICAgIHJl
dHVybiBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGNvZGVCbG9j
ay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KCpieXRlY29kZU9mZnNldCkpLAogICAgICAg
ICAgICAgICAgIE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChjb2RlQmxvY2stPmNvbHVt
bk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KCpieXRlY29kZU9mZnNldCkpKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0
YS5jcHAKaW5kZXggZTcxYWFjNjRmMzIyYThmYmQ4MTRmMDI4MTVhODU2ZDYzMDI2YmY5Yy4uM2Iw
NThiYWJmYjEzNzEzN2Y0MDUzZTA4OTg1Yjk0MWY2MTFkYjIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1PcHRpb25hbDxKU1RleHRQb3NpdGlvbj4g
RGVidWdnZXJQYXVzZVBvc2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihp
bnQgbGluZSwgaW50IGNvbHVtbikKK3N0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVn
Z2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oaW50IGxp
bmUsIGludCBjb2x1bW4pCiB7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwogICAgIHVuc2lnbmVk
IGVuZCA9IG1fcG9zaXRpb25zLnNpemUoKTsKQEAgLTU0LDcgKzU0LDcgQEAgT3B0aW9uYWw8SlNU
ZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZv
ckxpbmVDb2x1bW4KICAgICAgICAgICAgIC8vIFdlIGFyZSBndWFyZW50ZWVkIHRvIGhhdmUgYSBM
ZWF2ZSBmb3IgYW4gRW50cnkgc28gd2UgZG9uJ3QgbmVlZCB0byBib3VuZHMgY2hlY2suCiAgICAg
ICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgIGlmIChwYXVzZVBvc2l0aW9u
LnR5cGUgIT0gRGVidWdnZXJQYXVzZVBvc2l0aW9uVHlwZTo6RW50ZXIpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4ocGF1c2VQb3NpdGlvbi5wb3Np
dGlvbik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBv
c2l0aW9uPihwYXVzZVBvc2l0aW9uLnBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICBwYXVzZVBv
c2l0aW9uID0gbV9wb3NpdGlvbnNbbWlkZGxlKytdOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNl
UG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uCiAKICAgICAvLyBQYXN0
IHRoZSBlbmQsIG5vIHBvc3NpYmxlIHBhdXNlIGxvY2F0aW9ucy4KICAgICBpZiAoc3RhcnQgPj0g
bV9wb3NpdGlvbnMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSBuZXh0IGxvY2F0aW9uIGlzIGEgZnVu
Y3Rpb24gRW50cnkgd2Ugd2lsbCBuZWVkIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgZ28gaW50bwog
ICAgIC8vIHRoZSBmdW5jdGlvbiBvciBnbyBwYXN0IHRoZSBmdW5jdGlvbi4gV2UgZGVjaWRlIHRv
IGdvIGludG8gdGhlIGZ1bmN0aW9uIGlmIHRoZQpAQCAtODcsNyArODcsNyBAQCBPcHRpb25hbDxK
U1RleHRQb3NpdGlvbj4gRGVidWdnZXJQYXVzZVBvc2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9u
Rm9yTGluZUNvbHVtbgogICAgIC8vIFZhbGlkIHBhdXNlIGxvY2F0aW9uLiBVc2UgaXQuCiAgICAg
RGVidWdnZXJQYXVzZVBvc2l0aW9uJiBmaXJzdFNsaWRlUG9zaXRpb24gPSBtX3Bvc2l0aW9uc1tz
dGFydF07CiAgICAgaWYgKGZpcnN0U2xpZGVQb3NpdGlvbi50eXBlICE9IERlYnVnZ2VyUGF1c2VQ
b3NpdGlvblR5cGU6OkVudGVyKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8SlNUZXh0UG9zaXRp
b24+KGZpcnN0U2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPEpTVGV4dFBvc2l0aW9uPihmaXJzdFNsaWRlUG9zaXRpb24ucG9zaXRpb24pOwogCiAg
ICAgLy8gRGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBlbnRlciB0aGlzIGZ1bmN0aW9uIG9yIHNraXAg
cGFzdCBpdC4KICAgICAvLyBJZiBlbnRyeVN0YWNrU2l6ZSBpcyA+IDAgd2UgYXJlIHNraXBwaW5n
IGZ1bmN0aW9ucy4KQEAgLTExMywxMSArMTEzLDExIEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9u
PiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1u
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGb3VuZCBwYXVzZSBwb3NpdGlvbi4KLSAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihzbGlkZVBvc2l0aW9uLnBvc2l0aW9uKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+KHNsaWRlUG9zaXRp
b24ucG9zaXRpb24pOwogICAgIH0KIAogICAgIC8vIE5vIHBhdXNlIHBvc2l0aW9ucyBmb3VuZC4K
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OnNvcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuaAppbmRleCAwNjIyNTE1NWUxNDVjMzg4
MTY1ZDMxNDg4YWNlMjU5ZGExM2NiMDliLi5lY2M3OGQwZDRiZmRkMjNlNjE0YmI2MTdlNGYyNWUz
MzNlMjQxMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJQYXJzZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJQYXJzZURhdGEuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBEZWJ1Z2dlclBhdXNlUG9z
aXRpb25zIHsKICAgICAgICAgbV9wb3NpdGlvbnMuYXBwZW5kKHsgRGVidWdnZXJQYXVzZVBvc2l0
aW9uVHlwZTo6TGVhdmUsIHBvc2l0aW9uIH0pOwogICAgIH0KIAotICAgIE9wdGlvbmFsPEpTVGV4
dFBvc2l0aW9uPiBicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQg
Y29sdW1uKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBicmVha3BvaW50TG9j
YXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQgY29sdW1uKTsKIAogICAgIHZvaWQgc29y
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0
UHJvZmlsaW5nU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQ
cm9maWxpbmdTY29wZS5oCmluZGV4IDk5NjI0ZGJmMTBlMTQ4OGZlYWVkMzI5NTkzYjJhOTRmNjFk
MTBhNDEuLmU0MDMzN2ZlOWQzNmMzYjNkZTIxMjg0ZTRiZDFmNTZhZDI5MDY0OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29wZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdTY29w
ZS5oCkBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGluZ1Njb3BlIHsKICAgICB9
CiAKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3QgeyBudWxscHRyIH07Ci0gICAg
T3B0aW9uYWw8ZG91YmxlPiBtX3N0YXJ0VGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
bV9zdGFydFRpbWU7CiAgICAgUHJvZmlsaW5nUmVhc29uIG1fcmVhc29uOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCmluZGV4IDVkZjRkYTM1ODFmNTFmYTY2YTg4ZDE5MGY0Y2I4Y2E5MDZhMmY3ZmYu
LmQ0YmUxMmEyNzM0OWFkNDhhNzdiMTVkZGY1YjY5MDVhMzVhZmM4OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICAKICAgICBjYXNlIERvdWJsZVJlcDogewogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4g
bnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUo
KSkgewogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoKm51bWJl
cikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU0OSw3ICs1NDksNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogCiAgICAgY2FzZSBBcml0aENsejMyOiB7CiAgICAgICAg
IEpTVmFsdWUgb3BlcmFuZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAg
ICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IG9wZXJhbmQudG9OdW1iZXJGcm9tUHJp
bWl0aXZlKCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBv
cGVyYW5kLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAgICAgICB1aW50MzJfdCB2
YWx1ZSA9IHRvVUludDMyKCpudW1iZXIpOwogICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwg
anNOdW1iZXIoY2x6MzIodmFsdWUpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTg1NSw3ICs4
NTUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVj
dXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZToKLSAgICAgICAgICAg
IGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2
ZSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNo
aWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihmYWJzKCpudW1iZXIpKTsKICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0LmlzSW50MzIoKSkgewogICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBy
ZXN1bHQpOwpAQCAtODY1LDcgKzg2NSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Ci0gICAgICAgICAgICBpZiAoT3B0
aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewor
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051
bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzRG91YmxlTnVtYmVyKGZhYnMoKm51bWJlcikpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KQEAgLTkwNyw3ICs5MDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgIGNhc2UgQXJpdGhDZWlsOgogICAgIGNhc2UgQXJpdGhUcnVuYzogewogICAgICAgICBK
U1ZhbHVlIG9wZXJhbmQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAg
ICBpZiAoT3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBvcGVyYW5kLnRvTnVtYmVyRnJvbVByaW1p
dGl2ZSgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gb3Bl
cmFuZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgZG91YmxlIHJvdW5k
ZWRWYWx1ZSA9IDA7CiAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcml0aFJvdW5kKQog
ICAgICAgICAgICAgICAgIHJvdW5kZWRWYWx1ZSA9IGpzUm91bmQoKm51bWJlcik7CkBAIC05OTUs
NyArOTk1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgTWFwSGFzaDog
ewogICAgICAgICBpZiAoSlNWYWx1ZSBrZXkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGhhc2ggPSBjb25jdXJy
ZW50SlNNYXBIYXNoKGtleSkpIHsKKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBoYXNoID0gY29uY3VycmVudEpTTWFwSGFzaChrZXkpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gQWx0aG91Z2ggQysrIGNvZGUgdXNlcyB1aW50MzJfdCBmb3IgdGhlIGhhc2gsIHRoZSBjbG9z
ZXN0IHR5cGUgaW4gREZHIElSIGlzIEludDMyCiAgICAgICAgICAgICAgICAgLy8gYW5kIHRoYXQn
cyB3aGF0IE1hcEhhc2ggcmV0dXJucy4gU28sIHdlIGhhdmUgdG8gY2FzdCB0byBpbnQzMl90IHRv
IGF2b2lkIGxhcmdlCiAgICAgICAgICAgICAgICAgLy8gdW5zaWduZWQgdmFsdWVzIGJlY29taW5n
IGRvdWJsZXMuIFRoaXMgY2FzdGluZyBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQKQEAgLTMx
NjUsNyArMzE2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogdm9p
ZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZURvdWJsZVVu
YXJ5T3BFZmZlY3RzKE5vZGUqIG5vZGUsIGRvdWJsZSgqZXF1aXZhbGVudEZ1bmN0aW9uKShkb3Vi
bGUpKQogewogICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpOwotICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9IGNoaWxkLnRvTnVtYmVyRnJv
bVByaW1pdGl2ZSgpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBj
aGlsZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICBzZXRDb25zdGFudChub2Rl
LCBqc0RvdWJsZU51bWJlcihlcXVpdmFsZW50RnVuY3Rpb24oKm51bWJlcikpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCmlu
ZGV4IGU5YWMzZTU5ZGE4MDc2MzQwZWZhMzg5N2U5NDViMjJlNjc5YWRiYTYuLjdmYjlmNzE2Y2Jm
YzQ5Y2I0M2JiMzM2ZWM3NWM2ZGI4YTJiYjljNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmNwcApAQCAtMjE1LDE2ICsyMTUsMTYgQEAgdm9pZCBKSVRDb2RlOjp2YWxp
ZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2Vz
KQogICAgIG1pbmlmaWVkREZHLnZhbGlkYXRlUmVmZXJlbmNlcyh0cmFja2VkUmVmZXJlbmNlcyk7
CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2
b2lkKiBwYykKK3N0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVC
bG9jayosIHZvaWQqIHBjKQogewogICAgIGZvciAoT1NSRXhpdCYgZXhpdCA6IG9zckV4aXQpIHsK
ICAgICAgICAgaWYgKEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGV4aXQubV9jb2Rl
LmV4ZWN1dGFibGVNZW1vcnkoKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKSA8
PSBwYyAmJiBwYyA8IGhhbmRsZS0+ZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPENvZGVPcmlnaW4+KGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUpOworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KGV4aXQubV9jb2RlT3Jp
Z2luRm9yRXhpdFByb2ZpbGUpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCBlMWYxZDdjYTAx
M2FhYWQyYWE3MGM4YWZiNzgxMmQ0ZDVjMTE0NWVjLi5hZWU4NzQyZjM4NWQxN2JhZmE4NTQ5NDY3
M2M5NDVlYzg4YTg3ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApA
QCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7
CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IGNvbW1vbkRhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSklUQ29kZSwgY29tbW9uKTsgfQogCi0gICAgT3B0aW9uYWw8Q29kZU9yaWdp
bj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgb3ZlcnJpZGU7CiAg
ICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBKSVRDb21waWxlcjsgLy8gQWxsb3cgSklU
Q29tcGlsZXIgdG8gY2FsbCBzZXRDb2RlUmVmKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA1Mjk4NjllMDY0OWM2NWEwZTNiNjVlMjNiNDIxOWRh
YWE3YzJmNGUyLi4xMDI2YTg0MTUyZTkzMjIyZTA0NWJhODNiMjdiZWU0ZGI1MmE4MGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEzMiw3ICsx
MzIsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZQogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgc3RyaWN0KTsKICAgICBpZiAoZGlyZWN0KSB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
ICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgICAgIGFzT2JqZWN0KGJhc2VW
YWx1ZSktPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBzdHJp
Y3QgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RU
aHJvdyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZXhlYywgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU0ludDhBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDE2QXJyYXlX
aXRoU2l6ZSgKQEAgLTExODgsNyArMTE4OCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZh
bHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5Pihl
eGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplKApAQCAtMTIw
Miw3ICsxMjAyLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQzMkFycmF5
V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTSW50MzJBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQp
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aFNpemUoCkBAIC0xMjE2LDcgKzEyMTYsNyBAQCBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQo
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5Pihl
eGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTVWludDhBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUoCkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50KAog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJy
YXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNVaW50OENsYW1wZWRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUoCkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50KAog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGV4
ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNVaW50MTZBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Vp
bnQzMkFycmF5V2l0aFNpemUoCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNV
aW50MzJBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdp
dGhTaXplKApAQCAtMTI3Miw3ICsxMjcyLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJy
YXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZSgK
QEAgLTEyODYsNyArMTI4Niw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3Rmxv
YXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgTnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVj
LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0
ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJs
ZSogdGFibGUsIEVuY29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggNjA4MWM1
N2IyODYxOGU0M2Q5ZWEyOGQ1NTYxMDE1ODJhNjJjNThjYS4uNjdhYmE4MGI3ZGY3MDgzOTYzYmRh
ZmQ1OGY5YWI2MzI3YmNjZTNlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBTbG93UGF0aEdl
bmVyYXRvciB7CiAgICAgICAgIGppdC0+bV9vdXRPZkxpbmVTdHJlYW1JbmRleCA9IG1fc3RyZWFt
SW5kZXg7CiAgICAgICAgIGppdC0+bV9vcmlnaW4gPSBtX29yaWdpbjsKICAgICAgICAgZ2VuZXJh
dGVJbnRlcm5hbChqaXQpOwotICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBO
dWxsb3B0OworICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICAgICAgaml0LT5tX2pp
dC5hYm9ydFdpdGhSZWFzb24oREZHU2xvd1BhdGhHZW5lcmF0b3JGZWxsVGhyb3VnaCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA2Y2UwNDViOGViZGRjY2IxMGE1MzFiY2ViMzgyMTEwYzRhNWFiMjI1Li42Y2JmMzRiMWJl
ODhlNTk4OTY4N2RiYzc3YzE3N2JjMWUzYTU2YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXImIHBjVG9Db2RlT3JpCiAgICAgICAgIG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzbG93
UGF0aExhbWJkYS5zdHJlYW1JbmRleDsKICAgICAgICAgcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
LmFwcGVuZEl0ZW0obV9qaXQubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIGN1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBzbG93UGF0aExhbWJkYS5nZW5lcmF0b3IoKTsK
LSAgICAgICAgbV9vdXRPZkxpbmVTdHJlYW1JbmRleCA9IE51bGxvcHQ7CisgICAgICAgIG1fb3V0
T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC0xMjkwLDcg
KzEyOTAsNyBAQCBKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgUmV1c2VUYWcsIFQmIG9wZQogICAgICAgICBtX3BheWxvYWRHUFIg
PSBHUFJUZW1wb3Jhcnkoaml0LCBSZXVzZSwgb3BlcmFuZCk7CiAgICAgICAgIG1fdGFnR1BSID0g
R1BSVGVtcG9yYXJ5KGppdCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wYXlsb2FkR1BSID0g
R1BSVGVtcG9yYXJ5KGppdCk7CisgICAgICAgIG1fcGF5bG9hZEdQUiBHUFJUZW1wb3Jhcnkoaml0
KTsKICAgICAgICAgbV90YWdHUFIgPSBHUFJUZW1wb3Jhcnkoaml0LCBSZXVzZSwgb3BlcmFuZCk7
CiAgICAgfQogfQpAQCAtMzE4OCw4ICszMTg4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
T3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Ci0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJh
bmQ+IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAg
c3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CiAKICAgICBKU1ZhbHVlUmVncyBs
ZWZ0UmVnczsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3M7CkBAIC0zMjE5LDExICszMjE5LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAg
ICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQu
aXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAg
IGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVt
cGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVl
UmVncygpOwogICAgIH0KICAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAg
ICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmln
aHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQt
PmpzVmFsdWVSZWdzKCk7CiAgICAgfQogCkBAIC0zMzM1LDggKzMzMzUsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Ci0g
ICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNW
YWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmln
aHQ7CiAKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVnczsKICAgICBKU1ZhbHVlUmVncyByaWdodFJl
Z3M7CkBAIC0zMzcyLDExICszMzcyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5
cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgUkVMRUFTRV9BU1NFUlQoIWxlZnRP
cGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAgICBpZiAo
IWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAgICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJhbmQo
dGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7
CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICB9CiAgICAgaWYg
KCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJh
bmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAgIHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRD
aGlsZCk7CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0K
IApAQCAtMzQ5Nyw4ICszNDk3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJ
QyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICBFZGdl
JiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsKICAgICBFZGdlJiByaWdodENoaWxkID0gbm9k
ZS0+Y2hpbGQyKCk7CiAKLSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKLSAgICBP
cHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVl
T3BlcmFuZD4gbGVmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsK
IAogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzOwogICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVnczsK
QEAgLTM1MTEsMTYgKzM1MTEsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJ
QyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBJ
bnZhbGlkRlBSUmVnOwogCi0gICAgT3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOwogICAgIGlmIChuZWVk
c1NjcmF0Y2hGUFJSZWcpIHsKLSAgICAgICAgZnByU2NyYXRjaCA9IEZQUlRlbXBvcmFyeSh0aGlz
KTsKKyAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICBzY3JhdGNoRlBS
ID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBP
cHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CisgICAgc3RkOjpvcHRpb25hbDxHUFJU
ZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CiAgICAgaWYgKG5lZWRzU2NyYXRjaEdQUlJlZykgewotICAg
ICAgICBncHJTY3JhdGNoID0gR1BSVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICBncHJTY3JhdGNo
LmVtcGxhY2UodGhpcyk7CiAgICAgICAgIHNjcmF0Y2hHUFIgPSBncHJTY3JhdGNoLT5ncHIoKTsK
ICAgICB9CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTM1NDcsMTEgKzM1NDcs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRC
aW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICBBU1NFUlQoIShHZW5lcmF0b3I6Omlz
TGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSAmJiBHZW5lcmF0b3I6OmlzUmln
aHRPcGVyYW5kVmFsaWRDb25zdGFudChyaWdodE9wZXJhbmQpKSk7CiAKICAgICBpZiAoIUdlbmVy
YXRvcjo6aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3RhbnQobGVmdE9wZXJhbmQpKSB7Ci0gICAgICAg
IGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVt
cGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVl
UmVncygpOwogICAgIH0KICAgICBpZiAoIUdlbmVyYXRvcjo6aXNSaWdodE9wZXJhbmRWYWxpZENv
bnN0YW50KHJpZ2h0T3BlcmFuZCkpIHsKLSAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0
aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxk
KTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogCkBA
IC0zNjE2LDEwICszNjE2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMo
Tm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgIH0p
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRWYWxp
ZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAgICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVy
YW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVm
dENoaWxkKTsKICAgICAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChy
aWdodE9wZXJhbmQpKSB7Ci0gICAgICAgICAgICByaWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMs
IHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxk
KTsKICAgICAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgICAg
ICB9CiAKQEAgLTQyNTgsOSArNDI1OCw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3Is
IHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwgdHlwZW5hbWUgTm9uUmVwYXRjaGluCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElD
PEdlbmVyYXRvcj4qIG1hdGhJQywgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcsIFJlcGF0Y2hpbmdG
dW5jdGlvbiByZXBhdGNoaW5nRnVuY3Rpb24sIE5vblJlcGF0Y2hpbmdGdW5jdGlvbiBub25SZXBh
dGNoaW5nRnVuY3Rpb24pCiB7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVn
OwotICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEdQUlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsKICAgICBpZiAobmVlZHNTY3JhdGNoR1BSUmVn
KSB7Ci0gICAgICAgIGdwclNjcmF0Y2ggPSBHUFJUZW1wb3JhcnkodGhpcyk7CisgICAgICAgIGdw
clNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAgc2NyYXRjaEdQUiA9IGdwclNjcmF0Y2gt
PmdwcigpOwogICAgIH0KICAgICBKU1ZhbHVlT3BlcmFuZCBjaGlsZE9wZXJhbmQodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtNDY4Nyw4ICs0Njg3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKLSAgICAgICAgT3B0
aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFs
dWVPcGVyYW5kPiBsZWZ0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBy
aWdodDsKIAogICAgICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVnczsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmlnaHRSZWdzOwpAQCAtNDczNSwxMSArNDczNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQXJpdGhEaXYoTm9kZSogbm9kZSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxl
ZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CiAKICAgICAg
ICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOworICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRo
aXMsIGxlZnRDaGlsZCk7CiAgICAgICAgICAgICBsZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdz
KCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0g
ICAgICAgICAgICByaWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAg
ICAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgICAgIHJp
Z2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9CiAKQEAgLTc2MTIsMTAg
Kzc2MTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9k
ZSogbm9kZSkKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsK
ICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGJhc2UuZ3ByKCksIG1fc3RhdGUuZm9yTm9k
ZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCi0gICAgT3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJh
bmQ+IGdsb2JhbE9iamVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5k
PiBnbG9iYWxPYmplY3Q7CiAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3Qp
IHsKICAgICAgICAgRWRnZSYgZ2xvYmFsT2JqZWN0RWRnZSA9IG5vZGUtPmNoaWxkMigpOwotICAg
ICAgICBnbG9iYWxPYmplY3QgPSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBnbG9iYWxPYmpl
Y3RFZGdlKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LmVtcGxhY2UodGhpcywgZ2xvYmFsT2JqZWN0
RWRnZSk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFsdWUoZ2xvYmFsT2JqZWN0LT5n
cHIoKSwgbV9zdGF0ZS5mb3JOb2RlKGdsb2JhbE9iamVjdEVkZ2UpLnZhbHVlKCkpKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCBjOGM5ZWYzNGRhMTcwZDM3M2Y5YmE4NjczZGYyN2YyOGY4ZDQzY2JmLi41MTlkZjY1ZjE3MmIz
NDk0YWFlMGIyZjIzOTFhZDliYTkzNjIxOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yOTI4LDcgKzI5MjgsNyBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgfTsKICAgICBWZWN0b3I8U2xvd1BhdGhMYW1iZGE+IG1fc2xvd1Bh
dGhMYW1iZGFzOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuPiBtX3BsYW5zOwot
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dE9mTGluZVN0cmVhbUluZGV4OworICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXg7CiB9OwogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CmluZGV4IDY1NzQ0MmY2ZmQxMTViMmFhMzYyZmY1YWQ0ZjYwZjNlZDgxZmE1N2QuLjhkMWJjMGIz
ODU0YjFjNGRmZjBhZTE4MTk2ZDQwMTc2MmYyMjM3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTA1MCwxNSAr
NTA1MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmVJRCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKIAotICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4g
a2V5QXNDZWxsOwotICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4ga2V5QXNDZWxsOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVlOwogICAgICAg
ICBKU1ZhbHVlUmVncyBrZXlSZWdzOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtleUFzVmFsdWUgPSBKU1ZhbHVlT3Bl
cmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc1ZhbHVlLmVtcGxh
Y2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5UmVncyA9IGtleUFzVmFs
dWUtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0
ZUNlbGxPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzQ2Vs
bC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleVJlZ3MgPSBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoa2V5QXNDZWxsLT5ncHIoKSk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggNTgwNDY4ODc1MmVlZjU5ZjQyZWRjMTA0N2M2M2M4ODI2YjRmMGRkYi4uZTUzOGZiYjVh
NzgxMGI0YTQ5NTgyNTM3MjU3NzYwMGUxODc5Yjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xOTQ5LDEwICsxOTQ5LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKTsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2Ny
YXRjaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHNjcmF0Y2g7CiAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgaWYgKHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewotICAgICAgICAgICAgc2NyYXRjaCA9IEdQ
UlRlbXBvcmFyeSh0aGlzKTsKKyAgICAgICAgICAgIHNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAg
ICAgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLT5ncHIoKTsKICAgICAgICAgfQogICAgICAg
ICBib29sIG5lZ2F0ZVJlc3VsdCA9IHRydWU7CkBAIC0yMTAzLDEyICsyMTAzLDEyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgZnByVmFsdWUo
dGhpcyk7CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgZnByVGVtcCh0aGlzKTsKLSAgICAgICAg
ICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2NyYXRjaDsKKyAgICAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8R1BSVGVtcG9yYXJ5PiBzY3JhdGNoOwogCiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICBib29sIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9ICFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3Rp
bGxWYWxpZCgpOwogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkgewotICAgICAgICAgICAgICAgIHNjcmF0Y2ggPSBHUFJUZW1wb3JhcnkodGhpcyk7Cisg
ICAgICAgICAgICAgICAgc2NyYXRjaC5lbXBsYWNlKHRoaXMpOwogICAgICAgICAgICAgICAgIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLT5ncHIoKTsKICAgICAgICAgICAgIH0KIApAQCAtNDc2OSwxMSAr
NDc2OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGNhc2UgU3RyaW5nVXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBp
bnB1dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwotICAgICAgICAgICAgT3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOworICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHRlbXA7CiAKICAgICAgICAgICAg
IEdQUlJlZyB0ZW1wR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewotICAgICAgICAgICAgICAgIHRlbXAgPSBH
UFJUZW1wb3JhcnkodGhpcyk7CisgICAgICAgICAgICAgICAgdGVtcC5lbXBsYWNlKHRoaXMpOwog
ICAgICAgICAgICAgICAgIHRlbXBHUFIgPSB0ZW1wLT5ncHIoKTsKICAgICAgICAgICAgIH0KIApA
QCAtNTIwNywxNSArNTIwNywxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmVJRCh0aGlzKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAotICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVD
ZWxsT3BlcmFuZD4ga2V5QXNDZWxsOwotICAgICAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4g
a2V5QXNWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4g
a2V5QXNDZWxsOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1Zh
bHVlOwogICAgICAgICBHUFJSZWcga2V5R1BSOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAgICAgIGtleUFzVmFsdWUgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBrZXlBc1ZhbHVl
LmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAga2V5R1BSID0ga2V5
QXNWYWx1ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9k
ZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0ZUNl
bGxPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGtleUFzQ2VsbC5l
bXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGtleUdQUiA9IGtleUFz
Q2VsbC0+Z3ByKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKaW5kZXggMTA0MDZmYTQxNTk1
NzQ5NWYyNDhhOTkyZTU5ZTY0ZDg1Zjc4YjI4MS4uNjZjNTAwOGUyOTk3ODA1MTlkNjgwNDdjZDky
YjZkYTUzYjcxM2Q0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgY2xhc3Mg
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBpZiAo
bV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91YmxlUmVwVXNlKQogICAgICAgICAgICAgICAgICYm
IG1fbm9kZS0+Y2hpbGQyKCktPmlzTnVtYmVyQ29uc3RhbnQoKSkgewogCi0gICAgICAgICAgICAg
ICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4gcmVjaXByb2NhbCA9IHNhZmVSZWNpcHJvY2FsRm9yRGl2
QnlDb25zdChtX25vZGUtPmNoaWxkMigpLT5hc051bWJlcigpKSkgeworICAgICAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmVjaXByb2NhbCA9IHNhZmVSZWNpcHJvY2FsRm9y
RGl2QnlDb25zdChtX25vZGUtPmNoaWxkMigpLT5hc051bWJlcigpKSkgewogICAgICAgICAgICAg
ICAgICAgICBOb2RlKiByZWNpcHJvY2FsTm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0
YW50KG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdpbiwganNEb3VibGVOdW1iZXIoKnJlY2lwcm9j
YWwpLCBEb3VibGVDb25zdGFudCk7CiAgICAgICAgICAgICAgICAgICAgIG1fbm9kZS0+c2V0T3Ao
QXJpdGhNdWwpOwogICAgICAgICAgICAgICAgICAgICBtX25vZGUtPmNoaWxkMigpID0gRWRnZShy
ZWNpcHJvY2FsTm9kZSwgRG91YmxlUmVwVXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVENvZGUuY3BwCmluZGV4IDNhYzQxZDkwZWU3NDc1ZDZiZjBhZTFhZWNjZjViMGZlZWQzYTgw
YTAuLjFjZGI1MDk1NzJkOTljZTQxNWVkNzYwMjIyZDhiYjE4NTM5OGRlYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcApAQCAtMTQ2LDIzICsxNDYsMjMgQEAgUmVn
aXN0ZXJTZXQgSklUQ29kZTo6bGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRs
aW5nQ2FsbFNpdGUoQ29kZUJsb2MKICAgICByZXR1cm4gUmVnaXN0ZXJTZXQoKTsKIH0KIAotT3B0
aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayogY29kZUJsb2NrLCB2
b2lkKiBwYykKK3N0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVC
bG9jayogY29kZUJsb2NrLCB2b2lkKiBwYykKIHsKICAgICBmb3IgKE9TUkV4aXQmIGV4aXQgOiBv
c3JFeGl0KSB7CiAgICAgICAgIGlmIChFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBl
eGl0Lm1fY29kZS5leGVjdXRhYmxlTWVtb3J5KCkpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGUt
PnN0YXJ0KCkgPD0gcGMgJiYgcGMgPCBoYW5kbGUtPmVuZCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxl
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihleGl0
Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGZv
ciAoc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4mIGxhenlTbG93UGF0aCA6IGxhenlTbG93
UGF0aHMpIHsKICAgICAgICAgaWYgKEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGxh
enlTbG93UGF0aC0+c3R1YigpLmV4ZWN1dGFibGVNZW1vcnkoKSkgewogICAgICAgICAgICAgaWYg
KGhhbmRsZS0+c3RhcnQoKSA8PSBwYyAmJiBwYyA8IGhhbmRsZS0+ZW5kKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPENvZGVPcmlnaW4+KGNvZGVCbG9jay0+Y29kZU9yaWdpbihs
YXp5U2xvd1BhdGgtPmNhbGxTaXRlSW5kZXgoKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KGNvZGVCbG9jay0+Y29kZU9yaWdpbihsYXp5U2xvd1Bh
dGgtPmNhbGxTaXRlSW5kZXgoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAppbmRleCA5ODZhOTBh
Nzg2ZjdiMWNkYTRhNTkzNDgwMzhkNTc3MWNjOTQxMzlmLi4yYzI4MDllOTcyZDE5NWU3MTU4YzQ0
YzZiYTcwYzNjZWZhMTdmN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUu
aApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIEpTQzo6SklUQ29kZSB7
CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFu
ZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KSBvdmVycmlkZTsKIAotICAg
IE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9p
ZCogcGMpIG92ZXJyaWRlOwogCiAgICAgQ29kZVJlZiBiM0NvZGUoKSBjb25zdCB7IHJldHVybiBt
X2IzQ29kZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxMjRk
MzZmYTljNTUyMzdkOTBlZGNlMWVlZTQ3ZThjYWQwNDU2OWJhLi44NDU0ZGJlZDFkMzNiMmE4MGE4
ZTZkMmE0YzhhNDM5MzkyZTgxYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApA
QCAtMTkwLDcgKzE5MCw3IEBAIFNpbXBsZVN0YXRzJiB0aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBu
YW1lLCBDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiAKIGNsYXNzIFRpbWluZ1Njb3BlIHsKIHB1Ymxp
YzoKLSAgICBUaW1pbmdTY29wZShPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlLCBjb25z
dCBjaGFyKiBuYW1lKQorICAgIFRpbWluZ1Njb3BlKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiBzY29wZSwgY29uc3QgY2hhciogbmFtZSkKICAgICAgICAgOiBtX3Njb3BlKHNjb3BlKQog
ICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCBjbGFzcyBU
aW1pbmdTY29wZSB7CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkIHNldFNjb3BlKE9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCisgICAgdm9pZCBzZXRTY29wZShzdGQ6Om9wdGlv
bmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiAgICAgewogICAgICAgICBtX3Njb3BlID0gc2Nv
cGU7CiAgICAgfQpAQCAtMjI0LDcgKzIyNCw3IEBAIGNsYXNzIFRpbWluZ1Njb3BlIHsKICAgICAg
ICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX3Nj
b3BlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX3Njb3BlOwogICAgIGRv
dWJsZSBtX2JlZm9yZTsKICAgICBjb25zdCBjaGFyKiBtX25hbWU7CiB9OwpAQCAtMTA4NCw3ICsx
MDg0LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAgICAgc3dlZXBBbGxMb2dp
Y2FsbHlFbXB0eVdlYWtCbG9ja3MoKTsKIH0KIAotdm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMoT3B0
aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKK3ZvaWQgSGVhcDo6Y29sbGVjdEFzeW5jKHN0
ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKIHsKICAgICBpZiAoIW1faXNTYWZl
VG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIEhl
YXA6OmNvbGxlY3RBc3luYyhPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogICAgIGJv
b2wgYWxyZWFkeVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIoKm1fdGhyZWFkTG9jayk7Ci0gICAgICAgIGZvciAoT3B0aW9uYWw8Q29sbGVjdGlvblNj
b3BlPiByZXF1ZXN0IDogbV9yZXF1ZXN0cykgeworICAgICAgICBmb3IgKHN0ZDo6b3B0aW9uYWw8
Q29sbGVjdGlvblNjb3BlPiByZXF1ZXN0IDogbV9yZXF1ZXN0cykgewogICAgICAgICAgICAgaWYg
KHNjb3BlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbikgewogICAgICAgICAgICAgICAgICAgICBhbHJlYWR5UmVxdWVzdGVkID0gdHJ1ZTsKQEAg
LTExMTgsNyArMTExOCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFzeW5jKE9wdGlvbmFsPENvbGxl
Y3Rpb25TY29wZT4gc2NvcGUpCiAgICAgcmVxdWVzdENvbGxlY3Rpb24oc2NvcGUpOwogfQogCi12
b2lkIEhlYXA6OmNvbGxlY3RTeW5jKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCit2
b2lkIEhlYXA6OmNvbGxlY3RTeW5jKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29w
ZSkKIHsKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkBAIC0x
MTM4LDcgKzExMzgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RJblRocmVhZCgpCiB7CiAgICAgbV9j
dXJyZW50R0NTdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAKLSAgICBPcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlv
blNjb3BlPiBzY29wZTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVh
ZExvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwpA
QCAtMTE2NCw3ICsxMTY0LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0SW5UaHJlYWQoKQogICAgIAog
ICAgIEFTU0VSVChtX2lzU2FmZVRvQ29sbGVjdCk7CiAgICAgaWYgKG1fY29sbGVjdGlvblNjb3Bl
KSB7Ci0gICAgICAgIGRhdGFMb2coIkNvbGxlY3Rpb24gc2NvcGUgYWxyZWFkeSBzZXQgZHVyaW5n
IEdDOiAiLCBtX2NvbGxlY3Rpb25TY29wZSwgIlxuIik7CisgICAgICAgIGRhdGFMb2coIkNvbGxl
Y3Rpb24gc2NvcGUgYWxyZWFkeSBzZXQgZHVyaW5nIEdDOiAiLCAqbV9jb2xsZWN0aW9uU2NvcGUs
ICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAg
ICAKQEAgLTE1NDIsNyArMTU0Miw3IEBAIHZvaWQgSGVhcDo6ZmluYWxpemUoKQogICAgICAgICBj
YWNoZS0+Y2xlYXIoKTsKIH0KIAotSGVhcDo6VGlja2V0IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9u
KE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCitIZWFwOjpUaWNrZXQgSGVhcDo6cmVx
dWVzdENvbGxlY3Rpb24oc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewog
ICAgIHN0b3BJZk5lY2Vzc2FyeSgpOwogICAgIApAQCAtMTU4Miw3ICsxNTgyLDcgQEAgdm9pZCBI
ZWFwOjpzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCkKICNlbmRpZgogfQogCi12b2lkIEhlYXA6Ondp
bGxTdGFydENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKK3ZvaWQg
SGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4g
c2NvcGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgIGRhdGFMb2coIj0+
ICIpOwpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgdm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9u
KGRvdWJsZSBnY1N0YXJ0VGltZSkKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29sbGVjdGlvblNj
b3BlKTsKICAgICBtX2xhc3RDb2xsZWN0aW9uU2NvcGUgPSBtX2NvbGxlY3Rpb25TY29wZTsKLSAg
ICBtX2NvbGxlY3Rpb25TY29wZSA9IE51bGxvcHQ7CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAg
ICAgICAgIG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChzY29wZSk7CkBAIC0xOTE1LDcgKzE5
MTUsNyBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsbCogY2VsbCkK
ICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5hZGQoY2VsbCk7CiB9CiAKLWJvb2wgSGVhcDo6c2hv
dWxkRG9GdWxsQ29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlKSBjb25z
dAorYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8Q29sbGVj
dGlvblNjb3BlPiBzY29wZSkgY29uc3QKIHsKICAgICBpZiAoIU9wdGlvbnM6OnVzZUdlbmVyYXRp
b25hbEdDKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CmluZGV4IDQxMWY5MmE3OTJkNjkwODQzZTE5NzNhMWU2Mzk5MzQ0ODVhOWZiZTIuLjc3MjZhZGU5
YTRjNWRkYWU5ODU1MTgwODQ4MWUyMmQzNDg0MmQyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIHJlbW92ZU9i
c2VydmVyKEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3Qo
b2JzZXJ2ZXIpOyB9CiAKICAgICBNdXRhdG9yU3RhdGUgbXV0YXRvclN0YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tdXRhdG9yU3RhdGU7IH0KLSAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IGNv
bGxlY3Rpb25TY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGVjdGlvblNjb3BlOyB9CisgICAg
c3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IGNvbGxlY3Rpb25TY29wZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sbGVjdGlvblNjb3BlOyB9CiAgICAgYm9vbCBoYXNIZWFwQWNjZXNzKCkgY29u
c3Q7CiAgICAgYm9vbCBtdXRhdG9ySXNTdG9wcGVkKCkgY29uc3Q7CiAgICAgYm9vbCBjb2xsZWN0
b3JCZWxpZXZlc1RoYXRUaGVXb3JsZElzU3RvcHBlZCgpIGNvbnN0OwpAQCAtMTg2LDE4ICsxODYs
MTggQEAgY2xhc3MgSGVhcCB7CiAgICAgYm9vbCBzaG91bGRDb2xsZWN0KCk7CiAgICAgCiAgICAg
Ly8gUXVldWUgdXAgYSBjb2xsZWN0aW9uLiBSZXR1cm5zIGltbWVkaWF0ZWx5LiBUaGlzIHdpbGwg
bm90IHF1ZXVlIGEgY29sbGVjdGlvbiBpZiBhIGNvbGxlY3Rpb24KLSAgICAvLyBvZiBlcXVhbCBv
ciBncmVhdGVyIHN0cmVuZ3RoIGV4aXN0cy4gRnVsbCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIg
dGhhbiBOdWxsb3B0IGNvbGxlY3Rpb25zCi0gICAgLy8gYW5kIE51bGxvcHQgY29sbGVjdGlvbnMg
YXJlIHN0cm9uZ2VyIHRoYW4gRWRlbiBjb2xsZWN0aW9ucy4gTnVsbG9wdCBtZWFucyB0aGF0IHRo
ZSBHQyBjYW4KKyAgICAvLyBvZiBlcXVhbCBvciBncmVhdGVyIHN0cmVuZ3RoIGV4aXN0cy4gRnVs
bCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBzdGQ6Om51bGxvcHQgY29sbGVjdGlvbnMK
KyAgICAvLyBhbmQgc3RkOjpudWxsb3B0IGNvbGxlY3Rpb25zIGFyZSBzdHJvbmdlciB0aGFuIEVk
ZW4gY29sbGVjdGlvbnMuIHN0ZDo6bnVsbG9wdCBtZWFucyB0aGF0IHRoZSBHQyBjYW4KICAgICAv
LyBjaG9vc2UgRWRlbiBvciBGdWxsLiBUaGlzIGltcGxpZXMgdGhhdCBpZiB5b3UgcmVxdWVzdCBh
IEdDIHdoaWxlIHRoYXQgR0MgaXMgb25nb2luZywgbm90aGluZwogICAgIC8vIHdpbGwgaGFwcGVu
LgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFzeW5jKE9wdGlvbmFsPENvbGxl
Y3Rpb25TY29wZT4gPSBOdWxsb3B0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxl
Y3RBc3luYyhzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gPSBzdGQ6Om51bGxvcHQpOwog
ICAgIAogICAgIC8vIFF1ZXVlIHVwIGEgY29sbGVjdGlvbiBhbmQgd2FpdCBmb3IgaXQgdG8gY29t
cGxldGUuIFRoaXMgd29uJ3QgcmV0dXJuIHVudGlsIHlvdSBnZXQgeW91ciBvd24KICAgICAvLyBj
b21wbGV0ZSBjb2xsZWN0aW9uLiBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgd2FzIGFuIG9uZ29pbmcg
YXN5bmNocm9ub3VzIGNvbGxlY3Rpb24gYXQgdGhlIHRpbWUKICAgICAvLyB5b3UgY2FsbGVkIHRo
aXMsIHRoZW4gdGhpcyB3b3VsZCB3YWl0IGZvciB0aGF0IG9uZSB0byBjb21wbGV0ZSBhbmQgdGhl
biB0cmlnZ2VyIHlvdXIKICAgICAvLyBjb2xsZWN0aW9uIGFuZCB0aGVuIHJldHVybi4gSW4gd2Vp
cmQgY2FzZXMsIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIEdDIHJlcXVlc3RzIGluIHRoZSBiYWNr
bG9nCiAgICAgLy8gYW5kIHRoaXMgd2lsbCB3YWl0IGZvciB0aGF0IGJhY2tsb2cgYmVmb3JlIHJ1
bm5pbmcgaXRzIEdDIGFuZCByZXR1cm5pbmcuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
b2xsZWN0U3luYyhPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+ID0gTnVsbG9wdCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0U3luYyhzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25T
Y29wZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIAogICAgIGJvb2wgY29sbGVjdElmTmVjZXNzYXJ5
T3JEZWZlcihHQ0RlZmVycmFsQ29udGV4dCogPSBudWxscHRyKTsgLy8gUmV0dXJucyB0cnVlIGlm
IGl0IGRpZCBjb2xsZWN0LgogICAgIHZvaWQgY29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2Jh
YmlsaXR5KCk7CkBAIC00MjUsMTEgKzQyNSwxMSBAQCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIG5v
dGlmeVRocmVhZFN0b3BwaW5nKGNvbnN0IExvY2tIb2xkZXImKTsKICAgICAKICAgICB0eXBlZGVm
IHVpbnQ2NF90IFRpY2tldDsKLSAgICBUaWNrZXQgcmVxdWVzdENvbGxlY3Rpb24oT3B0aW9uYWw8
Q29sbGVjdGlvblNjb3BlPik7CisgICAgVGlja2V0IHJlcXVlc3RDb2xsZWN0aW9uKHN0ZDo6b3B0
aW9uYWw8Q29sbGVjdGlvblNjb3BlPik7CiAgICAgdm9pZCB3YWl0Rm9yQ29sbGVjdGlvbihUaWNr
ZXQpOwogICAgIAogICAgIHZvaWQgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgIHZvaWQg
d2lsbFN0YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+KTsKKyAgICB2b2lk
IHdpbGxTdGFydENvbGxlY3Rpb24oc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+KTsKICAg
ICB2b2lkIGZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKCk7CiAgICAgdm9pZCBwcmVwYXJlRm9yTWFy
a2luZygpOwogICAgIApAQCAtNDY5LDcgKzQ2OSw3IEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQg
c3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3MoKTsKICAgICBib29sIHN3ZWVwTmV4dExv
Z2ljYWxseUVtcHR5V2Vha0Jsb2NrKCk7CiAKLSAgICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rp
b24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiByZXF1ZXN0ZWRDb2xsZWN0aW9uU2NvcGUpIGNv
bnN0OworICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihzdGQ6Om9wdGlvbmFsPENvbGxl
Y3Rpb25TY29wZT4gcmVxdWVzdGVkQ29sbGVjdGlvblNjb3BlKSBjb25zdDsKIAogICAgIHZvaWQg
aW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0
aCgpOwpAQCAtNDk3LDggKzQ5Nyw4IEBAIGNsYXNzIEhlYXAgewogICAgIHNpemVfdCBtX3RvdGFs
Qnl0ZXNWaXNpdGVkOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVkVGhpc0N5Y2xlOwog
ICAgIAotICAgIE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7Ci0g
ICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX2xhc3RDb2xsZWN0aW9uU2NvcGU7CisgICAg
c3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IG1fY29sbGVjdGlvblNjb3BlOworICAgIHN0
ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX2xhc3RDb2xsZWN0aW9uU2NvcGU7CiAgICAg
TXV0YXRvclN0YXRlIG1fbXV0YXRvclN0YXRlIHsgTXV0YXRvclN0YXRlOjpSdW5uaW5nIH07CiAg
ICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2Ug
bV9vYmplY3RTcGFjZTsKQEAgLTU5OSw3ICs1OTksNyBAQCBjbGFzcyBIZWFwIHsKICAgICBib29s
IG1fY29sbGVjdG9yQmVsaWV2ZXNUaGF0VGhlV29ybGRJc1N0b3BwZWQgeyBmYWxzZSB9OwogICAg
IE1vbm90b25pY1RpbWUgbV9zdG9wVGltZTsKICAgICAKLSAgICBEZXF1ZTxPcHRpb25hbDxDb2xs
ZWN0aW9uU2NvcGU+PiBtX3JlcXVlc3RzOworICAgIERlcXVlPHN0ZDo6b3B0aW9uYWw8Q29sbGVj
dGlvblNjb3BlPj4gbV9yZXF1ZXN0czsKICAgICBUaWNrZXQgbV9sYXN0U2VydmVkVGlja2V0IHsg
MCB9OwogICAgIFRpY2tldCBtX2xhc3RHcmFudGVkVGlja2V0IHsgMCB9OwogICAgIGJvb2wgbV90
aHJlYWRTaG91bGRTdG9wIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU25hcHNob3QuY3BwCmluZGV4IGZhMzNkYzk3NzQ0NWRlMmM2ZDQ4ZmU1OGUxZGEyMDZjZmVj
OGVlZWIuLjM0ZGIxMmMzZGJiYzcyNzA0MjkzNTFiZTBhYmRjOTNlNmI2MjhkMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcApAQCAtMTMwLDcgKzEzMCw3
IEBAIHZvaWQgSGVhcFNuYXBzaG90OjpmaW5hbGl6ZSgpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8
SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yQ2VsbChKU0NlbGwqIGNlbGwp
CitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvckNl
bGwoSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVChtX2ZpbmFsaXplZCk7CiAKQEAgLTE0Miw3
ICsxNDIsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVG
b3JDZWxsKEpTQ2VsbCogY2VsbCkKICAgICAgICAgICAgIHVuc2lnbmVkIG1pZGRsZSA9IHN0YXJ0
ICsgKChlbmQgLSBzdGFydCkgLyAyKTsKICAgICAgICAgICAgIEhlYXBTbmFwc2hvdE5vZGUmIG5v
ZGUgPSBtX25vZGVzW21pZGRsZV07CiAgICAgICAgICAgICBpZiAoY2VsbCA9PSBub2RlLmNlbGwp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUp
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+
KG5vZGUpOwogICAgICAgICAgICAgaWYgKGNlbGwgPCBub2RlLmNlbGwpCiAgICAgICAgICAgICAg
ICAgZW5kID0gbWlkZGxlOwogICAgICAgICAgICAgZWxzZQpAQCAtMTUzLDMyICsxNTMsMzIgQEAg
T3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yQ2VsbChKU0Nl
bGwqIGNlbGwpCiAgICAgaWYgKG1fcHJldmlvdXMpCiAgICAgICAgIHJldHVybiBtX3ByZXZpb3Vz
LT5ub2RlRm9yQ2VsbChjZWxsKTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hv
dDo6bm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcikKK3N0
ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0
SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3RJZGVudGlmaWVyKQogewogICAgIGlmIChpc0VtcHR5
KCkpIHsKICAgICAgICAgaWYgKG1fcHJldmlvdXMpCiAgICAgICAgICAgICByZXR1cm4gbV9wcmV2
aW91cy0+bm9kZUZvck9iamVjdElkZW50aWZpZXIob2JqZWN0SWRlbnRpZmllcik7Ci0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIGlmIChvYmplY3RJZGVudGlmaWVyID4gbV9sYXN0T2JqZWN0SWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAob2JqZWN0SWRlbnRpZmllciA8IG1fZmlyc3RPYmplY3RJZGVudGlmaWVyKSB7CiAgICAgICAg
IGlmIChtX3ByZXZpb3VzKQogICAgICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMtPm5vZGVGb3JP
YmplY3RJZGVudGlmaWVyKG9iamVjdElkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IG5vZGUgOiBtX25vZGVzKSB7CiAgICAgICAgIGlmIChub2RlLmlkZW50aWZpZXIgPT0gb2JqZWN0
SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxIZWFwU25hcHNob3ROb2Rl
Pihub2RlKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5v
ZGU+KG5vZGUpOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwU25hcHNob3QuaAppbmRleCA2MGQ4Mjg0NTcwNWQyYmUxYzFhM2I5NTQ2ZjQxNjM3
NGEzODg5YjYwLi5mZGQzZGUzYjUwZjA4OGIzNTQwYzE0MTUzN2Q5MzBmM2I0OTM0YTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuaApAQCAtNDUsOCArNDUsOCBA
QCBjbGFzcyBIZWFwU25hcHNob3QgewogICAgIHZvaWQgZmluYWxpemUoKTsKIAogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXMuaXNFbXB0eSgpOyB9Ci0gICAgT3B0aW9u
YWw8SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckNlbGwoSlNDZWxsKik7Ci0gICAgT3B0aW9uYWw8
SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0
SWRlbnRpZmllcik7CisgICAgc3RkOjpvcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBub2RlRm9y
Q2VsbChKU0NlbGwqKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG5vZGVG
b3JPYmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdElkZW50aWZpZXIpOwogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBIZWFwU25hcHNob3RCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcAppbmRleCBlMjk1ZjQwYmU5Y2QwYjg1M2MxMGM0NTliODhjYWU2M2JhMTkyMTdh
Li4yMzg4YzI4NDc5NjE5NzdhYjhhZDA0ZjM5YTAxYWI2ZWQ0NzczZjA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIC8vIElu
IGNhc2UgdGhpcyBpcyBhIHJlLWVudHJhbnQgY2FsbCBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCB3
ZSBkb24ndCB3YW50IHRvIGxvc2UKICAgICAgICAgLy8gdGhlIG91dGVyIHJlcXVlc3QncyBpZCBq
dXN0IGJlY2F1c2UgdGhlIGlubmVyIHJlcXVlc3QgaXMgYm9ndXMuCi0gICAgICAgIFNldEZvclNj
b3BlPE9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCBO
dWxsb3B0KTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8c3RkOjpvcHRpb25hbDxsb25nPj4gc2NvcGVk
UmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJZCwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlZE1lc3NhZ2U7CiAgICAgICAgIGlmICghSW5zcGVj
dG9yVmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlLCBwYXJzZWRNZXNzYWdlKSkgewpAQCAtMTQ1LDcg
KzE0NSw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIAogICAgIHsKICAgICAgICAgLy8gV2UgY291bGQgYmUgY2FsbGVkIHJlLWVudHJh
bnRseSBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCBzbyByZXN0b3JlIHRoZSBwcmV2aW91cyBpZC4K
LSAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8bG9uZz4+IHNjb3BlZFJlcXVlc3RJZChtX2N1
cnJlbnRSZXF1ZXN0SWQsIHJlcXVlc3RJZCk7CisgICAgICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0
aW9uYWw8bG9uZz4+IHNjb3BlZFJlcXVlc3RJZChtX2N1cnJlbnRSZXF1ZXN0SWQsIHJlcXVlc3RJ
ZCk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBtZXRob2RWYWx1ZTsKICAgICAg
ICAgaWYgKCFtZXNzYWdlT2JqZWN0LT5nZXRWYWx1ZShBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBt
ZXRob2RWYWx1ZSkpIHsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVy
OjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNl
KG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIAogICAgIG1fcHJvdG9jb2xFcnJvcnMuY2xlYXIo
KTsKLSAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBOdWxsb3B0OworICAgIG1fY3VycmVudFJlcXVl
c3RJZCA9IHN0ZDo6bnVsbG9wdDsKIH0KICAgICAKIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJl
cG9ydFByb3RvY29sRXJyb3IoQ29tbW9uRXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hl
cjo6cmVwb3J0UHJvdG9jb2xFcnJvcihDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBT
dHIKICAgICByZXBvcnRQcm90b2NvbEVycm9yKG1fY3VycmVudFJlcXVlc3RJZCwgZXJyb3JDb2Rl
LCBlcnJvck1lc3NhZ2UpOwogfQogCi12b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90
b2NvbEVycm9yKE9wdGlvbmFsPGxvbmc+IHJlbGF0ZWRSZXF1ZXN0SWQsIENvbW1vbkVycm9yQ29k
ZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBCYWNrZW5kRGlz
cGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihzdGQ6Om9wdGlvbmFsPGxvbmc+IHJlbGF0ZWRS
ZXF1ZXN0SWQsIENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQogewogICAgIEFTU0VSVF9BUkcoZXJyb3JDb2RlLCBlcnJvckNvZGUgPj0gMCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaAppbmRleCAzMTc2YjJkMWFmM2VkZGMzNTkwNTc3NjZjYzE0
OWRjN2JkMzM2OWJjLi45Mjc2NDJjMjFhMzU1YTM2YTU0MDc5MjVmNjNmODNmN2FjMzBmMzdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QmFja2VuZERp
c3BhdGNoZXI+CiAgICAgdm9pZCBzZW5kUGVuZGluZ0Vycm9ycygpOwogCiAgICAgdm9pZCByZXBv
cnRQcm90b2NvbEVycm9yKENvbW1vbkVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOwotICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xFcnJvcihPcHRpb25hbDxsb25nPiByZWxhdGVk
UmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
KyAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3Ioc3RkOjpvcHRpb25hbDxsb25nPiByZWxhdGVk
UmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV1RGX0hJRERFTl9ERUNMQVJBVElPTgpA
QCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEJhY2tlbmREaXNwYXRj
aGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QmFja2VuZERpc3BhdGNoZXI+CiAKICAgICAvLyBGb3Ig
c3luY2hyb25vdXNseSBoYW5kbGVkIHJlcXVlc3RzLCBhdm9pZCBwbHVtYmluZyByZXF1ZXN0SWQg
dGhyb3VnaCBldmVyeQogICAgIC8vIGNhbGwgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBmYWlsIHdp
dGggYSBwcm90b2NvbCBlcnJvci4KLSAgICBPcHRpb25hbDxsb25nPiBtX2N1cnJlbnRSZXF1ZXN0
SWQgeyBOdWxsb3B0IH07CisgICAgc3RkOjpvcHRpb25hbDxsb25nPiBtX2N1cnJlbnRSZXF1ZXN0
SWQgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggNDA0MTY5ZjdmNTRmYWYwZDk2ODFmMmVmMDIwZmY0
YTZkOGMxZGM0ZS4uN2U2ZWI1MGFjNGIwNjQ1Y2M5YmQ5OWU2MWFiNDAzODE2MTZiMTVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC0yMTMsMjQgKzIxMywyNCBAQCB2b2lkIEluc3Bl
Y3RvckhlYXBBZ2VudDo6c3RvcFRyYWNraW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dHJhY2tpbmdDb21wbGV0ZSh0aW1lc3RhbXAsIHNuYXBz
aG90RGF0YSk7CiB9CiAKLU9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEluc3BlY3RvckhlYXBB
Z2VudDo6bm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIpCitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFw
c2hvdE5vZGU+IEluc3BlY3RvckhlYXBBZ2VudDo6bm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVy
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIp
CiB7CiAgICAgSGVhcFByb2ZpbGVyKiBoZWFwUHJvZmlsZXIgPSBtX2Vudmlyb25tZW50LnZtKCku
aGVhcFByb2ZpbGVyKCk7CiAgICAgaWYgKCFoZWFwUHJvZmlsZXIpIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGhlYXAgc25hcHNob3QiKTsKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgSGVh
cFNuYXBzaG90KiBzbmFwc2hvdCA9IGhlYXBQcm9maWxlci0+bW9zdFJlY2VudFNuYXBzaG90KCk7
CiAgICAgaWYgKCFzbmFwc2hvdCkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiTm8gaGVhcCBzbmFwc2hvdCIpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25h
cHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBzbmFwc2hvdC0+bm9kZUZvck9iamVjdElkZW50aWZp
ZXIoaGVhcE9iamVjdElkZW50aWZpZXIpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gc25hcHNob3QtPm5vZGVGb3JPYmplY3RJZGVudGlm
aWVyKGhlYXBPYmplY3RJZGVudGlmaWVyKTsKICAgICBpZiAoIW9wdGlvbmFsTm9kZSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gb2JqZWN0IGZvciBpZGVudGlmaWVy
LCBpdCBtYXkgaGF2ZSBiZWVuIGNvbGxlY3RlZCIpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3B0aW9u
YWxOb2RlOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQ
cmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGhlYXBPYmplY3RJZCwKICAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAKICAgICB1bnNpZ25lZCBoZWFwT2JqZWN0SWRlbnRp
ZmllciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZWFwT2JqZWN0SWQpOwotICAgIGNvbnN0IE9w
dGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0
SWRlbnRpZmllcihlcnJvclN0cmluZywgaGVhcE9iamVjdElkZW50aWZpZXIpOworICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gbm9kZUZvckhl
YXBPYmplY3RJZGVudGlmaWVyKGVycm9yU3RyaW5nLCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CiAg
ICAgaWYgKCFvcHRpb25hbE5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjkzLDcgKzI5Myw3
IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwogCiAgICAgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaGVhcE9iamVjdElkKTsKLSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2Rl
PiBvcHRpb25hbE5vZGUgPSBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoZXJyb3JTdHJpbmcs
IGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFw
c2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJv
clN0cmluZywgaGVhcE9iamVjdElkZW50aWZpZXIpOwogICAgIGlmICghb3B0aW9uYWxOb2RlKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKaW5kZXggYmE3MzgyYmQ5N2Y2
YzliOTQ2NDMxNmY0MzcxMDkyM2EyZGE3MGIzZi4uNDc1NzYwODg4MmI0YjI2NmVmZjRlMDhlYWEx
YmQyOTU4ODVlMDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAg
Y2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9ySGVhcEFnZW50IDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEgKICAgICB2b2lkIGNsZWFySGVhcFNuYXBzaG90cygpOwog
CiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEpTQzo6SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckhl
YXBPYmplY3RJZGVudGlmaWVyKEVycm9yU3RyaW5nJiwgdW5zaWduZWQgaGVhcE9iamVjdElkZW50
aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpIZWFwU25hcHNob3ROb2RlPiBub2RlRm9y
SGVhcE9iamVjdElkZW50aWZpZXIoRXJyb3JTdHJpbmcmLCB1bnNpZ25lZCBoZWFwT2JqZWN0SWRl
bnRpZmllcik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKaW5kZXgg
OTMxNzA1ZGM1ZDQ2ODQ5MGNmNzBmNzA5ZWYyYTQ1MzI1OWIzN2ExYS4uZGJhMDYwMTc5OWFmOTMz
MzI4ZDMyZTAwNGI1OGY5OGMyMzFhMDQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0IGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUNvbm5lY3QKICAgICB2b2lk
IGNsb3NlKCk7CiAgICAgdm9pZCB0YXJnZXRDbG9zZWQoKTsKIAotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0OwogICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRl
bnRpZmllcigpIGNvbnN0OwogICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbigpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVD
b25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0KaW5kZXggMTJmOTU0YzAzNDljMWJmYzcz
MzAzZDYyOWZkZjFmZWJhNTYyNTU3Yy4uZDYwZGE0OGFmYTgzMzFmNmNiY2Q5ZGM0ZmU3OTE0YTMy
OGVmMjMxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbQpAQCAtMTE5LDkg
KzExOSw5IEBAIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6flJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldCgpCiAgICAgdGVhcmRvd25SdW5Mb29wKCk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAorc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlm
aWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDx1bnNpZ25lZD4o
bV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBOdWxsb3B0OworICAgIHJldHVybiBtX3Rh
cmdldCA/IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVy
KCkpIDogc3RkOjpudWxsb3B0OwogfQogCiBOU1N0cmluZyAqUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Ojpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9v
bCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0
aW9uLCBib29sIGF1dG9tYXRpY2EKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1
YXJkPExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0
IHx8ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewotICAgICAgICAgICAgICAg
IFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRpZmll
cigpLnZhbHVlT3IoMCkpOworICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xl
dG9uKCkuc2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRpZmllcigpLnZhbHVlX29yKDApKTsKICAgICAg
ICAgICAgICAgICBtX3RhcmdldCA9IG51bGxwdHI7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlz
PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KG1fdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgIGF1
dG8gY2FzdGVkVGFyZ2V0ID0gZG93bmNhc3Q8UmVtb3RlSW5zcGVjdGlvblRhcmdldD4obV90YXJn
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA0ZWE3ZjM5MjVmOGQzZWI5ZmJkNjY4ZDJjMjlhZDUz
YmY5YWE2N2E1Li45M2ZkMWE3ZDdjMGU2ZGRjMzA5MjAwMzU1YWQyNjBmNmVjYTNmZDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVJbnNwZWN0b3IuaApAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRF
IFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1YmxpYyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
CiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24+IG1fcmVsYXlDb25uZWN0
aW9uOwogCiAgICAgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9
OwotICAgIE9wdGlvbmFsPFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IG1f
Y2xpZW50Q2FwYWJpbGl0aWVzOworICAgIHN0ZDo6b3B0aW9uYWw8UmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQ6OkNhcGFiaWxpdGllcz4gbV9jbGllbnRDYXBhYmlsaXRpZXM7CiAKICAgICBkaXNwYXRj
aF9xdWV1ZV90IG1feHBjUXVldWU7CiAgICAgdW5zaWduZWQgbV9uZXh0QXZhaWxhYmxlVGFyZ2V0
SWRlbnRpZmllciB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbQppbmRleCBjYjBiYWNkZjZmMzBlYzNm
NTZkMWU0NGFhOWFlYjg0NjU1NjgyNjdlLi4yMWNiMjMyZDhjNGFhM2Q5NGEzNzg4MzY1NDY4ZDAw
MTRiMDE3MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1tCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENhcGFiaWxpdGllcygpCiAgICAgc3RkOjpsb2Nr
X2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAKICAgICBpZiAoIW1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudENhcGFiaWxpdGllcyA9IE51bGxvcHQ7CisgICAgICAgIG1fY2xpZW50Q2FwYWJp
bGl0aWVzID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgewogICAgICAgICBSZW1vdGVJbnNwZWN0
b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzIHVwZGF0ZWRDYXBhYmlsaXRpZXMgPSB7CiAgICAgICAg
ICAgICBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKSAvLyByZW1vdGVBdXRvbWF0
aW9uQWxsb3dlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2Nw
cF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKaW5kZXggZDQzZDVhMTk2NTZkMGQxNWQ4OTA0MTI3
ZmJhZjM5ZTVlYmQ0YWM5YS4uMDcwNGIzZTFlMGQxZGJiNTI4M2FiN2I2YWY2MTRiMTE5MjBiODE2
NSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJv
dG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBAIC0zNzAsMTEgKzM3MCwxMSBAQCBkZWYgX2dlbmVyYXRl
X2RlY2xhcmF0aW9uc19mb3JfZW51bV9jb252ZXJzaW9uX21ldGhvZHMoc2VsZik6CiAgICAgICAg
ICAgICAnbmFtZXNwYWNlICVzIHsnICUgc2VsZi5oZWxwZXJzX25hbWVzcGFjZSgpLAogICAgICAg
ICAgICAgJycsCiAgICAgICAgICAgICAndGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlw
ZT4nLAotICAgICAgICAgICAgJ09wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsnLAorICAgICAgICAgICAgJ3N0ZDo6b3B0aW9u
YWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOycsCiAgICAgICAgIF0pKQogCiAgICAgICAgIGRlZiByZXR1cm5fdHlwZV93aXRoX2V4cG9y
dF9tYWNybyhjcHBfcHJvdG9jb2xfdHlwZSk6Ci0gICAgICAgICAgICBlbnVtX3JldHVybl90eXBl
ID0gJ09wdGlvbmFsPCVzPicgJSBjcHBfcHJvdG9jb2xfdHlwZQorICAgICAgICAgICAgZW51bV9y
ZXR1cm5fdHlwZSA9ICdzdGQ6Om9wdGlvbmFsPCVzPicgJSBjcHBfcHJvdG9jb2xfdHlwZQogICAg
ICAgICAgICAgcmVzdWx0X3Rlcm1zID0gW2VudW1fcmV0dXJuX3R5cGVdCiAgICAgICAgICAgICBl
eHBvcnRfbWFjcm8gPSBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrLnNldHRpbmcoJ2V4cG9ydF9tYWNy
bycsIE5vbmUpCiAgICAgICAgICAgICBpZiBleHBvcnRfbWFjcm8gaXMgbm90IE5vbmU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggNTdiODQyYmNmOTRlZGNiNzJlNjEzMzlj
NzExZDc2MzMyYmI1NTE3ZS4uN2JiYjkwMzI3YzQ2YjhiOGI0NmJiMDYxMWZjNjY4NGRhZjQ5OWJj
NiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTcsNyArOTcsNyBAQCBk
ZWYgZ2VuZXJhdGVfY29udmVyc2lvbl9tZXRob2RfYm9keShlbnVtX3R5cGUsIGNwcF9wcm90b2Nv
bF90eXBlKToKICAgICAgICAgICAgIGJvZHlfbGluZXMgPSBbXQogICAgICAgICAgICAgYm9keV9s
aW5lcy5leHRlbmQoWwogICAgICAgICAgICAgICAgICd0ZW1wbGF0ZTw+JywKLSAgICAgICAgICAg
ICAgICAnT3B0aW9uYWw8JXM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzwlcz4oY29uc3QgU3Ry
aW5nJiBwcm90b2NvbFN0cmluZyknICUgKGNwcF9wcm90b2NvbF90eXBlLCBjcHBfcHJvdG9jb2xf
dHlwZSksCisgICAgICAgICAgICAgICAgJ3N0ZDo6b3B0aW9uYWw8JXM+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzwlcz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZyknICUgKGNwcF9wcm90
b2NvbF90eXBlLCBjcHBfcHJvdG9jb2xfdHlwZSksCiAgICAgICAgICAgICAgICAgJ3snLAogICAg
ICAgICAgICAgICAgICcgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0g
eycsCiAgICAgICAgICAgICBdKQpAQCAtMTEyLDcgKzExMiw3IEBAIGRlZiBnZW5lcmF0ZV9jb252
ZXJzaW9uX21ldGhvZF9ib2R5KGVudW1fdHlwZSwgY3BwX3Byb3RvY29sX3R5cGUpOgogICAgICAg
ICAgICAgICAgICcgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3Zh
bHVlc1tjb25zdGFudFZhbHVlc1tpXV0pJywKICAgICAgICAgICAgICAgICAnICAgICAgICAgICAg
cmV0dXJuICglcyljb25zdGFudFZhbHVlc1tpXTsnICUgY3BwX3Byb3RvY29sX3R5cGUsCiAgICAg
ICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgICAgJyAgICByZXR1cm4gTnVsbG9wdDsnLAor
ICAgICAgICAgICAgICAgICcgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsnLAogICAgICAgICAgICAg
ICAgICd9JywKICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgIF0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggZGYzMTAzZGNmMGUyNGZmNDZkNDRlYjcx
MDExMzkxZjUxYWM4MGE5Yy4uNDQyZDVjYmZjYTEwZTI3YjEwYzA3NmRjOWMwMDAxMDYzZmUwNWIy
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtNzIzLDExICs3
MjMsMTEgQEAgcHVibGljOgogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9j
b2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAv
LyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+
KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRh
YmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKIAogfSAv
LyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNzk1LDcgKzc5NSw3IEBAIFN0cmluZyBnZXRF
bnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNl
JyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFi
YXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xT
dHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAo
c2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzOjpSZWQs
CkBAIC04MDYsNyArODA2LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzwKICAgICAgICAgaWYg
KHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ld
XSkKICAgICAgICAgICAgIHJldHVybiAoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlBy
aW1hcnlDb2xvcnMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9w
dGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDRhZDE0NmE1
YjVjZjg3NjhjMjY1YWE4OGQ0OWZkYzFiMTA3NDI5Y2EuLmViMTY4MjA2NjIwMmY5OTc0NWM4ODMw
OTE0YzhmZmVlZGE4ZjM4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwt
Y2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtNjI0LDExICs2MjQsMTEgQEAg
cHVibGljOgogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJv
dG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlw
ZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBp
biB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0
cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJp
bWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdEhlbHBlcnMKIApAQCAtNjk2LDcgKzY5Niw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4K
IHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmlt
YXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitz
dGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3Jz
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6
OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUlu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzOjpSZWQsCkBAIC03MDcs
NyArNzA3LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzwKICAgICAgICAgaWYgKHByb3RvY29s
U3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAg
ICAgICAgIHJldHVybiAoSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9l
bnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCAzZTQ0ZmUxMTIzNGYyNjc5OGRlMzc0ODYwM2Qy
YzZiMGViZjJlZGIzLi5lMDMzNjQyNGI2ZTFhMmFkMWM3YTM1ZjRkZjdmZTUxODg0YmU4NjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVz
dWx0CkBAIC00NzEsMTEgKzQ3MSwxMSBAQCBlbnVtIGNsYXNzIFR5cGVEb21haW5FbnVtIHsKIG5h
bWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5
cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdUeXBl
RG9tYWluJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0+KGNvbnN0IFN0cmlu
ZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBl
RG9tYWluRW51bT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1l
c3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNTQ1LDcgKzU0NSw3IEBAIFN0cmluZyBnZXRFbnVtQ29u
c3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ1R5cGVEb21haW4nIERv
bWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFp
bjo6VHlwZURvbWFpbkVudW0+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bT4oY29uc3QgU3RyaW5nJiBwcm90b2Nv
bFN0cmluZykKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6
VHlwZURvbWFpbkVudW0+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0
cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAg
ICAgICAgIChzaXplX3QpSW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFp
bkVudW06OlNoYXJlZCwKQEAgLTU1Nyw3ICs1NTcsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3I6OlBy
b3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bT4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aQogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29u
c3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChJbnNwZWN0b3I6OlByb3RvY29s
OjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bSljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJl
dHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRp
b25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggMTQ1YTA4NjQ5M2YxZGVhMDJlOWU2
M2EwOTNmM2Y3ODhmMTczNTM5Mi4uMTVjYTZhYzE2ZWIzNDU2NmRmODdhODE0MTY5YzkyMDFlZmNj
MGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC00MTMs
MTEgKzQxMywxMSBAQCBwdWJsaWM6CiBuYW1lc3BhY2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgotT3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4g
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQ
cm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7
CiAKIC8vIEVudW1zIGluIHRoZSAnUnVudGltZScgRG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlw
ZT4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPihjb25zdCBTdHJpbmcmKTsKIAogfSAv
LyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNDgxLDcgKzQ4MSw3IEBAIFN0cmluZyBnZXRF
bnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ1J1bnRpbWUn
IERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6S2V5UGF0aDo6VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJp
bmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6
OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpLZXlQYXRoOjpUeXBlPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVf
dClJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlOjpOdWxsLApAQCAt
NDkyLDcgKzQ5Miw3IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6Oktl
eVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJCiAgICAgICAgIGlmIChwcm90
b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAg
ICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6
OlR5cGUpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
CmluZGV4IDViMjU0ZTBjODM3ZWZkNmExYTk0MTQwODk3YmEzYzFlMmVlNjVhOWMuLjRkZmMxZjJi
NjNmYTUxMmY5YTZkYjIxZDQ5ODdlNDU3ZDhmMDkxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlw
ZS5qc29uLXJlc3VsdApAQCAtMzYzLDExICszNjMsMTEgQEAgZW51bSBjbGFzcyBSZWFzb24gewog
bmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVt
VHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ0Rl
YnVnZ2VyJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+KGNvbnN0IFN0cmlu
ZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwogCkBAIC00MzEsNyArNDMxLDcgQEAg
U3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKIC8vIEVudW1zIGluIHRo
ZSAnRGVidWdnZXInIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJp
bmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+
IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
UmVhc29uPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uOjpEaWVkLApAQCAtNDQyLDcgKzQ0Miw3IEBAIE9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0CiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVt
X2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4g
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24pY29uc3RhbnRWYWx1ZXNbaV07
CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAppbmRleCAyZGJkYTc4NzkwYTZjNmYwZmEy
MDk5ZDBmYzI2NGFlNzcxNDcxNjZkLi40OWE4NDQwZjgzNGFiMjM4ZGI1YWJjNGZkMDM4MzJlYWYw
OTA4MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CkBAIC0zNjAsMTMgKzM2
MCwxMyBAQCBlbnVtIGNsYXNzIFR3b0xlZ2dlZEFuaW1hbHMgewogbmFtZXNwYWNlIFRlc3RIZWxw
ZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFBy
b3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsK
K3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ1J1bnRpbWUnIERvbWFpbgogdGVt
cGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1h
bHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpGYXJtQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYp
OwogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHdv
TGVnZ2VkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRp
b25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPiBwYXJz
ZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHdvTGVn
Z2VkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJz
CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50aW1lJyBEb21haW4KIHRlbXBsYXRlPD4KLU9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1h
bHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJp
bmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZh
bHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OkZhcm1BbmltYWxzOjpQaWdzLApAQCAtNDQ2LDExICs0NDYsMTEgQEAgT3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzxJbnMKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFs
dWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+
Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxz
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3N0ZDo6b3B0
aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xl
Z2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM6OkR1Y2tzLApAQCAtNDYy
LDcgKzQ2Miw3IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xl
Z2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluCiAgICAgICAgIGlmIChwcm90b2Nv
bFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAg
ICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFu
aW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1l
LWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1
bHQKaW5kZXggYjkwNGFmOGRlMmYxYjRlN2NkZWQ4MDJhM2RkZjViYTExZWVlYWIxMy4uNWJlOTcz
MzVmZTg2MDQ1NmNmMWE2NjMxY2VkZWRlZjdhYjk5ZTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUt
Y2FzdHMuanNvbi1yZXN1bHQKQEAgLTU4MiwxMyArNTgyLDEzIEBAIHN0YXRpYyB2b2lkIGFzc2Vy
dFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqKTsKIG5hbWVz
cGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+
Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRW51bXMgaW4gdGhlICdUZXN0JyBE
b21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVu
Y2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFs
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4o
Y29uc3QgU3RyaW5nJik7CiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxz
Pihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNjU2
LDcgKzY1Niw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAv
LyBFbnVtcyBpbiB0aGUgJ1Rlc3QnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPihjb25zdCBT
dHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29s
OjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0
b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9j
b2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0g
ewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5p
bWFsczo6UGlncywKQEAgLTY2OCwxMSArNjY4LDExIEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPElu
CiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25z
dGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRlc3Q6OlVuY2FzdGVkQW5pbWFscyljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBO
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4KLU9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPihj
b25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlBy
b3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90
b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10g
PSB7CiAgICAgICAgIChzaXplX3QpSW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5p
bWFsczo6RHVja3MsCkBAIC02ODQsNyArNjg0LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90
b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3AK
ICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0
YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoSW5zcGVjdG9yOjpQcm90b2NvbDo6
VGVzdDo6Q2FzdGVkQW5pbWFscyljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBOdWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuaAppbmRleCBjOGZiMjVhMjg1ZTQ0NDk2ZTMwNWJkZjNjODhmYThiYWUwMjMwMmMw
Li43NWM3MGM3ZjdjODJhNDg5NGU5MDE1OWFiYTliY2YwMGE3NGEyNDBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaApAQCAtMTk2LDcgKzE5Niw3IEBAIGNsYXNzIEpJVENvZGUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklUQ29kZT4gewogCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICB2aXJ0dWFsIFJlZ2lzdGVyU2V0IGxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRp
b25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9jayosIENhbGxTaXRlSW5kZXgpOwotICAgIHZpcnR1
YWwgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSB7IFVO
VVNFRF9QQVJBTShwYyk7IHJldHVybiBOdWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgeyBVTlVTRURfUEFS
QU0ocGMpOyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNwcAppbmRleCBiZTkyZDNm
OTZlMWJjODhkNjEzNjIyYzVmZjVjYmE5MGIzZjQ4MTUyLi5hNWRiN2UxYjI2ZTIzNGJkMWRkMjE4
MTNiNWVlZTI5MjhmOWI0MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
aXZHZW5lcmF0b3IuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSklURGl2R2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0KQogICAgIGxvYWRPcGVyYW5kKGppdCwg
bV9sZWZ0T3BlcmFuZCwgbV9sZWZ0LCBtX2xlZnRGUFIpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBPcHRpb25hbDxkb3VibGU+IHNhZmVSZWNpcHJvY2FsOworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBzYWZlUmVjaXByb2NhbDsKICAgICBpZiAobV9yaWdodE9wZXJhbmQuaXNDb25zdCgp
KSB7CiAgICAgICAgIGRvdWJsZSBjb25zdGFudCA9IG1fcmlnaHRPcGVyYW5kLmFzQ29uc3ROdW1i
ZXIoKTsKICAgICAgICAgc2FmZVJlY2lwcm9jYWwgPSBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29u
c3QoY29uc3RhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKaW5kZXggZjE3YTZjMTc2MzA1NTczZThkM2E2NWEzMjliM2RhYWU1YmM0MjY4YS4uMTJhNTZm
MzgxNWZiZWEwMGExNjI4ZWRkODcyMTZlZWVmZTAxOTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAgc3RhdGljIHZv
aWQgZGlyZWN0UHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBKU1ZhbHVlIHMKICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlL
ZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkp
KSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eSkpIHsKICAgICAgICAgYnlWYWxJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogICAg
ICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChjYWxsRnJhbWUsIGluZGV4LnZhbHVlKCks
IHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0
RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKaW5kZXggYjkzZTJjNjJj
MTk3OTIwOWE5YzBmMmY5MmE3YmM1NmYyMDFlY2MyMi4uNDEwMDA5YWIwMjVjYzBhOGQ0MjhjYzdj
ODViMjlmMzk1YjNhMWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
Q1RvQ29kZU9yaWdpbk1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1Rv
Q29kZU9yaWdpbk1hcC5jcHAKQEAgLTI0NiwxMSArMjQ2LDExIEBAIGRvdWJsZSBQQ1RvQ29kZU9y
aWdpbk1hcDo6bWVtb3J5U2l6ZSgpCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKLU9wdGlvbmFsPENv
ZGVPcmlnaW4+IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMp
IGNvbnN0CiB7CiAgICAgdWludHB0cl90IHBjQXNJbnQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihwYyk7CiAgICAgaWYgKCEobV9wY1JhbmdlU3RhcnQgPD0gcGNBc0ludCAmJiBwY0FzSW50IDw9
IG1fcGNSYW5nZUVuZCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgdWludHB0cl90IGN1cnJlbnRQQyA9IDA7CiAgICAgQ29kZU9y
aWdpbiBjdXJyZW50Q29kZU9yaWdpbigwLCBudWxscHRyKTsKQEAgLTI5MywxMiArMjkzLDEyIEBA
IE9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMp
IGNvbnN0CiAgICAgICAgICAgICAvLyBXZSBzdWJ0cmFjdCAxIGJlY2F1c2Ugd2UgZ2VuZXJhdGUg
ZW5kIHBvaW50cyBpbmNsdXNpdmVseSBpbiB0aGlzIHRhYmxlLCBldmVuIHRob3VnaCB3ZSBhcmUg
aW50ZXJlc3RlZCBpbiByYW5nZXMgb2YgdGhlIGZvcm06IFtwcmV2aW91c1BDLCBjdXJyZW50UEMp
CiAgICAgICAgICAgICB1aW50cHRyX3QgZW5kT2ZSYW5nZSA9IGN1cnJlbnRQQyAtIDE7CiAgICAg
ICAgICAgICBpZiAoc3RhcnRPZlJhbmdlIDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8PSBlbmRPZlJh
bmdlKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihwcmV2aW91
c09yaWdpbik7IC8vIFdlIHJldHVybiBwcmV2aW91c09yaWdpbiBoZXJlIGJlY2F1c2UgQ29kZU9y
aWdpbidzIGFyZSBtYXBwZWQgdG8gdGhlIHN0YXJ0VmFsdWUgb2YgdGhlIHJhbmdlLgorICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KHByZXZpb3VzT3JpZ2lu
KTsgLy8gV2UgcmV0dXJuIHByZXZpb3VzT3JpZ2luIGhlcmUgYmVjYXVzZSBDb2RlT3JpZ2luJ3Mg
YXJlIG1hcHBlZCB0byB0aGUgc3RhcnRWYWx1ZSBvZiB0aGUgcmFuZ2UuCiAgICAgICAgIH0KICAg
ICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBOdWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5oCmluZGV4IDFj
ODBlZDg2ZWNjZjY1NzFjMjFmMWJlYWMyYTY1YjhkODBlNDJkM2UuLmMwMWM0NDFhNTgxODA5Mzk5
YjM5OTA3YWY0ODkyZGJhNDMxZGNlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1BDVG9Db2RlT3JpZ2luTWFwLmgKQEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgUENUb0NvZGVPcmln
aW5NYXAgewogICAgIFBDVG9Db2RlT3JpZ2luTWFwKFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciYm
LCBMaW5rQnVmZmVyJik7CiAgICAgflBDVG9Db2RlT3JpZ2luTWFwKCk7CiAKLSAgICBPcHRpb25h
bDxDb2RlT3JpZ2luPiBmaW5kUEModm9pZCogcGMpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKSBjb25zdDsKIAogICAgIGRvdWJsZSBtZW1vcnlT
aXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZmU5OWVkYWRmOTQyNmUxOTYwMDA0MzI4
NDBmYTYzYzE0NTBjNDA5ZC4uZjdlNjAzNWIzNWY5OTM2MGY3OTFlYjkyMTliZDVmN2I4ZWI4NmMz
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQyMSw3ICs0MjEsNyBAQCBjbGFzcyBSdW50aW1l
QXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgp
IDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBqc051bWJlcih0aGlzT2JqZWN0LT5t
X3ZlY3RvcltpbmRleC52YWx1ZSgpXSkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAwZDU2
ZDFkMmZiMzA4MzkyMDcxYzI3YzA2OTVhOGRjNDgwZWYwNzI0Li5kMzZiYjI4NDdmZGE1MWQ5YTY1
ZGQ2MzhmZDIzMTM0MmJmMTNkYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTg5Miw3ICs4OTIsNyBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgaWYgKFVOTElLRUxZKHRocm93
U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAotICAgIGlmIChPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUs
IDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJ
bmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggYzIwYWE4NGZkZDAzNjliNmE4YTZm
ZTA1NjBhM2Y2ODNmZTNhOWM5OS4uYTdiMTgwYjExZTYxM2Q4YmI3MjViOTJjY2E0YmFlNjhlNDJm
NmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFi
bGUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlLCBjb25zdAogICAgIC8vIElu
ZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZy4KICAgICAvLyBpbXBvcnQgYSBmcm9tICJtb2QiCiAg
ICAgLy8gZXhwb3J0IHsgYSB9Ci0gICAgT3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVu
dHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPnRyeUdldEltcG9ydEVu
dHJ5KGxvY2FsTmFtZS5nZXQoKSk7CisgICAgc3RkOjpvcHRpb25hbDxKU01vZHVsZVJlY29yZDo6
SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS0+dHJ5R2V0
SW1wb3J0RW50cnkobG9jYWxOYW1lLmdldCgpKTsKICAgICBBU1NFUlQob3B0aW9uYWxJbXBvcnRF
bnRyeSk7CiAgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5JiBpbXBvcnRFbnRy
eSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OwogICAgIGZvciAoYXV0byYgZXhwb3J0TmFtZSA6IG1v
ZHVsZVByb2dyYW1Ob2RlLm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydGVkQmluZGluZ3MoKS5nZXQo
bG9jYWxOYW1lLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbmN1cnJlbnRKU0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bmN1cnJlbnRKU0xvY2suaAppbmRleCA5ODExYTM4MjNkYmY4ZjEyZjIyYmNmN2IyNDA3MmVmOWMz
NGZlZmQ5Li5hODEyZDBlMjZlMDg1MGRkZDlmZGZmNzBmYWI4NjA5OGE5OWNjMGRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5oCkBAIC0x
MDIsNyArMTAyLDcgQEAgY2xhc3MgQ29uY3VycmVudEpTTG9ja2VyIDogcHVibGljIENvbmN1cnJl
bnRKU0xvY2tlckJhc2UgewogICAgIENvbmN1cnJlbnRKU0xvY2tlcihDb25jdXJyZW50SlNMb2Nr
JiBsb2NrYWJsZSkKICAgICAgICAgOiBDb25jdXJyZW50SlNMb2NrZXJCYXNlKGxvY2thYmxlKQog
I2lmIEVOQUJMRShDT05DVVJSRU5UX0pTKSAmJiAhZGVmaW5lZChOREVCVUcpCi0gICAgICAgICwg
bV9kaXNhbGxvd0dDKEluUGxhY2UpCisgICAgICAgICwgbV9kaXNhbGxvd0dDKHN0ZDo6aW5fcGxh
Y2UpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIGNsYXNzIENvbmN1
cnJlbnRKU0xvY2tlciA6IHB1YmxpYyBDb25jdXJyZW50SlNMb2NrZXJCYXNlIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIoQ29uY3VycmVudEpTTG9jayogbG9ja2FibGUpCiAgICAgICAgIDogQ29u
Y3VycmVudEpTTG9ja2VyQmFzZShsb2NrYWJsZSkKICNpZiBFTkFCTEUoQ09OQ1VSUkVOVF9KUykg
JiYgIWRlZmluZWQoTkRFQlVHKQotICAgICAgICAsIG1fZGlzYWxsb3dHQyhJblBsYWNlKQorICAg
ICAgICAsIG1fZGlzYWxsb3dHQyhzdGQ6OmluX3BsYWNlKQogI2VuZGlmCiAgICAgewogICAgIH0K
QEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBDb25jdXJyZW50SlNMb2NrZXIgOiBwdWJsaWMgQ29u
Y3VycmVudEpTTG9ja2VyQmFzZSB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyKE5vTG9ja2luZ05l
Y2Vzc2FyeVRhZykKICAgICAgICAgOiBDb25jdXJyZW50SlNMb2NrZXJCYXNlKE5vTG9ja2luZ05l
Y2Vzc2FyeSkKICNpZiBFTkFCTEUoQ09OQ1VSUkVOVF9KUykgJiYgIWRlZmluZWQoTkRFQlVHKQot
ICAgICAgICAsIG1fZGlzYWxsb3dHQyhOdWxsb3B0KQorICAgICAgICAsIG1fZGlzYWxsb3dHQyhz
dGQ6Om51bGxvcHQpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIGNs
YXNzIENvbmN1cnJlbnRKU0xvY2tlciA6IHB1YmxpYyBDb25jdXJyZW50SlNMb2NrZXJCYXNlIHsK
IAogI2lmIEVOQUJMRShDT05DVVJSRU5UX0pTKSAmJiAhZGVmaW5lZChOREVCVUcpCiBwcml2YXRl
OgotICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKKyAgICBzdGQ6Om9wdGlv
bmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dHQzsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMu
aAppbmRleCBjMmFlZTcxNjk0YTcwMTQ5MTU4N2YwYjllMDRhYjE4MjA0OGY3ZTg0Li5kN2UzYjkx
MzMzMzU3MjVhNzRhMzM2NDA0ZDY2Mjk3MTEwMGQ0NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApAQCAt
OTksMTAgKzk5LDEwIEBAIGNsYXNzIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyB7CiAgICAgICAg
IHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVTaGlmdCkgIT0gTWl4ZWRUcmlTdGF0ZTsK
ICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc1dy
aXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVT
aGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgIH0KIApAQCAtMTExLDEwICsxMTEsMTAgQEAgY2xh
c3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlT
dGF0ZShDb25maWd1cmFibGVTaGlmdCkgIT0gTWl4ZWRUcmlTdGF0ZTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDxib29sPiBjb25maWd1cmFibGUoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gY29uZmlndXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzQ29uZmlndXJh
YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxl
U2hpZnQpID09IFRydWVUcmlTdGF0ZTsKICAgICB9CiAKQEAgLTEyMywxMCArMTIzLDEwIEBAIGNs
YXNzIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyB7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJp
U3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAhPSBNaXhlZFRyaVN0YXRlOwogICAgIH0KIAotICAgIE9w
dGlvbmFsPGJvb2w+IGVudW1lcmFibGUoKSBjb25zdAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
ZW51bWVyYWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc0VudW1lcmFibGUoKSkK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09
IFRydWVUcmlTdGF0ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IGEzMDFhMzkwOTQ5MDI3
OWI2NTBiY2MyZDBjMzZlMDJiNWQ0MzFjMTIuLmVkZDY0Nzc1NWQ1MzRkNDgwMmY5M2JlOWQzZGUw
NDhlYmMwYjlkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtNTEsNyArNTEsNyBAQCBib29sIEdlbmVy
aWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmpl
Y3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShpbmRleC52YWx1ZSgpKSkgewogICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIE5vbmUsIHRoaXNPYmplY3QtPmdldEluZGV4UXVpY2tseShp
bmRleC52YWx1ZSgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE3LDcgKzExNyw3IEBA
IGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlCiAgICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0
ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCiAgICAgICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3co
ZXhlYywgdGhpc09iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90Lmlz
U3RyaWN0TW9kZSgpKTsKICAgICAKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KGlkZW50KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgoaWRlbnQpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRl
eFF1aWNrbHkoaW5kZXgudmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhR
dWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJv
cGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlCiAgICAgICAgICAgICB8
fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkpCiAgICAgICAgIHRo
aXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsKICAgICAKLSAgICBPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwogICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0
LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgudmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09i
amVjdC0+b3ZlcnJpZGVBcmd1bWVudCh2bSwgaW5kZXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjCiAgICAg
ICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAg
ICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5nc0lmTmVjZXNzYXJ5KHZtKTsKICAgICBlbHNlIHsK
LSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KGlk
ZW50KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBh
cnNlSW5kZXgoaWRlbnQpOwogICAgICAgICBpZiAob3B0aW9uYWxJbmRleCAmJiB0aGlzT2JqZWN0
LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkob3B0aW9uYWxJbmRleC52YWx1ZSgpKSkgewogICAgICAg
ICAgICAgdWludDMyX3QgaW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7CiAgICAgICAgICAg
ICBpZiAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCmluZGV4IDI5
YTU3ZTYxY2IwNzE3NTBhYjk4OTM4YzgzOTZjNzRlM2FlNjVkNmIuLjFiYmU2ZThjNmY4YmRjOTU5
YzVkMzVkZGY1MmVkYWZkOTIyYzE1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3Mg
SGFzT3duUHJvcGVydHlDYWNoZSB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDMy
X3Q+KHN0cnVjdHVyZUlEKSArIGltcGwtPmhhc2goKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5M
SU5FIE9wdGlvbmFsPGJvb2w+IGdldChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1l
IHByb3BOYW1lKQorICAgIEFMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDxib29sPiBnZXQoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wTmFtZSkKICAgICB7CiAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gcHJvcE5hbWUudWlkKCk7CiAgICAgICAgIFN0cnVj
dHVyZUlEIGlkID0gc3RydWN0dXJlLT5pZCgpOwpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBIYXNP
d25Qcm9wZXJ0eUNhY2hlIHsKICAgICAgICAgRW50cnkmIGVudHJ5ID0gYml0d2lzZV9jYXN0PEVu
dHJ5Kj4odGhpcylbaW5kZXhdOwogICAgICAgICBpZiAoZW50cnkuc3RydWN0dXJlSUQgPT0gaWQg
JiYgZW50cnkuaW1wbC5nZXQoKSA9PSBpbXBsKQogICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnJl
c3VsdDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHRyeUFkZChWTSYgdm0sIFByb3Bl
cnR5U2xvdCYgc2xvdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BOYW1lLCBi
b29sIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5o
CmluZGV4IDNhOWQyZDcwNzY5ZjFmOWE1NjMyZWZmZDZlYmQ3YzViMWUwZTViZGIuLjViZDAxMTcy
MjBjZmE3YmY2NzQxMTZkZjY0OGI4OGFiODUzMWMyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaApAQCAtMjUzLDE2ICsyNTMsMTYgQEAgQUxXQVlTX0lO
TElORSB1aW50MzJfdCBqc01hcEhhc2goRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUg
dmFsdWUpCiAgICAgcmV0dXJuIHdhbmdzSW50NjRIYXNoKHJhd1ZhbHVlKTsKIH0KIAotQUxXQVlT
X0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gY29uY3VycmVudEpTTWFwSGFzaChKU1ZhbHVlIGtl
eSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY29uY3VycmVudEpTTWFw
SGFzaChKU1ZhbHVlIGtleSkKIHsKICAgICBrZXkgPSBub3JtYWxpemVNYXBLZXkoa2V5KTsKICAg
ICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3Ry
aW5nKGtleSk7CiAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4gMTAgKiAxMDI0KQotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUlt
cGwoKTsKICAgICAgICAgaWYgKCFpbXBsKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gaW1wbC0+Y29u
Y3VycmVudEhhc2goKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lk
ZW50aWZpZXIuaAppbmRleCA1ODFiYTQyNGMyOTVkNmRlMTBjNGRkYmFiYzNiYTZjODg3NTA5ZmE3
Li4yNWUxNmFlMzQxN2Q2ZDAyNjlmZjRmNzM2MWRkOGEyNmYyNDNjODY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0zOCw0NiArMzgsNDYgQEAgQUxX
QVlTX0lOTElORSBib29sIGlzSW5kZXgodWludDMyX3QgaW5kZXgpCiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KLUFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNl
SW5kZXgoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK0FMV0FZ
U19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBDaGFyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIC8vIEFuIGVtcHR5IHN0cmlu
ZyBpcyBub3QgYSBudW1iZXIuCiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gR2V0IHRoZSBmaXJz
dCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0LgogICAgIHVpbnQzMl90IHZhbHVl
ID0gY2hhcmFjdGVyc1swXSAtICcwJzsKICAgICBpZiAodmFsdWUgPiA5KQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENoZWNr
IGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUgZmlyc3QgY2hhcmFjaGVyIGlzIDAsIHRoZW4gdGhl
CiAgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgbXVzdCBiZSBvbmUgLSBlLmcuICIwNDIiIGlz
IG5vdCBlcXVhbCB0byAiNDIiLgogICAgIGlmICghdmFsdWUgJiYgbGVuZ3RoID4gMSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB3
aGlsZSAoLS1sZW5ndGgpIHsKICAgICAgICAgLy8gTXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNr
aW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0cy4KICAgICAgICAgaWYgKHZhbHVlID4gMHhG
RkZGRkZGRlUgLyAxMCkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdmFsdWUgKj0gMTA7CiAKICAgICAgICAgLy8g
R2V0IHRoZSBuZXh0IGNoYXJhY3RlciwgdHVybmluZyBpdCBpbnRvIGEgZGlnaXQuCiAgICAgICAg
IHVpbnQzMl90IG5ld1ZhbHVlID0gKigrK2NoYXJhY3RlcnMpIC0gJzAnOwogICAgICAgICBpZiAo
bmV3VmFsdWUgPiA5KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBj
aGVja2luZyBmb3Igb3ZlcmZsb3cgb3V0IG9mIDMyIGJpdHMuCiAgICAgICAgIG5ld1ZhbHVlICs9
IHZhbHVlOwogICAgICAgICBpZiAobmV3VmFsdWUgPCB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdmFs
dWUgPSBuZXdWYWx1ZTsKICAgICB9CiAKICAgICBpZiAoIWlzSW5kZXgodmFsdWUpKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKLUFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5k
ZXgoU3RyaW5nSW1wbCYgaW1wbCkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gcGFyc2VJbmRleChTdHJpbmdJbXBsJiBpbXBsKQogewogICAgIGlmIChpbXBsLmlzOEJpdCgp
KQogICAgICAgICByZXR1cm4gcGFyc2VJbmRleChpbXBsLmNoYXJhY3RlcnM4KCksIGltcGwubGVu
Z3RoKCkpOwpAQCAtMjcxLDEzICsyNzEsMTMgQEAgaW5saW5lIGJvb2wgSWRlbnRpZmllcjo6ZXF1
YWwoY29uc3QgU3RyaW5nSW1wbCogciwgY29uc3QgVUNoYXIqIHMsIHVuc2lnbmVkIGxlbmcKICAg
ICByZXR1cm4gV1RGOjplcXVhbChyLCBzLCBsZW5ndGgpOwogfQogCi1BTFdBWVNfSU5MSU5FIE9w
dGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIp
CitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIHVpZCA9IGlkZW50aWZpZXIuaW1w
bCgpOwogICAgIGlmICghdWlkKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAodWlkLT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcGFy
c2VJbmRleCgqdWlkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAppbmRleCBkNzQ4NDM5OGFiMWIwMjAwNDk5MmNhYzRkOGM2MjYxYmM2NTgzZGJiLi41MTg3
MjI2OTJkMjA4MmRlODQzYTdlYTlmOWJjYzViMjAxYWQ3MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgSlNBcnJh
eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUKIAogICAgIC8vIDQuIEVsc2UgaWYgUCBpcyBhbiBhcnJheSBpbmRleCAoMTUu
NCksIHRoZW4KICAgICAvLyBhLiBMZXQgaW5kZXggYmUgVG9VaW50MzIoUCkuCi0gICAgaWYgKE9w
dGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUp
KSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgLy8gYi4gUmVqZWN0IGlmIGluZGV4ID49
IG9sZExlbiBhbmQgb2xkTGVuRGVzYy5bW1dyaXRhYmxlXV0gaXMgZmFsc2UuCiAgICAgICAgIHVp
bnQzMl90IGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOwogICAgICAgICAvLyBGSVhNRTog
Tm90aGluZyBwcmV2ZW50cyB0aGlzIGZyb20gYmVpbmcgY2FsbGVkIG9uIGEgUnVudGltZUFycmF5
LCBhbmQgdGhlIGxlbmd0aCBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gMCBpbiB0aGF0IGNh
c2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4
IGQwMWE3NzkxYTNjZjRmYTdkODMyY2I0YTUyN2ViNGIzZTJlYzEwZmEuLjFmOGM2ZDU5MDYzYzA1
MzUxZGJjYzA4Y2E0NDJjMGFiN2ZkNmNiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC03NiwxMCArNzYsMTAgQEAgZG91YmxlIEpTVmFsdWU6
OnRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBpc1Vu
ZGVmaW5lZCgpID8gUE5hTiA6IDA7IC8vIG51bGwgYW5kIGZhbHNlIGJvdGggY29udmVydCB0byAw
LgogfQogCi1PcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gSlNWYWx1ZTo6dG9OdW1iZXJGcm9tUHJpbWl0
aXZlKCkgY29uc3QKIHsKICAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaXNOdW1iZXIoKSkKICAg
ICAgICAgcmV0dXJuIGFzTnVtYmVyKCk7CiAgICAgaWYgKGlzQm9vbGVhbigpKQpAQCAtODgsNyAr
ODgsNyBAQCBPcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBQTmFOOwogICAgIGlmIChpc051bGwoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApAQCAtMTUwLDcgKzE1MCw3IEBA
IGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAg
ICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2
YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUg
YW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNoYWluCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKaW5kZXggZDQwYzNmYzQ3ZDA5MGMzYzBm
YzZiMmIwYjkxZTA1YTY1OWVhMDNhNi4uODgwOWZkY2IxNGZhYjc1NDQwNWRjOWE5MmYyYzJlOTlj
NGUxMTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApA
QCAtMjUxLDcgKzI1MSw3IEBAIGNsYXNzIEpTVmFsdWUgewogICAgIGRvdWJsZSB0b051bWJlcihF
eGVjU3RhdGUqKSBjb25zdDsKIAogICAgIC8vIHRvTnVtYmVyIGNvbnZlcnNpb24gaWYgaXQgY2Fu
IGJlIGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMuCi0gICAgT3B0aW9uYWw8ZG91YmxlPiB0b051
bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG9O
dW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CiAKICAgICBKU1N0cmluZyogdG9TdHJpbmcoRXhl
Y1N0YXRlKikgY29uc3Q7IC8vIE9uIGV4Y2VwdGlvbiwgdGhpcyByZXR1cm5zIHRoZSBlbXB0eSBz
dHJpbmcuCiAgICAgSlNTdHJpbmcqIHRvU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSopIGNvbnN0OyAv
LyBPbiBleGNlcHRpb24sIHRoaXMgcmV0dXJucyBudWxsLCB0byBtYWtlIGV4Y2VwdGlvbiBjaGVj
a3MgZmFzdGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggMzU1MzkwZDY1NzJmMTAwZGI2Yzc1NzQzZjMw
MjllZGExYjcwODVjYS4uOWNjMDVmYWQ0YzFjZTBhMGEzMmUzNWNhYWUwYjlkZDViYzU5OGU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCkBAIC0xODksNyArMTg5LDcgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogCiAgICAgc3RhdGljIEVsZW1l
bnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
anNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZXhlYywganNWYWx1
ZSk7IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZl
RnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0
aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVX
aXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1ZSk7IH0KIAogICAgIHZvaWQgc29ydCgpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5k
ZXggY2IyYjVlZGJhMjBlYzc0OTZkOTdkYzE2ZTRjNjc0YjA3ODE1YWViZi4uNjgyNWZmZGUwOTVm
NjE0NjJjYzM5ZmU2OGMzN2Y4M2ZmMzk5Yzg1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xMTQsNyArMTE0LDcgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdGcm9tSXRlcmF0b3IoRXhlY1N0YXRl
KiBleGVjLCBTdHIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotaW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJn
dW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgT3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aE9wdCkKK2lu
bGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
cyhFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBm
aXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxl
bmd0aE9wdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBs
ZW5ndGggPSBOdWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9IHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4oZmlyc3RW
YWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDEpLnRvSW5kZXgoZXhlYywgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCmluZGV4IDM2N2IxMzUxZTQ3ZGE4ZDI1ODA3ZmU1YmM4MWNiMTQ0NTQ5MjJhNGYu
LjcwOGM1MmM0NjEzZGM2MmY3MWUyNTZiYjBiOTRjZTBiMjY3MDQyNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlTbG90KAogewogICAgIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Kj4ob2JqZWN0KTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzTmV1dGVyZWQoKSkgewogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
Tm9uZSwgdGhyb3dOZXV0ZXJlZFR5cGVkQXJyYXlUeXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6cHV0KAogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8j
c2VjLWludGVnZXItaW5kZXhlZC1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCiAgICAg
Ly8gSWdub3JlIHRoZSByZWNlaXZlciBldmVuIGlmIHRoZSByZWNlaXZlciBpcyBhbHRlcmVkIHRv
IG5vbiBiYXNlIHZhbHVlLgogICAgIC8vIDkuNC41LjUtMi1iLWkgUmV0dXJuID8gSW50ZWdlcklu
ZGV4ZWRFbGVtZW50U2V0KE8sIG51bWVyaWNJbmRleCwgVikuCi0gICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAg
ICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICAKICAgICByZXR1cm4gQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDIyMTM1N2Yx
ZDg0YTY5ODczZjgxN2U2NTMwMzExNjU5OTFmMDA5MjkuLjc2MTc1NzNkY2NlZjNmNmI2NDg5OGU2
MmZiYzQyMWUyNmVhZjdlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTkwLDIwICs5MCwyMCBAQCB2b2lkIEpTTW9kdWxlUmVj
b3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCiAgICAgQVNTRVJU
X1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5
IHRoZSBwYXJzZXIuCiB9CiAKLWF1dG8gSlNNb2R1bGVSZWNvcmQ6OnRyeUdldEltcG9ydEVudHJ5
KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+IE9wdGlvbmFsPEltcG9ydEVudHJ5Pgor
YXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwq
IGxvY2FsTmFtZSkgLT4gc3RkOjpvcHRpb25hbDxJbXBvcnRFbnRyeT4KIHsKICAgICBjb25zdCBh
dXRvIGl0ZXJhdG9yID0gbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9pbXBvcnRFbnRyaWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKLSAgICByZXR1cm4gT3B0aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SW1w
b3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKLWF1dG8gSlNNb2R1bGVSZWNvcmQ6OnRy
eUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBPcHRpb25h
bDxFeHBvcnRFbnRyeT4KK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVu
aXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5
PgogewogICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVudHJpZXMuZmluZChleHBv
cnROYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBvcnRFbnRyaWVzLmVuZCgpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICByZXR1cm4gT3B0aW9uYWw8RXhwb3J0RW50cnk+KGl0
ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8RXhwb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKIGF1dG8g
SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVy
JiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpIC0+IEV4cG9ydEVudHJ5
CkBAIC0xNDcsNyArMTQ3LDcgQEAgSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0
UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKIAogYXV0byBKU01v
ZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSkgLT4gUmVzb2x1dGlvbgogewotICAgIE9wdGlvbmFsPEltcG9ydEVudHJ5
PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gdHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmltcGwo
KSk7CisgICAgc3RkOjpvcHRpb25hbDxJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9
IHRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5pbXBsKCkpOwogICAgIGlmICghb3B0aW9uYWxJ
bXBvcnRFbnRyeSkKICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CiAKQEAg
LTIxNSwxMiArMjE1LDEyIEBAIGlubGluZSBib29sIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVl
cnk6Okhhc2g6OmVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjCiAgICAgcmV0dXJuIGxo
cy5tb2R1bGVSZWNvcmQgPT0gcmhzLm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSBy
aHMuZXhwb3J0TmFtZTsKIH0KIAotYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0Q2FjaGVkUmVz
b2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8UmVzb2x1
dGlvbj4KK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnRyeUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVl
ZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4KIHsK
ICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvbHV0aW9uQ2FjaGUuZmluZChleHBvcnRO
YW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNvbHV0aW9uQ2FjaGUuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OwotICAgIHJldHVybiBPcHRpb25hbDxSZXNvbHV0aW9uPihpdGVy
YXRvci0+dmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPFJlc29sdXRpb24+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmNhY2hlUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFt
ZSwgY29uc3QgUmVzb2x1dGlvbiYgcmVzb2x1dGlvbikKQEAgLTU1OCwxNCArNTU4LDE0IEBAIGF1
dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnRJbXBsKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgUmVzb2x2ZVF1ZXJ5JiByb290CiAKICAgICAgICAgICAgIC8vICA0LiBPbmNlIHdlIGZvbGxv
dyBzdGFyIGxpbmtzLCB3ZSBzaG91bGQgbm90IHJldHJpZXZlIHRoZSByZXN1bHQgZnJvbSB0aGUg
Y2FjaGUgYW5kIHNob3VsZCBub3QgY2FjaGUgdGhlIHJlc3VsdC4KICAgICAgICAgICAgIGlmICgh
Zm91bmRTdGFyTGlua3MpIHsKLSAgICAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8UmVzb2x1dGlv
bj4gY2FjaGVkUmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0Q2FjaGVkUmVzb2x1dGlv
bihxdWVyeS5leHBvcnROYW1lLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9w
dGlvbmFsPFJlc29sdXRpb24+IGNhY2hlZFJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnRyeUdl
dENhY2hlZFJlc29sdXRpb24ocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcCgqY2FjaGVkUmVzb2x1dGlvbikpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1b3VzKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgY29uc3QgT3B0aW9uYWw8RXhwb3J0RW50cnk+IG9wdGlvbmFsRXhw
b3J0RW50cnkgPSBtb2R1bGVSZWNvcmQtPnRyeUdldEV4cG9ydEVudHJ5KHF1ZXJ5LmV4cG9ydE5h
bWUuZ2V0KCkpOworICAgICAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxFeHBvcnRFbnRyeT4g
b3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0RXhwb3J0RW50cnkocXVl
cnkuZXhwb3J0TmFtZS5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbmFsRXhwb3J0RW50
cnkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBtYXRjaGVkIGV4cG9ydGVk
IGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLAogICAgICAgICAgICAgICAgIC8vIHdlIG5l
ZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KQEAgLTY0OCw3ICs2NDgsNyBAQCBhdXRvIEpTTW9k
dWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0SW1wbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFJlc29s
dmVRdWVyeSYgcm9vdAogYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpIC0+IFJlc29sdXRpb24KIHsK
ICAgICAvLyBMb29rIHVwIHRoZSBjYWNoZWQgcmVzb2x1dGlvbiBmaXJzdCBiZWZvcmUgZW50ZXJp
bmcgdGhlIHJlc29sdmluZyBsb29wLCBzaW5jZSB0aGUgbG9vcCBzZXR1cCB0YWtlcyBzb21lIGNv
c3QuCi0gICAgaWYgKE9wdGlvbmFsPFJlc29sdXRpb24+IGNhY2hlZFJlc29sdXRpb24gPSB0cnlH
ZXRDYWNoZWRSZXNvbHV0aW9uKGV4cG9ydE5hbWUuaW1wbCgpKSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDxSZXNvbHV0aW9uPiBjYWNoZWRSZXNvbHV0aW9uID0gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlv
bihleHBvcnROYW1lLmltcGwoKSkpCiAgICAgICAgIHJldHVybiAqY2FjaGVkUmVzb2x1dGlvbjsK
ICAgICByZXR1cm4gcmVzb2x2ZUV4cG9ydEltcGwoZXhlYywgUmVzb2x2ZVF1ZXJ5KHRoaXMsIGV4
cG9ydE5hbWUuaW1wbCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuaAppbmRleCA5NDI4ZGRhNTVhZjcyOWQ4ZGEwZDJlZmM3MWVjNTg2Yjdj
OGRkMTMwLi44OGM5ZTc4MDRjYTJlZTc3YjQyNmEwMmY1MDQ5NTc5OTA5Y2NmOTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTk4LDgg
Kzk4LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmpl
Y3QgewogICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2
b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CiAKLSAgICBPcHRpb25hbDxJ
bXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFt
ZSk7Ci0gICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRT
dHJpbmdJbXBsKiBleHBvcnROYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEltcG9ydEVudHJ5PiB0
cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1lKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEV4cG9ydEVudHJ5PiB0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1w
bCogZXhwb3J0TmFtZSk7CiAKICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVLZXk7IH0KQEAgLTE2Miw3ICsxNjIsNyBAQCBj
bGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAg
ICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5OwogICAgIHN0YXRpYyBSZXNvbHV0aW9uIHJlc29sdmVFeHBv
cnRJbXBsKEV4ZWNTdGF0ZSosIGNvbnN0IFJlc29sdmVRdWVyeSYpOwotICAgIE9wdGlvbmFsPFJl
c29sdXRpb24+IHRyeUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9y
dE5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4gdHJ5R2V0Q2FjaGVkUmVzb2x1
dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CiAgICAgdm9pZCBjYWNoZVJlc29s
dXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUsIGNvbnN0IFJlc29sdXRpb24mKTsK
IAogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRo
ZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJl
c2VudCB0aGlzIG1vZHVsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAppbmRleCBkMWUwNzMxNzhmM2I2MGNiMzNiOTMyZTBmZDYzOWU4YmYzNzUwZWQ3Li5iNWNj
YTc0NDQ1ZDE2MTJmZmEwYzBkZDVmOTRlOTc5NWFlNWUxMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xNDYyLDcgKzE0NjIsNyBAQCBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVgogewogICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpICYm
IChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1
cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIGF0dHJpYnV0ZXMs
IFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7CiAKICAgICByZXR1cm4gcHV0RGlyZWN0Tm9u
SW5kZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVz
KTsKQEAgLTE1MjcsNyArMTUyNyw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVyCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gdGhpc09i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwg
ZXhlYywgaW5kZXgudmFsdWUoKSk7CiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtMzAx
Niw3ICszMDE2LDcgQEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFtZSBwcm9wZXIKIAogYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBw
dXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHB1
dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKIH0KQEAgLTMxNjksNyAr
MzE2OSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOCiBib29sIEpTT2JqZWN0OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICAvLyBJZiBpdCdzIGFuIGFycmF5IGluZGV4LCB0aGVu
IHVzZSB0aGUgaW5kZXhlZCBwcm9wZXJ0eSBzdG9yYWdlLgotICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAg
ICAgICAgLy8gYy4gTGV0IHN1Y2NlZWRlZCBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGRl
ZmF1bHQgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCAoOC4xMi45KSBvbiBB
IHBhc3NpbmcgUCwgRGVzYywgYW5kIGZhbHNlIGFzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gZC4g
UmVqZWN0IGlmIHN1Y2NlZWRlZCBpcyBmYWxzZS4KICAgICAgICAgLy8gZS4gSWYgaW5kZXggPj0g
b2xkTGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAyOTk2
ODY2YTZhOGM3MmMwNmY4ZGNjN2M2ZWVjYmU3MGEzZWRiMjJjLi43MDZhZmU0YzVjNTEwZWY3ZTBl
NWIxYWQwNjBlOGNjNWZkYjAxMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKQEAgLTEzMjAsNyArMTMyMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYg
KG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVy
dHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAg
ICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywgaW5kZXgu
dmFsdWUoKSwgc2xvdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTMzOCw3ICsxMzM4LDcg
QEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgICAgIC8vIGdldE93bk5vbkluZGV4
UHJvcGVydHlTbG90KSwgc28gd2UgY2Fubm90IHNhZmVseSBjYWxsIHRoZSBvdmVycmlkZGVuIGdl
dE93blByb3BlcnR5U2xvdAogICAgICAgICAgICAgLy8gKGxlc3Qgd2UgcmV0dXJuIGEgcHJvcGVy
dHkgZnJvbSBhIHByb3RvdHlwZSB0aGF0IGlzIHNoYWRvd2VkKS4gQ2hlY2sgbm93IGZvciBhbiBp
bmRleCwKICAgICAgICAgICAgIC8vIGlmIHNvIHdlIG5lZWQgdG8gc3RhcnQgYWZyZXNoIGZyb20g
dGhpcyBvYmplY3QuCi0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAg
ICAgICAgICAgICAvLyBTYWZlIHRvIGNvbnRpbnVlIHNlYXJjaGluZyBmcm9tIGN1cnJlbnQgcG9z
aXRpb247IGNhbGwgZ2V0Tm9uSW5kZXhQcm9wZXJ0eVNsb3QgdG8gYXZvaWQKICAgICAgICAgICAg
IC8vIHBhcnNpbmcgdGhlIGludCBhZ2Fpbi4KQEAgLTEzNTQsNyArMTM1NCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlCiAgICAgICAgIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CiAg
ICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTM5NCw3
ICsxMzk0LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJl
SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBBU1NFUlQoIXN0cnVjdHVy
ZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwogICAgIEFTU0VSVCghc3RydWN0dXJl
KCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAKLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVl
LCAwLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOwogCiAgICAgcmV0dXJuIHB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVQdXQ+KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAs
IHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGlu
ZXMuaAppbmRleCA2MTNlZmM1NDEwYjNlYjJkMjEwY2EwNzgxOWMzMDJiYjJlODAyMWJjLi5kMGQ0
ZGYyYWY1OWNlNzc3NTQzN2RjYzZiMmFlMDBjZjM2ZDM1MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtMTk2LDcgKzE5Niw3IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lKEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3Qu
IFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0
eSBuYW1lcyB0aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVy
IGxvb2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAg
ICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5jYW5QZXJm
b3JtRmFzdFB1dElubGluZShleGVjLCB2bSwgcHJvcGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IDk2YmI5ZWI1MzNmMDgyZmNiZTI4
YmU0NzM5OTQyZDdhZTEyOTdhOGUuLmViOGM5MjE5YmIzMTllOTY1NmVhZTE4MDM2YmM0NjE1Mjlm
N2Q0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAg
LTQzNCw3ICs0MzQsNyBAQCBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0
b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgp
IDwgbGVuZ3RoKCkpIHsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGdldEluZGV4
KGV4ZWMsIGluZGV4LnZhbHVlKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4
IDdjZDcwZjYyMzE1NzQxOTMzMThiN2U4YWU5YjQ5ZTA4ZTNhMGE3MGYuLjk1YjBiMGQwZjI4ZGQx
OTJhOTA5MGE1NjBkNmM1ZmI1NmE0YTAzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaApAQCAtNjY4LDcgKzY2OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0
cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYg
aW5kZXgudmFsdWUoKSA8IGxlbmd0aCgpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywg
RG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRleChleGVjLCBpbmRleC52YWx1ZSgpKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
aXRlcmFsUGFyc2VyLmNwcAppbmRleCA1NmUwMzg5NDdkNjUwNjc0NzE0MzUzYTQ5YzRlOGNiZGQ2
OGQ0NDNiLi41OTkzYjMyMzZkYzFkNzRhYzcxNmMzMzE3ZmIxOTMyZmYyMGQzZDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNjkw
LDcgKzY5MCw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNl
clN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3Qob2JqZWN0LCBjb2RlQmxvY2sgPyBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpIDogZmFs
c2UpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5sYXN0KCkucHV0KG1fZXhlYywg
aWRlbnQsIGxhc3RWYWx1ZSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgo
aWRlbnQpKQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
aW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dC0+cHV0RGlyZWN0SW5kZXgobV9leGVjLCBpbmRleC52YWx1ZSgpLCBsYXN0VmFsdWUpOwogICAg
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QtPnB1
dERpcmVjdCh2bSwgaWRlbnQsIGxhc3RWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXRoQ29tbW9uLmgKaW5kZXggNDljZTc5MWViYzExYjQxYmM4NjQ5MjljMjg3NGIyZTFl
ZjkxMmIyYy4uNjMyNTc4NmJjNDZhMDdmMmE1OWJlMjQwOTMyMDFiNzc1ZGY5OThiMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaApAQCAtMTE4LDE1ICsxMTgs
MTUgQEAgaW5saW5lIHVpbnQzMl90IHRvVUludDMyKGRvdWJsZSBudW1iZXIpCiAgICAgcmV0dXJu
IHRvSW50MzIobnVtYmVyKTsKIH0KIAotaW5saW5lIE9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lw
cm9jYWxGb3JEaXZCeUNvbnN0KGRvdWJsZSBjb25zdGFudCkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KGRvdWJsZSBjb25zdGFudCkKIHsK
ICAgICAvLyBObyAid2VpcmQiIG51bWJlcnMgKE5hTiwgRGVub3JtYWwsIGV0YykuCiAgICAgaWYg
KCFjb25zdGFudCB8fCAhc3RkOjppc25vcm1hbChjb25zdGFudCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50IGV4cG9uZW50
OwogICAgIGlmIChzdGQ6OmZyZXhwKGNvbnN0YW50LCAmZXhwb25lbnQpICE9IDAuNSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBOb3RlIHRoYXQgZnJleHAoKSByZXR1cm5zIHRoZSB2YWx1ZSBkaXZpZGVkIGJ5IHR3bwogICAg
IC8vIHNvIHdlIHRvIG9mZnNldCB0aGlzIGV4cG9uZW50IGJ5IG9uZS4KQEAgLTEzNSw3ICsxMzUs
NyBAQCBpbmxpbmUgT3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3Qo
ZG91YmxlIGNvbnN0YW50KQogICAgIC8vIEEgZG91YmxlIGV4cG9uZW50IGlzIGJldHdlZW4gLTEw
MjIgYW5kIDEwMjMuCiAgICAgLy8gTm90aGluZyB3ZSBjYW4gZG8gdG8gaW52ZXJ0IDEwMjMuCiAg
ICAgaWYgKGV4cG9uZW50ID09IDEwMjMpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHJlY2lwcm9jYWwgPSBzdGQ6Omxk
ZXhwKDEsIC1leHBvbmVudCk7CiAgICAgQVNTRVJUKHN0ZDo6aXNub3JtYWwocmVjaXByb2NhbCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHAKaW5kZXggY2VhMjc3NTcwNzg0NGVhODVhMDUxMDIxNTEzZGMxZmMxOTQ0YTgzYS4uMjFjY2I2
ZTQ3MjliNWRjMjcxNTZiNDFjYmMwMzE3Mzc0MTA1ODg3OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC0xMDIsNyArMTAyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXNP
YmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgSGFzT3duUHJvcGVydHlDYWNoZSogaGFzT3duUHJv
cGVydHlDYWNoZSA9IHZtLmVuc3VyZUhhc093blByb3BlcnR5Q2FjaGUoKTsKLSAgICBpZiAoT3B0
aW9uYWw8Ym9vbD4gcmVzdWx0ID0gaGFzT3duUHJvcGVydHlDYWNoZS0+Z2V0KHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCA9IGhh
c093blByb3BlcnR5Q2FjaGUtPmdldChzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgQVNTRVJUKCpyZXN1bHQgPT0gdGhpc09iamVjdC0+aGFzT3duUHJvcGVydHkoZXhlYywgcHJv
cGVydHlOYW1lKSk7CiAgICAgICAgIEFTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbigqcmVzdWx0KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGNl
NDYzZTFkNDg3MTgzMjcyNWRjMDYzNGM5ZTc5YmJkYzU0OTEzNGIuLmViNDYxZDM2ZjAwZDdhYzJi
ZGMxMmQwY2MzZGI2MjdiNmFlOTg1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCkBAIC05OCwxNiArOTgsMTYgQEAgaW5saW5l
IFByb3BlcnR5RGVzY3JpcHRvciB0b1Byb3BlcnR5RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBK
U1ZhbHVlIGdldHRlciwgSlMKICAgICAvLyBXZSBhc3N1bWUgdGhhdCB2YWxpZGF0aW9uIGlzIGFs
cmVhZHkgZG9uZS4KICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYzsKIAotICAgIGlmIChPcHRp
b25hbDxib29sPiBlbnVtZXJhYmxlID0gYXR0cmlidXRlcy5lbnVtZXJhYmxlKCkpCisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW51bWVyYWJsZSA9IGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgp
KQogICAgICAgICBkZXNjLnNldEVudW1lcmFibGUoZW51bWVyYWJsZS52YWx1ZSgpKTsKIAotICAg
IGlmIChPcHRpb25hbDxib29sPiBjb25maWd1cmFibGUgPSBhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJs
ZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSA9IGF0dHJpYnV0
ZXMuY29uZmlndXJhYmxlKCkpCiAgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGNvbmZpZ3Vy
YWJsZS52YWx1ZSgpKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzLmhhc1ZhbHVlKCkpCiAgICAgICAg
IGRlc2Muc2V0VmFsdWUodmFsdWUpOwogCi0gICAgaWYgKE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxl
ID0gYXR0cmlidXRlcy53cml0YWJsZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IHdy
aXRhYmxlID0gYXR0cmlidXRlcy53cml0YWJsZSgpKQogICAgICAgICBkZXNjLnNldFdyaXRhYmxl
KHdyaXRhYmxlLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMuaGFzR2V0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4IGM0NzZjODhl
MWFjOTU1ZjJmMjZiOWYwMzVhYTM0NzM1NWViZGE2MjkuLmQxZDRkMTk5NDUzYmE4NDNjNDMyMmJi
MGQ4ZThmYTMzNzI0Y2VmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZS5oCkBAIC0xMTQsMTMgKzExNCwxMyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KFByb3BlcnR5TmFtZSBhLCBQcm9wZXJ0eU5hbWUgYikKICAgICByZXR1cm4gYS51aWQoKSAhPSBi
LnVpZCgpOwogfQogCi1BTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IHBhcnNlSW5kZXgoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBh
dXRvIHVpZCA9IHByb3BlcnR5TmFtZS51aWQoKTsKICAgICBpZiAoIXVpZCkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHVpZC0+
aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBhcnNlSW5kZXgoKnVpZCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXggM2Q2
MWRhY2M0YzZlZjE3MmVjMDhiYzY3ZjA0ODEwMTE1YmNiZjM0MC4uYjdmZjYzNjlkOGVjYmE2YmY5
OTQ2NTA3OGI1NzQ0YzVmMTUxYzhlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFNh
bXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMoKQogICAgICAgICAg
ICAgICAgICAgICBzdG9yZUNhbGxlZUludG9Ub3BGcmFtZSh1bnByb2Nlc3NlZFN0YWNrVHJhY2Uu
ZnJhbWVzWzBdLnVudmVyaWZpZWRDYWxsZWUpOwogICAgICAgICAgICAgICAgICAgICBzdGFydElu
ZGV4ID0gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKE9wdGlv
bmFsPENvZGVPcmlnaW4+IGNvZGVPcmlnaW4gPSB0b3BDb2RlQmxvY2stPmZpbmRQQyh1bnByb2Nl
c3NlZFN0YWNrVHJhY2UudG9wUEMpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6b3B0
aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IHRvcENvZGVCbG9jay0+ZmluZFBDKHVucHJv
Y2Vzc2VkU3RhY2tUcmFjZS50b3BQQykpIHsKICAgICAgICAgICAgICAgICBjb2RlT3JpZ2luLT53
YWxrVXBJbmxpbmVTdGFjayhbJl0gKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pIHsKICAg
ICAgICAgICAgICAgICAgICAgYXBwZW5kQ29kZUJsb2NrKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lID8gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgp
IDogdG9wQ29kZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5j
cHAKaW5kZXggNWVmNzViMDA1YmMxOTlmODBjZjk3MmYyNGY4MWQ4ZTNmOTQwZTFkZS4uMjI5MjNl
ODQ4OTdlMjZhM2FlZTAyNTZiN2Q1NDMwZTRkODYyZjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wg
U3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xv
dC5pc1N0cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFsKFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICByZXR1cm4g
SlNPYmplY3Q6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0K
QEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIGJvb2wgaXNTdHJpbmdPd25Qcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cmluZ09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU4KIHsKICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYgKG9iamVjdC0+aW50ZXJuYWxW
YWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1ZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcgog
ICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxs
KTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmpl
Y3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgoaW5kZXgudmFsdWUoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaAppbmRleCBmNTRmZDA2NWVkOTYwZTU1MDYwNDdm
MDM4MjY0ZTRmYTRjMDgzNjQzLi5mZDYxODQzMjc3N2NlYjk5NTQzOWY4ZjU4NWE3MzhkYTg0YzI2
NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZy
b21WYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJv
bVZhbHVlLmgKQEAgLTQ4LDEwICs0OCwxMCBAQCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHRvTmF0
aXZlRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KLU9wdGlvbmFsPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGU+IHRv
TmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUgdmFsdWUpCitzdGQ6Om9wdGlv
bmFsPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGU+IHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJj
aW9uKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc051bWJlcigpKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
dmFsdWUuaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gQWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50
MzJXaXRob3V0Q29lcmNpb24odmFsdWUuYXNJbnQzMigpKTsKICAgICByZXR1cm4gQWRhcHRvcjo6
dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKHZhbHVlLmFzRG91YmxlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3Jz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApp
bmRleCAwZmFjNGZlNjAyYWRjZDE2ZDNiMzFmYzAyYTUyZDA5NDFkYzQ0YzNiLi4wYWY3MWY0YzYx
ZmMyNDJjYThhNzkxMDdmY2JiNmZjNTYzMTVhYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApAQCAtNzksMjYgKzc5LDI2IEBA
IHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAgICAgcmV0dXJuIE90aGVy
QWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzIodmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBP
cHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZh
bHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0
aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoKHZhbHVlID49
IDAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQzMl90
PihtYXhWYWx1ZSkpIHx8IHZhbHVlIDwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obWluVmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNp
b24odWludDMyX3QgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRp
dmVGcm9tVWludDMyV2l0aG91dENvZXJjaW9uKHVpbnQzMl90IHZhbHVlKQogICAgIHsKICAgICAg
ICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFZhbHVlKSkKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogICAgIH0KIAotICAgIHN0
YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24oZG91
YmxlIHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURv
dWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCiAgICAgewogICAgICAgICBUeXBlIGlu
dGVnZXIgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDxkb3VibGU+KGludGVnZXIpICE9IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmICh2YWx1ZSA8
IDApCiAgICAgICAgICAgICByZXR1cm4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24o
c3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpKTsKQEAgLTE0OSwxMiArMTQ5LDEyIEBAIHN0cnVj
dCBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAgICAgcmV0dXJuIE90aGVyQWRhcHRvcjo6
dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8
VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2Vy
Y2lvbihpbnQzMl90IHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5
cGU+KHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVG
cm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24oZG91YmxlIHZh
bHVlKQogICAgIHsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpIHx8IHN0ZDo6aXNpbmYo
dmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKQEAg
LTE2MiwxMCArMTYyLDEwIEBAIHN0cnVjdCBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAg
ICAgVHlwZSB2YWx1ZVJlc3VsdCA9IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKIAogICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZVJlc3VsdCkgIT0gdmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgaWYgKHZhbHVlIDwgbWluVmFsdWUgfHwgdmFsdWUgPiBtYXhWYWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICByZXR1cm4gdmFsdWVSZXN1bHQ7CiAgICAgfQpAQCAtMjU1LDE5ICsyNTUsMTkg
QEAgc3RydWN0IFVpbnQ4Q2xhbXBlZEFkYXB0b3IgewogICAgICAgICByZXR1cm4gT3RoZXJBZGFw
dG9yOjp0b05hdGl2ZUZyb21JbnQzMih2YWx1ZSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBP
cHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZh
bHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0
aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPiBt
YXhWYWx1ZSB8fCB2YWx1ZSA8IG1pblZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+
IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFsdWUpCisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9u
KGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVpbnQ4X3QgaW50ZWdlciA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50
ZWdlcikgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIGludGVnZXI7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oIGIvU291cmNlL1dU
Ri93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCmluZGV4IGExNTBjNmU5NmM3YmI3NzNjOWNjMzYyMDZk
OGI5NjI4MDY3ZjZmMjEuLmUwYjQ3ODFkZjQ0Y2I3YmIxNjVjMThkM2Y1NjZjZmNkNDZkYTQ0ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkUXVldWUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ3Jv
c3NUaHJlYWRRdWV1ZSB7CiAgICAgdm9pZCBhcHBlbmQoRGF0YVR5cGUmJik7CiAKICAgICBEYXRh
VHlwZSB3YWl0Rm9yTWVzc2FnZSgpOwotICAgIE9wdGlvbmFsPERhdGFUeXBlPiB0cnlHZXRNZXNz
YWdlKCk7CisgICAgc3RkOjpvcHRpb25hbDxEYXRhVHlwZT4gdHJ5R2V0TWVzc2FnZSgpOwogCiAg
ICAgYm9vbCBpc0tpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTgxLDcgKzgx
LDcgQEAgRGF0YVR5cGUgQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OndhaXRGb3JNZXNzYWdl
KCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRGF0YVR5cGU+Ci1PcHRpb25hbDxEYXRhVHlwZT4g
Q3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKQorc3RkOjpvcHRpb25h
bDxEYXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKQog
ewogICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9FeHBlY3RlZC5oIGIvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaAppbmRleCBkOGY3NGU3
OWQ1ZTJmZWM1ZjlkYjRhZjk0NzFkNDA3NDg5ZGFhODMwLi5jZDdmYTU2MDM5NjA4MGU3NjY0ODI4
MzhkNmZiZTA5Y2I5MGE0YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgKQEAgLTQwNiwxNSArNDA2LDE1IEBAIHRl
bXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFVuZXhwZWN0ZWRUeXBlPEU+JiB4CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBF
PiB2b2lkIHN3YXAoRXhwZWN0ZWQ8VCwgRT4mIHgsIEV4cGVjdGVkPFQsIEU+JiB5KSB7IHguc3dh
cCh5KTsgfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRSA9IFdURjo6TnVsbG9wdFRhZz4g
Y29uc3RleHByIEV4cGVjdGVkPHN0ZDo6ZGVjYXlfdDxUPiwgRT4gbWFrZUV4cGVjdGVkKFQmJiB2
KQordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEUgPSBzdGQ6Om51bGxvcHRfdD4gY29uc3RleHBy
IEV4cGVjdGVkPHN0ZDo6ZGVjYXlfdDxUPiwgRT4gbWFrZUV4cGVjdGVkKFQmJiB2KQogewogICAg
IHJldHVybiBFeHBlY3RlZDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlLCBFPihzdGQ6OmZv
cndhcmQ8VD4odikpOwogfQogdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBF
eHBlY3RlZDxULCBzdGQ6OmRlY2F5X3Q8RT4+IG1ha2VFeHBlY3RlZEZyb21FcnJvcihFJiYgZSkg
eyByZXR1cm4gRXhwZWN0ZWQ8VCwgc3RkOjpkZWNheV90PEU+PihtYWtlVW5leHBlY3RlZChlKSk7
IH0KIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFLCBjbGFzcyBVPiBjb25zdGV4cHIgRXhwZWN0
ZWQ8VCwgRT4gbWFrZUV4cGVjdGVkRnJvbUVycm9yKFUmJiB1KSB7IHJldHVybiBFeHBlY3RlZDxU
LCBFPihtYWtlVW5leHBlY3RlZChFIHsgc3RkOjpmb3J3YXJkPFU+KHUpIH0gKSk7IH0KLS8vIHRl
bXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBFID0gV1RGOjpOdWxsb3B0VGFnPiBjb25zdGV4cHIgRXhw
ZWN0ZWQ8dHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Rj46OnR5cGUsIEU+IG1ha2VFeHBlY3RlZF9m
cm9tX2NhbGwoRiBmKTsKKy8vIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBFID0gc3RkOjpudWxs
b3B0X3Q+IGNvbnN0ZXhwciBFeHBlY3RlZDx0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxGPjo6dHlw
ZSwgRT4gbWFrZUV4cGVjdGVkX2Zyb21fY2FsbChGIGYpOwogCi1pbmxpbmUgRXhwZWN0ZWQ8dm9p
ZCwgV1RGOjpOdWxsb3B0VGFnPiBtYWtlRXhwZWN0ZWQoKSB7IHJldHVybiBFeHBlY3RlZDx2b2lk
LCBXVEY6Ok51bGxvcHRUYWc+KCk7IH0KK2lubGluZSBFeHBlY3RlZDx2b2lkLCBzdGQ6Om51bGxv
cHRfdD4gbWFrZUV4cGVjdGVkKCkgeyByZXR1cm4gRXhwZWN0ZWQ8dm9pZCwgc3RkOjpudWxsb3B0
X3Q+KCk7IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCAxMDNkZmFjYjI0
OTk4ZDg1YTU4MDUzNTI4ZjE1YmNlYjM0MDlkMTViLi5kNjhhOTQ3ZDQ5ODVjZjc3NDg1MDg0MGYw
YjEzN2E4Y2Q1NDdhZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysr
IGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0yMiwxMyArMjIsMTYgQEAKIAogI2luY2x1
ZGUgPHN0ZGRlZi5oPgogCituYW1lc3BhY2Ugc3RkIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIG9wdGlvbmFsOworfQorCiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgRnVuY3Rpb247CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBOZXZlckRlc3Ryb3llZDsKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE9wdGlvblNldDsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIE9wdGlvbmFsOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFJlZlB0cjsKQEAgLTYxLDcgKzY0LDYgQEAgdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNo
ZXI7CiB1c2luZyBXVEY6OkxhenlOZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6TmV2ZXJEZXN0
cm95ZWQ7CiB1c2luZyBXVEY6Ok9wdGlvblNldDsKLXVzaW5nIFdURjo6T3B0aW9uYWw7CiB1c2lu
ZyBXVEY6Ok9yZGluYWxOdW1iZXI7CiB1c2luZyBXVEY6OlBhc3NSZWZQdHI7CiB1c2luZyBXVEY6
OlByaW50U3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oIGIv
U291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCmluZGV4IGViMDQ4NDc0NzgzNTFiNTZhM2M5NjUw
ZjNlNTE0OTgxNTY0YzY1NGUuLjU0MmU3YWQyY2JkM2RmMGVlMDllMDA0ZjIzMzk4OWEyZmZjMDA5
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVHJhaXRzLmgKQEAgLTE4OCw4ICsxODgsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWY8UD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFJl
ZjxQPj4gewogICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKGNvbnN0IFJlZjxQPiYgdmFsdWUpIHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8UGVla1R5cGU+KHZhbHVlLnB0ckFsbG93aW5nSGFzaFRhYmxlRW1w
dHlWYWx1ZSgpKTsgfQogICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVrKFAqIHZhbHVlKSB7IHJldHVy
biB2YWx1ZTsgfQogCi0gICAgdHlwZWRlZiBPcHRpb25hbDxSZWY8UD4+IFRha2VUeXBlOwotICAg
IHN0YXRpYyBUYWtlVHlwZSB0YWtlKFJlZjxQPiYmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5VmFs
dWUodmFsdWUpID8gTnVsbG9wdCA6IE9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9
CisgICAgdHlwZWRlZiBzdGQ6Om9wdGlvbmFsPFJlZjxQPj4gVGFrZVR5cGU7CisgICAgc3RhdGlj
IFRha2VUeXBlIHRha2UoUmVmPFA+JiYgdmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1
ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkp
OyB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVD
bGFzc0hhc2hUcmFpdHM8U3RyaW5nPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWlu
VGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCmluZGV4IGQ1NDhmYjc1
ODcxZGJkYjY0YWYzMGVkNmJkYjNmZDhiMjBjZmMyZDguLjQ3MmJlZTI3YWRmNGQ3ZTBhMmJmNjNi
OGY1M2RmMGM4MzQ0NTUzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCkBAIC0xOTAsNyArMTkwLDcg
QEAgYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERhdGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmll
ciB0aHJlYWRJZCkKIH0KICNlbmRpZgogCi1zdGF0aWMgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8
R0NUaHJlYWRUeXBlPiwgQ2FuQmVHQ1RocmVhZDo6VHJ1ZT4qIGlzR0NUaHJlYWQ7CitzdGF0aWMg
VGhyZWFkU3BlY2lmaWM8c3RkOjpvcHRpb25hbDxHQ1RocmVhZFR5cGU+LCBDYW5CZUdDVGhyZWFk
OjpUcnVlPiogaXNHQ1RocmVhZDsKIAogdm9pZCBpbml0aWFsaXplR0NUaHJlYWRzKCkKIHsKQEAg
LTE5OCw3ICsxOTgsNyBAQCB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKQogICAgIHN0ZDo6Y2Fs
bF9vbmNlKAogICAgICAgICBmbGFnLAogICAgICAgICBbXSB7Ci0gICAgICAgICAgICBpc0dDVGhy
ZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPE9wdGlvbmFsPEdDVGhyZWFkVHlwZT4sIENhbkJlR0NU
aHJlYWQ6OlRydWU+KCk7CisgICAgICAgICAgICBpc0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNp
ZmljPHN0ZDo6b3B0aW9uYWw8R0NUaHJlYWRUeXBlPiwgQ2FuQmVHQ1RocmVhZDo6VHJ1ZT4oKTsK
ICAgICAgICAgfSk7CiB9CiAKQEAgLTIyMSwxMiArMjIxLDEyIEBAIGJvb2wgaXNNYWluVGhyZWFk
T3JHQ1RocmVhZCgpCiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi1PcHRpb25hbDxH
Q1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKQorc3RkOjpvcHRpb25hbDxHQ1RocmVhZFR5cGU+
IG1heUJlR0NUaHJlYWQoKQogewogICAgIGlmICghaXNHQ1RocmVhZCkKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFpc0dDVGhy
ZWFkLT5pc1NldCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKippc0dDVGhyZWFkOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgK
aW5kZXggMjRlNWYzMTI3NTlkYmVkZTNkMzFiYmZmODMxZDE1YmJlYmU3MTE2NS4uZWYzODZkNDUw
OGU2N2VkMWUyOThiM2ZhYTBjOGJjYWZhMjQ0NTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaApAQCAtNzgs
NyArNzgsNyBAQCBlbnVtIGNsYXNzIEdDVGhyZWFkVHlwZSB7CiB2b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mLCBHQ1RocmVhZFR5cGUpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZWdpc3RlckdDVGhyZWFkKEdDVGhyZWFkVHlwZSk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9u
YWw8R0NUaHJlYWRUeXBlPiBtYXlCZUdDVGhyZWFkKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKTsKIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKTsKIAogLy8gTk9URTogdGhlc2UgZnVu
Y3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25hbC5oCmluZGV4IDkyODZlNmI1ODgxMWM1YWVjMTNjOWNhNjAzYjliMThlMWUzZThk
MjMuLjc2YmEzODhkNWVmMWZiZTg5OWUwZTk0MTkwY2JiNWIzYjkxZTY0ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwu
aApAQCAtMSwyODMgKzEsMTEwOSBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgT3B0aW9u
YWxfaAotI2RlZmluZSBPcHRpb25hbF9oCi0KLSNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLSNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotLy8gV1RGOjpPcHRpb25hbCBpcyBhIGNsYXNz
IGJhc2VkIG9uIHN0ZDo6b3B0aW9uYWwsIGRlc2NyaWJlZCBoZXJlOgotLy8gaHR0cDovL3d3dy5v
cGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAxMy9uMzUyNy5odG1sCi0v
LyBJZiB0aGlzIGVuZHMgdXAgaW4gYSBDKysgc3RhbmRhcmQsIHdlIHNob3VsZCByZXBsYWNlIG91
ciBpbXBsZW1lbnRhdGlvbiB3aXRoIGl0LgorLy8gQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxMiBB
bmRyemVqIEtyemVtaWVuc2tpLgorLy8KKy8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJp
YnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCisvLyBMaWNlbnNlLCBWZXJz
aW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBh
dAorLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQorLy8KKy8vIFRoZSBp
ZGVhIGFuZCBpbnRlcmZhY2UgaXMgYmFzZWQgb24gQm9vc3QuT3B0aW9uYWwgbGlicmFyeQorLy8g
YXV0aG9yZWQgYnkgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwKKy8vCisvLyBCb29z
dCBTb2Z0d2FyZSBMaWNlbnNlIC0gVmVyc2lvbiAxLjAgLSBBdWd1c3QgMTd0aCwgMjAwMworLy8K
Ky8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9yIG9yZ2FuaXphdGlvbgorLy8gb2J0YWluaW5nIGEgY29weSBvZiB0aGUgc29mdHdh
cmUgYW5kIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGNvdmVyZWQgYnkKKy8vIHRoaXMgbGlj
ZW5zZSAodGhlICJTb2Z0d2FyZSIpIHRvIHVzZSwgcmVwcm9kdWNlLCBkaXNwbGF5LCBkaXN0cmli
dXRlLAorLy8gZXhlY3V0ZSwgYW5kIHRyYW5zbWl0IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHByZXBh
cmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUKKy8vIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHRo
aXJkLXBhcnRpZXMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvCisvLyBkbyBz
bywgYWxsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZzoKKy8vCisvLyBUaGUgY29weXJpZ2h0IG5v
dGljZXMgaW4gdGhlIFNvZnR3YXJlIGFuZCB0aGlzIGVudGlyZSBzdGF0ZW1lbnQsIGluY2x1ZGlu
ZworLy8gdGhlIGFib3ZlIGxpY2Vuc2UgZ3JhbnQsIHRoaXMgcmVzdHJpY3Rpb24gYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciwKKy8vIG11c3QgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGluIHdob2xlIG9yIGluIHBhcnQsIGFuZAorLy8gYWxsIGRlcml2YXRp
dmUgd29ya3Mgb2YgdGhlIFNvZnR3YXJlLCB1bmxlc3Mgc3VjaCBjb3BpZXMgb3IgZGVyaXZhdGl2
ZQorLy8gd29ya3MgYXJlIHNvbGVseSBpbiB0aGUgZm9ybSBvZiBtYWNoaW5lLWV4ZWN1dGFibGUg
b2JqZWN0IGNvZGUgZ2VuZXJhdGVkIGJ5CisvLyBhIHNvdXJjZSBsYW5ndWFnZSBwcm9jZXNzb3Iu
CisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U
IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFRJVExFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVAorLy8gU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SIEFOWU9ORSBESVNU
UklCVVRJTkcgVEhFIFNPRlRXQVJFIEJFIExJQUJMRQorLy8gRk9SIEFOWSBEQU1BR0VTIE9SIE9U
SEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisv
LyBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF
IE9SIFRIRSBVU0UgT1IgT1RIRVIKKy8vIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KIAotbmFt
ZXNwYWNlIFdURiB7CisvLyBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYWtyemVtaTEv
T3B0aW9uYWwgKDcyN2M3MjlkZDFkOWYwNmYyMjU4NjgyODBlNTAxNTQ1OTRkN2U1OWQpCisKKy8v
IE1vZGlmaWVkIHRvIG1ha2UgaXQgY29tcGlsZSB3aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisK
KyNwcmFnbWEgb25jZQorCisjIGluY2x1ZGUgPHV0aWxpdHk+CisjIGluY2x1ZGUgPHR5cGVfdHJh
aXRzPgorIyBpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorIyBpbmNsdWRlIDxjYXNzZXJ0Pgor
IyBpbmNsdWRlIDxmdW5jdGlvbmFsPgorIyBpbmNsdWRlIDxzdHJpbmc+CisjIGluY2x1ZGUgPHN0
ZGV4Y2VwdD4KKyMgaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyMgaW5jbHVkZSA8d3RmL0Nv
bXBpbGVyLmg+CisjIGluY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworIyBkZWZpbmUgVFIy
X09QVElPTkFMX1JFUVVJUkVTKC4uLikgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8X19WQV9BUkdT
X186OnZhbHVlLCBib29sPjo6dHlwZSA9IGZhbHNlCisKKyMgaWYgZGVmaW5lZCBfX0dOVUNfXyAv
LyBOT1RFOiBHTlVDIGlzIGFsc28gZGVmaW5lZCBmb3IgQ2xhbmcKKyMgICBpZiAoX19HTlVDX18g
PT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDgpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFM
X0dDQ180XzhfQU5EX0hJR0hFUl9fXworIyAgIGVsaWYgKF9fR05VQ19fID4gNCkKKyMgICAgIGRl
ZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF9BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMKKyMg
ICBpZiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDcpCisjICAgICBkZWZp
bmUgVFIyX09QVElPTkFMX0dDQ180XzdfQU5EX0hJR0hFUl9fXworIyAgIGVsaWYgKF9fR05VQ19f
ID4gNCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fCisj
ICAgZW5kaWYKKyMKKyMgICBpZiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID09
IDgpICYmIChfX0dOVUNfUEFUQ0hMRVZFTF9fID49IDEpCisjICAgICBkZWZpbmUgVFIyX09QVElP
TkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPT0gNCkgJiYg
KF9fR05VQ19NSU5PUl9fID49IDkpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0dDQ180Xzhf
MV9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19HTlVDX18gPiA0KQorIyAgICAgZGVmaW5lIFRS
Ml9PUFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hFUl9fXworIyAgIGVuZGlmCisjIGVuZGlmCisj
CisjIGlmIGRlZmluZWQgX19jbGFuZ19tYWpvcl9fCisjICAgaWYgKF9fY2xhbmdfbWFqb3JfXyA9
PSAzICYmIF9fY2xhbmdfbWlub3JfXyA+PSA1KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9D
TEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgZWxpZiAoX19jbGFuZ19tYWpvcl9fID4gMykKKyMg
ICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdfM181X0FORF9ISUdIVEVSXworIyAgIGVuZGlm
CisjICAgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfQ0xBTkdfM181X0FORF9ISUdIVEVSXworIyAg
ICAgZGVmaW5lIFRSMl9PUFRJT05BTF9DTEFOR18zXzRfMl9BTkRfSElHSEVSXworIyAgIGVsaWYg
KF9fY2xhbmdfbWFqb3JfXyA9PSAzICYmIF9fY2xhbmdfbWlub3JfXyA9PSA0ICYmIF9fY2xhbmdf
cGF0Y2hsZXZlbF9fID49IDIpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8y
X0FORF9ISUdIRVJfCisjICAgZW5kaWYKKyMgZW5kaWYKKyMKKyMgaWYgZGVmaW5lZCBfTVNDX1ZF
UgorIyAgIGlmIChfTVNDX1ZFUiA+PSAxOTAwKQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9N
U1ZDXzIwMTVfQU5EX0hJR0hFUl9fXworIyAgIGVuZGlmCisjIGVuZGlmCisKKyMgaWYgZGVmaW5l
ZCBfX2NsYW5nX18KKyMgICBpZiAoX19jbGFuZ19tYWpvcl9fID4gMikgfHwgKF9fY2xhbmdfbWFq
b3JfXyA9PSAyKSAmJiAoX19jbGFuZ19taW5vcl9fID49IDkpCisjICAgICBkZWZpbmUgT1BUSU9O
QUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgMQorIyAgIGVsc2UKKyMgICAgIGRlZmluZSBPUFRJT05B
TF9IQVNfVEhJU19SVkFMVUVfUkVGUyAwCisjICAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkIFRSMl9P
UFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hFUl9fXworIyAgIGRlZmluZSBPUFRJT05BTF9IQVNf
VEhJU19SVkFMVUVfUkVGUyAxCisjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfTVNWQ18yMDE1
X0FORF9ISUdIRVJfX18KKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMg
MQorIyBlbHNlCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTIDAKKyMg
ZW5kaWYKKworCisjIGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRfSElHSEVS
X19fCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19DT05TVEVYUFJfSU5JVF9MSVNUIDEKKyMgICBk
ZWZpbmUgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVCBjb25zdGV4cHIKKyMgZWxzZQorIyAg
IGRlZmluZSBPUFRJT05BTF9IQVNfQ09OU1RFWFBSX0lOSVRfTElTVCAwCisjICAgZGVmaW5lIE9Q
VElPTkFMX0NPTlNURVhQUl9JTklUX0xJU1QKKyMgZW5kaWYKKworLy8gRklYTUU6IFRvIG1ha2Ug
dGhlIHJlc3VsdCBvZiB2YWx1ZSgpIHR5cGUgY29uc2lzdGVudCBhbW9uZyB0aGUgY29tcGlsZXJz
LCB3ZSBub3cgaW50ZW50aW9uYWxseSBkaXNhYmxlcyBtb3ZlIGFjY2Vzc29ycy4KKyMgICBkZWZp
bmUgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTIDAKKy8vICMgaWYgZGVmaW5lZCBUUjJfT1BU
SU9OQUxfQ0xBTkdfM181X0FORF9ISUdIVEVSXyAmJiAoZGVmaW5lZCBfX2NwbHVzcGx1cykgJiYg
KF9fY3BsdXNwbHVzICE9IDIwMTEwM0wpCisvLyAjICAgZGVmaW5lIE9QVElPTkFMX0hBU19NT1ZF
X0FDQ0VTU09SUyAxCisvLyAjIGVsc2UKKy8vICMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX01PVkVf
QUNDRVNTT1JTIDAKKy8vICMgZW5kaWYKKworIyAvLyBJbiBDKysxMSBjb25zdGV4cHIgaW1wbGll
cyBjb25zdCwgc28gd2UgbmVlZCB0byBtYWtlIG5vbi1jb25zdCBtZW1iZXJzIGFsc28gbm9uLWNv
bnN0ZXhwcgorIyBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cykgJiYgKF9fY3BsdXNwbHVzID09IDIw
MTEwM0wpCisjICAgZGVmaW5lIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSCisjIGVsc2UKKyMg
ICBkZWZpbmUgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgY29uc3RleHByCisjIGVuZGlmCisK
KyNpZiBDT01QSUxFUl9TVVBQT1JUUyhFWENFUFRJT05TKQorI2RlZmluZSBfX1RIUk9XX0VYQ0VQ
VElPTihfX2V4Y2VwdGlvbikgdGhyb3cgX19leGNlcHRpb247CisjZGVmaW5lIF9fTk9FWENFUFQg
bm9leGNlcHQKKyNkZWZpbmUgX19OT0VYQ0VQVF8oX19leGNlcHRpb24pIG5vZXhjZXB0KF9fZXhj
ZXB0aW9uKQorI2Vsc2UKKyNkZWZpbmUgX19USFJPV19FWENFUFRJT04oX19leGNlcHRpb24pIGRv
IHsgKHZvaWQpX19leGNlcHRpb247IENSQVNIKCk7IH0gd2hpbGUgKDApOworI2RlZmluZSBfX05P
RVhDRVBUCisjZGVmaW5lIF9fTk9FWENFUFRfKC4uLikKKyNlbmRpZgorCituYW1lc3BhY2Ugc3Rk
IHsKK25hbWVzcGFjZSBkZXRhaWxfIHsKKworLy8gTk9URTogQWxsIG91ciB0YXJnZXQgY29tcGls
ZXJzIHN1cHBvcnQgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZS4KKy8vIC8vIEJFR0lOIHdvcmth
cm91bmQgZm9yIG1pc3NpbmcgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZQorLy8gIyBpZiBkZWZp
bmVkIFRSMl9PUFRJT05BTF9HQ0NfNF84X0FORF9ISUdIRVJfX18KKy8vICAgICAvLyBsZWF2ZSBp
dDogaXQgaXMgYWxyZWFkeSB0aGVyZQorLy8gIyBlbGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0NM
QU5HXzNfNF8yX0FORF9ISUdIRVJfCisvLyAgICAgLy8gbGVhdmUgaXQ6IGl0IGlzIGFscmVhZHkg
dGhlcmUKKy8vICMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9NU1ZDXzIwMTVfQU5EX0hJR0hF
Ul9fXworLy8gICAgIC8vIGxlYXZlIGl0OiBpdCBpcyBhbHJlYWR5IHRoZXJlCisvLyAjIGVsaWYg
ZGVmaW5lZCBUUjJfT1BUSU9OQUxfRElTQUJMRV9FTVVMQVRJT05fT0ZfVFlQRV9UUkFJVFMKKy8v
ICAgICAvLyBsZWF2ZSBpdDogdGhlIHVzZXIgZG9lc24ndCB3YW50IGl0CisvLyAjIGVsc2UKKy8v
IAl0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vIAl1c2luZyBpc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlID0gc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVjdG9yPFQ+OworLy8gIyBlbmRpZgorLy8gLy8g
RU5EIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgaXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZQorCisj
aWYgQ09NUElMRVJfU1VQUE9SVFMoRVhDRVBUSU9OUykKKyMgaWYgZGVmaW5lZChUUjJfT1BUSU9O
QUxfR0NDXzRfN19BTkRfSElHSEVSX19fKSB8fCBkZWZpbmVkKFRSMl9PUFRJT05BTF9DTEFOR18z
XzRfMl9BTkRfSElHSEVSXykgfHwgZGVmaW5lZChUUjJfT1BUSU9OQUxfTVNWQ18yMDE1X0FORF9I
SUdIRVJfX18pCisgICAgLy8gbGVhdmUgaXQ7IG91ciBtZXRhZnVuY3Rpb25zIGFyZSBhbHJlYWR5
IGRlZmluZWQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdXNpbmcgaXNfbm90aHJv
d19tb3ZlX2NvbnN0cnVjdGlibGUgPSBzdGQ6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxl
PFQ+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHVzaW5nIGlzX25vdGhyb3dfbW92
ZV9hc3NpZ25hYmxlID0gc3RkOjppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxUPjsKKyMgZWxp
ZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9ESVNBQkxFX0VNVUxBVElPTl9PRl9UWVBFX1RSQUlUUwor
ICAgIC8vIGxlYXZlIGl0OiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgaXQKKyMgZWxzZQorCisKKy8v
IHdvcmthcm91bmQgZm9yIG1pc3NpbmcgdHJhaXRzIGluIEdDQyBhbmQgQ0xBTkcKK3RlbXBsYXRl
IDxjbGFzcyBUPgorc3RydWN0IGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlCit7CisgIGNv
bnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IHN0ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxl
PFQsIFQmJj46OnZhbHVlOworfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KK3N0
cnVjdCBpc19hc3NpZ25hYmxlCit7CisgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgorICBj
b25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX2Fzc2lnbiguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisK
KyAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFksIHNpemVfdCBTID0gc2l6ZW9mKChzdGQ6OmRl
Y2x2YWw8WD4oKSA9IHN0ZDo6ZGVjbHZhbDxZPigpLCB0cnVlKSkgPgorICAvLyB0aGUgY29tbWEg
b3BlcmF0b3IgaXMgbmVjZXNzYXJ5IGZvciB0aGUgY2FzZXMgd2hlcmUgb3BlcmF0b3I9IHJldHVy
bnMgdm9pZAorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX2Fzc2lnbihib29sKSB7IHJldHVy
biB0cnVlOyB9CisKKyAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gaGFzX2Fzc2lnbjxU
LCBVPih0cnVlKTsKK307CisKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgaXNfbm90aHJv
d19tb3ZlX2Fzc2lnbmFibGUKK3sKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIGJvb2wgaGFzX2FueV9t
b3ZlX2Fzc2lnbj4KKyAgc3RydWN0IGhhc19ub3Rocm93X21vdmVfYXNzaWduIHsKKyAgICBjb25z
dGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAgfTsKKworICB0ZW1wbGF0ZSA8Y2xh
c3MgWD4KKyAgc3RydWN0IGhhc19ub3Rocm93X21vdmVfYXNzaWduPFgsIHRydWU+IHsKKyAgICBj
b25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBfX05PRVhDRVBUXyggc3RkOjpkZWNsdmFsPFgm
PigpID0gc3RkOjpkZWNsdmFsPFgmJj4oKSApOworICB9OworCisgIGNvbnN0ZXhwciBzdGF0aWMg
Ym9vbCB2YWx1ZSA9IGhhc19ub3Rocm93X21vdmVfYXNzaWduPFQsIGlzX2Fzc2lnbmFibGU8VCYs
IFQmJj46OnZhbHVlPjo6dmFsdWU7Cit9OworLy8gZW5kIHdvcmthcm91bmQKKworCisjIGVuZGlm
CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgZGV0YWlsXworCisvLyAyMC41LjQsIG9wdGlvbmFs
IGZvciBvYmplY3QgdHlwZXMKK3RlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBvcHRpb25hbDsKKwor
Ly8gMjAuNS41LCBvcHRpb25hbCBmb3IgbHZhbHVlIHJlZmVyZW5jZSB0eXBlcwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNsYXNzIG9wdGlvbmFsPFQmPjsKKworbmFtZXNwYWNlIGRldGFpbF8geworCisv
LyB3b3JrYXJvdW5kOiBzdGQgdXRpbGl0eSBmdW5jdGlvbnMgYXJlbid0IGNvbnN0ZXhwciB5ZXQK
K3RlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgY29uc3RleHByIFQmJiBjb25zdGV4cHJfZm9yd2Fy
ZCh0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmIHQpIF9fTk9FWENFUFQK
K3sKKyAgcmV0dXJuIHN0YXRpY19jYXN0PFQmJj4odCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBU
PiBpbmxpbmUgY29uc3RleHByIFQmJiBjb25zdGV4cHJfZm9yd2FyZCh0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiB0KSBfX05PRVhDRVBUCit7CisgICAgc3RhdGljX2Fz
c2VydCghc3RkOjppc19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgIiEhIik7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFQmJj4odCk7Cit9CiAKLXN0cnVjdCBJblBsYWNlVGFnIHsgfTsKLWNv
bnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9OwordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGlu
ZSBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgY29u
c3RleHByX21vdmUoVCYmIHQpIF9fTk9FWENFUFQKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiY+KHQpOworfQorCisjaWYg
ZGVmaW5lZCBOREVCVUcKKyMgZGVmaW5lIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9O
KENIRUNLLCBFWFBSKSAoRVhQUikKKyNlbHNlCisjIGRlZmluZSBUUjJfT1BUSU9OQUxfQVNTRVJU
RURfRVhQUkVTU0lPTihDSEVDSywgRVhQUikgKChDSEVDSykgPyAoRVhQUikgOiAoW117YXNzZXJ0
KCEjQ0hFQ0spO30oKSwgKEVYUFIpKSkKKyNlbmRpZgorCisKKy8vIHN0YXRpY19hZGRyZXNzb2Y6
IGEgY29uc3RleHByIHZlcnNpb24gb2YgYWRkcmVzc29mCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0cnVjdCBoYXNfb3ZlcmxvYWRlZF9hZGRyZXNzb2YKK3sKKyAgdGVtcGxhdGUgPGNsYXNzIFg+
CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNfb3ZlcmxvYWQoLi4uKSB7IHJldHVybiBmYWxz
ZTsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBYLCBzaXplX3QgUyA9IHNpemVvZihzdGQ6OmRlY2x2
YWw8WCY+KCkub3BlcmF0b3ImKCkpID4KKyAgY29uc3RleHByIHN0YXRpYyBib29sIGhhc19vdmVy
bG9hZChib29sKSB7IHJldHVybiB0cnVlOyB9CisKKyAgY29uc3RleHByIHN0YXRpYyBib29sIHZh
bHVlID0gaGFzX292ZXJsb2FkPFQ+KHRydWUpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IFRSMl9PUFRJT05BTF9SRVFVSVJFUyghaGFzX292ZXJsb2FkZWRfYWRkcmVzc29mPFQ+KT4KK2Nv
bnN0ZXhwciBUKiBzdGF0aWNfYWRkcmVzc29mKFQmIHJlZikKK3sKKyAgcmV0dXJuICZyZWY7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUUjJfT1BUSU9OQUxfUkVRVUlSRVMoaGFzX292ZXJs
b2FkZWRfYWRkcmVzc29mPFQ+KT4KK1QqIHN0YXRpY19hZGRyZXNzb2YoVCYgcmVmKQoreworICBy
ZXR1cm4gc3RkOjphZGRyZXNzb2YocmVmKTsKK30KKworCisvLyB0aGUgY2FsbCB0byBjb252ZXJ0
PEE+KGIpIGhhcyByZXR1cm4gdHlwZSBBIGFuZCBjb252ZXJ0cyBiIHRvIHR5cGUgQSBpZmYgYiBk
ZWNsdHlwZShiKSBpcyBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvIEEKK3RlbXBsYXRlIDxjbGFz
cyBVPgorY29uc3RleHByIFUgY29udmVydChVIHYpIHsgcmV0dXJuIHY7IH0KKworfSAvLyBuYW1l
c3BhY2UgZGV0YWlsCisKKworY29uc3RleHByIHN0cnVjdCB0cml2aWFsX2luaXRfdHt9IHRyaXZp
YWxfaW5pdHt9OworCisKKy8vIDIwLjUuNiwgSW4tcGxhY2UgY29uc3RydWN0aW9uCitjb25zdGV4
cHIgc3RydWN0IGluX3BsYWNlX3R7fSBpbl9wbGFjZXt9OwogCi1zdHJ1Y3QgTnVsbG9wdFRhZyB7
IGV4cGxpY2l0IGNvbnN0ZXhwciBOdWxsb3B0VGFnKGludCkgeyB9IH07Ci1jb25zdGV4cHIgTnVs
bG9wdFRhZyBOdWxsb3B0IHsgMCB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgT3B0
aW9uYWwgeworLy8gMjAuNS43LCBEaXNlbmdhZ2VkIHN0YXRlIGluZGljYXRvcgorc3RydWN0IG51
bGxvcHRfdAoreworICBzdHJ1Y3QgaW5pdHt9OworICBjb25zdGV4cHIgZXhwbGljaXQgbnVsbG9w
dF90KGluaXQpe30KK307Citjb25zdGV4cHIgbnVsbG9wdF90IG51bGxvcHR7bnVsbG9wdF90Ojpp
bml0KCl9OworCisKKy8vIDIwLjUuOCwgY2xhc3MgYmFkX29wdGlvbmFsX2FjY2VzcworY2xhc3Mg
YmFkX29wdGlvbmFsX2FjY2VzcyA6IHB1YmxpYyBzdGQ6OmxvZ2ljX2Vycm9yIHsKIHB1YmxpYzoK
LSAgICBPcHRpb25hbCgpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAg
IH0KKyAgZXhwbGljaXQgYmFkX29wdGlvbmFsX2FjY2Vzcyhjb25zdCBzdGQ6OnN0cmluZyYgd2hh
dF9hcmcpIDogc3RkOjpsb2dpY19lcnJvcnt3aGF0X2FyZ30ge30KKyAgZXhwbGljaXQgYmFkX29w
dGlvbmFsX2FjY2Vzcyhjb25zdCBjaGFyKiB3aGF0X2FyZykgOiBzdGQ6OmxvZ2ljX2Vycm9ye3do
YXRfYXJnfSB7fQorfTsKIAotICAgIE9wdGlvbmFsKE51bGxvcHRUYWcpCi0gICAgICAgIDogbV9p
c0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAgIH0KIAotICAgIE9wdGlvbmFsKGNvbnN0IFQmIHZh
bHVlKQotICAgICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCi0gICAgewotICAgICAgICBuZXcgKE5v
dE51bGwsICZtX3ZhbHVlKSBUKHZhbHVlKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3Vu
aW9uIHN0b3JhZ2VfdAoreworICB1bnNpZ25lZCBjaGFyIGR1bW15XzsKKyAgVCB2YWx1ZV87CiAK
LSAgICBPcHRpb25hbChjb25zdCBPcHRpb25hbCYgb3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2Fn
ZWQob3RoZXIubV9pc0VuZ2FnZWQpCi0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0g
ICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKCpvdGhlci5hc1B0cigpKTsKLSAg
ICB9CisgIGNvbnN0ZXhwciBzdG9yYWdlX3QoIHRyaXZpYWxfaW5pdF90ICkgX19OT0VYQ0VQVCA6
IGR1bW15XygpIHt9OwogCi0gICAgT3B0aW9uYWwoT3B0aW9uYWwmJiBvdGhlcikKLSAgICAgICAg
OiBtX2lzRW5nYWdlZChvdGhlci5tX2lzRW5nYWdlZCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lz
RW5nYWdlZCkKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSgq
b3RoZXIuYXNQdHIoKSkpOwotICAgIH0KKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIGNv
bnN0ZXhwciBzdG9yYWdlX3QoIEFyZ3MmJi4uLiBhcmdzICkgOiB2YWx1ZV8oZGV0YWlsXzo6Y29u
c3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CiAKLSAgICBPcHRpb25hbChUJiYgdmFs
dWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1ZSkKLSAgICB7Ci0gICAgICAgIG5ldyAoTm90
TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSh2YWx1ZSkpOwotICAgIH0KKyAgfnN0b3JhZ2VfdCgp
e30KK307CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotICAgIE9wdGlvbmFsKElu
UGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCi0g
ICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7Ci0gICAgfQogCi0gICAgfk9wdGlvbmFsKCkKLSAgICB7Ci0gICAgICAgIGRl
c3Ryb3koKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VuaW9uIGNvbnN0ZXhwcl9zdG9y
YWdlX3QKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGR1bW15XzsKKyAgICBUIHZhbHVlXzsKIAotICAg
IE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFRhZykKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3ko
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICBjb25zdGV4cHIgY29uc3RleHBy
X3N0b3JhZ2VfdCggdHJpdmlhbF9pbml0X3QgKSBfX05PRVhDRVBUIDogZHVtbXlfKCkge307CiAK
LSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KGNvbnN0IE9wdGlvbmFsJiBvdGhlcikKLSAgICB7Ci0g
ICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLQot
ICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewotICAg
ICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0gICAg
ICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KKyAgICBjb25zdGV4cHIg
Y29uc3RleHByX3N0b3JhZ2VfdCggQXJncyYmLi4uIGFyZ3MgKSA6IHZhbHVlXyhkZXRhaWxfOjpj
b25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KIAotICAgIE9wdGlvbmFsJiBvcGVy
YXRvcj0oT3B0aW9uYWwmJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhl
cikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgICBkZXN0cm95KCk7Ci0gICAg
ICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAm
bV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0cigpKSk7Ci0gICAgICAgICAgICBtX2lzRW5n
YWdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAg
ICB+Y29uc3RleHByX3N0b3JhZ2VfdCgpID0gZGVmYXVsdDsKK307CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VT46OnR5cGUsIFQ+Ojp2YWx1ZT46OnR5cGU+
Ci0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShVJiYgdSkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3ko
KTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChzdGQ6OmZvcndhcmQ8VT4odSkp
OwotICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9pc0Vu
Z2FnZWQ7IH0KK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IG9wdGlvbmFsX2Jhc2UKK3sKKyAg
ICBib29sIGluaXRfOworICAgIHN0b3JhZ2VfdDxUPiBzdG9yYWdlXzsKIAotICAgIGNvbnN0IFQq
IG9wZXJhdG9yLT4oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsK
LSAgICAgICAgcmV0dXJuIGFzUHRyKCk7Ci0gICAgfQorICAgIGNvbnN0ZXhwciBvcHRpb25hbF9i
YXNlKCkgX19OT0VYQ0VQVCA6IGluaXRfKGZhbHNlKSwgc3RvcmFnZV8odHJpdmlhbF9pbml0KSB7
fTsKIAotICAgIFQqIG9wZXJhdG9yLT4oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdh
Z2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRyKCk7Ci0gICAgfQorICAgIGV4cGxpY2l0IGNvbnN0
ZXhwciBvcHRpb25hbF9iYXNlKGNvbnN0IFQmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKHYp
IHt9CiAKLSAgICBjb25zdCBUJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9
Ci0gICAgVCYgb3BlcmF0b3IqKCkgeyByZXR1cm4gdmFsdWUoKTsgfQorICAgIGV4cGxpY2l0IGNv
bnN0ZXhwciBvcHRpb25hbF9iYXNlKFQmJiB2KSA6IGluaXRfKHRydWUpLCBzdG9yYWdlXyhkZXRh
aWxfOjpjb25zdGV4cHJfbW92ZSh2KSkge30KIAotICAgIFQmIHZhbHVlKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAgICAgIHJldHVybiAqYXNQdHIoKTsKLSAgICB9
CisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxpY2l0IG9wdGlvbmFsX2Jhc2UoaW5f
cGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2Vf
KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgY29u
c3QgVCYgdmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsK
LSAgICAgICAgcmV0dXJuICphc1B0cigpOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwg
Y2xhc3MuLi4gQXJncywgVFIyX09QVElPTkFMX1JFUVVJUkVTKHN0ZDo6aXNfY29uc3RydWN0aWJs
ZTxULCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4+KT4KKyAgICBleHBsaWNpdCBvcHRpb25hbF9i
YXNlKGluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYmLi4uIGFy
Z3MpCisgICAgICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGlsLCBzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pIHt9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIFQgdmFsdWVP
cihVJiYgdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAg
ICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAgfm9wdGlvbmFsX2Jhc2UoKSB7IGlmIChpbml0
Xykgc3RvcmFnZV8udmFsdWVfLlQ6On5UKCk7IH0KK307CisKKwordGVtcGxhdGUgPGNsYXNzIFQ+
CitzdHJ1Y3QgY29uc3RleHByX29wdGlvbmFsX2Jhc2UKK3sKKyAgICBib29sIGluaXRfOworICAg
IGNvbnN0ZXhwcl9zdG9yYWdlX3Q8VD4gc3RvcmFnZV87CisKKyAgICBjb25zdGV4cHIgY29uc3Rl
eHByX29wdGlvbmFsX2Jhc2UoKSBfX05PRVhDRVBUIDogaW5pdF8oZmFsc2UpLCBzdG9yYWdlXyh0
cml2aWFsX2luaXQpIHt9OworCisgICAgZXhwbGljaXQgY29uc3RleHByIGNvbnN0ZXhwcl9vcHRp
b25hbF9iYXNlKGNvbnN0IFQmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKHYpIHt9CisKKyAg
ICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHByX29wdGlvbmFsX2Jhc2UoVCYmIHYpIDogaW5p
dF8odHJ1ZSksIHN0b3JhZ2VfKGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQorCisgICAg
dGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxpY2l0IGNvbnN0ZXhwciBjb25zdGV4cHJfb3B0
aW9uYWxfYmFzZShpbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAgICAgIDogaW5pdF8odHJ1
ZSksIHN0b3JhZ2VfKGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7
fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9S
RVFVSVJFUyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+
Pik+CisgICAgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRfTElTVCBleHBsaWNpdCBjb25zdGV4cHJf
b3B0aW9uYWxfYmFzZShpbl9wbGFjZV90LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFy
Z3MmJi4uLiBhcmdzKQorICAgICAgOiBpbml0Xyh0cnVlKSwgc3RvcmFnZV8oaWwsIHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikge30KKworICAgIH5jb25zdGV4cHJfb3B0aW9uYWxfYmFzZSgp
ID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgordXNpbmcgT3B0aW9uYWxCYXNl
ID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwKKyAgICBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGU8VD46OnZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgcG9zc2li
bGUKKyAgICBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25z
dDxUPjo6dHlwZT4sIC8vIHVzZSBiYXNlIHdpdGggdHJpdmlhbCBkZXN0cnVjdG9yCisgICAgb3B0
aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZT4KKz46OnR5cGU7
CisKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIG9wdGlvbmFsIDogcHJpdmF0ZSBPcHRp
b25hbEJhc2U8VD4KK3sKKyAgc3RhdGljX2Fzc2VydCggIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBz
dGQ6OmRlY2F5PFQ+Ojp0eXBlLCBudWxsb3B0X3Q+Ojp2YWx1ZSwgImJhZCBUIiApOworICBzdGF0
aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUsIGlu
X3BsYWNlX3Q+Ojp2YWx1ZSwgImJhZCBUIiApOwogCi0gICAgICAgIHJldHVybiBzdGQ6OmZvcndh
cmQ8VT4odmFsdWUpOwotICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2
YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faXNF
bmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICphc1B0cigpOworICBjb25zdGV4cHIgYm9vbCBp
bml0aWFsaXplZCgpIGNvbnN0IF9fTk9FWENFUFQgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+Ojpp
bml0XzsgfQorICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSogZGF0YXB0cigp
IHsgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVl
Xyk7IH0KKyAgY29uc3RleHByIGNvbnN0IFQqIGRhdGFwdHIoKSBjb25zdCB7IHJldHVybiBkZXRh
aWxfOjpzdGF0aWNfYWRkcmVzc29mKE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsg
fQogCi0gICAgICAgIHJldHVybiBjYWxsYmFjaygpOworIyBpZiBPUFRJT05BTF9IQVNfVEhJU19S
VkFMVUVfUkVGUyA9PSAxCisgIGNvbnN0ZXhwciBjb25zdCBUJiBjb250YWluZWRfdmFsKCkgY29u
c3QmIHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisjICAgaWYg
T1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTID09IDEKKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05T
VEVYUFIgVCYmIGNvbnRhaW5lZF92YWwoKSAmJiB7IHJldHVybiBzdGQ6Om1vdmUoT3B0aW9uYWxC
YXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV8pOyB9CisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBS
IFQmIGNvbnRhaW5lZF92YWwoKSAmIHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8u
dmFsdWVfOyB9CisjICAgZWxzZQorICBUJiBjb250YWluZWRfdmFsKCkgJiB7IHJldHVybiBPcHRp
b25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsgfQorICBUJiYgY29udGFpbmVkX3ZhbCgpICYm
IHsgcmV0dXJuIHN0ZDo6bW92ZShPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXyk7IH0K
KyMgICBlbmRpZgorIyBlbHNlCisgIGNvbnN0ZXhwciBjb25zdCBUJiBjb250YWluZWRfdmFsKCkg
Y29uc3QgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV87IH0KKyAgVCYg
Y29udGFpbmVkX3ZhbCgpIHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVf
OyB9CisjIGVuZGlmCisKKyAgdm9pZCBjbGVhcigpIF9fTk9FWENFUFQgeworICAgIGlmIChpbml0
aWFsaXplZCgpKSBkYXRhcHRyKCktPlQ6On5UKCk7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0
XyA9IGZhbHNlOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgaW5p
dGlhbGl6ZShBcmdzJiYuLi4gYXJncykgX19OT0VYQ0VQVF8oX19OT0VYQ0VQVF8oVChzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKSkKKyAgeworICAgIEFTU0VSVCghT3B0aW9uYWxCYXNlPFQ+
Ojppbml0Xyk7CisgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9
IHRydWU7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4KKyAgdm9p
ZCBpbml0aWFsaXplKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBpbCwgQXJncyYmLi4uIGFyZ3Mp
IF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKFQoaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpKQorICB7CisgICAgQVNTRVJUKCFPcHRpb25hbEJhc2U8VD46OmluaXRfKTsKKyAgICA6Om5l
dyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIoKSkpIFQoaWwsIHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7CisgIH0KKwor
cHVibGljOgorICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKKworICAvLyAyMC41LjUuMSwgY29uc3Ry
dWN0b3JzCisgIGNvbnN0ZXhwciBvcHRpb25hbCgpIF9fTk9FWENFUFQgOiBPcHRpb25hbEJhc2U8
VD4oKSAge307CisgIGNvbnN0ZXhwciBvcHRpb25hbChudWxsb3B0X3QpIF9fTk9FWENFUFQgOiBP
cHRpb25hbEJhc2U8VD4oKSB7fTsKKworICBvcHRpb25hbChjb25zdCBvcHRpb25hbCYgcmhzKQor
ICA6IE9wdGlvbmFsQmFzZTxUPigpCisgIHsKKyAgICBpZiAocmhzLmluaXRpYWxpemVkKCkpIHsK
KyAgICAgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKCpyaHMpOwor
ICAgICAgICBPcHRpb25hbEJhc2U8VD46OmluaXRfID0gdHJ1ZTsKICAgICB9CisgIH0KIAotcHJp
dmF0ZToKLSAgICBjb25zdCBUKiBhc1B0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVCo+KCZtX3ZhbHVlKTsgfQotICAgIFQqIGFzUHRyKCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUKj4oJm1fdmFsdWUpOyB9Ci0gICAgdm9pZCBkZXN0cm95KCkKLSAgICB7Ci0g
ICAgICAgIGlmIChtX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgYXNQdHIoKS0+flQoKTsKLSAg
ICAgICAgICAgIG1faXNFbmdhZ2VkID0gZmFsc2U7Ci0gICAgICAgIH0KKyAgb3B0aW9uYWwob3B0
aW9uYWwmJiByaHMpIF9fTk9FWENFUFRfKGRldGFpbF86OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1
Y3RpYmxlPFQ+Ojp2YWx1ZSkKKyAgOiBPcHRpb25hbEJhc2U8VD4oKQorICB7CisgICAgaWYgKHJo
cy5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIDo6bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0
YXB0cigpKSkgVChzdGQ6Om1vdmUoKnJocykpOworICAgICAgICBPcHRpb25hbEJhc2U8VD46Omlu
aXRfID0gdHJ1ZTsKICAgICB9CisgIH0KKworICBjb25zdGV4cHIgb3B0aW9uYWwoY29uc3QgVCYg
dikgOiBPcHRpb25hbEJhc2U8VD4odikge30KKworICBjb25zdGV4cHIgb3B0aW9uYWwoVCYmIHYp
IDogT3B0aW9uYWxCYXNlPFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKHYpKSB7fQorCisgIHRl
bXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWwoaW5f
cGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgIDogT3B0aW9uYWxCYXNlPFQ+KGluX3BsYWNlX3R7
fSwgZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CisKKyAgdGVt
cGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhzdGQ6
OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+CisgIE9QVElP
TkFMX0NPTlNURVhQUl9JTklUX0xJU1QgZXhwbGljaXQgb3B0aW9uYWwoaW5fcGxhY2VfdCwgc3Rk
Ojppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdzJiYuLi4gYXJncykKKyAgOiBPcHRpb25hbEJh
c2U8VD4oaW5fcGxhY2VfdHt9LCBpbCwgZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4o
YXJncykuLi4pIHt9CisKKyAgLy8gMjAuNS40LjIsIERlc3RydWN0b3IKKyAgfm9wdGlvbmFsKCkg
PSBkZWZhdWx0OworCisgIC8vIDIwLjUuNC4zLCBhc3NpZ25tZW50CisgIG9wdGlvbmFsJiBvcGVy
YXRvcj0obnVsbG9wdF90KSBfX05PRVhDRVBUCisgIHsKKyAgICBjbGVhcigpOworICAgIHJldHVy
biAqdGhpczsKKyAgfQorCisgIG9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWwmIHJo
cykKKyAgeworICAgIGlmICAgICAgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRp
YWxpemVkKCkgPT0gZmFsc2UpIGNsZWFyKCk7CisgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9
PSBmYWxzZSAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9PSB0cnVlKSAgaW5pdGlhbGl6ZSgqcmhzKTsK
KyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgp
ID09IHRydWUpICBjb250YWluZWRfdmFsKCkgPSAqcmhzOworICAgIHJldHVybiAqdGhpczsKKyAg
fQorCisgIG9wdGlvbmFsJiBvcGVyYXRvcj0ob3B0aW9uYWwmJiByaHMpCisgIF9fTk9FWENFUFRf
KGRldGFpbF86OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZSAmJiBkZXRhaWxf
Ojppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUpCisgIHsKKyAgICBpZiAg
ICAgIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IGZhbHNl
KSBjbGVhcigpOworICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmlu
aXRpYWxpemVkKCkgPT0gdHJ1ZSkgIGluaXRpYWxpemUoc3RkOjptb3ZlKCpyaHMpKTsKKyAgICBl
bHNlIGlmIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IHRy
dWUpICBjb250YWluZWRfdmFsKCkgPSBzdGQ6Om1vdmUoKnJocyk7CisgICAgcmV0dXJuICp0aGlz
OworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+CisgIGF1dG8gb3BlcmF0b3I9KFUmJiB2KQor
ICAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZgorICA8CisgICAgc3RkOjppc19zYW1lPHR5cGVu
YW1lIHN0ZDo6ZGVjYXk8VT46OnR5cGUsIFQ+Ojp2YWx1ZSwKKyAgICBvcHRpb25hbCYKKyAgPjo6
dHlwZQorICB7CisgICAgaWYgKGluaXRpYWxpemVkKCkpIHsgY29udGFpbmVkX3ZhbCgpID0gc3Rk
Ojpmb3J3YXJkPFU+KHYpOyB9CisgICAgZWxzZSAgICAgICAgICAgICAgIHsgaW5pdGlhbGl6ZShz
dGQ6OmZvcndhcmQ8VT4odikpOyAgfQorICAgIHJldHVybiAqdGhpczsKKyAgfQorCisKKyAgdGVt
cGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgZW1wbGFjZShBcmdzJiYuLi4gYXJncykKKyAg
eworICAgIGNsZWFyKCk7CisgICAgaW5pdGlhbGl6ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQg
ZW1wbGFjZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICB7
CisgICAgY2xlYXIoKTsKKyAgICBpbml0aWFsaXplPFUsIEFyZ3MuLi4+KGlsLCBzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgLy8gMjAuNS40LjQsIFN3YXAKKyAgdm9pZCBz
d2FwKG9wdGlvbmFsPFQ+JiByaHMpIF9fTk9FWENFUFRfKGRldGFpbF86OmlzX25vdGhyb3dfbW92
ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSAmJiBfX05PRVhDRVBUXyhzd2FwKHN0ZDo6ZGVjbHZh
bDxUJj4oKSwgc3RkOjpkZWNsdmFsPFQmPigpKSkpCisgIHsKKyAgICBpZiAgICAgIChpbml0aWFs
aXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IGZhbHNlKSB7IHJocy5pbml0
aWFsaXplKHN0ZDo6bW92ZSgqKnRoaXMpKTsgY2xlYXIoKTsgfQorICAgIGVsc2UgaWYgKGluaXRp
YWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIHsgaW5pdGlh
bGl6ZShzdGQ6Om1vdmUoKnJocykpOyByaHMuY2xlYXIoKTsgfQorICAgIGVsc2UgaWYgKGluaXRp
YWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIHsgdXNpbmcg
c3RkOjpzd2FwOyBzd2FwKCoqdGhpcywgKnJocyk7IH0KKyAgfQorCisgIC8vIDIwLjUuNC41LCBP
YnNlcnZlcnMKKworICBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IF9f
Tk9FWENFUFQgeyByZXR1cm4gaW5pdGlhbGl6ZWQoKTsgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0
KiBvcGVyYXRvciAtPigpIGNvbnN0IHsKKyAgICByZXR1cm4gVFIyX09QVElPTkFMX0FTU0VSVEVE
X0VYUFJFU1NJT04oaW5pdGlhbGl6ZWQoKSwgZGF0YXB0cigpKTsKKyAgfQorCisjIGlmIE9QVElP
TkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisKKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVY
UFIgVCogb3BlcmF0b3IgLT4oKSB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3Bl
Y2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIg
Y29udGV4dC4KKyAgICAvLyBDT05TVEVYUFJfQVNTRVJUKGluaXRpYWxpemVkKCkpOworICAgIHJl
dHVybiBkYXRhcHRyKCk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgb3BlcmF0b3IgKigp
IGNvbnN0JiB7CisgICAgcmV0dXJuIFRSMl9PUFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKGlu
aXRpYWxpemVkKCksIGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxF
X0NPTlNURVhQUiBUJiBvcGVyYXRvciAqKCkgJiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
b2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUg
Y29udGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05TVEVYUFJfQVNTRVJUKGluaXRpYWxpemVkKCkp
OworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxF
X0NPTlNURVhQUiBUJiYgb3BlcmF0b3IgKigpICYmIHsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRo
ZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIENPTlNURVhQUl9BU1NFUlQoaW5pdGlhbGl6ZWQo
KSk7CisgICAgcmV0dXJuIGRldGFpbF86OmNvbnN0ZXhwcl9tb3ZlKGNvbnRhaW5lZF92YWwoKSk7
CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25zdCYgeworICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJl
IHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFk
IG9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWlu
ZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiB2YWx1ZSgp
ICYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0
aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8g
cmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlv
bmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAg
IHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNU
RVhQUiBUJiYgdmFsdWUoKSAmJiB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3Bl
Y2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIg
Y29udGV4dC4KKyAgICAvLyBpZiAoIWluaXRpYWxpemVkKCkpIF9fVEhST1dfRVhDRVBUSU9OKGJh
ZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBvcHRpb25hbCBhY2Nlc3MiKSk7CisgICAgcmV0dXJuIHN0
ZDo6bW92ZShjb250YWluZWRfdmFsKCkpOworICB9CisKKyMgZWxzZQorCisgIFQqIG9wZXJhdG9y
IC0+KCkgeworICAgIGFzc2VydCAoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGRhdGFwdHIo
KTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0JiBvcGVyYXRvciAqKCkgY29uc3QgeworICAg
IHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihpbml0aWFsaXplZCgpLCBj
b250YWluZWRfdmFsKCkpOworICB9CisKKyAgVCYgb3BlcmF0b3IgKigpIHsKKyAgICBhc3NlcnQg
KGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBj
b25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25zdCB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0
aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IGNvbnRh
aW5lZF92YWwoKSA6ICh0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCJiYWQgb3B0aW9uYWwgYWNj
ZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7CisgICAgcmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAg
fQorCisgIFQmIHZhbHVlKCkgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNp
YWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNv
bnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAo
dGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWlu
ZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworIyBlbmRpZgor
CisjIGlmIE9QVElPTkFMX0hBU19USElTX1JWQUxVRV9SRUZTID09IDEKKworICB0ZW1wbGF0ZSA8
Y2xhc3MgVj4KKyAgY29uc3RleHByIFQgdmFsdWVfb3IoViYmIHYpIGNvbnN0JgorICB7CisgICAg
cmV0dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25z
dGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyAgIGlmIE9QVElPTkFMX0hBU19NT1ZFX0FD
Q0VTU09SUyA9PSAxCisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+CisgIE9QVElPTkFMX01VVEFCTEVf
Q09OU1RFWFBSIFQgdmFsdWVfb3IoViYmIHYpICYmCisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyBk
ZXRhaWxfOjpjb25zdGV4cHJfbW92ZShjb25zdF9jYXN0PG9wdGlvbmFsPFQ+Jj4oKnRoaXMpLmNv
bnRhaW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9m
b3J3YXJkPFY+KHYpKTsKKyAgfQorCisjICAgZWxzZQorCisgIHRlbXBsYXRlIDxjbGFzcyBWPgor
ICBUIHZhbHVlX29yKFYmJiB2KSAmJgorICB7CisgICAgcmV0dXJuICp0aGlzID8gZGV0YWlsXzo6
Y29uc3RleHByX21vdmUoY29uc3RfY2FzdDxvcHRpb25hbDxUPiY+KCp0aGlzKS5jb250YWluZWRf
dmFsKCkpIDogZGV0YWlsXzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxW
Pih2KSk7CisgIH0KKworIyAgIGVuZGlmCisKKyMgZWxzZQorCisgIHRlbXBsYXRlIDxjbGFzcyBW
PgorICBjb25zdGV4cHIgVCB2YWx1ZV9vcihWJiYgdikgY29uc3QKKyAgeworICAgIHJldHVybiAq
dGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZlcnQ8VD4oZGV0YWlsXzo6Y29uc3RleHByX2Zv
cndhcmQ8Vj4odikpOworICB9CisKKyMgZW5kaWYKKworfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KK2NsYXNzIG9wdGlvbmFsPFQmPgoreworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1l
PFQsIG51bGxvcHRfdD46OnZhbHVlLCAiYmFkIFQiICk7CisgIHN0YXRpY19hc3NlcnQoICFzdGQ6
OmlzX3NhbWU8VCwgaW5fcGxhY2VfdD46OnZhbHVlLCAiYmFkIFQiICk7CisgIFQqIHJlZjsKKwor
cHVibGljOgorCisgIC8vIDIwLjUuNS4xLCBjb25zdHJ1Y3Rpb24vZGVzdHJ1Y3Rpb24KKyAgY29u
c3RleHByIG9wdGlvbmFsKCkgX19OT0VYQ0VQVCA6IHJlZihudWxscHRyKSB7fQorCisgIGNvbnN0
ZXhwciBvcHRpb25hbChudWxsb3B0X3QpIF9fTk9FWENFUFQgOiByZWYobnVsbHB0cikge30KKwor
ICBjb25zdGV4cHIgb3B0aW9uYWwoVCYgdikgX19OT0VYQ0VQVCA6IHJlZihkZXRhaWxfOjpzdGF0
aWNfYWRkcmVzc29mKHYpKSB7fQorCisgIG9wdGlvbmFsKFQmJikgPSBkZWxldGU7CisKKyAgY29u
c3RleHByIG9wdGlvbmFsKGNvbnN0IG9wdGlvbmFsJiByaHMpIF9fTk9FWENFUFQgOiByZWYocmhz
LnJlZikge30KKworICBleHBsaWNpdCBjb25zdGV4cHIgb3B0aW9uYWwoaW5fcGxhY2VfdCwgVCYg
dikgX19OT0VYQ0VQVCA6IHJlZihkZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKHYpKSB7fQorCisg
IGV4cGxpY2l0IG9wdGlvbmFsKGluX3BsYWNlX3QsIFQmJikgPSBkZWxldGU7CisKKyAgfm9wdGlv
bmFsKCkgPSBkZWZhdWx0OworCisgIC8vIDIwLjUuNS4yLCBtdXRhdGlvbgorICBvcHRpb25hbCYg
b3BlcmF0b3I9KG51bGxvcHRfdCkgX19OT0VYQ0VQVCB7CisgICAgcmVmID0gbnVsbHB0cjsKKyAg
ICByZXR1cm4gKnRoaXM7CisgIH0KIAotICAgIGJvb2wgbV9pc0VuZ2FnZWQ7Ci0gICAgdHlwZW5h
bWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6
dmFsdWU+Ojp0eXBlIG1fdmFsdWU7CisgIC8vIG9wdGlvbmFsJiBvcGVyYXRvcj0oY29uc3Qgb3B0
aW9uYWwmIHJocykgX19OT0VYQ0VQVCB7CisgICAgLy8gcmVmID0gcmhzLnJlZjsKKyAgICAvLyBy
ZXR1cm4gKnRoaXM7CisgIC8vIH0KKworICAvLyBvcHRpb25hbCYgb3BlcmF0b3I9KG9wdGlvbmFs
JiYgcmhzKSBfX05PRVhDRVBUIHsKKyAgICAvLyByZWYgPSByaHMucmVmOworICAgIC8vIHJldHVy
biAqdGhpczsKKyAgLy8gfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICBhdXRvIG9wZXJh
dG9yPShVJiYgcmhzKSBfX05PRVhDRVBUCisgIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisg
IDwKKyAgICBzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxVPjo6dHlwZSwgb3B0aW9u
YWw8VCY+Pjo6dmFsdWUsCisgICAgb3B0aW9uYWwmCisgID46OnR5cGUKKyAgeworICAgIHJlZiA9
IHJocy5yZWY7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+CisgIGF1dG8gb3BlcmF0b3I9KFUmJiByaHMpIF9fTk9FWENFUFQKKyAgLT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWYKKyAgPAorICAgICFzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNh
eTxVPjo6dHlwZSwgb3B0aW9uYWw8VCY+Pjo6dmFsdWUsCisgICAgb3B0aW9uYWwmCisgID46OnR5
cGUKKyAgPSBkZWxldGU7CisKKyAgdm9pZCBlbXBsYWNlKFQmIHYpIF9fTk9FWENFUFQgeworICAg
IHJlZiA9IGRldGFpbF86OnN0YXRpY19hZGRyZXNzb2Yodik7CisgIH0KKworICB2b2lkIGVtcGxh
Y2UoVCYmKSA9IGRlbGV0ZTsKKworCisgIHZvaWQgc3dhcChvcHRpb25hbDxUJj4mIHJocykgX19O
T0VYQ0VQVAorICB7CisgICAgc3RkOjpzd2FwKHJlZiwgcmhzLnJlZik7CisgIH0KKworICAvLyAy
MC41LjUuMywgb2JzZXJ2ZXJzCisgIGNvbnN0ZXhwciBUKiBvcGVyYXRvci0+KCkgY29uc3Qgewor
ICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihyZWYsIHJlZik7Cisg
IH0KKworICBjb25zdGV4cHIgVCYgb3BlcmF0b3IqKCkgY29uc3QgeworICAgIHJldHVybiBUUjJf
T1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihyZWYsICpyZWYpOworICB9CisKKyAgY29uc3Rl
eHByIFQmIHZhbHVlKCkgY29uc3QgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNw
ZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHBy
IGNvbnRleHQuCisgICAgLy8gcmV0dXJuIHJlZiA/ICpyZWYgOiAodGhyb3cgYmFkX29wdGlvbmFs
X2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpLCAqcmVmKTsKKyAgICByZXR1cm4gKnJlZjsK
KyAgfQorCisgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29uc3QgX19OT0VY
Q0VQVCB7CisgICAgcmV0dXJuIHJlZiAhPSBudWxscHRyOworICB9CisKKyAgdGVtcGxhdGUgPGNs
YXNzIFY+CisgIGNvbnN0ZXhwciB0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlIHZhbHVlX29y
KFYmJiB2KSBjb25zdAorICB7CisgICAgcmV0dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWlsXzo6
Y29udmVydDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPihkZXRhaWxfOjpjb25zdGV4cHJf
Zm9yd2FyZDxWPih2KSk7CisgIH0KK307CisKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitjbGFzcyBv
cHRpb25hbDxUJiY+Cit7CisgIHN0YXRpY19hc3NlcnQoIHNpemVvZihUKSA9PSAwLCAib3B0aW9u
YWwgcnZhbHVlIHJlZmVyZW5jZXMgZGlzYWxsb3dlZCIgKTsKIH07CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMs
IGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCisKKy8vIDIwLjUuOCwgUmVsYXRpb25hbCBvcGVyYXRv
cnMKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9w
dGlvbmFsPFQ+JiB4LCBjb25zdCBvcHRpb25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuIGJvb2woeCkg
IT0gYm9vbCh5KSA/IGZhbHNlIDogYm9vbCh4KSA9PSBmYWxzZSA/IHRydWUgOiAqeCA9PSAqeTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qg
b3B0aW9uYWw8VD4mIHgsIGNvbnN0IG9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gISh4ID09
IHkpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBvcHRpb25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuICgh
eSkgPyBmYWxzZSA6ICgheCkgPyB0cnVlIDogKnggPCAqeTsKK30KKwordGVtcGxhdGUgPGNsYXNz
IFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihjb25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3Qg
b3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAoeSA8IHgpOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYgeCwgY29u
c3Qgb3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAhKHkgPCB4KTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mIHgs
IGNvbnN0IG9wdGlvbmFsPFQ+JiB5KQoreworICByZXR1cm4gISh4IDwgeSk7Cit9CisKKworLy8g
MjAuNS45LCBDb21wYXJpc29uIHdpdGggbnVsbG9wdAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19O
T0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPT0obnVsbG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYgeCkgX19O
T0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19O
T0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0obnVsbG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYgeCkg
X19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkg
X19OT0VYQ0VQVAoreworICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjwobnVsbG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYgeCkg
X19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIG51bGxvcHRf
dCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0obnVsbG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYp
IF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkg
X19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+Jikg
X19OT0VYQ0VQVAoreworICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBf
X05PRVhDRVBUCit7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I+PShudWxsb3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KSBf
X05PRVhDRVBUCit7CisgIHJldHVybiAoIXgpOworfQorCisKKworLy8gMjAuNS4xMCwgQ29tcGFy
aXNvbiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/
ICp4ID09IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVy
biBib29sKHgpID8gdiA9PSAqeCA6IGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3QgVCYgdikK
K3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNs
YXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9u
YWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiAhPSAqeCA6IHRydWU7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3Qgb3B0aW9uYWw8
VD4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KGxocykg
PT0gc3RhdGljX2Nhc3Q8Ym9vbD4ocmhzKSAmJiAoIXN0YXRpY19jYXN0PGJvb2w+KGxocykgfHwg
bGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCkpOworICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6
IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0
IG9wdGlvbmFsPFQ+JiB4KQogewotICAgIHJldHVybiAhKGxocyA9PSByaHMpOworICByZXR1cm4g
Ym9vbCh4KSA/IHYgPiAqeCA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcp
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9wdGlv
bmFsPFQ+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiAhb3B0OworICByZXR1cm4gYm9v
bCh4KSA/ICp4ID4gdiA6IGZhbHNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxUPiYgb3B0LCBOdWxsb3B0VGFnKQor
dGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBUJiB2LCBj
b25zdCBvcHRpb25hbDxUPiYgeCkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0
KTsKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKnggOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oTnVsbG9wdFRhZywgY29uc3QgT3B0
aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj49KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQogewotICAgIHJldHVybiAhb3B0
OworICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYgOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oTnVsbG9wdFRhZywgY29uc3QgT3B0
aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihvcHQpOworICByZXR1cm4gYm9vbCh4KSA/IHYgPD0gKnggOiBmYWxzZTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgT3B0aW9uYWw8VD4mIG9wdCwgY29uc3QgVCYgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3QgVCYg
dikKIHsKLSAgICByZXR1cm4gb3B0ICYmIG9wdC52YWx1ZSgpID09IHZhbHVlOworICByZXR1cm4g
Ym9vbCh4KSA/ICp4IDw9IHYgOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29u
c3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2
YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KQogewotICAgIHJldHVybiAhKG9wdCA9PSB2YWx1
ZSk7CisgIHJldHVybiBib29sKHgpID8gdiA+PSAqeCA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHZhbHVlLCBjb25z
dCBPcHRpb25hbDxUPiYgb3B0KQorCisvLyBDb21wYXJpc29uIG9mIG9wdGlvbmFsPFQmPiB3aXRo
IFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9w
dGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA9PSB2
IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2wo
eCkgPyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VCY+
JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgIT0gKnggOiB0cnVlOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG9wdGlvbmFsPFQmPiYg
eCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8IHYgOiB0cnVlOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYs
IGNvbnN0IG9wdGlvbmFsPFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID4gKnggOiB0
cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNv
bnN0IG9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAq
eCA+IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPChjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxUJj4mIHgpCit7CisgIHJldHVybiBi
b29sKHgpID8gdiA8ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sK
KyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFs
PFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDw9ICp4IDogZmFsc2U7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFs
PFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8PSB2IDogdHJ1
ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29u
c3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYg
Pj0gKnggOiB0cnVlOworfQorCisvLyBDb21wYXJpc29uIG9mIG9wdGlvbmFsPFQgY29uc3QmPiB3
aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkg
PyAqeCA9PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sK
KyAgcmV0dXJuIGJvb2woeCkgPyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYg
eCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gb3B0ICYmIG9wdC52YWx1ZSgpID09IHZhbHVl
OworICByZXR1cm4gYm9vbCh4KSA/ICp4ICE9IHYgOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiB2YWx1ZSwgY29uc3Qg
T3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKIHsKLSAgICBy
ZXR1cm4gISh2YWx1ZSA9PSBvcHQpOworICByZXR1cm4gYm9vbCh4KSA/IHYgIT0gKnggOiB0cnVl
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNh
eTxUPjo6dHlwZT4KLW1ha2VPcHRpb25hbChUJiYgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29u
c3QgVCYgdikKIHsKLSAgICByZXR1cm4gT3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6
dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7CisgIHJldHVybiBib29sKHgpID8gKnggPCB2
IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBPcHRpb25hbDxUPiYgb3B0aW9uYWwpCit0ZW1wbGF0ZSA8
Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlv
bmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID4gKnggOiB0cnVlOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9w
dGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAq
eCA+IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPChjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxjb25zdCBUJj4mIHgpCit7CisgIHJl
dHVybiBib29sKHgpID8gdiA8ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29u
c3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+PSB2IDogZmFsc2U7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHYsIGNv
bnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDw9ICp4
IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJu
IGJvb2woeCkgPyAqeCA8PSB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+
JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPj0gKnggOiB0cnVlOworfQorCisKKy8vIDIw
LjUuMTIsIFNwZWNpYWxpemVkIGFsZ29yaXRobXMKK3RlbXBsYXRlIDxjbGFzcyBUPgordm9pZCBz
d2FwKG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxUPiYgeSkgX19OT0VYQ0VQVF8oX19OT0VYQ0VQ
VF8oeC5zd2FwKHkpKSkKK3sKKyAgeC5zd2FwKHkpOworfQorCisKK3RlbXBsYXRlIDxjbGFzcyBU
PgorY29uc3RleHByIG9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGU+IG1ha2Vf
b3B0aW9uYWwoVCYmIHYpCit7CisgIHJldHVybiBvcHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5
PFQ+Ojp0eXBlPihkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxUPih2KSk7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBYPgorY29uc3RleHByIG9wdGlvbmFsPFgmPiBtYWtlX29wdGlvbmFsKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8WD4gdikKK3sKKyAgcmV0dXJuIG9wdGlvbmFsPFgmPih2LmdldCgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2Ugc3RkCisKK25hbWVzcGFjZSBXVEYgeworCisvLyAtLSBX
ZWJLaXQgQWRkaXRpb25zIC0tCit0ZW1wbGF0ZSA8Y2xhc3MgT3B0aW9uYWxUeXBlLCBjbGFzcyBD
YWxsYmFjaz4KK0FMV0FZU19JTkxJTkUKK2F1dG8gdmFsdWVPckNvbXB1dGUoT3B0aW9uYWxUeXBl
IG9wdGlvbmFsLCBDYWxsYmFjayBjYWxsYmFjaykgLT4gdHlwZW5hbWUgT3B0aW9uYWxUeXBlOjp2
YWx1ZV90eXBlCiB7CiAgICAgaWYgKG9wdGlvbmFsKQotICAgICAgICBvdXQucHJpbnQoKm9wdGlv
bmFsKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiTnVsbG9wdCIpOworICAgICAgICBy
ZXR1cm4gKm9wdGlvbmFsOworICAgIHJldHVybiBjYWxsYmFjaygpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJblBsYWNlOwotdXNpbmcgV1RGOjpOdWxsb3B0OwotdXNp
bmcgV1RGOjpPcHRpb25hbDsKLXVzaW5nIFdURjo6bWFrZU9wdGlvbmFsOworbmFtZXNwYWNlIHN0
ZAoreworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RydWN0IGhhc2g8c3RkOjpvcHRpb25h
bDxUPj4KKyAgeworICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFzaDxUPjo6cmVzdWx0X3R5cGUgcmVz
dWx0X3R5cGU7CisgICAgdHlwZWRlZiBzdGQ6Om9wdGlvbmFsPFQ+IGFyZ3VtZW50X3R5cGU7CisK
KyAgICBjb25zdGV4cHIgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShhcmd1bWVudF90eXBlIGNvbnN0
JiBhcmcpIGNvbnN0IHsKKyAgICAgIHJldHVybiBhcmcgPyBzdGQ6Omhhc2g8VD57fSgqYXJnKSA6
IHJlc3VsdF90eXBle307CisgICAgfQorICB9OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICBzdHJ1Y3QgaGFzaDxzdGQ6Om9wdGlvbmFsPFQmPj4KKyAgeworICAgIHR5cGVkZWYgdHlwZW5h
bWUgaGFzaDxUPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7CisgICAgdHlwZWRlZiBzdGQ6Om9w
dGlvbmFsPFQmPiBhcmd1bWVudF90eXBlOworCisgICAgY29uc3RleHByIHJlc3VsdF90eXBlIG9w
ZXJhdG9yKCkoYXJndW1lbnRfdHlwZSBjb25zdCYgYXJnKSBjb25zdCB7CisgICAgICByZXR1cm4g
YXJnID8gc3RkOjpoYXNoPFQ+e30oKmFyZykgOiByZXN1bHRfdHlwZXt9OworICAgIH0KKyAgfTsK
K30KKworIyB1bmRlZiBUUjJfT1BUSU9OQUxfUkVRVUlSRVMKKyMgdW5kZWYgVFIyX09QVElPTkFM
X0FTU0VSVEVEX0VYUFJFU1NJT04KIAotI2VuZGlmIC8vIE9wdGlvbmFsX2gKK3VzaW5nIFdURjo6
dmFsdWVPckNvbXB1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBjZmQyYWEz
MzU0ZDE3ZmUwZjhkNzQwNWVkYzJmZWFlZTY0ODIzZTBmLi41OTY1ZDY5YjgwMjAxOTVlMmQxNDlj
ODIzMTE3ZmJiMTZkZjU5NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTk1
LDcgKzk1LDcgQEAgc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmQoU3RyaW5nVmlldyBtYXRjaFN0cmlu
ZywgdW5zaWduZWQgc3RhcnQpIGNvbnN0CiAKIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1
c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKIHB1YmxpYzoKLSAgICBJbXBsKGNvbnN0IFN0cmluZ1Zp
ZXcmIHN0cmluZ1ZpZXcsIE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+
JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQorICAgIEltcGwoY29uc3QgU3RyaW5nVmlldyYg
c3RyaW5nVmlldywgc3RkOjpvcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
PiYmIGl0ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCkKICAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3Ry
aW5nVmlldykKICAgICAgICAgLCBtX2l0ZXJhdG9yKFdURk1vdmUoaXRlcmF0b3IpKQogICAgICAg
ICAsIG1faW5kZXgoaW5kZXgpCkBAIC0xMzYsNyArMTM2LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6
R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGwgewogCiBwcml2YXRlOgogICAgIGNvbnN0
IFN0cmluZ1ZpZXcmIG1fc3RyaW5nVmlldzsKLSAgICBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yPiBtX2l0ZXJhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4gbV9pdGVyYXRvcjsKICAgICB1bnNpZ25lZCBtX2luZGV4
OwogICAgIHVuc2lnbmVkIG1faW5kZXhFbmQ7CiB9OwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFZlY3Rv
cjxTdHJpbmdWaWV3PiBTdHJpbmdWaWV3OjpzcGxpdChVQ2hhciBzZXBhcmF0b3IpCiB9CiAKIFN0
cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKLSAgICA6IG1faW1wbChzdGQ6Om1h
a2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBOdWxsb3B0
IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAgICA6IG1faW1wbChz
dGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBz
dGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYjU0NWU5Njk4MjIwZGM0Njg2
YThkMmY5YWNhY2FhM2JjY2M0NWM3MS4uYTY5NDVhNTAzMjAwODZjZWI1ZGExNjk0ZmI5NTg5Yzgx
YzM4OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTY3Myw3ICs2NzMsNyBAQCBj
bGFzcyBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvciB7CiAKIHByaXZhdGU6CiAgICAg
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBTdHJpbmdWaWV3PiBtX3N0cmluZ1ZpZXc7Ci0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dENvZGVQb2ludE9mZnNldDsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBtX25leHRDb2RlUG9pbnRPZmZzZXQ7CiAgICAgVUNoYXIzMiBtX2Nv
ZGVQb2ludDsKIH07CiAKQEAgLTczOCw3ICs3MzgsNyBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3
OjpDb2RlUG9pbnRzOjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpIC0+IEl0ZXJhdG9yJgogewogICAg
IEFTU0VSVChtX25leHRDb2RlUG9pbnRPZmZzZXQpOwogICAgIGlmIChtX25leHRDb2RlUG9pbnRP
ZmZzZXQudmFsdWUoKSA9PSBtX3N0cmluZ1ZpZXcuZ2V0KCkubGVuZ3RoKCkpIHsKLSAgICAgICAg
bV9uZXh0Q29kZVBvaW50T2Zmc2V0ID0gTnVsbG9wdDsKKyAgICAgICAgbV9uZXh0Q29kZVBvaW50
T2Zmc2V0ID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAg
IGlmIChtX3N0cmluZ1ZpZXcuZ2V0KCkuaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKaW5kZXggY2MxZGE5YWU0MWZh
ZDYxMWZhZTlmMzQxNWIzMDI5NmE4OThmNjg4OC4uNmZjNDVmYmMzZmQxMDkwYWMxZGQzYzg2YTMy
NGJkYTQ2NmYwZjJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXNzaW9uLmNwcApAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgYm9vbCBwYXJz
ZURpZ2l0KFVDaGFyIGRpZ2l0LCBib29sIGlzTmVnYXRpdmUsIGludDY0X3QmIGFtb3VudCkKIH0K
IAogLy8gVGhlIGFtb3VudCBmb2xsb3dzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gLT9bMC05XSso
XC5bMC05XVswLTldKT8uCi1zdGF0aWMgT3B0aW9uYWw8aW50NjRfdD4gcGFyc2VBbW91bnQoY29u
c3QgU3RyaW5nJiBhbW91bnRTdHJpbmcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBw
YXJzZUFtb3VudChjb25zdCBTdHJpbmcmIGFtb3VudFN0cmluZykKIHsKICAgICBpbnQ2NF90IGFt
b3VudCA9IDA7CiAKQEAgLTEwNSwxMyArMTA1LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ2NF90
PiBwYXJzZUFtb3VudChjb25zdCBTdHJpbmcmIGFtb3VudFN0cmluZykKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKCFwYXJzZURpZ2l0KGMsIGlzTmVnYXRpdmUsIGFtb3VudCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRpZ2l0OwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTdGF0ZTo6U2lnbjoKICAgICAgICAgICAgIGlmICgh
cGFyc2VEaWdpdChjLCBpc05lZ2F0aXZlLCBhbW91bnQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICBzdGF0ZSA9IFN0YXRlOjpEaWdpdDsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xMjIs
MzAgKzEyMiwzMCBAQCBzdGF0aWMgT3B0aW9uYWw8aW50NjRfdD4gcGFyc2VBbW91bnQoY29uc3Qg
U3RyaW5nJiBhbW91bnRTdHJpbmcpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgh
cGFyc2VEaWdpdChjLCBpc05lZ2F0aXZlLCBhbW91bnQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFN0YXRlOjpEb3Q6CiAgICAgICAgICAgICBpZiAo
IXBhcnNlRGlnaXQoYywgaXNOZWdhdGl2ZSwgYW1vdW50KSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBzdGF0ZSA9IFN0YXRlOjpEb3REaWdpdDsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgU3RhdGU6OkRvdERpZ2l0OgogICAgICAgICAgICAgaWYgKCFwYXJzZURpZ2l0
KGMsIGlzTmVnYXRpdmUsIGFtb3VudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc3Rh
dGUgPSBTdGF0ZTo6RW5kOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBTdGF0ZTo6RW5kOgotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlm
IChzdGF0ZSAhPSBTdGF0ZTo6RGlnaXQgJiYgc3RhdGUgIT0gU3RhdGU6OkRvdERpZ2l0ICYmIHN0
YXRlICE9IFN0YXRlOjpFbmQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHN0YXRlID09IFN0YXRlOjpEb3REaWdpdCkgewog
ICAgICAgICAvLyBUaGVyZSB3YXMgYSBzaW5nbGUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9p
bnQuCkBAIC0xNjMsMTggKzE2MywxOCBAQCBzdGF0aWMgT3B0aW9uYWw8aW50NjRfdD4gcGFyc2VB
bW91bnQoY29uc3QgU3RyaW5nJiBhbW91bnRTdHJpbmcpCiAgICAgcmV0dXJuIGFtb3VudDsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzPiBjcmVhdGVD
b250YWN0RmllbGRzKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBcnJheVZhbHVlJiBjb250YWN0
RmllbGRzQXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6Q29udGFj
dEZpZWxkcz4gY3JlYXRlQ29udGFjdEZpZWxkcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJy
YXlWYWx1ZSYgY29udGFjdEZpZWxkc0FycmF5KQogewogICAgIFBheW1lbnRSZXF1ZXN0OjpDb250
YWN0RmllbGRzIHJlc3VsdDsKIAogICAgIHNpemVfdCBjb250YWN0RmllbGRzQ291bnQ7CiAgICAg
aWYgKCFjb250YWN0RmllbGRzQXJyYXkubGVuZ3RoKGNvbnRhY3RGaWVsZHNDb3VudCkpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250YWN0RmllbGRzQ291bnQ7ICsraSkgewogICAgICAg
ICBTdHJpbmcgY29udGFjdEZpZWxkOwogICAgICAgICBpZiAoIWNvbnRhY3RGaWVsZHNBcnJheS5n
ZXQoaSwgY29udGFjdEZpZWxkKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoY29udGFjdEZpZWxkID09
ICJwb3N0YWxBZGRyZXNzIikKICAgICAgICAgICAgIHJlc3VsdC5wb3N0YWxBZGRyZXNzID0gdHJ1
ZTsKQEAgLTE4NywyMSArMTg3LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6
Q29udGFjdEZpZWxkcz4gY3JlYXRlQ29udGFjdEZpZWxkcyhET01XaW5kb3cmIHdpCiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgY29u
dGFjdEZpZWxkLCAiXCIgaXMgbm90IGEgdmFsaWQgY29udGFjdCBmaWVsZC4iKTsKICAgICAgICAg
ICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50
UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU+IHRvTGluZUl0ZW1UeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZT4g
dG9MaW5lSXRlbVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmICh0eXBlID09ICJw
ZW5kaW5nIikKICAgICAgICAgcmV0dXJuIFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6
UGVuZGluZzsKICAgICBpZiAodHlwZSA9PSAiZmluYWwiKQogICAgICAgICByZXR1cm4gUGF5bWVu
dFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5hbDsKIAotICAgIHJldHVybiBOdWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRMaW5lSXRl
bVByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTIyMCw3ICsyMjAs
NyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkTGluZUl0ZW1Qcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8
UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjcmVhdGVMaW5lSXRlbShET01XaW5kb3cmIHdpbmRv
dywgY29uc3QgRGljdGlvbmFyeSYgdG90YWwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50
UmVxdWVzdDo6TGluZUl0ZW0+IGNyZWF0ZUxpbmVJdGVtKERPTVdpbmRvdyYgd2luZG93LCBjb25z
dCBEaWN0aW9uYXJ5JiB0b3RhbCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm9wZXJ0eU5hbWVz
OwogICAgIHRvdGFsLmdldE93blByb3BlcnR5TmFtZXMocHJvcGVydHlOYW1lcyk7CkBAIC0yMjks
NyArMjI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gY3Jl
YXRlTGluZUl0ZW0oRE9NV2luZG93JiB3aW5kb3csIGNvbnMKICAgICAgICAgaWYgKCFpc1ZhbGlk
TGluZUl0ZW1Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgYXV0byBt
ZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgcHJvcGVydHlOYW1lLCAiXCIgaXMgbm90IGEgdmFs
aWQgbGluZSBpdGVtIHByb3BlcnR5IG5hbWUuIik7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRF
cnJvck1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI0MSw3
ICsyNDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjcmVh
dGVMaW5lSXRlbShET01XaW5kb3cmIHdpbmRvdywgY29ucwogICAgICAgICBpZiAoIXR5cGUpIHsK
ICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArICp0eXBlU3RyaW5n
LCAiXCIgaXMgbm90IGEgdmFsaWQgbGluZSBpdGVtIHR5cGUuIik7CiAgICAgICAgICAgICB3aW5k
b3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXN1bHQudHlwZSA9ICp0eXBlOwpAQCAtMjU1LDI1ICsyNTUsMjUgQEAgc3RhdGljIE9wdGlv
bmFsPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gY3JlYXRlTGluZUl0ZW0oRE9NV2luZG93JiB3
aW5kb3csIGNvbnMKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCJcIiIgKyAqYW1vdW50U3RyaW5nLCAiXCIgaXMgbm90IGEgdmFsaWQgYW1vdW50
LiIpOwogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxQYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+PiBjcmVhdGVMaW5lSXRlbXMo
RE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIGxpbmVJdGVtc0FycmF5KQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGNyZWF0
ZUxpbmVJdGVtcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgbGluZUl0ZW1z
QXJyYXkpCiB7CiAgICAgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gcmVzdWx0Owog
CiAgICAgc2l6ZV90IGxpbmVJdGVtQ291bnQ7CiAgICAgaWYgKCFsaW5lSXRlbXNBcnJheS5sZW5n
dGgobGluZUl0ZW1Db3VudCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lSXRlbUNv
dW50OyArK2kpIHsKICAgICAgICAgRGljdGlvbmFyeSBsaW5lSXRlbURpY3Rpb25hcnk7CiAgICAg
ICAgIGlmICghbGluZUl0ZW1zQXJyYXkuZ2V0KGksIGxpbmVJdGVtRGljdGlvbmFyeSkpCi0gICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgaWYgKGF1dG8gbGluZUl0ZW0gPSBjcmVhdGVMaW5lSXRlbSh3aW5kb3csIGxp
bmVJdGVtRGljdGlvbmFyeSkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpsaW5lSXRlbSk7
CkBAIC0yODIsMTggKzI4MiwxOCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1
ZXN0OjpMaW5lSXRlbT4+IGNyZWF0ZUxpbmVJdGVtcyhET01XaW5kb3cmIHdpbgogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRD
YXBhYmlsaXRpZXM+IGNyZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVzKERPTVdpbmRvdyYgd2luZG93
LCBjb25zdCBBcnJheVZhbHVlJiBtZXJjaGFudENhcGFiaWxpdGllc0FycmF5KQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzPiBjcmVhdGVN
ZXJjaGFudENhcGFiaWxpdGllcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYg
bWVyY2hhbnRDYXBhYmlsaXRpZXNBcnJheSkKIHsKICAgICBQYXltZW50UmVxdWVzdDo6TWVyY2hh
bnRDYXBhYmlsaXRpZXMgcmVzdWx0OwogCiAgICAgc2l6ZV90IG1lcmNoYW50Q2FwYWJpbGl0aWVz
Q291bnQ7CiAgICAgaWYgKCFtZXJjaGFudENhcGFiaWxpdGllc0FycmF5Lmxlbmd0aChtZXJjaGFu
dENhcGFiaWxpdGllc0NvdW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lcmNoYW50
Q2FwYWJpbGl0aWVzQ291bnQ7ICsraSkgewogICAgICAgICBTdHJpbmcgbWVyY2hhbnRDYXBhYmls
aXR5OwogICAgICAgICBpZiAoIW1lcmNoYW50Q2FwYWJpbGl0aWVzQXJyYXkuZ2V0KGksIG1lcmNo
YW50Q2FwYWJpbGl0eSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKG1lcmNoYW50Q2FwYWJpbGl0eSA9
PSAic3VwcG9ydHMzRFMiKQogICAgICAgICAgICAgcmVzdWx0LnN1cHBvcnRzM0RTID0gdHJ1ZTsK
QEAgLTMwNiwzMCArMzA2LDMwIEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWVy
Y2hhbnRDYXBhYmlsaXRpZXM+IGNyZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVzCiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgbWVyY2hh
bnRDYXBhYmlsaXR5LCAiXCIgaXMgbm90IGEgdmFsaWQgbWVyY2hhbnQgY2FwYWJpbGl0eS4iKTsK
ICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlU3VwcG9ydGVkTmV0d29ya3ModW5zaWduZWQgdmVyc2lv
biwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIHN1cHBvcnRlZE5ldHdvcmtz
QXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlU3VwcG9y
dGVkTmV0d29ya3ModW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFy
cmF5VmFsdWUmIHN1cHBvcnRlZE5ldHdvcmtzQXJyYXkpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
cmVzdWx0OwogCiAgICAgc2l6ZV90IHN1cHBvcnRlZE5ldHdvcmtzQ291bnQ7CiAgICAgaWYgKCFz
dXBwb3J0ZWROZXR3b3Jrc0FycmF5Lmxlbmd0aChzdXBwb3J0ZWROZXR3b3Jrc0NvdW50KSkKLSAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1cHBvcnRlZE5ldHdvcmtzQ291bnQ7ICsraSkgewog
ICAgICAgICBTdHJpbmcgc3VwcG9ydGVkTmV0d29yazsKICAgICAgICAgaWYgKCFzdXBwb3J0ZWRO
ZXR3b3Jrc0FycmF5LmdldChpLCBzdXBwb3J0ZWROZXR3b3JrKSkKLSAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBp
ZiAoIVBheW1lbnRSZXF1ZXN0Ojppc1ZhbGlkU3VwcG9ydGVkTmV0d29yayh2ZXJzaW9uLCBzdXBw
b3J0ZWROZXR3b3JrKSkgewogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygi
XCIiICsgc3VwcG9ydGVkTmV0d29yaywgIlwiIGlzIG5vdCBhIHZhbGlkIHBheW1lbnQgbmV0d29y
ay4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQogCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGTW92ZShzdXBwb3J0ZWRO
ZXR3b3JrKSk7CkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBjcmVhdGVTdXBwb3J0ZWROZXR3b3Jrcyh1bnNpZ25lZCB2ZXJzaW9uLCBET01XaW4KICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nVHlwZT4gdG9TaGlwcGluZ1R5cGUoY29uc3QgU3RyaW5nJiBzaGlwcGluZ1R5cGVTdHJp
bmcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlPiB0
b1NoaXBwaW5nVHlwZShjb25zdCBTdHJpbmcmIHNoaXBwaW5nVHlwZVN0cmluZykKIHsKICAgICBp
ZiAoc2hpcHBpbmdUeXBlU3RyaW5nID09ICJzaGlwcGluZyIpCiAgICAgICAgIHJldHVybiBQYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlOjpTaGlwcGluZzsKQEAgLTM0OSw3ICszNDksNyBAQCBz
dGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZT4gdG9TaGlwcGluZ1R5
cGUoY29uc3QgU3RyaW5nJiBzaGlwcAogICAgIGlmIChzaGlwcGluZ1R5cGVTdHJpbmcgPT0gInNl
cnZpY2VQaWNrdXAiKQogICAgICAgICByZXR1cm4gUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlw
ZTo6U2VydmljZVBpY2t1cDsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGlzVmFsaWRTaGlwcGluZ01ldGhvZFByb3BlcnR5
TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0
aWMgYm9vbCBpc1ZhbGlkU2hpcHBpbmdNZXRob2RQcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5
bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBjcmVhdGVTaGlwcGluZ01ldGhvZChET01XaW5k
b3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFyeSYgc2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5KQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBjcmVh
dGVTaGlwcGluZ01ldGhvZChET01XaW5kb3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFyeSYgc2hp
cHBpbmdNZXRob2REaWN0aW9uYXJ5KQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5TmFt
ZXM7CiAgICAgc2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5LmdldE93blByb3BlcnR5TmFtZXMocHJv
cGVydHlOYW1lcyk7CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRS
ZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY3JlYXRlU2hpcHBpbmdNZXRob2QoRE9NV2luZG93Jgog
ICAgICAgICBpZiAoIWlzVmFsaWRTaGlwcGluZ01ldGhvZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyBwcm9w
ZXJ0eU5hbWUsICJcIiBpcyBub3QgYSB2YWxpZCBzaGlwcGluZyBtZXRob2QgcHJvcGVydHkgbmFt
ZS4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzg3LDIxICszODcsMjEgQEAgc3RhdGljIE9wdGlv
bmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY3JlYXRlU2hpcHBpbmdNZXRob2Qo
RE9NV2luZG93JgogICAgIGF1dG8gbGFiZWwgPSBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnkuZ2V0
PFN0cmluZz4oImxhYmVsIik7CiAgICAgaWYgKCFsYWJlbCkgewogICAgICAgICB3aW5kb3cucHJp
bnRFcnJvck1lc3NhZ2UoIk1pc3Npbmcgc2hpcHBpbmcgbWV0aG9kIGxhYmVsLiIpOwotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAg
ICAgcmVzdWx0LmxhYmVsID0gKmxhYmVsOwogCiAgICAgYXV0byBkZXRhaWwgPSBzaGlwcGluZ01l
dGhvZERpY3Rpb25hcnkuZ2V0PFN0cmluZz4oImRldGFpbCIpOwogICAgIGlmICghZGV0YWlsKSB7
CiAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBzaGlwcGluZyBtZXRo
b2QgZGV0YWlsLiIpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmVzdWx0LmRldGFpbCA9ICpkZXRhaWw7CiAKICAgICBh
dXRvIGFtb3VudFN0cmluZyA9IHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeS5nZXQ8U3RyaW5nPigi
YW1vdW50Iik7CiAgICAgaWYgKCFhbW91bnRTdHJpbmcpIHsKICAgICAgICAgd2luZG93LnByaW50
RXJyb3JNZXNzYWdlKCJNaXNzaW5nIHNoaXBwaW5nIG1ldGhvZCBhbW91bnQuIik7Ci0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIGlmIChhdXRvIGFtb3VudCA9IHBhcnNlQW1vdW50KCphbW91bnRTdHJpbmcpKQpAQCAtNDA5
LDM2ICs0MDksMzYgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01l
dGhvZD4gY3JlYXRlU2hpcHBpbmdNZXRob2QoRE9NV2luZG93JgogICAgIGVsc2UgewogICAgICAg
ICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyAqYW1vdW50U3RyaW5nLCAiXCIgaXMg
bm90IGEgdmFsaWQgYW1vdW50LiIpOwogICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2Uo
bWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaWRlbnRpZmllciA9IHNoaXBwaW5nTWV0aG9kRGlj
dGlvbmFyeS5nZXQ8U3RyaW5nPigiaWRlbnRpZmllciIpOwogICAgIGlmICghaWRlbnRpZmllcikg
ewogICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIk1pc3Npbmcgc2hpcHBpbmcgbWV0
aG9kIGlkZW50aWZpZXIuIik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICByZXN1bHQuaWRlbnRpZmllciA9ICppZGVudGlm
aWVyOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxQ
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+PiBjcmVhdGVTaGlwcGluZ01ldGhvZHMoRE9N
V2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIHNoaXBwaW5nTWV0aG9kc0FycmF5KQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhv
ZD4+IGNyZWF0ZVNoaXBwaW5nTWV0aG9kcyhET01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlW
YWx1ZSYgc2hpcHBpbmdNZXRob2RzQXJyYXkpCiB7CiAgICAgVmVjdG9yPFBheW1lbnRSZXF1ZXN0
OjpTaGlwcGluZ01ldGhvZD4gcmVzdWx0OwogCiAgICAgc2l6ZV90IHNoaXBwaW5nTWV0aG9kQ291
bnQ7CiAgICAgaWYgKCFzaGlwcGluZ01ldGhvZHNBcnJheS5sZW5ndGgoc2hpcHBpbmdNZXRob2RD
b3VudCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaGlwcGluZ01ldGhvZENvdW50OyAr
K2kpIHsKICAgICAgICAgRGljdGlvbmFyeSBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnk7CiAgICAg
ICAgIGlmICghc2hpcHBpbmdNZXRob2RzQXJyYXkuZ2V0KGksIHNoaXBwaW5nTWV0aG9kRGljdGlv
bmFyeSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGF1dG8gc2hpcHBpbmdNZXRob2QgPSBjcmVhdGVT
aGlwcGluZ01ldGhvZCh3aW5kb3csIHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeSkpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCpzaGlwcGluZ01ldGhvZCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0YXRpYyBi
b29sIGlzVmFsaWRQYXltZW50UmVxdWVzdFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50
UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93
JiB3aW5kb3csIGNvbnN0IERpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lv
biwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IERpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCiB7CiAg
ICAgUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3Q7CiAKQEAgLTQ4MCwyNSArNDgwLDI1IEBA
IHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5z
aWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiBw
cm9wZXJ0eU5hbWVzKSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gInJlcXVpcmVkU2hp
cHBpbmdBZGRyZXNzRmllbGRzIikgewogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNz
YWdlKCJcInJlcXVpcmVkU2hpcHBpbmdBZGRyZXNzRmllbGRzXCIgaGFzIGJlZW4gZGVwcmVjYXRl
ZC4gUGxlYXNlIHN3aXRjaCB0byBcInJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzXCIgaW5z
dGVhZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
InJlcXVpcmVkQmlsbGluZ0FkZHJlc3NGaWVsZHMiKSB7CiAgICAgICAgICAgICB3aW5kb3cucHJp
bnRFcnJvck1lc3NhZ2UoIlwicmVxdWlyZWRCaWxsaW5nQWRkcmVzc0ZpZWxkc1wiIGhhcyBiZWVu
IGRlcHJlY2F0ZWQuIFBsZWFzZSBzd2l0Y2ggdG8gXCJyZXF1aXJlZEJpbGxpbmdDb250YWN0Rmll
bGRzXCIgaW5zdGVhZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNWYWxp
ZFBheW1lbnRSZXF1ZXN0UHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAg
IGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArIHByb3BlcnR5TmFtZSwgIlwiIGlzIG5v
dCBhIHZhbGlkIHBheW1lbnQgcmVxdWVzdCBwcm9wZXJ0eSBuYW1lLiIpOwogICAgICAgICAgICAg
d2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKGF1dG8gbWVyY2hhbnRDYXBhYmlsaXRpZXNBcnJheSA9IGRpY3Rpb25hcnku
Z2V0PEFycmF5VmFsdWU+KCJtZXJjaGFudENhcGFiaWxpdGllcyIpKSB7CiAgICAgICAgIGF1dG8g
bWVyY2hhbnRDYXBhYmlsaXRpZXMgPSBjcmVhdGVNZXJjaGFudENhcGFiaWxpdGllcyh3aW5kb3cs
ICptZXJjaGFudENhcGFiaWxpdGllc0FycmF5KTsKICAgICAgICAgaWYgKCFtZXJjaGFudENhcGFi
aWxpdGllcykKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRNZXJjaGFudENhcGFi
aWxpdGllcygqbWVyY2hhbnRDYXBhYmlsaXRpZXMpOwogICAgIH0KQEAgLTUwNiw3ICs1MDYsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRSZXF1ZXN0KHVu
c2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAgIGlmIChhdXRvIHN1cHBvcnRlZE5ldHdvcmtz
QXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigic3VwcG9ydGVkTmV0d29ya3MiKSkg
ewogICAgICAgICBhdXRvIHN1cHBvcnRlZE5ldHdvcmtzID0gY3JlYXRlU3VwcG9ydGVkTmV0d29y
a3ModmVyc2lvbiwgd2luZG93LCAqc3VwcG9ydGVkTmV0d29ya3NBcnJheSk7CiAgICAgICAgIGlm
ICghc3VwcG9ydGVkTmV0d29ya3MpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0
U3VwcG9ydGVkTmV0d29ya3MoKnN1cHBvcnRlZE5ldHdvcmtzKTsKICAgICB9CkBAIC01MTksNyAr
NTE5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVx
dWVzdCh1bnNpZ25lZCB2ZXJzaW9uLCBET01XaW5kb3cKICAgICBpZiAoYXV0byByZXF1aXJlZEJp
bGxpbmdDb250YWN0RmllbGRzQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigicmVx
dWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyIpKSB7CiAgICAgICAgIGF1dG8gcmVxdWlyZWRCaWxs
aW5nQ29udGFjdEZpZWxkcyA9IGNyZWF0ZUNvbnRhY3RGaWVsZHMod2luZG93LCAqcmVxdWlyZWRC
aWxsaW5nQ29udGFjdEZpZWxkc0FycmF5KTsKICAgICAgICAgaWYgKCFyZXF1aXJlZEJpbGxpbmdD
b250YWN0RmllbGRzKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldFJlcXVpcmVk
QmlsbGluZ0NvbnRhY3RGaWVsZHMoKnJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMpOwogICAg
IH0KQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNy
ZWF0ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAgICAgICBh
dXRvIGJpbGxpbmdDb250YWN0ID0gUGF5bWVudENvbnRhY3Q6OmZyb21KUygqSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgKmJpbGxpbmdDb250YWN0VmFsdWUsIGVycm9yTWVz
c2FnZSk7CiAgICAgICAgIGlmICghYmlsbGluZ0NvbnRhY3QpIHsKICAgICAgICAgICAgIHdpbmRv
dy5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAg
ICAgICAgcGF5bWVudFJlcXVlc3Quc2V0QmlsbGluZ0NvbnRhY3QoKmJpbGxpbmdDb250YWN0KTsK
QEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0
ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAgIGlmIChhdXRv
IHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJh
eVZhbHVlPigicmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMiKSkgewogICAgICAgICBhdXRv
IHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzID0gY3JlYXRlQ29udGFjdEZpZWxkcyh3aW5k
b3csICpyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkc0FycmF5KTsKICAgICAgICAgaWYgKCFy
ZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcykKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwYXltZW50UmVx
dWVzdC5zZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcygqcmVxdWlyZWRTaGlwcGluZ0Nv
bnRhY3RGaWVsZHMpOwogICAgIH0KQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERP
TVdpbmRvdwogICAgICAgICBhdXRvIHNoaXBwaW5nQ29udGFjdCA9IFBheW1lbnRDb250YWN0Ojpm
cm9tSlMoKkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksICpzaGlwcGluZ0Nv
bnRhY3RWYWx1ZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgaWYgKCFzaGlwcGluZ0NvbnRhY3Qp
IHsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0U2hpcHBpbmdDb250
YWN0KCpzaGlwcGluZ0NvbnRhY3QpOwpAQCAtNTYwLDcgKzU2MCw3IEBAIHN0YXRpYyBPcHRpb25h
bDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwg
RE9NV2luZG93CiAgICAgICAgIGlmICghc2hpcHBpbmdUeXBlKSB7CiAgICAgICAgICAgICBhdXRv
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyAqc2hpcHBpbmdUeXBlU3RyaW5nLCAiXCIgaXMg
bm90IGEgdmFsaWQgc2hpcHBpbmcgdHlwZS4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVy
cm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBwYXltZW50UmVx
dWVzdC5zZXRTaGlwcGluZ1R5cGUoKnNoaXBwaW5nVHlwZSk7CiAgICAgfQpAQCAtNTY4LDcgKzU2
OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVl
c3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAgaWYgKGF1dG8gc2hpcHBpbmdNZXRo
b2RzQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigic2hpcHBpbmdNZXRob2RzIikp
IHsKICAgICAgICAgYXV0byBzaGlwcGluZ01ldGhvZHMgPSBjcmVhdGVTaGlwcGluZ01ldGhvZHMo
d2luZG93LCAqc2hpcHBpbmdNZXRob2RzQXJyYXkpOwogICAgICAgICBpZiAoIXNoaXBwaW5nTWV0
aG9kcykKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRTaGlwcGluZ01ldGhvZHMo
KnNoaXBwaW5nTWV0aG9kcyk7CiAgICAgfQpAQCAtNTc2LDcgKzU3Niw3IEBAIHN0YXRpYyBPcHRp
b25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lv
biwgRE9NV2luZG93CiAgICAgaWYgKGF1dG8gdG90YWxEaWN0aW9uYXJ5ID0gZGljdGlvbmFyeS5n
ZXQ8RGljdGlvbmFyeT4oInRvdGFsIikpIHsKICAgICAgICAgYXV0byB0b3RhbCA9IGNyZWF0ZUxp
bmVJdGVtKHdpbmRvdywgKnRvdGFsRGljdGlvbmFyeSk7CiAgICAgICAgIGlmICghdG90YWwpCi0g
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0VG90YWwoKnRvdGFsKTsKICAgICB9CkBA
IC04NDIsNyArODQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjb21w
bGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBEaWN0aW9uYXJ5JgogICAgIHJldHVybiB7IH07
CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cz4gdG9QYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cz4gdG9QYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0dXMpCiB7CiAgICAgc3dpdGNoIChzdGF0dXMp
IHsKICAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX1NVQ0NFU1M6CkBAIC04NzAsNyAr
ODcwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzPiB0b1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVuc2lnbmUKICAgICAgICAgcmV0dXJuIFBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250
YWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgK
aW5kZXggNTBhYTgwNTZhYjAxZDI3NzkyOTQ2M2YyMzZlZjY2ZmI3ZjdjNDRhMy4uN2NhOWYwNTQy
MGY2NzJjYmI5ZmE5ZmZiNzYyY2Q1NjU1YzI3MzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRhY3QuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFz
cyBQYXltZW50Q29udGFjdCB7CiAgICAgewogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxQ
YXltZW50Q29udGFjdD4gZnJvbUpTKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRh
Y3Q+IGZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpOwogICAgIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CiAK
ICAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0Lmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb29yZGluYXRvci5jcHAKaW5kZXggMGQ0YmRiZTcyZjNhYTM1ZDU0NDcwY2EzMzBhODAxMDdl
NTliNWM4OS4uMTU0YTZkMDVjODJlYzdhZGFiZmJmMmZlN2M3M2NhZDFkMDAyMzRhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yLmNwcApAQCAtODMsMjEgKzgzLDIxIEBAIHZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21w
bGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBQYXltZW50TWVyY2hhbnRTZXNzaW9uCiAgICAg
bV9jbGllbnQuY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24ocGF5bWVudE1lcmNoYW50U2Vzc2lv
bik7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgT3B0aW9uYWw8UGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQordm9pZCBQ
YXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKIHsKICAgICBBU1NFUlQobV9h
Y3RpdmVTZXNzaW9uKTsKIAogICAgIG1fY2xpZW50LmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24oc3RhdHVzLCBXVEZNb3ZlKG5ld1RvdGFsQW5kSXRlbXMpKTsKIH0KIAotdm9pZCBQYXlt
ZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgY29uc3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgT3B0aW9uYWw8UGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQordm9pZCBQYXltZW50Q29v
cmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzIHN0YXR1cywgY29uc3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGlu
Z01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVz
dDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCiB7CiAgICAgQVNTRVJUKG1f
YWN0aXZlU2Vzc2lvbik7CiAKICAgICBtX2NsaWVudC5jb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbihzdGF0dXMsIG5ld1NoaXBwaW5nTWV0aG9kcywgV1RGTW92ZShuZXdUb3RhbEFuZEl0
ZW1zKSk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb24oT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBu
ZXdUb3RhbEFuZEl0ZW1zKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKIHsKICAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENv
b3JkaW5hdG9yLmgKaW5kZXggN2M4YjIzNGM1N2JlYzc5MTk1OTNmYzNmZDk4ZDUxMzllNTgyNGRh
Ni4uNTAwYWUxNmQxOWZkM2NjMGJiY2EwYmVkYWU3NDU2ZjU1MzU3MjljYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBA
IC01NSw5ICs1NSw5IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvciB7CiAKICAgICBib29sIGJl
Z2luUGF5bWVudFNlc3Npb24oQXBwbGVQYXlTZXNzaW9uJiwgY29uc3QgVVJMJiBvcmlnaW5hdGlu
Z1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29uVVJMcywgY29uc3QgUGF5bWVudFJlcXVl
c3QmKTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRN
ZXJjaGFudFNlc3Npb24mKTsKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpU
b3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQ
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIE9wdGlv
bmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMpOwotICAgIHZv
aWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMpOworICAgIHZvaWQgY29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgc3RkOjpvcHRpb25h
bDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld0l0ZW1zKTsKKyAgICB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLCBjb25zdCBWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hp
cHBpbmdNZXRob2RzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcz4gbmV3SXRlbXMpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdJdGVt
cyk7CiAgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKFBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzKTsKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50LmgKaW5kZXggZmNmN2UxOTE3Y2FmZjBiMGExY2VjYzI2NWM1OGU0MmY2MmZiYmVjOC4uM2Q2
ZWNjMDczMDk0MWZlYmFmMDRiY2Q0OGE0OTUyOWRlMzc1ODJhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVu
dC5oCkBAIC00Niw5ICs0Niw5IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJM
LCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBQYXltZW50UmVxdWVzdCYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3Qg
UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgT3B0aW9u
YWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBPcHRpb25hbDxQYXltZW50UmVxdWVz
dDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFu
ZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywg
Y29uc3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5n
TWV0aG9kcywgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+
IG5ld1RvdGFsQW5kSXRlbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNvbXBsZXRlUGF5bWVudFNlc3Npb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaApp
bmRleCA4ZTZjOGQ4NWVmNDk3YTk1OGQxZTM4ZDc0NGUxOTdjYjU4YTdmZjg0Li5hNWM2ZGRkY2Vj
MDE1ZWEyYTk3YTg0MjdmNmM4Y2M4MzBjZDZkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaApAQCAtNTQs
NyArNTQsNyBAQCBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsKICAgICB7CiAgICAgfQog
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRNZXJjaGFudFNlc3Npb24+IGZyb21KUyhKU0M6
OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFBheW1lbnRNZXJjaGFudFNlc3Npb24+IGZyb21KUyhKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgUEtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSBjb25zdCB7
IHJldHVybiBtX3BrUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggNmFmOTJk
MzA1Yjg3NDJjZWU1MmI2N2U1MzRkZTg2MjYwYjNkMGU5Mi4uZWMzZWUxZmFmM2IyNjUzODgxYWNj
OTQzYTIzNmFmNzZmZjQ3M2IzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudFJlcXVlc3QuaApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBQYXltZW50UmVx
dWVzdCB7CiAgICAgICAgIC8vIFN0b3JlZCBhcyBhIGZpeGVkIHBvaW50IGRlY2ltYWwgbnVtYmVy
IHdpdGggdHdvIGRlY2ltYWxzOgogICAgICAgICAvLyAxLjIzIC0+IDEyMy4KICAgICAgICAgLy8g
MC4wMSAtPiAxLgotICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBhbW91bnQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8aW50NjRfdD4gYW1vdW50OwogICAgICAgICBTdHJpbmcgbGFiZWw7CiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50Q29udGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCmluZGV4IGE0YzA1M2JkNTUwY2E5MjI4OTY2MmJh
Nzc5NTBhYjhkNGVlYjE0YmEuLjE3YzI1Yzc5NDlkOGFlODFlNWMzZTJjZjMyZTAyYzkzMDM5ODI3
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5
bWVudENvbnRhY3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTEwNCwyMCArMTA0LDIwIEBAIHN0YXRp
YyBSZXRhaW5QdHI8UEtDb250YWN0PiBmcm9tRGljdGlvbmFyeShOU0RpY3Rpb25hcnkgKmRpY3Rp
b25hcnksIFN0cmluZyYgZXJyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8UGF5
bWVudENvbnRhY3Q+IFBheW1lbnRDb250YWN0Ojpmcm9tSlMoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQorc3RkOjpvcHRpb25h
bDxQYXltZW50Q29udGFjdD4gUGF5bWVudENvbnRhY3Q6OmZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAg
Ly8gRklYTUU6IERvbid0IHJvdW5kLXRyaXAgdXNpbmcgTlNTdHJpbmcuCiAgICAgYXV0byBqc29u
U3RyaW5nID0gSlNPTlN0cmluZ2lmeSgmc3RhdGUsIHZhbHVlLCAwKTsKICAgICBpZiAoIWpzb25T
dHJpbmcpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byBkaWN0aW9uYXJ5ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNEaWN0aW9u
YXJ5PihbTlNKU09OU2VyaWFsaXphdGlvbiBKU09OT2JqZWN0V2l0aERhdGE6WyhOU1N0cmluZyAq
KWpzb25TdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIG9wdGlv
bnM6MCBlcnJvcjpuaWxdKTsKICAgICBpZiAoIWRpY3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlz
S2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcGtDb250YWN0ID0g
ZnJvbURpY3Rpb25hcnkoZGljdGlvbmFyeSwgZXJyb3JNZXNzYWdlKTsKICAgICBpZiAoIXBrQ29u
dGFjdCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gUGF5bWVudENvbnRhY3QocGtDb250YWN0LmdldCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1l
cmNoYW50U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KaW5kZXggMzQ5MTJmMDk4NDFkMzdk
Yzc4ZDJhODgwOWY5ODM4OTcwNDk2YTkwMy4uMmZiYzQxODUzMDQyMzZkMjg0OWM5MDY4NzYxZTIw
N2Y0OTI0ZWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KQEAg
LTQyLDE2ICs0MiwxNiBAQCBTT0ZUX0xJTktfQ0xBU1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hh
bnRTZXNzaW9uKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPFBheW1lbnRNZXJj
aGFudFNlc3Npb24+IFBheW1lbnRNZXJjaGFudFNlc3Npb246OmZyb21KUyhKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8UGF5
bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1lcmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmKQogewogICAgIC8v
IEZJWE1FOiBEb24ndCByb3VuZC10cmlwIHVzaW5nIE5TU3RyaW5nLgogICAgIGF1dG8ganNvblN0
cmluZyA9IEpTT05TdHJpbmdpZnkoJnN0YXRlLCB2YWx1ZSwgMCk7CiAgICAgaWYgKCFqc29uU3Ry
aW5nKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gZGljdGlvbmFyeSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TRGljdGlvbmFy
eT4oW05TSlNPTlNlcmlhbGl6YXRpb24gSlNPTk9iamVjdFdpdGhEYXRhOlsoTlNTdHJpbmcgKilq
c29uU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBvcHRpb25z
OjAgZXJyb3I6bmlsXSk7CiAgICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFbZGljdGlvbmFyeSBpc0tp
bmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBrUGF5bWVudE1lcmNo
YW50U2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uSW5zdGFu
Y2UoKSBpbml0V2l0aERpY3Rpb25hcnk6ZGljdGlvbmFyeV0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCmluZGV4IDM5ZTJhOWUwYmEwNmY4YjAxMzBlMzRhNGI4MjUyYmE1Nzk0ODdjMGQuLjNlYjZi
NDM3OWE2NmZkN2VjYmZkMDIyMzcwYjk1ODczMDQzYTQ0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCkBAIC02MSw5ICs2MSw5IEBAIE1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6SXRlcmF0
b3IoTWVkaWFLZXlTdGF0dXNNYXAmKQogewogfQogCi1PcHRpb25hbDxXVEY6OktleVZhbHVlUGFp
cjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5U3Rh
dHVzTWFwOjpJdGVyYXRvcjo6bmV4dCgpCitzdGQ6Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0
dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmgKaW5kZXggZTkyZDA3ZTNiZDBjNTVkMDI5MDU3YjE2ZWU5ODhiOWVjZjVmZDIxOS4uNmZk
NDNiYzhjYWM5ZGRmYjZjNmZiNDRkNGZhZjMzOWFkZTlkMjBjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBNZWRpYUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiAgICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1
YmxpYzoKICAgICAgICAgZXhwbGljaXQgSXRlcmF0b3IoTWVkaWFLZXlTdGF0dXNNYXAmKTsKLSAg
ICAgICAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlw
ZSwgTWVkaWFLZXlTdGF0dXM+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpL
ZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBu
ZXh0KCk7CiAgICAgfTsKICAgICBJdGVyYXRvciBjcmVhdGVJdGVyYXRvcigpIHsgcmV0dXJuIEl0
ZXJhdG9yKCp0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggOGQwMmIxMjMwN2E0MjA2Nzc0NjVhMzIyNDliZmJlMzhlMWU1YzQ1ZS4uMDEz
NDBjYjJkYzg0MGMyNzhhNTg3MjgwODQ2NzQ3YTkxZWE4ZDkyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtNDgsNyArNDgsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5OjpleHRyYWN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorc3RkOjpvcHRpb25hbDxGZXRj
aEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJiBjb250
ZW50VHlwZSkKIHsKICAgICBpZiAodmFsdWUuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKSB7CiAg
ICAgICAgIGF1dG8mIGJsb2IgPSAqSlNCbG9iOjp0b1dyYXBwZWQodmFsdWUpOwpAQCAtODAsNyAr
ODAsNyBAQCBPcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OkV4ZQogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhK
U0M6OkpTQXJyYXlCdWZmZXJWaWV3OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5
KHRvVW5zaGFyZWRBcnJheUJ1ZmZlclZpZXcodmFsdWUpLnJlbGVhc2VDb25zdE5vbk51bGwoKSk7
CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2
b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaAppbmRleCA4NzE5YjNlMWI1YmVjZjBhY2I4OTlkMzZhYTE4MDY2ZTRhNzU5NmQ1Li41
MjcxMmZkMWYxMzQ0NTI2NjczYjRhODE2NTkzODMyNzI1MWVmYzlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgRmV0Y2hC
b2R5IHsKICAgICBib29sIGlzVVJMU2VhcmNoUGFyYW1zKCkgY29uc3QgeyByZXR1cm4gV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgVVJMU2VhcmNoUGFyYW1zPj4obV9kYXRhKTsgfQog
ICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KG1fZGF0YSk7IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxGZXRjaEJvZHk+IGV4dHJh
Y3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
LCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+IGV4dHJhY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgRmV0Y2hCb2R5IGxvYWRpbmdCb2R5KCkgeyByZXR1cm4geyB9
OyB9CiAKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggOWYyYTNjN2VlMGQ5OWU1MTBhNDFk
ZWY4YTgyNWE5ZGVkMWI2MWZmYi4uZWU0ZWFhMjc1N2NjNmI3MGY4MTViOTQ3ZjIzNzRmZjE2YTNh
YzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25l
ci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GZXRjaEJv
ZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
T3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycykK
K0ZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJz
PiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2Jv
ZHkoV1RGTW92ZShib2R5KSkKICAgICAsIG1faGVhZGVycyhXVEZNb3ZlKGhlYWRlcnMpKQpAQCAt
MTkwLDEzICsxOTAsMTMgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxv
YiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9ibG9iTG9hZGVyID0geyAqdGhpcyB9OworICAgIG1fYmxvYkxvYWRlci5l
bXBsYWNlKCp0aGlzKTsKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxv
YWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAg
ICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkgewogICAgICAgICBtX2Jv
ZHktPmxvYWRpbmdGYWlsZWQoKTsKLSAgICAgICAgbV9ibG9iTG9hZGVyID0gTnVsbG9wdDsKKyAg
ICAgICAgbV9ibG9iTG9hZGVyID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lk
IEZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9iTG9hZGluZygpCiB7CiAgICAgQVNTRVJUKG1fYmxv
YkxvYWRlcik7CiAKLSAgICBtX2Jsb2JMb2FkZXIgPSBOdWxsb3B0OworICAgIG1fYmxvYkxvYWRl
ciA9IHN0ZDo6bnVsbG9wdDsKICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDg1
ZWRlNzhlMTAwN2IxMDU3YmNlZDJjMzRkOGVjNGEyOGIwYTg2N2IuLjNhNzVkNGJmZjQzYTIzNmU3
M2JlMDVjMTc1NjhiNmJlZDYxYjQ0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGZXRjaEJvZHlPd25lciA6IHB1YmxpYyBSZWZDb3VudGVkPEZldGNoQm9keU93
bmVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgRmV0Y2hCb2R5T3du
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZl
dGNoSGVhZGVycz4mJik7CisgICAgRmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmKTsKIAog
ICAgIC8vIEV4cG9zZWQgQm9keSBBUEkKICAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0Rpc3R1cmJlZDsgfTsKQEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgRmV0Y2hCb2R5
T3duZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaEJvZHlPd25lcj4sIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QKICAgICB9OwogCiBwcm90ZWN0ZWQ6Ci0gICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBt
X2JvZHk7CisgICAgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+IG1fYm9keTsKICAgICBTdHJpbmcg
bV9jb250ZW50VHlwZTsKICAgICBib29sIG1faXNEaXN0dXJiZWQgeyBmYWxzZSB9OwogI2lmIEVO
QUJMRShSRUFEQUJMRV9TVFJFQU1fQVBJKQpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIEZldGNo
Qm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwogCiBwcml2YXRl
OgotICAgIE9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAppbmRl
eCA1ZmMwM2U2OGM1NGUwMzljYTExM2E3NGRlM2ZmYzUyMjNjMWFkOGFlLi42ZTA3Njc0YTlhMzM4
YzVlNGM5MzI5OTZjYTU3ZGEyMTY0YWZiNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBGZXRjaEhl
YWRlcnM6OmZpbHRlckFuZEZpbGwoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgR3VhcmQg
Z3VhcmQpCiAgICAgfQogfQogCi1PcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0
cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQorc3RkOjpvcHRpb25hbDxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5l
eHQoKQogewogICAgIHdoaWxlIChtX2N1cnJlbnRJbmRleCA8IG1fa2V5cy5zaXplKCkpIHsKICAg
ICAgICAgYXV0byBrZXkgPSBtX2tleXNbbV9jdXJyZW50SW5kZXgrK107CkBAIC0xMzEsNyArMTMx
LDcgQEAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBGZXRjaEhl
YWRlcnM6Okl0ZXJhdG9yOjpuZXh0KCkKICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4geyBXVEZN
b3ZlKGtleSksIFdURk1vdmUodmFsdWUpIH07CiAgICAgfQotICAgIHJldHVybiBOdWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Okl0
ZXJhdG9yKEZldGNoSGVhZGVycyYgaGVhZGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoSGVhZGVycy5oCmluZGV4IGMzZTA2YjdmNmU3MjZiMGVhZjEzNWIyZTdhZDI0YzE1
MDRjODIzYWUuLjdmNjRlZDExYTIzMTQ1YmFkYjI4MWEzODJlOThmNGI1YmFjZDI0MDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuaApAQCAtNjQsNyArNjQs
NyBAQCBjbGFzcyBGZXRjaEhlYWRlcnMgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaEhlYWRlcnM+
IHsKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJ
dGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLSAgICAgICAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpL
ZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hlYWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5kZXggNTE5MDAxNzI2ZmVmOGViMjQ5YTk0ZTJl
YTA3YTNlZjA4YzVhMmYyZS4uYWQxOTgwNWRjYjk5OGQzOWRhNDhmZTU3YmZiZTYzOTA0OTlmZjc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApA
QCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25h
bDxFeGNlcHRpb24+IHNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4gc2V0UmVmZXJyZXJQb2xpY3koRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyUG9saWN5KQogewogICAgIGlmIChyZWZlcnJlclBvbGljeS5pc0VtcHR5KCkpCiAg
ICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9s
aWN5OjpFbXB0eVN0cmluZzsKQEAgLTU1LDEwICs1NSwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RXhj
ZXB0aW9uPiBzZXRSZWZlcnJlclBvbGljeShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0
cmluZwogICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZl
cnJlclBvbGljeTo6VW5zYWZlVXJsOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJCYWQgcmVmZXJyZXIgcG9saWN5IHZhbHVlLiIp
IH07Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAot
c3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMs
IGNvbnN0IFN0cmluZyYgbW9kZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0
TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBp
ZiAobW9kZSA9PSAibmF2aWdhdGUiKQogICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlv
bnM6Ok1vZGU6Ok5hdmlnYXRlOwpAQCAtNzAsMTAgKzcwLDEwIEBAIHN0YXRpYyBPcHRpb25hbDxF
eGNlcHRpb24+IHNldE1vZGUoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1v
ZGUpCiAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6Q29yczsKICAg
ICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiQmFkIGZldGNoIG1vZGUgdmFsdWUuIikgfTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRD
cmVkZW50aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHNldENyZWRlbnRpYWxzKEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFscykKIHsKICAgICBpZiAo
Y3JlZGVudGlhbHMgPT0gIm9taXQiKQogICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0
Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdDsKQEAgLTgzLDEwICs4MywxMCBAQCBzdGF0aWMg
T3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMs
IGNvbnN0IFN0cmluZyYgYwogICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRp
b25zOjpDcmVkZW50aWFsczo6SW5jbHVkZTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQmFkIGNyZWRlbnRpYWxzIG1vZGUgdmFs
dWUuIikgfTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRDYWNoZShGZXRjaE9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFN0cmluZyYgY2FjaGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+IHNldENhY2hlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkK
IHsKICAgICBpZiAoY2FjaGUgPT0gImRlZmF1bHQiKQogICAgICAgICBvcHRpb25zLmNhY2hlID0g
RmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdDsKQEAgLTEwMiwxMCArMTAyLDEwIEBAIHN0YXRp
YyBPcHRpb25hbDxFeGNlcHRpb24+IHNldENhY2hlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgU3RyaW5nJiBjYWNoZSkKICAgICAgICAgb3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6
Q2FjaGU6Ok9ubHlJZkNhY2hlZDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQmFkIGNhY2hlIG1vZGUgdmFsdWUuIikgfTsKLSAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWRpcmVjdChGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgcmVkaXJlY3QpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHNl
dFJlZGlyZWN0KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWRpcmVjdCkK
IHsKICAgICBpZiAocmVkaXJlY3QgPT0gImZvbGxvdyIpCiAgICAgICAgIG9wdGlvbnMucmVkaXJl
Y3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpGb2xsb3c7CkBAIC0xMTUsMTAgKzExNSwxMCBA
QCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWRpcmVjdChGZXRjaE9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFN0cmluZyYgcmVkaQogICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0
Y2hPcHRpb25zOjpSZWRpcmVjdDo6TWFudWFsOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJCYWQgcmVkaXJlY3QgbW9kZSB2YWx1
ZS4iKSB9OwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldE1ldGhvZChSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgaW5pdE1ldGhvZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4gc2V0TWV0aG9kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBpbml0TWV0aG9kKQogewogICAgIGlmICghaXNWYWxpZEhUVFBUb2tlbihpbml0TWV0aG9k
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJN
ZXRob2QgaXMgbm90IGEgdmFsaWQgSFRUUCB0b2tlbi4iKSB9OwpAQCAtMTI5LDE3ICsxMjksMTcg
QEAgc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TWV0aG9kKFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbmkKIAogICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgo
bWV0aG9kID09ICJERUxFVEUiIHx8IG1ldGhvZCA9PSAiR0VUIiB8fCBtZXRob2QgPT0gIkhFQUQi
IHx8IG1ldGhvZCA9PSAiT1BUSU9OUyIgfHwgbWV0aG9kID09ICJQT1NUIiB8fCBtZXRob2QgPT0g
IlBVVCIpID8gbWV0aG9kIDogaW5pdE1ldGhvZCk7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBz
ZXRSZWZlcnJlcihGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0UmVmZXJyZXIoRmV0Y2hSZXF1ZXN0OjpJbnRl
cm5hbFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IERpY3Rpb25hcnkmIGluaXQpCiB7CiAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgIGlmICgh
aW5pdC5nZXQoInJlZmVycmVyIiwgcmVmZXJyZXIpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgp
KSB7CiAgICAgICAgIHJlcXVlc3QucmVmZXJyZXIgPSBBU0NJSUxpdGVyYWwoIm5vLXJlZmVycmVy
Iik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KICAgICAvLyBGSVhNRTogVGlnaHRlbiB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGht
IGFjY29yZGluZyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNl
ci4KICAgICBVUkwgcmVmZXJyZXJVUkwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHJlZmVycmVyKTsK
QEAgLTE0OCwxNyArMTQ4LDE3IEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZmVy
cmVyKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiByZXF1ZXN0LCBTCiAKICAgICBpZiAo
cmVmZXJyZXJVUkwucHJvdG9jb2xJcygiYWJvdXQiKSAmJiByZWZlcnJlclVSTC5wYXRoKCkgPT0g
ImNsaWVudCIpIHsKICAgICAgICAgcmVxdWVzdC5yZWZlcnJlciA9IEFTQ0lJTGl0ZXJhbCgiY2xp
ZW50Iik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIGlmICghKGNvbnRleHQuc2VjdXJpdHlPcmlnaW4oKSAmJiBjb250
ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVmZXJyZXJVUkwpKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZWZlcnJlciBpcyBu
b3Qgc2FtZS1vcmlnaW4uIikgfTsKIAogICAgIHJlcXVlc3QucmVmZXJyZXIgPSByZWZlcnJlclVS
TC5zdHJpbmcoKTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBidWlsZE9wdGlvbnMoRmV0Y2hSZXF1
ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVz
dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgaW5p
dCkKIHsKICAgICBKU0M6OkpTVmFsdWUgd2luZG93OwogICAgIGlmIChpbml0LmdldCgid2luZG93
Iiwgd2luZG93KSkgewpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRp
b24+IGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb247CiAg
ICAgfQotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyBib29sIG1ldGhvZENhbkhhdmVCb2R5KGNvbnN0IEZldGNoUmVxdWVzdDo6SW50ZXJu
YWxSZXF1ZXN0JiBpbnRlcm5hbFJlcXVlc3QpCkBAIC0zMjAsNyArMzIwLDcgQEAgRXhjZXB0aW9u
T3I8UmVmPEZldGNoUmVxdWVzdD4+IEZldGNoUmVxdWVzdDo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGUKICAgICBpZiAoaXNEaXN0dXJiZWRPckxvY2tlZCgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAKLSAgICBhdXRvIGNsb25lID0gYWRvcHRS
ZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgTnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVh
dGUobV9oZWFkZXJzLmdldCgpKSwgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9pbnRl
cm5hbFJlcXVlc3QpKSk7CisgICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1
ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFkZXJz
LmdldCgpKSwgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9pbnRlcm5hbFJlcXVlc3Qp
KSk7CiAgICAgY2xvbmUtPmNsb25lQm9keSgqdGhpcyk7CiAgICAgcmV0dXJuIFdURk1vdmUoY2xv
bmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5k
ZXggYjc2MjY1YTY0MWYzMTBmNDc1MzQ4NDczN2YyNDRhODYxZDFlZDZkZi4uOTZmYTk1MWYyM2Vm
ODQwNjJiNTg1NGY3OGM5ZThjNDlmZDExNjRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZldGNoUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBGZXRjaEJv
ZHlPd25lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZl
dGNoUmVxdWVzdChjb250ZXh0LCBOdWxsb3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhl
YWRlcnM6Okd1YXJkOjpSZXF1ZXN0KSwgeyB9KSk7IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVx
dWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFk
ZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdCksIHsgfSkpOyB9CiAKICAg
ICBFeGNlcHRpb25PcjxGZXRjaEhlYWRlcnMmPiBpbml0aWFsaXplV2l0aChGZXRjaFJlcXVlc3Qm
LCBjb25zdCBEaWN0aW9uYXJ5Jik7CiAgICAgRXhjZXB0aW9uT3I8RmV0Y2hIZWFkZXJzJj4gaW5p
dGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeSYpOwpAQCAtOTMsNyAr
OTMsNyBAQCBjbGFzcyBGZXRjaFJlcXVlc3QgZmluYWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3duZXIg
ewogICAgIGNvbnN0IFN0cmluZyYgaW50ZXJuYWxSZXF1ZXN0UmVmZXJyZXIoKSBjb25zdCB7IHJl
dHVybiBtX2ludGVybmFsUmVxdWVzdC5yZWZlcnJlcjsgfQogCiBwcml2YXRlOgotICAgIEZldGNo
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBS
ZWY8RmV0Y2hIZWFkZXJzPiYmLCBJbnRlcm5hbFJlcXVlc3QmJik7CisgICAgRmV0Y2hSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVm
PEZldGNoSGVhZGVycz4mJiwgSW50ZXJuYWxSZXF1ZXN0JiYpOwogCiAgICAgRXhjZXB0aW9uT3I8
RmV0Y2hIZWFkZXJzJj4gaW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgRGljdGlvbmFyeSYpOwogCkBA
IC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgRmV0Y2hSZXF1ZXN0IGZpbmFsIDogcHVibGljIEZldGNo
Qm9keU93bmVyIHsKICAgICBtdXRhYmxlIFN0cmluZyBtX3JlcXVlc3RVUkw7CiB9OwogCi1pbmxp
bmUgRmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVh
ZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYgaW50ZXJuYWxSZXF1ZXN0KQoraW5saW5lIEZldGNoUmVx
dWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6
b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywg
SW50ZXJuYWxSZXF1ZXN0JiYgaW50ZXJuYWxSZXF1ZXN0KQogICAgIDogRmV0Y2hCb2R5T3duZXIo
Y29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92ZShoZWFkZXJzKSkKICAgICAsIG1faW50ZXJu
YWxSZXF1ZXN0KFdURk1vdmUoaW50ZXJuYWxSZXF1ZXN0KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDAyZTMxMzUwZjI2ZTBjOWIx
ODUyNGNkNDI0OWRiYjg2NzI0Mjc2OTcuLjM1ZmIwOGJjM2MwYTAxNTE1YTVmNjgzNTVlYTU4OWFm
N2E2MTVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmluaXRpYWxpemVX
aXRoKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTQzo6SlNWYWx1ZSBib2R5KQogICAgIHVw
ZGF0ZUNvbnRlbnRUeXBlKCk7CiB9CiAKLUZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHks
IFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
KQorRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJz
PiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKICAgICA6IEZldGNoQm9k
eU93bmVyKGNvbnRleHQsIFdURk1vdmUoYm9keSksIFdURk1vdmUoaGVhZGVycykpCiAgICAgLCBt
X3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogewpAQCAtOTMsNyArOTMsNyBAQCBSZWY8RmV0
Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmVGb3JKUygpCiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFpc0Rpc3R1cmJlZE9yTG9ja2VkKCkp
OwogCi0gICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBOdWxsb3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShoZWFkZXJz
KCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpKSk7CisgICAgYXV0byBjbG9uZSA9IGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzdGQ6
Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9u
c2UobV9yZXNwb25zZSkpKTsKICAgICBjbG9uZS0+Y2xvbmVCb2R5KCp0aGlzKTsKICAgICByZXR1
cm4gY2xvbmU7CiB9CkBAIC0xMDUsOSArMTA1LDkgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRj
aChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QK
ICAgICAvLyBTZXR0aW5nIHBlbmRpbmcgYWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWls
IG9yIGRpZFN1Y2NlZWQgY2FsbGJhY2sgaXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5k
aW5nQWN0aXZpdHkocmVzcG9uc2UucHRyKCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRl
ciA9IEJvZHlMb2FkZXIocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocHJvbWlzZSkpOworICAgIHJl
c3BvbnNlLT5tX2JvZHlMb2FkZXIuZW1wbGFjZShyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShwcm9t
aXNlKSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9ib2R5TG9hZGVyLT5zdGFydChjb250ZXh0LCBy
ZXF1ZXN0KSkKLSAgICAgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IE51bGxvcHQ7CisgICAg
ICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IFN0
cmluZyYgRmV0Y2hSZXNwb25zZTo6dXJsKCkgY29uc3QKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFN1Y2NlZWQoKQogI2VuZGlmCiAKICAgICBp
ZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKQotICAgICAgICBtX3Jlc3BvbnNlLm1fYm9keUxvYWRl
ciA9IE51bGxvcHQ7CisgICAgICAgIG1fcmVzcG9uc2UubV9ib2R5TG9hZGVyID0gc3RkOjpudWxs
b3B0OwogICAgIG1fcmVzcG9uc2UudW5zZXRQZW5kaW5nQWN0aXZpdHkoJm1fcmVzcG9uc2UpOwog
fQogCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRGYWlsKCkKIHsKICAgICBBU1NFUlQobV9yZXNwb25zZS5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7
CiAgICAgaWYgKG1fcHJvbWlzZSkKLSAgICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51
bGxvcHQpLT5yZWplY3QoVHlwZUVycm9yKTsKKyAgICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21p
c2UsIHN0ZDo6bnVsbG9wdCktPnJlamVjdChUeXBlRXJyb3IpOwogCiAjaWYgRU5BQkxFKFJFQURB
QkxFX1NUUkVBTV9BUEkpCiAgICAgaWYgKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJj
ZSkgewpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6
ZGlkRmFpbCgpCiAKICAgICAvLyBDaGVjayB3aGV0aGVyIGRpZEZhaWwgaXMgY2FsbGVkIGFzIHBh
cnQgb2YgRmV0Y2hMb2FkZXI6OnN0YXJ0LgogICAgIGlmIChtX2xvYWRlci0+aXNTdGFydGVkKCkp
Ci0gICAgICAgIG1fcmVzcG9uc2UubV9ib2R5TG9hZGVyID0gTnVsbG9wdDsKKyAgICAgICAgbV9y
ZXNwb25zZS5tX2JvZHlMb2FkZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBtX3Jlc3BvbnNlLnVu
c2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jlc3BvbnNlKTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNvdQogICAgIG1fcmVzcG9uc2UubV9yZXNwb25zZSA9IHJlc291
cmNlUmVzcG9uc2U7CiAgICAgbV9yZXNwb25zZS5tX2hlYWRlcnMtPmZpbHRlckFuZEZpbGwocmVz
b3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJl
c3BvbnNlKTsKIAotICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBOdWxsb3B0KS0+cmVzb2x2
ZShtX3Jlc3BvbnNlKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3RkOjpudWxsb3B0
KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTIw
NCw3ICsyMDQsNyBAQCBib29sIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldAogCiB2b2lkIEZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OnN0b3AoKQogewotICAgIG1fcHJvbWlzZSA9IE51bGxvcHQ7CisgICAg
bV9wcm9taXNlID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChtX2xvYWRlcikKICAgICAgICAgbV9s
b2FkZXItPnN0b3AoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmgKaW5kZXggYWUxZTc0NGU1NGQwYjk0Y2VhOGE0ZDQwMTljYzA0NTg3OGRjZTk0Ny4u
NmE2ZTY3YTJiNTZlMGQ2ZWVmNTc1YzI2YjdiZjAyZGU5OWU4ZTY0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xh
c3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiBwdWJsaWM6
CiAgICAgdXNpbmcgVHlwZSA9IFJlc291cmNlUmVzcG9uc2U6OlR5cGU7CiAKLSAgICBzdGF0aWMg
UmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgTnVsbG9wdCwg
RmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNv
dXJjZVJlc3BvbnNlKCkpKTsgfQorICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RmV0Y2hSZXNwb25zZShjb250ZXh0LCBzdGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRl
KEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0K
ICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVzcG9uc2U+PiByZWRpcmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMp
OwogCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEZldGNoUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMg
RmV0Y2hCb2R5T3duZXIgewogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gISFt
X2JvZHlMb2FkZXI7IH0KIAogcHJpdmF0ZToKLSAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYs
IFJlc291cmNlUmVzcG9uc2UmJik7CisgICAgRmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYs
IFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICBzdGF0aWMgdm9pZCBzdGFydEZldGNoaW5nKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBGZXRjaFByb21pc2Um
Jik7CiAKQEAgLTExNywxMiArMTE3LDEyIEBAIGNsYXNzIEZldGNoUmVzcG9uc2UgZmluYWwgOiBw
dWJsaWMgRmV0Y2hCb2R5T3duZXIgewogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqLCBzaXplX3QpIGZpbmFsOwogCiAgICAgICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9u
c2U7Ci0gICAgICAgIE9wdGlvbmFsPEZldGNoUHJvbWlzZT4gbV9wcm9taXNlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEZldGNoUHJvbWlzZT4gbV9wcm9taXNlOwogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmV0Y2hMb2FkZXI+IG1fbG9hZGVyOwogICAgIH07CiAKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgT3B0aW9uYWw8Qm9keUxvYWRlcj4gbV9ib2R5TG9hZGVyOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Qm9keUxvYWRlcj4gbV9ib2R5TG9hZGVyOwogICAgIG11dGFibGUg
U3RyaW5nIG1fcmVzcG9uc2VVUkw7CiAKICAgICBGZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVy
IHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcAppbmRleCBiYmM3
NmM3ZGQzZDlkMjcwYzQ1ZjBkZTQ4YWRmMDFiNDZlMWViZmZiLi44OTgxZmI1NWUxNTczZGRiZGUw
NWY4ZTNhYTBlZTAyMzVkMWI5ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcApAQCAtMjgsMzEgKzI4LDMxIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8ZG91YmxlPiBDb29yZGluYXRlczo6YWx0aXR1ZGUo
KSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2NhblByb3ZpZGVBbHRpdHVkZSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fYWx0aXR1
ZGU7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmFsdGl0dWRlQWNjdXJhY3ko
KSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3Vy
YWN5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ29vcmRp
bmF0ZXM6OmhlYWRpbmcoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVz
OjpoZWFkaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiBtX2hlYWRpbmc7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OnNwZWVk
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBDb29yZGluYXRlczo6c3BlZWQoKSBjb25z
dAogewogICAgIGlmICghbV9jYW5Qcm92aWRlU3BlZWQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX3NwZWVkOwogfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29y
ZGluYXRlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRl
cy5oCmluZGV4IDgzYmFhYzllN2FhYmJlZGE2NDk5YjFlNjYzN2NhZDk0ZjM0MGM4MmUuLjA4YzMx
M2IxOGE3OTJhNjUzY2Q0N2ZhN2U2YmQ5YWYyNzMwNDY4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmgKQEAgLTQyLDExICs0MiwxMSBA
QCBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5hdGVzPiB7CiAK
ICAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRlOyB9CiAgICAg
ZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgT3B0
aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBhbHRpdHVkZSgpIGNvbnN0OwogICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWNjdXJhY3k7IH0KLSAgICBPcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3koKSBj
b25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGhlYWRpbmcoKSBjb25zdDsKLSAgICBPcHRpb25h
bDxkb3VibGU+IHNwZWVkKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0
dWRlQWNjdXJhY3koKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzcGVlZCgpIGNvbnN0OwogICAgIAog
cHJpdmF0ZToKICAgICBDb29yZGluYXRlcyhkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJh
Y3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFj
eSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3Bl
ZWQsIGRvdWJsZSBzcGVlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwCmluZGV4IGUzYTVhYmRkNDYwZmFhM2QwMWVjMmU0MzY1YTI1ZGM4ZjZkYzc4
ZGQuLmZmMmMyMTk4ZjdkNmE4NDcxODRlMjQ3M2MzYWMyNmJlNTgyMDljODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtNzIsNyArNzIs
NyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgp
CiAgICAgcmV0dXJuIHByZXZ1bmlxdWU7CiB9CiAKLU9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uPiBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbj4g
SURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmlu
ZykKIHsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09IGRpcmVjdGlvbk5leHQoKSkKICAgICAg
ICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0OwpAQCAtODMsNyArODMs
NyBAQCBPcHRpb25hbDxJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbj4gSURCQ3Vyc29yOjpzdHJp
bmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmCiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSBk
aXJlY3Rpb25QcmV2VW5pcXVlKCkpCiAgICAgICAgIHJldHVybiBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbjo6UHJldk5vRHVwbGljYXRlOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRp
cmVjdGlvblRvU3RyaW5nKEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKaW5kZXggZDAxNzZk
ZWI1MTkyMzNmMTY5ZmMwMzRhMDcwYzEwMGY3MDk0ZjNjOS4uY2YyMDI3NGU5ZjcyNzdkMjVlYjhj
MDczOWU1MDBjMzE1OWFjZjUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSURCQ3Vyc29yIDogcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SURCQ3Vyc29yPiwgcHVibGljIEEK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb25QcmV2KCk7CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uUHJldlVuaXF1ZSgpOwogCi0gICAgc3Rh
dGljIE9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPiBzdHJpbmdUb0RpcmVjdGlv
bihjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPiBzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcm
IG1vZGVTdHJpbmcpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblRv
U3RyaW5nKEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1vZGUpOwogICAgIAogICAgIHZpcnR1
YWwgfklEQkN1cnNvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmgKaW5kZXggYzA0NGQ0ZTk5ODk3MzU1NzlhMTZiMzVhNmU3MmRiZWU0NzJjOTVh
Mi4uNDI0NTQ3ZDAxNzlhMTc4MzFjZDVhYjI4ZjA5ZTJlNzQ0MGI0ZDYwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01OCw3ICs1OCw3
IEBAIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRh
dGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRl
cnMgewotICAgICAgICBPcHRpb25hbDxJREJLZXlQYXRoPiBrZXlQYXRoOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVu
dDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDljZmY3YTJjZWRkN2E2ZDc4OTg0OWFj
ZTJiMThiN2Q0NmRlMzE5MDYuLmRkOWYxNGZmYTE0OTM2MTFkMDE2NjFiY2E3YTdmODg5Mjk3YWJk
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIElEQkRhdGFiYXNl
SWRlbnRpZmllciB7CiAgICAgICAgIHVuc2lnbmVkIG1haW5GcmFtZVByb3RvY29sSGFzaCA9IFN0
cmluZ0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmlnaW4ucHJvdG9jb2wpOwogICAgICAgICB1bnNp
Z25lZCBtYWluRnJhbWVIb3N0SGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmln
aW4uaG9zdCk7CiAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5h
bWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3BlbmluZ09y
aWdpbi5wb3J0LnZhbHVlT3IoMCksIG1haW5GcmFtZVByb3RvY29sSGFzaCwgbWFpbkZyYW1lSG9z
dEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQudmFsdWVPcigwKSB9OworICAgICAgICB1bnNp
Z25lZCBoYXNoQ29kZXNbN10gPSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVu
aW5nSG9zdEhhc2gsIG1fb3BlbmluZ09yaWdpbi5wb3J0LnZhbHVlX29yKDApLCBtYWluRnJhbWVQ
cm90b2NvbEhhc2gsIG1haW5GcmFtZUhvc3RIYXNoLCBtX21haW5GcmFtZU9yaWdpbi5wb3J0LnZh
bHVlX29yKDApIH07CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6
ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDFjNDQwYjhhNjZjYTZkYzA1
MGQxMmNjMTE5NjVhNjgxMDYyNjhlOTkuLjc4YzE4OGI1MjAxMDdiODFmYzAwNTQ1ZTIyZGQ3ZTI1
MjE0Njc1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCkBAIC03NiwxNCArNzYsMTQgQEAgSURCRmFjdG9yeTo6fklEQkZhY3RvcnkoKQog
ewogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9w
ZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBP
cHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbikKK0V4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1
ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZlcnNpb24pCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQkZhY3Rvcnk6Om9wZW4iKTsKICAgICAKICAgICBpZiAodmVy
c2lvbiAmJiAhdmVyc2lvbi52YWx1ZSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCBBU0NJSUxpdGVyYWwoIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCB3aXRoIGEgdmVy
c2lvbiBvZiAwIikgfTsKIAotICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwg
dmVyc2lvbi52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5h
bWUsIHZlcnNpb24udmFsdWVfb3IoMCkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRC
UmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4
IDI3MjY3NDM3NjY5ZWIwNTBlMGI0MDU3NTJkMGM4NzIzMDQ4ODBiMzAuLjczNGYyMGMwZWIyNGEw
YWRlODQ2MjVhMTk3OTQ3ZmFhMmMzZDkyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSURCRmFjdG9y
eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJGYWN0b3J5PiB7CiAgICAgc3RhdGlj
IFJlZjxJREJGYWN0b3J5PiBjcmVhdGUoSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmKTsK
ICAgICB+SURCRmFjdG9yeSgpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVl
c3Q+PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9w
dGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRC
UmVxdWVzdD4+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbik7CiAgICAgRXhjZXB0aW9uT3I8UmVm
PElEQk9wZW5EQlJlcXVlc3Q+PiBkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIEV4Y2VwdGlvbk9yPHNob3J0PiBjbXAoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZmlyc3QsIEpTQzo6SlNWYWx1ZSBzZWNvbmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IDUy
N2JiYTlmMmIwMzY4ZWZiZDQ5OTMyNzgwM2NjNjk4ODZmNzRkZTAuLjZhMDhjZDk0NGY5YmYyZmMx
ZWE3NTljOTEzNjlhNzM1MWU4YTVhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEtleShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29u
c3QgSURCSwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0S2V5KGV4ZWNTdGF0ZSwg
KnRoaXMsIHJhbmdlKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRl
eDo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdl
LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5n
ZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQogewogICAgIExPRyhJbmRl
eGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgp
KTsKQEAgLTMzNSw3ICszMzUsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQklu
ZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZQogICAgIHJldHVy
biBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3Jkcyhl
eGVjU3RhdGUsICp0aGlzLCByYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1
ZXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6
Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxs
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQpCiB7CiAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhl
Y1N0YXRlLCBrZXkpOwogICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzQ0
LDcgKzM0NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFs
bChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksCiAgICAgcmV0dXJuIGdldEFsbChl
eGVjU3RhdGUsIG9ubHlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNvdW50KTsKIH0KIAot
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgT3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxs
S2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQklu
ZGV4OjpnZXRBbGxLZXlzIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTM1
OCw3ICszNTgsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRB
bGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SQogICAgIHJldHVybiBtX29iamVj
dFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUs
ICp0aGlzLCByYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7
CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMo
RXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpCiB7CiAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0
YXRlLCBrZXkpOwogICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggMGViMWI5ZTRjMDJiNzkx
MGI5NTIyOTRkMGJlZWFmNWZmMmVlYWVkNy4uZWQ4Y2Q2NWM5YjVhODc5Y2E2OTljOWQ2MDMyMTdh
OTU4NjNiNWUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5oCkBAIC03MCwxMCArNzAsMTAgQEAgY2xhc3MgSURCSW5kZXggZmluYWwgOiBwcml2YXRlIEFj
dGl2ZURPTU9iamVjdCB7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXko
SlNDOjpFeGVjU3RhdGUmLCBJREJLZXlSYW5nZSopOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZ2V0S2V5KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKLSAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIFJl
ZlB0cjxJREJLZXlSYW5nZT4sIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5n
ZT4sIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgT3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdl
dEFsbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtl
eXMoSlNDOjpFeGVjU3RhdGUmLCBSZWZQdHI8SURCS2V5UmFuZ2U+LCBzdGQ6Om9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxL
ZXlzKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQpOwogCiAgICAgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmZvOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGguaAppbmRleCBlNmZhYTE5NTZjOTM2MzdiZmM2YzEyMmUwMDhiYjkxYzc1OTllMGM3
Li43YzNmMDIxNmUwNGNkNzI5YjVhYjZjODVhYzQyYWI1NWExZjkyNWRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oCkBAIC00NSw3ICs0NSw3IEBA
IGVudW0gY2xhc3MgSURCS2V5UGF0aFBhcnNlRXJyb3IgewogCiB2b2lkIElEQlBhcnNlS2V5UGF0
aChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYsIElEQktleVBhdGhQYXJzZUVycm9yJik7
CiBJREJLZXlQYXRoIGlzb2xhdGVkQ29weShjb25zdCBJREJLZXlQYXRoJik7Ci1pbmxpbmUgT3B0
aW9uYWw8SURCS2V5UGF0aD4gaXNvbGF0ZWRDb3B5KGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+
JiB2YXJpYW50KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gaXNvbGF0ZWRDb3B5
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIHZhcmlhbnQpCiB7CiAgICAgaWYgKCF2
YXJpYW50KQogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDRmOWM0OTU2YmZmYmVkYjM0
N2EyOGI2ODIzYmFlZjI4YTcwMDk1MDMuLmY1Njg0ZThmMTIxMGI1ZmM0OGM5NmY5MzhlMzIxYjZj
NjdjN2RmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJ
REJPYmplY3RTdG9yZTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIElEQk9iamVjdFN0b3JlOjprZXlQ
YXRoKCkgY29uc3QKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIElEQk9iamVjdFN0
b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
dHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKICAgICByZXR1cm4gbV9p
bmZvLmtleVBhdGgoKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVx
dWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0NvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25z
dAogICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJlcXVlc3RDb3VudChleGVjU3RhdGUsICp0aGlz
LCByYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiByYW5n
ZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURC
S2V5UmFuZ2U+IHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmdldEFsbCIpOwogICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkp
OwpAQCAtNTU1LDcgKzU1NSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2Jq
ZWN0U3RvcmU6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyCiAgICAgcmV0dXJu
IG1fdHJhbnNhY3Rpb24ucmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhleGVjU3RhdGUs
ICp0aGlzLCByYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMsIGNvdW50
KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0
QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0
QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQpCiB7CiAgICAgYXV0byBvbmx5UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHko
ZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChvbmx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAt
NTY0LDcgKzU2NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3Rv
cmU6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1CiAgICAgcmV0dXJuIGdldEFs
bChleGVjU3RhdGUsIG9ubHlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNvdW50KTsKIH0K
IAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5
cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgT3B0aW9u
YWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJh
bmdlPiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRBbGxLZXlzIik7CiAgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7
CkBAIC01NzgsNyArNTc4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmpl
Y3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmUKICAgICByZXR1cm4g
bV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGV4ZWNTdGF0ZSwg
KnRoaXMsIHJhbmdlLmdldCgpLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsK
IH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxs
S2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90
PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6Omdl
dEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6
b25seShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aAppbmRleCA2NDA2OTNkMDk3ZGE1MjhiZDZiZTkwZTg1ZWUzNzQ3ZmFiODMxMWU0Li4wODE3MDBi
MTI3ODc2YjBlNDhhNjlmYTA2MjNlYTQ4NzUwZDVjMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTYxLDcgKzYxLDcgQEAg
Y2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIAog
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dE5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtl
eVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQ
YXRoKCkgY29uc3Q7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25z
dDsKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNy
ZW1lbnQoKSBjb25zdDsKQEAgLTg3LDEwICs4NywxMCBAQCBjbGFzcyBJREJPYmplY3RTdG9yZSBm
aW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRl
bGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBjb3VudChKU0M6OkV4ZWNTdGF0ZSYsIElEQktleVJhbmdlKik7CiAgICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBjb3VudChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhl
Y1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
LSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRy
PElEQktleVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0
Pj4gZ2V0QWxsS2V5cyhKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBzdGQ6Om9w
dGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CiAKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IHB1dEZvckN1cnNvclVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSlND
OjpKU1ZhbHVlIGtleSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAzOGRlY2Q1M2I5YWIwODEyZWI4MDlmNWZiYjNi
NmJkYTFlYzhiMDFhLi5iODMyNmFmZDMyMzA0NjEyNmE0MzUzZTU0NDk3YWIwYmUxOTU3NzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0
ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3UKICAgICBy
ZXF1ZXN0LmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJS
ZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRB
bGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6OkdldEFsbFR5cGUgZ2V0QWxsVHlwZSwgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzIik7CiAgICAgQVNTRVJUKGlz
QWN0aXZlKCkpOwpAQCAtNzc0LDcgKzc3NCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgm
IGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlIGdldEFsbFR5cGUsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJS
ZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBr
ZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aAppbmRleCA1NmEyYWU4MDgxNjU1YzE4NDY4OTE1MzFkYmU4NjM4ODdhNzVhNjg2Li5mZjE4ZDg5
MTU2NDQyNWEyZmZlZmQ2OGVhODRlZThiNzBkNTUxZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTExNSw4ICsxMTUsOCBA
QCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJU
cmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RQ
dXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJiwgSURCS2V5KiwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwog
ICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0UmVjb3JkKEpTQzo6RXhlY1N0YXRlJiwgSURC
T2JqZWN0U3RvcmUmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7Ci0gICAgUmVmPElEQlJlcXVl
c3Q+IHJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpFeGVjU3RhdGUmLCBJREJP
YmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlw
ZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVz
dEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYsIElEQkluZGV4JiwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4g
Y291bnQpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNv
cmRzKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4
ZWNTdGF0ZSYsIElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpH
ZXRBbGxUeXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CiAgICAgUmVmPElEQlJl
cXVlc3Q+IHJlcXVlc3REZWxldGVSZWNvcmQoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9y
ZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0
Q2xlYXJPYmplY3RTdG9yZShKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJik7CiAgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0
b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAppbmRleCAz
MDc0MjAwZTc2ZDI1ZjY5MjJjYjNlZmVmNDU0YmUwNmY4NDg4NGI4Li5lODRhNzMzYzJlNWY3YjJh
OGYyMzc2NTY5MmUyMjVhNjk5MDZhZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXMKICAgICBpZiAobmV3VmVyc2lvbikKICAg
ICAgICAgbV9uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjsKICAgICBlbHNlCi0gICAgICAgIG1fbmV3
VmVyc2lvbiA9IE51bGxvcHQ7CisgICAgICAgIG1fbmV3VmVyc2lvbiA9IHN0ZDo6bnVsbG9wdDsK
IH0KIAogSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBJbml0JiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaAppbmRleCBlOTIxOGViYTE2MjYwOTIxOTQwMDhkZTAyMTg1YzBiMzgw
NjM0MGNmLi4wODAxNzIwYmMyYjhiZDdkYmVmOWQ1NjViZGNiNzRiMTRlZGFkNTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQg
ZmluYWwgOiBwdWJsaWMgRXZlbnQgewogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewog
ICAgICAgICB1aW50NjRfdCBvbGRWZXJzaW9uIHsgMCB9OwotICAgICAgICBPcHRpb25hbDx1aW50
NjRfdD4gbmV3VmVyc2lvbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3VmVy
c2lvbjsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNy
ZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJ
c1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVkOjpObykKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgSURCVmVyc2lvbkNoYW5nZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKICAgICBib29s
IGlzVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdWludDY0X3Qgb2xkVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2xkVmVyc2lvbjsgfQot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdW
ZXJzaW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbmV3VmVyc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbmV3VmVyc2lvbjsgfQogCiBwcml2YXRlOgogICAgIElEQlZlcnNpb25DaGFu
Z2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSk7CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VF
dmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIg
bV9yZXF1ZXN0SWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBtX29sZFZlcnNpb247Ci0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IG1fbmV3VmVyc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBtX25ld1ZlcnNpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5jcHAKaW5kZXggMWEzMTBiOTNiYjhlODBhNGUyNzczMTAzMWNmNDg3YzBmYmRhYmU5
NS4uODJkOTBlY2FkMTZmNTI0N2ExOTU3NDA2Mzk1OThlZmZmNTkwODQ3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJp
YWxpemF0aW9uLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVu
dW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0
aD4mIGtleVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNv
ZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTU2LDcgKzU2LDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQ
YXRoPiYga2V5UGF0aCkKICAgICByZXR1cm4gZW5jb2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKIH0K
IAotYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUsIE9wdGlvbmFsPElEQktleVBhdGg+JiByZXN1bHQpCitib29sIGRlc2VyaWFsaXplSURC
S2V5UGF0aChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc3RkOjpvcHRpb25hbDxJ
REJLZXlQYXRoPiYgcmVzdWx0KQogewogICAgIGlmICghZGF0YSB8fCAhc2l6ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggNTk3MjAzZWJiNjBmMjBmZGM5
NjkzMmY1N2UyNTI0YmZmNzMyMWIyYy4uMDk0ZmJjNmVjZTVjMDIzZjRkODI2N2FkMzA0MTI4ZmRh
NWI4M2Y2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYpOwotYm9vbCBk
ZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSwgT3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworYm9vbCBk
ZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogCiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElE
QktleURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCmluZGV4IDMwN2M3YTEyMTcyOWM3YjRiZGU1ZThlNTFh
NWZmZGZkYzdkZjY2MjYuLmU5MmQyNjgwMTBkNTQyMGRhNTMyNmZmZGVlYmM4NTcxMjQxNmYwNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUluZGV4LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHVpbnQ2NF90IE1lbW9yeUluZGV4
Ojpjb3VudEZvcktleVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYgaW5SYW5nZSkKICAgICBy
ZXR1cm4gY291bnQ7CiB9CiAKLXZvaWQgTWVtb3J5SW5kZXg6OmdldEFsbFJlY29yZHMoY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwg
SW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJlc3VsdCYgcmVzdWx0KSBjb25z
dAordm9pZCBNZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6
R2V0QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiTWVtb3J5SW5kZXg6OmdldEFsbFJlY29yZHMiKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaApp
bmRleCA4NDc1OTg0NzUyOWY2YzViNzAzZGRlMjdmNzA3MDNlNGYwNTg1OTJiLi41YmY5Y2JhODkz
YTQ3Y2IyZjBjMThhZGFkYjEzMzY4NDBlN2RhMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaApAQCAtNjgsNyArNjgs
NyBAQCBjbGFzcyBNZW1vcnlJbmRleCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lbW9yeUluZGV4PiB7
CiAKICAgICBJREJHZXRSZXN1bHQgZ2V0UmVzdWx0Rm9yS2V5UmFuZ2UoSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGNvbnN0OwogICAgIHVpbnQ2NF90
IGNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBnZXRB
bGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKKyAgICB2
b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgSURCR2V0QWxsUmVzdWx0Jikg
Y29uc3Q7CiAKICAgICBJREJFcnJvciBwdXRJbmRleEtleShjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgSW5kZXhLZXkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZmE0NGI3YmFh
YjQ2YTNiNjY1YzQzMTZmZmUyZDAzMDJmM2VkZDRiNS4uMzRiNGUxMjlhZDY2YWE1MDIwMmFiZGZl
OThlZGViMjkwYzc1NTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC00MDgsNyAr
NDA4LDcgQEAgVGhyZWFkU2FmZURhdGFCdWZmZXIgTWVtb3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9y
S2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJgogICAgIHJldHVybiBtX2tleVZhbHVlU3Rv
cmUtPmdldChrZXkpOwogfQogCi12b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpnZXRBbGxSZWNvcmRz
KGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBPcHRpb25hbDx1aW50MzJfdD4g
Y291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3Vs
dCkgY29uc3QKK3ZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50
LCBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIGNv
bnN0CiB7CiAgICAgcmVzdWx0ID0geyB0eXBlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5k
ZXggNjIwOTg2MTlmOWIwZGU5ZjJmNmY1MmRjN2M5YTE2NzQ4YTNlYWFhYy4uZTYxYTBlZTk4MjBj
MTM3NGZmNWIxNTg5Y2I0NDIwNjliMmIzYzgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAg
LTg4LDcgKzg4LDcgQEAgY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNZW1vcnlPYmplY3RTdG9yZT4gewogICAgIElEQkdldFJlc3VsdCBpbmRleFZhbHVlRm9yS2V5
UmFuZ2UodWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAgICAgdWludDY0X3QgY291bnRGb3JL
ZXlSYW5nZSh1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYp
IGNvbnN0OwogCi0gICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRB
bGxSZXN1bHQmKSBjb25zdDsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxs
VHlwZSwgSURCR2V0QWxsUmVzdWx0JikgY29uc3Q7CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZUN1cnNvci5jcHAKaW5kZXggOGFiNzc0M2I0MDQ2ZjJhNzQ1ZjdkYzU5MDhhMmFj
YmY4NTQwNTQwMS4uZDk1ZWZlNmE5OTJjM2E0MGEyMTQ1NTJkNzU3YTNjOWRkM2U0NGNjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIE1l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpNZW1vcnlPYmplY3RTdG9yZUN1cnNvcihNZW1vcnlPYmpl
Y3RTdG9yZSYgb2JqZWN0U3RvcmUsCiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9i
amVjdFN0b3JlQ2xlYXJlZCgpCiB7Ci0gICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgbV9p
dGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNv
cjo6a2V5RGVsZXRlZChjb25zdCBJREJLZXlEYXRhJiBrZXkpCkBAIC01OSw3ICs1OSw3IEBAIHZv
aWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmtleURlbGV0ZWQoY29uc3QgSURCS2V5RGF0YSYg
a2V5KQogICAgIGlmIChtX2N1cnJlbnRQb3NpdGlvbktleSAhPSBrZXkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmtleUFkZGVkKHN0ZDo6
c2V0PElEQktleURhdGE+OjppdGVyYXRvciBpdGVyYXRvcikKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5QWRkZWQoc3RkOjpzZXQ8SURCS2V5RGF0YT46
Oml0ZXJhdG9yIGl0ZXJhdG9yKQogCiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRG
aXJzdEluUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldCkKIHsKLSAgICBt
X2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKG1faW5mby5pc0RpcmVjdGlvbkZvcndhcmQoKSkgewogICAgICAgICBzZXRGb3J3YXJk
SXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2Uoc2V0KTsKQEAgLTk1LDE5ICs5NSwxOSBAQCB2b2lk
IE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGaXJzdEluUmVtYWluaW5nUmFuZ2Uoc3RkOjpz
ZXQ8SURCS2V5RGF0YT4mIHNldAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rm9y
d2FyZEl0ZXJhdG9yRnJvbVJlbWFpbmluZ1JhbmdlKHN0ZDo6c2V0PElEQktleURhdGE+JiBzZXQp
CiB7CiAgICAgaWYgKCFzZXQuc2l6ZSgpKSB7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0
OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFuZ2UuaXNFeGFjdGx5T25lS2V5KCkpIHsKICAg
ICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1fcmVtYWluaW5nUmFuZ2UubG93ZXJLZXkpOwog
ICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmVuZCgpKQotICAgICAgICAgICAgbV9pdGVy
YXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAg
ICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBsb3dlc3QgPSBzZXQubG93
ZXJfYm91bmQobV9yZW1haW5pbmdSYW5nZS5sb3dlcktleSk7CiAgICAgaWYgKGxvd2VzdCA9PSBz
ZXQuZW5kKCkpCkBAIC0xMzMsMTQgKzEzMywxNCBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yOjpzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCSwog
dm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0UmV2ZXJzZUl0ZXJhdG9yRnJvbVJlbWFp
bmluZ1JhbmdlKHN0ZDo6c2V0PElEQktleURhdGE+JiBzZXQpCiB7CiAgICAgaWYgKCFzZXQuc2l6
ZSgpKSB7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9y
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVt
YWluaW5nUmFuZ2UuaXNFeGFjdGx5T25lS2V5KCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNl
dC5maW5kKG1fcmVtYWluaW5nUmFuZ2UubG93ZXJLZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0
b3IgPT0gc2V0LmVuZCgpKQotICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNDgsMTIgKzE0OCwxMiBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpz
ZXRSZXZlcnNlSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCSwogICAgIGlm
ICghbV9yZW1haW5pbmdSYW5nZS51cHBlcktleS5pc1ZhbGlkKCkpIHsKICAgICAgICAgbV9pdGVy
YXRvciA9IC0tc2V0LmVuZCgpOwogICAgICAgICBpZiAoIW1fcmVtYWluaW5nUmFuZ2UuY29udGFp
bnNLZXkoKiptX2l0ZXJhdG9yKSkKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0Owor
ICAgICAgICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgaXMgb25lIHJlY29yZCBwYXN0IHRoZSBhY3R1YWwg
a2V5IHdlJ3JlIGxvb2tpbmcgZm9yLgogICAgIGF1dG8gaGlnaGVzdCA9IHNldC51cHBlcl9ib3Vu
ZChtX3JlbWFpbmluZ1JhbmdlLnVwcGVyS2V5KTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIE1l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRGb3J3YXJkSXRlcmF0b3Ioc3RkOjpzZXQ8
SURCS2V5RGF0YT4mIHNldAogICAgICAgICArKyptX2l0ZXJhdG9yOwogCiAgICAgICAgIGlmICgq
bV9pdGVyYXRvciA9PSBzZXQuZW5kKCkgfHwgIW1faW5mby5yYW5nZSgpLmNvbnRhaW5zS2V5KCoq
bV9pdGVyYXRvcikpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAg
ICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3Jl
Q3Vyc29yOjppbmNyZW1lbnRSZXZlcnNlSXRlcmF0b3Ioc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNl
dAogCiAgICAgd2hpbGUgKGNvdW50KSB7CiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQu
YmVnaW4oKSkgewotICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgICAg
ICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpp
bmNyZW1lbnRSZXZlcnNlSXRlcmF0b3Ioc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAogICAgICAg
ICAtLSptX2l0ZXJhdG9yOwogCiAgICAgICAgIGlmICghbV9pbmZvLnJhbmdlKCkuY29udGFpbnNL
ZXkoKiptX2l0ZXJhdG9yKSkgewotICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7Cisg
ICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaAppbmRl
eCBlMzQ1NTU3N2NhNTczODAwNmUwZTBkOTkxNDczNGU0NWFiMTFkYzcxLi42MzNmMWU2NmNmZjdl
Yzg1NWU5MDllOWYzMjJiMGYyZmJmMDRhZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3IuaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZUN1cnNvciA6
IHB1YmxpYyBNZW1vcnlDdXJzb3IgewogCiAgICAgSURCS2V5UmFuZ2VEYXRhIG1fcmVtYWluaW5n
UmFuZ2U7CiAKLSAgICBXVEY6Ok9wdGlvbmFsPHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVyYXRv
cj4gbV9pdGVyYXRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6c2V0PElEQktleURhdGE+Ojpp
dGVyYXRvcj4gbV9pdGVyYXRvcjsKIAogICAgIElEQktleURhdGEgbV9jdXJyZW50UG9zaXRpb25L
ZXk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBhMmNjY2FkYzc5
ZDllNTA1MmM5MTU1MjYwNDhmY2UwZDA2ZDQ0N2VhLi40NjFiOWM5ZjhjMWU0ZWU5YzY2ODY5MjUz
MGNiOGQ4ZDk1NjAwMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAt
NjAyLDcgKzYwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgICAgICAgICBWZWN0
b3I8Y2hhcj4ga2V5UGF0aEJ1ZmZlcjsKICAgICAgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNW
ZWN0b3IoMiwga2V5UGF0aEJ1ZmZlcik7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPElEQktleVBh
dGg+IG9iamVjdFN0b3JlS2V5UGF0aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5
UGF0aD4gb2JqZWN0U3RvcmVLZXlQYXRoOwogICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlE
QktleVBhdGgocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oa2V5UGF0aEJ1ZmZlci5k
YXRhKCkpLCBrZXlQYXRoQnVmZmVyLnNpemUoKSwgb2JqZWN0U3RvcmVLZXlQYXRoKSkgewogICAg
ICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4dHJhY3Qga2V5IHBhdGggZnJvbSBk
YXRhYmFzZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjM1LDcgKzYz
NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4g
a2V5UGF0aEJ1ZmZlcjsKICAgICAgICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMywg
a2V5UGF0aEJ1ZmZlcik7CiAKLSAgICAgICAgICAgIE9wdGlvbmFsPElEQktleVBhdGg+IGluZGV4
S2V5UGF0aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQ
YXRoOwogICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oa2V5UGF0aEJ1ZmZlci5kYXRhKCkpLCBrZXlQYXRoQnVmZmVy
LnNpemUoKSwgaW5kZXhLZXlQYXRoKSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGV4dHJhY3Qga2V5IHBhdGggZnJvbSBkYXRhYmFzZSIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcAppbmRleCBmOTg1NzE3MjlmZDY2
YzZhNDM3NGFkMmE5OTZkZjZjNGY2NzEzN2M3Li5lNWRmMTVjNDRhYmJlMjQ2NGY0ZmVlZWZkOThk
YWI3OGQ5YjNhZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcApAQCAtNjYsNyArNjYsNyBAQCBi
b29sIElEQkRhdGFiYXNlSW5mbzo6aGFzT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSURCT2JqZWN0U3RvcmVJbmZvIElEQkRhdGFi
YXNlSW5mbzo6Y3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25h
bDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0
b3JlSW5mbyBJREJEYXRhYmFzZUluZm86OmNyZWF0ZU5ld09iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCkKIHsKICAgICBJREJPYmplY3RTdG9yZUluZm8gaW5mbygrK21fbWF4T2JqZWN0U3Rv
cmVJRCwgbmFtZSwgV1RGTW92ZShrZXlQYXRoKSwgYXV0b0luY3JlbWVudCk7CiAgICAgbV9vYmpl
Y3RTdG9yZU1hcC5zZXQoaW5mby5pZGVudGlmaWVyKCksIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5o
CmluZGV4IDUzZGYwNWE0Zjg0MzNjZjRiMDg2MGExNGUzMzVjYTVlZTljOWUwMjMuLmRiOGZmMmM3
Nzk4YjQ1MGNjYmI2NmFjNmIwZmMzOGVlNWM5YTBlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VJbmZvIHsKICAgICB1aW50NjRfdCB2ZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAKICAgICBib29sIGhhc09iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgSURCT2JqZWN0U3RvcmVJbmZvIGNy
ZWF0ZU5ld09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgT3B0aW9uYWw8SURCS2V5UGF0
aD4mJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUluZm8gY3JlYXRl
TmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+JiYsIGJvb2wgYXV0b0luY3JlbWVudCk7CiAgICAgdm9pZCBhZGRFeGlzdGluZ09iamVjdFN0
b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOwogICAgIElEQk9iamVjdFN0b3JlSW5mbyog
aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKICAgICBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJHZXRBbGxSZWNvcmRzRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgK
aW5kZXggZjk3ZjMzMmZlNWE2YjUwNzBlMThkODA2MjgxNzc0NGUwMmE0OTQ0Ni4uMTE2MzQ4MzVj
YTJmMmUwZTg5NDVjYmM5YWE5MzJlNTQ2Yjc3NDc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNE
YXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBHZXRBbGxUeXBlOwogc3RydWN0IElE
QkdldEFsbFJlY29yZHNEYXRhIHsKICAgICBJREJLZXlSYW5nZURhdGEga2V5UmFuZ2VEYXRhOwog
ICAgIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlOwotICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudDsKICAgICB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXI7CiAgICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCT2JqZWN0U3RvcmVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCmluZGV4IDY4MjBhOWZmYWJiN2NhMWRlMGQ0
ZWYxZDU0MWYxZTY5NjUyNjBkYmQuLmFjZGVhMWUzM2E1YTFlNzI4YjlmODZkYzZjZGI0MjdiOTAx
NjhhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCkBAIC0zNSw3ICszNSw3IEBAIElE
Qk9iamVjdFN0b3JlSW5mbzo6SURCT2JqZWN0U3RvcmVJbmZvKCkKIHsKIH0KIAotSURCT2JqZWN0
U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8odWludDY0X3QgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCkKK0lEQk9iamVjdFN0b3JlSW5mbzo6SURCT2JqZWN0U3RvcmVJbmZvKHVpbnQ2NF90
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2tleVBhdGgoV1RGTW92ZShrZXlQ
YXRoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJPYmplY3RTdG9yZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaAppbmRleCA1NmUyNGMwMWMyMmQ5MTIyMDg4NDRk
NmNkMmYzYTViNDg0ZDVkYjM1Li5kNzIwNWYyYTBjNDNhZjJiMzUyZmZmODVmMGVjMjU4Yzk4ODA5
ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCT2JqZWN0U3RvcmVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5oCkBAIC0zNywxMSArMzcsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvIHsKIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBJREJPYmplY3RTdG9yZUluZm8oKTsKLSAgICBJREJPYmplY3RTdG9yZUlu
Zm8odWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJL
ZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlSW5mbyh1
aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8SURC
S2V5UGF0aD4mJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQ
YXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQorICAgIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBh
dGg7IH0KICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2F1dG9JbmNy
ZW1lbnQ7IH0KICAgICB1aW50NjRfdCBtYXhJbmRleElEKCkgY29uc3QgeyByZXR1cm4gbV9tYXhJ
bmRleElEOyB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvIHsK
IHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OwogICAgIFN0cmluZyBt
X25hbWU7Ci0gICAgT3B0aW9uYWw8SURCS2V5UGF0aD4gbV9rZXlQYXRoOworICAgIHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4gbV9rZXlQYXRoOwogICAgIGJvb2wgbV9hdXRvSW5jcmVtZW50IHsg
ZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX21heEluZGV4SUQgeyAwIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hv
c3QuY3BwCmluZGV4IDA0MjBkNzIzOThkMTE0MmM1YmI1YWZiYTk1NmYxOWVkODhmZjdlZTYuLmU4
NDc0MjVjZWY2MzQ3Y2ZiNzgzY2E1NGFkNzA0Y2NmMjM4NGJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IE1lZGlh
Q29udHJvbHNIb3N0Ojpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KEF1ZGlvVHJhY2tMCiAgICAgcmV0
dXJuIHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCkuc29ydGVkVHJhY2tMaXN0Rm9y
TWVudSgmdHJhY2tMaXN0KTsKIH0KIAotU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5
TmFtZUZvclRyYWNrKGNvbnN0IE9wdGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+JiB0cmFjaykKK1N0
cmluZyBNZWRpYUNvbnRyb2xzSG9zdDo6ZGlzcGxheU5hbWVGb3JUcmFjayhjb25zdCBzdGQ6Om9w
dGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+JiB0cmFjaykKIHsKICAgICBpZiAoIXRyYWNrKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKaW5kZXggNTA1MzgyMjE5
MDhlNGJhYWYyNTVlM2JkYWIzZjNkYmY0MTVkNjJjYi4uNDRkZGRkNGU0NDI0ZmQ1ZWI2NGQzYzI4
ODc4NmNjMjU5NGJkOWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xh
c3MgTWVkaWFDb250cm9sc0hvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUNvbnRyb2xzSG9z
dD4gewogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1l
bnUoQXVkaW9UcmFja0xpc3QmKTsKIAogICAgIHVzaW5nIFRleHRPckF1ZGlvVHJhY2sgPSBXVEY6
OlZhcmlhbnQ8UmVmUHRyPFRleHRUcmFjaz4sIFJlZlB0cjxBdWRpb1RyYWNrPj47Ci0gICAgU3Ry
aW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soY29uc3QgT3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4m
KTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRl
eHRPckF1ZGlvVHJhY2s+Jik7CiAKICAgICBUZXh0VHJhY2sqIGNhcHRpb25NZW51T2ZmSXRlbSgp
OwogICAgIFRleHRUcmFjayogY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDhm
MTQ1ODczY2E1ZTVhZDdlNjlhNmMwODkxYjI2YjVmODg4Y2QyY2YuLjU5NTJiZDkzZTU3OTI5YjA0
NDgwZWZmOGQ2MGFhZTk5OWY3MDNmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0YXRlKQogICAg
IG9uUmVhZHlTdGF0ZUNoYW5nZShvbGRTdGF0ZSwgc3RhdGUpOwogfQogCi1FeGNlcHRpb25Pcjx2
b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4g
ZXJyb3IpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oc3RkOjpv
cHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKIHsKICAgICAvLyAyLjIgaHR0cHM6Ly9k
dmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLmh0bWwjd2lkbC1NZWRpYVNvdXJjZS1lbmRPZlN0cmVhbS12b2lkLUVuZE9mU3RyZWFt
RXJyb3ItZXJyb3IKICAgICAvLyAxLiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90
IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJvdyBhbgpAQCAtNTYxLDcgKzU2MSw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjplbmRPZlN0cmVhbShPcHRpb25hbDxFbmRPZlN0
cmVhbUVycm9yPiBlcnJvcikKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIE1lZGlhU291cmNl
OjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikK
K3ZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKHN0ZDo6b3B0aW9uYWw8RW5k
T2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiB7CiAgICAgTE9HKE1lZGlhU291cmNlLCAiTWVkaWFTb3Vy
Y2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKCVwKSIsIHRoaXMpOwogICAgIGlmIChpc0Nsb3NlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5o
CmluZGV4IDVhNTMyMGIzNWY1YWEyNjA4NjE4NzcyNTA1MzQ1ZWI4MGU3ZDRhYTcuLjU0OTMxOWYx
MjlkZDA4ZTYxM2E3ZjllOWU2M2IzNDY4YjFmNzJkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xh
c3MgTWVkaWFTb3VyY2UgZmluYWwgOiBwdWJsaWMgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWMKICAgICB2b2lkIHNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2
ZVN0YXRlKFNvdXJjZUJ1ZmZlciYsIGJvb2wpOwogCiAgICAgZW51bSBjbGFzcyBFbmRPZlN0cmVh
bUVycm9yIHsgTmV0d29yaywgRGVjb2RlIH07Ci0gICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJv
cihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPik7CisgICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhF
cnJvcihzdGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKIAogICAgIE1lZGlhVGltZSBk
dXJhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1l
ZGlhVGltZSYpIGZpbmFsOwpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBNZWRpYVNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmpl
YwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldER1cmF0aW9uSW50ZXJuYWwoY29uc3QgTWVkaWFU
aW1lJik7CiAgICAgTWVkaWFUaW1lIGN1cnJlbnRUaW1lKCkgY29uc3Q7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9Ci0g
ICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5kT2ZTdHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJv
cj4pOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuZE9mU3RyZWFtKHN0ZDo6b3B0aW9uYWw8RW5k
T2ZTdHJlYW1FcnJvcj4pOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCA5OGNlOTAy
YTgzYmE2MmIxZjU4N2VlM2Q2ODQxNGI0NTY0YTYzM2U3Li43MWUwZDk3YjkyMTQzMzFhZmMyNTcy
ZjMwMmMyYWYyMjhkMGY3ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaApAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNz
IE1lZGlhU3RyZWFtVHJhY2sgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRy
YWNrPiwgcHVibGljIEFjdGl2CiAgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3By
aXZhdGU7CiAKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAg
ICBPcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+PiBtX3Byb21pc2U7CisgICAgc3RkOjpvcHRpb25h
bDxET01Qcm9taXNlPHZvaWQ+PiBtX3Byb21pc2U7CiAgICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFT
dHJlYW1UcmFjaz4gbV93ZWFrUHRyRmFjdG9yeTsKIAogICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggYjY2YmE2ZTVhNTFjMWFlMWUzZDNlZGIw
N2QwYjEyODg3ODVjMDNlNy4uMTQ0Njg3OTg2M2ZkNGIwNzhhYzY0YzA5MGE2YzBiM2M3ZWI1MGIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lkIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2RwKQogCiAg
ICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKICAgICBtX29mZmVyQW5zd2VyUHJvbWlz
ZS0+cmVzb2x2ZShSVENTZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShSVENTZXNzaW9uRGVzY3Jp
cHRpb246OlNkcFR5cGU6Ok9mZmVyLCBXVEZNb3ZlKHNkcCkpKTsKLSAgICBtX29mZmVyQW5zd2Vy
UHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9vZmZlckFuc3dlclByb21pc2UgPSBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlckZhaWxlZChF
eGNlcHRpb24mJiBleGNlcHRpb24pCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpjcmVhdGVPZmZlckZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCiAKICAg
ICBBU1NFUlQobV9vZmZlckFuc3dlclByb21pc2UpOwogICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNl
LT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9
IE51bGxvcHQ7CisgICAgbV9vZmZlckFuc3dlclByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9u
cyYmIG9wdGlvbnMsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYg
cHJvbWlzZSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNy
ZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcmJiBzZHApCiAKICAgICBBU1NFUlQobV9vZmZlckFu
c3dlclByb21pc2UpOwogICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlLT5yZXNvbHZlKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbjo6Y3JlYXRlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6QW5z
d2VyLCBXVEZNb3ZlKHNkcCkpKTsKLSAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IE51bGxvcHQ7
CisgICAgbV9vZmZlckFuc3dlclByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0
aW9uKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogCiAgICAgQVNTRVJUKG1fb2Zm
ZXJBbnN3ZXJQcm9taXNlKTsKICAgICBtX29mZmVyQW5zd2VyUHJvbWlzZS0+cmVqZWN0KFdURk1v
dmUoZXhjZXB0aW9uKSk7Ci0gICAgbV9vZmZlckFuc3dlclByb21pc2UgPSBOdWxsb3B0OworICAg
IG1fb2ZmZXJBbnN3ZXJQcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgaXNMb2NhbERlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uOjpTZHBUeXBlIHR5cGUsIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0
ZSBzdGF0ZSkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
c2V0TG9jYWxEZXNjcmlwdGlvblN1Y2NlZWRlZCgpCiAgICAgQVNTRVJUKG1fc2V0RGVzY3JpcHRp
b25Qcm9taXNlKTsKIAogICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlLT5yZXNvbHZlKCk7Ci0g
ICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UgPSBOdWxsb3B0OworICAgIG1fc2V0RGVzY3JpcHRp
b25Qcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6c2V0TG9jYWxEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3Jp
cHRpb25GYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogICAgIEFTU0VSVChtX3NldERlc2Ny
aXB0aW9uUHJvbWlzZSk7CiAKICAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZS0+cmVqZWN0KFdU
Rk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UgPSBOdWxsb3B0
OworICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNSZW1vdGVEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZSB0eXBlLCBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2ln
bmFsaW5nU3RhdGUgc3RhdGUpCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uU3VjY2VlZGVkKCkKICAgICBBU1NFUlQobV9z
ZXREZXNjcmlwdGlvblByb21pc2UpOwogCiAgICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UtPnJl
c29sdmUoKTsKLSAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9z
ZXREZXNjcmlwdGlvblByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlwdGlvbkZhaWxlZChFeGNlcHRpb24mJiBleGNl
cHRpb24pCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNl
dFJlbW90ZURlc2NyaXB0aW9uRmFpbGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKICAgICBBU1NF
UlQobV9zZXREZXNjcmlwdGlvblByb21pc2UpOwogCiAgICAgbV9zZXREZXNjcmlwdGlvblByb21p
c2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9t
aXNlID0gTnVsbG9wdDsKKyAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZSA9IHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZEljZUNhbmRpZGF0ZShSVENJ
Y2VDYW5kaWRhdGUmIGljZUNhbmRpZGF0ZSwgUGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYg
cHJvbWlzZSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
YWRkSWNlQ2FuZGlkYXRlU3VjY2VlZGVkKCkKICAgICBBU1NFUlQobV9hZGRJY2VDYW5kaWRhdGVQ
cm9taXNlKTsKIAogICAgIG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZS0+cmVzb2x2ZSgpOwotICAg
IG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9hZGRJY2VDYW5kaWRh
dGVQcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKQEAgLTI1OSw3
ICsyNTksNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlRmFp
bGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKICAgICBBU1NFUlQobV9hZGRJY2VDYW5kaWRhdGVQ
cm9taXNlKTsKIAogICAgIG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZS0+cmVqZWN0KFdURk1vdmUo
ZXhjZXB0aW9uKSk7Ci0gICAgbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlID0gTnVsbG9wdDsKKyAg
ICBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpmaXJlSUNFQ2FuZGlkYXRlRXZlbnQoUmVmUHRyPFJUQ0ljZUNh
bmRpZGF0ZT4mJiBjYW5kaWRhdGUpCkBAIC0yODksOSArMjg5LDkgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OnVwZGF0ZVNpZ25hbGluZ1N0YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpT
aWduYWxpbmcKIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnN0b3AoKQogewotICAgIG1f
b2ZmZXJBbnN3ZXJQcm9taXNlID0gTnVsbG9wdDsKLSAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlz
ZSA9IE51bGxvcHQ7Ci0gICAgbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlID0gTnVsbG9wdDsKKyAg
ICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3NldERlc2NyaXB0
aW9uUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2Ug
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb1N0b3AoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmlu
ZGV4IGM4NGI4MTY2M2NkZTVmYWRkN2Y5YWFkZWUxYTg5N2E1NzI0N2VkOTcuLmNhODYxOTFlNWJl
OTA0ZGE3NjgyMTZiNDdiMTZmOGE2MWViNGY2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAt
MTM5LDkgKzEzOSw5IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZCB7CiAgICAgUlRDUGVl
ckNvbm5lY3Rpb24mIG1fcGVlckNvbm5lY3Rpb247CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8
UGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlwdGlvblByb21pc2U+IG1fb2ZmZXJBbnN3ZXJQ
cm9taXNlOwotICAgIE9wdGlvbmFsPFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZT4gbV9zZXRE
ZXNjcmlwdGlvblByb21pc2U7Ci0gICAgT3B0aW9uYWw8UGVlckNvbm5lY3Rpb246OlZvaWRQcm9t
aXNlPiBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxQZWVyQ29u
bmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZT4gbV9vZmZlckFuc3dlclByb21pc2U7
CisgICAgc3RkOjpvcHRpb25hbDxQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2U+IG1fc2V0RGVz
Y3JpcHRpb25Qcm9taXNlOworICAgIHN0ZDo6b3B0aW9uYWw8UGVlckNvbm5lY3Rpb246OlZvaWRQ
cm9taXNlPiBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVyLmNwcAppbmRleCA4MzMwYzg3OGMxN2MwOWU3ODI2OWJjNTVhZDc4ZmUxN2IxNGI4
MGRiLi41ZGQyZjFlNDFjZjUxMjI5NmQ3NGQyMGMxYmQ3YzQ4YmIyYjIyZDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgU3RyaW5nIFJUQ0RUTUZTZW5kZXI6OnRvbmVCdWZmZXIoKSBjb25z
dAogICAgIHJldHVybiBtX2hhbmRsZXItPmN1cnJlbnRUb25lQnVmZmVyKCk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25l
cywgT3B0aW9uYWw8aW50PiBkdXJhdGlvbiwgT3B0aW9uYWw8aW50PiBpbnRlclRvbmVHYXApCitF
eGNlcHRpb25Pcjx2b2lkPiBSVENEVE1GU2VuZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYg
dG9uZXMsIHN0ZDo6b3B0aW9uYWw8aW50PiBkdXJhdGlvbiwgc3RkOjpvcHRpb25hbDxpbnQ+IGlu
dGVyVG9uZUdhcCkKIHsKICAgICBpZiAoIWNhbkluc2VydERUTUYoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CkBAIC05Niw4ICs5Niw4IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25l
cywgT3B0aW9uYWw8aW50PiBkCiAgICAgaWYgKGludGVyVG9uZUdhcCAmJiBpbnRlclRvbmVHYXAu
dmFsdWUoKSA8IG1pbkludGVyVG9uZUdhcE1zKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U1lOVEFYX0VSUiB9OwogCi0gICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZhbHVlT3IoZGVmYXVs
dFRvbmVEdXJhdGlvbk1zKTsKLSAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1
ZU9yKGRlZmF1bHRJbnRlclRvbmVHYXBNcyk7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZh
bHVlX29yKGRlZmF1bHRUb25lRHVyYXRpb25Ncyk7CisgICAgbV9pbnRlclRvbmVHYXAgPSBpbnRl
clRvbmVHYXAudmFsdWVfb3IoZGVmYXVsdEludGVyVG9uZUdhcE1zKTsKIAogICAgIGlmICghbV9o
YW5kbGVyLT5pbnNlcnREVE1GKHRvbmVzLCBtX2R1cmF0aW9uLCBtX2ludGVyVG9uZUdhcCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCmluZGV4IGZjYTQyNTNk
ZDMwNWFiNzFmNmJiYTIzYTEzYmM4MzA0NzEyMDM5NmIuLmM3MjI4NzE5MTBmOTZmODZiMjA3YWIz
YTgxZDUxY2MzMDhhYzc4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFJUQ0RUTUZT
ZW5kZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENEVE1GU2VuZGVyPiwgcHVibGljIEV2
ZW50VGFyZ2V0CiAgICAgbG9uZyBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247
IH0KICAgICBsb25nIGludGVyVG9uZUdhcCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJUb25lR2Fw
OyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9u
ZXMsIE9wdGlvbmFsPGludD4gZHVyYXRpb24sIE9wdGlvbmFsPGludD4gaW50ZXJUb25lR2FwKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIHN0
ZDo6b3B0aW9uYWw8aW50PiBkdXJhdGlvbiwgc3RkOjpvcHRpb25hbDxpbnQ+IGludGVyVG9uZUdh
cCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6
ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0ljZUNhbmRpZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0ljZUNhbmRpZGF0ZS5jcHAKaW5kZXggMTE4NjU0YzRkYTVlZjAxNmM4MzE2YjNjZDUyNjk3OTNh
MDNiYzI0Zi4uODVlZTdjMTI0YWUxYTJjZTExMWRmZTU1MzQ0MWYzNzQ3MjBkNmYwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmNwcApAQCAtNDksNyArNDksNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDSWNlQ2FuZGlkYXRl
Pj4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgZGljdAogICAgIFN0
cmluZyBzZHBNaWQ7CiAgICAgZGljdGlvbmFyeS5nZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
InNkcE1pZCIsIHNkcE1pZCk7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxp
bmVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4
OwogICAgIFN0cmluZyBzZHBNTGluZUluZGV4U3RyaW5nOwogCiAgICAgaWYgKGRpY3Rpb25hcnku
Z2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJzZHBNTGluZUluZGV4Iiwgc2RwTUxpbmVJbmRl
eFN0cmluZykpIHsKQEAgLTY2LDEyICs2NiwxMiBAQCBFeGNlcHRpb25PcjxSZWY8UlRDSWNlQ2Fu
ZGlkYXRlPj4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgZGljdAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNhbmRpZGF0ZShjYW5kaWRhdGUsIHNkcE1p
ZCwgc2RwTUxpbmVJbmRleCkpOwogfQogCi1SZWY8UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VDYW5k
aWRhdGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBN
aWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4KQorUmVmPFJUQ0ljZUNh
bmRpZGF0ZT4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUs
IGNvbnN0IFN0cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBN
TGluZUluZGV4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNhbmRpZGF0ZShj
YW5kaWRhdGUsIHNkcE1pZCwgc2RwTUxpbmVJbmRleCkpOwogfQogCi1SVENJY2VDYW5kaWRhdGU6
OlJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBz
ZHBNaWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4KQorUlRDSWNlQ2Fu
ZGlkYXRlOjpSVENJY2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0
cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4
KQogICAgIDogbV9jYW5kaWRhdGUoY2FuZGlkYXRlKQogICAgICwgbV9zZHBNaWQoc2RwTWlkKQog
ICAgICwgbV9zZHBNTGluZUluZGV4KHNkcE1MaW5lSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaAppbmRleCBkNzg5ZjNk
ZDJlYTc0ZTdmZmY1N2I2ZDI1MWE5OTVlOWIxMWNiYTQ3Li45YTg3MGZmMWQ3ZTE1MmYyNGQyZDFh
MzBkMjc2OWM0MDVkNzBhMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgKQEAgLTQ0LDE4ICs0NCwxOCBAQCBjbGFzcyBS
VENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogY2xhc3MgUlRDSWNlQ2FuZGlkYXRlIDogcHVibGlj
IFJlZkNvdW50ZWQ8UlRDSWNlQ2FuZGlkYXRlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBjcmVh
dGUoY29uc3QgRGljdGlvbmFyeSYpOwotICAgIHN0YXRpYyBSZWY8UlRDSWNlQ2FuZGlkYXRlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBPcHRp
b25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCk7CisgICAgc3RhdGljIFJlZjxSVENJ
Y2VDYW5kaWRhdGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5n
JiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpOwog
CiAgICAgY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2NhbmRpZGF0
ZTsgfQogICAgIGNvbnN0IFN0cmluZyYgc2RwTWlkKCkgY29uc3QgeyByZXR1cm4gbV9zZHBNaWQ7
IH0KLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2RwTUxpbmVJbmRleDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hv
cnQ+IHNkcE1MaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3NkcE1MaW5lSW5kZXg7IH0KIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBSVENJY2VDYW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5k
aWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2Rw
TUxpbmVJbmRleCk7CisgICAgZXhwbGljaXQgUlRDSWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYg
Y2FuZGlkYXRlLCBjb25zdCBTdHJpbmcmIHNkcE1pZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBz
aG9ydD4gc2RwTUxpbmVJbmRleCk7CiAKICAgICBTdHJpbmcgbV9jYW5kaWRhdGU7CiAgICAgU3Ry
aW5nIG1fc2RwTWlkOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtX3NkcE1MaW5lSW5k
ZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gbV9zZHBNTGluZUluZGV4Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwCmluZGV4IDlhMTFjYWIyODNiYjVjMmUw
NjZmY2I3ZjU0N2QxMjJlNWRkNmRkNGUuLjE0NWQ0MTE3Y2UzNmQxYjc4NzkwNjMyNzAwMTdmN2E1
YmNlZTBkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
U0RQUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1NEUFByb2Nlc3Nvci5jcHAKQEAgLTMyNywxNSArMzI3LDE1IEBAIHN0YXRpYyBSZWZQdHI8TWVk
aWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRnJvbUpTT04oY29u
c3QgU3RyCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxJ
Y2VDYW5kaWRhdGU+IGljZUNhbmRpZGF0ZUZyb21KU09OKGNvbnN0IFN0cmluZyYganNvbikKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPEljZUNhbmRpZGF0ZT4gaWNlQ2FuZGlkYXRlRnJvbUpTT04oY29u
c3QgU3RyaW5nJiBqc29uKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWU7CiAg
ICAgaWYgKCFJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKGpzb24sIHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBjYW5kaWRhdGVPYmplY3Q7CiAgICAgaWYgKCF2YWx1ZS0+YXNP
YmplY3QoY2FuZGlkYXRlT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY3JlYXRlQ2FuZGlkYXRlKCpjYW5k
aWRhdGVPYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wcm94
aW1pdHkvRGV2aWNlUHJveGltaXR5RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHJv
eGltaXR5L0RldmljZVByb3hpbWl0eUV2ZW50LmgKaW5kZXggNzcyMmZjZmQxOTllZTY3NTIzZDY3
OGZhYzUzNWQwNTdiNWU4ODNkYS4uMzczYWM0NTFlYjgzZmRhMWQ2YzA0NmUwZDI5M2EwYWFjNWVh
NjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wcm94aW1pdHkvRGV2aWNl
UHJveGltaXR5RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Byb3hpbWl0eS9E
ZXZpY2VQcm94aW1pdHlFdmVudC5oCkBAIC00MCw5ICs0MCw5IEBAIGNsYXNzIERldmljZVByb3hp
bWl0eUV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICB9CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2
ZW50SW5pdCB7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdmFsdWU7Ci0gICAgICAgIE9wdGlv
bmFsPGRvdWJsZT4gbWluOwotICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1heDsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gbWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4OwogICAgIH07CiAKICAg
ICBzdGF0aWMgUmVmPERldmljZVByb3hpbWl0eUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9
IElzVHJ1c3RlZDo6Tm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oCmluZGV4IDkzMWM1MDA0ODRkYTExYzk3NzkyNzE5OWE4
MmE0ZTdhZWUzODcxMDEuLjY1OTE5ZjI5NGY2NDU4ZTk1Y2RmYzAyNjhiNTAyNmMxZTY1ZDcxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNvdXJjZS5oCkBAIC02Myw4ICs2Myw4IEBAIGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKICAgICB2aXJ0dWFs
IHZvaWQgZG9DYW5jZWwoKSA9IDA7CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8RE9NUHJvbWlz
ZTx2b2lkPj4gbV9wcm9taXNlOwotICAgIE9wdGlvbmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9p
ZD4+IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXI+IG1fY29udHJvbGxlcjsKIH07CiAKIGlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFt
U291cmNlOjpzdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyJiYgY29udHJvbGxl
ciwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCkBAIC05MSwxNCArOTEsMTQgQEAgaW5saW5l
IHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1bGwoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21p
c2UpCiBpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnRGaW5pc2hlZCgpCiB7
CiAgICAgQVNTRVJUKG1fcHJvbWlzZSk7Ci0gICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51
bGxvcHQpLnZhbHVlKCkucmVzb2x2ZSgpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBz
dGQ6Om51bGxvcHQpLnZhbHVlKCkucmVzb2x2ZSgpOwogICAgIHNldEluYWN0aXZlKCk7CiB9CiAK
IGlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpwdWxsRmluaXNoZWQoKQogewogICAg
IEFTU0VSVChtX3Byb21pc2UpOwotICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBOdWxsb3B0
KS52YWx1ZSgpLnJlc29sdmUoKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3RkOjpu
dWxsb3B0KS52YWx1ZSgpLnJlc29sdmUoKTsKICAgICBzZXRJbmFjdGl2ZSgpOwogfQogCkBAIC0x
MTEsNyArMTExLDcgQEAgaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNhbmNlbChK
U0M6OkpTVmFsdWUpCiBpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6Y2xlYW4oKQog
ewogICAgIGlmIChtX3Byb21pc2UpIHsKLSAgICAgICAgbV9wcm9taXNlID0gTnVsbG9wdDsKKyAg
ICAgICAgbV9wcm9taXNlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBzZXRJbmFjdGl2ZSgpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBhMTlmNjNmNjNkNTRkMzExZDFhNDI2ZWIw
Nzg0YzRhNGZkMzg4NmM2Li4xMTMxOWE4NWNlOTkyMGYxY2UyZjdhOThiODBjM2M3MWIwYTc4MGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00MzcsNyArNDM3LDcgQEAgdW5zaWduZWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpudW1iZXJPZkNoYW5uZWxzKCkKICAgICByZXR1cm4gb3V0cHV0KDAp
LT5udW1iZXJPZkNoYW5uZWxzKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6c3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9u
YWw8ZG91YmxlPiBvcHRpb25hbEdyYWluRHVyYXRpb24pCitFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbEdyYWluRHVyYXRpb24pCiB7CiAgICAgZG91
YmxlIGdyYWluRHVyYXRpb24gPSAwOwogICAgIGlmIChvcHRpb25hbEdyYWluRHVyYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaAppbmRleCBhMDkyNjBhZGY5ODJmZWMzNjdjOTc0NTI0ZTA0MzhhNTY0YjQ0ZWJj
Li5mNGU2M2E4NTljMDFiNDE1ZTFjZjM0N2YyNzg4ZGRkOGI3YjczYmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscygpOwogCiAgICAgLy8gUGxheS1zdGF0ZQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0
YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3Jh
aW5EdXJhdGlvbik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnQoZG91YmxlIHdoZW4sIGRv
dWJsZSBncmFpbk9mZnNldCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pOwog
CiAgICAgLy8gTm90ZTogdGhlIGF0dHJpYnV0ZSB3YXMgb3JpZ2luYWxseSBleHBvc2VkIGFzIC5s
b29waW5nLCBidXQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIG5hbWluZyB3aXRoIDxhdWRpbz4K
ICAgICAvLyBhbmQgd2l0aCBob3cgaXQncyBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24s
IHRoZSBwcm9wZXIgYXR0cmlidXRlIG5hbWUgaXMgLmxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oCmluZGV4IGQ3MTZmYmYwMTU3ZWZm
OGUxOGRjZDZjZmJiYWJmNjJiYmFmZThiZWUuLmUyMjgzOTk5ZmE4OWEzYzZmZjcxNmMxNGM1ODk0
ZjUzOGZkODQ1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMUmVzdWx0U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxSZXN1bHRTZXQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FMUmVzdWx0U2V0PiB7CiAgICAgU1FMUmVzdWx0
U2V0KCk7CiAKICAgICBSZWY8U1FMUmVzdWx0U2V0Um93TGlzdD4gbV9yb3dzOwotICAgIE9wdGlv
bmFsPGludDY0X3Q+IG1faW5zZXJ0SWQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBtX2lu
c2VydElkOwogICAgIGludCBtX3Jvd3NBZmZlY3RlZCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggNjQzMjE2NTli
YjFjMjI5NGQyMjJhZmRlYmYzNDQ1Y2E2Yjc0YzE1Yy4uYmVkOTM2MjY3ZDU2ODRmYzc4ODE3MDkx
ZjExZjA3YzQ1ZWFiM2I3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAKQEAgLTM3OCw3ICszNzgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJTb2NrZXQ6OnNlbmQoQmxvYiYgYmluYXJ5RGF0YSkKICAgICByZXR1cm4geyB9OwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNsb3NlKE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0
PiBvcHRpb25hbENvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQorRXhjZXB0aW9uT3I8dm9pZD4g
V2ViU29ja2V0OjpjbG9zZShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBvcHRpb25hbENv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIGludCBjb2RlID0gb3B0aW9uYWxDb2Rl
ID8gb3B0aW9uYWxDb2RlLnZhbHVlKCkgOiBzdGF0aWNfY2FzdDxpbnQ+KFdlYlNvY2tldENoYW5u
ZWw6OkNsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKTsKICAgICBpZiAoY29kZSA9PSBXZWJTb2Nr
ZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA0MTU0ZWVlYzYzMjEyZWJjZGZh
MWJmODAxYmY1ZTEyMjY0ZjEwNTc5Li43ZDQzZjA0MzYwZmMzYjlhY2MwYmJmYjVhNTkyNDVkNjli
ODA5YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5oCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIFdlYlNvY2tldCBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpCiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2VuZChKU0M6OkFycmF5QnVmZmVyVmlldyYpOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNlbmQoQmxvYiYpOwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xvc2UoT3B0aW9u
YWw8dW5zaWduZWQgc2hvcnQ+IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBjbG9zZShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwogICAg
IFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA0ZTRhYTdjM2E5YmIy
NTI1OTVhNzI5MjMwODcwNjFiYjdiMzQyMzk5Li44MGRiYjRiYTBlZTNiMmM0NzMzYzgxZDJlMWI4
NTk3ZDhiYmU3OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhh
bmRsZSkKICAgICBkZXJlZigpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2Vp
dmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBjb25zdCBjaGFy
KiBkYXRhLCBPcHRpb25hbDxzaXplX3Q+IGxlbikKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0
IGNoYXIqIGRhdGEsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW4pCiB7CiAgICAgaWYgKGxlbikK
ICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFJlY2VpdmVTb2Nr
ZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5dGVzIiwgdGhpcywgbGVuLnZhbHVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKaW5kZXggN2M3NThkNjQ0MGE4ZmYzNGQ0NmQ1Mjc2NjU4MzMxNTIwMDQzZWFkMS4uYjNh
NTJjY2M3OTBmZTFhN2E3YTEyM2JkMzg3MDgxOTY5NzY5ZTMzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC04Miw3
ICs4Miw3IEBAIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJT
b2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhCiAgICAgLy8gU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lkIGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0
U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2Nr
ZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1E
YXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBPcHRpb25hbDxzaXplX3Q+KSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhh
bmRsZSYsIGNvbnN0IGNoYXIqLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pIGZpbmFsOwogICAgIHZv
aWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxlJiwgc2l6ZV90IGJ1
ZmZlcmVkQW1vdW50KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0
U3RyZWFtSGFuZGxlJiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oCmluZGV4IDBhMzI3ZWU2MWM5YTY1
NGQ5NmJlZWU5NjUzMWExZDg4ODBhMzY4YjMuLjk3NzQ2ZWZmODM4YTc0MWE0ZmRiODBkMzU2Njk5
N2I0YjRiNDcwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
SURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVz
LmgKQEAgLTQ0LDggKzQ0LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBJRExUeXBl
IHsKICAgICB1c2luZyBJbXBsZW1lbnRhdGlvblR5cGUgPSBUOwogCi0gICAgdXNpbmcgTnVsbGFi
bGVUeXBlID0gT3B0aW9uYWw8SW1wbGVtZW50YXRpb25UeXBlPjsKLSAgICBzdGF0aWMgTnVsbGFi
bGVUeXBlIG51bGxWYWx1ZSgpIHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICB1c2luZyBOdWxsYWJs
ZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPEltcGxlbWVudGF0aW9uVHlwZT47CisgICAgc3RhdGljIE51
bGxhYmxlVHlwZSBudWxsVmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0
aWMgYm9vbCBpc051bGxWYWx1ZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAh
dmFsdWU7IH0KICAgICBzdGF0aWMgSW1wbGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgp
OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9k
dWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3Jp
cHQuaAppbmRleCA5ODg4OWQ1ZWYzMDJkZDA2ZGU0ODQwYmQzNDU3ZGQ0NzYxMjhjMTI4Li45ZWFh
NzZiNGVkZWFjYzM4NzAwZWRjMDU1ZDlkNDA4ZjJkMDQzYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaApAQCAtNDUsNyArNDUsNyBAQCBj
bGFzcyBDYWNoZWRNb2R1bGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVT
Y3JpcHQ+IHsKICAgICB2b2lkIG5vdGlmeUxvYWRGYWlsZWQoTG9hZGFibGVTY3JpcHQ6OkVycm9y
JiYpOwogICAgIHZvaWQgbm90aWZ5TG9hZFdhc0NhbmNlbGVkKCk7CiAKLSAgICBjb25zdCBPcHRp
b25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+JiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3I7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4mIGVy
cm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBj
b25zdCB7IHJldHVybiBtX3dhc0NhbmNlbGVkOyB9CiAgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNMb2FkZWQ7IH0KIApAQCAtNjksNyArNjksNyBAQCBjbGFzcyBDYWNoZWRN
b2R1bGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHQ+IHsKICAg
ICBIYXNoQ291bnRlZFNldDxDYWNoZWRNb2R1bGVTY3JpcHRDbGllbnQqPiBtX2NsaWVudHM7CiAg
ICAgU3RyaW5nIG1fbm9uY2U7CiAgICAgU3RyaW5nIG1fY3Jvc3NPcmlnaW5Nb2RlOwotICAgIE9w
dGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFs
PExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJvcjsKICAgICBib29sIG1fd2FzQ2FuY2VsZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xvYWRlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IGI4ODMzNTMwMWE0NDAxM2Q1ZjRmNTg5
ZWRiODgxZWI3YjdkY2I2MzQuLjJlN2RkMWYyNzRkMzVjMGVlNTllMGUxMGIzZWIxMDExYzQ2N2Nl
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgY2xhc3MgRGljdGlvbmFyeSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBi
b29sIGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUsIFJlc3VsdCYpIGNvbnN0OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBPcHRp
b25hbDxSZXN1bHQ+IGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gc3RkOjpvcHRpb25hbDxSZXN1bHQ+IGdldChjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBUKiB0YXJnZXQpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFJlZlB0cjxF
dmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
LCBUKiB0YXJnZXQpIGNvbnN0OwpAQCAtNzksMTEgKzc5LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFJlc3VsdD4gYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IFJlc3VsCiAgICAgcmV0dXJuIGdldChwcm9wZXJ0eU5hbWUudXRmOCgpLmRhdGEoKSwgcmVzdWx0
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBPcHRpb25hbDxSZXN1bHQ+IERpY3Rp
b25hcnk6OmdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBSZXN1bHQ+IHN0ZDo6b3B0aW9uYWw8UmVzdWx0PiBEaWN0aW9uYXJ5OjpnZXQoY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFJlc3VsdCByZXN1bHQ7CiAgICAgaWYg
KCFnZXQocHJvcGVydHlOYW1lLCByZXN1bHQpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmlu
ZGV4IGYxMTc1YjhlNGUyODEzZjFiOWI3ZWVjZWNjNmI1NmJmMmQ4OWU4Y2EuLmE3NGRkMTgzMmZl
NzljYmU1N2U5NmMyMWI1MGIzMDZjZmViZmYwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC00MTIsNyArNDEyLDcgQEAg
dm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8sIEpTVmFsdWUKICAgICBvdXRLZXkgPSBJbmRleEtleShXVEZNb3ZlKGtl
eURhdGFzKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0
aCkKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewog
ICAgIGlmICgha2V5UGF0aCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCmluZGV4IDM2YzZlMThl
NzI4M2VjMmNmMzIyMzFiNDMwNzJhZjQ4ZjI3YjYwODAuLmE4NmMxMGMwN2Q4YzI2ZWNjZGEyZTU3
MjI4ZGYyZjkzNTI5MDY0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgSlNET01HbG9iYWxP
YmplY3Q7CiBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsKIAogLy8gRklYTUU6IFJlbW92ZSB0
aGlzIG9uY2Ugd2Ugc3VwcG9ydCByZXR1cm5pbmcgdW5pb24gdHlwZXMuCi1KU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgT3B0aW9uYWw8
SURCS2V5UGF0aD4mKTsKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNET01H
bG9iYWxPYmplY3QmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKIFJlZlB0
cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJv
b2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3Qg
SlNDOjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0aCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5k
ZXggNmUwMGM5ZjUxMDExNDdmNDc4ZTc0MzU3OTZjYWMyMTY1MDFkZmUzNC4uNTRhOGQxZjU2NGE0
YTcyMWQ1MTEwYTA3ZDhkZmViNWY0ZGY1ODE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC0x
NzcsNyArMTc3LDcgQEAgc3RhdGljIFJlZjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZD4gY3JlYXRlUlNBS2V5UGFyYW1ldGVyc1dpdGhIYXNoKEMKICAgICByZXR1cm4gV1RGTW92
ZShyc2FLZXlQYXJhbWV0ZXJzKTsKIH0KIAotT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4g
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxn
b3JpdGhtKiBzdWdnZXN0ZWRBbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkKiBzdWdnZXN0ZWRQYXJhbWV0ZXJzKSBjb25zdAorc3RkOjpvcHRpb25hbDxDcnlwdG9B
bGdvcml0aG1QYWlyPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29y
aXRobShDcnlwdG9BbGdvcml0aG0qIHN1Z2dlc3RlZEFsZ29yaXRobSwgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQqIHN1Z2dlc3RlZFBhcmFtZXRlcnMpIGNvbnN0CiB7CiAgICAg
Vk0mIHZtID0gbV9leGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWly
PiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29yaXRobShDcgogICAg
ICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVj
LCBzY29wZSwgIlVuc3VwcG9ydGVkIEpXSyBhbGdvcml0aG0gIiArIG1fandrQWxnb3JpdGhtTmFt
ZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIGlmICghc3VnZ2VzdGVkQWxnb3JpdGhtKQpAQCAtMjQ0LDExICsyNDQs
MTEgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3IKICAgICAgICAgcmV0dXJuIENyeXB0b0FsZ29y
aXRobVBhaXIgeyBzdWdnZXN0ZWRBbGdvcml0aG0sIHN1Z2dlc3RlZFBhcmFtZXRlcnMgfTsKIAog
ICAgIGlmIChhbGdvcml0aG0tPmlkZW50aWZpZXIoKSAhPSBzdWdnZXN0ZWRBbGdvcml0aG0tPmlk
ZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoYWxnb3JpdGhtLT5pZGVudGlmaWVyKCkgPT0gQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SE1BQykgewogICAgICAgICBpZiAoZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+KCpwYXJhbWV0ZXJzKS5oYXNoICE9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkPigqc3VnZ2VzdGVkUGFyYW1ldGVy
cykuaGFzaCkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIENyeXB0b0FsZ29yaXRobVBhaXIgeyBzdWdn
ZXN0ZWRBbGdvcml0aG0sIHN1Z2dlc3RlZFBhcmFtZXRlcnMgfTsKICAgICB9CiAgICAgaWYgKGFs
Z29yaXRobS0+aWRlbnRpZmllcigpID09IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNT
QV9QS0NTMV92MV81CkBAIC0yNTgsNyArMjU4LDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGht
UGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3IK
ICAgICAgICAgQVNTRVJUKHJzYUtleVBhcmFtZXRlcnMuaGFzSGFzaCk7CiAgICAgICAgIGlmIChz
dWdnZXN0ZWRSU0FLZXlQYXJhbWV0ZXJzLmhhc0hhc2gpIHsKICAgICAgICAgICAgIGlmIChzdWdn
ZXN0ZWRSU0FLZXlQYXJhbWV0ZXJzLmhhc2ggIT0gcnNhS2V5UGFyYW1ldGVycy5oYXNoKQotICAg
ICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4gQ3J5cHRvQWxnb3JpdGhtUGFpciB7IHN1Z2dl
c3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1ldGVycyB9OwogICAgICAgICB9CiAgICAgICAg
IHN1Z2dlc3RlZFJTQUtleVBhcmFtZXRlcnMuaGFzSGFzaCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5o
CmluZGV4IDFhNzhhMzE0ZWExNDVjNzNhNjkwM2Y1Y2MzNzE1MDEyZmI2NjViOGYuLjQ3YTVhMDNi
ZTQyYjQ2YzU1YjRjMTE2MTU1ZTkwOGJmMjIwN2VlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oCkBAIC01
MSw3ICs1MSw3IEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSyk7CiAgICAgc3RhdGljIFN0cmluZyBzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IENyeXB0b0tleSYpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPENyeXB0b0FsZ29y
aXRobVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0qLCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29y
aXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZUJpdG1hcCYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVjb25jaWxlRXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAppbmRl
eCA5ZDlmMTA5YmVhZjYwZDBmNGIyMjQzMzNkNzRiYjNkYmQ0ZjQwOGVkLi43NjdmOTU0NzkwMDYy
N2ExNTE4NWFhMDM1ZDY4OWJlM2U2NjdiZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaApAQCAtNTMsNyArNTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyPiB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46OlJldHVyblR5
cAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0RGljdGlvbmFyeShKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7CiAKIC8vIFNwZWNpYWxpemVkIGJ5IGdlbmVyYXRlZCBjb2RlIGZv
ciBJREwgZW51bWVyYXRpb24gY29udmVyc2lvbi4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IE9wdGlv
bmFsPFQ+IHBhcnNlRW51bWVyYXRpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RkOjpvcHRpb25hbDxUPiBwYXJzZUVudW1lcmF0aW9uKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29u
dmVydEVudW1lcmF0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXMoKTsKIApA
QCAtMTAyNiw3ICsxMDI2LDcgQEAgc3RydWN0IENvbmRpdGlvbmFsQ29udmVydGVyOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFs
Q29udmVydGVyPFJldHVyblR5cGUsIFQsIHRydWU+IHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmV0
dXJuVHlwZT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IFJldHVyblR5cGUoQ29udmVydGVyPFQ+Ojpjb252ZXJ0KHN0YXRlLCB2YWx1ZSkpOwogICAgIH0K
QEAgLTEwMzQsOSArMTAzNCw5IEBAIHN0cnVjdCBDb25kaXRpb25hbENvbnZlcnRlcjxSZXR1cm5U
eXBlLCBULCB0cnVlPiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1l
IFQ+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgZmFsc2U+IHsK
LSAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252
ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfTsKIApAQCAt
MTEzNCw3ICsxMTM0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRl
cjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29udmVydGVyPElETFUKICAgICAgICAgLy8gICAg
IDIuIElmIHR5cGVzIGluY2x1ZGVzIG9iamVjdCwgdGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0
aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgVi4KICAgICAgICAgLy8gICAgICAgICAo
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBvYmplY3QgYW5kIHN0ZXAgNC4yKQogICAgICAgICBpZiAo
YnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETEludGVyZmFjZTxicmlnYW5kOjpfMT4+Ojp2YWx1
ZSkgewotICAgICAgICAgICAgT3B0aW9uYWw8UmV0dXJuVHlwZT4gcmV0dXJuVmFsdWU7CisgICAg
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldHVyblR5cGU+IHJldHVyblZhbHVlOwogICAgICAgICAg
ICAgYnJpZ2FuZDo6Zm9yX2VhY2g8SW50ZXJmYWNlVHlwZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkg
ewogICAgICAgICAgICAgICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3Ry
dWN0IEpTQ29udmVydGVyPElETFVuaW9uPFQuLi4+PiB7CiAgICAgewogICAgICAgICBhdXRvIGlu
ZGV4ID0gdmFyaWFudC5pbmRleCgpOwogCi0gICAgICAgIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4g
cmV0dXJuVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiByZXR1cm5W
YWx1ZTsKICAgICAgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShhdXRvJiYgdHlw
ZSkgewogICAgICAgICAgICAgdXNpbmcgSSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZl
cmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0eXBlOwogICAgICAgICAgICAgaWYgKEk6OnZh
bHVlID09IGluZGV4KSB7CkBAIC0xMzAyLDEzICsxMzAyLDEzIEBAIG5hbWVzcGFjZSBEZXRhaWwg
ewogICAgIHN0cnVjdCBWYXJpYWRpY0NvbnZlcnRlckJhc2UgewogICAgICAgICB1c2luZyBJdGVt
ID0gdHlwZW5hbWUgSURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlOwogCi0gICAgICAgIHN0YXRp
YyBPcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQorICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29u
dmVydGVyPElETFR5cGU+Ojpjb252ZXJ0KHN0YXRlLCB2YWx1ZSk7Ci0gICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTEzMTgsMTIgKzEzMTgsMTIgQEAgbmFtZXNwYWNl
IERldGFpbCB7CiAgICAgc3RydWN0IFZhcmlhZGljQ29udmVydGVyQmFzZTxJRExJbnRlcmZhY2U8
VD4+IHsKICAgICAgICAgdXNpbmcgSXRlbSA9IHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VD47CiAK
LSAgICAgICAgc3RhdGljIE9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0
ZW0+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGF1dG8qIHJlc3VsdCA9IENvbnZlcnRlcjxJRExJbnRlcmZh
Y2U8VD4+Ojpjb252ZXJ0KHN0YXRlLCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxJdGVtPigqcmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SXRlbT4oKnJlc3VsdCk7CiAgICAg
ICAgIH0KICAgICB9OwogCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBuYW1lc3BhY2UgRGV0YWlsIHsK
IAogICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKICAgICAgICAgICAgIHNpemVfdCBhcmd1bWVudElu
ZGV4OwotICAgICAgICAgICAgT3B0aW9uYWw8Q29udGFpbmVyPiBhcmd1bWVudHM7CisgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENvbnRhaW5lcj4gYXJndW1lbnRzOwogICAgICAgICB9OwogICAg
IH07CiB9CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiB0
eXBlbmFtZSBEZXRhaWw6OlZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpSZXN1bHQgYwogewog
ICAgIHNpemVfdCBsZW5ndGggPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKHN0YXJ0
SW5kZXggPiBsZW5ndGgpCi0gICAgICAgIHJldHVybiB7IDAsIE51bGxvcHQgfTsKKyAgICAgICAg
cmV0dXJuIHsgMCwgc3RkOjpudWxsb3B0IH07CiAKICAgICB0eXBlbmFtZSBEZXRhaWw6OlZhcmlh
ZGljQ29udmVydGVyPElETFR5cGU+OjpDb250YWluZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwpAQCAtMTM1MSw3ICsxMzUx
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gdHlwZW5hbWUgRGV0YWlsOjpWYXJpYWRp
Y0NvbnZlcnRlcjxJRExUeXBlPjo6UmVzdWx0IGMKICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJ
bmRleDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBEZXRhaWw6OlZh
cmlhZGljQ29udmVydGVyPElETFR5cGU+Ojpjb252ZXJ0KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudChpKSk7CiAgICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4geyBp
LCBOdWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBpLCBzdGQ6Om51bGxvcHQgfTsKICAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp2YWx1ZSkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4IGI1ODJkYjBm
NTZkNzIzMjg5NTIwY2U2NmMwZTMwZWYxNTI3MTIxODMuLjNjNWZlMGUzZjE3ZTA3NzMyMTZiMTVm
ZDVjZmU1ZmU1OTBhYjAyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0
ZXJhdG9yLmgKQEAgLTExOSw3ICsxMTksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXIs
IHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPiBjbGFzcyBKU0RPTUl0ZXJhdG9yIDogcHVibAogCiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCi0gICAgT3B0aW9uYWw8dHlw
ZW5hbWUgRE9NV3JhcHBlZDo6SXRlcmF0b3I+IG1faXRlcmF0b3I7CisgICAgc3RkOjpvcHRpb25h
bDx0eXBlbmFtZSBET01XcmFwcGVkOjpJdGVyYXRvcj4gbV9pdGVyYXRvcjsKICAgICBJdGVyYXRp
b25LaW5kIG1fa2luZDsKIH07CiAKQEAgLTIzNiw3ICsyMzYsNyBAQCBKU0M6OkpTVmFsdWUgSlNE
T01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPjo6bmV4dChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdAogICAgICAgICBhdXRvIGl0ZXJhdG9yVmFsdWUgPSBtX2l0ZXJhdG9yLT5uZXh0KCk7
CiAgICAgICAgIGlmIChpdGVyYXRvclZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUl0
ZXJhdG9yUmVzdWx0T2JqZWN0KCZzdGF0ZSwgYXNKUyhzdGF0ZSwgaXRlcmF0b3JWYWx1ZSksIGZh
bHNlKTsKLSAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgIG1faXRlcmF0b3Ig
PSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBjcmVhdGVJdGVyYXRvclJlc3VsdE9i
amVjdCgmc3RhdGUsIEpTQzo6anNVbmRlZmluZWQoKSwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDNhZmY1YzgyZThkMTEzZDUwZDU2MGM0
MzI4MDk1NzQyMTEyN2RkODIuLmNiMWMzMjkxZDA2Mzk3OTU3ZWIwZTQzMDlmNzNlMzRiY2VhYzA5
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC0yMDYs
MTEgKzIwNiwyMCBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlND
OjpFeGVjU3RhdGUmIHN0YXRlKQogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWU+IGNsYXNzIERPTVBy
b21pc2UgewogcHVibGljOgogICAgIERPTVByb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBn
ZW5lcmljUHJvbWlzZSkgOiBtX3Byb21pc2VEZWZlcnJlZChXVEZNb3ZlKGdlbmVyaWNQcm9taXNl
KSkgeyB9Ci0KICAgICBET01Qcm9taXNlKERPTVByb21pc2UmJiBwcm9taXNlKSA6IG1fcHJvbWlz
ZURlZmVycmVkKFdURk1vdmUocHJvbWlzZS5tX3Byb21pc2VEZWZlcnJlZCkpIHsgfQorICAgIERP
TVByb21pc2UoY29uc3QgRE9NUHJvbWlzZSYgb3RoZXIpIDogbV9wcm9taXNlRGVmZXJyZWQob3Ro
ZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigpKSB7IH0KKworICAgIERPTVByb21pc2UmIG9w
ZXJhdG9yPShjb25zdCBET01Qcm9taXNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fcHJvbWlz
ZURlZmVycmVkID0gb3RoZXIuY29weVJlZigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQogCi0gICAgRE9NUHJvbWlzZShjb25zdCBET01Qcm9taXNlJikgPSBkZWZhdWx0OwotICAgIERP
TVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlIGNvbnN0JikgPSBkZWZhdWx0OworICAgIERP
TVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNlJiYgb3RoZXIpCisgICAgeworICAgICAgICBt
X3Byb21pc2VEZWZlcnJlZCA9IFdURk1vdmUob3RoZXIubV9wcm9taXNlRGVmZXJyZWQpOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IFZh
bHVlPgogICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3ZvaWQ8VD46OnZhbHVl
LCB2b2lkPjo6dHlwZSByZXNvbHZlKHR5cGVuYW1lIFByb21pc2VSZXN1bHRJbnNwZWN0b3I8VmFs
dWU+OjpUeXBlIHZhbHVlKSB7IG1fcHJvbWlzZURlZmVycmVkLT5yZXNvbHZlKHZhbHVlKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmlu
ZGV4IDQyODc2OTM5NDRiZmFmOTRlYmI5NmZmNzY2OTA1N2ZlYzQ0NTllYjQuLjQ1YTM2NTM1ZDBh
NGNmMDU2NDA1ZGM5YjM0MjYwZjNlZWZlNWVhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29s
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBzdGF0ZSwgUHJvcGVydAogewogICAgIC8vICgxKSBGaXJzdCwgaW5kZXhlZCBwcm9wZXJ0
aWVzLgogICAgIC8vIEhhbmQgb2ZmIGFsbCBpbmRleGVkIGFjY2VzcyB0byBnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4LCB3aGljaCBzdXBwb3J0cyB0aGUgaW5kZXhlZCBnZXR0ZXIuCi0gICAgaWYg
KE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwg
c3RhdGUsIGluZGV4LnZhbHVlKCksIHNsb3QpOwogCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5oCmluZGV4IDA4YzE0OWE1ODE3NGIzYmE0YzMyYjNhODg3M2NjYTdlOThhOWY2
NjguLmY2NTc4ODMyMjI1NmJjODcxODcwZDBiMGZmYWY1ZGY4Y2YzM2Q4MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBj
bGFzcyBKU0RpY3Rpb25hcnkgewogICAgIEdldFByb3BlcnR5UmVzdWx0IHRyeUdldFByb3BlcnR5
KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlJikgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqIGV4ZWNTdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBPcHRpb25hbDxUPiYgcmVz
dWx0KQorICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIHN0ZDo6b3B0aW9uYWw8VD4mIHJlc3VsdCkKICAgICB7
CiAgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBOdWxsb3B0OworICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVDdXN0b20uY3BwCmluZGV4IDQzZmY4MmUzZDZkYWZmYzRlZDk5MmRiNThjN2QwMTJm
NTlmMjE1ODkuLjY5ZDg3MjdiNzQwOTgyNzYyNWU1MGZhMjM5ZmFlMWFlOWQ1YmNmYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTRmlsZShFeGVjU3Rh
dGUmIGV4ZWMpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAKICAgICBTdHJpbmcgbm9ybWFsaXplZFR5cGU7Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4g
bGFzdE1vZGlmaWVkOworICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gbGFzdE1vZGlmaWVkOwog
CiAgICAgYXJnID0gZXhlYy5hcmd1bWVudCgyKTsKICAgICBpZiAoIWFyZy5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDZkNzNmMThiNjgyZGMwNDdhN2FjYmNhOWZk
NWYxOWNhYjczZjNmOTguLmY5NDI2NmJlMjE3MzA1NTgyYTBiOGM5NGQxNWI5MTU2MjE0NmMyNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmFsbCg8aW5kZXg+KSBldGMuCiAgICAgICAg
IFN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwotICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleCgq
c3RyaW5nLmltcGwoKSkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgoKnN0cmluZy5pbXBsKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxl
Y3Rpb24uaXRlbShpbmRleC52YWx1ZSgpKSkpOwogCiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRv
Y3VtZW50LmltYWdlcygnPG5hbWU+JykgZXRjLgpAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRl
KiBleGVjKQogICAgIC8vIFRoZSBzZWNvbmQgYXJnLCBpZiBzZXQsIGlzIHRoZSBpbmRleCBvZiB0
aGUgaXRlbSB3ZSB3YW50CiAgICAgU3RyaW5nIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleCgqZXhlYy0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZXhlYykuaW1wbCgpKSkg
eworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmV4
ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4ZWMpLmltcGwoKSkpIHsKICAgICAgICAgaWYg
KGF1dG8qIGl0ZW0gPSBjb2xsZWN0aW9uLm5hbWVkSXRlbVdpdGhJbmRleChzdHJpbmcsIGluZGV4
LnZhbHVlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMs
IGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCksICppdGVtKSk7CiAgICAgfQpAQCAtMTEyLDcg
KzExMiw3IEBAIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0
YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgYXJndW1lbnQg
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwotICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCphcmd1bWVudC5pbXBsKCkp
KQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFy
Z3VtZW50LmltcGwoKSkpCiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVlKCkpKTsKICAgICByZXR1cm4gbmFtZWRJdGVt
cyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIGFyZ3VtZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNF
bGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDc0ZTNlYjNkNjRlODI2Njk0ZjM2YzNjNTRkM2I4NjUz
MGRjZDgyZGEuLmQxY2ZiNzllYzM3ZDM2MjVhNGE2MzI1MjAwYmIxODlhZmVkYzE5NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1l
bnRDdXN0b20uY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVt
ZW50Ojp0b0RhdGFVUkwoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBhdXRvIHR5cGUgPSBjb252ZXJ0
PElETE51bGxhYmxlPElETERPTVN0cmluZz4+KHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCi0gICAgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
OwogICAgIGF1dG8gcXVhbGl0eVZhbHVlID0gc3RhdGUuYXJndW1lbnQoMSk7CiAgICAgaWYgKHF1
YWxpdHlWYWx1ZS5pc051bWJlcigpKQogICAgICAgICBxdWFsaXR5ID0gcXVhbGl0eVZhbHVlLnRv
TnVtYmVyKCZzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ltYWdlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0MDgyYjFmYWQyYmZmMDdmZjliMjk3NzY0YzQ4ZWQzODY3
MThlZDk4Li5kNjllZDc2ZjgxOWZlZTUwM2Q2ZTJkMTlmMzYxMDI5YjQ0YTkzYTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKQEAg
LTU4LDggKzU4LDggQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0ltYWdlQ29uc3RydWN0
b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogICAgIC8vIGFkZGVkIHRvIHRoZSB3aW5k
b3cgb2JqZWN0LiBUaGlzIGlzIGRvbmUgdG8gZW5zdXJlIHRoYXQgSlNEb2N1bWVudDo6dmlzaXQK
ICAgICAvLyB3aWxsIGJlIGNhbGxlZCwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgaW1hZ2UgZWxlbWVu
dCB0byBiZSBtYXJrZWQgaWYgbmVjZXNzYXJ5LgogICAgIHRvSlMoc3RhdGUsIGpzQ29uc3RydWN0
b3ItPmdsb2JhbE9iamVjdCgpLCAqZG9jdW1lbnQpOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB3
aWR0aDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHdpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodDsKICAg
ICBpZiAoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA+IDApIHsKICAgICAgICAgd2lkdGggPSBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoc3RhdGUpOwogICAgICAgICBpZiAoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA+IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKaW5kZXggZGY3ZTE4NDNkYmJkYjE0YjcyNTk4
Yjc2ZTE1YmE4MzMyNGFmNGQ2Yy4uMzUyOTY5ZmU4OTNhNDg2MGQwNjM5OTZjNmNhNDVhODY5Nzdh
MDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmlj
ZXNDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3Ry
aW5nQ29uc3RyYWludFdpdGhMaXN0KFN0cmluZ0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQsIHZvaQog
ICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmlu
Z0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBDb25zdHJhaW50U2V0
VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0
cmFpbnQ+IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0
eXBlLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKIHsKICAgICBhdXRvIGNv
bnN0cmFpbnQgPSBTdHJpbmdDb25zdHJhaW50KG5hbWUsIHR5cGUpOwogCkBAIC04NSw3ICs4NSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJh
aW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhCiAKICAgICAgICAgaWYgKGNvbnN0cmFpbnQuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50
KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1
ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBy
ZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoY29uc3QgRGljdGlv
bmFyeSYgbWVkaWEKIAogICAgICAgICBpZiAoY29uc3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0
cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBhcnJheSB2YWx1ZSBzaW5jZSBpdCBpcyBlbXB0eS4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJu
IFdURk1vdmUoY29uc3RyYWludCk7CkBAIC0xMTcsMTAgKzExNywxMCBAQCBzdGF0aWMgT3B0aW9u
YWw8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlU3RyaW5nQ29uc3RyYWludChjb25zdCBEaWN0aW9u
YXJ5JiBtZWRpYQogCiAgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgogICAgIExPRyhN
ZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJh
aW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5IG5vciBzZXF1ZW5jZSBu
b3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEJvb2xl
YW5Db25zdHJhaW50PiBjcmVhdGVCb29sZWFuQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFp
bnRUeXBlIHR5cGUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50
KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3Ry
YWludFNldFR5cGUpCiB7CiAgICAgYXV0byBjb25zdHJhaW50ID0gQm9vbGVhbkNvbnN0cmFpbnQo
bmFtZSwgdHlwZSk7CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Qm9vbGVh
bkNvbnN0cmFpbnQ+IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1l
ZAogCiAgICAgICAgIGlmIChjb25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgTE9H
KE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29u
c3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQg
b3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CkBAIC0x
NTYsMTAgKzE1NiwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNyZWF0
ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZAogCiAgICAgLy8gSW52YWxp
ZCBjb25zdHJhaW50IHZhbHVlLgogICAgIExPRyhNZWRpYSwgImNyZWF0ZUJvb2xlYW5Db25zdHJh
aW50KCkgLSBpZ25vcmluZyBib29sZWFuIGNvbnN0cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVp
dGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0
YXRpYyBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNv
bnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWlu
dFNldFR5cGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBjcmVhdGVE
b3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWlu
dFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCiB7CiAgICAgYXV0byBjb25zdHJhaW50ID0gRG91
YmxlQ29uc3RyYWludChuYW1lLCB0eXBlKTsKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERp
Y3Rpb25hcnkmIG1lZGlhCiAKICAgICAgICAgaWYgKGNvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVEb3VibGVDb25zdHJhaW50KCkgLSBpZ25vcmlu
ZyBkb3VibGUgY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBo
YXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3Ry
YWludCk7CkBAIC0yMDMsMTAgKzIwMywxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RG91YmxlQ29uc3Ry
YWludD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYQogCiAg
ICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgogICAgIExPRyhNZWRpYSwgImNyZWF0ZURv
dWJsZUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGRvdWJsZSBjb25zdHJhaW50ICclcycgc2luY2Ug
aXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5IG5vciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gY3JlYXRlSW50Q29uc3RyYWlu
dChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0
cmFpbnRTZXRUeXBlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50Q29uc3RyYWludD4gY3JlYXRl
SW50Q29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUsIENvbnN0cmFpbnRT
ZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQogewogICAgIGF1dG8gY29uc3RyYWludCA9IEludENv
bnN0cmFpbnQobmFtZSwgdHlwZSk7CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8SW50Q29uc3RyYWludD4gY3JlYXRlSW50Q29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYVRyYWNrQwogCiAgICAgICAgIGlmIChjb25zdHJhaW50LmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlSW50Q29uc3RyYWludCgpIC0gaWdub3JpbmcgbG9uZyBj
b25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxp
ZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJzLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKQEAg
LTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gY3JlYXRlSW50
Q29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQwogCiAgICAgLy8gSW52YWxp
ZCBjb25zdHJhaW50IHZhbHVlLgogICAgIExPRyhNZWRpYSwgImNyZWF0ZUludENvbnN0cmFpbnQo
KSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAnJXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEg
ZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIHZv
aWQgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNldEZvcktleShjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcAppbmRleCBhYzliNWQzMDQ3NTNmYjBkMTcyNzhiMjgyZTVjOGZhNGEw
NjRmNTMzLi5iM2NhYTJjODAyYTA3ZGZlMDQ4MDliM2M3MmI4ODY4NzM1MjRlMTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlw
dG9DdXN0b20uY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4
ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGkK
IAogICAgIEFTU0VSVChrZXlTZXJpYWxpemF0aW9uKTsKIAotICAgIE9wdGlvbmFsPENyeXB0b0Fs
Z29yaXRobVBhaXI+IHJlY29uY2lsZWRSZXN1bHQgPSBrZXlTZXJpYWxpemF0aW9uLT5yZWNvbmNp
bGVBbGdvcml0aG0oYWxnb3JpdGhtLmdldCgpLCBwYXJhbWV0ZXJzLmdldCgpKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZWRSZXN1bHQgPSBrZXlTZXJp
YWxpemF0aW9uLT5yZWNvbmNpbGVBbGdvcml0aG0oYWxnb3JpdGhtLmdldCgpLCBwYXJhbWV0ZXJz
LmdldCgpKTsKICAgICBpZiAoIXJlY29uY2lsZWRSZXN1bHQpIHsKICAgICAgICAgaWYgKCFzY29w
ZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGli
bGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMjA4N2E4
NmY3M2Y2YjI2YjQ3Nzg1MzRkYTZkZDFiYWY3YTRhOTA3My4uMmYzZjIwYzBiYTFjYjcyNTA0ZjE2
NDg4YjQ2NDM0ZjEzMDBlMDU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFNjcmlwdENvbnRy
b2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3JpcAogICAgICAgICAgICAgaWYgKHN5bWJvbC0+cHJpdmF0ZU5hbWUoKSA9PSBtb2R1bGVM
b2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJvbCkgewogICAgICAgICAgICAgICAgIG1vZHVs
ZVNjcmlwdC0+bm90aWZ5TG9hZEZhaWxlZChMb2FkYWJsZVNjcmlwdDo6RXJyb3IgewogICAgICAg
ICAgICAgICAgICAgICBMb2FkYWJsZVNjcmlwdDo6RXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsCi0g
ICAgICAgICAgICAgICAgICAgIE51bGxvcHQKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpudWxs
b3B0CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBA
QCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0cygpCiAKIEpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1cmUg
PyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKSA6IE51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3IoZm9yY2VVc2VyR2VzdHVyZSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
U3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgIFNjcmlw
dFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkp
OwogCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwg
aXNQYXVzZWQoKSkKQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNh
bkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyByZWFzbwog
CiBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgRXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9u
RGV0YWlscykKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZv
cmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKSA6IE51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9y
IGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxv
cHQpOwogICAgIHJldHVybiBleGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBt
X2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgZXhjZXB0aW9uRGV0YWlscyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggNTJjYjYxNWNjOGEyNzNkZDg2NTgwZWJkNGI2MGJmMDczNTk2YmZjOS4uMjRmNGJlZmRhN2E2
ZTBjYjNmNWNiMGI5MmUyZTQzZTM3M2YzNzcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQwNyw3ICs0MDcsNyBAQCBz
dWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAgfTsKIAogICAgIGlmICgkaW5k
ZXhlZEdldHRlckZ1bmN0aW9uKSB7Ci0gICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdElt
cGwsICIgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwg
IiAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpO1xuIik7CiAKICAgICAgICAgIyBJZiB0aGUgaXRlbSBmdW5jdGlvbiByZXR1
cm5zIGEgc3RyaW5nIHRoZW4gd2UgbGV0IHRoZSBUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzIGhh
bmRsZSB0aGUgY2FzZXMKICAgICAgICAgIyB3aGVyZSB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdl
LgpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRh
dGlvbkNvbnRlbnQKICAgICAjIEZJWE1FOiBDaGFuZ2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBF
eGVjU3RhdGUmLgogICAgICMgRklYTUU6IENvbnNpZGVyIHVzaW5nIHRvU3RyaW5nT3JOdWxsIHRv
IG1ha2UgZXhjZXB0aW9uIGNoZWNraW5nIGZhc3Rlci4KICAgICAjIEZJWE1FOiBDb25zaWRlciBm
aW5kaW5nIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvIG1hdGNoIGFnYWluc3QgYWxsIHRoZSBzdHJp
bmdzIHF1aWNrbHkuCi0gICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBPcHRpb25hbDwkY2xhc3NO
YW1lPiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpXG4iOworICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDwk
Y2xhc3NOYW1lPiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpXG4iOwogICAgICRyZXN1bHQgLj0gIntcbiI7CiAgICAgJHJlc3VsdCAu
PSAiICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpO1xuIjsK
ICAgICBmb3JlYWNoIG15ICR2YWx1ZSAoQHskZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTEw
MTIsNyArMTAxMiw3IEBAIHN1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250
ZW50CiAgICAgICAgIH0KICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4gJHtjbGFz
c05hbWV9Ojoke2VudW1lcmF0aW9uVmFsdWVOYW1lfTtcbiI7CiAgICAgfQotICAgICRyZXN1bHQg
Lj0gIiAgICByZXR1cm4gTnVsbG9wdDtcbiI7CisgICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7XG4iOwogICAgICRyZXN1bHQgLj0gIn1cblxuIjsKIAogICAgICRyZXN1bHQg
Lj0gInRlbXBsYXRlPD4gJGNsYXNzTmFtZSBjb252ZXJ0RW51bWVyYXRpb248JGNsYXNzTmFtZT4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CkBAIC0xMDYzLDcgKzEwNjMsNyBA
QCBzdWIgR2VuZXJhdGVFbnVtZXJhdGlvbkhlYWRlckNvbnRlbnQKICAgICBteSAkcmVzdWx0ID0g
IiI7CiAgICAgJHJlc3VsdCAuPSAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gSlNDOjpKU1N0cmlu
ZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsICRjbGFzc05hbWUpO1xu
XG4iOwotICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gT3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFy
c2VFbnVtZXJhdGlvbjwkY2xhc3NOYW1lPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
XG4iOworICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDwkY2xhc3NOYW1l
PiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTtcbiI7CiAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiAkY2xhc3NOYW1lIGNvbnZlcnRF
bnVtZXJhdGlvbjwkY2xhc3NOYW1lPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7XG4i
OwogICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJh
dGlvblZhbHVlczwkY2xhc3NOYW1lPigpO1xuXG4iOwogICAgICRyZXN1bHQgLj0gIiNlbmRpZlxu
XG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTExMTgsNyArMTExOCw3IEBAIHN1YiBHZW5l
cmF0ZURlZmF1bHRWYWx1ZQogICAgIH0KICAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAibnVsbCIp
IHsKICAgICAgICAgaWYgKCR0eXBlLT5pc1VuaW9uKSB7Ci0gICAgICAgICAgICByZXR1cm4gIk51
bGxvcHQiIGlmICR0eXBlLT5pc051bGxhYmxlOworICAgICAgICAgICAgcmV0dXJuICJzdGQ6Om51
bGxvcHQiIGlmICR0eXBlLT5pc051bGxhYmxlOwogCiAgICAgICAgICAgICBteSAkSURMVHlwZSA9
IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwogICAgICAgICAgICAgcmV0dXJuICJjb252
ZXJ0PCR7SURMVHlwZX0+KHN0YXRlLCBqc051bGwoKSk7IjsKQEAgLTExMjYsNyArMTEyNiw3IEBA
IHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgICAgICByZXR1cm4gImpzTnVsbCgpIiBpZiAk
dHlwZS0+bmFtZSBlcSAiYW55IjsKICAgICAgICAgcmV0dXJuICJudWxscHRyIiBpZiAkY29kZUdl
bmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRB
cnJheVR5cGUoJHR5cGUpOwogICAgICAgICByZXR1cm4gIlN0cmluZygpIiBpZiAkY29kZUdlbmVy
YXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKLSAgICAgICAgcmV0dXJuICJOdWxsb3B0IjsKKyAg
ICAgICAgcmV0dXJuICJzdGQ6Om51bGxvcHQiOwogICAgIH0KICAgICBpZiAoJGRlZmF1bHRWYWx1
ZSBlcSAiW10iKSB7CiAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50
ZXJmYWNlLCAkdHlwZSk7CkBAIC0zNDIzLDcgKzM0MjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihjZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q3VzdG9tSW5kZXhlZFNldHRlcn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHBy
b3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFs
dWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7CkBAIC00NDE4LDcgKzQ0MTgsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sK
ICAgICAgICAgICAgIG15ICRhcmd1bWVudExvb2t1cE1ldGhvZCA9ICRhcmd1bWVudC0+aXNPcHRp
b25hbCA/ICJhcmd1bWVudCIgOiAidW5jaGVja2VkQXJndW1lbnQiOwogCiAgICAgICAgICAgICBp
ZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVudC0+ZGVmYXVsdCkp
IHsKLSAgICAgICAgICAgICAgICAkbmF0aXZlVHlwZSA9ICJPcHRpb25hbDwkY2xhc3NOYW1lPiI7
CisgICAgICAgICAgICAgICAgJG5hdGl2ZVR5cGUgPSAic3RkOjpvcHRpb25hbDwkY2xhc3NOYW1l
PiI7CiAgICAgICAgICAgICAgICAgJG9wdGlvbmFsVmFsdWUgPSAkbmFtZTsKICAgICAgICAgICAg
ICAgICAkZGVmaW5lT3B0aW9uYWxWYWx1ZSA9ICRuYW1lOwogICAgICAgICAgICAgfQpAQCAtNDQ3
Myw4ICs0NDczLDggQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAg
ICAgJG91dGVyID0gInN0YXRlLT4kYXJndW1lbnRMb29rdXBNZXRob2QoJGFyZ3VtZW50SW5kZXgp
LmlzVW5kZWZpbmVkKCkgPyAkZGVmYXVsdFZhbHVlIDogIjsKICAgICAgICAgICAgICAgICAkaW5u
ZXIgPSAic3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4KSI7CiAgICAgICAg
ICAgICB9IGVsc2lmICgkYXJndW1lbnQtPmlzT3B0aW9uYWwgJiYgIWRlZmluZWQoJGFyZ3VtZW50
LT5kZWZhdWx0KSkgewotICAgICAgICAgICAgICAgICMgVXNlIFdURjo6T3B0aW9uYWw8PigpIGZv
ciBvcHRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgbWlzc2luZyBvciB1bmRlZmluZWQgYW5kIHRo
YXQgZG8gbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlIGluIHRoZSBJREwuCi0gICAgICAgICAgICAg
ICAgJG91dGVyID0gInN0YXRlLT4kYXJndW1lbnRMb29rdXBNZXRob2QoJGFyZ3VtZW50SW5kZXgp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDwkbmF0aXZlVHlwZT4oKSA6ICI7CisgICAgICAgICAg
ICAgICAgIyBVc2Ugc3RkOjpvcHRpb25hbDw+KCkgZm9yIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0
IGFyZSBtaXNzaW5nIG9yIHVuZGVmaW5lZCBhbmQgdGhhdCBkbyBub3QgaGF2ZSBhIGRlZmF1bHQg
dmFsdWUgaW4gdGhlIElETC4KKyAgICAgICAgICAgICAgICAkb3V0ZXIgPSAic3RhdGUtPiRhcmd1
bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJbmRleCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0
aW9uYWw8JG5hdGl2ZVR5cGU+KCkgOiAiOwogICAgICAgICAgICAgICAgICRpbm5lciA9ICJzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpIjsKICAgICAgICAgICAgIH0gZWxz
aWYgKCgkYXJndW1lbnQtPnR5cGUtPm5hbWUgZXEgIkV2ZW50TGlzdGVuZXIiIHx8ICRhcmd1bWVu
dC0+dHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29sdmVyIikgJiYgKCRhcmd1bWVudC0+aXNPcHRp
b25hbCB8fCAkdHlwZS0+aXNOdWxsYWJsZSkpIHsKICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAi
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDI0NTBkZDk1YTA0MzNiNWNlNDkzMWRkNGMxMDIy
MWFjMzc4YWJjM2IuLmJjMzZjNDIwNmIxNGViNWUxZGE2OTUxNWFiMTY1NmYxNTBiOTEyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0
NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSlNGbG9hdDY0QXJy
YXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlCiB7CiAgICAgSlNGbG9hdDY0QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9h
dDY0QXJyYXkqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIGluZGV4LnZhbHVlKCkgPCBz
dGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkg
ewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHRoaXNPYmplY3QtPmdldEJ5SW5k
ZXgoZXhlYywgaW5kZXgudmFsdWUoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Niw3
ICsxODYsNyBAQCBib29sIEpTRmxvYXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogewogICAgIEpTRmxvYXQ2NEFycmF5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4ob2JqZWN0KTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOworICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
IChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgc3RhdGljX2Nhc3Q8RmxvYXQ2NEFycmF5Kj4odGhp
c09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNj
cmlwdG9yKHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSksIERvbnRE
ZWxldGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEpT
RmxvYXQ2NEFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbQogewogICAgIEpTRmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRmxvYXQ2NEFycmF5Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgdGhpc09i
amVjdC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggZTYxM2NhY2QyNDAz
YmZhYWQ4NjI4OTBjMzBkZTViZmVhMzYyMzIzYS4uN2E1YzAwMTQ5NjYzODdkZWM5MjQzOWFmNTRk
NjAzZDE5NGY1MWExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xMjgsNyArMTI4
LDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFAKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IG9w
dGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0
LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25h
bEluZGV4LnZhbHVlKCk7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBSZWFkT25seTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggMTVlZjRlZDdjOTI0ZDRjMzllYmE2ZDgwMThmODk0Mjg3NjU1M2FlZC4u
YWVlMDllZjVjMmY0MzdhNzBiMzQ2NzlhYmQzOTBhODJkZDQwOGI2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25U
b0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RPYmo6OkVudW1UeXBlCiAgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmco
JnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUuaXNFbXB0eSgpKQpAQCAtMTE2LDcgKzExNiw3
IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRp
b248VGVzdE9iajo6RW51bVR5cGU+KEV4ZWNTCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVt
VHlwZTo6RW51bVZhbHVlMjsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTMiKQog
ICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTM7Ci0gICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0
T2JqOjpFbnVtVHlwZSBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0xNTIsNyArMTUyLDcgQEAgdGVtcGxhdGU8
PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0
T2JqOjpPcHRpb25hbAogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
T3B0aW9uYWw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0
ZDo6b3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6
T3B0aW9uYWw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1Zh
bHVlLmlzRW1wdHkoKSkKQEAgLTE2Myw3ICsxNjMsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihFeGVj
UwogICAgICAgICByZXR1cm4gVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUyOwogICAg
IGlmIChzdHJpbmdWYWx1ZSA9PSAiT3B0aW9uYWxWYWx1ZTMiKQogICAgICAgICByZXR1cm4gVGVz
dE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzOwotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6T3B0aW9uYWwg
Y29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQpAQCAtMTk1LDE0ICsxOTUsMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBBbHRlcm5hdGVFbnVtTmFt
ZQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2Fz
dDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8
QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8
QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9
IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVt
VmFsdWUxIikKICAgICAgICAgcmV0dXJuIEFsdGVybmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUxOwog
ICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVlMiIpCiAgICAgICAgIHJldHVybiBBbHRl
cm5hdGVFbnVtTmFtZTo6RW51bVZhbHVlMjsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IEFsdGVybmF0ZUVudW1OYW1lIGNvbnZl
cnRFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKQEAgLTIzNCwxMiArMjM0LDEyIEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZl
cnRFbnVtZXJhdGlvblRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgVGVzdE9iajo6RW51bUEgZW51CiAg
ICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNp
emVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0
T2JqOjpFbnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpF
bnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJp
bmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkEiKQogICAgICAgICByZXR1cm4g
VGVzdE9iajo6RW51bUE6OkE7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQSBjb252ZXJ0RW51bWVyYXRp
b248VGVzdE9iajo6RW51bUE+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0y
NzMsMTIgKzI3MywxMiBAQCB0ZW1wbGF0ZTw+IEpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25U
b0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RPYmo6OkVudW1CIGVudQogICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBh
cnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51
bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1C
OjpCOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUIgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkVu
dW1CPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzEyLDEyICszMTIsMTIg
QEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUm
IHN0YXRlLCBUZXN0T2JqOjpFbnVtQyBlbnUKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
JnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwog
fQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OkVudW1DPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1DPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8g
c3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdW
YWx1ZSA9PSAiQyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtQzo6QzsKLSAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFRl
c3RPYmo6OkVudW1DIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4oRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTM1MSwxNCArMzUxLDE0IEBAIHRlbXBsYXRlPD4g
SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoRXhlY1N0YXRlJiBzdGF0ZSwgVGVzdE9i
ajo6S2luZCBlbnVtCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVz
W3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9u
YWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1
ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAicXVpY2siKQog
ICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6UXVpY2s7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJkZWFkIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OktpbmQ6OkRlYWQ7Ci0gICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBU
ZXN0T2JqOjpLaW5kIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzkwLDE0ICszOTAsMTQgQEAgdGVtcGxhdGU8PiBK
U1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0T2Jq
OjpTaXplIGVudW0KICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNb
c3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+
IE9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25h
bDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVl
LnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJzbWFsbCIpCiAg
ICAgICAgIHJldHVybiBUZXN0T2JqOjpTaXplOjpTbWFsbDsKICAgICBpZiAoc3RyaW5nVmFsdWUg
PT0gIm11Y2gtbXVjaC1sYXJnZXIiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6U2l6ZTo6TXVj
aE11Y2hMYXJnZXI7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpTaXplIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0
T2JqOjpTaXplPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtNDI5LDE0ICs0
MjksMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVj
U3RhdGUmIHN0YXRlLCBUZXN0T2JqOjpDb25maWRlbmMKICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBhcnNl
RW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5n
KCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJoaWdoIikKICAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJraW5k
YS1sb3ciKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6Q29uZmlkZW5jZTo6S2luZGFMb3c7Ci0g
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxh
dGU8PiBUZXN0T2JqOjpDb25maWRlbmNlIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25m
aWRlbmNlPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtNTU0LDcgKzU1NCw3
IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0
T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmCiAgICAgICAgIHJlc3VsdC5udWxsYWJsZUludGVn
ZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMTG9uZz4+KHN0YXRlLCBudWxs
YWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQubnVsbGFibGVJ
bnRlZ2VyV2l0aERlZmF1bHQgPSBOdWxsb3B0OworICAgICAgICByZXN1bHQubnVsbGFibGVJbnRl
Z2VyV2l0aERlZmF1bHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgSlNWYWx1ZSBudWxsYWJsZU5vZGVW
YWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJudWxsYWJsZU5vZGUiKSk7CiAg
ICAgaWYgKCFudWxsYWJsZU5vZGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3Vs
dC5udWxsYWJsZU5vZGUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+
KHN0YXRlLCBudWxsYWJsZU5vZGVWYWx1ZSk7CkBAIC01NzIsNyArNTcyLDcgQEAgdGVtcGxhdGU8
PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25h
cnk+KEV4ZWNTdGF0ZSYKICAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25NZW1iZXIgPSBjb252
ZXJ0PElETE51bGxhYmxlPElETFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2RlPj4+Pihz
dGF0ZSwgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQubnVsbGFi
bGVVbmlvbk1lbWJlciA9IE51bGxvcHQ7CisgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uTWVt
YmVyID0gc3RkOjpudWxsb3B0OwogICAgIEpTVmFsdWUgcmVzdHJpY3RlZERvdWJsZVZhbHVlID0g
aXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlc3RyaWN0ZWREb3VibGUiKSk7CiAgICAg
aWYgKCFyZXN0cmljdGVkRG91YmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1
bHQucmVzdHJpY3RlZERvdWJsZSA9IGNvbnZlcnQ8SURMRG91YmxlPihzdGF0ZSwgcmVzdHJpY3Rl
ZERvdWJsZVZhbHVlKTsKQEAgLTE4MTYsNyArMTgxNiw3IEBAIGJvb2wgSlNUZXN0T2JqOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVy
dHlOCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChvcHRpb25hbEluZGV4KSB7CiAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOwogICAgICAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzID0gUmVhZE9ubHk7CkBAIC01MzY5LDcgKzUzNjksNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxFbgogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51bUFyZ1ZhbHVlID0gc3RhdGUt
PmFyZ3VtZW50KDApOwotICAgIE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBlbnVtQXJnOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IGVudW1Bcmc7CiAgICAgaWYgKCFl
bnVtQXJnVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICBlbnVtQXJnID0gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oKnN0YXRlLCBlbnVtQXJnVmFsdWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAt
NTk5MSw3ICs1OTkxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXIKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25D
b25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExv
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhX
VEZNb3ZlKG9wdCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC02MDMxLDcgKzYwMzEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbm9uT3B0ID0gY29udmVydDxJRExMb25nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25m
aWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRl
ZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIEludGVnZXJDb252ZXJzaW9uQ29uZmln
dXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0
aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MDUzLDkgKzYwNTMsOSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uT3B0aW9uYQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
bm9uT3B0ID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBv
cHQxID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90
PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgx
KSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0
MSA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQz
Ml90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBv
cHQyID0gc3RhdGUtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90
PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgy
KSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0
MiA9IHN0YXRlLT5hcmd1bWVudCgyKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQz
Ml90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgyKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5t
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQp
LCBXVEZNb3ZlKG9wdDEpLCBXVEZNb3ZlKG9wdDIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjMwNyw3ICs2MzA3LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTG8KICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1
dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxp
bnQ2NF90PigpIDogY29udmVydDxJRExMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAg
ICBhdXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpv
cHRpb25hbDxpbnQ2NF90PigpIDogY29udmVydDxJRExMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9y
bWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjM0Myw3
ICs2MzQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW4KICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDx1aW50NjRfdD4oKSA6IGNvbnZlcnQ8SURMVW5zaWdu
ZWRMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBhdXRvIG51bWJlciA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDx1aW50NjRfdD4oKSA6
IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhXVEZNb3ZlKG51bWJlcikpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02Mzc5LDcgKzYz
NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiBjb252ZXJ0PElETFNlcXVl
bmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
KyAgICBhdXRvIGFycmF5ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PigpIDogY29udmVydDxJRExTZXF1ZW5jZTxJRExET01T
dHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoYXJyYXkpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjQxNSw3ICs2NDE1LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm8KICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9u
YWw8Ym9vbD4oKSA6IGNvbnZlcnQ8SURMQm9vbGVhbj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOworICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gc3RkOjpvcHRpb25hbDxib29sPigpIDogY29udmVydDxJRExCb29sZWFuPigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW4oV1RGTW92ZShiKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTY1MjgsNyArNjUyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlCiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIHJlY29yZCA9
IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gTnVsbG9wdCA6IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMUmVjb3JkPElETERPTVN0cmluZywgSURMTG9uZz4+Pigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byByZWNvcmQgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6bnVsbG9wdCA6IGNvbnZlcnQ8SURMTnVsbGFibGU8
SURMUmVjb3JkPElETERPTVN0cmluZywgSURMTG9uZz4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChXVEZNb3Zl
KHJlY29yZCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC02Nzg5LDcgKzY3ODksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMkNhbAogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gb2JqQXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExJbnRlcmZhY2U8VGVzdE9iaj4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmpl
Y3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBsb25nQXJn
ID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90Pigp
IDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwg
SW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gbG9uZ0Fy
ZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQz
Ml90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5v
dmVybG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJnKSwgV1RGTW92ZShsb25nQXJnKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTcwOTgsNyArNzA5OCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0
T2JqPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVk
TWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIGxv
bmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMy
X3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBs
b25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShvYmpBcmcp
LCBXVEZNb3ZlKGxvbmdBcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNzUwNSw3ICs3NTA1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwKICAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgYXV0byBh
cmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+
KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBhcmcg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8aW50MzJf
dD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRp
b25hbChXVEZNb3ZlKGFyZykpKSk7CiB9CkBAIC04MDYwLDcgKzgwNjAsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uVwogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgYXV0byBhID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxp
bnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1
dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxp
bnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1w
bC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoV1RGTW92ZShhKSwg
V1RGTW92ZShwcm9taXNlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaAppbmRleCBjNDRiMWU0ZjcxYmY5MzMzMjQ4MDY4ZDdiZDcxYmU0NGJmYzMxYjJj
Li4yZjFkZjc1MjVmZjhlYmU0NTRlMTZjYWIyMDYzZDE3NzNmYjg1ODQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0x
MDMsMTkgKzEwMywxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJU
cmFpdHM8VGVzdE9iaj4gewogfTsKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVu
dW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RPYmo6OkVudW1UeXBlKTsKIAotdGVt
cGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
T2JqOjpFbnVtVHlwZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8
PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1UeXBlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+
IFRlc3RPYmo6OkVudW1UeXBlIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4o
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpOwogCiB0ZW1wbGF0
ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUm
LCBUZXN0T2JqOjpPcHRpb25hbCk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0
aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpPcHRp
b25hbD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4oSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBUZXN0T2JqOjpPcHRpb25hbCBjb252ZXJ0RW51
bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
KTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0
T2JqOjpPcHRpb25hbD4oKTsKIAogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51
bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgQWx0ZXJuYXRlRW51bU5hbWUpOwogCi10ZW1w
bGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwYXJzZUVudW1lcmF0aW9uPEFsdGVy
bmF0ZUVudW1OYW1lPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+
IHN0ZDo6b3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJu
YXRlRW51bU5hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4g
QWx0ZXJuYXRlRW51bU5hbWUgY29udmVydEVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCk7CiAKQEAgLTEyMyw3
ICsxMjMsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCk7CiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RPYmo6OkVudW1BKTsKIAot
dGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
T2JqOjpFbnVtQT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBz
dGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVu
dW1BPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6
OkVudW1BIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0
aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1BPigpOwogCkBAIC0xMzMsNyArMTMzLDcgQEAgdGVtcGxh
dGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1B
PigpOwogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMo
SlNDOjpFeGVjU3RhdGUmLCBUZXN0T2JqOjpFbnVtQik7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2Jq
OjpFbnVtQj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQiBjb252ZXJ0RW51bWVy
YXRpb248VGVzdE9iajo6RW51bUI+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRl
bXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpF
bnVtQj4oKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQj4oKTsKIAogdGVtcGxhdGU8PiBK
U0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVz
dE9iajo6RW51bUMpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVy
YXRpb248VGVzdE9iajo6RW51bUM+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRl
bXBsYXRlPD4gVGVzdE9iajo6RW51bUMgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1D
PihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIq
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUM+KCk7CiAKQEAgLTE1MSwx
OSArMTUxLDE5IEBAIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlczxUZXN0T2JqOjpFbnVtQz4oKTsKIAogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252
ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVzdE9iajo6S2luZCk7CiAKLXRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpLaW5kPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6
b3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OktpbmQg
Y29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
czxUZXN0T2JqOjpLaW5kPigpOwogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRF
bnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBUZXN0T2JqOjpTaXplKTsKIAotdGVtcGxh
dGU8PiBPcHRpb25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNp
emU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRp
b25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVzdE9iajo6U2l6ZSBjb252
ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRl
c3RPYmo6OlNpemU+KCk7CiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1l
cmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RPYmo6OkNvbmZpZGVuY2UpOwogCi10ZW1w
bGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBhcnNlRW51bWVyYXRpb248VGVz
dE9iajo6Q29uZmlkZW5jZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBhcnNlRW51bWVyYXRpb248
VGVzdE9iajo6Q29uZmlkZW5jZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVt
cGxhdGU8PiBUZXN0T2JqOjpDb25maWRlbmNlIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpD
b25maWRlbmNlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNv
bnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6Q29uZmlkZW5jZT4o
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKaW5kZXggMWEy
M2U5M2EwNGMwODViNTI3ZmVkM2ZmODRkNGYxY2FhNGU5N2Q4My4uNjhhZmJkNjlhNGJkYWQ3MWM5
Y2MwZDQ5NGYzYTY3MTgzN2IyMmU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURp
Y3Rpb25hcnkuY3BwCkBAIC00MywxNCArNDMsMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29u
dmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0U3RhbmRhbG9uZURpY3QK
ICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8
c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9u
ZURpY3Rpb25hcnlGaWxlPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRh
bG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlv
bmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
Zygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiZW51bVZhbHVlMSIpCiAgICAgICAg
IHJldHVybiBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9u
YXJ5RmlsZTo6RW51bVZhbHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1WYWx1ZTIi
KQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFs
b25lRGljdGlvbmFyeUZpbGU6OkVudW1WYWx1ZTI7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0U3RhbmRhbG9uZURpY3Rp
b25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZSBjb252ZXJ0RW51bWVyYXRpb248
VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnku
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFs
b25lRGljdGlvbmFyeS5oCmluZGV4IGZhZjExMDg1ODljYjNmNjA5ZjIwMTdmZGFkMTc5MDU0MDg0
MTUzNDEuLjMyYTgxYjY2MjI3ZDY2NmEyOGMwYWQ2NmIzZTRmM2M0YTcwYTUxMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFs
b25lRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5oCkBAIC0zMSw3ICszMSw3IEBAIHRlbXBs
YXRlPD4gRGljdGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBs
TmFtZT4oSlNDOjpFeGVjU3RhCiAKIHRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVu
dW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6
RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxU
ZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxv
bmVEaWN0aW9uYXJ5RmlsZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxh
dGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRh
bG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlv
bmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUlu
U3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9u
ZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURp
Y3Rpb25hcnlGaWxlPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRp
b24uY3BwCmluZGV4IGQ0Mzc0NjIwMmYyOTBlODQxYTc1MzNhYjBkYWQxODUwZGM2YzI4MTEuLmEx
ODg2YTdkMTkzNWM2OTVkNzc0OWU1MTcyZjlkMjljM2MyODFiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCkBAIC00MywxNCArNDMsMTQgQEAgdGVtcGxh
dGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBU
ZXN0U3RhbmRhbG9uZUVudW0KICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2
YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1w
bGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRp
b248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9u
PiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRv
V1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUxIikK
ICAgICAgICAgcmV0dXJuIFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb246OkVudW1WYWx1ZTE7CiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUyIikKICAgICAgICAgcmV0dXJuIFRlc3RT
dGFuZGFsb25lRW51bWVyYXRpb246OkVudW1WYWx1ZTI7Ci0gICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0U3RhbmRhbG9uZUVu
dW1lcmF0aW9uIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxv
bmVFbnVtZXJhdGlvbi5oCmluZGV4IDhhYWI4OWI5NDNlNzdiOTYxYjMyYTE3ZDY4ZWMwOTMyNGMz
YjhjNTIuLjgwNjIyYWQzMDNkZmQ0YzdhNDJkOTFlY2MzYWE2MDM1ZDk3MmIyNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFs
b25lRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVt
ZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uKTsK
IAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPiBwYXJzZUVu
dW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1l
cmF0aW9uPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVzdFN0YW5kYWxvbmVFbnVt
ZXJhdGlvbiBjb252ZXJ0RW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCmluZGV4IDliNDVlZjA4ZjVkNDE3ZGM0ZjljN2E2YmZmMzcxNWQyMzcz
ODJjOTcuLmQwZTNkY2Q1MzU5Y2M1MTdhNTJjYmFlYTI4ZGZmMjE4OGI3OGE2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93Q2FsbGVy
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIGNvbG9yID0gc3RhdGUtPmFyZ3VtZW50KDMpLmlzVW5kZWZpbmVkKCkgPyBTdHJp
bmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgzKSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRv
IGFscGhhID0gc3RhdGUtPmFyZ3VtZW50KDQpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxmbG9h
dD4oKSA6IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDQpKTsKKyAgICBhdXRvIGFscGhhID0gc3RhdGUtPmFyZ3VtZW50KDQpLmlz
VW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPGZsb2F0PigpIDogY29udmVydDxJRExVbnJlc3Ry
aWN0ZWRGbG9hdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoNCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1w
bC5zZXRTaGFkb3coV1RGTW92ZSh3aWR0aCksIFdURk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVy
KSwgV1RGTW92ZShjb2xvciksIFdURk1vdmUoYWxwaGEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjY5LDcgKzY2OSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dp
dGhDbGFtcENhCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcmcxID0g
Y29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpDbGFtcCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRv
IGFyZzIgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPHVpbnQ2
NF90PigpIDogY29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpDbGFtcCk7
CisgICAgYXV0byBhcmcyID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PigpIDogY29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uOjpDbGFtcCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLmZ1bmNXaXRoQ2xhbXAoV1RGTW92ZShhcmcxKSwgV1RG
TW92ZShhcmcyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCBkMzBhNTg1YmIzMzU0
ZWM4ZTQyZDRlOGZhZTE4ZmRlYzUzNTU5ZDJkLi5iODc4ODcxOGM1ODEzYTFhY2QyYzY2Y2RjZjcz
YzdhY2U0MjhjN2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICAKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGluZGV4ICYmIGluZGV4LnZhbHVlKCkg
PCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIERvbnREZWxldGUgfCBEb250RW51bSwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmdl
dENvbmNyZXRlQXJyYXkoKS0+dmFsdWVBdChleGVjLCBpbmRleC52YWx1ZSgpKSk7CkBAIC0xMjUs
NyArMTI1LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CiAgICAgCiAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAppbmRleCAyZmNjMzExOTljYTg1YWJiODUwYTg0ZDEz
MzBkZGVjZTRkNDc4ZTAzLi4yMmRjZmNiY2RhZTk1YmIxMWM4ZmI3YmY2OTljZTlkZTNlMjI4MzMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5jcHAKQEAgLTQ3LDE3ICs0NywxNyBAQCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Q3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnkoKQogICAgIHBsYXRmb3JtUmVnaXN0ZXJBbGdvcml0aG1zKCk7CiB9
CiAKLU9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5OjppZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbmFtZSkKK3N0ZDo6b3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9jayhyZWdpc3RyeU11dGV4KTsKIAogICAgIC8v
IEZJWE1FOiBIb3cgaXMgaXQgaGVscGZ1bCB0byBjYWxsIGlzb2xhdGVkQ29weSBvbiB0aGUgYXJn
dW1lbnQgdG8gZmluZD8KICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJzLmZpbmQo
bmFtZS5pc29sYXRlZENvcHkoKSk7CiAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV9pZGVudGlmaWVy
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gaWRlbnRpZmllci0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCmluZGV4IDNkMTU0NDU3MjBk
NDUyYmZiYmJjMjMzNTlhN2Y2ZWIzNWRlOTNhZDEuLjc1YTljMmVhYmZkMjZiYmNhZjcyZjkyMjhj
ZTM0YWI3NTczOWNjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdv
cml0aG1SZWdpc3RyeS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIENyeXB0b0FsZ29yaXRobVJl
Z2lzdHJ5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkmIHNp
bmdsZXRvbigpOwogCi0gICAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaWRl
bnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+IGlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIG5hbWUo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CiAKICAgICBSZWZQdHI8Q3J5cHRvQWxnb3JpdGht
PiBjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0tleVNlcmlhbGl6YXRpb24uaAppbmRleCBjMzYzNjJiYTEyYzBmMGQyNDg0
NDg5NzA5NDUyOTk3M2YzMTI4NDlmLi45MjYzODhmYmVkOWY5ODljYmFlODIzYjhkMzg1YTJmN2E5
Y2RiNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0
aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ3J5cHRvS2V5U2VyaWFsaXphdGlvbiB7CiAg
ICAgdmlydHVhbCB+Q3J5cHRvS2V5U2VyaWFsaXphdGlvbigpIHsgfQogCiAgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiBzdWdnZXN0ZWQgYWxnb3JpdGhtIHdhcyBub3QgY29tcGF0aWJsZSB3aXRoIG9u
ZSBzdG9yZWQgaW4gdGhlIHNlcmlhbGl6YXRpb24uCi0gICAgdmlydHVhbCBPcHRpb25hbDxDcnlw
dG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiwgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShD
cnlwdG9BbGdvcml0aG0qLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNv
bnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZWNvbmNpbGVVc2FnZXMoQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlY29uY2lsZUV4dHJhY3Rh
YmxlKGJvb2wmKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
SnNvbldlYktleS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0pzb25XZWJLZXkuaAppbmRleCAy
MjNlZTQ4ZDk3Mzg5YjlhMGUzMDM2Mzg4YmRmMTk5Mjk1Mjg0MmIxLi5hNTM1ODkxNjcxN2E3ZDdi
MTJjNjkyYmRiM2UxMGUyYWZiNGQxYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vSnNvbldlYktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Kc29uV2ViS2V5LmgK
QEAgLTM1LDI3ICszNSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBKc29uV2Vi
S2V5IHsKICAgICBTdHJpbmcga3R5OwotICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlOworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiB1c2U7CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIG1lcmdpbmcg
a2V5X29wcyBhbmQgdXNhZ2VzLgotICAgIE9wdGlvbmFsPFZlY3RvcjxDcnlwdG9LZXlVc2FnZT4+
IGtleV9vcHM7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q3J5cHRvS2V5VXNhZ2U+PiBrZXlf
b3BzOwogICAgIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlczsKLSAgICBPcHRpb25hbDxTdHJp
bmc+IGFsZzsKLQotICAgIE9wdGlvbmFsPGJvb2w+IGV4dDsKLQotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gY3J2OwotICAgIE9wdGlvbmFsPFN0cmluZz4geDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHk7
Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBkOwotICAgIE9wdGlvbmFsPFN0cmluZz4gbjsKLSAgICBP
cHRpb25hbDxTdHJpbmc+IGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBwOwotICAgIE9wdGlvbmFs
PFN0cmluZz4gcTsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGRwOwotICAgIE9wdGlvbmFsPFN0cmlu
Zz4gZHE7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBxaTsKLSAgICBPcHRpb25hbDxWZWN0b3I8UnNh
T3RoZXJQcmltZXNJbmZvPj4gb3RoOwotICAgIE9wdGlvbmFsPFN0cmluZz4gazsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gYWxnOworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBleHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3J2OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiB4OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB5OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBkOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBxOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkcDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gZHE7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHFpOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJzYU90aGVyUHJpbWVzSW5mbz4+IG90aDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19D
QkMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQy5jcHAKaW5kZXggNmI4ZmVmZDcyNmU3ODExNGE1NjhlMDhjNzIyOGEzN2ExN2YwZTFl
ZS4uNWQ5YjBlN2I4MDQwODE5NTA3YjQ3ZDcxOGU5YzE5NjcyNTc5Y2I5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19D
QkM6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJgog
ICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLT5pZGVu
dGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdWJ0bGVDcnlwdG86Oktl
eUZvcm1hdDo6SndrOiB7Ci0gICAgICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKHNpemVf
dCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGFsZykgLT4gYm9vbCB7CisgICAgICAg
IGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsKICAgICAgICAgICAgIHN3aXRjaCAobGVuZ3Ro
KSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0tleUFFUzo6c19sZW5ndGgxMjg6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZhbHVlKCkgPT0gQUxHMTI4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tX
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFF
U19LVy5jcHAKaW5kZXggYjY3NWUwNWEyMDE2YjEyMTM0MzhjMDkwNDlkYjk5YTNhZDBjYzdhOS4u
MzVjN2E3YjY2MzRkZDc0NjI2NjRjNTlmNzEyMmRhNzcwNmMxMGViMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNf
S1cuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjppbXBv
cnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYKICAgICAgICAg
cmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRSYXcocGFyYW1ldGVycy0+aWRlbnRpZmllciwg
V1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6
Okp3azogewotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0
ZXJzLT5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0
cmFjdGFibGUsIHVzYWdlcywgW10oc2l6ZV90IGxlbmd0aCwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgYWxnKSAtPiBib29sIHsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRK
d2socGFyYW1ldGVycy0+aWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5Pihk
YXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsKICAgICAgICAgICAgIHN3aXRjaCAobGVu
Z3RoKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0tleUFFUzo6c19sZW5ndGgxMjg6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZhbHVlKCkgPT0gQUxHMTI4OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1B
Qy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1I
TUFDLmNwcAppbmRleCBiYzQ4NmQ5N2Y0ODI4MGZkNTUwNGRlZGJiODZkZTM5MTAzNjY1NTAwLi5l
NDZiZGRmZTM4MDMwMGNkMzFkMTlmZDAyZjIyOGRiYWY4Mzc2MzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNw
cApAQCAtODQsNyArODQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5
KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZSho
bWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVPcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50
aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5
SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFy
YW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhN
QUM6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBk
YQogICAgIFJlZlB0cjxDcnlwdG9LZXlITUFDPiByZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQp
IHsKICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpSYXc6Ci0gICAgICAgIHJlc3Vs
dCA9IENyeXB0b0tleUhNQUM6OmltcG9ydFJhdyhobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVP
cigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVj
dG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1
bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRSYXcoaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVl
X29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxW
ZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6Okp3azogewotICAgICAgICBh
dXRvIGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gs
IGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGFsZykgLT4gYm9vbCB7CisgICAgICAgIGF1dG8gY2hl
Y2tBbGdDYWxsYmFjayA9IFtdKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTdHJpbmc+JiBhbGcpIC0+IGJvb2wgewogICAgICAgICAgICAgc3dpdGNo
IChoYXNoKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8xOgogICAgICAgICAgICAgICAgIHJldHVybiAhYWxnIHx8IGFsZy52YWx1ZSgpID09IEFMRzE7
CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXko
U3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGEKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfTsKLSAgICAgICAgcmVzdWx0
ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0SndrKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZU9y
KDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29u
V2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxs
YmFjaykpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soaG1hY1Bh
cmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKaW5kZXgg
NWFmNTVlOTcxZmM1ZWE2MjU5OTRkZDNjNGUxYWM4NzM2YzE0ODZlNS4uM2Q5OGVlNTJhZDkyNmNh
NGQ0NmMzYjg5NDYyZjBjODcyNDBiZDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzU6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsCiAg
ICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhEYXRhRXJyb3IpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0Sndr
KHBhcmFtZXRlcnMtPmlkZW50aWZpZXIsIE51bGxvcHQsIFdURk1vdmUoa2V5KSwgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0SndrKHBh
cmFtZXRlcnMtPmlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShrZXkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNH
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1I
TUFDR0NyeXB0LmNwcAppbmRleCBlZGRhODFlYTE3YmE3Mzk3ZGJmZDU5NjgzNDE5NmQ2YzU4ZWMy
OWZlLi42NmFhZjM0NzE0NGQ4YmQ5MDYwMDc1YmJiZmM0ZmIwZTdkMDZhOTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1B
Q0dDcnlwdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGludCBnZXRHQ3J5cHREaWdlc3RB
bGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCiAgICAgfQog
fQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUo
aW50IGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSkKIHsKICAgICBzaXplX3QgZGln
ZXN0TGVuZ3RoID0gZ2NyeV9tYWNfZ2V0X2FsZ29fbWFjbGVuKGFsZ29yaXRobSk7CiAgICAgY29u
c3Qgdm9pZCoga2V5RGF0YSA9IGtleS5kYXRhKCkgPyBrZXkuZGF0YSgpIDogcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oIiIpOwpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29u
c3QgVmVjdG9yPAogICAgICAgICBnY3J5X21hY19jbG9zZShoZCk7CiAKICAgICBpZiAoIXJlc3Vs
dCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gV1RGTW92ZShzaWduYXR1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8va2V5cy9DcnlwdG9LZXlBRVMuaAppbmRleCAwZDdlYmQ5ZmFmYjUxOWI2NTcyMTdmY2ZiMTgz
NWIzNWVhODA4MjdhLi5jMDI3NjVkNzUyNDAxMjMyYmRiZTYwMjUwM2NmMDJmYTA0N2ZiNmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaApAQCAtNjgsNyArNjgs
NyBAQCBjbGFzcyBDcnlwdG9LZXlBRVMgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5IHsKIAogICAg
IHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5QUVTPiBnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyLCBzaXplX3QgbGVuZ3RoQml0cywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5QUVTPiBpbXBvcnRSYXcoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwotICAgIHVzaW5nIENoZWNrQWxnQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPGJvb2woc2l6ZV90LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
Jik+OworICAgIHVzaW5nIENoZWNrQWxnQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPGJvb2woc2l6
ZV90LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mKT47CiAgICAgc3RhdGljIFJlZlB0cjxD
cnlwdG9LZXlBRVM+IGltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBKc29uV2Vi
S2V5JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBDaGVja0FsZ0Nh
bGxiYWNrJiYpOwogCiAgICAgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBDcnlwdG9LZXlDbGFzczo6QUVTOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlITUFDLmgKaW5kZXggNzFhZDMwNTA1OGQyMTExNjdkYTUwZjUzODllNzg0Zjgz
M2ZlYTg3OC4uY2FjYmNkN2YzYjY2YjNiNGY5NThlYTAzMGI5MmNjOGE5M2VkNWQzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaApAQCAtNjQsNyArNjQsNyBA
QCBjbGFzcyBDcnlwdG9LZXlITUFDIGZpbmFsIDogcHVibGljIENyeXB0b0tleSB7CiAKICAgICBz
dGF0aWMgUmVmUHRyPENyeXB0b0tleUhNQUM+IGdlbmVyYXRlKHNpemVfdCBsZW5ndGhCaXRzLCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwKTsKICAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleUhNQUM+IGltcG9ydFJh
dyhzaXplX3QgbGVuZ3RoQml0cywgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBWZWN0
b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCk7Ci0gICAgdXNpbmcgQ2hlY2tBbGdDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248Ym9vbChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+Jik+OworICAg
IHVzaW5nIENoZWNrQWxnQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPGJvb2woQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+Jik+OwogICAgIHN0YXRp
YyBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gaW1wb3J0SndrKHNpemVfdCBsZW5ndGhCaXRzLCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJs
ZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIENoZWNrQWxnQ2FsbGJhY2smJik7CiAKICAgICBDcnlw
dG9LZXlDbGFzcyBrZXlDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENyeXB0b0tleUNsYXNz
OjpITUFDOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlSU0EuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcApp
bmRleCA1OTRjNmFmOTBlMmNhODNhMWZmZmQ1MDJlODM3YTc3ZDczMDRhMzhkLi4yZDMyZWU4YjAw
NmU0NzI5MDg5M2IxZWY0ZmRiMjQ4NjEyN2FmZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgT3B0aW9uYWw8Q3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcj4gaGFzaCwgSnNvbldlYktleSYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKK1JlZlB0cjxDcnlwdG9LZXlSU0E+IENy
eXB0b0tleVJTQTo6aW1wb3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGht
LCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJL
ZXkmJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2Fn
ZXMpCiB7CiAgICAgaWYgKGtleURhdGEua3R5ICE9ICJSU0EiKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTU3LDggKzU3LDggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNB
OjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0KICAgICBpZiAo
IWtleURhdGEuZCkgewogICAgICAgICAvLyBpbXBvcnQgcHVibGljIGtleQogICAgICAgICBhdXRv
IHB1YmxpY0tleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRl
UHVibGljKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpKTsKLSAgICAgICAgLy8g
Tm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vo
b2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgTnVsbG9wdC4K
LSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1
ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHVibGljS2V5
Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIC8vIE5vdGljZTogQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBz
aG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICAg
ICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnB1YmxpY0tleUNvbXBv
bmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgIH0KIAogICAgIC8vIGltcG9ydCBwcml2
YXRlIGtleQpAQCAtNjcsOCArNjcsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlS
U0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWtleURhdGEucCAmJiAha2V5RGF0YS5xICYmICFr
ZXlEYXRhLmRwICYmICFrZXlEYXRhLmRwICYmICFrZXlEYXRhLnFpKSB7CiAgICAgICAgIGF1dG8g
cHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRl
UHJpdmF0ZShXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2
YXRlRXhwb25lbnQpKTsKLSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkg
ZWZmZWN0IGlmIGhhc2ggaXMgTnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6
Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMpOworICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8x
IGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYg
aGFzaCBpcyBzdGQ6Om51bGxvcHQuCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0
ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7
CiAgICAgfQogCiAgICAgaWYgKCFrZXlEYXRhLnAgfHwgIWtleURhdGEucSB8fCAha2V5RGF0YS5k
cCB8fCAha2V5RGF0YS5kcSB8fCAha2V5RGF0YS5xaSkKQEAgLTg3LDggKzg3LDggQEAgUmVmUHRy
PENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBhbGdvcml0aG0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFrZXlE
YXRhLm90aCkgewogICAgICAgICBhdXRvIHByaXZhdGVLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEoV1RGTW92
ZShtb2R1bHVzKSwgV1RGTW92ZShleHBvbmVudCksIFdURk1vdmUocHJpdmF0ZUV4cG9uZW50KSwg
V1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJpbWVJbmZvKSwgeyB9KTsK
LSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBq
dXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2gg
aXMgTnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNo
LCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICAv
LyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFj
ZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51
bGxvcHQuCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhh
c2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpw
cml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgfQogCiAgICAg
VmVjdG9yPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IG90aGVyUHJpbWVJ
bmZvczsKQEAgLTEwNCw4ICsxMDQsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlS
U0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAgIH0K
IAogICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShXVEZNb3ZlKG1vZHVsdXMpLCBX
VEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0
UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBXVEZNb3ZlKG90aGVyUHJpbWVJ
bmZvcykpOwotICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEg
aXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBo
YXNoIGlzIE51bGxvcHQuCi0gICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNo
LCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIC8vIE5v
dGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9s
ZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9w
dC4KKyAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVl
X29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtl
eUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogfQogCiBKc29uV2ViS2V5IENyeXB0
b0tleVJTQTo6ZXhwb3J0SndrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleVJTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5UlNBLmgKaW5kZXggODA2MjEwMTQ3Y2EwYmVhOWFhYWI2MDdhZGZiZGIzMTY5N2Y4Mzkw
Ny4uNmFlZTczNTAwYTZkMjE0NDdiNjQ0M2RiYjk3YjYyYzgzNzYyOWJmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBjbGFz
cyBDcnlwdG9LZXlSU0EgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5IHsKICAgICB1c2luZyBLZXlQ
YWlyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ3J5cHRvS2V5UGFpciYpPjsKICAgICB1
c2luZyBWb2lkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoKT47CiAgICAgc3RhdGljIHZv
aWQgZ2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25lZCBtb2R1bHVzTGVuZ3RoLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyBSZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBpbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgT3B0
aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgSnNvbldlYktleSYmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CisgICAgc3RhdGljIFJlZlB0cjxD
cnlwdG9LZXlSU0E+IGltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogCiAgICAgUGxhdGZvcm1SU0FL
ZXkgcGxhdGZvcm1LZXkoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtS2V5OyB9CiAgICAgSnNv
bldlYktleSBleHBvcnRKd2soKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKaW5kZXggZGIyNzRmM2Y0
MjM3MThhM2JhMWM1NGMxZjA5ZTQzMmQ0OTY3YWQzMS4uNzY1ZTFlZTc1ZThjYmZiOGE3MjJmMjJi
NTViNjViOGY2OGY2ZDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMv
Q3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgQ3J5
cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6fkNyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoKQogewog
fQogCi1PcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBDcnlwdG9LZXlTZXJpYWxpemF0aW9u
UmF3OjpyZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiBhbGdvcml0aG0sIENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKiBwYXJhbWV0ZXJzKSBjb25zdAorc3RkOjpv
cHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3Ojpy
ZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiBhbGdvcml0aG0sIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKiBwYXJhbWV0ZXJzKSBjb25zdAogewogICAgIHJldHVy
biBDcnlwdG9BbGdvcml0aG1QYWlyIHsgYWxnb3JpdGhtLCBwYXJhbWV0ZXJzIH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9u
UmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9u
UmF3LmgKaW5kZXggOTdjMDhkMjZiYjlkOTJiYzUyYjM5MWUzZDJkZmExMDJjNjgyZWYwMS4uNzVk
ZDRlNTc4ZDMyMWQ2Y2QzYTIyYjRiNzNkMTljMDNkMGM4ZjA2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3IGZpbmFsIDogcHVi
bGljIENyeXB0b0tleVNlcmlhbGl6YXRpb24gewogcHJpdmF0ZToKICAgICBDcnlwdG9LZXlTZXJp
YWxpemF0aW9uUmF3KGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmKTsKIAotICAgIE9wdGlvbmFs
PENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0q
LCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlQWxnb3JpdGht
KENyeXB0b0FsZ29yaXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVjb25jaWxlRXh0cmFjdGFibGUo
Ym9vbCYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKaW5kZXggY2QzYjBjYzM2ZGE1MzA1ZTc3MGU0
MWEwNzhkYTQ1MDI4ZGJmMjZiMy4uZmI0YzFiM2RhN2MxYjQ0NzdmNGM5YTg4YTg5YWQxYjMxNDY5
YmZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1ITUFDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobUhNQUNNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29y
aXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hG
dW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CkBA
IC01MCw3ICs1MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxDQ0htYWNBbGdvcml0aG0+IGNvbW1vbkNy
eXB0b0hNQUNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpCiAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgogICAgICAgICByZXR1cm4ga0NDSG1hY0FsZ1NI
QTUxMjsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1h
Yy5jcHAKaW5kZXggYTM0NjIyN2FjMTIzZjFlYjU3MDYyNDRmYTdiODhjZjVlODhhYTQ1MC4uMmU5
NWM4NGQyMDhmM2ZlMTk5OTc4ZGE5ZDkxYTE2OGUwNzRlM2JkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNU1hYy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1pbmxpbmUgT3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdv
cml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCiB7CiAgICAgc3dp
dGNoIChoYXNoRnVuY3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xOgpAQCAtNTAsNyArNTAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZAogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKICAgICAgICAgcmV0dXJuIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3Jp
dGhtSG1hY0tleVBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oCmluZGV4IDA5OTc0NzJkNDNiOGE3ZjJjYjgzNDI3
YTIzODk5MmU5MWEyZWUwMDUuLmU0YmZmNjUwMGU0MTkxYmNlNDU1ZDZlYWMxYmFkNzE3MzQ1YjM1
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0Fs
Z29yaXRobUhtYWNLZXlQYXJhbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1l
dGVycy9DcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xh
c3MgQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzIHsKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWVyZ2luZyBoYXNoIGFu
ZCBoYXNoSWRlbnRpZmllci4KICAgICBKU0M6OkpTVmFsdWUgaGFzaDsKICAgICBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGhhc2hJZGVudGlmaWVyOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIGxv
bmc+IGxlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IGxlbmd0aDsKIAog
ICAgIENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENsYXNzOjpI
bWFjS2V5UGFyYW1zOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3Bh
cmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCmluZGV4IGU2
ODk5MzY1MzY1OGE0YjUxYjEyYjQ4NWMyYTVjNGUxODdhMDVkYWMuLmM1NmU2NTNhYjI1NGRhYjg2
Y2VmMGFkYjc0YWI1MmM0OWNlNmRlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtcyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
IHsKIHB1YmxpYzoKICAgICAvLyBVc2UgbGFiZWxWZWN0b3IoKSBpbnN0ZWFkIG9mIGxhYmVsLiBU
aGUgbGFiZWwgd2lsbCBiZSBnb25lIG9uY2UgbGFiZWxWZWN0b3IoKSBpcyBjYWxsZWQuCi0gICAg
T3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZT4gbGFiZWw7CisgICAgc3RkOjpvcHRp
b25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBsYWJlbDsKIAogICAgIENsYXNzIHBhcmFt
ZXRlcnNDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENsYXNzOjpSc2FPYWVwUGFyYW1zOyB9
CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyBm
aW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIHsKICAgICAgICAgICAgIHJl
dHVybiBtX2xhYmVsVmVjdG9yOwogCiAgICAgICAgIG1fbGFiZWxCdWZmZXIgPSBXVEZNb3ZlKCps
YWJlbCk7Ci0gICAgICAgIGxhYmVsID0gTnVsbG9wdDsKKyAgICAgICAgbGFiZWwgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmICghbV9sYWJlbEJ1ZmZlci5sZW5ndGgoKSkKICAgICAgICAgICAg
IHJldHVybiBtX2xhYmVsVmVjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRl
eCA1ZWFiNTViNTQzMzMzYmQxN2Y2N2IxMWViYWQ2NjE3NzI4MjUwMWYxLi4yNTY3MWMxZGUwOWI1
NTBiZDcxOWM5Y2Y1Yjk1OGU1ZmIyMjU1NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKQEAgLTEyNCwxMCArMTI0LDEwIEBAIGJvb2wgQ1NTRm9udEZhY2U6OnNldEZhbWlsaWVzKENT
U1ZhbHVlJiBmYW1pbHkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU9wdGlvbmFsPEZvbnRUcmFp
dHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRlU3R5bGVNYXNrKENTU1ZhbHVlJiBzdHlsZSkK
K3N0ZDo6b3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IENTU0ZvbnRGYWNlOjpjYWxjdWxhdGVTdHls
ZU1hc2soQ1NTVmFsdWUmIHN0eWxlKQogewogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHN0eWxlKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzdHlsZSku
dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKQEAgLTE1OSwxMCArMTU5LDEw
IEBAIGJvb2wgQ1NTRm9udEZhY2U6OnNldFN0eWxlKENTU1ZhbHVlJiBzdHlsZSkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBDU1NGb250RmFjZTo6Y2Fs
Y3VsYXRlV2VpZ2h0TWFzayhDU1NWYWx1ZSYgd2VpZ2h0KQorc3RkOjpvcHRpb25hbDxGb250VHJh
aXRzTWFzaz4gQ1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdlaWdodE1hc2soQ1NTVmFsdWUmIHdlaWdo
dCkKIHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih3ZWlnaHQpKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRj
aCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHdlaWdodCkudmFsdWVJRCgpKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZUJvbGQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDhiMTNhMWI3
Y2M0YTc3YTFjN2RmNzgzNDRmMzFmNzQ2Nzc0ZTA0NzYuLmIxMWRmZDAxNTBiOGQ1ZWZkNTk0MTVh
ZjE0ODFkNzVhMmJhZTc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC04Nyw4ICs4
Nyw4IEBAIGNsYXNzIENTU0ZvbnRGYWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTRm9u
dEZhY2U+IHsKICAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0K
ICAgICBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3NzQ29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNN
YXNrPiBjYWxjdWxhdGVTdHlsZU1hc2soQ1NTVmFsdWUmIHN0eWxlKTsKLSAgICBzdGF0aWMgT3B0
aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNhbGN1bGF0ZVdlaWdodE1hc2soQ1NTVmFsdWUmIHdlaWdo
dCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNhbGN1bGF0ZVN0
eWxlTWFzayhDU1NWYWx1ZSYgc3R5bGUpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRU
cmFpdHNNYXNrPiBjYWxjdWxhdGVXZWlnaHRNYXNrKENTU1ZhbHVlJiB3ZWlnaHQpOwogCiAgICAg
Y2xhc3MgQ2xpZW50OwogICAgIHZvaWQgYWRkQ2xpZW50KENsaWVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggNTIyYWM4NmE5NGU5YmJiYjNiOGQzZTIxMTVjZjY2
OTAwZjczNTMxZS4uYjYwNjhjYzZmODJmMjM4YzdiZjExNmFkNDcyYTJiZDYxMzA3NDJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgQ1NT
Rm9udEZhY2UmIENTU0ZvbnRGYWNlU2V0OjpvcGVyYXRvcltdKHNpemVfdCBpKQogICAgIHJldHVy
biBtX2ZhY2VzW2ldOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNvbXB1
dGVGb250VHJhaXRzTWFzayhNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjb21wdXRlRm9udFRyYWl0c01hc2soTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdHlsZVZh
bHVlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkuZ2V0
KCk7CiAgICAgaWYgKCFzdHlsZVZhbHVlKQpAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBPcHRp
b25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZUZvbnRUcmFpdHNNYXNrKE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIHN0CiAgICAgaWYgKGF1dG8gc3R5bGVNYXNrT3B0aW9uYWwgPSBDU1NGb250RmFj
ZTo6Y2FsY3VsYXRlU3R5bGVNYXNrKCpzdHlsZVZhbHVlKSkKICAgICAgICAgc3R5bGVNYXNrID0g
c3R5bGVNYXNrT3B0aW9uYWwudmFsdWUoKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVl
PiB3ZWlnaHRWYWx1ZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250
V2VpZ2h0KS5nZXQoKTsKICAgICBpZiAoIXdlaWdodFZhbHVlKQpAQCAtMzA0LDcgKzMwNCw3IEBA
IHN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZUZvbnRUcmFpdHNNYXNrKE11
dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0CiAgICAgaWYgKGF1dG8gd2VpZ2h0TWFza09wdGlvbmFs
ID0gQ1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdlaWdodE1hc2soKndlaWdodFZhbHVlKSkKICAgICAg
ICAgd2VpZ2h0TWFzayA9IHdlaWdodE1hc2tPcHRpb25hbC52YWx1ZSgpOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdHlsZU1hc2spIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdlaWdodE1hc2spKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDYyMWZjZTgyZTViZTYz
ZTUyMGNmY2ExMTQ2ZmZhZWVjYTBiMDUxNGMuLjViMGQxZmI5YTc4MzY1ZjZiNTE3Mjg4ZjhmZTIx
M2Q2YmE4NzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApA
QCAtODM2LDcgKzgzNiw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6
Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uCiAKIGRvdWJsZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoVW5pdFR5cGVzIHVuaXRUeXBlKSBjb25zdAogewot
ICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZU9yKDApOworICAg
IHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZV9vcigwKTsKIH0KIAog
ZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CkBAIC04NzEsMTAg
Kzg3MSwxMCBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIENTU1ByaW1pdGl2ZVZhbHVl
OjpjYW5vbmljYWxVbml0VHlwZUZvckNhdGVnb3J5KFVuaQogICAgIH0KIH0KIAotT3B0aW9uYWw8
ZG91YmxlPiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMg
cmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoVW5pdFR5cGVzIHJlcXVlc3RlZFVuaXRUeXBl
KSBjb25zdAogewogICAgIGlmICghaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lv
bihzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5cGUpKSB8fCAhaXNWYWxp
ZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihyZXF1ZXN0ZWRVbml0VHlwZSkpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
VW5pdFR5cGVzIHNvdXJjZVVuaXRUeXBlID0gc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPihwcmltaXRp
dmVUeXBlKCkpOwogICAgIGlmIChyZXF1ZXN0ZWRVbml0VHlwZSA9PSBzb3VyY2VVbml0VHlwZSB8
fCByZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NfRElNRU5TSU9OKQpAQCAtODg5LDIwICs4ODksMjAg
QEAgT3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5h
bChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFQKIAogICAgIC8vIENhbm5vdCBjb252ZXJ0IGJldHdl
ZW4gdW5yZWxhdGVkIHVuaXQgY2F0ZWdvcmllcyBpZiBvbmUgb2YgdGhlbSBpcyBub3QgVU51bWJl
ci4KICAgICBpZiAoc291cmNlQ2F0ZWdvcnkgIT0gdGFyZ2V0Q2F0ZWdvcnkgJiYgc291cmNlQ2F0
ZWdvcnkgIT0gVU51bWJlciAmJiB0YXJnZXRDYXRlZ29yeSAhPSBVTnVtYmVyKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0
YXJnZXRDYXRlZ29yeSA9PSBVTnVtYmVyKSB7CiAgICAgICAgIC8vIFdlIGludGVycHJldCBjb252
ZXJzaW9uIHRvIENTU19OVU1CRVIgYXMgY29udmVyc2lvbiB0byBhIGNhbm9uaWNhbCB1bml0IGlu
IHRoaXMgdmFsdWUncyBjYXRlZ29yeS4KICAgICAgICAgdGFyZ2V0VW5pdFR5cGUgPSBjYW5vbmlj
YWxVbml0VHlwZUZvckNhdGVnb3J5KHNvdXJjZUNhdGVnb3J5KTsKICAgICAgICAgaWYgKHRhcmdl
dFVuaXRUeXBlID09IENTU19VTktOT1dOKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChzb3VyY2VV
bml0VHlwZSA9PSBDU1NfTlVNQkVSKSB7CiAgICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJz
aW9uIGZyb20gQ1NTX05VTUJFUiBpbiB0aGUgc2FtZSB3YXkgYXMgQ1NTUGFyc2VyOjp2YWxpZFVu
aXQoKSB3aGlsZSB1c2luZyBub24tc3RyaWN0IG1vZGUuCiAgICAgICAgIHNvdXJjZVVuaXRUeXBl
ID0gY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeSh0YXJnZXRDYXRlZ29yeSk7CiAgICAgICAg
IGlmIChzb3VyY2VVbml0VHlwZSA9PSBDU1NfVU5LTk9XTikKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBk
b3VibGUgY29udmVydGVkVmFsdWUgPSBkb3VibGVWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaAppbmRleCBiZDc2YTBiMzhiM2ZmYzU0YzA0MzMxNGM2ZDFjNjdjOWNk
NDZkNjZjLi5iYmU4MTdlZGExYzk0ODdkNDhjMTI1ZjM4NWM2YzdkMzRlNGU4Y2E0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMzYwLDcgKzM2MCw3IEBAIGNsYXNz
IENTU1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKICAgICB2b2lkIGlu
aXQoUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4mJik7IC8vIEZJWE1FOiBEYXNoYm9hcmQgcmVnaW9u
IHNob3VsZCBub3QgYmUgYSBwcmltaXRpdmUgdmFsdWUuCiAjZW5kaWYKIAotICAgIE9wdGlvbmFs
PGRvdWJsZT4gZG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgdGFyZ2V0VW5pdFR5cGUpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZUludGVybmFsKFVuaXRU
eXBlcyB0YXJnZXRVbml0VHlwZSkgY29uc3Q7CiAKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aERv
dWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggMDYyM2I4OGVlZTI2YjgwNmNkYWUyOTFl
Njc0OTIxODY4ZGQ0NzAxZC4uMWQ3NmM2NjdjMzIwZWM5ZjQ5NTQ4Yjk1MjFjZjMzNTJjYWE1YjNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTM1LDcgKzM1LDcg
QEAKIC8vIGZ1bmN0aW9uIGluIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBzaG91bGQgYmUg
dXNlZC4KIC8vCiAvLyAqIENvbmRpdGlvbmFsQ29udmVydGVyPVhYWDoKLS8vIFNpbWlsYXIgdG8g
Q29udmVydGVyPVhYWCBidXQgdGhlIGNvbnZlcnRlciBmdW5jdGlvbiByZXR1cm5zIGEgV1RGOjpP
cHRpb25hbDw+CisvLyBTaW1pbGFyIHRvIENvbnZlcnRlcj1YWFggYnV0IHRoZSBjb252ZXJ0ZXIg
ZnVuY3Rpb24gcmV0dXJucyBhIHN0ZDo6b3B0aW9uYWw8PgogLy8gdG8gaW5kaWNhdGUgaWYgdGhl
IHByb3BlcnR5IHNldHRlciBzaG91bGQgYmUgY2FsbGVkIG9yIG5vdC4KIC8vCiAvLyAqIEN1c3Rv
bT1bSW5pdGlhbHxWYWx1ZXxJbmhlcml0fEFsbF06CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
Z21lbnRlZEZvbnRGYWNlLmNwcAppbmRleCA3NzhlNjQ5OTEyYzllODIwODJjY2E0ZDY0ZDE5ZTg3
MDdhNWUyNjIxLi44NTAxODViNzhhZDI1Y2U3YTk0MWM0YTk2ZDJlMjMxNWRmMGEzM2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKQEAgLTg3LDcgKzg3
LDcgQEAgY2xhc3MgQ1NTRm9udEFjY2Vzc29yIGZpbmFsIDogcHVibGljIEZvbnRBY2Nlc3NvciB7
CiAgICAgICAgIHJldHVybiBtX3Jlc3VsdCAmJiBtX3Jlc3VsdC52YWx1ZSgpICYmIG1fcmVzdWx0
LnZhbHVlKCktPmlzTG9hZGluZygpOwogICAgIH0KIAotICAgIG11dGFibGUgT3B0aW9uYWw8UmVm
UHRyPEZvbnQ+PiBtX3Jlc3VsdDsgLy8gQ2FjaGVzIG51bGxwdHIgdG9vCisgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPFJlZlB0cjxGb250Pj4gbV9yZXN1bHQ7IC8vIENhY2hlcyBudWxscHRyIHRv
bwogICAgIG11dGFibGUgUmVmPENTU0ZvbnRGYWNlPiBtX2ZvbnRGYWNlOwogICAgIEZvbnREZXNj
cmlwdGlvbiBtX2ZvbnREZXNjcmlwdGlvbjsKICAgICBib29sIG1fc3ludGhldGljQm9sZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCBhZmEzNjY2NGIyNDY0MWE3NjNlNDhm
MmQyODdjYzFmNWFkMThjNWNlLi43NzVhNmI1NzA4Yzc0MGE3NTNmYWIyYzE2Y2VhYWM3OGQ2NTFj
MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiBzaGVldCwgQ1NTSW1wCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5
bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJSdWxlKSk7CiB9CiAKLVJlZjxDU1NTdHlsZVNo
ZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVl
dCwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBPcHRpb25hbDxib29sPiYgaXNDbGVhbk9yaWdpbikK
K1JlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiBzaGVldCwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJv
b2w+JiBpc0NsZWFuT3JpZ2luKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxl
U2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyTm9kZSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9z
aXRpb24oKSwgZmFsc2UsIGlzQ2xlYW5PcmlnaW4pKTsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCBD
U1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29u
dGVudHMsIENTU0ltcG9ydFJ1bGUqCiAgICAgbV9jb250ZW50cy0+cmVnaXN0ZXJDbGllbnQodGhp
cyk7CiB9CiAKLUNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiBjb250ZW50cywgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0
YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBPcHRpb25hbDxib29s
PiYgaXNPcmlnaW5DbGVhbikKK0NTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxl
U2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9z
aXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuKQogICAgIDogbV9jb250ZW50cyhXVEZNb3Zl
KGNvbnRlbnRzKSkKICAgICAsIG1faXNJbmxpbmVTdHlsZXNoZWV0KGlzSW5saW5lU3R5bGVzaGVl
dCkKICAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KQogICAg
IHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9yPGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVs
ZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1
bnNpZ25lZD4gaW5kZXgpCitFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUo
Y29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgU3RyaW5nQnVpbGRlciB0ZXh0OwogICAgIHRleHQu
YXBwZW5kKHNlbGVjdG9yKTsKQEAgLTMzNCw3ICszMzQsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IENT
U1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5n
JiBzdAogICAgIGlmICghc3R5bGUuaXNFbXB0eSgpKQogICAgICAgICB0ZXh0LmFwcGVuZCgnICcp
OwogICAgIHRleHQuYXBwZW5kKCd9Jyk7Ci0gICAgYXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5z
ZXJ0UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBh
dXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgu
dmFsdWVfb3IobGVuZ3RoKCkpKTsKICAgICBpZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGluc2VydFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXggMjkxZTllNzkxMDdmODVi
MTIyNDczNmUzMTE1ZTcyY2I0OTJmZTY3ZC4uYzRhZTM5NWRlZDk2OTZhYTcwY2U4MzY0YjYzYzA2
OWJjNWY4OWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC01Miw3ICs1Miw3
IEBAIGNsYXNzIFNjb3BlOwogY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHls
ZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsK
LSAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRl
bnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNs
ZWFuID0gTnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVm
PENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBF
bGVtZW50JiBvd25lciwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uKTsKIAogICAg
IHZpcnR1YWwgfkNTU1N0eWxlU2hlZXQoKTsKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgQ1NTU3R5
bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKICAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25Pcjx2b2lkPiBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KTsKICAgICAKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNv
bnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Is
IGNvbnN0IFN0cmluZyYgc3R5bGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVSdWxlKHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBk
ZWxldGVSdWxlKGluZGV4KTsgfQogICAgIAogICAgIC8vIEZvciBDU1NSdWxlTGlzdC4KQEAgLTEz
Miw3ICsxMzIsNyBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hl
ZXQgewogcHJpdmF0ZToKICAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSk7CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5
bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25lck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYg
c3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQpOwotICAgIENTU1N0eWxlU2hl
ZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0
UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBP
cHRpb25hbDxib29sPiYpOworICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24s
IGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAK
ICAgICBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4
dC9jc3MiKTsgfQpAQCAtMTQzLDcgKzE0Myw3IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwg
OiBwdWJsaWMgU3R5bGVTaGVldCB7CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVldDsKICAg
ICBib29sIG1faXNEaXNhYmxlZDsKICAgICBib29sIG1fbXV0YXRlZFJ1bGVzOwotICAgIE9wdGlv
bmFsPGJvb2w+IG1faXNPcmlnaW5DbGVhbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXNP
cmlnaW5DbGVhbjsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNl
dD4gbV9tZWRpYVF1ZXJpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDYwMWI5MmQ5
NmEwZTQ1NzJmYzk0YjJmYjk5OGVhMDUzNDU1NWViNDYuLmU2ZTBmNzAzYzE5YWVjZjZiZDI5YjY2
YWFhYTc0ZmVmMzQwOTkyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMzc0LDEyICsz
NzQsMTIgQEAgdm9pZCBGb250RmFjZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFj
ZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NTRm9udEYKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDU1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNzOgogICAgICAgICBpZiAobV9wcm9taXNlKQot
ICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5yZXNvbHZlKCp0
aGlzKTsKKyAgICAgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQp
LT5yZXNvbHZlKCp0aGlzKTsKICAgICAgICAgZGVyZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZToKICAgICAgICAgaWYgKG1fcHJvbWlz
ZSkKLSAgICAgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBOdWxsb3B0KS0+cmVqZWN0
KE5FVFdPUktfRVJSKTsKKyAgICAgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6
Om51bGxvcHQpLT5yZWplY3QoTkVUV09SS19FUlIpOwogICAgICAgICBkZXJlZigpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaAppbmRleCBmYThmMzEzZGNlZDhmYjVkZDI4ZTJjMjk0ODUxNWU0NmQ3ZWFjZTA2
Li4yM2NlZjdkNDJhMzdiMzM4OGM5NTIzN2Y2OTBjOTdlNjA4NzBmYjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEZvbnRGYWNlPiwgcHJpdmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50CiAgICAgTG9h
ZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFj
ZSY+IFByb21pc2U7Ci0gICAgT3B0aW9uYWw8UHJvbWlzZT4mIHByb21pc2UoKSB7IHJldHVybiBt
X3Byb21pc2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFByb21pc2U+JiBwcm9taXNlKCkgeyByZXR1
cm4gbV9wcm9taXNlOyB9CiAgICAgdm9pZCByZWdpc3RlckxvYWRlZChQcm9taXNlJiYpOwogCiAg
ICAgdm9pZCBhZG9wdChDU1NGb250RmFjZSYpOwpAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBGb250
RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlPiwgcHJpdmF0ZSBDU1NGb250
RmFjZTo6Q2xpZW50CiAKICAgICBXZWFrUHRyRmFjdG9yeTxGb250RmFjZT4gbV93ZWFrUHRyRmFj
dG9yeTsKICAgICBSZWY8Q1NTRm9udEZhY2U+IG1fYmFja2luZzsKLSAgICBPcHRpb25hbDxQcm9t
aXNlPiBtX3Byb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxQcm9taXNlPiBtX3Byb21pc2U7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAppbmRleCA5NGMxYzU1ZmVhNTYzZjQy
YWJhMDQxNWMyMjAwNjI4MmVhYTAwNzcxLi43MzhiMDhlNjgzYjg4NGY3Y2QxNGIzNGQ3YTMwNDMy
NWY5MTU5MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKQEAgLTIwNCw3ICsyMDQs
NyBAQCB2b2lkIEZvbnRGYWNlU2V0OjpzdGFydGVkTG9hZGluZygpCiB2b2lkIEZvbnRGYWNlU2V0
Ojpjb21wbGV0ZWRMb2FkaW5nKCkKIHsKICAgICBpZiAobV9wcm9taXNlKQotICAgICAgICBzdGQ6
OmV4Y2hhbmdlKG1fcHJvbWlzZSwgTnVsbG9wdCktPnJlc29sdmUoKnRoaXMpOworICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3RkOjpudWxsb3B0KS0+cmVzb2x2ZSgqdGhpcyk7CiAg
ICAgbV9pc1JlYWR5ID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBm
ZTJhNmU3NTIxMWZlOGM0Zjg4MmJhNDY0MzdmZGVmNmZhNjgxYzczLi4wM2Y0ZjQyZTFiOGRhYzNi
ZmNlZDA3ZTUzYjhlZTRkZjIwZTlkMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAt
MTA5LDcgKzEwOSw3IEBAIGNsYXNzIEZvbnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRlIENTU0ZvbnRGYWNlU2V0CiAKICAgICBSZWY8Q1NTRm9u
dEZhY2VTZXQ+IG1fYmFja2luZzsKICAgICBIYXNoTWFwPFJlZlB0cjxGb250RmFjZT4sIFZlY3Rv
cjxSZWY8UGVuZGluZ1Byb21pc2U+Pj4gbV9wZW5kaW5nUHJvbWlzZXM7Ci0gICAgT3B0aW9uYWw8
UmVhZHlQcm9taXNlPiBtX3Byb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxSZWFkeVByb21pc2U+
IG1fcHJvbWlzZTsKICAgICBib29sIG1faXNSZWFkeSB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBhODYwMTE3ZTM2ODVhOWE1
MmJjODM3MmUyZTI3NmY2OWQ2ZWMyYTU2Li42NTYyOWFjNzcyYzEyYTEyZjQwYWVhNzI3ZWM5YmY3
YTc1ZWQ4OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CkBAIC0yMTQsMTAgKzIxNCwxMCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1
ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaQogICAgIHJldHVy
biBjb21wYXJlVmFsdWUod2lkdGggKiBhc3BlY3RSYXRpby5kZW5vbWluYXRvclZhbHVlKCksIGhl
aWdodCAqIGFzcGVjdFJhdGlvLm51bWVyYXRvclZhbHVlKCksIG9wKTsKIH0KIAotc3RhdGljIE9w
dGlvbmFsPGRvdWJsZT4gZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYg
KCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpIHx8ICFkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnZhbHVlKS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXgg
YWNlNWQ4NmViMmFhNjY0NTVkOWJmYzhhZTUzOGJkODVlMWU4YWJiNS4uNGUwZWFhMzYxZTM4YTYw
YjI5ZmUzNTBiNTE1M2E2M2E1YzMwMzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaApAQCAtMTAxLDEzICsxMDEsMTMgQEAgY2xhc3MgU3R5bGVCdWlsZGVy
Q29udmVydGVyIHsKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIHN0YXRpYyBHcmlk
VHJhY2tTaXplIGNvbnZlcnRHcmlkVHJhY2tTaXplKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NW
YWx1ZSYpOwogICAgIHN0YXRpYyBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gY29udmVydEdyaWRUcmFj
a1NpemVMaXN0KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBP
cHRpb25hbDxHcmlkUG9zaXRpb24+IGNvbnZlcnRHcmlkUG9zaXRpb24oU3R5bGVSZXNvbHZlciYs
IGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8R3JpZFBvc2l0aW9u
PiBjb252ZXJ0R3JpZFBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwog
ICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgY29udmVydEdyaWRBdXRvRmxvdyhTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQot
ICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGNvbnZl
cnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9u
cz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0V29yZFNwYWNpbmco
U3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5j
cmVtZW50KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IGNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0
aWMgYm9vbCBjb252ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOwogI2VuZGlmCkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVy
dGVyIHsKICAgICBzdGF0aWMgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVu
dEFsaWdubWVudERhdGEoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3Rh
dGljIEVHbHlwaE9yaWVudGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBjb252
ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUm
KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TGluZUhlaWdodChTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmLCBmbG9hdCBtdWx0aXBsaWVyID0gMS5mKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYsIGZsb2F0IG11bHRpcGxpZXIgPSAxLmYpOwogICAgIHN0YXRp
YyBGb250U3ludGhlc2lzIGNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBDU1NWYWx1ZSYpOwogICAgIAogICAgIHN0YXRpYyBCcmVha0JldHdlZW4gY29udmVydFBhZ2VC
cmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CkBAIC0xMDg0LDEy
ICsxMDg0LDEyIEBAIGlubGluZSBHcmlkVHJhY2tTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEdyaWRUcmFja1NpemUoU3R5bGVSZXNvbHZlciYKICAgICByZXR1cm4gY3JlYXRlR3Jp
ZFRyYWNrU2l6ZSh2YWx1ZSwgc3R5bGVSZXNvbHZlcik7CiB9CiAKLWlubGluZSBPcHRpb25hbDxH
cmlkUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbihT
dHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8R3JpZFBvc2l0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkUG9zaXRp
b24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBHcmlkUG9z
aXRpb24gZ3JpZFBvc2l0aW9uOwogICAgIGlmIChjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGdy
aWRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBncmlkUG9zaXRpb247Ci0gICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIEdyaWRBdXRvRmxv
dyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTExMzcsOSArMTEzNyw5IEBAIGlubGluZSBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5n
dGhDb252ZXJzaW9uRGF0CiAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xl
bmd0aENvbnZlcnNpb25EYXRhKCk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExl
bmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIE9wdGlv
bmFsPExlbmd0aD4gd29yZFNwYWNpbmc7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IHdvcmRT
cGFjaW5nOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlTm9ybWFsKQogICAgICAgICB3b3JkU3BhY2luZyA9IFJlbmRlclN0eWxlOjppbml0aWFsV29y
ZFNwYWNpbmcoKTsKQEAgLTExNTMsNyArMTE1Myw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXIm
CiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwog
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMTE2
NywxMiArMTE2NywxMiBAQCBpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImCiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBP
cHRpb25hbDxmbG9hdD4oTnVsbG9wdCkgOiBPcHRpb25hbDxmbG9hdD4ocGVyc3BlY3RpdmUpOwor
ICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBzdGQ6Om9wdGlvbmFsPGZsb2F0PihzdGQ6Om51
bGxvcHQpIDogc3RkOjpvcHRpb25hbDxmbG9hdD4ocGVyc3BlY3RpdmUpOwogfQogCi1pbmxpbmUg
T3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5j
cmVtZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtYXJxdWVlTGVuZ3Ro
OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtYXJxdWVlTGVuZ3RoOwogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVTbWFs
bDoKQEAgLTExOTYsMTIgKzExOTYsMTIgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc28KICAgICBy
ZXR1cm4gbWFycXVlZUxlbmd0aDsKIH0KIAotaW5saW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlv
bnM+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0
ZDo6b3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAg
IGlmIChzdHlsZVJlc29sdmVyLmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModmFsdWUsIG9wZXJhdGlv
bnMpKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uczsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBpbmxp
bmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhP
cmllbnRhdGlvbk9yQXV0byhTdAogICAgIHJldHVybiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihz
dHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBmbG9hdCBtdWx0aXBsaWVyKQoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5l
SGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKQEAgLTE0MjQsNyArMTQyNCw3IEBAIGlubGluZSBP
cHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQo
U3R5bGVSZXNvbHZlciYKICAgICAgICAgLy8gRklYTUU6IG51bWJlciBhbmQgcGVyY2VudGFnZSB2
YWx1ZXMgc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgdHlwZSBvZiBMZW5ndGggKGllLiBGaXhlZCBv
ciBQZXJjZW50KS4KICAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVW
YWx1ZSgpICogbXVsdGlwbGllciAqIDEwMC4wLCBQZXJjZW50KTsKICAgICB9Ci0gICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIEZvbnRTeW50
aGVzaXMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oCmluZGV4IDcxMWU1ODk0ZTgzNTlmM2VkZmZjNzFkNjA2NWNlNmYwNzQ4MTQ0
ODUuLjRmMWEwNzNjMDg5ODA1YzMzM2MyMzA0NjE1ZmY2YzU2NDA1YmZhODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTYzMCw3ICs2MzAsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbExpbmVIZWlnaHQoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlTGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgZmxvYXQgbXVsdGlwbGllciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4
dFNpemVBZGp1c3QoKS5pc1BlcmNlbnRhZ2UoKSA/IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4
dFNpemVBZGp1c3QoKS5tdWx0aXBsaWVyKCkgOiAxLmY7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBs
aW5lSGVpZ2h0ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChzdHls
ZVJlc29sdmVyLCB2YWx1ZSwgbXVsdGlwbGllcik7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+
IGxpbmVIZWlnaHQgPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KHN0
eWxlUmVzb2x2ZXIsIHZhbHVlLCBtdWx0aXBsaWVyKTsKICAgICBpZiAoIWxpbmVIZWlnaHQpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZUltcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcAppbmRl
eCBmZjdiYzM1MGVhOTg4YmY4ODBkYzBjZGMwNDQzYzJhZmZkODZlMGE5Li4wZWE3Y2FjNDdmMmFk
MTkwMTYwOTNmZWJiYTY2NmVmODY4ZmRmNGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlSW1wb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
SW1wb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1
ZXN0U3R5bGVTaGVldCgpCiAKICAgICAvLyBGSVhNRTogU2tpcCBDb250ZW50IFNlY3VyaXR5IFBv
bGljeSBjaGVjayB3aGVuIHN0eWxlc2hlZXQgaXMgaW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0cmVl
LgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjY2Mz4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYWJzVVJMLCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBOdWxsb3B0LCBT
dHJpbmcobV9wYXJlbnRTdHlsZVNoZWV0LT5jaGFyc2V0KCkpKTsKKyAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChhYnNVUkwsIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgU3RyaW5nKG1fcGFyZW50U3R5bGVT
aGVldC0+Y2hhcnNldCgpKSk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAg
ICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudChtX3N0eWxlU2hlZXRDbGllbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IDBkOGJiYmViNWJiMTVhODVj
YzFiNTE4MzExZWMzNDM2OWFhMWE0N2IuLmE1YmY1Yzg4ZjliNDljYjMyMGRkN2JmNWY4NWJmMDVj
M2RmNjhiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQ5
ODUsMjkgKzQ5ODUsMjkgQEAgYm9vbCBDU1NQYXJzZXI6OmlzU3ByaW5nVGltaW5nRnVuY3Rpb25F
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LnNwcmluZ1RpbWluZ0Z1bmN0aW9u
RW5hYmxlZDsKIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKK3N0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZh
bHVlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKIHsKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlv
biBhcmd1bWVudFdpdGhDYWxjdWxhdGlvbigqYXJncy5jdXJyZW50KCkpOwogICAgIGlmICghdmFs
aWRhdGVVbml0KGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uLCBGTnVtYmVyKSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUo
YXJndW1lbnRXaXRoQ2FsY3VsYXRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRX
aXRoQ2FsY3VsYXRpb24pOwogICAgIENTU1BhcnNlclZhbHVlKiBuZXh0VmFsdWUgPSBhcmdzLm5l
eHQoKTsKICAgICBpZiAoIW5leHRWYWx1ZSkgewogICAgICAgICAvLyBUaGUgbGFzdCBudW1iZXIg
aW4gdGhlIGZ1bmN0aW9uIGhhcyBubyBjb21tYSBhZnRlciBpdCwgc28gd2UncmUgZG9uZS4KICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaWYgKCFpc0NvbW1hKG5leHRWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGFyZ3MubmV4dCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPGRvdWJs
ZT4gQ1NTUGFyc2VyOjpwYXJzZVNwcmluZ1RpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFs
dWVMaXN0JiBhcmdzKQorc3RkOjpvcHRpb25hbDxkb3VibGU+IENTU1BhcnNlcjo6cGFyc2VTcHJp
bmdUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykKIHsKICAgICBW
YWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVudFdpdGhDYWxjdWxhdGlvbigqYXJncy5jdXJyZW50
KCkpOwogICAgIGlmICghdmFsaWRhdGVVbml0KGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uLCBGTnVt
YmVyKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiByZXN1
bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24pOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJz
ZWREb3VibGUoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24pOwogICAgIGFyZ3MubmV4dCgpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC03NjcxLDExICs3NjcxLDExIEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlLCBpbnQqIGNvbG9yQXJy
YXksIGJvb2wKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8c3RkOjpwYWlyPHN0ZDo6
YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IENTU1BhcnNlcjo6cGFyc2VDb2xvckZ1bmN0
aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6
cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBDU1NQYXJzZXI6OnBhcnNl
Q29sb3JGdW5jdGlvblBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewogICAgIENT
U1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZhbHVlLmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogICAg
IGlmICghYXJncy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZTsKICAgICBzd2l0
Y2ggKGFyZ3MtPmN1cnJlbnQoKS0+aWQpIHsKQEAgLTc2ODYsNyArNzY4Niw3IEBAIE9wdGlvbmFs
PHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBDU1NQYXJzZXI6
OnBhcnNlQ29sb3JGdW5jCiAgICAgICAgIGNvbG9yU3BhY2UgPSBDb2xvclNwYWNlRGlzcGxheVAz
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzdGQ6OmFycmF5PGRv
dWJsZSwgND4gY29sb3JWYWx1ZXMgPSB7IHsgMCwgMCwgMCwgMSB9IH07CkBAIC03Njk2LDcgKzc2
OTYsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8c3RkOjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNw
YWNlPj4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnVuYwogICAgICAgICBpZiAodmFsdWVPck51bGwp
IHsKICAgICAgICAgICAgIFZhbHVlV2l0aENhbGN1bGF0aW9uIGFyZ3VtZW50V2l0aENhbGN1bGF0
aW9uKCp2YWx1ZU9yTnVsbCk7CiAgICAgICAgICAgICBpZiAoIXZhbGlkYXRlVW5pdChhcmd1bWVu
dFdpdGhDYWxjdWxhdGlvbiwgRk51bWJlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGNv
bG9yVmFsdWVzW2ldID0gc3RkOjptYXgoMC4wLCBzdGQ6Om1pbigxLjAsIHBhcnNlZERvdWJsZShh
cmd1bWVudFdpdGhDYWxjdWxhdGlvbikpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc3MDYsMTMg
Kzc3MDYsMTMgQEAgT3B0aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29s
b3JTcGFjZT4+IENTU1BhcnNlcjo6cGFyc2VDb2xvckZ1bmMKICAgICAgICAgcmV0dXJuIHsgeyBj
b2xvclZhbHVlcywgY29sb3JTcGFjZSB9IH07CiAKICAgICBpZiAoIWlzRm9yd2FyZFNsYXNoT3Bl
cmF0b3IoKnNsYXNoT3JOdWxsKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBIYW5kbGUgYWxwaGEuCiAKICAgICBWYWx1ZVdp
dGhDYWxjdWxhdGlvbiBhcmd1bWVudFdpdGhDYWxjdWxhdGlvbigqYXJncy0+bmV4dCgpKTsKICAg
ICBpZiAoIXZhbGlkYXRlVW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlvbiwgRk51bWJlciB8IEZQ
ZXJjZW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgY29sb3JWYWx1ZXNbM10gPSBzdGQ6Om1heCgwLjAsIHN0ZDo6bWluKDEuMCwg
cGFyc2VDb2xvckRvdWJsZShhcmd1bWVudFdpdGhDYWxjdWxhdGlvbikpKTsKIAogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IHRoZSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBmYWxsYmFjayBjb2xvciB2
YWx1ZXMuCkBAIC03NzIwLDcgKzc3MjAsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8c3RkOjphcnJh
eTxkb3VibGUsIDQ+LCBDb2xvclNwYWNlPj4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnVuYwogCiAg
ICAgYXV0byBjb21tYU9yTnVsbCA9IGFyZ3MtPm5leHQoKTsKICAgICBpZiAoY29tbWFPck51bGwg
JiYgIWlzQ29tbWEoY29tbWFPck51bGwpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgY29sb3JWYWx1ZXMsIGNv
bG9yU3BhY2UgfSB9OwogfQpAQCAtNzgxNCw3ICs3ODE0LDcgQEAgQ29sb3IgQ1NTUGFyc2VyOjpw
YXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSkKICAgICB9IGVsc2UgaWYg
KHZhbHVlLnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uCiAgICAgICAgICYmIHZhbHVl
LmZ1bmN0aW9uLT5hcmdzCiAgICAgICAgICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiY29sb3IoIikpIHsKLSAgICAgICAgT3B0aW9uYWw8c3Rk
OjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IGNvbG9yRGF0YSA9IHBh
cnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcnModmFsdWUpOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBjb2xvckRhdGEg
PSBwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0ZXJzKHZhbHVlKTsKICAgICAgICAgaWYgKCFjb2xv
ckRhdGEpCiAgICAgICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAgICAgcmV0dXJuIENvbG9y
KGNvbG9yRGF0YS52YWx1ZSgpLmZpcnN0WzBdLCBjb2xvckRhdGEudmFsdWUoKS5maXJzdFsxXSwg
Y29sb3JEYXRhLnZhbHVlKCkuZmlyc3RbMl0sIGNvbG9yRGF0YS52YWx1ZSgpLmZpcnN0WzNdLCBj
b2xvckRhdGEudmFsdWUoKS5zZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
LmgKaW5kZXggMGZiZjY1OTFmNGRlZGIyYTJiMGExYjJjZjZlNmJjZTU3ZmM4OTkxYS4uZDlkMmUx
ZmZjNTNmNzVjMjUxMDMwZjJiYWMzNDdlYTE4OTQ2YzJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5oCkBAIC0xNzUsNyArMTc1LDcgQEAgY2xhc3MgQ1NTUGFyc2VyIHsKICAg
ICAgICAgU291cmNlU2l6ZShNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYmLCBSZWY8Q1NTVmFsdWU+JiYp
OwogICAgIH07CiAgICAgVmVjdG9yPFNvdXJjZVNpemU+IHBhcnNlU2l6ZXNBdHRyaWJ1dGUoU3Ry
aW5nVmlldyk7Ci0gICAgT3B0aW9uYWw8U291cmNlU2l6ZT4gc291cmNlU2l6ZShNZWRpYVF1ZXJ5
RXhwcmVzc2lvbiYmLCBDU1NQYXJzZXJWYWx1ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8U291cmNl
U2l6ZT4gc291cmNlU2l6ZShNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYmLCBDU1NQYXJzZXJWYWx1ZSYp
OwogCiAgICAgYm9vbCBwYXJzZUZpbGxJbWFnZShDU1NQYXJzZXJWYWx1ZUxpc3QmLCBSZWZQdHI8
Q1NTVmFsdWU+Jik7CiAKQEAgLTIxNCw4ICsyMTQsOCBAQCBjbGFzcyBDU1NQYXJzZXIgewogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGRvdWJsZT4+IHBhcnNlS2V5ZnJhbWVLZXlM
aXN0KGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9yaWdpblNob3J0
aGFuZChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICBPcHRpb25hbDxkb3VibGU+IHBhcnNlQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYpOwotICAgIE9wdGlv
bmFsPGRvdWJsZT4gcGFyc2VTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVl
TGlzdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwYXJzZUN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxpc3QmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gcGFyc2VTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYp
OwogICAgIGJvb2wgcGFyc2VBbmltYXRpb25Qcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8
Q1NTVmFsdWU+JiwgQW5pbWF0aW9uUGFyc2VDb250ZXh0Jik7CiAgICAgYm9vbCBwYXJzZVRyYW5z
aXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wg
cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwpA
QCAtMjgwLDcgKzI4MCw3IEBAIGNsYXNzIENTU1BhcnNlciB7CiAKICAgICBib29sIHBhcnNlUkdC
UGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYsIGludCogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VB
bHBoYSk7CiAgICAgYm9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUmLCBkb3Vi
bGUqIGNvbG9yVmFsdWVzLCBib29sIHBhcnNlQWxwaGEpOwotICAgIE9wdGlvbmFsPHN0ZDo6cGFp
cjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENvbG9yU3BhY2U+PiBwYXJzZUNvbG9yRnVuY3Rpb25Q
YXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJik7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8
c3RkOjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNwYWNlPj4gcGFyc2VDb2xvckZ1bmN0aW9uUGFy
YW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYpOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
cGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogPSBudWxscHRyKTsKICAgICBDb2xvciBwYXJzZUNv
bG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlJik7CiAgICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNv
bnN0IFN0cmluZyYsIENTU1NlbGVjdG9yTGlzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IGU0ODQ4NDliOTJmOWQ2Y2NjNjNkYWE4OTMwODRlMWZl
NDQ3NjIzMGUuLmUzZGZjZDAyYjQ3ZmI5NjFlYTA5OTM2ZDFmMGJiNWQwYjg2NjViMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAgLTMyNiw4ICszMjYs
OCBAQCBjbGFzcyBTZWxlY3RvckNvZGVHZW5lcmF0b3IgewogICAgIHZvaWQgZ2VuZXJhdGVFbGVt
ZW50SGFzRm9jdXNXaXRoaW4oQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAog
ICAgIC8vIEhlbHBlcnMuCi0gICAgdm9pZCBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29s
dmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246
OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOwotICAg
IHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVj
a2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRp
b246OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOwor
ICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHlsZShBc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpUeXBlLCBzdGQ6Om9wdGlv
bmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJh
dGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQs
IEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIHN0
ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSA9IHsgfSk7CiAgICAgQXNz
ZW1ibGVyOjpKdW1wIGJyYW5jaE9uUmVzb2x2aW5nTW9kZVdpdGhDaGVja2luZ0NvbnRleHQoQXNz
ZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBTZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2Vt
Ymxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQpOwogICAgIEFzc2VtYmxlcjo6SnVtcCBi
cmFuY2hPblJlc29sdmluZ01vZGUoQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBTZWxl
Y3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQp
OwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNGaXJzdExpbmsoQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCk7CkBAIC0yMTcw
LDcgKzIxNzAsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVJbmRpcmVj
dEFkamFjZW50VHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaQogICAgIGxvY2FsRmFpbHVyZUNh
c2VzLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CiB9CiAKLXZvaWQgU2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUgcmVsYXRp
b25UeXBlLCBPcHRpb25hbDxBc3NlbWJsZXI6OlJlZ2lzdGVySUQ+IHZhbHVlKQordm9pZCBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5
bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSBy
ZWxhdGlvblR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkK
IHsKICAgICBpZiAobV9zZWxlY3RvckNvbnRleHQgPT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNl
bGVjdG9yKQogICAgICAgICByZXR1cm47CkBAIC0yMTg4LDcgKzIxODgsNyBAQCBzdGF0aWMgdm9p
ZCBhZGRTdHlsZVJlbGF0aW9uRnVuY3Rpb24oU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRl
eHQqIGNoZWNraW5nQwogICAgIGNoZWNraW5nQ29udGV4dC0+c3R5bGVSZWxhdGlvbnMuYXBwZW5k
KHsgKmVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0ZWRCeUFjdGl2ZSwgMSB9KTsKIH0K
IAotdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbihB
c3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hlY2tpbmdDb250ZXh0LCBBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpUeXBlIHJlbGF0aW9uVHlwZSwgT3B0aW9uYWw8
QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNzZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5n
Q29udGV4dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6
VHlwZSByZWxhdGlvblR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQobV9zZWxlY3RvckNvbnRleHQgIT0gU2VsZWN0b3JDb250ZXh0
OjpRdWVyeVNlbGVjdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5jcHAKaW5kZXggMDZhMmYyZTQ5ZmZlYWI4NzcxNGVmNzU4MWJiZjEw
N2VjNjhiY2NmZS4uYWM1ZmVlOGQ2MWIyN2I3OGYzYjVjZWUyYjdhN2U2MzgwZWEyNWFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3Bw
CkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlSXRlbSB7
CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX29sZERvY3VtZW50Owog
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV9uZXdEb2N1bWVudDsKLSAgICBPcHRpb25hbDxRdWFsaWZp
ZWROYW1lPiBtX2F0dHJpYnV0ZU5hbWU7CisgICAgc3RkOjpvcHRpb25hbDxRdWFsaWZpZWROYW1l
PiBtX2F0dHJpYnV0ZU5hbWU7CiAgICAgQXRvbWljU3RyaW5nIG1fb2xkVmFsdWU7CiAgICAgQXRv
bWljU3RyaW5nIG1fbmV3VmFsdWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzYx
OGE5ZGQ2ZmNhY2I5N2ZlMzBiYmNmMjE5OGY4YWY5ZTI3NDQ4NC4uZWQxNmQxOWQxZDhhODYwMTcw
MGY5YjY0OTZhZDQzYjljZDc1YTk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MzQ1
LDcgKzQzNDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6c2V0RG9tYWluKGNvbnN0
IFN0cmluZyYgbmV3RG9tYWluKQogU3RyaW5nIERvY3VtZW50OjpsYXN0TW9kaWZpZWQoKQogewog
ICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKLSAgICBPcHRpb25hbDxzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQ+IGRhdGVUaW1lOworICAgIHN0ZDo6b3B0aW9uYWw8c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50PiBkYXRlVGltZTsKICAgICBpZiAobV9mcmFtZSAmJiBsb2FkZXIoKSkKICAg
ICAgICAgZGF0ZVRpbWUgPSBsb2FkZXIoKS0+cmVzcG9uc2UoKS5sYXN0TW9kaWZpZWQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDk1NTYxZGNhZjA3ZjJlMWVhNTcwMjczYmExMGM5OTIz
Y2E0M2M1NDYuLmQ4ZWFhMjI5NTc4N2Y5ZWQxY2I5Yjc0ZmZjNDdlZmI3MTdiOGM3YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9s
bEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2VudGVySWZOb3RWaXNpYmxlKQogCiB2b2lkIEVs
ZW1lbnQ6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBy
ZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlT3IoMCksIG9wdGlvbnMudG9wLnZhbHVl
T3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShvcHRpb25zLmxlZnQudmFsdWVfb3IoMCksIG9w
dGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgbm9ybWFs
aXplTm9uRmluaXRlVmFsdWUoZG91YmxlIGYpCkBAIC0zMDAwLDcgKzMwMDAsNyBAQCBVUkwgRWxl
bWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y29uc3QKIAogaW50IEVsZW1lbnQ6OmdldEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSFRNTEludGVn
ZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVybiBw
YXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7
CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0SW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgaW50IHZhbHVlKQpAQCAtMzAxMCw3ICszMDEwLDcgQEAgdm9p
ZCBFbGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBpbnQgdmFsdWUKIAogdW5zaWduZWQgRWxlbWVudDo6Z2V0VW5zaWduZWRJbnRl
Z3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAog
ewotICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2
ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAog
dm9pZCBFbGVtZW50OjpzZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIHVuc2lnbmVkIHZhbHVlKQpAQCAtMzQ5OCwxMCArMzQ5OCwx
MCBAQCB2b2lkIEVsZW1lbnQ6OmRpZERldGFjaFJlbmRlcmVycygpCiAgICAgQVNTRVJUKGhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxl
PiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBS
ZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKQogewog
ICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7Ci0gICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBFbGVtZW50Ojpj
bG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCmluZGV4IDhkYzE1ODMzOTIxYWU2M2JjNGZkZjU1NGRhMTQxMWQzODQyMWRmMDMuLjc2
ZjQ1ZjFlNzM4MjI5ODlkZWYwMjdmNDMxYzRhMTMxMDUyMzJmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aApAQCAtNTE5LDcgKzUxOSw3IEBAIGNsYXNzIEVsZW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9k
ZSB7CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJl
bmRlcmVycygpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogc2hhZG93SG9zdFN0eWxlKTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0
eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKTsKIAogICAgIExheW91dFJlY3QgYWJz
b2x1dGVFdmVudEhhbmRsZXJCb3VuZHMoYm9vbCYgaW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxlbWVu
dHMpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0
ZXJhdG9yQXNzZXJ0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFz
c2VydGlvbnMuaAppbmRleCBhNzY0YTlhMDRjYzZlMjM3MWI4MTk3MjdiNWQ5YmY5ZDc1MWViN2Zi
Li5kZjM3MDNhY2EyNDg3NzI1ZWYyMGM2NDA4NzZmMTQyODY0YjJkM2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKQEAgLTQwLDcgKzQwLDcg
QEAgY2xhc3MgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyB7CiBwcml2YXRlOgogICAgIGNvbnN0
IERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIHVpbnQ2NF90IG1faW5pdGlhbERPTVRyZWVWZXJz
aW9uOwotICAgIE9wdGlvbmFsPE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbj4gbV9ldmVudERpc3Bh
dGNoQXNzZXJ0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
PiBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb247CiB9OwogCiAvLyBGSVhNRTogTm8gcmVhbCBwb2lu
dCBpbiBkb2luZyB0aGVzZSBhcyBpbmxpbmVzOyB0aGV5IGFyZSBmb3IgZGVidWdnaW5nIGFuZCB3
ZSB1c3VhbGx5IHR1cm4gb2ZmIGlubGluaW5nIGluIGRlYnVnIGJ1aWxkcy4KQEAgLTYwLDE0ICs2
MCwxNCBAQCBpbmxpbmUgYm9vbCBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpkb21UcmVlSGFz
TXV0YXRlZCgpIGNvbnN0CiAKIGlubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6
OmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCkKIHsKLSAgICBtX2V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24gPSBOdWxsb3B0OworICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogaW5saW5lIHZvaWQgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6Y2xlYXIo
KQogewogICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOwogICAgIG1faW5pdGlhbERPTVRyZWVWZXJz
aW9uID0gMDsKLSAgICBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gPSBOdWxsb3B0OworICAgIG1f
ZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAppbmRleCAyYmQwNzlkMGI5NzdkMjE1
MmYyYjk5ZDQwNmQwZTNkZTc2M2RlZDVhLi5kMWQyOGMxMGMyMjc0MDJlMTI4MTA0MzlhNGYzMjQ3
NzkzNTAwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaApAQCAtNjgsNyArNjgsNyBAQCB0
ZW1wbGF0ZTw+IGNsYXNzIEV4Y2VwdGlvbk9yPHZvaWQ+IHsKICAgICBFeGNlcHRpb24mJiByZWxl
YXNlRXhjZXB0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8RXhjZXB0aW9uPiBtX2V4
Y2VwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gbV9leGNlcHRpb247CiB9Owog
CiBFeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRlZENvcHkoRXhjZXB0aW9uT3I8dm9pZD4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCmluZGV4IGY1NTBk
ZDI0Yzc2MWMyMWNhMmRmZmQ0YWRiODE2MjMzNDVkZDdhODMuLjU3MjI4OWQ4MjUwYzA1ZWQwYWFl
NzQ1ZmUwOGY4OTA4NWQyY2Q4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBDU1NQYXJzZXJDb250ZXh0
IHBhcnNlckNvbnRleHRGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPElubGluZVN0eWxlU2hlZXRDYWNoZUtl
eT4gbWFrZUlubGluZVN0eWxlU2hlZXRDYWNoZUtleShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbmxpbmVTdHlsZVNoZWV0
Q2FjaGVLZXk+IG1ha2VJbmxpbmVTdHlsZVNoZWV0Q2FjaGVLZXkoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIE9ubHkgY2FjaGUgZm9yIHNoYWRv
dyB0cmVlcy4gTWFpbiBkb2N1bWVudCBpbmxpbmUgc3R5bGVzaGVldHMgYXJlIGdlbmVyYWxseSB1
bmlxdWUgYW5kIGNhbid0IGJlIHNoYXJlZCBiZXR3ZWVuIGRvY3VtZW50cy4KICAgICAvLyBGSVhN
RTogVGhpcyBjb3VsZCBiZSByZWxheGVkIHdoZW4gYSBzdHlsZXNoZWV0IGRvZXMgbm90IGNvbnRh
aW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcyAob3IgI3VybHMpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmgKaW5kZXggZWM3ZGU5NmI4ZDM3NzM3YmYxMTAxMzZiNTIyMjk1YjdlOThhMTZhYi4u
YjZkZGRlM2MzYjFmMDgyYjliM2NmYzMzNzg0MGVhMzJmMjQyNmM4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
S2V5Ym9hcmRFdmVudC5oCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQgZmlu
YWwgOiBwdWJsaWMgVUlFdmVudFdpdGhLZXlTdGF0ZSB7CiAKICAgICAgICAgLy8gTGVnYWN5Lgog
ICAgICAgICBTdHJpbmcga2V5SWRlbnRpZmllcjsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IGtleUxvY2F0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBrZXlMb2NhdGlv
bjsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxLZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlz
VHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNs
YXNzaWNTY3JpcHQuY3BwCmluZGV4IDY1NWNkMWZjNDJiYzY2MjlkYjAzMjJmNWVjMmVjOGY3MzQ0
MGUwNDAuLjkwOTYxYjhlY2I4MjMzYWNlNjc2NTk2NThhNTQ3ZjFiMzVkNzM0YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCkBAIC01MSwxNSArNTEs
MTUgQEAgYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmlzTG9hZGVkKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jYWNoZWRTY3JpcHQtPmlzTG9hZGVkKCk7CiB9CiAKLU9wdGlvbmFsPExvYWRhYmxl
U2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2ljU2NyaXB0OjplcnJvcigpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpl
cnJvcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybiBtX2Vycm9y
OwogCiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0LT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgIHJl
dHVybiBFcnJvciB7IEVycm9yVHlwZTo6Q2FjaGVkU2NyaXB0LCBOdWxsb3B0IH07CisgICAgICAg
IHJldHVybiBFcnJvciB7IEVycm9yVHlwZTo6Q2FjaGVkU2NyaXB0LCBzdGQ6Om51bGxvcHQgfTsK
IAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJv
b2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKaW5kZXggZmUyNTk1MDIzNDNkMmUzZjk3
ZmMxNGRhZmZiZmVkOWE4ZmVkMWQzOC4uYWQ0MWRjMmFiN2Q0MWQwZjE1YThkYjIyYTBkMDU0NjYz
OTRkY2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaApA
QCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMb2FkYWJsZUNsYXNzaWNTY3JpcHQgZmluYWwgOiBwdWJs
aWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2FjaGVkUmVzb3VyYwogCiAgICAgc3RhdGljIFJl
ZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0ZShDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRTY3JpcHQ+JiYpOwogICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBmaW5hbDsKLSAgICBPcHRp
b25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEVycm9y
PiBlcnJvcigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCBmaW5h
bDsKIAogICAgIENhY2hlZFNjcmlwdCYgY2FjaGVkU2NyaXB0KCkgeyByZXR1cm4gKm1fY2FjaGVk
U2NyaXB0OyB9CkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIExvYWRhYmxlQ2xhc3NpY1NjcmlwdCBm
aW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRSZXNvdXJjCiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX2NhY2hlZFNjcmlwdDsKLSAgICBPcHRpb25h
bDxFcnJvcj4gbV9lcnJvciB7IE51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBt
X2Vycm9yIHsgc3RkOjpudWxsb3B0IH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xv
YWRhYmxlTW9kdWxlU2NyaXB0LmNwcAppbmRleCBjYTE4ZTY4ZGI0MzA0ZTBmNjRhYjg3ZTgxNTc2
NjMxMTA1NzFhNDgyLi44NDI4N2VlN2IxYTNlNzI0MWZhN2UxZjA3Y2U5OGE1NGUwOWFmZmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZU1vZHVsZVNjcmlwdC5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgYm9vbCBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6aXNMb2FkZWQoKSBjb25zdAogICAg
IHJldHVybiBtX21vZHVsZVNjcmlwdC0+aXNMb2FkZWQoKTsKIH0KIAotT3B0aW9uYWw8TG9hZGFi
bGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZU1vZHVsZVNjcmlwdDo6ZXJyb3IoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IExvYWRhYmxlTW9kdWxlU2NyaXB0Ojpl
cnJvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbW9kdWxlU2NyaXB0LT5lcnJvcigpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAppbmRleCAwY2ZkMGQ2N2Fj
Yjc5ZTA3NGEzNWQxNDEzNmUyNWYyYjk1ZjZjMWZiLi5kZGVhOWY4Y2IwNTBhYWJiYmMxZGRiZDM3
OTgxNjAyYjUwNmU2YjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVN
b2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3Jp
cHQuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBMb2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6
IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0ZSBDYWNoZWRNb2R1bGVTYwogICAgIHN0YXRp
YyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNyZWF0ZShDYWNoZWRNb2R1bGVTY3JpcHQmKTsK
IAogICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxFcnJvcj4g
ZXJyb3IoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCBmaW5hbDsKIAogICAgIENh
Y2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0KCkgeyByZXR1cm4gbV9tb2R1bGVTY3JpcHQu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKaW5kZXggM2FkMTdjNTU5YjQ3
MzM3MGJmNzZjNGRhN2VkNTQ4MGIxZTQ3MTI4ZC4uYmEyMmZiMTViODE0ZDcxN2Q4ZDI3NGM4MDQ2
ZmE5NTBlMjEzOTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2Ny
aXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKQEAgLTUxLDEz
ICs1MSwxMyBAQCBjbGFzcyBMb2FkYWJsZVNjcmlwdCA6IHB1YmxpYyBSZWZDb3VudGVkPExvYWRh
YmxlU2NyaXB0PiB7CiAKICAgICBzdHJ1Y3QgRXJyb3IgewogICAgICAgICBFcnJvclR5cGUgdHlw
ZTsKLSAgICAgICAgT3B0aW9uYWw8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2FnZTsKICAgICB9
OwogCiAgICAgdmlydHVhbCB+TG9hZGFibGVTY3JpcHQoKSB7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc0xvYWRlZCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEVycm9yPiBlcnJv
cigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0ID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFNjcmlwdEVsZW1lbnQmKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IDcxM2Q3M2Q0NTE0ODYwZjQ1MmFiMGE1MDAzZTVkMjQy
NWM0M2IwY2IuLmZlOWMyYzU5MWQ4ZGI2ZDcyYzJiNDc2ZjNlNjY0MmM2ZmMzYjQ2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIGlubGluZSBNZXNz
YWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIEluCiB7CiB9CiAKLWlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+
JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKK2lubGluZSBN
ZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBz
dGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogICAgIDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VF
dmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV9kYXRhVHlwZShEYXRhVHlwZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSkKICAgICAsIG1fZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUo
ZGF0YSkpCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dChSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7CiB9CiAK
LVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYmIHBvcnRzLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25h
bDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlKQorUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNl
PiYmIHNvdXJjZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoV1RG
TW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3Zl
KHBvcnRzKSkpOwogfQpAQCAtMTM1LDcgKzEzNSw3IEBAIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VF
dmVudCgpCiB7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJv
b2wgY2FuY2VsYWJsZSwgSlNWYWx1ZSBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVu
dDo6aW5pdE1lc3NhZ2VFdmVudChFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIEpTVmFsdWUgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9u
YWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiYgcG9ydHMpCiB7CiAgICAgaWYgKGRpc3BhdGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwKICAgICBtX3BvcnRzID0g
V1RGTW92ZShwb3J0cyk7CiB9CiAKLXZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRT
b3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKK3Zv
aWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogewogICAgIGlmIChkaXNwYXRjaGVk
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA0ZTY5
NGQ0MTRhNDhlMGFmZWU4YjZiZjAwNTQ3ODU1NTJiMThkMmUzLi43MTBhYWNmODQxZWQzNjMwZDY3
Y2RiMTI4MTBiZmRjYjIxNjBhMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC00
Miw3ICs0Miw3IEBAIHVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERP
TVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmlu
YWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50
PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNl
ID0gTnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsKICAgICBzdGF0aWMgUmVmPE1l
c3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4gPSB7IH0pOwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUmVmPEJsb2I+
JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtNTMsMTUgKzUzLDE1IEBAIGNsYXNz
IE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAgICAgICAgIEpTQzo6SlNWYWx1
ZSBkYXRhOwogICAgICAgICBTdHJpbmcgb3JpZ2luOwogICAgICAgICBTdHJpbmcgbGFzdEV2ZW50
SWQ7Ci0gICAgICAgIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gc291cmNlOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gc291cmNlOwogICAgICAgICBWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CiAgICAgfTsKICAgICBzdGF0aWMgUmVmPE1l
c3NhZ2VFdmVudD4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBJbml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pOwogCiAgICAgdmlydHVhbCB+
TWVzc2FnZUV2ZW50KCk7CiAKLSAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3Rh
dGUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNl
bGFibGUsIEpTQzo6SlNWYWx1ZSBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmLCBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7Ci0gICAgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+
JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICB2b2lkIGluaXRNZXNzYWdl
RXZlbnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIEpTQzo6SlNWYWx1ZSBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
RXZlbnRTb3VyY2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICB2b2lk
IGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6
b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3Jp
Z2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdEV2ZW50SWQ7IH0KQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFs
IDogcHVibGljIEV2ZW50IHsKIHByaXZhdGU6CiAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgTWVz
c2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgSW5pdCYmLCBJ
c1RydXN0ZWQpOwotICAgIE1lc3NhZ2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYmKTsKKyAgICBNZXNzYWdlRXZlbnQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYmKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CiAgICAgTWVzc2FnZUV2ZW50KFJlZjxC
bG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBj
bGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gbV9kYXRhQXNBcnJheUJ1ZmZlcjsKICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAg
U3RyaW5nIG1fbGFzdEV2ZW50SWQ7Ci0gICAgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiBt
X3NvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gbV9zb3VyY2U7
CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IG1fcG9ydHM7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggZjE3MDAxZmIyNjliYmMxOWJjODYy
NzRlNTdmMmQ1NWFmMWM2ZGY0ZC4uMzI1NTc5ZGNjNDMwZjdmYWZkNzAxOThjMmRlOGM3ZTcxMGM2
ZGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtODAsOSAr
ODAsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUm
IG5vZGUsIGNvbnN0IEluaXQmIGluaXQpCiAgICAgICAgIG9wdGlvbnMgfD0gQ2hpbGRMaXN0Owog
ICAgIGlmIChpbml0LnN1YnRyZWUpCiAgICAgICAgIG9wdGlvbnMgfD0gU3VidHJlZTsKLSAgICBp
ZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKKyAgICBpZiAoaW5pdC5h
dHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQXR0
cmlidXRlT2xkVmFsdWU7Ci0gICAgaWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVl
T3IoZmFsc2UpKQorICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZV9vcihm
YWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQ2hhcmFjdGVyRGF0YU9sZFZhbHVlOwogCiAgICAg
SGFzaFNldDxBdG9taWNTdHJpbmc+IGF0dHJpYnV0ZUZpbHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5oCmluZGV4IDAzNWRiNjRmNDM2ZjU5YmY2OTQ4YTVhNDliZmZlNDQ3Mjg3
ZTYwMDAuLmI3YzcxYmQ1MTEyODk2Mzg5N2Y2M2Q4MjllZGNjMTEzOWU4NDMyOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaApAQCAtNzMsMTIgKzczLDEyIEBAIGNsYXNzIE11
dGF0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CiAK
ICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAgIGJvb2wgY2hpbGRMaXN0OwotICAgICAgICBPcHRp
b25hbDxib29sPiBhdHRyaWJ1dGVzOwotICAgICAgICBPcHRpb25hbDxib29sPiBjaGFyYWN0ZXJE
YXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZXM7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YTsKICAgICAgICAgYm9vbCBzdWJ0cmVlOwot
ICAgICAgICBPcHRpb25hbDxib29sPiBhdHRyaWJ1dGVPbGRWYWx1ZTsKLSAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gY2hhcmFjdGVyRGF0YU9sZFZhbHVlOwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gYXR0cmlidXRlRmlsdGVyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGF0
dHJpYnV0ZU9sZFZhbHVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNoYXJhY3RlckRh
dGFPbGRWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYXR0cmli
dXRlRmlsdGVyOwogICAgIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBvYnNlcnZlKE5vZGUm
LCBjb25zdCBJbml0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwCmluZGV4IDdkMWZlNjQ4OThiMGIyODczZmE0NDRlZDI4ZWJmY2VhY2MxYWNmMjIuLjlh
ZDllN2IzNTJhZThmYzYzOTk2NThiZjI5NGQzZTUwOTg3NmRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAjZW5kaWYKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hh
cnNldCIpOwotICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRv
Y3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIE51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9j
dW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKKyAgICAgICAgICAgICAgICBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYp
LCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBz
dGQ6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBX
VEZNb3ZlKGNoYXJzZXQpKTsKIAogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1
bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92
ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5j
cHAKaW5kZXggM2NiYTk0YmQwYzA1NjBiNmE4YWE5MmJiOWE5YWU2MzJlMTE4OGE4Ni4uNGRhZGZi
YWE0YmRlNDJkYzI3ZTI3MjVmNGI4YTM1NjM3MDNhNjUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcApAQCAtNzcsMTEgKzc3LDExIEBAIHZvaWQgUHNldWRvRWxlbWVudDo6Y2xl
YXJIb3N0RWxlbWVudCgpCiAgICAgbV9ob3N0RWxlbWVudCA9IG51bGxwdHI7CiB9CiAKLU9wdGlv
bmFsPEVsZW1lbnRTdHlsZT4gUHNldWRvRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqKQorc3RkOjpvcHRp
b25hbDxFbGVtZW50U3R5bGU+IFBzZXVkb0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBh
dXRvKiBzdHlsZSA9IG1faG9zdEVsZW1lbnQtPnJlbmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0
eWxlKG1fcHNldWRvSWQsICZwYXJlbnRTdHlsZSk7CiAgICAgaWYgKCFzdHlsZSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IEVsZW1lbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnN0eWxlKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHNldWRvRWxlbWVudC5oCmluZGV4IDUyNjllZGIxOGJlNjAzMzY1M2YzZWU1YmI5YmUw
Zjk2OTA4ZDYzNGEuLjM2N2FkYTU3NmIyODcyYjk3NjczYTQyNDkyZjEwOTE3NWRhMDk1Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBQc2V1
ZG9FbGVtZW50IGZpbmFsIDogcHVibGljIEVsZW1lbnQgewogICAgIEVsZW1lbnQqIGhvc3RFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0RWxlbWVudDsgfQogICAgIHZvaWQgY2xlYXJIb3N0
RWxlbWVudCgpOwogCi0gICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hh
ZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4g
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRBdHRh
Y2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpD
aGFuZ2UpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJT
dHlsZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91
bmRhcnlQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCmlu
ZGV4IDU5N2M5MmY1N2NlZTM2ZmQwNzY2NDk1ZWRjZDYxZmIxOTBhN2U2Y2YuLjcxYzkyY2RmYzll
MWE0NmUzYzZlMTE5YjIyYmMzYmRmNmFlZjUyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VC
b3VuZGFyeVBvaW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgUmFuZ2VCb3VuZGFyeVBvaW50
IHsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9jb250YWluZXJOb2RlOwotICAgIG11
dGFibGUgT3B0aW9uYWw8dW5zaWduZWQ+IG1fb2Zmc2V0SW5Db250YWluZXIgeyAwIH07CisgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX29mZnNldEluQ29udGFpbmVyIHsgMCB9
OwogICAgIFJlZlB0cjxOb2RlPiBtX2NoaWxkQmVmb3JlQm91bmRhcnk7CiB9OwogCkBAIC0xMzUs
NyArMTM1LDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpzZXRUb0JlZm9yZUNo
aWxkKE5vZGUmIGNoaWxkKQogICAgIEFTU0VSVChjaGlsZC5wYXJlbnROb2RlKCkpOwogICAgIG1f
Y2hpbGRCZWZvcmVCb3VuZGFyeSA9IGNoaWxkLnByZXZpb3VzU2libGluZygpOwogICAgIG1fY29u
dGFpbmVyTm9kZSA9IGNoaWxkLnBhcmVudE5vZGUoKTsKLSAgICBtX29mZnNldEluQ29udGFpbmVy
ID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gTnVsbG9wdCA6IE9wdGlvbmFsPHVuc2lnbmVkPigw
KTsKKyAgICBtX29mZnNldEluQ29udGFpbmVyID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gc3Rk
OjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oMCk7CiB9CiAKIGlubGluZSB2b2lk
IFJhbmdlQm91bmRhcnlQb2ludDo6c2V0VG9BZnRlckNoaWxkKE5vZGUmIGNoaWxkKQpAQCAtMTQz
LDcgKzE0Myw3IEBAIGlubGluZSB2b2lkIFJhbmdlQm91bmRhcnlQb2ludDo6c2V0VG9BZnRlckNo
aWxkKE5vZGUmIGNoaWxkKQogICAgIEFTU0VSVChjaGlsZC5wYXJlbnROb2RlKCkpOwogICAgIG1f
Y2hpbGRCZWZvcmVCb3VuZGFyeSA9ICZjaGlsZDsKICAgICBtX2NvbnRhaW5lck5vZGUgPSBjaGls
ZC5wYXJlbnROb2RlKCk7Ci0gICAgbV9vZmZzZXRJbkNvbnRhaW5lciA9IG1fY2hpbGRCZWZvcmVC
b3VuZGFyeSA/IE51bGxvcHQgOiBPcHRpb25hbDx1bnNpZ25lZD4oMCk7CisgICAgbV9vZmZzZXRJ
bkNvbnRhaW5lciA9IG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+KDApOwogfQogCiBpbmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9p
bnQ6OnNldFRvU3RhcnRPZk5vZGUoUmVmPE5vZGU+JiYgY29udGFpbmVyKQpAQCAtMTYxLDcgKzE2
MSw3IEBAIGlubGluZSB2b2lkIFJhbmdlQm91bmRhcnlQb2ludDo6c2V0VG9FbmRPZk5vZGUoUmVm
PE5vZGU+JiYgY29udGFpbmVyKQogICAgICAgICBtX2NoaWxkQmVmb3JlQm91bmRhcnkgPSBudWxs
cHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA9IG1fY29u
dGFpbmVyTm9kZS0+bGFzdENoaWxkKCk7Ci0gICAgICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBt
X2NoaWxkQmVmb3JlQm91bmRhcnkgPyBOdWxsb3B0IDogT3B0aW9uYWw8dW5zaWduZWQ+KDApOwor
ICAgICAgICBtX29mZnNldEluQ29udGFpbmVyID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gc3Rk
OjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oMCk7CiAgICAgfQogfQogCkBAIC0x
NzcsNyArMTc3LDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjpjaGlsZEJlZm9y
ZVdpbGxCZVJlbW92ZWQoKQogCiBpbmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OmludmFs
aWRhdGVPZmZzZXQoKSBjb25zdAogewotICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBOdWxsb3B0
OworICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmFuZ2VCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBSYW5nZUJv
dW5kYXJ5UG9pbnQmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNmJl
MGZhN2FhNjYzMDA2NGM2NjBmZTVmNWVmMjNlNTIzM2E0MjZhMS4uMzUwODczODBlNzUzYjdhOWJi
NjAzMjZlZmNiYmY2ZjcxYWVkYWExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2
ZW50KCkKICAgICBtX2VsZW1lbnQuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAotT3B0aW9uYWw8U2NyaXB0RWxl
bWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdh
Y3lUeXBlU3VwcG9ydCBzdXBwb3J0TGVnYWN5VHlwZXMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNj
cmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlwdEVsZW1lbnQ6OmRldGVybWluZVNjcmlwdFR5
cGUoTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExlZ2FjeVR5cGVzKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBpc0xlZ2FjeVN1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSgpIGlzIG5vdCB2YWxp
ZCBIVE1MNS4gSXQgaXMgdXNlZCBoZXJlIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmls
aXR5IHdpdGggZXhpc3RpbmcgbGF5b3V0IHRlc3RzLiBUaGUgc3BlY2lmaWMgdmlvbGF0aW9ucyBh
cmU6CiAgICAgLy8gLSBBbGxvd2luZyB0eXBlPWphdmFzY3JpcHQuIHR5cGU9IHNob3VsZCBvbmx5
IHN1cHBvcnQgTUlNRSB0eXBlcywgc3VjaCBhcyB0ZXh0L2phdmFzY3JpcHQuCkBAIC0xNTYsNyAr
MTU2LDcgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVu
dDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXAKICAgICAgICAgICAgIHJldHVybiBTY3Jp
cHRUeXBlOjpDbGFzc2ljOwogICAgICAgICBpZiAoaXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0
TGFuZ3VhZ2UobGFuZ3VhZ2UpKQogICAgICAgICAgICAgcmV0dXJuIFNjcmlwdFR5cGU6OkNsYXNz
aWM7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0
TUlNRVR5cGUodHlwZS5zdHJpcFdoaXRlU3BhY2UoKSkpCiAgICAgICAgIHJldHVybiBTY3JpcHRU
eXBlOjpDbGFzc2ljOwpAQCAtMTY4LDE2ICsxNjgsMTYgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVu
dDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lU
eXAKICAgICAvLyBPbmNlICJkZWZlciIgaXMgaW1wbGVtZW50ZWQsIHdlIGNhbiByZWNvbnNpZGVy
IGVuYWJsaW5nIG1vZHVsZXMgaW4gWEhUTUwuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzM4NwogICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50KCku
aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBzZXR0aW5ncyA9IG1fZWxlbWVudC5kb2N1bWVu
dCgpLnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPmVzNk1vZHVs
ZXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3NjcmlwdGluZy5odG1sI2F0dHItc2NyaXB0LXR5cGUKICAgICAvLyBTZXR0aW5nIHRoZSBhdHRy
aWJ1dGUgdG8gYW4gQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgdGhlIHN0cmluZyAi
bW9kdWxlIiBtZWFucyB0aGF0IHRoZSBzY3JpcHQgaXMgYSBtb2R1bGUgc2NyaXB0LgogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAibW9kdWxlIikpCiAgICAgICAg
IHJldHVybiBTY3JpcHRUeXBlOjpNb2R1bGU7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9P
dmVydmlldy5odG1sI3ByZXBhcmUtYS1zY3JpcHQKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIFNj
cmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFy
dFBvc2l0aW9uLCBMZWdhYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTY3JpcHRUeXBl
IHNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlOjpDbGFzc2ljOwotICAgIGlmIChPcHRpb25hbDxTY3Jp
cHRUeXBlPiByZXN1bHQgPSBkZXRlcm1pbmVTY3JpcHRUeXBlKHN1cHBvcnRMZWdhY3lUeXBlcykp
CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8U2NyaXB0VHlwZT4gcmVzdWx0ID0gZGV0ZXJtaW5lU2Ny
aXB0VHlwZShzdXBwb3J0TGVnYWN5VHlwZXMpKQogICAgICAgICBzY3JpcHRUeXBlID0gcmVzdWx0
LnZhbHVlKCk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MzgsOCArNDM4
LDggQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVs
ZVNjcmlwdCYgbW9kdWxlU2NyaXB0KQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3Jp
cHRBbmREaXNwYXRjaEV2ZW50KExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKIHsKLSAg
ICBpZiAoT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBlcnJvciA9IGxvYWRhYmxlU2Ny
aXB0LmVycm9yKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25z
b2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5jb25zb2xlTWVzc2FnZSkKKyAgICBpZiAoc3Rk
OjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gbG9hZGFibGVTY3JpcHQu
ZXJyb3IoKSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6Q29u
c29sZU1lc3NhZ2U+IG1lc3NhZ2UgPSBlcnJvci0+Y29uc29sZU1lc3NhZ2UpCiAgICAgICAgICAg
ICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlLT5zb3VyY2Us
IG1lc3NhZ2UtPmxldmVsLCBtZXNzYWdlLT5tZXNzYWdlKTsKICAgICAgICAgZGlzcGF0Y2hFcnJv
ckV2ZW50KCk7CiAgICAgfSBlbHNlIGlmICghbG9hZGFibGVTY3JpcHQud2FzQ2FuY2VsZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKaW5kZXggZjQxNGI0YjhiYjM1MTIwNjBmZDY5
YTVmYTU4OWM3MDA4YWE2YTY2NC4uNmMwODY4ODJmZjMzODQwMmI1Yzk4OTE4YzVlNTkzZTFlNmZj
NmJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCkBAIC05MSw3ICs5MSw3IEBAIGNs
YXNzIFNjcmlwdEVsZW1lbnQgewogcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVTY3JpcHRBbmRE
aXNwYXRjaEV2ZW50KExvYWRhYmxlU2NyaXB0Jik7CiAKLSAgICBPcHRpb25hbDxTY3JpcHRUeXBl
PiBkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cGVTdXBwb3J0KSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNjcmlwdFR5cGU+IGRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBv
cnQpIGNvbnN0OwogICAgIGJvb2wgaWdub3Jlc0xvYWRSZXF1ZXN0KCkgY29uc3Q7CiAgICAgYm9v
bCBpc1NjcmlwdEZvckV2ZW50U3VwcG9ydGVkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERl
Y29kZXIuY3BwCmluZGV4IGI4YjQxNmYwNjcwY2IzMWMxYjMxNTk3NGIzM2IyY2Y3ODQ5NGI3MzEu
Ljk2Y2M3MzlmYzYyYjljNTUzYmE5ODE1NDNmNzJlZWQwMTE1MDYxZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RleHREZWNvZGVyLmNwcApAQCAtOTUsOSArOTUsOSBAQCBzdGF0aWMgc2l6ZV90IGNvZGVVbml0
Qnl0ZVNpemUoY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKICAgICByZXR1cm4gMjsKIH0K
IAotRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0RGVjb2Rlcjo6ZGVjb2RlKE9wdGlvbmFsPEJ1ZmZl
clNvdXJjZTo6VmFyaWFudFR5cGU+IGlucHV0LCBEZWNvZGVPcHRpb25zIG9wdGlvbnMpCitFeGNl
cHRpb25PcjxTdHJpbmc+IFRleHREZWNvZGVyOjpkZWNvZGUoc3RkOjpvcHRpb25hbDxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlPiBpbnB1dCwgRGVjb2RlT3B0aW9ucyBvcHRpb25zKQogewotICAg
IE9wdGlvbmFsPEJ1ZmZlclNvdXJjZT4gaW5wdXRCdWZmZXI7CisgICAgc3RkOjpvcHRpb25hbDxC
dWZmZXJTb3VyY2U+IGlucHV0QnVmZmVyOwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBudWxs
cHRyOwogICAgIHNpemVfdCBsZW5ndGggPSAwOwogICAgIGlmIChpbnB1dCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dERlY29kZXIuaAppbmRleCBhYzNkZDFlMDU1YmRmZjMxYzJmOGZjNzIwMzNjOTY0MjVkZGEz
ZTNlLi5lNDIwMTI0M2E1NTRjZGFiODAxMzc0MzdmMzgwYzlmZTQwNWRkNDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dERlY29kZXIuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBUZXh0RGVjb2RlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFRleHREZWNvZGVyPiB7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3Q7CiAgICAgYm9vbCBmYXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5mYXRhbDsgfQog
ICAgIGJvb2wgaWdub3JlQk9NKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmlnbm9yZUJPTTsg
fQotICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gZGVjb2RlKE9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6
VmFyaWFudFR5cGU+LCBEZWNvZGVPcHRpb25zKTsKKyAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGRl
Y29kZShzdGQ6Om9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+LCBEZWNvZGVPcHRp
b25zKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgcHJlcGVuZEJPTUlmTmVjZXNzYXJ5KGNvbnN0
IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5k
aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAK
aW5kZXggY2IyOGQxZjBmMWY4MDAwY2I3Yzk0NDQ2MjdiMWMzZjU2NzI1ZWE0MC4uZWNlNjhmMWQ1
OGJmNzk4NDE1ZGVjNTEyZTMxMDliOGNkMjM4MGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFVzZXJHZXN0dXJlVG9r
ZW46On5Vc2VyR2VzdHVyZVRva2VuKCkKICAgICAgICAgb2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1V
c2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGU+IHN0YXRlLCBEb2N1bWVudCogZG9jdW1lbnQpCitVc2VyR2Vz
dHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3Ioc3RkOjpvcHRpb25hbDxQcm9jZXNz
aW5nVXNlckdlc3R1cmVTdGF0ZT4gc3RhdGUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1f
cHJldmlvdXNUb2tlbihjdXJyZW50VG9rZW4oKSkKIHsKICAgICAvLyBTaWxlbnRseSBpZ25vcmUg
VXNlckdlc3R1cmVJbmRpY2F0b3JzIG9uIG5vbiBtYWluIHRocmVhZHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCmluZGV4IDBhYjA3ODQ1NmYzYzE3MGQ5OWZjYzdl
N2YwZWQ2ZjU0ZmRmYmM1NjIuLmYwNDRmNjVhYTE2ZDFlYTZkMzZhOWJiZWQ1NzMwMjM1Yjg0MTdi
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCkBAIC03OSw3
ICs3OSw3IEBAIGNsYXNzIFVzZXJHZXN0dXJlSW5kaWNhdG9yIHsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpOwogCiAgICAgLy8g
SWYgYSBkb2N1bWVudCBpcyBwcm92aWRlZCwgaXRzIGxhc3Qga25vd24gdXNlciBnZXN0dXJlIHRp
bWVzdGFtcCBpcyB1cGRhdGVkLgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0
dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiwgRG9jdW1l
bnQqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVXNlckdlc3R1cmVJ
bmRpY2F0b3Ioc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4sIERvY3Vt
ZW50KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJl
SW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
flVzZXJHZXN0dXJlSW5kaWNhdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggY2Y1OTgwNDRhNDNlYjYyOThlOWExZmFjYTY4
OWFmM2NkNTU3ZmE3NC4uZDIwODAwMDA0YjM3ZWYwMTA5YTE5MGMyYjA5YzA0MWJmNDgwMzJmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAK
QEAgLTE1MzUsMTEgKzE1MzUsMTEgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBh
cmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICB9CiB9
CiAKLU9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzaG91
bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFZpc2libGVT
ZWxlY3Rpb24+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzaG91bGRCcmVha091dE9mRW1wdHlMaXN0
SXRlbSgpIGNvbnN0CiB7CiAgICAgYXV0byBlbXB0eUxpc3RJdGVtID0gZW5jbG9zaW5nRW1wdHlM
aXN0SXRlbShlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7CiAgICAgaWYgKCFlbXB0
eUxpc3RJdGVtKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGF1dG8gbGlzdE5vZGUgPSBlbXB0eUxpc3RJdGVtLT5wYXJlbnROb2Rl
KCk7CiAgICAgLy8gRklYTUU6IENhbid0IHdlIGRvIHNvbWV0aGluZyBiZXR0ZXIgd2hlbiB0aGUg
aW1tZWRpYXRlIHBhcmVudCB3YXNuJ3QgYSBsaXN0IG5vZGU/CkBAIC0xNTQ3LDcgKzE1NDcsNyBA
QCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxk
QnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKQogICAgICAgICB8fCAoIWxpc3ROb2RlLT5oYXNUYWdO
YW1lKHVsVGFnKSAmJiAhbGlzdE5vZGUtPmhhc1RhZ05hbWUob2xUYWcpKQogICAgICAgICB8fCAh
bGlzdE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKQogICAgICAgICB8fCBsaXN0Tm9kZSA9PSBlbXB0
eUxpc3RJdGVtLT5yb290RWRpdGFibGVFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFZpc2libGVTZWxl
Y3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKS5wcmV2aW91cyhCYWNrd2FyZERlbGV0aW9u
KSwgZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IGUxODQyZjlhNTUwZGI0YTM3MjZiMzZhYzMx
M2QwZmJhMmRkZjJmOTguLjg1ZjQxOGY3ZGI5MTdjY2YwMTQ4YTZmNzRlYmMzOGJlYjA1MDM5YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAg
LTIwMCw3ICsyMDAsNyBAQCBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZCA6IHB1YmxpYyBFZGl0
Q29tbWFuZCB7CiAgICAgdm9pZCBjbG9uZVBhcmFncmFwaFVuZGVyTmV3RWxlbWVudChjb25zdCBQ
b3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsIE5vZGUqIG91dGVyTm9kZSwgRWxl
bWVudCogYmxvY2tFbGVtZW50KTsKICAgICB2b2lkIGNsZWFudXBBZnRlckRlbGV0aW9uKFZpc2li
bGVQb3NpdGlvbiBkZXN0aW5hdGlvbiA9IFZpc2libGVQb3NpdGlvbigpKTsKICAgICAKLSAgICBP
cHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBzaG91bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gc2hvdWxkQnJlYWtP
dXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdDsKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eUxpc3RJ
dGVtKCk7CiAgICAgYm9vbCBicmVha091dE9mRW1wdHlNYWlsQmxvY2txdW90ZWRQYXJhZ3JhcGgo
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggYWQxMzQzNWFhZDk5NjFhMzhkM2Y5ZmRh
MDBhZjc3Y2M4YTU4NjNkYi4uZDUzNDQ3YTViYmZkZDJiODZjNzI1Y2U0ODEwZGI0OTNiNzhkN2Nj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgRmlsZSBmaW5h
bCA6IHB1YmxpYyBCbG9iIHsKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIFN0cmluZyBtX25hbWU7
CiAKLSAgICBPcHRpb25hbDxpbnQ2NF90PiBtX292ZXJyaWRlTGFzdE1vZGlmaWVkRGF0ZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1fb3ZlcnJpZGVMYXN0TW9kaWZpZWREYXRlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5o
CmluZGV4IGFmYzk3NjdjYTJkNTU3Mzc1ZDU4ZTkzZTA5OWY0YTVkZTUyMGQwNWIuLmI0ZDU4MzZl
ZGVlNjg3YTQ4ZGE5ZTcyMWM1YjQ3ZWU2NjA3ZmExZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Nh
Y2hlZEZyYW1lLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlIHsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+IG1fY2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGE7CiAgICAgYm9vbCBtX2lzTWFpbkZyYW1lOwogICAgIGJvb2wgbV9pc0NvbXBv
c2l0ZWQ7Ci0gICAgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBtX2hhc0luc2VjdXJlQ29u
dGVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gbV9oYXNJbnNlY3Vy
ZUNvbnRlbnQ7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhY2hlZEZyYW1lPj4gbV9j
aGlsZEZyYW1lczsKIH07CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lIDogcHJp
dmF0ZSBDYWNoZWRGcmFtZUJhc2UgewogICAgIFdFQkNPUkVfRVhQT1JUIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhKiBjYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSgpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRIYXNJbnNlY3VyZUNvbnRlbnQoSGFzSW5zZWN1cmVDb250ZW50KTsKLSAgICBP
cHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzSW5zZWN1cmVDb250ZW50OyB9CisgICAgc3RkOjpvcHRpb25hbDxIYXNJbnNl
Y3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW5z
ZWN1cmVDb250ZW50OyB9CiAKICAgICB1c2luZyBDYWNoZWRGcmFtZUJhc2U6OmRvY3VtZW50Owog
ICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6dmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmNwcAppbmRleCBiMWE1NWNjMjk1ZWVhY2ViNDM4ODYwODM5ZDlmYzJlYTViMTRlYzc1Li4w
Mzk1YTJlMGYxYTY1NTI2MTEzNDQ2Y2RmN2JjNGExZDVhZDk3OGZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01Ub2tlbkxpc3QuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RE9NVG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbikKICAgICByZXR1
cm4gcmVtb3ZlSW50ZXJuYWwoJnRva2VuLnN0cmluZygpLCAxKTsKIH0KIAotRXhjZXB0aW9uT3I8
Ym9vbD4gRE9NVG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgT3B0
aW9uYWw8Ym9vbD4gZm9yY2UpCitFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2ds
ZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZvcmNlKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVUb2tlbih0b2tlbik7CiAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBFeGNlcHRpb25Pcjxib29sPiBE
T01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBPcHRpb25hbDxi
b29sPgogICAgIGF1dG8mIHRva2VucyA9IHRoaXMtPnRva2VucygpOwogCiAgICAgaWYgKHRva2Vu
cy5jb250YWlucyh0b2tlbikpIHsKLSAgICAgICAgaWYgKCFmb3JjZS52YWx1ZU9yKGZhbHNlKSkg
eworICAgICAgICBpZiAoIWZvcmNlLnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAgICAgdG9r
ZW5zLnJlbW92ZUZpcnN0KHRva2VuKTsKICAgICAgICAgICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRy
aWJ1dGVGcm9tVG9rZW5zKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01Ub2tlbkxpc3QuaAppbmRleCA5Yjk4N2Q5Yzk0NzZjZDg1MDA0YTFjNjQxOTY5YzBjMzI2
NzYxNTk2Li41M2FjNWUyZjRjYmUyYmMzZTk1NjQ1OWE2N2VmNjU1ZGE2YjVmZGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgRE9NVG9rZW5M
aXN0IHsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGJvb2w+IHRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBP
cHRpb25hbDxib29sPiBmb3JjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Ym9v
bD4gdG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9yY2Up
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2UoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tl
biwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdUb2tlbik7CiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4g
c3VwcG9ydHMoU3RyaW5nVmlldyB0b2tlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAKaW5kZXggNDZiZDM1OWFjMmFhMGUwMjg5YjAwY2ZhYTFkZWY0Y2Y5N2Jh
YTAzYi4uYzQ4NTM2N2UwNTQ3MDFjODAyNWJjZTZkZGYyMDU4OWQ5ZjZlNTJlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQCB2
b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljayhFdmVudCYgZXZlbnQpCiAjZW5kaWYK
IAogICAgIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIgPSBoYXNSZWwoUmVs
YXRpb246Ok5vUmVmZXJyZXIpID8gTmV2ZXJTZW5kUmVmZXJyZXIgOiBNYXliZVNlbmRSZWZlcnJl
cjsKLSAgICBhdXRvIG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gaGFzUmVsKFJlbGF0aW9uOjpOb09w
ZW5lcikgPyBtYWtlT3B0aW9uYWwoTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKSA6IE51
bGxvcHQ7CisgICAgYXV0byBuZXdGcmFtZU9wZW5lclBvbGljeSA9IGhhc1JlbChSZWxhdGlvbjo6
Tm9PcGVuZXIpID8gc3RkOjptYWtlX29wdGlvbmFsKE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBw
cmVzcykgOiBzdGQ6Om51bGxvcHQ7CiAgICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKGNv
bXBsZXRlZFVSTCwgdGFyZ2V0KCksICZldmVudCwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObywgc2hvdWxkU2VuZFJlZmVycmVyLCBkb2N1bWVudCgpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpLCBuZXdGcmFtZU9wZW5lclBvbGljeSwgZG93
bmxvYWRBdHRyaWJ1dGUpOwogCiAgICAgc2VuZFBpbmdzKGNvbXBsZXRlZFVSTCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGQxZDNmMjc1YjYyN2ZmNDI5
ZWJjNWU5YmE5MWY0Y2QyNTliZDEwY2UuLjY3M2E1NzRiYTIxNWRiNGYzMTBiODYwZTllN2M1MzFj
MDkwNWE5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBA
IC00NTgsNyArNDU4LDcgQEAgU3RyaW5nIEhUTUxDYW52YXNFbGVtZW50Ojp0b0VuY29kaW5nTWlt
ZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gbWltZVR5cGUuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAotRXhjZXB0aW9uT3I8U3RyaW5nPiBIVE1MQ2FudmFz
RWxlbWVudDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSkKK0V4Y2VwdGlvbk9yPFN0cmluZz4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0
YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSkKIHsKICAgICBpZiAoIW1fb3JpZ2luQ2xlYW4pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTRUNVUklUWV9FUlIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApp
bmRleCAyZjU3NDA1ZTQ0MDg3Mjc0MGQxYTgwM2UzNDAyZDNmMWI3NDM1OGM0Li41NmM0ZmFhOTI3
NzIwMWJlOTkwYWVmMGU5OWU5MmQxMjg4YTdmMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5oCkBAIC05Miw4ICs5Miw4IEBAIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICNlbmRpZgogCiAgICAgc3RhdGljIFN0cmlu
ZyB0b0VuY29kaW5nTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KTsKLSAgICBFeGNlcHRpb25PcjxTdHJpbmc+
IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSB7IHJldHVybiB0b0RhdGFVUkwobWlt
ZVR5cGUsIE51bGxvcHQpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5n
PiB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHF1YWxpdHkpOworICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIHsgcmV0dXJuIHRvRGF0YVVSTChtaW1lVHlwZSwgc3RkOjpudWxsb3B0KTsg
fQogCiAgICAgLy8gVXNlZCBmb3IgcmVuZGVyaW5nCiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZs
b2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBlMDA5ODAxMjk4
OWY0Y2JlNDRkZTk2NjIyMDEwNTdmMTI1MmM2NGJhLi41ODljYTg5NWQxYmVjNzNkMjQwNTc4YWY1
YTExMTY4YjA1Y2VkYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIHN0YXRpYyBpbmxpbmUgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaUF0dHJpYnV0
ZUZvckRpckF1dG8oSFRNTEVsZW1lbnQmIGVsZW1lbnQpCiAKIHVuc2lnbmVkIEhUTUxFbGVtZW50
OjpwYXJzZUJvcmRlcldpZHRoQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNv
bnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBib3JkZXJXaWR0aCA9IHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcih2YWx1ZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGJvcmRlcldpZHRoID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIGJvcmRlcldpZHRoLnZhbHVlKCk7CiAKICAgICByZXR1cm4gaGFzVGFnTmFt
ZSh0YWJsZVRhZykgPyAxIDogMDsKQEAgLTQyNCw3ICs0MjQsNyBAQCB2b2lkIEhUTUxFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmCiAgICAgaWYgKG5hbWUgPT0gdGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjbGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVk
KCk7Ci0gICAgICAgIGVsc2UgaWYgKE9wdGlvbmFsPGludD4gdGFiSW5kZXggPSBwYXJzZUhUTUxJ
bnRlZ2VyKHZhbHVlKSkKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IHRhYklu
ZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4
cGxpY2l0bHkodGFiSW5kZXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA3YjZmNmY5OGQyMGViNzZk
YzE2ZTRjZTEyODRiZWVmNDNkMTQyNDM2Li4wMTQ0NGJhNjA5YWU4MmU0YWY5MWZlZjY4Zjg0OGM4
YWI2ODExOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAg
LTg5LDcgKzg5LDcgQEAgSFRNTEltYWdlRWxlbWVudDo6fkhUTUxJbWFnZUVsZW1lbnQoKQogICAg
IHNldFBpY3R1cmVFbGVtZW50KG51bGxwdHIpOwogfQogCi1SZWY8SFRNTEltYWdlRWxlbWVudD4g
SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYgZG9jdW1l
bnQsIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgT3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCkK
K1JlZjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gd2lkdGgs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCkKIHsKICAgICBhdXRvIGltYWdlID0gYWRv
cHRSZWYoKm5ldyBIVE1MSW1hZ2VFbGVtZW50KGltZ1RhZywgZG9jdW1lbnQpKTsKICAgICBpZiAo
d2lkdGgpCkBAIC0zODAsNyArMzgwLDcgQEAgdW5zaWduZWQgSFRNTEltYWdlRWxlbWVudDo6d2lk
dGgoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMpCiB7CiAgICAgaWYgKCFyZW5kZXJlcigp
KSB7CiAgICAgICAgIC8vIGNoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0
IHBpeGVsIHZhbHVlCi0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCA9IHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRo
QXR0cikpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCA9IHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRo
QXR0cikpOwogICAgICAgICBpZiAod2lkdGgpCiAgICAgICAgICAgICByZXR1cm4gd2lkdGgudmFs
dWUoKTsKIApAQCAtNDA1LDcgKzQwNSw3IEBAIHVuc2lnbmVkIEhUTUxJbWFnZUVsZW1lbnQ6Omhl
aWdodChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cykKIHsKICAgICBpZiAoIXJlbmRlcmVy
KCkpIHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGlj
aXQgcGl4ZWwgdmFsdWUKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCA9IHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhl
aWdodEF0dHIpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaGVpZ2h0ID0gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
aGVpZ2h0QXR0cikpOwogICAgICAgICBpZiAoaGVpZ2h0KQogICAgICAgICAgICAgcmV0dXJuIGhl
aWdodC52YWx1ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4
IDE0OTJhNDNlNjY3MjZjZGNjZWUzYmRjOGY0ZjliYmZjZjQ4ZDE5YTcuLjUyZjk4YmFmN2I1NmZj
NzM4MDRmOTRkNzYwZjNiYzBkZTg2OGFhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBGb3JtTmFtZWRJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBS
ZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIEhUTUxGb3JtRWxlbWVudCopOwotICAgIHN0YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4g
Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCYsIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0
aCwgT3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCk7CisgICAgc3RhdGljIFJlZjxIVE1MSW1hZ2VF
bGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50Jiwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCk7CiAKICAgICB2
aXJ0dWFsIH5IVE1MSW1hZ2VFbGVtZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCmluZGV4IDE1ZWE1NjcwMjE2YzNjMDE4Yjk4OGVlZTFlNTcxY2E3MWUxNTJm
ODguLmNkM2E2MTI5YzFjMDc5ZmNlOTBiMTRjY2ZmNjgwNTU4Y2JmMDA1ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIFN0ZXBS
YW5nZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFu
eVN0ZXBIYW5kbGluZykgY29uCiB9CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLU9w
dGlvbmFsPERlY2ltYWw+IEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1
ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gSFRNTElucHV0
RWxlbWVudDo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQog
ewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKHZhbHVl
KTsKIH0KQEAgLTE3NzUsNyArMTc3NSw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNFbXB0
eVZhbHVlKCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogewogICAgIHVuc2lnbmVkIG9s
ZEVmZmVjdGl2ZU1heExlbmd0aCA9IGVmZmVjdGl2ZU1heExlbmd0aCgpOwotICAgIGludGVybmFs
U2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVP
cigtMSkpOworICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50
ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICBpZiAob2xkRWZmZWN0aXZlTWF4TGVu
Z3RoICE9IGVmZmVjdGl2ZU1heExlbmd0aCgpKQogICAgICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVk
KCk7CiAKQEAgLTE3ODcsNyArMTc4Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6bWF4TGVu
Z3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgaW50IG9sZE1pbkxlbmd0aCA9IG1pbkxlbmd0aCgpOwot
ICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdW
YWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5v
bk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsKICAgICBpZiAob2xkTWlu
TGVuZ3RoICE9IG1pbkxlbmd0aCgpKQogICAgICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZDA0NWIwYWZkZjM4ZDM1
OTEyNzVkYzQwNDZkMmVmY2RmMmY1YTM4ZS4uOGFmZmQ5ODExNzU0ZDllNDkyMzYyNTZlNjU1ZDZk
YTU1ODNmNTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTg1
LDcgKzg1LDcgQEAgY2xhc3MgSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCB7CiAgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFu
ZGxpbmcpIGNvbnN0OwogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgT3B0aW9u
YWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBE
ZWNpbWFsJik7CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+
IHN0ZXBVcChpbnQgPSAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApp
bmRleCAzZTQ2ZTRlMzNjYWRkODk5N2UxZGE2NzFjOWMyMzYyOThkZDE5Y2M4Li4wNDg5ZTg5NjU5
MjU1ODU1MmQyZTQ4MDJiODM2ZGJiYzcwODZjZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6
OnByb2Nlc3MoKQogCiAgICAgICAgIGJvb2wgbWVkaWFRdWVyeU1hdGNoZXMgPSB0cnVlOwogICAg
ICAgICBpZiAoIW1fbWVkaWEuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBPcHRpb25hbDxSZW5k
ZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
U3R5bGU+IGRvY3VtZW50U3R5bGU7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS5oYXNMaXZp
bmdSZW5kZXJUcmVlKCkpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpy
ZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBhdXRvIG1lZGlhID0g
TWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQg
SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgYWRkUGVuZGluZ1NoZWV0KGlzQWN0
aXZlID8gQWN0aXZlU2hlZXQgOiBJbmFjdGl2ZVNoZWV0KTsKIAogICAgICAgICAvLyBMb2FkIHN0
eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBuZWVkZWQgZm9yIHRoZSByZW5kZXJpbmcgaW1tZWRpYXRl
bHkgd2l0aCBsb3cgcHJpb3JpdHkuCi0gICAgICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9y
aXR5PiBwcmlvcml0eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0
eT4gcHJpb3JpdHk7CiAgICAgICAgIGlmICghaXNBY3RpdmUpCiAgICAgICAgICAgICBwcmlvcml0
eSA9IFJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93OwogICAgICAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCh1cmwsIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVk
UmVzb3VyY2VPcHRpb25zKCksIHByaW9yaXR5LCBXVEZNb3ZlKGNoYXJzZXQpKTsKQEAgLTM0Myw3
ICszNDMsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkK
IHZvaWQgSFRNTExpbmtFbGVtZW50Ojppbml0aWFsaXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmIHN0eWxlU2hlZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQmIGNhY2hl
ZFN0eWxlU2hlZXQpCiB7CiAgICAgLy8gRklYTUU6IG9yaWdpbkNsZWFuIHNob3VsZCBiZSB0dXJu
ZWQgdG8gZmFsc2UgZXhjZXB0IGlmIGZldGNoIG1vZGUgaXMgQ09SUy4KLSAgICBPcHRpb25hbDxi
b29sPiBvcmlnaW5DbGVhbjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG9yaWdpbkNsZWFuOwog
ICAgIGlmIChjYWNoZWRTdHlsZVNoZWV0Lm9wdGlvbnMoKS5tb2RlID09IEZldGNoT3B0aW9uczo6
TW9kZTo6Q29ycykKICAgICAgICAgb3JpZ2luQ2xlYW4gPSBjYWNoZWRTdHlsZVNoZWV0LmlzQ09S
U1NhbWVPcmlnaW4oKTsKIApAQCAtNTEzLDcgKzUxMyw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTExpbmtFbGVtZW50Ojp0eXBlKCkgY29uc3QKICAgICByZXR1cm4gYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiB9CiAKLU9wdGlvbmFsPExpbmtJY29uVHlwZT4g
SFRNTExpbmtFbGVtZW50OjppY29uVHlwZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExpbmtJY29u
VHlwZT4gSFRNTExpbmtFbGVtZW50OjppY29uVHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
cmVsQXR0cmlidXRlLmljb25UeXBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKaW5kZXggODQ3MWVjZTc0ZWFhMTMxNDQ2MmI1YWUzYTY0NmEwZjc1ZDA0NmFmNy4uMGRiMzYw
NTM3Y2NiNDA1OTFkYWZjZmQwNTNjMjVjZDI1MzM3MTllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIEhUTUxMaW5rRWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIENhY2hlZFN0eWxlU2hlZXRDbGllbnQs
CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBjb25zdDsKIAotICAgIE9wdGlvbmFs
PExpbmtJY29uVHlwZT4gaWNvblR5cGUoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmtJ
Y29uVHlwZT4gaWNvblR5cGUoKSBjb25zdDsKIAogICAgIENTU1N0eWxlU2hlZXQqIHNoZWV0KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGVldC5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9M
aXN0RWxlbWVudC5oCmluZGV4IGE4MzViZDBhZGJiYjU0NzBjNDI1MGFlZDZiZDIzMjE0ODJiOWIx
MmUuLmMzZmUyNDY3NWMwNTg5NTEyYmUwNDg5NTE5MGNjY2ZiZmZjMDM3Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIEhUTUxP
TGlzdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmlu
YWw7CiAKLSAgICBPcHRpb25hbDxpbnQ+IG1fc3RhcnQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+
IG1fc3RhcnQ7CiAgICAgdW5zaWduZWQgbV9pdGVtQ291bnQ7CiAKICAgICBib29sIG1faXNSZXZl
cnNlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAKaW5kZXggMjE2YmYwZTBmMmI5YmEwZjJmZDdmYjJjNmFhODkzODYwNmZjNzRhMi4uMmY4ODVk
ZTQ4NDMxNDhjZGE0OWMzZThmMWZiYTVmMmFiM2QzNTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMzMsNyArMzMsNyBAQCBSZWY8SFRN
TE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2Vs
ZWN0RWxlbWVudCYgc2VsZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxPcHRpb25zQ29s
bGVjdGlvbihzZWxlY3QpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uOjphZGQoY29uc3QgT3B0aW9uT3JPcHRHcm91cEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZvcmUpCitFeGNlcHRpb25Pcjx2b2lkPiBI
VE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYg
ZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQog
ewogICAgIHJldHVybiBzZWxlY3RFbGVtZW50KCkuYWRkKGVsZW1lbnQsIGJlZm9yZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAppbmRleCA3MGQxNGVj
NGFhZWVjZTcyYmE2OTcwNDg3NDk0NzhjYWZiZDA3NTgyLi4zZjdkZDVhN2ExZGFlMDM4YmQ1NGY1
MGRkZGI4N2I3ZjhjMjY0MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9u
IGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxPcHRpb25zQ29sbGUKIAog
ICAgIHVzaW5nIE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50ID0gVmFyaWFudDxSZWZQdHI8SFRNTE9w
dGlvbkVsZW1lbnQ+LCBSZWZQdHI8SFRNTE9wdEdyb3VwRWxlbWVudD4+OwogICAgIHVzaW5nIEhU
TUxFbGVtZW50T3JJbnQgPSBWYXJpYW50PFJlZlB0cjxIVE1MRWxlbWVudD4sIGludD47Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3Jv
dXBFbGVtZW50JiwgY29uc3QgT3B0aW9uYWw8SFRNTEVsZW1lbnRPckludD4mIGJlZm9yZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0
R3JvdXBFbGVtZW50JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVm
b3JlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShpbnQgaW5kZXgpOwogICAgIHZv
aWQgcmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNjQ2NDMxZWU4OGVhZjBmOWRhNTQ3ZDVmZjBhZThkNDJj
Mzg0NjM5OS4uNmMzN2U3NjFkZDIxNDI5MjhiZjUwMmZiZTZiNzA3ZmFmOWExMjU2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBA
QCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpIGNv
bnN0CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExpc3RJbmRleCgpOwogfQogCi1FeGNlcHRpb25P
cjx2b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6YWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBPcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQor
RXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVsZW1lbnQ6OmFkZChjb25zdCBPcHRpb25Pck9w
dEdyb3VwRWxlbWVudCYgZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9y
SW50PiYgYmVmb3JlKQogewogICAgIEhUTUxFbGVtZW50KiBiZWZvcmVFbGVtZW50ID0gbnVsbHB0
cjsKICAgICBpZiAoYmVmb3JlKSB7CkBAIC00NTgsNyArNDU4LDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAKICAg
ICBpZiAoZGlmZiA8IDApIHsgLy8gQWRkIGR1bW15IGVsZW1lbnRzLgogICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFkZChIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpLnB0cigpLCBOdWxsb3B0KTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRk
KEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkucHRyKCksIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0gd2hpbGUgKCsrZGlmZik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggN2I5Nzk5Y2M4MTRjOGE5ODM2MTlkMGQ1
NzBhN2U0MjY5ZjMyOTI4NS4uNjNjNDg4ZDQzNmQxNDdhMWM0OTJhZWEyMjcxMGRhNmNiMGJkODQ5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAtNTMsNyArNTMs
NyBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlLCBwcml2YXRlIFR5cGVBaAogCiAgICAgdXNpbmcgT3B0aW9uT3JPcHRHcm91
cEVsZW1lbnQgPSBWYXJpYW50PFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4sIFJlZlB0cjxIVE1M
T3B0R3JvdXBFbGVtZW50Pj47CiAgICAgdXNpbmcgSFRNTEVsZW1lbnRPckludCA9IFZhcmlhbnQ8
UmVmUHRyPEhUTUxFbGVtZW50PiwgaW50PjsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjx2b2lkPiBhZGQoY29uc3QgT3B0aW9uT3JPcHRHcm91cEVsZW1lbnQmLCBjb25zdCBPcHRpb25h
bDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRp
b25Pcjx2b2lkPiBhZGQoY29uc3QgT3B0aW9uT3JPcHRHcm91cEVsZW1lbnQmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBiZWZvcmUpOwogCiAgICAgdXNpbmcgTm9kZTo6
cmVtb3ZlOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNjYx
Nzc4YjhjYjYxMzI1OGE0NWEyM2NmZTgzMmE1OGUwODcxMWM3NC4uNzkyOTU0MmQzZDdiY2Y0MDUx
YzA2ZjNiNWQ1NTRlZDE1YTI4MDk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCkBAIC0yMDMsMTMgKzIwMywxMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pYwogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1heExl
bmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsK
KyAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3
VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogdm9pZCBI
VE1MVGV4dEFyZWFFbGVtZW50OjptaW5MZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxT
ZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9v
cigtMSkpOwogICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUlucHV0VHlwZS5jcHAKaW5kZXggYzNjZTI4NTcyYjY5YmYxOWNlODNlNGNhODJmZDhlZGMzOTE5
MjRhNC4uZjM5NmEzZTMxNWUyYTgzYTRjYjE0YjhiMmVhOTdjNjJhZTE5ZWJhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB1bnNpZ25l
ZCBJbWFnZUlucHV0VHlwZTo6aGVpZ2h0KCkgY29uc3QKIAogICAgIGlmICghZWxlbWVudC0+cmVu
ZGVyZXIoKSkgewogICAgICAgICAvLyBDaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBl
eHBsaWNpdCBwaXhlbCB2YWx1ZS4KLSAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBoZWln
aHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBoZWlnaHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSkpCiAgICAgICAgICAg
ICByZXR1cm4gaGVpZ2h0LnZhbHVlKCk7CiAKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGF2
YWlsYWJsZSwgdXNlIGl0cyBoZWlnaHQuCkBAIC0yMDAsNyArMjAwLDcgQEAgdW5zaWduZWQgSW1h
Z2VJbnB1dFR5cGU6OndpZHRoKCkgY29uc3QKIAogICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIo
KSkgewogICAgICAgICAvLyBDaGVjayB0aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNp
dCBwaXhlbCB2YWx1ZS4KLSAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCA9IHBh
cnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHdpZHRoQXR0cikpKQorICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gd2lkdGggPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIpKSkKICAgICAgICAgICAgIHJldHVybiB3
aWR0aC52YWx1ZSgpOwogCiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVz
ZSBpdHMgd2lkdGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggNzU3OGNlMDVkNzlm
ZDMwMDFiNjRlMjgyMDBiNzdlODBhNzEwMDVkNi4uM2Q0N2U0NjAyNTFmMzI5ZDIyNmJlMzRhY2Q4
MGJmYTA0ZDBkOTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtOTU1LDEwICs5
NTUsMTAgQEAgdm9pZCBJbnB1dFR5cGU6Omxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKIHsK
IH0KIAotT3B0aW9uYWw8RGVjaW1hbD4gSW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFs
dWUoY29uc3QgRGVjaW1hbCYpCitzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IElucHV0VHlwZTo6Zmlu
ZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggZmMzMDUxOTc2YWMxYmQ0
NjY2YTBiM2JjYWVhMTZkODRlYmRkNGUyMS4uYzRiZTczZDQwMDRkNjhkOTEzMGI5YWI5NDZhMTcw
MGU3MDMzZGUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0yOTUsNyArMjk1LDcgQEAg
Y2xhc3MgSW5wdXRUeXBlIHsKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZp
cnR1YWwgdm9pZCBsaXN0QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOwotICAgIHZpcnR1YWwgT3B0
aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsK
KyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKGNvbnN0IERlY2ltYWwmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKaW5kZXggZDAwZTA2YjVk
NzNhMWE4NzUzNDlmNTliOWZkNjkxY2JiMWI0MzQzYS4uNGQyYjZlMWExNWI0ZTYyODFkNGQ5OGYy
MjFhMGNlYzFkMjNhNjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNv
bkNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rv
ci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgYXV0byBMaW5rSWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5
cGVzKE9wdGlvblNldDxMaW5rSWNvblR5cGU+IGljb25UeXBlcykgLT4gVmVjdG8KICAgICAgICAg
Ly8gVGhpcyBpY29uIHNpemUgcGFyc2luZyBpcyBhIGxpdHRsZSB3b25reSAtIGl0IG9ubHkgcGFy
c2VzIHRoZSBmaXJzdAogICAgICAgICAvLyBwYXJ0IG9mIHRoZSBzaXplLCAiNjB4NzAiIGJlY29t
ZXMgIjYwIi4gVGhpcyBpcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zCiAgICAgICAgIC8vIGFu
ZCBpcyBwcm9iYWJseSBnb29kIGVub3VnaCBmb3Igbm93LgotICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZD4gaWNvblNpemU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGljb25TaXpl
OwogCiAgICAgICAgIGlmIChsaW5rRWxlbWVudC5zaXplcygpLmxlbmd0aCgpKSB7CiAgICAgICAg
ICAgICBib29sIG9rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0
cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaAppbmRleCA2
YjAwOWEyYTQ1MmZjY2MyMTY0ZDM2ZjFlNzZmNjdiNjQ4ZDY5OGI0Li44ZTI2NjkyN2VkZGIxM2Ri
OWUwYjhiMWNjYTk2ODUyNTY1ZmJiZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xpbmtSZWxBdHRyaWJ1dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRy
aWJ1dGUuaApAQCAtNDEsNyArNDEsNyBAQCBlbnVtIGNsYXNzIExpbmtJY29uVHlwZTsKIAogc3Ry
dWN0IExpbmtSZWxBdHRyaWJ1dGUgewogICAgIGJvb2wgaXNTdHlsZVNoZWV0IHsgZmFsc2UgfTsK
LSAgICBPcHRpb25hbDxMaW5rSWNvblR5cGU+IGljb25UeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8
TGlua0ljb25UeXBlPiBpY29uVHlwZTsKICAgICBib29sIGlzQWx0ZXJuYXRlIHsgZmFsc2UgfTsK
ICAgICBib29sIGlzRE5TUHJlZmV0Y2ggeyBmYWxzZSB9OwogICAgIGJvb2wgaXNMaW5rUHJlbG9h
ZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGE1
YThlYWVkYzlkMjUyYjFiYzJmNzM2YmY5MTYzYjRhOTI2ZjBkYmEuLmRiYWJmY2Q0MzdkYWE0YzY1
OTFlYjY3MDYyOTExOWEyYjNiMDY5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuY3BwCkBAIC0zODEsMTEgKzM4MSwxMSBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjp1cGRhdGVU
aWNrTWFya1ZhbHVlcygpCiAgICAgc3RkOjpzb3J0KG1fdGlja01hcmtWYWx1ZXMuYmVnaW4oKSwg
bV90aWNrTWFya1ZhbHVlcy5lbmQoKSk7CiB9CiAKLU9wdGlvbmFsPERlY2ltYWw+IFJhbmdlSW5w
dXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCitz
dGQ6Om9wdGlvbmFsPERlY2ltYWw+IFJhbmdlSW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJr
VmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCiB7CiAgICAgdXBkYXRlVGlja01hcmtWYWx1ZXMo
KTsKICAgICBpZiAoIW1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHNpemVfdCBsZWZ0ID0g
MDsKICAgICBzaXplX3QgcmlnaHQgPSBtX3RpY2tNYXJrVmFsdWVzLnNpemUoKTsKQEAgLTQwOCw4
ICs0MDgsOCBAQCBPcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RU
aWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogICAgICAgICAgICAgcmlnaHQgPSBt
aWRkbGU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdExlZnQgPSBtaWRk
bGUgPyBtYWtlT3B0aW9uYWwobV90aWNrTWFya1ZhbHVlc1ttaWRkbGUgLSAxXSkgOiBOdWxsb3B0
OwotICAgIE9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tN
YXJrVmFsdWVzLnNpemUoKSA/IG1ha2VPcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0p
IDogTnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3RMZWZ0ID0gbWlk
ZGxlID8gc3RkOjptYWtlX29wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlIC0gMV0pIDog
c3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaW1hbD4gY2xvc2VzdFJpZ2h0ID0g
bWlkZGxlICE9IG1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpID8gc3RkOjptYWtlX29wdGlvbmFsKG1f
dGlja01hcmtWYWx1ZXNbbWlkZGxlXSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWNsb3Nl
c3RMZWZ0KQogICAgICAgICByZXR1cm4gY2xvc2VzdFJpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5oCmluZGV4IGE1Nzg0ZjVkMjI3NjUwNTc3ODdkNjNkODI2MDdlYWYyN2Q3N2Vm
MWIuLmM2ZjYyZDg0NjVlZTg4MjcyZjhjNjFmZjI5NmQ2Yjk4ZDgwNDgzMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgUmFuZ2VJbnB1
dFR5cGUgZmluYWwgOiBwdWJsaWMgSW5wdXRUeXBlIHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKICAgICB2b2lkIGxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVUaWNrTWFya1ZhbHVlcygpOwotICAgIE9wdGlvbmFsPERlY2ltYWw+IGZpbmRD
bG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJikgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpIGZp
bmFsOwogCiAgICAgYm9vbCBtX3RpY2tNYXJrVmFsdWVzRGlydHkgeyB0cnVlIH07CiAgICAgVmVj
dG9yPERlY2ltYWw+IG1fdGlja01hcmtWYWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCAwYjJiM2Y0
NmNmYTA4MGY2OWY4YjRiMTgwYWNjMjAyM2E5Y2U0ZWRlLi43MTEzNTI3YjIyOWFjZjk5NGQ5NTA0
OTEyZmY2YjY4MWQ1ZjM5MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTM4Niw3ICszODYsNyBAQCB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzdG9yZSgpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX3BhdGgudHJhbnNmb3JtKHN0YXRlKCkudHJhbnNmb3JtKTsKICAgICBtX3N0YXRlU3Rh
Y2sucmVtb3ZlTGFzdCgpOwotICAgIGlmIChPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVy
c2UgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gc3RhdGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpKQog
ICAgICAgICBtX3BhdGgudHJhbnNmb3JtKGludmVyc2UudmFsdWUoKSk7CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC04MzIsNyArODMy
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0VHJhbnNmb3JtKCkKICAg
ICBtb2RpZmlhYmxlU3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtID0gdHJ1ZTsKIH0KIAot
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTdHJva2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiBhbHBoYSkKIHsKICAgICBpZiAoYWxwaGEpIHsKICAgICAgICAgc2V0U3Ryb2tlU3R5
bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwg
YWxwaGEudmFsdWUoKSkpOwpAQCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTdHJva2VDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9h
dCBrCiAgICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGUoYywgbSwgeSwgaywgYSkpOwogfQog
Ci12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxm
bG9hdD4gYWxwaGEpCiB7CiAgICAgaWYgKGFscGhhKSB7CiAgICAgICAgIHNldEZpbGxTdHlsZShD
YW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBo
YS52YWx1ZSgpKSk7CkBAIC0xMTE0LDcgKzExMTQsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6aXNQb2ludEluUGF0aEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgs
CiAgICAgaWYgKCFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9h
dFBvaW50KHgsIHkpKTsKKyAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgp
LnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50
KEZsb2F0UG9pbnQoeCwgeSkpOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVk
UG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTExMzAsNyArMTEzMCw3IEBAIGJvb2wgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBm
bG9hdCB4CiAgICAgaWYgKCFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRl
KCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2lu
dChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBz
dGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zv
cm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEyNDksNyArMTI0OSw3IEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoCiAgICAgfQogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0
cmluZyYgY29sb3JTdHJpbmcsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKK3ZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxv
YXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgc3RkOjpvcHRpb25hbDxmbG9hdD4g
YWxwaGEpCiB7CiAgICAgQ29sb3IgY29sb3IgPSBwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3IoY29s
b3JTdHJpbmcsICZjYW52YXMoKSk7CiAgICAgaWYgKCFjb2xvclN0cmluZy5pc051bGwoKSAmJiAh
Y29sb3IuaXNWYWxpZCgpKQpAQCAtMjI1NywxMiArMjI1NywxMiBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5n
KQogICAgIG1vZGlmaWFibGVTdGF0ZSgpLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKIH0KIAotdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gbWF4V2lkdGgpCiB7CiAgICAgZHJhd1RleHRJ
bnRlcm5hbCh0ZXh0LCB4LCB5LCB0cnVlLCBtYXhXaWR0aCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5
LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCkKIHsKICAgICBkcmF3VGV4dEludGVybmFs
KHRleHQsIHgsIHksIGZhbHNlLCBtYXhXaWR0aCk7CiB9CkBAIC0yMzEwLDcgKzIzMTAsNyBAQCBS
ZWY8VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bWVhc3VyZVRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiBtZXRyaWNzOwogfQogCi12b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5n
JiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
IG1heFdpZHRoKQogewogICAgIGNvbnN0IGF1dG8mIGZvbnRQcm94eSA9IHRoaXMtPmZvbnRQcm94
eSgpOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnRQcm94eS5mb250
TWV0cmljcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA0NWExM2IxYzdkZjcyYzc5OTVlYjMxZmE5NDdkZWI2
N2E1YzUzOTAwLi4yYTg3ZjI2NzE1MTc5MzUxZjY1N2I2M2IxMWYwYzlmMWIxNjA1YmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaApAQCAtMTE3LDEyICsxMTcsMTIgQEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW4KICAg
ICB2b2lkIHNldFRyYW5zZm9ybShmbG9hdCBtMTEsIGZsb2F0IG0xMiwgZmxvYXQgbTIxLCBmbG9h
dCBtMjIsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAgICAgdm9pZCByZXNldFRyYW5zZm9ybSgpOwog
Ci0gICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxm
bG9hdD4gYWxwaGEgPSBOdWxsb3B0KTsKKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0
cmluZyYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsK
ICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEgPSAx
LjApOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwg
ZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9h
dCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKIAotICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0
cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IE51bGxvcHQpOworICAgIHZvaWQg
c2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFs
cGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2
ZWwsIGZsb2F0IGFscGhhID0gMS4wZik7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgciwg
ZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQg
YywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CkBAIC0xNDksNyArMTQ5LDcg
QEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW4KICAgICB2b2lkIGZpbGxSZWN0KGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogICAgIHZvaWQgc3Ryb2tlUmVjdChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKIAotICAgIHZvaWQg
c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0
cmluZyYgY29sb3IgPSBTdHJpbmcoKSwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gTnVsbG9wdCk7
CisgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1
ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmluZygpLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBh
bHBoYSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZs
b2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSA9IDEu
MCk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQg
Ymx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRT
aGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxv
YXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSk7CkBAIC0yMTQsOCArMjE0LDggQEAgY2xh
c3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQsIHB1YmxpYyBDYW4KICAgICBTdHJpbmcgZGlyZWN0aW9uKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXREaXJlY3Rpb24oY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGZpbGxUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdp
ZHRoID0gTnVsbG9wdCk7Ci0gICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gTnVsbG9wdCk7Cisg
ICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHN0
cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlv
bmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgUmVmPFRleHRNZXRyaWNz
PiBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwogCiAgICAgTGluZUNhcCBnZXRMaW5l
Q2FwKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5saW5lQ2FwOyB9CkBAIC0zMzEsNyArMzMxLDcg
QEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW4KICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigp
OwogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigpOwogCi0gICAgdm9pZCBkcmF3VGV4dEludGVy
bmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRp
b25hbDxmbG9hdD4gbWF4V2lkdGggPSBOdWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0SW50ZXJu
YWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIFRoZSBy
ZWxhdGlvbnNoaXAgYmV0d2VlbiBGb250Q2FzY2FkZSBhbmQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpGb250UHJveHkgbXVzdCBob2xkIGNlcnRhaW4gaW52YXJpYW50cy4KICAgICAvLyBUaGVy
ZWZvcmUsIGFsbCBmb250IG9wZXJhdGlvbnMgbXVzdCBwYXNzIHRocm91Z2ggdGhlIFN0YXRlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCA0ZWNlMzc3MGJjYzg5MDBlOTRlNTA2NDI4MWZjZDc0MmIyOWE5YjVjLi4y
MzJmMGJiYjU0ZDE2MjNhYWFkMGU4ZDU1YjcwNmE0OTk3Nzg4NDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAt
ODgsMTIgKzg4LDEyIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNo
YWRlckV4dGVuc2lvbnMoKQogICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7CiB9CiAKLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8
dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1lbnRTaXplKGNvbnN0IEFycmF5QnVmZmVyVmll
dyYgZGF0YSkKK2lubGluZSBzdGF0aWMgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYXJyYXlCdWZm
ZXJWaWV3RWxlbWVudFNpemUoY29uc3QgQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQogewogICAgIHN3
aXRjaCAoZGF0YS5nZXRUeXBlKCkpIHsKICAgICBjYXNlIEpTQzo6Tm90VHlwZWRBcnJheToKICAg
ICBjYXNlIEpTQzo6VHlwZURhdGFWaWV3OgotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIEpTQzo6VHlwZUludDg6CiAgICAgY2Fz
ZSBKU0M6OlR5cGVVaW50ODoKICAgICBjYXNlIEpTQzo6VHlwZVVpbnQ4Q2xhbXBlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKaW5kZXggM2U5ZGNjYWM1MWNmMjNkY2M4NGU4NGEzYWJmMTdhY2U3MGMyMTMwMy4u
MmMwZDgwNzU2MDU1ZTU5Njk3ZDg5MTZhZDM0OTRhNjI0YTU5YWJmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKQEAgLTExMDksNyArMTEwOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxvbmcgbG9uZyBzaXplLCBHQzNECiAgICAgfQog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0g
dGFyZ2V0LCBPcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEsIEdDM0RlbnVtIHVzYWdl
KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgc3RkOjpvcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEsIEdDM0RlbnVtIHVz
YWdlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFTCiAgICAgfSwg
ZGF0YS52YWx1ZSgpKTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZm
ZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwgT3B0aW9uYWw8QnVm
ZmVyRGF0YVNvdXJjZT4mJiBkYXRhKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpi
dWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9uZyBsb25nIG9mZnNldCwgc3RkOjpvcHRp
b25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MKICAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShHcmFwaGlj
c0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGlnbm1lbnQpOwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1h
Z2VTb3VyY2U+JiYgc291cmNlKQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+JiYgc291cmNlKQogewogICAgIGlm
ICghc291cmNlKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAidGV4U3ViSW1hZ2UyRCIsICJzb3VyY2UgaXMgbnVsbCIpOwpAQCAt
MzU3NSw3ICszNTc1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0QKICAgICByZXR1cm4gV1RG
Ojp2aXNpdCh2aXNpdG9yLCBzb3VyY2UudmFsdWUoKSk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVBcnJheUJ1ZmZlclR5cGUoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBHQzNEZW51bSB0eXBlLCBPcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPiBhcnJh
eVR5cGUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQXJyYXlCdWZm
ZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdHlwZSwgc3RkOjpvcHRp
b25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPiBhcnJheVR5cGUpCiB7CiAjZGVmaW5lIFRZUEVfVkFM
SURBVElPTl9DQVNFKGFycmF5VHlwZU1hY3JvKSBpZiAoYXJyYXlUeXBlICYmIGFycmF5VHlwZS52
YWx1ZSgpICE9IEpTQzo6YXJyYXlUeXBlTWFjcm8pIHsgXAogICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5h
bWUsICJBcnJheUJ1ZmZlclZpZXcgbm90ICIgI2FycmF5VHlwZU1hY3JvKTsgXApAQCAtMzYzNiw3
ICszNjM2LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1
bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRleEludGVybmFsRm9ybWF0KGZ1bmN0aW9uTmFt
ZSwgaW50ZXJuYWxGb3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF2YWxp
ZGF0ZUFycmF5QnVmZmVyVHlwZShmdW5jdGlvbk5hbWUsIHR5cGUsIHBpeGVscyA/IE9wdGlvbmFs
PEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVscy0+Z2V0VHlwZSgpKSA6IE51bGxvcHQpKQorICAg
IGlmICghdmFsaWRhdGVBcnJheUJ1ZmZlclR5cGUoZnVuY3Rpb25OYW1lLCB0eXBlLCBwaXhlbHMg
PyBzdGQ6Om9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVscy0+Z2V0VHlwZSgpKSA6
IHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICB1bnNpZ25l
ZCB0b3RhbEJ5dGVzUmVxdWlyZWQ7CkBAIC0zOTgyLDcgKzM5ODIsNyBAQCBzdGF0aWMgYm9vbCBp
c1JHQkZvcm1hdChHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCkKICAgICAgICAgfHwgaW50ZXJuYWxG
b3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE4OwogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+IHNvdXJjZSkKK0V4Y2VwdGlv
bk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGVudW0g
Zm9ybWF0LCBHQzNEZW51bSB0eXBlLCBzdGQ6Om9wdGlvbmFsPFRleEltYWdlU291cmNlPiBzb3Vy
Y2UpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJ0ZXhJbWFnZTJEIiwgInNvdXJjZSBpcyBu
dWxsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMmIzMTZiZGIxZGZhODIxMWY5NTExNWRmNGUzMTRhOTg2
M2U4MGE5Yy4uNTQ3OGE1ZDgxNjc2YzA2ODZmMWZlYzY3MTFiMmJhNTdkZDQ4YTQ4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaApAQCAtMTM2LDggKzEzNiw4IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIEFjdGl2ZURPCiAKICAg
ICB1c2luZyBCdWZmZXJEYXRhU291cmNlID0gV1RGOjpWYXJpYW50PFJlZlB0cjxBcnJheUJ1ZmZl
cj4sIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+PjsKICAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBsb25nIGxvbmcgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpOwotICAgIHZvaWQgYnVm
ZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIE9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYsIEdD
M0RlbnVtIHVzYWdlKTsKLSAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBs
b25nIGxvbmcgb2Zmc2V0LCBPcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmKTsKKyAgICB2b2lk
IGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBzdGQ6Om9wdGlvbmFsPEJ1ZmZlckRhdGFTb3Vy
Y2U+JiYsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0g
dGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+
JiYpOwogCiAgICAgR0MzRGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJn
ZXQpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihHQzNEYml0ZmllbGQgbWFzaykgPSAwOwpAQCAt
MjQxLDEzICsyNDEsMTMgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1Ymxp
YyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMgQWN0aXZlRE8KICAgICB2b2lkIHRleElt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYm
KTsKIAogICAgIHVzaW5nIFRleEltYWdlU291cmNlID0gV1RGOjpWYXJpYW50PFJlZlB0cjxJbWFn
ZURhdGE+LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4sIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVu
dD4sIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50Pj47Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdl
U291cmNlPik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+KTsKIAogICAg
IHZvaWQgdGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNE
ZmxvYXQgcGFyYW0pOwogICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKIAogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRGVudW0gdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mJik7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJjZT4mJik7CiAKICAgICB2b2lkIHVuaWZvcm0x
Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDM0RmbG9hdCB4KTsKICAgICB2b2lkIHVu
aWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyQXJyYXkmIHYpOwpA
QCAtODAwLDcgKzgwMCw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJs
aWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIEFjdGl2ZURPCiAgICAgYm9vbCBzdXBw
b3J0c0RyYXdCdWZmZXJzKCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCB2YWxpZGF0ZUFycmF5QnVm
ZmVyVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHR5cGUsIE9wdGlvbmFs
PEpTQzo6VHlwZWRBcnJheVR5cGU+KTsKKyAgICBib29sIHZhbGlkYXRlQXJyYXlCdWZmZXJUeXBl
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxK
U0M6OlR5cGVkQXJyYXlUeXBlPik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAK
aW5kZXggZmMzOTA0MGE4ZTNlODRlZGEzNzlhNDJhYTI4NDNmN2E2YWZlZjBkYS4uMmZkZGE2ZWE1
OThjMDgyZTZmYWJiOTNiMjM5NjE5ZWJlMzdmZTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNzAxLDE3ICs3MDEs
MTcgQEAgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVFbGVt
ZW50RnJvbVNhdmVkVG9rZW4oSFRNTFN0YWNrSXQKICAgICByZXR1cm4gSFRNTFN0YWNrSXRlbTo6
Y3JlYXRlKGNyZWF0ZUhUTUxFbGVtZW50KGZha2VUb2tlbiksIFdURk1vdmUoZmFrZVRva2VuKSwg
aXRlbS5uYW1lc3BhY2VVUkkoKSk7CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQoKSBjb25zdAor
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJz
dFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9hY3RpdmVGb3Jt
YXR0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fYWN0aXZlRm9y
bWF0dGluZ0VsZW1lbnRzLnNpemUoKTsKICAgICBkbyB7CiAgICAgICAgIC0taW5kZXg7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIGVudHJ5ID0gbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuYXQoaW5k
ZXgpOwogICAgICAgICBpZiAoZW50cnkuaXNNYXJrZXIoKSB8fCBtX29wZW5FbGVtZW50cy5jb250
YWlucyhlbnRyeS5lbGVtZW50KCkpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBmaXJzdFVub3Bl
bkVsZW1lbnRJbmRleCA9IGluZGV4ICsgMTsKLSAgICAgICAgICAgIHJldHVybiBmaXJzdFVub3Bl
bkVsZW1lbnRJbmRleCA8IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnNpemUoKSA/IGZpcnN0
VW5vcGVuRWxlbWVudEluZGV4IDogT3B0aW9uYWw8dW5zaWduZWQ+KE51bGxvcHQpOworICAgICAg
ICAgICAgcmV0dXJuIGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDwgbV9hY3RpdmVGb3JtYXR0aW5n
RWxlbWVudHMuc2l6ZSgpID8gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggOiBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPihzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoaW5kZXgp
OwogCkBAIC03MjAsNyArNzIwLDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IEhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpIGMKIAogdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6cmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVu
dHMoKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA9
IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCk7CisgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggPSBpbmRleE9mRmlyc3RVbm9wZW5G
b3JtYXR0aW5nRWxlbWVudCgpOwogICAgIGlmICghZmlyc3RVbm9wZW5FbGVtZW50SW5kZXgpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggMzNlMWJiODU2NjJkYWUxMzQ1YjU2Zjg4MGU0NTQ5MTBi
YjdjMGU5ZC4uNzU0OWVkNTg0YzZlZmU4MWI4OGY3NzkwMWM2Y2JmOTQxNWYwZTQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBA
IC0xMzEsNyArMTMxLDcgQEAgY2xhc3MgSFRNTENvbnN0cnVjdGlvblNpdGUgewogICAgIGJvb2wg
c2hvdWxkRm9zdGVyUGFyZW50KCkgY29uc3Q7CiAgICAgdm9pZCBmb3N0ZXJQYXJlbnQoUmVmPE5v
ZGU+JiYpOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1h
dHRpbmdFbGVtZW50KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXhP
ZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHJlY29uc3Ry
dWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7CiAKICAgICB2b2lkIGdlbmVyYXRlSW1w
bGllZEVuZFRhZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAKaW5kZXggM2I4Y2M0ZDIyNTBjYmQ2YjhhNzc1NWM3ZmFlOGJjZjZkZDUxMjM1
Yi4uMzk5MGNiZGE2MDYzYjlkYTQzYmJmM2E4Y2I1ZDNiNGNjNzg0Nzc2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTE1NCwxMyAr
MTU0LDEzIEBAIGRvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcm
IHN0cmluZykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMg
T3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPGludD4gcGFyc2VIVE1MSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBv
c2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQpCiB7CiAgICAgd2hpbGUgKHBvc2l0aW9u
IDwgZW5kICYmIGlzSFRNTFNwYWNlKCpwb3NpdGlvbikpCiAgICAgICAgICsrcG9zaXRpb247CiAK
ICAgICBpZiAocG9zaXRpb24gPT0gZW5kKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaXNOZWdhdGl2ZSA9IGZhbHNlOwog
ICAgIGlmICgqcG9zaXRpb24gPT0gJy0nKSB7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIE9w
dGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUq
IHBvc2l0aW9uLCBjb24KICAgICAgICAgKytwb3NpdGlvbjsKIAogICAgIGlmIChwb3NpdGlvbiA9
PSBlbmQgfHwgIWlzQVNDSUlEaWdpdCgqcG9zaXRpb24pKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0ZXhwciBpbnQgaW50
TWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKICAgICBjb25zdGV4cHIgaW50
IGJhc2UgPSAxMDsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJz
ZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbgog
ICAgICAgICBpbnQgZGlnaXRWYWx1ZSA9ICpwb3NpdGlvbiAtICcwJzsKIAogICAgICAgICBpZiAo
cmVzdWx0ID4gbWF4TXVsdGlwbGllciB8fCAocmVzdWx0ID09IG1heE11bHRpcGxpZXIgJiYgZGln
aXRWYWx1ZSA+IChpbnRNYXggJSBiYXNlKSArIGlzTmVnYXRpdmUpKQotICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IHJlc3VsdCA9IGJhc2UgKiByZXN1bHQgKyBkaWdpdFZhbHVlOwogICAgICAgICArK3Bvc2l0aW9u
OwpAQCAtMTkxLDExICsxOTEsMTEgQEAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50
ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb24KIH0KIAogLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRt
bCNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwotT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRl
Z2VyKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdl
cihTdHJpbmdWaWV3IGlucHV0KQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0
aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChMSUtFTFkoaW5wdXQuaXM4Qml0KCkpKSB7
CiAgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKQEAgLTIwNywzNiAr
MjA3LDM2IEBAIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0
KQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0
cnVjdHVyZS5odG1sI3J1bGVzLWZvci1wYXJzaW5nLW5vbi1uZWdhdGl2ZS1pbnRlZ2VycwotT3B0
aW9uYWw8dW5zaWduZWQ+IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlu
cHV0KQorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KFN0cmluZ1ZpZXcgaW5wdXQpCiB7Ci0gICAgT3B0aW9uYWw8aW50PiBzaWduZWRWYWx1ZSA9IHBh
cnNlSFRNTEludGVnZXIoaW5wdXQpOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzaWduZWRWYWx1
ZSA9IHBhcnNlSFRNTEludGVnZXIoaW5wdXQpOwogICAgIGlmICghc2lnbmVkVmFsdWUgfHwgc2ln
bmVkVmFsdWUudmFsdWUoKSA8IDApCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aWduZWRWYWx1ZS52YWx1ZSgpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1zdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
ckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJU
eXBlKiBlbmQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGVuZCkKIHsKICAgICAvLyBBIHN0cmluZyBpcyBhIHZhbGlkIG5vbi1u
ZWdhdGl2ZSBpbnRlZ2VyIGlmIGl0IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIEFTQ0lJIGRpZ2l0
cy4KICAgICBmb3IgKGF1dG8qIGMgPSBwb3NpdGlvbjsgYyA8IGVuZDsgKytjKSB7CiAgICAgICAg
IGlmICghaXNBU0NJSURpZ2l0KCpjKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+
IHNpZ25lZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdlckludGVybmFsKHBvc2l0aW9uLCBlbmQpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzaWduZWRWYWx1ZSA9IHBhcnNlSFRNTEludGVnZXJJbnRl
cm5hbChwb3NpdGlvbiwgZW5kKTsKICAgICBpZiAoIXNpZ25lZFZhbHVlIHx8IHNpZ25lZFZhbHVl
LnZhbHVlKCkgPCAwKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzaWduZWRWYWx1ZTsKIH0KIAogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtbm9uLW5lZ2F0aXZlLWludGVnZXIKLU9wdGlvbmFs
PGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkK
K3N0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJp
bmdWaWV3IGlucHV0KQogewogICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKExJS0VM
WShpbnB1dC5pczhCaXQoKSkpIHsKICAgICAgICAgYXV0byogc3RhcnQgPSBpbnB1dC5jaGFyYWN0
ZXJzOCgpOwpAQCAtMjQ4LDI1ICsyNDgsMjUgQEAgT3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRI
VE1MRmxvYXRpbmdQb2ludE51bWJlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0
aW9uLCBzaXplX3QgbGVuZ3RoKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZh
bGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBw
b3NpdGlvbiwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoID4gMCk7CiAKICAg
ICAvLyBwYXJzZURvdWJsZSgpIGFsbG93cyB0aGUgc3RyaW5nIHRvIHN0YXJ0IHdpdGggYSAnKycg
b3IgdG8gZW5kIHdpdGggYSAnLicgYnV0IHRob3NlCiAgICAgLy8gYXJlIG5vdCB2YWxpZCBmbG9h
dGluZyBwb2ludCBudW1iZXJzIGFzIHBlciBIVE1MLgogICAgIGlmICgqcG9zaXRpb24gPT0gJysn
IHx8ICoocG9zaXRpb24gKyBsZW5ndGggLSAxKSA9PSAnLicpCi0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IHBhcnNlZExl
bmd0aCA9IDA7CiAgICAgZG91YmxlIG51bWJlciA9IHBhcnNlRG91YmxlKHBvc2l0aW9uLCBsZW5n
dGgsIHBhcnNlZExlbmd0aCk7Ci0gICAgcmV0dXJuIHBhcnNlZExlbmd0aCA9PSBsZW5ndGggJiYg
c3RkOjppc2Zpbml0ZShudW1iZXIpID8gbnVtYmVyIDogT3B0aW9uYWw8ZG91YmxlPigpOworICAg
IHJldHVybiBwYXJzZWRMZW5ndGggPT0gbGVuZ3RoICYmIHN0ZDo6aXNmaW5pdGUobnVtYmVyKSA/
IG51bWJlciA6IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPigpOwogfQogCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyN2YWxpZC1mbG9hdGluZy1wb2ludC1udW1iZXIKLU9wdGlvbmFsPGRv
dWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0cmluZ1ZpZXcgaW5wdXQp
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVy
KFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
TElLRUxZKGlucHV0LmlzOEJpdCgpKSkgewogICAgICAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNo
YXJhY3RlcnM4KCk7CkBAIC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VIVFRQUmVm
cmVzaEludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb25zdCBDaGFyYWMK
ICAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQgJiYgaXNBU0NJSURpZ2l0KCpwb3NpdGlvbikpCiAg
ICAgICAgICsrcG9zaXRpb247CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbnVtYmVyID0gcGFy
c2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcobnVtYmVyU3RhcnQsIHBvc2l0aW9u
IC0gbnVtYmVyU3RhcnQpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBudW1iZXIgPSBw
YXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyhudW1iZXJTdGFydCwgcG9zaXRp
b24gLSBudW1iZXJTdGFydCkpOwogICAgIGlmICghbnVtYmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApp
bmRleCAyYjM0NzNjNmJlOWJiZDhhMmYwMTM5MTZkYjcwNGM1NTQwMmI0Yzk2Li4yZjQxYzYxOWE4
MTEyYjc3MmExYzY4ZDA1NTFhYzA1MGQ2OWM0OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC02MiwxNiArNjIsMTYgQEAgZG91YmxlIHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYpOwogZG91YmxlIHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKTsK
IAogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8j
cnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPGludD4g
cGFyc2VIVE1MSW50ZWdlcihTdHJpbmdWaWV3KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1ZpZXcpOwogCiAvLyBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1u
b24tbmVnYXRpdmUtaW50ZWdlcnMKLVdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHVuc2lnbmVkPiBw
YXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5n
Vmlldyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLW5vbi1uZWdh
dGl2ZS1pbnRlZ2VyCi1PcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKFN0cmluZ1ZpZXcpOworc3RkOjpvcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcpOwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnLyN2YWxpZC1mbG9hdGluZy1wb2ludC1udW1iZXIKLU9wdGlvbmFsPGRvdWJsZT4gcGFyc2VW
YWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0cmluZ1ZpZXcpOworc3RkOjpvcHRpb25hbDxk
b3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3KTsKIAog
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUu
aHRtbCNydWxlcy1mb3ItcGFyc2luZy1mbG9hdGluZy1wb2ludC1udW1iZXItdmFsdWVzCiBWZWN0
b3I8ZG91YmxlPiBwYXJzZUhUTUxMaXN0T2ZPZkZsb2F0aW5nUG9pbnROdW1iZXJWYWx1ZXMoU3Ry
aW5nVmlldyk7CkBAIC0xNTMsNyArMTUzLDcgQEAgaW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5
SFRNTE5vbk5lZ2F0aXZlKHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUKIGlu
bGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxOb25OZWdhdGl2ZShTdHJpbmdWaWV3IHN0cmlu
Z1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUgPSAwKQogewogICAgIEFTU0VSVChkZWZhdWx0
VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7Ci0gICAgdW5zaWduZWQgdmFsdWUg
PSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoc3RyaW5nVmFsdWUpLnZhbHVlT3IoZGVmYXVs
dFZhbHVlKTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihzdHJpbmdWYWx1ZSkudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKICAgICBBU1NFUlQodmFsdWUg
PD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7CiAgICAgcmV0dXJuIHZhbHVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAppbmRleCAz
MGIwZjcyMjlkMmNlYjBkOGFjOGRiNTgyYzQyMmU1NjBmNGI0NjM5Li42NmE5ODY0YzJiNjZiNjhm
MTE3NmZiN2RhMzM0ZGU1MGIwZjM0ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcApAQCAtMTM0LDE0ICsxMzQsMTQgQEAgc3RhdGljIGJv
b2wgcGFyc2VEZXNjcmlwdG9ycyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0b3JzLCBEZXNj
cmlwdG9yUGFyc2luZ1IKICAgICAgICAgaWYgKGRlc2NyaXB0b3JDaGFyID09ICd4JykgewogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhhc0hlaWdodCgpIHx8
IHJlc3VsdC5oYXNXaWR0aCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZGVuc2l0eSA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQ
b2ludE51bWJlcihkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBkZW5zaXR5ID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGRlc2NyaXB0b3Ip
OwogICAgICAgICAgICAgaWYgKCFkZW5zaXR5IHx8IGRlbnNpdHkudmFsdWUoKSA8IDApCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgcmVzdWx0LnNldERlbnNpdHko
ZGVuc2l0eS52YWx1ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yQ2hhciA9PSAn
dycpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRGVuc2l0eSgpIHx8IHJlc3VsdC5oYXNX
aWR0aCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIE9wdGlv
bmFsPGludD4gcmVzb3VyY2VXaWR0aCA9IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
KGRlc2NyaXB0b3IpOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHJlc291cmNlV2lk
dGggPSBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihkZXNjcmlwdG9yKTsKICAgICAg
ICAgICAgIGlmICghcmVzb3VyY2VXaWR0aCB8fCByZXNvdXJjZVdpZHRoLnZhbHVlKCkgPD0gMCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICByZXN1bHQuc2V0UmVz
b3VyY2VXaWR0aChyZXNvdXJjZVdpZHRoLnZhbHVlKCkpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHN0
YXRpYyBib29sIHBhcnNlRGVzY3JpcHRvcnMoVmVjdG9yPFN0cmluZ1ZpZXc+JiBkZXNjcmlwdG9y
cywgRGVzY3JpcHRvclBhcnNpbmdSCiAgICAgICAgICAgICAvLyBUaGUgdmFsdWUgb2YgdGhlICdo
JyBkZXNjcmlwdG9yIGlzIG5vdCB1c2VkLgogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5z
aXR5KCkgfHwgcmVzdWx0Lmhhc0hlaWdodCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIE9wdGlvbmFsPGludD4gcmVzb3VyY2VIZWlnaHQgPSBwYXJzZVZhbGlk
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihkZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiByZXNvdXJjZUhlaWdodCA9IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRl
Z2VyKGRlc2NyaXB0b3IpOwogICAgICAgICAgICAgaWYgKCFyZXNvdXJjZUhlaWdodCB8fCByZXNv
dXJjZUhlaWdodC52YWx1ZSgpIDw9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgcmVzdWx0LnNldFJlc291cmNlSGVpZ2h0KHJlc291cmNlSGVpZ2h0LnZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAKaW5kZXggZDExMWMyZDk2NGU5ODU3MTUzM2EwMzk0ZjE1YTc3MDRiZjhlMTEwNi4uOWFm
NzM1MjA3MzcyYzYwMTAwZTg4ODMyMTE2YWEyYWI0OTRlNjk4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0yOTgsNyArMjk4
LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0
IExheW91dFBvaW50JiBhYnNvbHV0ZVBvaW50KQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5U
KQogICAgIGNvbnN0IExheW91dFVuaXQgc25hcHBpbmdUaHJlc2hvbGQgPSByZW5kZXJlcigpLT50
aGVtZSgpLnNsaWRlclRpY2tTbmFwcGluZ1RocmVzaG9sZCgpOwogICAgIGlmIChzbmFwcGluZ1Ro
cmVzaG9sZCA+IDApIHsKLSAgICAgICAgaWYgKE9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3QgPSBp
bnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKHZhbHVlKSkgeworICAgICAgICBpZiAoc3Rk
OjpvcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0ID0gaW5wdXQtPmZpbmRDbG9zZXN0VGlja01hcmtW
YWx1ZSh2YWx1ZSkpIHsKICAgICAgICAgICAgIGRvdWJsZSBjbG9zZXN0RnJhY3Rpb24gPSBzdGVw
UmFuZ2UucHJvcG9ydGlvbkZyb21WYWx1ZSgqY2xvc2VzdCkudG9Eb3VibGUoKTsKICAgICAgICAg
ICAgIGRvdWJsZSBjbG9zZXN0UmF0aW8gPSBpc1ZlcnRpY2FsIHx8ICFpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uID8gMS4wIC0gY2xvc2VzdEZyYWN0aW9uIDogY2xvc2VzdEZyYWN0aW9uOwogICAgICAg
ICAgICAgTGF5b3V0VW5pdCBjbG9zZXN0UG9zaXRpb24gPSB0cmFja0xlbmd0aCAqIGNsb3Nlc3RS
YXRpbzsKQEAgLTU4Miw3ICs1ODIsNyBAQCBIVE1MSW5wdXRFbGVtZW50KiBTbGlkZXJUaHVtYkVs
ZW1lbnQ6Omhvc3RJbnB1dCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KHNoYWRvd0hvc3QoKSk7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVy
VGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFNs
aWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKIHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0
dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBqdXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBw
c2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtub3duLgogCkBAIC01OTAsNyArNTkwLDcgQEAg
T3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVk
aWEtc2xpZGVyLXRodW1iIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBpZiAoIWhvc3RTdHlsZSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGhvc3RTdHlsZS0+YXBwZWFyYW5jZSgp
KSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CkBAIC02MDUsNyArNjA1LDcgQEAgT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYKICAgICAgICAgbV9zaGFkb3dQc2V1ZG9JZCA9IHNsaWRlclRodW1i
U2hhZG93UHNldWRvSWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTbGlkZXJUaHVtYkVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTYzNiw3ICs2MzYsNyBAQCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eQogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXJDb250
YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHls
ZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8RWxl
bWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQogewogICAgIC8v
IFRoaXMgZG9lc24ndCBhY3R1YWxseSBjb21wdXRlIHN0eWxlLiBUaGlzIGlzIGp1c3QgYSBoYWNr
IHRvIHBpY2sgc2hhZG93IHBzZXVkbyBpZCB3aGVuIGhvc3Qgc3R5bGUgaXMga25vd24uCiAKQEAg
LTY0NCw3ICs2NDQsNyBAQCBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdAogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHNsaWRlckNvbnRhaW5lcigiLXdlYmtpdC1z
bGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAK
ICAgICBpZiAoIWhvc3RTdHlsZSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGhvc3RTdHlsZS0+YXBwZWFyYW5jZSgp
KSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CkBAIC02NTksNyArNjU5LDcgQEAgT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgUmVuZGVyU3QKICAgICAgICAgbV9zaGFkb3dQc2V1ZG9JZCA9IHNsaWRlckNvbnRh
aW5lcjsKICAgICB9CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggMTViNzRhZjZjMjQ5NjI4N2JmOGY5ZDIxODc4YjZiZWZm
MTcxMTcyYi4uODA1ZWNiNmNjM2Y5NGZjN2Q1MDkyMTBmZmZjNTJkODAzYjA1YWE2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTc3
LDcgKzc3LDcgQEAgY2xhc3MgU2xpZGVyVGh1bWJFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxE
aXZFbGVtZW50IHsKICNlbmRpZgogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpIG92ZXJy
aWRlOwogCi0gICAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RhcnREcmFn
Z2luZygpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGNsYXNzIFNsaWRlckNvbnRhaW5lckVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHJpdmF0ZToKICAgICBTbGlkZXJDb250
YWluZXJFbGVtZW50KERvY3VtZW50Jik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbWlj
U3RyaW5nIG1fc2hhZG93UHNldWRvSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBlMGQ3ZjJlMWQyOGIz
ZjkzNWIyYmI3NDgyOWRlMTUxY2ZiOTNhZTFhLi43OTAxYzZhM2Q0MDY2NDY4Zjk5N2ZmYjI5MzMx
NjdkN2EzNWY5NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUmVmPFRleHRD
b250cm9sSW5uZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0Q29udHJvbElubmVy
RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQorc3RkOjpvcHRpb25hbDxFbGVtZW50
U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAg
IGF1dG8gaW5uZXJDb250YWluZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAg
ICBpbm5lckNvbnRhaW5lclN0eWxlLT5pbmhlcml0RnJvbShzaGFkb3dIb3N0U3R5bGUpOwpAQCAt
MTM0LDcgKzEzNCw3IEBAIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJl
bmRlclRleHRDb250cm9sSW5uZXJCbG9jaz4oSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVyKCkpOwog
fQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUq
IHNoYWRvd0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9
IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVh
dGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKICAgICByZXR1cm4gRWxlbWVudFN0
eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CkBAIC0x
NDksNyArMTQ5LDcgQEAgVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OlRleHRDb250cm9s
UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBzZXRIYXNDdXN0b21T
dHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0
Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkK
K3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVu
dDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIHN0eWxlID0gcmVz
b2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggZWVkYTA5NGYwMWQzMDQ3
ZGEzNDVkZGNhOGUyYWVmYzI5MjJjNTBmYi4uYjE2ZTFlNzM2NDZiZTNlOGM0OGJlYjk0Y2IzZmQ0
ZjZiZGQ0ODE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgVGV4dENvbnRy
b2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogCiBwcm90ZWN0
ZWQ6CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoRG9jdW1lbnQmKTsKLSAgICBPcHRpb25h
bDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
ewogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsK
ICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7
CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CkBAIC03Niw3ICs3Niw3
IEBAIGNsYXNzIFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxEaXZFbGVtZW50IHsKIHByaXZhdGU6CiAgICAgVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1l
bnQoRG9jdW1lbnQmKTsKICAgICAKLSAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVu
dFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKIH07CiAKIGNs
YXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERp
dkVsZW1lbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAppbmRleCBlNmYw
NmU4MzZkOGMyNjU3NGZlZjNmODMzNzlmOWEwMzA1MzQzNWVkLi41ZTk0NDliZmNlYmY3ZGU5M2Iz
ZTIxZDYwOTdhMjlmMTM2Y2NhNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBUcmFja0V2ZW50IGZpbmFsIDogcHVibGljIEV2
ZW50IHsKICAgICB1c2luZyBUcmFja0V2ZW50VHJhY2sgPSBWYXJpYW50PFJlZlB0cjxWaWRlb1Ry
YWNrPiwgUmVmUHRyPEF1ZGlvVHJhY2s+LCBSZWZQdHI8VGV4dFRyYWNrPj47CiAKICAgICBzdHJ1
Y3QgSW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewotICAgICAgICBPcHRpb25hbDxUcmFja0V2ZW50
VHJhY2s+IHRyYWNrOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRyYWNrRXZlbnRUcmFjaz4gdHJh
Y2s7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8VHJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYgaW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1Ry
dXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggMGRmMzZkZmZlNTZhNzgwOWM4MjFj
NjNjN2VmOTEzODZhZDg5MDlhZS4uMDcwYWFhMWRkYmQwYTA2NjUwMzBmNjFhMzYwOTFkYjBkOWFj
M2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERh
dGFiYXNlOjpzdGFydChJREJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNv
bnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9y
eS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFzZU5hbWUsIE51bGxvcHQpOworICAgIGF1dG8gcmVz
dWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFzZU5hbWUsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICByZXF1ZXN0
Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9wZW4gZGF0YWJhc2UuIik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2U6OnN0YXJ0KElEQkZhY3RvcnkqIGlkYkZhY3RvcnksIFNlY3VyaXR5T3JpZ2luKiwgY29ucwog
fQogCiAKLXN0YXRpYyBSZWZQdHI8S2V5UGF0aD4ga2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0
IE9wdGlvbmFsPElEQktleVBhdGg+JiBpZGJLZXlQYXRoKQorc3RhdGljIFJlZlB0cjxLZXlQYXRo
PiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYg
aWRiS2V5UGF0aCkKIHsKICAgICBpZiAoIWlkYktleVBhdGgpCiAgICAgICAgIHJldHVybiBLZXlQ
YXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6OlR5cGU6Ok51bGwpLnJlbGVhc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggYmMzYTU2NjRlZDc2MGQ5ZDQzNTM0YzJmNzI1ZTIyN2E5ZDlmNTcyMi4uZjAz
ZTZhMDE2ZTZmMTc1MTM1ZmEwYjNhMGEyZjlmZWU3YjZkYmUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTYz
Myw3ICs2MzMsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRp
bmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbgogICAgICAgICBjb25zb2xlQWdl
bnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIsIGVycm9yKTsgLy8gVGhpcyBzaG91bGQgY29t
ZSBBRlRFUiByZXNvdXJjZSBub3RpZmljYXRpb24sIGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4K
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBPcHRpb25hbDxT
dHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5k
VVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENvbHVtbk51bWJlcikK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5k
VVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENvbHVtbk51bWJlcikK
IHsKICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZEZpbmlz
aFhIUkxvYWRpbmcoaWRlbnRpZmllciwgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlciwgc2Vu
ZENvbHVtbk51bWJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZjNkM2ZmYWRkMmM4ZGMyYzhkNzAxY2FhZjVlYWNk
ZjAyZTJjNGZjNy4uMzhkMDZmYzFlYTM2NDg1MjFjYzMzY2VhMWFmMWMxYWY1ODNhZTY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaApAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUp
OwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBPcHRpb25h
bDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBz
ZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENvbHVtbk51bWJl
cik7CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQg
c2VuZENvbHVtbk51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3BvbnNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAg
IHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwpAQCAtMzM5LDcgKzMzOSw3IEBAIGNsYXNzIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbiB7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYsIGJvb2wsIFJlZlB0cjxGb3JtRGF0YT4mJiwgY29uc3QgSFRUUEhlYWRl
ck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOwotICAgIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBPcHRpb25hbDxTdHJp
bmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJM
LCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENvbHVtbk51bWJlcik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVkVGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRD
b2x1bW5OdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3Rh
dGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmKTsKQEAgLTkxNCw3ICs5MTQsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2Fk
ZQogICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50
aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBz
ZW5kQ29sdW1uTnVtYmVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29s
dW1uTnVtYmVyKQogewogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAg
IGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIGlk
ZW50aWZpZXIsIGRlY29kZWRUZXh0LCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyLCBzZW5k
Q29sdW1uTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAppbmRleCA4ODIyOGY5NTZhMWJjYWZmNjEyMjIwOTI0ZWU5Y2M2OGRlOTZm
Y2ZiLi5lMmZlY2Y1NmE1Y2RkYjBmMmU5MmI0ZTExYjA3YzhmOWE1ZWEyMDA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjYs
NyArOTI2LDcgQEAgRXhjZXB0aW9uT3I8Q1NTU3R5bGVSdWxlKj4gSW5zcGVjdG9yU3R5bGVTaGVl
dDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQogICAgIFN0cmluZ0J1aWxkZXIgc3R5
bGVTaGVldFRleHQ7CiAgICAgc3R5bGVTaGVldFRleHQuYXBwZW5kKHRleHQucmVsZWFzZVJldHVy
blZhbHVlKCkpOwogCi0gICAgYXV0byBhZGRSdWxlUmVzdWx0ID0gbV9wYWdlU3R5bGVTaGVldC0+
YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwgTnVsbG9wdCk7CisgICAgYXV0byBhZGRS
dWxlUmVzdWx0ID0gbV9wYWdlU3R5bGVTaGVldC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJp
bmcoKSwgc3RkOjpudWxsb3B0KTsKICAgICBpZiAoYWRkUnVsZVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGFkZFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IEFTU0VSVChtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggZmI0MGQ5ZDY3
YTgwYjRhZWIzMjQyNGYxYTMxOGIwOGY2NWVjYThkMC4uZjE5NTJjMTZmMTdjNTljMzU1Mjg1YjA0
ZjIwYzM2MmZjYzcxM2JiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c2V0SW5zdHJ1bWVudHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBJbnNwCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBP
cHRpb25hbDxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+IGluc3RydW1lbnRUeXBlID0g
UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90
b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+KGVudW1WYWx1ZVN0cmluZyk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlRpbWVsaW5lOjpJbnN0cnVtZW50PiBpbnN0cnVtZW50VHlw
ZSA9IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
UHJvdG9jb2w6OlRpbWVsaW5lOjpJbnN0cnVtZW50PihlbnVtVmFsdWVTdHJpbmcpOwogICAgICAg
ICBpZiAoIWluc3RydW1lbnRUeXBlKSB7CiAgICAgICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VT
dHJpbmcoIlVuZXhwZWN0ZWQgZW51bSB2YWx1ZTogIiwgZW51bVZhbHVlU3RyaW5nKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IGRiNDc5OTg0MTUyZTM1NjJmMzE5NDY4YmU5NTk1ZWViYmU5MDg3NTAuLjJkM2NkOTUwZTMx
ODQzOTM3YjhiNzA1ZDMxNzU0YjM4YWEzM2I4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6c3RhcnRJY29uTG9hZGluZygpCiAgICAgVmVjdG9yPExpbmtJY29uPiBpY29ucyA9IExpbmtJ
Y29uQ29sbGVjdG9yIHsgKmRvY3VtZW50IH0uaWNvbnNPZlR5cGVzKHsgTGlua0ljb25UeXBlOjpG
YXZpY29uLCBMaW5rSWNvblR5cGU6OlRvdWNoSWNvbiwgTGlua0ljb25UeXBlOjpUb3VjaFByZWNv
bXBvc2VkSWNvbiB9KTsKIAogICAgIGlmIChpY29ucy5pc0VtcHR5KCkpCi0gICAgICAgIGljb25z
LmFwcGVuZCh7IG1fZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKEFTQ0lJTGl0ZXJhbCgi
L2Zhdmljb24uaWNvIikpLCBMaW5rSWNvblR5cGU6OkZhdmljb24sIFN0cmluZygpLCBOdWxsb3B0
IH0pOworICAgICAgICBpY29ucy5hcHBlbmQoeyBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChBU0NJSUxpdGVyYWwoIi9mYXZpY29uLmljbyIpKSwgTGlua0ljb25UeXBlOjpGYXZpY29u
LCBTdHJpbmcoKSwgc3RkOjpudWxsb3B0IH0pOwogCiAgICAgZm9yIChhdXRvJiBpY29uIDogaWNv
bnMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi5h
ZGQobmV4dEljb25DYWxsYmFja0lEKyssIGljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAxMWE0OGQ3M2NhMzc4ZmI1
NGE4ZWVkZDg4ZTZjNzY4YTIzZjkwZTEyLi5lODc4MWUzYmE1ZjA1ZGQ4MWUxNzcyODBkYjllZGE2
Yzc1NjJlNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KFJlc291cmNlUmVx
dWVzCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNz
UmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBp
ZiAobV9hc3luYykgewotICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBDcm9zc09yaWdpblBy
ZWZsaWdodENoZWNrZXIoKnRoaXMsIFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICBtX3ByZWZs
aWdodENoZWNrZXIuZW1wbGFjZSgqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1f
cHJlZmxpZ2h0Q2hlY2tlci0+c3RhcnRQcmVmbGlnaHQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2xl
YXJSZXNvdXJjZSgpCiAgICAgICAgIHJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAg
IH0KICAgICBpZiAobV9wcmVmbGlnaHRDaGVja2VyKQotICAgICAgICBtX3ByZWZsaWdodENoZWNr
ZXIgPSBOdWxsb3B0OworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lFcnJv
cihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgdXJsKQpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNj
ZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGFjdHVh
bFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0Nv
bnRyb2woYWN0dWFsUmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4oKSwgbV9vcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMpOwogCi0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gTnVsbG9wdDsKKyAgICBtX3By
ZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJdCBzaG91bGQgYmUgb2sg
dG8gc2tpcCB0aGUgc2VjdXJpdHkgY2hlY2sgc2luY2Ugd2UgYWxyZWFkeSBhc2tlZCBhYm91dCB0
aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCiAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShhY3R1YWxSZXF1
ZXN0KSwgU2tpcFNlY3VyaXR5Q2hlY2spOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gTnVsbG9wdDsKKyAgICBtX3ByZWZsaWdodENoZWNr
ZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxMb2FkaW5nKG1fZG9jdW1lbnQuZnJhbWUoKSwgbV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCAwZmYyOTBkODI1
NjM4M2EwNzFiZmRmMWY4ZGQxYmU3NjhlZmU0ZTczLi4zZGE4YzVlZmRiY2MwNGU3YzliNTJmZGJi
MmQ1NWJjZmZiOWFmNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMTcsOCArMTE3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIG1fc2ltcGxlUmVxdWVzdDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLSAgICAgICAgT3B0aW9uYWw8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyPiBtX3ByZWZsaWdodENoZWNrZXI7Ci0gICAgICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+
IG1fb3JpZ2luYWxIZWFkZXJzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luUHJl
ZmxpZ2h0Q2hlY2tlcj4gbV9wcmVmbGlnaHRDaGVja2VyOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFkZXJzOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMzU2
YTgwNTk2YjBiMDBjYjM1NjUxOWFiMDgyOThhMWM0MzUzZDFjZS4uNGQ1OWMwMDljYWY2ZmNhN2Zh
NTU0MjYzYzdlZDdiMTY1ODZlNTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgY2xhc3MgRW1wdHlQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQgZmluYWwgOiBwdWJsaWMgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IHsKICAgICBib29sIHNo
b3dQYXltZW50VUkoY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFVSTD4mLCBjb25zdCBQYXltZW50
UmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBjb21wbGV0ZU1l
cmNoYW50VmFsaWRhdGlvbihjb25zdCBQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGUg
eyB9CiAKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcz4pIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVx
dWVzdDo6U2hpcHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0
ZW1zPikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0
aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0
IFZlY3RvcjxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+Jiwgc3RkOjpvcHRpb25hbDxQ
YXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlIHsgfQogICAgIHZvaWQg
Y29tcGxldGVQYXltZW50U2Vzc2lvbihQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykgb3ZlcnJp
ZGUgeyB9CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGUgeyB9CiAgICAg
dm9pZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCAwMzk3YjBkNGM3MDY0NWIxODg0MWFhYjM2MGZh
MzQxYmY5ZjAzNGJhLi44OWQyMmU3OWIxZDZkMmI5NmNlMTI2YzdhMjk2YzI3ODk0YmNkNmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yOTYsNyArMjk2LDcgQEAgY2xh
c3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgb3ZlcnJp
ZGUgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1
cmVDb250ZW50Pikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
c3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+KSBvdmVycmlkZSB7IH0KICAgICB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGUgeyB9CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2Fk
KCkgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBj
Nzg4M2FjYjFiMWZiZTUwYzI5ODE4YjZmNDY2NmQ5Y2U5NmU0MzlmLi4xMjJhMmJkMjdmYWQ1NzI3
MjZlMTcwZmVlZDU5MTMxYTU2MDM4YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKQEAgLTM0Miw5ICszNDIsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlv
bihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHVybFNlbGVjdGVkKHJlcXVl
c3QsIG51bGxwdHIpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZl
bnQsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNr
Rm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0
aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9wZW5lclBvbGljeSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJp
bmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9j
a0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0
IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCiB7Ci0gICAgTmV3RnJhbWVPcGVuZXJQ
b2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVPcihzaG91bGRT
ZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6
U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOworICAgIE5ld0ZyYW1lT3Bl
bmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0gb3BlbmVyUG9saWN5LnZhbHVlX29yKHNo
b3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9s
aWN5OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAgICAgdXJsU2Vs
ZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCksIFJlc291cmNlUmVxdWVzdCh1cmwpLCBwYXNzZWRUYXJnZXQsIGxvY2tIaXN0b3J5LCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVmZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52
YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5lclBvbGljeSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGRvd25sb2FkQXR0
cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0KIApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRv
d1Byb3BlcnRpZXMsIGJvb2wKIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEo
KQogewotICAgIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChOdWxsb3B0KTsKKyAgICBkaXNwYXRjaERp
ZENvbW1pdExvYWQoc3RkOjpudWxsb3B0KTsKICAgICBkaXNwYXRjaERpZENsZWFyV2luZG93T2Jq
ZWN0c0luQWxsV29ybGRzKCk7CiAgICAgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGVJbkFs
bFdvcmxkcygpOwogCkBAIC0xODE0LDcgKzE4MTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21t
aXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKG1haW5SZXNv
dXJjZVJlcXVlc3QsIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdWNlRXJyb3IpOwog
ICAgICAgICBub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKGNhY2hlZFBhZ2Ut
PmRvY3VtZW50TG9hZGVyKCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIGNhY2hlZFBhZ2UtPmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkpOwogCi0gICAgICAgIE9wdGlvbmFsPEhhc0luc2Vj
dXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50ID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZy
YW1lKCktPmhhc0luc2VjdXJlQ29udGVudCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc0lu
c2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50ID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFp
bkZyYW1lKCktPmhhc0luc2VjdXJlQ29udGVudCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IEFQSSBzaG91bGQgYmUgdHVybmVkIGFyb3VuZCBzbyB0aGF0IHdlIGdyb3VuZCBDYWNoZWRQYWdl
IGludG8gdGhlIFBhZ2UuCiAgICAgICAgIGNhY2hlZFBhZ2UtPnJlc3RvcmUoKm1fZnJhbWUucGFn
ZSgpKTsKQEAgLTIwOTcsNyArMjA5Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVk
RnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBBU1NFUlQodmlldyk7CiAgICAgdmlldy0+c2V0
V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCi0gICAgT3B0aW9uYWw8SW50UmVjdD4gcHJldmlv
dXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3KCkgPyAgbV9mcmFtZS52aWV3KCktPmZyYW1l
UmVjdCgpIDogT3B0aW9uYWw8SW50UmVjdD4oTnVsbG9wdCk7CisgICAgc3RkOjpvcHRpb25hbDxJ
bnRSZWN0PiBwcmV2aW91c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2ZyYW1l
LnZpZXcoKS0+ZnJhbWVSZWN0KCkgOiBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+KHN0ZDo6bnVsbG9w
dCk7CiAgICAgbV9mcmFtZS5zZXRWaWV3KHZpZXcpOwogCiAgICAgLy8gVXNlIHRoZSBwcmV2aW91
cyBTY3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KQEAgLTM1MjksNyArMzUyOSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAjZW5kaWYK
IH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhh
c0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCkKK3ZvaWQgRnJhbWVM
b2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29u
dGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCkKIHsKICAgICBpZiAobV9zdGF0ZU1hY2hp
bmUuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0z
NTkzLDggKzM1OTMsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpmb3JjZVBhZ2VUcmFuc2l0aW9uSWZO
ZWVkZWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclRlc3RpbmdPdmVycmlkZXMoKQogewot
ICAgIG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcgPSBOdWxsb3B0OwotICAgIG1fb3Zl
cnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3RpbmcgPSBOdWxsb3B0OworICAgIG1fb3Zl
cnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9vdmVycmlk
ZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZyA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2lz
U3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nID0gZmFs
c2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMTdmMzM3ZTI5MTli
MTMyOTEzMjg2YjIwMTViNWY0MWM4NDdkYzhhOC4uMWIwMmVlZmU2Y2Y2MTg2NGEzY2YzYTQ0NzU1
MGIwNmNlZTk0ODExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTExOCw3
ICsxMTgsNyBAQCBjbGFzcyBGcmFtZUxvYWRlciB7CiAgICAgdW5zaWduZWQgbG9uZyBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRp
YWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIHZvaWQgY2hhbmdlTG9j
YXRpb24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgTG9j
a0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0g
TnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9t
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIExvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0
LCBTaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6
b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20pOwogICAgIHZvaWQgc3VibWl0
Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UsIGJvb2wgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCA9IHRydWUpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIGNsYXNzIEZyYW1lTG9hZGVy
IHsKIAogICAgIGJvb2wgc2hvdWxkUmVsb2FkVG9IYW5kbGVVbnJlYWNoYWJsZVVSTChEb2N1bWVu
dExvYWRlciopOwogCi0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFz
SW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFzSW5zZWN1cmVDb250ZW50KTsKKyAgICB2b2lkIGRp
c3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5p
dGlhbEhhc0luc2VjdXJlQ29udGVudCk7CiAKICAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmLCBFdmVudCopOwogCkBAIC00NTIsOCArNDUyLDggQEAgY2xhc3MgRnJh
bWVMb2FkZXIgewogCiAgICAgUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29y
a2luZ0NvbnRleHQ7CiAKLSAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4g
bV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZzsKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxv
YWRQcmlvcml0eT4gbV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5PiBtX292ZXJyaWRlQ2Fj
aGVQb2xpY3lGb3JUZXN0aW5nOworICAgIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3Jp
dHk+IG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3Rpbmc7CiAgICAgYm9vbCBt
X2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nIHsg
ZmFsc2UgfTsKIAogICAgIFVSTCBtX3ByZXZpb3VzVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiNjUzMGRlNWJkM2ZlNTUxM2IyN2ZhNzgwZDVkYzJm
NjZlYjJlODEzLi4zMGE4YjYzZjI3ZmUwY2QzYjkwNGYzNGM0YjkwYzEyOTRmMzc3MWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTY1LDcgKzE2NSw3
IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJl
Q29udGVudD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0
ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCA1NWE0ZDVmNjBkYjkw
OTIzZGNhY2MwNDg5YmY3NDMzMTA4ZWFiZjBmLi5mYTA3OGI2NjkyYzBiOGJmZTAwMTYyYzRkNmU3
NzBjZmU5MzE1NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIHZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gbnVsbHB0cjsKIH0KIAotT3B0
aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IExpbmtMb2FkZXI6OnJlc291cmNlVHlwZUZyb21B
c0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFzKQorc3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJj
ZTo6VHlwZT4gTGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0
cmluZyYgYXMpCiB7CiAgICAgaWYgKGFzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIENhY2hl
ZFJlc291cmNlOjpSYXdSZXNvdXJjZTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBPcHRpb25hbDxDYWNo
ZWRSZXNvdXJjZTo6VHlwZT4gTGlua0xvYWRlcjo6cmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRl
KGNvbnN0IFN0cgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcywgInRy
YWNrIikpCiAgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U7
CiAjZW5kaWYKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNy
ZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBM
aW5rTG9hZGVyJiBsb2FkZXIsIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUpCkBAIC0xODYsNyAr
MTg2LDcgQEAgYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRl
JiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJlZiwKICAgICAgICAgaWYgKCFtX2NsaWVudC5z
aG91bGRMb2FkTGluaygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIE9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgICAgIENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUgPSBDYWNoZWRSZXNvdXJjZTo6TGlua1ByZWZldGNoOwogICAgICAgICBp
ZiAocmVsQXR0cmlidXRlLmlzTGlua1N1YnJlc291cmNlKSB7CiAgICAgICAgICAgICAvLyBXZSBv
bmx5IG1ha2Ugb25lIHJlcXVlc3QgdG8gdGhlIGNhY2hlZCByZXNvdXJjZSBsb2FkZXIgaWYgbXVs
dGlwbGUgcmVsIHR5cGVzIGFyZSBzcGVjaWZpZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
aAppbmRleCAyYTQ5MjFjNDE1Y2ZhYTZkYzA0Yzc3ZGE3ZWI4MTg3MjI1MDQ5YzNlLi5lNzczYjY0
YzM5MWY1NDU2ZDViMmQ0OWEzNDM2Mzk0NzJlNTAwZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgTGlua0xvYWRlciA6IHByaXZhdGUgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogICAgIHZpcnR1YWwgfkxpbmtMb2FkZXIoKTsKIAogICAgIGJv
b2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgYXMsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW4sIERvY3VtZW50Jik7Ci0gICAgc3Rh
dGljIE9wdGlvbmFsPENhY2hlZFJlc291cmNlOjpUeXBlPiByZXNvdXJjZVR5cGVGcm9tQXNBdHRy
aWJ1dGUoY29uc3QgU3RyaW5nJiBhcyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVk
UmVzb3VyY2U6OlR5cGU+IHJlc291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcm
IGFzKTsKIAogICAgIFdlYWtQdHI8TGlua0xvYWRlcj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJu
IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAgICAgdm9pZCB0cmlnZ2VyRXZl
bnRzKGNvbnN0IENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA2ZDE2MDY3Mzk5NmMyY2MyOTQ1NjZmNWU5NzNmMzVjYWUy
OTY2ZmRkLi5jYTBiYzAwZDEyNWMwZDgyMGUxYTc4ZmU1OTA1Y2ZiNWI4MTZmYzY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb24KICAgICAsIG1fcmVzb3VyY2UoJnJlc291cmNlKQog
ICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudChmYWxzZSkKICAgICAsIG1fc3RhdGUoVW5p
bml0aWFsaXplZCkKLSAgICAsIG1fcmVxdWVzdENvdW50VHJhY2tlcihJblBsYWNlLCBmcmFtZS5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCByZXNvdXJjZSkKKyAgICAsIG1fcmVx
dWVzdENvdW50VHJhY2tlcihzdGQ6OmluX3BsYWNlLCBmcmFtZS5kb2N1bWVudCgpLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLCByZXNvdXJjZSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgc3VicmVz
b3VyY2VMb2FkZXJDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICAgICAgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCA9IHRydWU7
CiAKICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVsdGlQYXJ0cyBpbiBhIENhY2hlZFJlc291
cmNlTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAotICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIg
PSBOdWxsb3B0OworICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmICghbV9yZXNvdXJjZS0+aXNJbWFnZSgpKSB7CiAgICAgICAgICAgICBjYW5j
ZWwoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpub3RpZnlEb25lKCkKICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gTnVsbG9w
dDsKKyAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgIG1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkubG9h
ZERvbmUobV9yZXNvdXJjZSwgbV9zdGF0ZSAhPSBDYW5jZWxsZWRXaGlsZUluaXRpYWxpemluZyk7
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCBh
MzRlZTA2ZTZjOTNkZDc3NDgxYWQ1ZWYxMGU2MzNmN2ExZDU4YzBlLi44NGMwYWM0ZWNjN2EzYjhi
NGE4NTdmYTQzMGJlZmIxNTg3NGYzZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaApAQCAtMTI4LDcgKzEyOCw3IEBAIGNsYXNzIFN1YnJlc291cmNlTG9hZGVy
IGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVyIHsKICAgICBDYWNoZWRSZXNvdXJjZSogbV9y
ZXNvdXJjZTsKICAgICBib29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CiAgICAgU3VicmVz
b3VyY2VMb2FkZXJTdGF0ZSBtX3N0YXRlOwotICAgIE9wdGlvbmFsPFJlcXVlc3RDb3VudFRyYWNr
ZXI+IG1fcmVxdWVzdENvdW50VHJhY2tlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3RDb3Vu
dFRyYWNrZXI+IG1fcmVxdWVzdENvdW50VHJhY2tlcjsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fb3JpZ2luOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBl
MDc5MzhjOWY3NTAxNzk1Mjc5MTBhNDk2Y2U2ZjRjYWRkMmU2MDA0Li5hZmIwYjY1NDczMmQ2ZWJi
NTZhNTY0ZmE2ODA0Nzc5OWU1NjIyMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTgwMiw3ICs4MDIsNyBAQCBib29sIENhY2hlZFJl
c291cmNlOjphcmVBbGxDbGllbnRzWE1MSHR0cFJlcXVlc3RzKCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0TG9hZFByaW9yaXR5KGNvbnN0IE9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYgbG9hZFByaW9yaXR5KQordm9pZCBDYWNoZWRS
ZXNvdXJjZTo6c2V0TG9hZFByaW9yaXR5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2Fk
UHJpb3JpdHk+JiBsb2FkUHJpb3JpdHkpCiB7CiAgICAgaWYgKGxvYWRQcmlvcml0eSkKICAgICAg
ICAgbV9sb2FkUHJpb3JpdHkgPSBsb2FkUHJpb3JpdHkudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggODQ2ODk1MzM4NWYxOWZlYjk2
MGI4MThhMmQ3OWEyZmZlZTY0Mzk4Zi4uYzhiYzBkZjYzNTI2NTc3NWU2NWJlNTViNDU4OTAyMjc1
YjNiNWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZSB7CiAgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0
eSBsb2FkUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRQcmlvcml0eTsgfQotICAgIHZv
aWQgc2V0TG9hZFByaW9yaXR5KGNvbnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYp
OworICAgIHZvaWQgc2V0TG9hZFByaW9yaXR5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VM
b2FkUHJpb3JpdHk+Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChDYWNo
ZWRSZXNvdXJjZUNsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCmluZGV4IGIyMjBjNDUyZTRkZjVkOWIy
OWQxMGI3NDRlZWIyYWIyYmUyYjRmNWQuLjQ3M2FjZDU5ZjAzNGExMTJiZWU2NDM1MTVkNmNiMjli
NWI1MDE1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMsIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eSwgU3Ry
aW5nJiYgY2hhcnNldCkKK0NhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBw
cmlvcml0eSwgU3RyaW5nJiYgY2hhcnNldCkKICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0KFdURk1v
dmUocmVzb3VyY2VSZXF1ZXN0KSkKICAgICAsIG1fY2hhcnNldChXVEZNb3ZlKGNoYXJzZXQpKQog
ICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggYWU0Yjk2NzcwNDExOTI2Njg3Nzdm
NTRkOGEwYjllNDE1ZTc3NTE0NC4uMGU4YTRjM2ZiOTNiZTUxMzI5NGQ0ZjA0NWU5OWVmOWFlNzEw
NzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaApAQCAtNDksNyArNDksNyBAQCBib29sIGlzUmVxdWVzdENyb3NzT3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBSZXNvdXJjZQog
CiBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgewogcHVibGljOgotICAgIENhY2hlZFJlc291
cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiwgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+ID0gTnVsbG9wdCwgU3RyaW5nJiYgY2hh
cnNldCA9IFN0cmluZygpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIHN0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VMb2FkUHJpb3JpdHk+ID0gc3RkOjpudWxsb3B0LCBTdHJpbmcmJiBjaGFyc2V0ID0gU3RyaW5n
KCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiYgcmVsZWFzZVJlc291cmNlUmVxdWVzdCgpIHsg
cmV0dXJuIFdURk1vdmUobV9yZXNvdXJjZVJlcXVlc3QpOyB9CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVz
dDsgfQpAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgewogICAg
IHZvaWQgc2V0Q2hhcnNldChjb25zdCBTdHJpbmcmIGNoYXJzZXQpIHsgbV9jaGFyc2V0ID0gY2hh
cnNldDsgfQogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogICAgIHZvaWQgc2V0T3B0aW9ucyhjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpIHsgbV9vcHRpb25zID0gb3B0aW9uczsgfQotICAgIGNv
bnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYgcHJpb3JpdHkoKSBjb25zdCB7IHJl
dHVybiBtX3ByaW9yaXR5OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQ
cmlvcml0eT4mIHByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gbV9wcmlvcml0eTsgfQogICAgIHZv
aWQgc2V0SW5pdGlhdG9yKFBhc3NSZWZQdHI8RWxlbWVudD4pOwogICAgIHZvaWQgc2V0SW5pdGlh
dG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBp
bml0aWF0b3JOYW1lKCkgY29uc3Q7CkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIENhY2hlZFJlc291
cmNlUmVxdWVzdCB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAg
IFN0cmluZyBtX2NoYXJzZXQ7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsK
LSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gbV9wcmlvcml0eTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBtX3ByaW9yaXR5OwogICAgIFJlZlB0cjxF
bGVtZW50PiBtX2luaXRpYXRvckVsZW1lbnQ7CiAgICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9y
TmFtZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggY2ViMzRmMTIxOGVlNWFmMTQwMDI4OTgzYWUwYjZh
Y2FkOTc0OGM3Ny4uOWRlMTNkOWQ2Njc5YmVmNDhmMmU0NjdlNTA3YzVjMzU1NDdjZjg1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC04NCw4ICs4NCw4IEBAIGNsYXNz
IE1hdGhNTEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxlbWVudCB7CiAgICAgICAgIFN0cmV0Y2hl
ZCA9IDE4CiAgICAgfTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlz
cGxheVN0eWxlKCkgeyByZXR1cm4gTnVsbG9wdDsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8TWF0
aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4gTnVsbG9wdDsgfQorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxib29sPiBzcGVjaWZpZWREaXNwbGF5U3R5bGUoKSB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TWF0aFZhcmlh
bnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmluZGV4IDFhN2U0YWI3YjRi
YzgxMTVkNTlmZTdiZDg2YWJhZmFmM2Q1YTgwYjcuLmVlMjE4MWUzNjQ5ZjIyZjcyNDZlNmJjNWNk
ZjJkMjFiMTUzNDE3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxG
cmFjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFj
dGlvbkVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxl
bmd0aCYgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpsaW5lVGhpY2tuZXNzKCkKICAgICByZXR1cm4g
bV9saW5lVGhpY2tuZXNzLnZhbHVlKCk7CiB9CiAKLU1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJh
Y3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdu
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVu
dD4mIGFsaWdubWVudCkKK01hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQg
TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiYgYWxpZ25t
ZW50KQogewogICAgIGlmIChhbGlnbm1lbnQpCiAgICAgICAgIHJldHVybiBhbGlnbm1lbnQudmFs
dWUoKTsKQEAgLTk3LDExICs5NywxMSBAQCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9u
QWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6ZGVub21pbmF0b3JBbGlnbgogdm9pZCBN
YXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gbGlu
ZXRoaWNrbmVzc0F0dHIpCi0gICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IE51bGxvcHQ7CisgICAg
ICAgIG1fbGluZVRoaWNrbmVzcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09
IG51bWFsaWduQXR0cikKLSAgICAgICAgbV9udW1lcmF0b3JBbGlnbm1lbnQgPSBOdWxsb3B0Owor
ICAgICAgICBtX251bWVyYXRvckFsaWdubWVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlm
IChuYW1lID09IGRlbm9tYWxpZ25BdHRyKQotICAgICAgICBtX2Rlbm9taW5hdG9yQWxpZ25tZW50
ID0gTnVsbG9wdDsKKyAgICAgICAgbV9kZW5vbWluYXRvckFsaWdubWVudCA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaAppbmRleCAz
YmY2M2ExOGQ0NmYwOGI4OGFjOGYxOGJiNjgwMDMyOTI1MTM2MDc0Li5jZmZmNWI2YjM5MmVmZmU4
ODQzZGVmNDIyYjYzZTkyZjdlZjQ4M2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEZyYWN0aW9uRWxlbWVudC5oCkBAIC00OCwxMSArNDgsMTEgQEAgY2xhc3MgTWF0aE1MRnJh
Y3Rpb25FbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQgewog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmlu
YWw7CiAKLSAgICBGcmFjdGlvbkFsaWdubWVudCBjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgT3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+Jik7CisgICAgRnJh
Y3Rpb25BbGlnbm1lbnQgY2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+Jik7CiAKLSAgICBPcHRpb25hbDxM
ZW5ndGg+IG1fbGluZVRoaWNrbmVzczsKLSAgICBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4g
bV9udW1lcmF0b3JBbGlnbm1lbnQ7Ci0gICAgT3B0aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1f
ZGVub21pbmF0b3JBbGlnbm1lbnQ7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fbGluZVRo
aWNrbmVzczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiBtX251bWVyYXRv
ckFsaWdubWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYWN0aW9uQWxpZ25tZW50PiBtX2Rlbm9t
aW5hdG9yQWxpZ25tZW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxN
YXRoRWxlbWVudC5jcHAKaW5kZXggZjYyNjk0MjcyNzgzMTc5ODYzMjQ1ZTEyODhiMzBhZTFiOTVi
OTUxNi4uNzgzZTlmZjk1Njk5NDhmYThjOWZlYzBlZWI0Y2EwZTViYTU4N2FjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
TWF0aE1MTWF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotT3B0aW9uYWw8Ym9vbD4g
TWF0aE1MTWF0aEVsZW1lbnQ6OnNwZWNpZmllZERpc3BsYXlTdHlsZSgpCitzdGQ6Om9wdGlvbmFs
PGJvb2w+IE1hdGhNTE1hdGhFbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUoKQogewogICAg
IGlmIChjYWNoZWRCb29sZWFuQXR0cmlidXRlKGRpc3BsYXlzdHlsZUF0dHIsIG1fZGlzcGxheVN0
eWxlKSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQg
ZGlzcGxheXN0eWxlIHZhbHVlIG9mIHRoZSA8bWF0aD4gZGVwZW5kcyBvbiB0aGUgZGlzcGxheSBh
dHRyaWJ1dGUsIHNvIHdlIHBhcnNlIGl0IGhlcmUuCkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgTWF0
aE1MTWF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0CiAgICAgYm9vbCBkaXNwbGF5U3R5bGVBdHRyaWJ1dGUgPSAobmFtZSA9
PSBkaXNwbGF5c3R5bGVBdHRyIHx8IG5hbWUgPT0gZGlzcGxheUF0dHIpOwogICAgIGJvb2wgbWF0
aFZhcmlhbnRBdHRyaWJ1dGUgPSBuYW1lID09IG1hdGh2YXJpYW50QXR0cjsKICAgICBpZiAoZGlz
cGxheVN0eWxlQXR0cmlidXRlKQotICAgICAgICBtX2Rpc3BsYXlTdHlsZSA9IE51bGxvcHQ7Cisg
ICAgICAgIG1fZGlzcGxheVN0eWxlID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChtYXRoVmFyaWFu
dEF0dHJpYnV0ZSkKLSAgICAgICAgbV9tYXRoVmFyaWFudCA9IE51bGxvcHQ7CisgICAgICAgIG1f
bWF0aFZhcmlhbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKChkaXNwbGF5U3R5bGVBdHRyaWJ1
dGUgfHwgbWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYmIHJlbmRlcmVyKCkpCiAgICAgICAgIE1hdGhN
TFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCmluZGV4IGZhNmM2ZTliNTI3NTE3NmIxODM3
YmNjZTA5ZThiYjA2NTlhODY0MzIuLmExZTM3N2UzOTAxZWJhZmE0MmFhZjNlZmJlZDc3ODQ5NzAx
OTc0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCkBAIC00
NCw3ICs0NCw3IEBAIGNsYXNzIE1hdGhNTE1hdGhFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhN
TFJvd0VsZW1lbnQgewogCiAgICAgYm9vbCBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmli
dXRlKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIE9wdGlvbmFsPGJvb2w+IHNwZWNpZmll
ZERpc3BsYXlTdHlsZSgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVk
RGlzcGxheVN0eWxlKCkgZmluYWw7CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxN
ZW5jbG9zZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3Nl
RWxlbWVudC5jcHAKaW5kZXggMTMzMDkxOTJjZTE0NGJkZTRlZGU5OTgzZTJmMmE5MDZkYzllMDQ3
Ni4uNzQzYzQ2MTFkMzY5NWJhZGJlYTM0NzY2NDYxYmQzMGMxY2JmMmI0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKQEAgLTEzMiw3ICsx
MzIsNyBAQCBib29sIE1hdGhNTE1lbmNsb3NlRWxlbWVudDo6aGFzTm90YXRpb24oTWVuY2xvc2VO
b3RhdGlvbkZsYWcgbm90YXRpb25GbGFnKQogdm9pZCBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gbm90YXRpb25BdHRyKQotICAgICAgICBtX25v
dGF0aW9uRmxhZ3MgPSBOdWxsb3B0OworICAgICAgICBtX25vdGF0aW9uRmxhZ3MgPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICBNYXRoTUxSb3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgK
aW5kZXggZWU3NDVjYmFkZjlmOTcyNGY0MzJmYWRjZjc4OGZlNWJiMDFiNGQ2YS4uZGExZDJhNzQ2
Mjc2Mzg3OGIyNDQ0NzBhNjc5MmViYWY3YjA0ZWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBNYXRo
TUxNZW5jbG9zZUVsZW1lbnQgZmluYWw6IHB1YmxpYyBNYXRoTUxSb3dFbGVtZW50IHsKICAgICB2
b2lkIGNsZWFyTm90YXRpb25zKCkgeyBtX25vdGF0aW9uRmxhZ3MgPSAwOyB9CiAgICAgdm9pZCBh
ZGROb3RhdGlvbihNZW5jbG9zZU5vdGF0aW9uRmxhZyBub3RhdGlvbkZsYWcpIHsgbV9ub3RhdGlv
bkZsYWdzLnZhbHVlKCkgfD0gbm90YXRpb25GbGFnOyB9CiAgICAgdm9pZCBhZGROb3RhdGlvbkZs
YWdzKFN0cmluZ1ZpZXcgbm90YXRpb24pOwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBtX25vdGF0
aW9uRmxhZ3M7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9ub3RhdGlvbkZsYWdzOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5LmNwcAppbmRleCA3YThhMDU0ZDU4MGMwYjExYWFlODBjYWVkZmU5NGM4YjVhMzk0NjI1
Li42ODU0ZjBkYWQ3ZDlmNzc5YmY0OWE2Zjk0OTg3Mzc4ZjQ4MDM0YTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcApAQCAtMTEw
NywxNyArMTEwNywxNyBAQCBzdGF0aWMgY29uc3QgVUNoYXIzMiBob3Jpem9udGFsT3BlcmF0b3Jz
W10gPSB7CiAgICAgMHgwMDNELCAweDAwNUUsIDB4MDA1RiwgMHgwMDdFLCAweDAwQUYsIDB4MDJD
NiwgMHgwMkM3LCAweDAyQzksIDB4MDJDRCwgMHgwMkRDLCAweDAyRjcsIDB4MDMwMiwgMHgwMzMy
LCAweDIwM0UsIDB4MjBEMCwgMHgyMEQxLCAweDIwRDYsIDB4MjBENywgMHgyMEUxLCAweDIxOTAs
IDB4MjE5MiwgMHgyMTk0LCAweDIxOTgsIDB4MjE5OSwgMHgyMTlDLCAweDIxOUQsIDB4MjE5RSwg
MHgyMUEwLCAweDIxQTIsIDB4MjFBMywgMHgyMUE0LCAweDIxQTYsIDB4MjFBOSwgMHgyMUFBLCAw
eDIxQUIsIDB4MjFBQywgMHgyMUFELCAweDIxQjQsIDB4MjFCOSwgMHgyMUJDLCAweDIxQkQsIDB4
MjFDMCwgMHgyMUMxLCAweDIxQzQsIDB4MjFDNiwgMHgyMUM3LCAweDIxQzksIDB4MjFDQiwgMHgy
MUNDLCAweDIxRDAsIDB4MjFEMiwgMHgyMUQ0LCAweDIxREEsIDB4MjFEQiwgMHgyMURDLCAweDIx
REQsIDB4MjFFMCwgMHgyMUUyLCAweDIxRTQsIDB4MjFFNSwgMHgyMUU2LCAweDIxRTgsIDB4MjFG
MCwgMHgyMUY2LCAweDIxRkQsIDB4MjFGRSwgMHgyMUZGLCAweDIzQjQsIDB4MjNCNSwgMHgyM0RD
LCAweDIzREQsIDB4MjNERSwgMHgyM0RGLCAweDIzRTAsIDB4MjNFMSwgMHgyNTAwLCAweDI3RjUs
IDB4MjdGNiwgMHgyN0Y3LCAweDI3RjgsIDB4MjdGOSwgMHgyN0ZBLCAweDI3RkIsIDB4MjdGQywg
MHgyN0ZELCAweDI3RkUsIDB4MjdGRiwgMHgyOTBDLCAweDI5MEQsIDB4MjkwRSwgMHgyOTBGLCAw
eDI5MTAsIDB4Mjk0RSwgMHgyOTUwLCAweDI5NTIsIDB4Mjk1MywgMHgyOTU2LCAweDI5NTcsIDB4
Mjk1QSwgMHgyOTVCLCAweDI5NUUsIDB4Mjk1RiwgMHgyQjQ1LCAweDJCNDYsIDB4RkUzNSwgMHhG
RTM2LCAweEZFMzcsIDB4RkUzOCwgMHgxRUVGMCwgMHgxRUVGMQogfTsKIAotT3B0aW9uYWw8UHJv
cGVydHk+IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNoKFVDaGFyMzIgY2hhcmFjdGVy
LCBGb3JtIGZvcm0sIGJvb2wgZXhwbGljaXRGb3JtKQorc3RkOjpvcHRpb25hbDxQcm9wZXJ0eT4g
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFyY2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0g
Zm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCiB7CiAgICAgaWYgKCFjaGFyYWN0ZXIpCi0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
V2UgdHJ5IGFuZCBmaW5kIHRoZSBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBvcGVyYXRvciBkaWN0
aW9uYXJ5LgogICAgIGlmIChhdXRvKiBlbnRyeSA9IHRyeUJpbmFyeVNlYXJjaDxjb25zdCBFbnRy
eSwgS2V5PihkaWN0aW9uYXJ5LCBkaWN0aW9uYXJ5U2l6ZSwgS2V5KGNoYXJhY3RlciwgZm9ybSks
IEV4dHJhY3RLZXkpKQogICAgICAgICByZXR1cm4gRXh0cmFjdFByb3BlcnR5KCplbnRyeSk7CiAK
ICAgICBpZiAoZXhwbGljaXRGb3JtKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHdlIGRpZCBub3QgZmluZCB0aGUgZGVz
aXJlZCBvcGVyYXRvciBmb3JtIGFuZCBpZiBpdCB3YXMgbm90IHNldCBleHBsaWNpdGVseSwgd2Ug
dXNlIHRoZSBmaXJzdCBvbmUgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogSW5maXgsIFByZWZpeCwg
UG9zdGZpeC4KICAgICAvLyBUaGlzIGlzIHRvIGhhbmRsZSBiYWQgTWF0aE1MIG1hcmt1cCB3aXRo
b3V0IGV4cGxpY2l0IDxtcm93PiBkZWxpbWl0ZXJzIGxpa2UgIjxtbz4oPC9tbz48bWk+YTwvbWk+
PG1vPik8L21vPjxtbz4oPC9tbz48bWk+YjwvbWk+PG1vPik8L21vPiIgd2hlcmUgaW5uZXJmZW5j
ZXMgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGluZml4LgpAQCAtMTEzMCw3ICsxMTMwLDcgQEAg
T3B0aW9uYWw8UHJvcGVydHk+IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNoKFVDaGFy
MzIgY2hhcmFjdGVyLCBGb3JtIGZvcm0KICAgICAgICAgcmV0dXJuIEV4dHJhY3RQcm9wZXJ0eSgq
ZW50cnkpOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGJvb2wgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5Ojppc1ZlcnRpY2FsKFVD
aGFyMzIgdGV4dENvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmgKaW5kZXggMDBlZjUwZDY4YzdlZDM0YzMyMTI2MzI3YWI2OWY5ZmFj
OWY0ZGUxYi4uZTAzMTZkNzE0NTBmMmIyNzdhYjJmNzQ0MGQyN2Q4MjNjYmEwOTIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaApAQCAt
NTIsNyArNTIsNyBAQCBzdHJ1Y3QgUHJvcGVydHkgewogICAgIC8vIERlZmF1bHQgb3BlcmF0b3Ig
cHJvcGVydGllcyBhcmUgYWxsIHNldCB0byAiZmFsc2UiLgogICAgIHVuc2lnbmVkIHNob3J0IGZs
YWdzIHsgMCB9OwogfTsKLU9wdGlvbmFsPFByb3BlcnR5PiBzZWFyY2goVUNoYXIzMiwgRm9ybSwg
Ym9vbCBleHBsaWNpdEZvcm0pOworc3RkOjpvcHRpb25hbDxQcm9wZXJ0eT4gc2VhcmNoKFVDaGFy
MzIsIEZvcm0sIGJvb2wgZXhwbGljaXRGb3JtKTsKIGJvb2wgaXNWZXJ0aWNhbChVQ2hhcjMyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNw
cAppbmRleCA5NjhhZmUxZWRlMzYzZmNlOTM4ZWE0NzRjYzRmMWQ3ODJhNDE0MmMzLi44ZDM1YmUz
MDAzOWYyNDE0NTM0MTlmY2Q4MDFlODY4NzQ5MTllM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZv
aWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50Ojpjb21wdXRlT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6RmxhZyBmCiB7CiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5kaXJ0eUZs
YWdzICYgZmxhZyk7CiAKLSAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IHByb3BlcnR5OworICAg
IHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBwcm9wZXJ0eTsKICAgICBjb25zdCBhdXRvJiBu
YW1lID0gcHJvcGVydHlGbGFnVG9BdHRyaWJ1dGVOYW1lKGZsYWcpOwogICAgIGNvbnN0IEJvb2xl
YW5WYWx1ZSYgdmFsdWUgPSBjYWNoZWRCb29sZWFuQXR0cmlidXRlKG5hbWUsIHByb3BlcnR5KTsK
ICAgICBzd2l0Y2ggKHZhbHVlKSB7CkBAIC0yMTEsMTMgKzIxMSwxMyBAQCBjb25zdCBNYXRoTUxF
bGVtZW50OjpMZW5ndGgmIE1hdGhNTE9wZXJhdG9yRWxlbWVudDo6bWF4U2l6ZSgpCiAKIHZvaWQg
TWF0aE1MT3BlcmF0b3JFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
IGNoYW5nZSkKIHsKLSAgICBtX29wZXJhdG9yQ2hhciA9IE51bGxvcHQ7Ci0gICAgbV9kaWN0aW9u
YXJ5UHJvcGVydHkgPSBOdWxsb3B0OworICAgIG1fb3BlcmF0b3JDaGFyID0gc3RkOjpudWxsb3B0
OworICAgIG1fZGljdGlvbmFyeVByb3BlcnR5ID0gc3RkOjpudWxsb3B0OwogICAgIG1fcHJvcGVy
dGllcy5kaXJ0eUZsYWdzID0gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjphbGxGbGFnczsKICAg
ICBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnPiBhdHRyaWJ1dGVOYW1l
VG9Qcm9wZXJ0eUZsYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZz4gYXR0cmlidXRlTmFtZVRvUHJv
cGVydHlGbGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
YWNjZW50QXR0cikKICAgICAgICAgcmV0dXJuIEFjY2VudDsKQEAgLTIzMywyNCArMjMzLDI0IEBA
IHN0YXRpYyBPcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWc+IGF0dHJpYnV0
ZU5hbWVUb1Byb3BlcnR5RmxhZyhjb25zCiAgICAgICAgIHJldHVybiBTdHJldGNoeTsKICAgICBp
ZiAobmFtZSA9PSBzeW1tZXRyaWNBdHRyKQogICAgICAgICByZXR1cm4gU3ltbWV0cmljOwotICAg
IHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTWF0
aE1MT3BlcmF0b3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGZvcm1B
dHRyKSB7Ci0gICAgICAgIG1fZGljdGlvbmFyeVByb3BlcnR5ID0gTnVsbG9wdDsKKyAgICAgICAg
bV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fcHJvcGVydGll
cy5kaXJ0eUZsYWdzID0gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjphbGxGbGFnczsKICAgICB9
IGVsc2UgaWYgKGF1dG8gZmxhZyA9IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyhuYW1lKSkK
ICAgICAgICAgbV9wcm9wZXJ0aWVzLmRpcnR5RmxhZ3MgfD0gZmxhZy52YWx1ZSgpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gbHNwYWNlQXR0cikKLSAgICAgICAgbV9sZWFkaW5nU3BhY2UgPSBOdWxs
b3B0OworICAgICAgICBtX2xlYWRpbmdTcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlm
IChuYW1lID09IHJzcGFjZUF0dHIpCi0gICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IE51bGxvcHQ7
CisgICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChu
YW1lID09IG1pbnNpemVBdHRyKQotICAgICAgICBtX21pblNpemUgPSBOdWxsb3B0OworICAgICAg
ICBtX21pblNpemUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBtYXhzaXpl
QXR0cikKLSAgICAgICAgbV9tYXhTaXplID0gTnVsbG9wdDsKKyAgICAgICAgbV9tYXhTaXplID0g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKChuYW1lID09IHN0cmV0Y2h5QXR0ciB8fCBuYW1lID09
IGxzcGFjZUF0dHIgfHwgbmFtZSA9PSByc3BhY2VBdHRyIHx8IG5hbWUgPT0gbW92YWJsZWxpbWl0
c0F0dHIpICYmIHJlbmRlcmVyKCkpIHsKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MT3Bl
cmF0b3I+KCpyZW5kZXJlcigpKS51cGRhdGVGcm9tRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oCmluZGV4IDM4MDk2NTcwZTllNDU2ZDgx
ZjkzOTE3NWQxZDQyMGIzNDg4OTI4MjEuLjVkZWZkNzdmZWUxYWU4ZTAyMmJkZGQ0MTQyODA2MjQx
MTJkODljZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRv
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVt
ZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTWF0aE1MT3BlcmF0b3JFbGVtZW50IGZpbmFs
IDogcHVibGljIE1hdGhNTFRva2VuRWxlbWVudCB7CiAgICAgfTsKICAgICBzdGF0aWMgT3BlcmF0
b3JDaGFyIHBhcnNlT3BlcmF0b3JDaGFyKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IE9wZXJh
dG9yQ2hhciYgb3BlcmF0b3JDaGFyKCk7Ci0gICAgdm9pZCBzZXRPcGVyYXRvckZvcm1EaXJ0eSgp
IHsgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBOdWxsb3B0OyB9CisgICAgdm9pZCBzZXRPcGVyYXRv
ckZvcm1EaXJ0eSgpIHsgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBzdGQ6Om51bGxvcHQ7IH0KICAg
ICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9ybSgpIHsgcmV0dXJuIGRpY3Rpb25h
cnlQcm9wZXJ0eSgpLmZvcm07IH0KICAgICBib29sIGhhc1Byb3BlcnR5KE1hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeTo6RmxhZyk7CiAgICAgTGVuZ3RoIGRlZmF1bHRMZWFkaW5nU3BhY2UoKTsKQEAg
LTU3LDkgKzU3LDkgQEAgY2xhc3MgTWF0aE1MT3BlcmF0b3JFbGVtZW50IGZpbmFsIDogcHVibGlj
IE1hdGhNTFRva2VuRWxlbWVudCB7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBmaW5hbDsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPE9wZXJh
dG9yQ2hhcj4gbV9vcGVyYXRvckNoYXI7CisgICAgc3RkOjpvcHRpb25hbDxPcGVyYXRvckNoYXI+
IG1fb3BlcmF0b3JDaGFyOwogCi0gICAgT3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5
OjpQcm9wZXJ0eT4gbV9kaWN0aW9uYXJ5UHJvcGVydHk7CisgICAgc3RkOjpvcHRpb25hbDxNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5PiBtX2RpY3Rpb25hcnlQcm9wZXJ0eTsKICAg
ICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5IGNvbXB1dGVEaWN0aW9uYXJ5UHJv
cGVydHkoKTsKICAgICBjb25zdCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5JiBk
aWN0aW9uYXJ5UHJvcGVydHkoKTsKIApAQCAtNzAsMTAgKzcwLDEwIEBAIGNsYXNzIE1hdGhNTE9w
ZXJhdG9yRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBNYXRoTUxUb2tlbkVsZW1lbnQgewogICAgIE9w
ZXJhdG9yUHJvcGVydGllcyBtX3Byb3BlcnRpZXM7CiAgICAgdm9pZCBjb21wdXRlT3BlcmF0b3JG
bGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyk7CiAKLSAgICBPcHRpb25hbDxMZW5n
dGg+IG1fbGVhZGluZ1NwYWNlOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV90cmFpbGluZ1NwYWNl
OwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9taW5TaXplOwotICAgIE9wdGlvbmFsPExlbmd0aD4g
bV9tYXhTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2xlYWRpbmdTcGFjZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV90cmFpbGluZ1NwYWNlOworICAgIHN0ZDo6b3B0aW9u
YWw8TGVuZ3RoPiBtX21pblNpemU7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fbWF4U2l6
ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRk
ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50
LmNwcAppbmRleCA0OWMwNmVkMjU3Nzc0MDBmYTcwZGYyYzcyMzgzYjBiODcxMDQ5Y2ExLi5iMmY0
NDZkODNjZTMwM2JiNmYyNzJhMjExOGJmNmUzZTVkOGJkOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCkBAIC03MywxNSArNzMsMTUgQEAgY29u
c3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxQYWRkZWRFbGVtZW50Ojp2b2Zmc2V0KCkK
IHZvaWQgTWF0aE1MUGFkZGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9
PSB3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGggPSBOdWxsb3B0OworICAgICAgICBtX3dpZHRo
ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAg
ICAgbV9oZWlnaHQgPSBOdWxsb3B0OworICAgICAgICBtX2hlaWdodCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKLSAgICAgICAgbV9kZXB0aCA9IE51bGxv
cHQ7CisgICAgICAgIG1fZGVwdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBsc3BhY2VBdHRyKQotICAgICAgICBtX2xzcGFjZSA9IE51bGxvcHQ7CisgICAgICAgIG1fbHNw
YWNlID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdm9mZnNldEF0dHIpCi0g
ICAgICAgIG1fdm9mZnNldCA9IE51bGxvcHQ7CisgICAgICAgIG1fdm9mZnNldCA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5oCmluZGV4IDEx
NmJiMjVlOTEwZDdlYTdjZmMxYzJjNWIyZDJiN2U0NDc4NjllOWQuLjdjYTM3M2U0NWExYTJkNWQ2
MjdlMWYyNzkxMTg0YjYzNjdlNzkxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFBhZGRlZEVsZW1lbnQuaApAQCAtNDUsMTEgKzQ1LDExIEBAIGNsYXNzIE1hdGhNTFBhZGRlZEVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MUm93RWxlbWVudCB7CiAgICAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlv
bmFsPExlbmd0aD4gbV93aWR0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1faGVpZ2h0OwotICAg
IE9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fbHNwYWNl
OwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV92b2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8TGVu
Z3RoPiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2hlaWdodDsKKyAgICBz
dGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4g
bV9sc3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IG1fdm9mZnNldDsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
LmNwcAppbmRleCA5MzU1ZDM4MzBiZmQ0MDAzMWRjNDY2YjA2YWEzMTU2Mjk2NTI5NGRlLi5kZTli
ZDVkMWE3NDg0M2ZjMTgzOTgzZDkwMTczYTY3NDNkZjJkYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0xODIsNyAr
MTgyLDcgQEAgYm9vbCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojppc0Zsb3dDb250ZW50KGNv
bnN0IE5vZGUmIG5vZGUpCiAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp1bFRhZyk7CiB9CiAKLWNvbnN0IE1hdGhNTEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1dGUpCitjb25z
dCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6
OmNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgc3RkOjpv
cHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1dGUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZSkK
ICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1ZSgpOwpAQCAtMzA2LDcgKzMwNiw3IEBAIE1h
dGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhN
TExlbmd0aChjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHBhcnNlTmFtZWRTcGFjZShzdHJpbmdW
aWV3KTsKIH0KIAotY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxQcmVzZW50YXRp
b25FbGVtZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
T3B0aW9uYWw8TGVuZ3RoPiYgbGVuZ3RoKQorY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBN
YXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgc3RkOjpvcHRpb25hbDxMZW5ndGg+JiBsZW5ndGgpCiB7CiAgICAgaWYg
KGxlbmd0aCkKICAgICAgICAgcmV0dXJuIGxlbmd0aC52YWx1ZSgpOwpAQCAtMzE5LDEwICszMTks
MTAgQEAgYm9vbCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjphY2NlcHRzRGlzcGxheVN0eWxl
QXR0cmlidXRlKCkKICAgICByZXR1cm4gaGFzVGFnTmFtZShtdGFibGVUYWcpOwogfQogCi1PcHRp
b25hbDxib29sPiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5
bGUoKQorc3RkOjpvcHRpb25hbDxib29sPiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVj
aWZpZWREaXNwbGF5U3R5bGUoKQogewogICAgIGlmICghYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJp
YnV0ZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIHNwZWNpZmllZERp
c3BsYXlTdHlsZSA9IGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoZGlzcGxheXN0eWxlQXR0ciwgbV9k
aXNwbGF5U3R5bGUpOwogICAgIHJldHVybiB0b09wdGlvbmFsQm9vbChzcGVjaWZpZWREaXNwbGF5
U3R5bGUpOwogfQpAQCAtMzY5LDEzICszNjksMTMgQEAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlh
bnQgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6cGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZSgK
ICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6Ok5vbmU7CiB9CiAKLU9wdGlvbmFsPE1hdGhNTEVsZW1l
bnQ6Ok1hdGhWYXJpYW50PiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZpZWRNYXRo
VmFyaWFudCgpCitzdGQ6Om9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBNYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZpZWRNYXRoVmFyaWFudCgpCiB7CiAgICAgaWYg
KCFhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtX21hdGhWYXJpYW50KQog
ICAgICAgICBtX21hdGhWYXJpYW50ID0gcGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZShhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hdGh2YXJpYW50QXR0cikpOwotICAgIHJldHVybiBt
X21hdGhWYXJpYW50LnZhbHVlKCkgPT0gTWF0aFZhcmlhbnQ6Ok5vbmUgPyBOdWxsb3B0IDogbV9t
YXRoVmFyaWFudDsKKyAgICByZXR1cm4gbV9tYXRoVmFyaWFudC52YWx1ZSgpID09IE1hdGhWYXJp
YW50OjpOb25lID8gc3RkOjpudWxsb3B0IDogbV9tYXRoVmFyaWFudDsKIH0KIAogdm9pZCBNYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtMzgzLDkgKzM4Myw5IEBAIHZv
aWQgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QKICAgICBib29sIGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSA9IG5h
bWUgPT0gZGlzcGxheXN0eWxlQXR0ciAmJiBhY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCk7
CiAgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0ZSA9IG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRy
ICYmIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpOwogICAgIGlmIChkaXNwbGF5U3R5bGVB
dHRyaWJ1dGUpCi0gICAgICAgIG1fZGlzcGxheVN0eWxlID0gTnVsbG9wdDsKKyAgICAgICAgbV9k
aXNwbGF5U3R5bGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRl
KQotICAgICAgICBtX21hdGhWYXJpYW50ID0gTnVsbG9wdDsKKyAgICAgICAgbV9tYXRoVmFyaWFu
dCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoKGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSB8fCBtYXRo
VmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVuZGVyZXIoKSkKICAgICAgICAgTWF0aE1MU3R5bGU6OnJl
c29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCmluZGV4IDFhZjhiODFkMWRiMzBm
M2YwYjVmNTc3MzBmNGM5YTI0YzFlODM5YzEuLjIzNzA1NTdiNGNjMmVkYTAxM2I2MmQ0MDA1MGVj
MzZlNGIyNWZlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVz
ZW50YXRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQuaApAQCAtNDQsMjAgKzQ0LDIwIEBAIGNsYXNzIE1hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQgOiBwdWJsaWMgTWF0aE1MRWxlbWVudCB7CiAgICAgc3RhdGljIGJvb2wgaXNQ
aHJhc2luZ0NvbnRlbnQoY29uc3QgTm9kZSYpOwogICAgIHN0YXRpYyBib29sIGlzRmxvd0NvbnRl
bnQoY29uc3QgTm9kZSYpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxC
b29sKGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IEJvb2xlYW5W
YWx1ZTo6RGVmYXVsdCA/IE51bGxvcHQgOiBPcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFu
VmFsdWU6OlRydWUpOyB9Ci0gICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBPcHRpb25hbDxCb29sZWFuVmFsdWU+Jik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVh
blZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8g
c3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6
OlRydWUpOyB9CisgICAgY29uc3QgQm9vbGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAog
ICAgIHN0YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJik7Ci0gICAg
Y29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE9w
dGlvbmFsPExlbmd0aD4mKTsKKyAgICBjb25zdCBMZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChj
b25zdCBRdWFsaWZpZWROYW1lJiwgc3RkOjpvcHRpb25hbDxMZW5ndGg+Jik7CiAKICAgICB2aXJ0
dWFsIGJvb2wgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpOwotICAgIE9wdGlvbmFsPGJv
b2w+IHNwZWNpZmllZERpc3BsYXlTdHlsZSgpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8
Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxlKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBP
cHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVkTWF0aFZhcmlhbnQoKSBmaW5hbDsKKyAgICBz
dGQ6Om9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgpIGZpbmFsOwog
Ci0gICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2Rpc3BsYXlTdHlsZTsKLSAgICBPcHRpb25h
bDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5W
YWx1ZT4gbV9kaXNwbGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDxNYXRoVmFyaWFudD4gbV9t
YXRoVmFyaWFudDsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNj
cmlwdHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxl
bWVudC5jcHAKaW5kZXggYzhiOTFmMDM1NmNkNjc5NDUyMzc2MmEyMGM2YjRjMDgzYTYzM2M0MS4u
MzkzZWRjMTEyOTMwMDllYWM1ZDA0NDk4NTFjZDNjMmQ3NmM5ODQ1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwCkBAIC01OCw5ICs1OCw5IEBA
IGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MU2NyaXB0c0VsZW1lbnQ6OnN1cGVy
c2NyaXB0U2hpZnQoKQogdm9pZCBNYXRoTUxTY3JpcHRzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAobmFtZSA9PSBzdWJzY3JpcHRzaGlmdEF0dHIpCi0gICAgICAgIG1fc3Vic2NyaXB0
U2hpZnQgPSBOdWxsb3B0OworICAgICAgICBtX3N1YnNjcmlwdFNoaWZ0ID0gc3RkOjpudWxsb3B0
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gc3VwZXJzY3JpcHRzaGlmdEF0dHIpCi0gICAgICAgIG1f
c3VwZXJzY3JpcHRTaGlmdCA9IE51bGxvcHQ7CisgICAgICAgIG1fc3VwZXJzY3JpcHRTaGlmdCA9
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3Jp
cHRzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50
LmgKaW5kZXggNjNjOWQ4ODBmZGJlZDc5OWNkZTdhNDlhN2I1NTA5OGJjZjJlMzEyYS4uYjRhNjA4
OWYwZDgyOTAwYjBmMzRhNWM1NWVkY2Y0NWQ3YjU1ODMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgKQEAgLTQ0LDggKzQ0LDggQEAgY2xhc3MgTWF0
aE1MU2NyaXB0c0VsZW1lbnQgOiBwdWJsaWMgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudCB7CiAg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9zdWJzY3JpcHRTaGlmdDsKLSAgICBP
cHRpb25hbDxMZW5ndGg+IG1fc3VwZXJzY3JpcHRTaGlmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExl
bmd0aD4gbV9zdWJzY3JpcHRTaGlmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9zdXBl
cnNjcmlwdFNoaWZ0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNwYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3Bh
Y2VFbGVtZW50LmNwcAppbmRleCBmODkyNTk1ZTc0NDc4NGZhZDczZmQyYmVlODc3NTc4ZmUzZTAz
ZWU1Li45NmU5YjkwNzQ3YmU5NTg2Njc0NWY2MGE5N2FhMGE0N2NjNzIxNTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcApAQCAtNjMsMTEgKzYzLDEx
IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MU3BhY2VFbGVtZW50OjpkZXB0
aCgpCiB2b2lkIE1hdGhNTFNwYWNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGggPSBOdWxsb3B0OworICAgICAgICBtX3dp
ZHRoID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKLSAg
ICAgICAgbV9oZWlnaHQgPSBOdWxsb3B0OworICAgICAgICBtX2hlaWdodCA9IHN0ZDo6bnVsbG9w
dDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKLSAgICAgICAgbV9kZXB0aCA9IE51
bGxvcHQ7CisgICAgICAgIG1fZGVwdGggPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxQcmVz
ZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmgKaW5kZXggMDI3ODdhNzBkMzBiZjdi
ODE4ODk0ZGNiM2NmMzEzMDljMWZiYzI4Yy4uM2YxNmY3ODUxNzI5ZGI3MmZlZmVmNTcyOWQ4MjA1
MmUzZWQ1OWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQu
aApAQCAtNDQsOSArNDQsOSBAQCBjbGFzcyBNYXRoTUxTcGFjZUVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudCB7CiAKICAgICBib29sIGFjY2VwdHNEaXNwbGF5
U3R5bGVBdHRyaWJ1dGUoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgT3B0aW9uYWw8
TGVuZ3RoPiBtX3dpZHRoOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9oZWlnaHQ7Ci0gICAgT3B0
aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRo
OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX2hlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExlbmd0aD4gbV9kZXB0aDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFRva2VuRWxlbWVudC5jcHAKaW5kZXggNDM1YWYxMzYwMzYyNDY5MjZjYWVhOGM1NmU1MjllYTAy
OTNiMzczMy4uY2UxY2NhNmE4ZTNhYTc0MjFiYjg5Y2ViZGY0NWY4NDU2ZWM2MGU0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAKQEAgLTc3LDE1ICs3
NywxNSBAQCBib29sIE1hdGhNTFRva2VuRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gaXNQaHJhc2luZ0NvbnRlbnQo
Y2hpbGQpICYmIFN0eWxlZEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQp
OwogfQogCi1PcHRpb25hbDxVQ2hhcjMyPiBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1Np
bmdsZUNvZGVQb2ludChTdHJpbmdWaWV3IHN0cmluZykKK3N0ZDo6b3B0aW9uYWw8VUNoYXIzMj4g
TWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyBz
dHJpbmcpCiB7CiAgICAgYXV0byBjb2RlUG9pbnRzID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdX
aGl0ZXNwYWNlKHN0cmluZykuY29kZVBvaW50cygpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBjb2Rl
UG9pbnRzLmJlZ2luKCk7CiAgICAgaWYgKGl0ZXJhdG9yID09IGNvZGVQb2ludHMuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgIE9wdGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9
ICppdGVyYXRvcjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVyYXRvcjsKICAgICArK2l0ZXJhdG9yOwotICAg
IHJldHVybiBpdGVyYXRvciA9PSBjb2RlUG9pbnRzLmVuZCgpID8gY2hhcmFjdGVyIDogTnVsbG9w
dDsKKyAgICByZXR1cm4gaXRlcmF0b3IgPT0gY29kZVBvaW50cy5lbmQoKSA/IGNoYXJhY3RlciA6
IHN0ZDo6bnVsbG9wdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFRva2VuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2Vu
RWxlbWVudC5oCmluZGV4IDRkNDJjMDcwM2Q2NTkyYjc2ZGQzZWYxYTdjNjI0MWIzZmFiN2MwZjgu
LmJlZDQwZjNjZmZiNzhmMjk0NTE0NTMxMzUyMDM1M2JhOTFiNGQ3NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3Mg
TWF0aE1MVG9rZW5FbGVtZW50IDogcHVibGljIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0aE1MVG9rZW5FbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIHN0YXRpYyBPcHRpb25h
bDxVQ2hhcjMyPiBjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyk7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gY29udmVydFRvU2luZ2xlQ29kZVBvaW50KFN0cmlu
Z1ZpZXcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWF0aE1MVG9rZW5FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKaW5kZXggNWNjYzBjNTJkYWJiZDU0YzM1YTZi
MGZkODk1MGI1MzMzMTJmZmZkYS4uMTQxM2FhZDYxN2Q0NjRjNTUwYjM4NGYyMjRhOWI5Y2U1MzU0
OGYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVt
ZW50LmNwcApAQCAtNTgsOSArNTgsOSBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFs
dWUmIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmFjY2VudFVuZGVyKCkKIHZvaWQgTWF0aE1MVW5k
ZXJPdmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBhY2NlbnRBdHRy
KQotICAgICAgICBtX2FjY2VudCA9IE51bGxvcHQ7CisgICAgICAgIG1fYWNjZW50ID0gc3RkOjpu
dWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gYWNjZW50dW5kZXJBdHRyKQotICAgICAgICBt
X2FjY2VudFVuZGVyID0gTnVsbG9wdDsKKyAgICAgICAgbV9hY2NlbnRVbmRlciA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oCmlu
ZGV4IDllYzZkYjcwMDJjNTAwYzQ0NmZlZDQ2YzdmOTQxMjgwNGJlOTNmMmIuLjA3ZjRkOTZmODYw
N2ZmOWYyMTk5MzJkZWI2YjI3MmY2ZDQ1ODljZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaApAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBNYXRo
TUxVbmRlck92ZXJFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTFNjcmlwdHNFbGVtZW50IHsK
ICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOwogCi0gICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudDsKLSAgICBPcHRpb25h
bDxCb29sZWFuVmFsdWU+IG1fYWNjZW50VW5kZXI7CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFu
VmFsdWU+IG1fYWNjZW50OworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2Vu
dFVuZGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggNTE3YjFh
ODhmZTI3NGY0ZDkzNWFhMWQ5MGZhNGM1Yjk5YTk2NzBjNS4uOWM1NWVjNzI1ODNhYWMzZjQxOTdj
OTkxZTZkZTdhYzcyZTM4Y2Y0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0z
OTAsNyArMzkwLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ2hyb21lQ2xpZW50IHsKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBJbnRS
ZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRD
aGFuZ2UoU2Nyb2xsYmFyU3R5bGUpIHsgfQogCi0gICAgdmlydHVhbCBXVEY6Ok9wdGlvbmFsPFNj
cm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgeyBy
ZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsgfQorICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlT
dHlsZSgpIHsgcmV0dXJuIFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wgaGFzSGFuZGxlcnMpID0g
MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IGQwM2MxYjAyZmU2MDIz
YjYyMzE3YzMxMWQzNmMzZGE1ZmFkYzRmZDUuLmE5NjlkOTQ4ZTdlMzljMDI2OWM1YTMwZmY5Y2Qw
MTdjOTJkZDk1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC00MjYsMTEgKzQyNiwx
MSBAQCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIERPTVRpbWVyOjppbnRlcnZhbENsYW1wZWRU
b01pbmltdW0oKSBjb25zdAogICAgIHJldHVybiBpbnRlcnZhbDsKIH0KIAotT3B0aW9uYWw8c3Rk
OjpjaHJvbm86Om1pbGxpc2Vjb25kcz4gRE9NVGltZXI6OmFsaWduZWRGaXJlVGltZShzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIGZpcmVUaW1lKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzPiBET01UaW1lcjo6YWxpZ25lZEZpcmVUaW1lKHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHMgZmlyZVRpbWUpIGNvbnN0CiB7CiAgICAgYXV0byBhbGlnbm1lbnRJbnRl
cnZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dGltZXJBbGlnbm1lbnRJbnRlcnZhbCht
X25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCk7CiAgICAgaWYgKGFsaWdubWVu
dEludGVydmFsID09IDBtcykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSByYW5kb21pemVk
UHJvcG9ydGlvbiA9IHJhbmRvbU51bWJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgKaW5kZXgg
OTZjOGIzYmI2NWE3ZmNmMjY3ZThlMGFkZTZjZmNlMGZiOWFkYTdkNC4uMzlhMDQ2MWRhZWVlZTI1
ZWFiYTMzOTk2ZTdhMGRjOGRkOTFhNjc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01UaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaApAQCAtNzEs
NyArNzEsNyBAQCBjbGFzcyBET01UaW1lciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVRp
bWVyPiwgcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewogICAgIC8vIFN1c3BlbmRhYmxlVGltZXIK
ICAgICB2b2lkIGZpcmVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRTdG9wKCkgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4gYWxpZ25lZEZpcmVUaW1l
KHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4gYWxpZ25lZEZpcmVUaW1lKHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHMpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0IEFQSS4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMmE5MzkzYWY4YjY4YmZlYmFh
MWQ2ZjBhYzRiNmNhZjhkZTY5Mjk3Yi4uZTQ1NzBlMTRmYWZkOWVmYjE5MzM2OTNmYTNlYmJkYzJj
NzRlNDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTUyMiw3ICsxNTIyLDcg
QEAgZG91YmxlIERPTVdpbmRvdzo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiAKIHZvaWQgRE9N
V2luZG93OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZU9yKDApLCBvcHRpb25zLnRv
cC52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlX29y
KDApLCBvcHRpb25zLnRvcC52YWx1ZV9vcigwKSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzY3Jv
bGxCeShkb3VibGUgeCwgZG91YmxlIHkpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRl
eCBjOWY5YmJjOTNhZDAzZTdhODVmZGZhMmMxYjZkNTdlYWZjYTczNGZhLi41OTViM2NlMjMxNTBh
ZTM3NjMyMWFmOWFlNzI1MmM0ZDE0MmY0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAg
LTM3MCw3ICszNzAsNyBAQCBjbGFzcyBET01XaW5kb3cgZmluYWwKIAogICAgIGJvb2wgbV9zaG91
bGRQcmludFdoZW5GaW5pc2hlZExvYWRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdXNwZW5k
ZWRGb3JEb2N1bWVudFN1c3BlbnNpb24geyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPGJvb2w+IG1f
Y2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2Nh
blNob3dNb2RhbERpYWxvZ092ZXJyaWRlOwogCiAgICAgSGFzaFNldDxET01XaW5kb3dQcm9wZXJ0
eSo+IG1fcHJvcGVydGllczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA0
NzQyMjg4MDcyY2U1YTVhMWViN2E5MDRmNTIxNTMzZjVlNTI0NWM3Li5kNTU1NWVkMmMwZmI1N2I5
NjNiN2I2MDAyMTk4NzE3MTI2ZjY1ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNw
cApAQCAtMjgwLDggKzI4MCw4IEBAIHZvaWQgRXZlbnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW0o
KQogICAgICAgICAgICAgbV9kaXNjYXJkVHJhaWxpbmdOZXdsaW5lID0gZmFsc2U7CiAgICAgICAg
IH0KIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGluZUxlbmd0aDsKLSAgICAgICAgT3B0
aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBsaW5lTGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExl
bmd0aDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcG9zaXRpb247ICFsaW5lTGVuZ3RoICYm
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9yZWNlaXZlQnVmZmVyW2ld
KSB7CiAgICAgICAgICAgICBjYXNlICc6JzoKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIEV2ZW50
U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtKCkKICAgICAgICAgbV9yZWNlaXZlQnVmZmVyLnJlbW92
ZSgwLCBwb3NpdGlvbik7CiB9CiAKLXZvaWQgRXZlbnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW1M
aW5lKHVuc2lnbmVkIHBvc2l0aW9uLCBPcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGgsIHVu
c2lnbmVkIGxpbmVMZW5ndGgpCit2b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGlu
ZSh1bnNpZ25lZCBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGgs
IHVuc2lnbmVkIGxpbmVMZW5ndGgpCiB7CiAgICAgaWYgKCFsaW5lTGVuZ3RoKSB7CiAgICAgICAg
IGlmICghbV9kYXRhLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAw
M2FlYzJiYjMxYjhhYWU1Mjk0YjZmNzk5ODQ2OGRkYjkxNmE5OGRkLi4yYmUzZjlmMWI3NWQzOWQ1
M2IyZmUzOTEyOTNmNThjYzBmMTgyNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBA
IC05Myw3ICs5Myw3IEBAIGNsYXNzIEV2ZW50U291cmNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8RXZlbnRTb3VyY2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoCiAgICAgdm9pZCBzY2hlZHVs
ZVJlY29ubmVjdCgpOwogICAgIHZvaWQgYWJvcnRDb25uZWN0aW9uQXR0ZW1wdCgpOwogICAgIHZv
aWQgcGFyc2VFdmVudFN0cmVhbSgpOwotICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5z
aWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExlbmd0aCwgdW5zaWduZWQg
bGluZUxlbmd0aCk7CisgICAgdm9pZCBwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3Np
dGlvbiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGgsIHVuc2lnbmVkIGxpbmVM
ZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoKTsKIAogICAgIGJvb2wgcmVz
cG9uc2VJc1ZhbGlkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCBhNjE5YTBiMjY1YTc2NzU0MDBmZDJlMjg5ZDYzMGZiZWQ5NTRm
NjIxLi42MWI4OGM5ZTcwZTFkZTUyZGMzMTY3ZmJiNjU0MmY3MWMxMjgxYjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmRl
dGFjaEN1c3RvbVNjcm9sbGJhcnMoKQogdm9pZCBGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkKIHsKICAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgb2xkT3Zlcmxh
eVN0eWxlID0gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7Ci0gICAgV1RGOjpPcHRpb25hbDxTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+IGNsaWVudE92ZXJsYXlTdHlsZSA9IGZyYW1lKCkucGFnZSgpID8g
ZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnByZWZlcnJlZFNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpIDogU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gY2xpZW50T3ZlcmxheVN0eWxlID0gZnJhbWUoKS5w
YWdlKCkgPyBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucHJlZmVycmVkU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkgOiBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OwogICAgIGlm
IChjbGllbnRPdmVybGF5U3R5bGUpIHsKICAgICAgICAgaWYgKGNsaWVudE92ZXJsYXlTdHlsZS52
YWx1ZSgpICE9IG9sZE92ZXJsYXlTdHlsZSkKICAgICAgICAgICAgIHNldFNjcm9sbGJhck92ZXJs
YXlTdHlsZShjbGllbnRPdmVybGF5U3R5bGUudmFsdWUoKSk7CkBAIC0xODMxLDcgKzE4MzEsNyBA
QCB2b2lkIEZyYW1lVmlldzo6c2V0QmFzZUxheW91dFZpZXdwb3J0T3JpZ2luKExheW91dFBvaW50
IG9yaWdpbiwgVHJpZ2dlckxheW91dE9yTgogICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNl
dExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9wdGlvbmFsPExheW91dFJlY3Q+IHJlY3QpCit2
b2lkIEZyYW1lVmlldzo6c2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qoc3RkOjpvcHRpb25h
bDxMYXlvdXRSZWN0PiByZWN0KQogewogICAgIGlmIChyZWN0ID09IG1fbGF5b3V0Vmlld3BvcnRP
dmVycmlkZVJlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTUxNTUsNyArNTE1NSw3IEBAIHZvaWQg
RnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzKFdpZGdldE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24p
CiAgICAgICAgIHdpZGdldC0+bm90aWZ5V2lkZ2V0KG5vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQg
RnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QpCit2b2lkIEZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgaWYgKG1fdmlld0V4cG9zZWRS
ZWN0ID09IHZpZXdFeHBvc2VkUmVjdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggODkzNDUxMDRhNjY5OWY3ZTUwYWM1ZTU4NzI5MmQxN2FjOGYzODBiNy4uZjg5
Nzg0MjdkYTg0NDY4NjA0YmMxNGU2MTMwZjM5MDg4OWZmNDYzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC0yNjMsNyArMjYzLDcgQEAgY2xhc3MgRnJhbWVWaWV3IGZpbmFsIDogcHVibGlj
IFNjcm9sbFZpZXcgewogICAgIAogICAgIC8vIElmIHNldCwgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0
ICJtX2xheW91dFZpZXdwb3J0T3JpZ2luLCBzaXplIG9mIGluaXRpYWwgY29udGFpbmluZyBibG9j
ayIgcmVjdC4KICAgICAvLyBVc2VkIHdpdGggZGVsZWdhdGVkIHNjcm9sbGluZyAoaS5lLiBpT1Mp
LgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qo
T3B0aW9uYWw8TGF5b3V0UmVjdD4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3Qoc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0Pik7CiAKICAgICAv
LyBUaGVzZSBhcmUgaW4gZG9jdW1lbnQgY29vcmRpbmF0ZXMsIHVuYWZmZWN0ZWQgYnkgem9vbWlu
Zy4KICAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRSZWN0IGxheW91dFZpZXdwb3J0UmVjdCgpIGNv
bnN0OwpAQCAtNTY5LDggKzU2OSw4IEBAIGNsYXNzIEZyYW1lVmlldyBmaW5hbCA6IHB1YmxpYyBT
Y3JvbGxWaWV3IHsKICAgICAvLyBvZiB0aGUgdmlldyBpcyBhY3R1YWxseSBleHBvc2VkIG9uIHNj
cmVlbiAodGFraW5nIGludG8gYWNjb3VudAogICAgIC8vIGNsaXBwaW5nIGJ5IG90aGVyIFVJIGVs
ZW1lbnRzKSwgd2hlcmVhcyB2aXNpYmxlQ29udGVudFJlY3QgaXMKICAgICAvLyBpbnRlcm5hbCB0
byBXZWJDb3JlIGFuZCBkb2Vzbid0IHJlc3BlY3QgdGhvc2UgdGhpbmdzLgotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4pOwotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92
aWV3RXhwb3NlZFJlY3Q7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdFeHBvc2Vk
UmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4pOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsg
fQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHVwZGF0ZVNuYXBPZmZz
ZXRzKCkgb3ZlcnJpZGU7CkBAIC03ODYsMTAgKzc4NiwxMCBAQCBjbGFzcyBGcmFtZVZpZXcgZmlu
YWwgOiBwdWJsaWMgU2Nyb2xsVmlldyB7CiAKICAgICBib29sIG1fc2hvdWxkVXBkYXRlV2hpbGVP
ZmZzY3JlZW47CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX3ZpZXdFeHBvc2VkUmVjdDsKICAgICAKICAg
ICBMYXlvdXRQb2ludCBtX2xheW91dFZpZXdwb3J0T3JpZ2luOwotICAgIE9wdGlvbmFsPExheW91
dFJlY3Q+IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRSZWN0PiBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0OwogCiAgICAgdW5zaWduZWQg
bV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQ7CiAgICAgYm9vbCBtX3NldE5lZWRzTGF5b3V0V2Fz
RGVmZXJyZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhZTk2NjA4MTFiNDM5MGVjN2RkYmI1Njhi
ZmM2NWRmNDFjNWU5YzFkLi41ZmUyMWU3MmQ0NGNhNjIyODJmNzg1MmFjMThmOWI3ZjY0NTc2ZWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU1Myw3ICs1NTMsNyBAQCBib29sIFBhZ2U6OnNob3dB
bGxQbHVnaW5zKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBPcHRpb25h
bDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gIFBhZ2U6OnRh
a2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERvY3VtZW50Jj4+ICBQYWdlOjp0YWtlQW55TWVk
aWFDYW5TdGFydExpc3RlbmVyKCkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAg
ICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQpAQCAtNTYxLDcgKzU2MSw3IEBAIGlubGluZSBP
cHRpb25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gIFBh
Z2U6OnRha2VBbnlNZWRpCiAgICAgICAgIGlmIChNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIGxpc3Rl
bmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKSkK
ICAgICAgICAgICAgIHJldHVybiB7IHsgKmxpc3RlbmVyLCAqZnJhbWUtPmRvY3VtZW50KCkgfSB9
OwogICAgIH0KLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB2b2lkIFBhZ2U6OnNldENhblN0YXJ0TWVkaWEoYm9vbCBjYW5TdGFydE1lZGlhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCAyMDBhYjM5NmUzN2Y3OTY4NjRkMGU0NjAyNGFjMWU4NWZiZjk4MGY2Li4y
MjgzNGZmNzAzYmY4ODFkNmMyODdjOWRkYjM2ZWQ2ZGVlMTI0YjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtNTQxLDggKzU0MSw4IEBAIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFn
ZT4gewogICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQ7IH0KICAgICB2b2lkIHNldFJlc291cmNlQ2FjaGlu
Z0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpIHsgbV9yZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCA9IGRp
c2FibGVkOyB9CiAKLSAgICBPcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gZXZlbnRU
aHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRUaHJvdHRs
aW5nQmVoYXZpb3JPdmVycmlkZTsgfQotICAgIHZvaWQgc2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZp
b3JPdmVycmlkZShPcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gdGhyb3R0bGluZykg
eyBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUgPSB0aHJvdHRsaW5nOyB9CisgICAg
c3RkOjpvcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gZXZlbnRUaHJvdHRsaW5nQmVo
YXZpb3JPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JP
dmVycmlkZTsgfQorICAgIHZvaWQgc2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShz
dGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB0aHJvdHRsaW5nKSB7IG1fZXZl
bnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSA9IHRocm90dGxpbmc7IH0KIAogcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRHcm91cCgpOwpAQCAtNTYyLDcgKzU2Miw3IEBA
IGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewogCiAgICAgdW5zaWdu
ZWQgZmluZE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50LCBTaG91bGRIaWdobGlnaHRNYXRjaGVzLCBTaG91bGRNYXJrTWF0Y2hl
cyk7CiAKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9j
dW1lbnQmPj4gdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOworICAgIHN0ZDo6b3B0aW9u
YWw8c3RkOjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERvY3VtZW50Jj4+IHRha2VBbnlN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAogICAgIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+
PiBwbHVnaW5WaWV3cygpOwogCkBAIC03MzcsNyArNzM3LDcgQEAgY2xhc3MgUGFnZSA6IHB1Ymxp
YyBTdXBwbGVtZW50YWJsZTxQYWdlPiB7CiAgICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
biBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOjpMVFIgfTsKICAgICAKICAgICAvLyBGb3IgdGVzdGluZy4KLSAgICBPcHRpb25hbDxF
dmVudFRocm90dGxpbmdCZWhhdmlvcj4gbV9ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IG1fZXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3JPdmVycmlkZTsKIH07CiAKIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdy
b3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsVG9PcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9sbFRvT3B0aW9ucy5oCmluZGV4IGM5ODk5ZDc5NWFh
NWY0NjU0M2QzMzY3MzA3NTQyNzNkZjk5ZTIxZGYuLjg0YTlkOWRkYjI4MDVkN2YyYjM5NDM3NjRh
MzE5MGE5Y2NmNWQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsVG9P
cHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TY3JvbGxUb09wdGlvbnMuaApAQCAt
MzMsOCArMzMsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Nyb2xsVG9PcHRp
b25zIHsKLSAgICBPcHRpb25hbDxkb3VibGU+IGxlZnQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB0
b3A7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHRvcDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
aW5kZXggN2EyMWQ1YmIyMTk2ZTc4Y2RlODU2MjhmZGJmYmFlNDBlNDliMTM0Yy4uYjI1OWZmYWY2
NzY1ZDQ1NWRlNDU0YjRkMzk0ODBiMDhhNjIxOGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJp
dHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgbV9kb21haW4gPSBtX2hvc3Q7CiAKICAgICBp
ZiAobV9wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUoKSwgbV9w
cm90b2NvbCkpCi0gICAgICAgIG1fcG9ydCA9IE51bGxvcHQ7CisgICAgICAgIG1fcG9ydCA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmln
aW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KICAgICBtX2NhbkxvYWRMb2NhbFJlc291cmNl
cyA9IGlzTG9jYWwoKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5n
KQogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgb3JpZ2luU3Ry
aW5nKSk7CiB9CiAKLVJlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQx
Nl90PiBwb3J0KQorUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1
aW50MTZfdD4gcG9ydCkKIHsKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2Nh
cGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBw
cm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oCmluZGV4IDg1Y2YzMzIxM2UzMTEyODVlNzc0MTY4YmUxYTJmOTcwMmM2Y2ZjZmUuLjE4
Y2IxODhkYTcwZDMxYWQ2ODFmMzM4N2YxNDI4Mzg1YzY5OGE2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW4g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKICAgICBzdGF0
aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVVbmlxdWUoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlP
cmlnaW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3Qs
IHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpOwogCiAgICAgLy8gU29tZSBVUkwgc2NoZW1l
cyB1c2UgbmVzdGVkIFVSTHMgZm9yIHRoZWlyIHNlY3VyaXR5IGNvbnRleHQuIEZvciBleGFtcGxl
LAogICAgIC8vIGZpbGVzeXN0ZW0gVVJMcyBsb29rIGxpa2UgdGhlIGZvbGxvd2luZzoKQEAgLTgx
LDcgKzgxLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKICAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29u
c3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQogICAgIGNvbnN0IFN0cmluZyYgaG9zdCgpIGNvbnN0
IHsgcmV0dXJuIG1faG9zdDsgfQogICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb21haW47IH0KLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25z
dCB7IHJldHVybiBtX3BvcnQ7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIGdpdmVuIFVS
TCBpcyBzZWN1cmUsIGJhc2VkIGVpdGhlciBkaXJlY3RseSBvbiBpdHMKICAgICAvLyBvd24gcHJv
dG9jb2wsIG9yLCB3aGVuIHJlbGV2YW50LCBvbiB0aGUgcHJvdG9jb2wgb2YgaXRzICJpbm5lciBV
UkwiCkBAIC0yMTgsNyArMjE4LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKICAgICBTdHJpbmcgbV9ob3N0Owog
ICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICBTdHJpbmcgbV9maWxlUGF0aDsKLSAgICBPcHRpb25h
bDx1aW50MTZfdD4gbV9wb3J0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IG1fcG9ydDsK
ICAgICBib29sIG1faXNVbmlxdWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91bml2ZXJzYWxBY2Nl
c3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kb21haW5XYXNTZXRJbkRPTSB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggNzQzNjkwZWE4
NGFlMmRhNjIxMDkzMzYxNmRmODg0YmNjZjAwYTRjYy4uMjRhOWQ0M2ZmNzdlMTVhZDczNzEwYTg0
ZWExNWJiMWYwOThiZmJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcApAQCAtNTAsNyArNTAsNyBAQCBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mCiAjaWYgIUxP
R19ESVNBQkxFRAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVidWdTdHJpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAiOi8vIiwgaG9zdCwgIjoiLCBT
dHJpbmc6Om51bWJlcihwb3J0LnZhbHVlT3IoMCkpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhw
cm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigw
KSkpOwogfQogI2VuZGlmCiAKQEAgLTkyLDM3ICs5MiwzNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmln
aW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBjb25zdAogICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZW5jb2Rl
Rm9yRmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNo
YXJhY3Rlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZU9yKDAp
KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihwb3J0LnZhbHVlX29yKDApKTsKICAg
ICAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCi1PcHRpb25hbDxT
ZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7CiAgICAgLy8gTWFrZSBzdXJl
IHRoZXJlJ3MgYSBmaXJzdCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFi
YXNlSWRlbnRpZmllci5maW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRv
cjEgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgc2Vjb25kIHNl
cGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IyID0gZGF0YWJhc2VJZGVudGlmaWVyLnJldmVy
c2VGaW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjIgPT0gbm90Rm91
bmQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIC8vIEVuc3VyZSB0aGVyZSB3ZXJlIGF0IGxlYXN0IDIgc2VwYXJhdG9yIGNo
YXJhY3RlcnMuIFNvbWUgaG9zdG5hbWVzIG9uIGludHJhbmV0cyBoYXZlCiAgICAgLy8gdW5kZXJz
Y29yZXMgaW4gdGhlbSwgc28gd2UnbGwgYXNzdW1lIHRoYXQgYW55IGFkZGl0aW9uYWwgdW5kZXJz
Y29yZXMgYXJlIHBhcnQgb2YgdGhlIGhvc3QuCiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gc2VwYXJh
dG9yMikKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0IHNlY3Rpb24gaXMgYSB2YWxpZCBw
b3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0CiAgICAgYm9vbCBwb3J0T2theTsKICAgICBpbnQg
cG9ydCA9IGRhdGFiYXNlSWRlbnRpZmllci5yaWdodChkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3Ro
KCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBvcnRPa2F5KTsKICAgICBib29sIHBvcnRBYnNl
bnQgPSAoc2VwYXJhdG9yMiA9PSBkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSAxKTsKICAg
ICBpZiAoIShwb3J0T2theSB8fCBwb3J0QWJzZW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKHBvcnQgPCAwIHx8
IHBvcnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJl
dHVybiBTZWN1cml0eU9yaWdpbkRhdGEge2RhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwg
c2VwYXJhdG9yMSksIGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEs
IHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSksIHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0
KX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCA5Nzli
NDJmZjkwNDRlMmQ1YWM0NmNhNmEwZGY0NDk2ZjNkY2QyZWM5Li4yMTBhNDllYTRkM2QzNWQ1N2Vi
ZmIyZTUzMzRlYjU3MjE3ODU0YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIHN0cnVj
dCBTZWN1cml0eU9yaWdpbkRhdGEgewogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSgpID0gZGVmYXVs
dDsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3Qg
U3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKKyAgICBTZWN1cml0eU9yaWdp
bkRhdGEoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0KQogICAgICAgICA6IHByb3RvY29sKHByb3RvY29sKQogICAg
ICAgICAsIGhvc3QoaG9zdCkKICAgICAgICAgLCBwb3J0KHBvcnQpCkBAIC01NSwyMSArNTUsMjEg
QEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAKICAgICBTdHJpbmcgcHJvdG9jb2w7CiAg
ICAgU3RyaW5nIGhvc3Q7Ci0gICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQ7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MTZfdD4gcG9ydDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5T3Jp
Z2luRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2Vj
dXJpdHkgb3JpZ2luIHRvIGEgc3RyaW5nIHRoYXQgY291bGQgYmUgdXNlZCBhcyBwYXJ0IG9mCiAg
ICAgLy8gZmlsZSBuYW1lcy4gVGhpcyBmb3JtYXQgc2hvdWxkIGJlIHVzZWQgaW4gc3RvcmFnZSBB
UElzIG9ubHkuCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllcigp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxTZWN1cml0eU9yaWdp
bkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFNlY3VyaXR5T3JpZ2luRGF0
YSYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBw
cm90b2NvbC5pc051bGwoKSAmJiBob3N0LmlzTnVsbCgpICYmIHBvcnQgPT0gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHByb3RvY29sLmlzTnVsbCgpICYmIGhvc3QuaXNOdWxsKCkgJiYgcG9ydCA9
PSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdApAQCAtMTE3LDcgKzExNyw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGFIYXNoIHsKICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewogICAgICAgICAgICAg
ZGF0YS5wcm90b2NvbC5pbXBsKCkgPyBkYXRhLnByb3RvY29sLmltcGwoKS0+aGFzaCgpIDogMCwK
ICAgICAgICAgICAgIGRhdGEuaG9zdC5pbXBsKCkgPyBkYXRhLmhvc3QuaW1wbCgpLT5oYXNoKCkg
OiAwLAotICAgICAgICAgICAgZGF0YS5wb3J0LnZhbHVlT3IoMCkKKyAgICAgICAgICAgIGRhdGEu
cG9ydC52YWx1ZV9vcigwKQogICAgICAgICB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVy
OjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4IDUwZWIyOTU2ZjIzYjdjZjEy
ZWNiOTBjZjc2ZmQ4Yjk4MWVhM2I1NWEuLmI3YTVhZWZlZGExYjZkZWZkNzJhOWJlN2M2YmEyMDYy
ZTFiZDJkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5I
YXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAt
NDAsNyArNDAsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNoIHsKICAgICAgICAgdW5zaWdu
ZWQgaGFzaENvZGVzWzNdID0gewogICAgICAgICAgICAgb3JpZ2luLT5wcm90b2NvbCgpLmltcGwo
KSA/IG9yaWdpbi0+cHJvdG9jb2woKS5pbXBsKCktPmhhc2goKSA6IDAsCiAgICAgICAgICAgICBv
cmlnaW4tPmhvc3QoKS5pbXBsKCkgPyBvcmlnaW4tPmhvc3QoKS5pbXBsKCktPmhhc2goKSA6IDAs
Ci0gICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApCisgICAgICAgICAgICBvcmln
aW4tPnBvcnQoKS52YWx1ZV9vcigwKQogICAgICAgICB9OwogICAgICAgICByZXR1cm4gU3RyaW5n
SGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggN2M3NmFlMTI4MjA4Zjg0
M2NlNzI3ZDRjNmUxYjRhNmUzNmI5NWY1My4uYjhhZGNiNDQ5NDJmYTVlYmJlNWFiNWQ3MTU0MTky
ODI3MDBmMTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTM2
LDggKzM2LDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IERpYWxvZ0ZlYXR1cmVzTWFwOwogc3RhdGljIHZvaWQgc2V0V2luZG93RmVh
dHVyZShXaW5kb3dGZWF0dXJlcyYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlKTsK
IAogc3RhdGljIERpYWxvZ0ZlYXR1cmVzTWFwIHBhcnNlRGlhbG9nRmVhdHVyZXNNYXAoY29uc3Qg
U3RyaW5nJik7Ci1zdGF0aWMgT3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9n
RmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXkpOwotc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBm
bG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZs
b2F0IG1pbiwgZmxvYXQgbWF4KTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0
dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwgY29uc3QgY2hhcioga2V5KTsKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAm
LCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KTsKIAogc3RhdGljIGJvb2wg
aXNTZXBhcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQogewpAQCAtMTU4LDggKzE1OCw4IEBAIFdpbmRv
d0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJl
c1N0cmluZywgY29uc3QgRmxvCiAgICAgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlID0gZmFs
c2U7CiAgICAgZmVhdHVyZXMuZGlhbG9nID0gdHJ1ZTsKIAotICAgIGZsb2F0IHdpZHRoID0gZmxv
YXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJs
ZVJlY3Qud2lkdGgoKSkudmFsdWVPcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZy
YW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCi0gICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0
dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0
LmhlaWdodCgpKS52YWx1ZU9yKDQ1MCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUg
c2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBmbG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShm
ZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRoIiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRo
KCkpLnZhbHVlX29yKDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBv
ZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkp
LnZhbHVlX29yKDQ1MCk7IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBk
aWFsb2cgaW4gTWFjSUUKIAogICAgIGZlYXR1cmVzLndpZHRoID0gd2lkdGg7CiAgICAgZmVhdHVy
ZXMuaGVpZ2h0ID0gaGVpZ2h0OwpAQCAtMTY3LDI1ICsxNjcsMjUgQEAgV2luZG93RmVhdHVyZXMg
cGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBj
b25zdCBGbG8KICAgICBmZWF0dXJlcy54ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlh
bG9nbGVmdCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1h
eFgoKSAtIHdpZHRoKTsKICAgICBmZWF0dXJlcy55ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFw
LCAiZGlhbG9ndG9wIiwgc2NyZWVuQXZhaWxhYmxlUmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJl
Y3QubWF4WSgpIC0gaGVpZ2h0KTsKIAotICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwg
ImNlbnRlciIpLnZhbHVlT3IodHJ1ZSkpIHsKKyAgICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNN
YXAsICJjZW50ZXIiKS52YWx1ZV9vcih0cnVlKSkgewogICAgICAgICBpZiAoIWZlYXR1cmVzLngp
CiAgICAgICAgICAgICBmZWF0dXJlcy54ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC54KCkgKyAoc2Ny
ZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpIC0gd2lkdGgpIC8gMjsKICAgICAgICAgaWYgKCFmZWF0
dXJlcy55KQogICAgICAgICAgICAgZmVhdHVyZXMueSA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueSgp
ICsgKHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkgLSBoZWlnaHQpIC8gMjsKICAgICB9CiAK
LSAgICBmZWF0dXJlcy5yZXNpemFibGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6
YWJsZSIpLnZhbHVlT3IoZmFsc2UpOwotICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0g
Ym9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZU9yKHRydWUpOwotICAgIGZl
YXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1
cyIpLnZhbHVlT3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJl
KGZlYXR1cmVzTWFwLCAicmVzaXphYmxlIikudmFsdWVfb3IoZmFsc2UpOworICAgIGZlYXR1cmVz
LnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52
YWx1ZV9vcih0cnVlKTsKKyAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1
cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1ZV9vcihmYWxzZSk7CiAKICAgICByZXR1cm4g
ZmVhdHVyZXM7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxib29sPiBib29sRmVhdHVyZShjb25zdCBE
aWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0
dXJlcywgY29uc3QgY2hhcioga2V5KQogewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtl
eSk7CiAgICAgaWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHZhbHVlID0gaXQt
PnZhbHVlOwogICAgIHJldHVybiB2YWx1ZS5pc051bGwoKQpAQCAtMTk0LDE4ICsxOTQsMTggQEAg
c3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFw
JiBmZWF0dXJlcywgY29uc3QgY2hhcioKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodmFsdWUsICJvbiIpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZsb2F0
RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtl
eSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxv
YXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhciog
a2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCkKIHsKICAgICBhdXRvIGl0ID0gZmVhdHVyZXMuZmlu
ZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJlcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogVGhl
IHRvRG91YmxlIGZ1bmN0aW9uIGRvZXMgbm90IG9mZmVyIGEgd2F5IHRvIHRlbGwgIjBxIiBmcm9t
IHN0cmluZyB3aXRoIG5vIGRpZ2l0cyBpbiBpdDogQm90aAogICAgIC8vIHJldHVybiB0aGUgbnVt
YmVyIDAgYW5kIGZhbHNlIGZvciBvay4gQnV0ICIwcSIgc2hvdWxkIHlpZWxkIHRoZSBtaW5pbXVt
IHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0LgogICAgIGJvb2wgb2s7CiAgICAgZG91YmxlIHBhcnNl
ZE51bWJlciA9IGl0LT52YWx1ZS50b0RvdWJsZSgmb2spOwogICAgIGlmICgoIXBhcnNlZE51bWJl
ciAmJiAhb2spIHx8IHN0ZDo6aXNuYW4ocGFyc2VkTnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHBhcnNlZE51bWJl
ciA8IG1pbiB8fCBtYXggPD0gbWluKQogICAgICAgICByZXR1cm4gbWluOwogICAgIGlmIChwYXJz
ZWROdW1iZXIgPiBtYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0Zl
YXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmgKaW5kZXggZTAw
NTQ1ZTJlYjg5ZWE0Y2YyOWVhZDQ0ZGMzMjc0ODQxNDBhMjk4Yi4uZDQ2YTc1YTAyMDY1MzJmNmJh
ODAwMjY5Njk0NDZjOGEyYmZiNmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9X
aW5kb3dGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMu
aApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UmVj
dDsKIAogc3RydWN0IFdpbmRvd0ZlYXR1cmVzIHsKLSAgICBPcHRpb25hbDxmbG9hdD4geDsKLSAg
ICBPcHRpb25hbDxmbG9hdD4geTsKLSAgICBPcHRpb25hbDxmbG9hdD4gd2lkdGg7Ci0gICAgT3B0
aW9uYWw8ZmxvYXQ+IGhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB4OworICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IHk7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGg7Cisg
ICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gaGVpZ2h0OwogCiAgICAgYm9vbCBtZW51QmFyVmlzaWJs
ZSB7IHRydWUgfTsKICAgICBib29sIHN0YXR1c0JhclZpc2libGUgeyB0cnVlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
LmNwcAppbmRleCBlYTZmZjkyZDI0MWE1MGY3NTdjNTc4OTY4YzUyMmE2OTEwMzM2ZjdiLi5jODMy
NmRmZjQ1NDI1OWQ1YmJjM2QzZjgzMTk3MDcwZGZhYmM5NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYg
aG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBo
b3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJkKQorQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhv
c3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9v
bCBob3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJkKQogICAgIDogbV9wb2xpY3ko
cG9saWN5KQogICAgICwgbV9zY2hlbWUoc2NoZW1lKQogICAgICwgbV9ob3N0KGhvc3QpCkBAIC04
Niw3ICs4Niw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0TWF0Y2hl
cyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBpZiAobV9wb3J0SGFzV2lsZGNhcmQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9y
dCgpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwogCiAg
ICAgaWYgKHBvcnQgPT0gbV9wb3J0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgKaW5k
ZXggYWJhYWU5NjM0ODYzZjNlMGU4ODBmMzI0NWUwMTgwZGNlNDIxYTVlNi4uMjhhMWE2ODMwZmU5
OTliYTEwMmIyZDUxNWJjNDEwYTYwMzQxYjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgVVJMOwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiwgY29uc3QgU3RyaW5nJiBzY2hl
bWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0IFN0
cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJkKTsK
KyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5JiwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxk
Y2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQpOwogCiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVS
TCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSBmYWxzZSkgY29uc3Q7CiAKQEAg
LTUwLDcgKzUwLDcgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlIHsKICAgICBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIG1fcG9saWN5OwogICAgIFN0cmluZyBtX3NjaGVt
ZTsKICAgICBTdHJpbmcgbV9ob3N0OwotICAgIE9wdGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0OwogICAgIFN0cmluZyBtX3BhdGg7CiAK
ICAgICBib29sIG1faG9zdEhhc1dpbGRjYXJkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCAw
OTYzZjQyOTMxOTBjNDRhZGE4YTkzZTA1NDA0NzBhMDI4ZGNjY2NkLi41ZDUxZjY4ZTA4MDljYjg0
NWZmMzc1MTU5YTYwMTRhMjViNDkxNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMTcz
LDcgKzE3Myw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2Uo
Y29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kCiAgICAgICAgIHNraXBXaGlsZTxV
Q2hhciwgaXNTb3VyY2VDaGFyYWN0ZXI+KHBvc2l0aW9uLCBlbmQpOwogCiAgICAgICAgIFN0cmlu
ZyBzY2hlbWUsIGhvc3QsIHBhdGg7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0OwogICAgICAgICBib29sIGhvc3RI
YXNXaWxkY2FyZCA9IGZhbHNlOwogICAgICAgICBib29sIHBvcnRIYXNXaWxkY2FyZCA9IGZhbHNl
OwogCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0OjpwYXJzZShjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQKIC8vICAgICAg
ICAgICAgICAgICAgIC8gKCBbIHNjaGVtZSAiOi8vIiBdIGhvc3QgWyBwb3J0IF0gWyBwYXRoIF0g
KQogLy8gICAgICAgICAgICAgICAgICAgLyAiJ3NlbGYnIgogLy8KLWJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25z
dCBVQ2hhciogZW5kLCBTdHJpbmcmIHNjaGVtZSwgU3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50
MTZfdD4mIHBvcnQsIFN0cmluZyYgcGF0aCwgYm9vbCYgaG9zdEhhc1dpbGRjYXJkLCBib29sJiBw
b3J0SGFzV2lsZGNhcmQpCitib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBh
cnNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5nJiBz
Y2hlbWUsIFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4mIHBvcnQsIFN0cmlu
ZyYgcGF0aCwgYm9vbCYgaG9zdEhhc1dpbGRjYXJkLCBib29sJiBwb3J0SGFzV2lsZGNhcmQpCiB7
CiAgICAgaWYgKGJlZ2luID09IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkyLDcg
KzI5Miw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3Vy
Y2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghYmVnaW5Qb3J0KQotICAgICAgICBwb3J0ID0gTnVsbG9wdDsKKyAgICAgICAg
cG9ydCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCFwYXJzZVBvcnQo
YmVnaW5Qb3J0LCBiZWdpblBhdGgsIHBvcnQsIHBvcnRIYXNXaWxkY2FyZCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zOTQsNyArMzk0LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0OjpwYXJzZVBhdGgoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hh
cioKIAogLy8gcG9ydCAgICAgICAgICAgICAgPSAiOiIgKCAxKkRJR0lUIC8gIioiICkKIC8vCi1i
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlUG9ydChjb25zdCBVQ2hh
ciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIE9wdGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgYm9v
bCYgcG9ydEhhc1dpbGRjYXJkKQorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
OjpwYXJzZVBvcnQoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBzdGQ6Om9w
dGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKQogewogICAgIEFT
U0VSVChiZWdpbiA8PSBlbmQpOwogICAgIEFTU0VSVCghcG9ydCk7CkBAIC00MDcsNyArNDA3LDcg
QEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZVBvcnQoY29uc3Qg
VUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhcioKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIGlmIChlbmQgLSBiZWdpbiA9PSAxICYmICpiZWdpbiA9PSAnKicpIHsKLSAgICAgICAgcG9y
dCA9IE51bGxvcHQ7CisgICAgICAgIHBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHBvcnRI
YXNXaWxkY2FyZCA9IHRydWU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3QuaAppbmRleCBiZmViODU0NWRkOTkyYjMxYmE1YTg5OWZmYWE2MDI1OTg4MWE3ZTExLi4w
NGRjMjljMzNmNGNhYzEwYTkxODc5MDJhMjI2NWE5N2E5Mzg1OGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5oCkBAIC01OCwxMCArNTgsMTAgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdCB7CiBwcml2YXRlOgogICAgIHZvaWQgcGFyc2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25z
dCBVQ2hhciogZW5kKTsKIAotICAgIGJvb2wgcGFyc2VTb3VyY2UoY29uc3QgVUNoYXIqIGJlZ2lu
LCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcmIHNjaGVtZSwgU3RyaW5nJiBob3N0LCBPcHRpb25h
bDx1aW50MTZfdD4mIHBvcnQsIFN0cmluZyYgcGF0aCwgYm9vbCYgaG9zdEhhc1dpbGRjYXJkLCBi
b29sJiBwb3J0SGFzV2lsZGNhcmQpOworICAgIGJvb2wgcGFyc2VTb3VyY2UoY29uc3QgVUNoYXIq
IGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcmIHNjaGVtZSwgU3RyaW5nJiBob3N0LCBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgU3RyaW5nJiBwYXRoLCBib29sJiBob3N0SGFz
V2lsZGNhcmQsIGJvb2wmIHBvcnRIYXNXaWxkY2FyZCk7CiAgICAgYm9vbCBwYXJzZVNjaGVtZShj
b25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIFN0cmluZyYgc2NoZW1lKTsKICAg
ICBib29sIHBhcnNlSG9zdChjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIFN0
cmluZyYgaG9zdCwgYm9vbCYgaG9zdEhhc1dpbGRjYXJkKTsKLSAgICBib29sIHBhcnNlUG9ydChj
b25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIE9wdGlvbmFsPHVpbnQxNl90PiYg
cG9ydCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKTsKKyAgICBib29sIHBhcnNlUG9ydChjb25zdCBV
Q2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+JiBw
b3J0LCBib29sJiBwb3J0SGFzV2lsZGNhcmQpOwogICAgIGJvb2wgcGFyc2VQYXRoKGNvbnN0IFVD
aGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwgU3RyaW5nJiBwYXRoKTsKIAogICAgIGJvb2wg
cGFyc2VOb25jZVNvdXJjZShjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA4NWE2NDcyZWNlMjExZmYyMDA4MGQzN2E1MmVhZTE5
MGE5MTA5NzQwLi4yMmFiMGVjNzY2YTJhNmRmMzVjY2NkOGQ3MzIzNzRlMDU3YmQwZmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyYgZnJh
bWVWaWV3CiAKICAgICBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LmluUHJv
Z3JhbW1hdGljU2Nyb2xsKCk7CiAgICAgaWYgKGlzUHJvZ3JhbW1hdGljU2Nyb2xsIHx8IGZyYW1l
Vmlldy5mcmFtZSgpLmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5v
dEluUGFnZUNhY2hlKQotICAgICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3Jv
bGwoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSwgc2Nyb2xsUG9zaXRpb24sIE51bGxvcHQsIGlz
UHJvZ3JhbW1hdGljU2Nyb2xsLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpOwor
ICAgICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LnNj
cm9sbExheWVySUQoKSwgc2Nyb2xsUG9zaXRpb24sIHN0ZDo6bnVsbG9wdCwgaXNQcm9ncmFtbWF0
aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CiAKICAgICAvLyBJ
ZiB0aGlzIGZyYW1lIHZpZXcncyBkb2N1bWVudCBpcyBiZWluZyBwdXQgaW50byB0aGUgcGFnZSBj
YWNoZSwgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUgb3VyCiAgICAgLy8gbWFpbiBmcmFtZSBzY3Jv
bGwgcG9zaXRpb24uIEp1c3QgbGV0IHRoZSBGcmFtZVZpZXcgdGhpbmsgdGhhdCB3ZSBkaWQuCkBA
IC0yMzUsNyArMjM1LDcgQEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0
U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNj
cm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25z
dCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4m
IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQordm9pZCBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBz
Y3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmll
d3BvcnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAgICAgU2NoZWR1bGVk
U2Nyb2xsVXBkYXRlIHNjcm9sbFVwZGF0ZShub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRW
aWV3cG9ydE9yaWdpbiwgcHJvZ3JhbW1hdGljU2Nyb2xsLCBzY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uKTsKICAgICAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBGcmFtZVZpZXcqIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZvclNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlE
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBz
Y3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBPcHRpb25h
bDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3Jv
bGwsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbikKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRp
b25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQsIGNvbnN0
IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxh
eW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTM0OSwxMyArMzQ5LDEzIEBAIHZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb25jaWxlU2Nyb2xsaW5nU3RhdGUoRnJhbWVWaWV3JiBm
cmFtZVZpZXcsIGNvCiAgICAgYm9vbCBvbGRQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXcu
aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKTsKICAgICBmcmFtZVZpZXcuc2V0SW5Qcm9ncmFtbWF0aWNT
Y3JvbGwocHJvZ3JhbW1hdGljU2Nyb2xsKTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbGF5
b3V0Vmlld3BvcnRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRWaWV3
cG9ydFJlY3Q7CiAKICAgICBXVEY6OnN3aXRjaE9uKGxheW91dFZpZXdwb3J0T3JpZ2luT3JPdmVy
cmlkZVJlY3QsCi0gICAgICAgIFsmZnJhbWVWaWV3XShPcHRpb25hbDxGbG9hdFBvaW50PiBvcmln
aW4pIHsKKyAgICAgICAgWyZmcmFtZVZpZXddKHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gb3Jp
Z2luKSB7CiAgICAgICAgICAgICBpZiAob3JpZ2luKQogICAgICAgICAgICAgICAgIGZyYW1lVmll
dy5zZXRCYXNlTGF5b3V0Vmlld3BvcnRPcmlnaW4oTGF5b3V0UG9pbnQob3JpZ2luLnZhbHVlKCkp
LCBGcmFtZVZpZXc6OlRyaWdnZXJMYXlvdXRPck5vdDo6Tm8pOwotICAgICAgICB9LCBbJmZyYW1l
VmlldywgJmxheW91dFZpZXdwb3J0UmVjdCwgaW5TdGFibGVTdGF0ZSwgdmlzdWFsVmlld3BvcnRF
bmFibGVkID0gdmlzdWFsVmlld3BvcnRFbmFibGVkKCldKE9wdGlvbmFsPEZsb2F0UmVjdD4gb3Zl
cnJpZGVSZWN0KSB7CisgICAgICAgIH0sIFsmZnJhbWVWaWV3LCAmbGF5b3V0Vmlld3BvcnRSZWN0
LCBpblN0YWJsZVN0YXRlLCB2aXN1YWxWaWV3cG9ydEVuYWJsZWQgPSB2aXN1YWxWaWV3cG9ydEVu
YWJsZWQoKV0oc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlUmVjdCkgewogICAgICAg
ICAgICAgbGF5b3V0Vmlld3BvcnRSZWN0ID0gb3ZlcnJpZGVSZWN0OwogICAgICAgICAgICAgaWYg
KG92ZXJyaWRlUmVjdCAmJiBpblN0YWJsZVN0YXRlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZp
c3VhbFZpZXdwb3J0RW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA2ZDMwOGE1OTRmZjQ5
NDY2ODJlMTMyYWMxOWEzMzJjMzI1MDI2Mjk4Li4xZDIyYWY2ZDMxMDI2ODNkM2ViYmM2MmE5OTlm
OWFkZmEzMTU5NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNz
IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IgOiBwdWJsaWMgU2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
ewogCiAgICAgdm9pZCBzY3JvbGxpbmdTdGF0ZVRyZWVQcm9wZXJ0aWVzQ2hhbmdlZCgpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBPcHRp
b25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGlj
U2Nyb2xsLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9s
bGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQ
b2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05v
ZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4KTsK
QEAgLTczLDcgKzczLDcgQEAgY2xhc3MgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciA6IHB1Ymxp
YyBTY3JvbGxpbmdDb29yZGluYXRvciB7CiAKICAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+
IHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkgeyByZXR1cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUp
OyB9CiAKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3Jv
bGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlv
dXRWaWV3cG9ydE9yaWdpbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb24pOworICAgIHZvaWQgdXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5j
U2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIHN0ZDo6b3B0aW9uYWw8
RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xs
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHdpbGxDb21taXRUcmVlKCkgb3ZlcnJpZGU7CkBAIC0xMzIsNyArMTMy
LDcgQEAgY2xhc3MgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciA6IHB1YmxpYyBTY3JvbGxpbmdD
b29yZGluYXRvciB7CiAKICAgICBzdHJ1Y3QgU2NoZWR1bGVkU2Nyb2xsVXBkYXRlIHsKICAgICAg
ICAgU2NoZWR1bGVkU2Nyb2xsVXBkYXRlKCkgPSBkZWZhdWx0OwotICAgICAgICBTY2hlZHVsZWRT
Y3JvbGxVcGRhdGUoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGluZ05vZGVJRCwgRmxvYXRQb2ludCBw
b2ludCwgT3B0aW9uYWw8RmxvYXRQb2ludD4gdmlld3BvcnRPcmlnaW4sIGJvb2wgaXNQcm9ncmFt
bWF0aWMsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gdWRwYXRlQWN0aW9uKQorICAgICAg
ICBTY2hlZHVsZWRTY3JvbGxVcGRhdGUoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGluZ05vZGVJRCwg
RmxvYXRQb2ludCBwb2ludCwgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiB2aWV3cG9ydE9yaWdp
biwgYm9vbCBpc1Byb2dyYW1tYXRpYywgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiB1ZHBh
dGVBY3Rpb24pCiAgICAgICAgICAgICA6IG5vZGVJRChzY3JvbGxpbmdOb2RlSUQpCiAgICAgICAg
ICAgICAsIHNjcm9sbFBvc2l0aW9uKHBvaW50KQogICAgICAgICAgICAgLCBsYXlvdXRWaWV3cG9y
dE9yaWdpbih2aWV3cG9ydE9yaWdpbikKQEAgLTE0Miw3ICsxNDIsNyBAQCBjbGFzcyBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVibGljIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIHsKIAogICAg
ICAgICBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEIHsgMCB9OwogICAgICAgICBGbG9hdFBvaW50IHNj
cm9sbFBvc2l0aW9uOwotICAgICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9y
dE9yaWdpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9y
dE9yaWdpbjsKICAgICAgICAgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCB7IGZhbHNlIH07CiAg
ICAgICAgIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gdXBkYXRlTGF5ZXJQb3NpdGlvbkFj
dGlvbiB7IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgfTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaAppbmRleCA1OTVkNTVlMmZjMTdmNmI0MmMwM2NjOGIxOTgyMDJhNGEyMzA2Yjg1Li4zNWNj
ZDY1NmZhZjM3NzBmYWY0NTIxMWZhNjFlNjBhMDMwOWM0MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTExOSw3
ICsxMTksNyBAQCBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTY3JvbGxpbmdDb29yZGluYXRvcj4gewogICAgIC8vIFNob3VsZCBiZSBjYWxs
ZWQgd2hlbmV2ZXIgdGhlIGdpdmVuIGZyYW1lIHZpZXcgaGFzIGJlZW4gbGFpZCBvdXQuCiAgICAg
dmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3JikgeyB9CiAKLSAg
ICB1c2luZyBMYXlvdXRWaWV3cG9ydE9yaWdpbk9yT3ZlcnJpZGVSZWN0ID0gV1RGOjpWYXJpYW50
PE9wdGlvbmFsPEZsb2F0UG9pbnQ+LCBPcHRpb25hbDxGbG9hdFJlY3Q+PjsKKyAgICB1c2luZyBM
YXlvdXRWaWV3cG9ydE9yaWdpbk9yT3ZlcnJpZGVSZWN0ID0gV1RGOjpWYXJpYW50PHN0ZDo6b3B0
aW9uYWw8RmxvYXRQb2ludD4sIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0Pj47CiAgICAgdmlydHVh
bCB2b2lkIHJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKEZyYW1lVmlldyYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBMYXlvdXRWaWV3cG9ydE9yaWdpbk9yT3ZlcnJpZGVSZWN0JiwgYm9vbCAvKiBw
cm9ncmFtbWF0aWNTY3JvbGwgKi8sIGJvb2wgLyogaW5TdGFibGVTdGF0ZSovLCBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKSB7IH0KIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2
ZXIgdGhlIHNsb3cgcmVwYWludCBvYmplY3RzIGNvdW50ZXIgY2hhbmdlcyBiZXR3ZWVuIHplcm8g
YW5kIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZS5jcHAKaW5kZXggYjQyMGZmNjIzNDU5NTIwZjRiMDdlM2M4ODhlNTI4ODA0MDkwNDk5Mi4uZDAw
ZWM1ZGQ5YjFiN2Q0YTZkNjFiZjVkMTM5YjQ5OTJlNjM3ZDhlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNj
cm9sbGluZyhTY3JvbGxpbmdOb2RlSUQgbgogICAgIGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGU+KCpub2RlKS51cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9s
bChzY3JvbGxQb3NpdGlvbik7CiAKICAgICAvLyBVcGRhdGUgR3JhcGhpY3NMYXllcnMgYW5kIHNj
cm9sbCBzdGF0ZS4KLSAgICBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChub2RlSUQsIHNjcm9s
bFBvc2l0aW9uLCBOdWxsb3B0LCBpblVzZXJJbnRlcmF0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7Cisg
ICAgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgc3Rk
OjpudWxsb3B0LCBpblVzZXJJbnRlcmF0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlv
bjo6U3luYyA6IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CiB9CiAKIHZvaWQg
U2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJlZVN0YXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdT
dGF0ZVRyZWU+IHNjcm9sbGluZ1N0YXRlVHJlZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCA3NmNhN2Y2ZGEzNGU5ZDQ5YWE3ZTRkY2EzZjBi
YzgzYmE1NTQxYmY3Li42NzM0YjUzYWRhYjVjMzk5YjkzM2FjMzc3ZWRlNzRiOGMyYTA1YTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC03
OCw3ICs3OCw3IEBAIGNsYXNzIFNjcm9sbGluZ1RyZWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2Nyb2xsaW5nVHJlZT4gewogCiAgICAgLy8gQ2FsbGVkIGFmdGVyIGEgc2Nyb2xsaW5n
IHRyZWUgbm9kZSBoYXMgaGFuZGxlZCBhIHNjcm9sbCBhbmQgdXBkYXRlZCBpdHMgbGF5ZXJzLgog
ICAgIC8vIFVwZGF0ZXMgRnJhbWVWaWV3L1JlbmRlckxheWVyIHNjcm9sbGluZyBzdGF0ZSBhbmQg
R3JhcGhpY3NMYXllcnMuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Ny
b2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNv
bnN0IE9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xs
aW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb24gPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKSA9IDA7
CiAKICAgICAvLyBDYWxsZWQgZm9yIHJlcXVlc3RlZCBzY3JvbGwgcG9zaXRpb24gdXBkYXRlcy4K
ICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVSZXF1ZXN0c1Njcm9sbChTY3JvbGxp
bmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIC8qc2Nyb2xsUG9zaXRpb24qLywgYm9vbCAvKnJl
cHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAK
aW5kZXggY2M3ZThlY2VmODFiMDNkOWY5NzQzMTcxZGQ5Y2QwYjllZmRmNzYzOC4uODQwMjlmYmRm
ODVmNjU4MWQwZmNkMTUzOGQ5YzdiZmVlY2NiODhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0CiB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRn
ZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogewogICAgIHNl
dFNjcm9sbExheWVyUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24sIHsgfSk7Ci0gICAgc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3Jv
bGxQb3NpdGlvbiwgTnVsbG9wdCk7CisgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVO
b2RlRGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgc3RkOjpudWxs
b3B0KTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bWluaW11
bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IGFiMDZkYWI1ZTljOWY2
OWNhODRhZTkyOThlOTkwYjhmY2I1ZGRmYzcuLmJjYjQ4ZTQ5NWMxYjBiODllNzVhN2FhMzNlODVl
NTk0ZDdjNWU2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Ro
cmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFRocmVh
ZGVkU2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJlZVN0YXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxp
bmdTdGF0ZVRyZWU+CiAgICAgU2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJlZVN0YXRlKFdURk1vdmUo
c2Nyb2xsaW5nU3RhdGVUcmVlKSk7CiB9CiAKLXZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpz
Y3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxh
eW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xs
aW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgRmxvYXRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxh
eW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9y
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDcxODJkYTZjYWYzYmE5NDM2MGZhMWVi
MjZiN2FhYjE3M2MyMjAxMWUuLjczMjU0MDU5YzJkNzcwMjA1Y2VmZGJkMTUzMGFiMjc5MDRhYTcz
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVk
U2Nyb2xsaW5nVHJlZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIFRocmVhZGVkU2Nyb2xsaW5n
VHJlZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlIHsKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBU
aHJlYWRlZFNjcm9sbGluZ1RyZWUoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciopOwogCi0gICAg
dm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZs
b2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5
b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gPSBTY3JvbGxp
bmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbGlu
Z1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Ny
b2xsUG9zaXRpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdw
b3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbjo6U3luYykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50
SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVu
c2lnbmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBo
YW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCA1NGJkYWY5
ZTljZjEzMmVkNTA3ZGViNDg4MzdjNzRjMDQzYzY5YThlLi43ODExMzE3N2Y4ZWRmODBjNzA2ZTdh
YjVjZjVhNmQ4ZjQwMzllNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUy5tbQpAQCAtMTA5LDEzICsxMDksMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnMK
IHsKICAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHko
KSkgewogICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xs
UG9zaXRpb247Ci0gICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNj
cm9sbChzY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIE51bGxvcHQsIFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CisgICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zY3Jv
bGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24s
IHN0ZDo6bnVsbG9wdCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydDsgLy8gRklY
TUU6IGltcGxlbWVudCBmb3IgaU9TIFdLMS4KICAgICBzZXRTY3JvbGxMYXllclBvc2l0aW9uKHNj
cm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydCk7Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9s
bGluZ1RyZWVOb2RlRGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwg
TnVsbG9wdCk7CisgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgc3RkOjpudWxsb3B0KTsKIH0KIAog
dm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxMYXllclBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVJT1MuY3BwCmluZGV4IDhiMTBmYjNiZTM2OTMzZjc1NDI3OTE4OTBhY2Y5ZDUyZDRjNDI2
MDQuLjEwYjNmODczNDVmZGE0M2NjZGZlOWMxNWZlNDE3ZjQ2YWY1NTQ1ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlSU9TOjppbnZhbGlkYXRlKCkK
ICAgICB9KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlSU9TOjpzY3JvbGxpbmdUcmVlTm9kZURp
ZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQ
b3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2lu
LCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24pCit2b2lkIFNjcm9sbGluZ1RyZWVJT1M6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNj
cm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQog
ewogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJ
T1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9T
LmgKaW5kZXggMmVlMzE3MTAxODFkYzViNTE5NDE5NmY3NTI3M2M5MTNhOGI5NzMxNC4uMWE5YWFl
MWI0MGM4MTI2ODM0NDg0MWNlN2IzMDc1ZWY3MGE3ZTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5oCkBAIC01Myw3ICs1
Myw3IEBAIGNsYXNzIFNjcm9sbGluZ1RyZWVJT1MgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZSB7CiAK
ICAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBjcmVhdGVTY3JvbGxpbmdUcmVlTm9k
ZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9h
dFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91
dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxpbmdU
cmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9y
dE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFNjcm9sbGluZ0xheWVyUG9z
aXRpb25BY3Rpb246OlN5bmMpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50
SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6
b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRleCBiZDM3NjUzYzYzMDFkMmNjOTcwY2Y5MjFh
OWMxNDk2ZDU2MWI3MjkxLi5kOTQxMWI0NGZlNTdhZDY4Y2U1Y2Q2MWNhN2U5YmFjOTI2Mzc0ODIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtMzg4
LDcgKzM4OCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2V0
U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zCiB7CiAgICAgdXBkYXRlTWFpbkZy
YW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24pOwogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4g
bGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlv
dXRWaWV3cG9ydE9yaWdpbjsKICAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLnZpc3VhbFZpZXdwb3J0
RW5hYmxlZCgpKSB7CiAgICAgICAgIEZsb2F0UG9pbnQgdmlzaWJsZUNvbnRlbnRPcmlnaW4gPSBz
Y3JvbGxQb3NpdGlvbjsKICAgICAgICAgZmxvYXQgY291bnRlclNjYWxlID0gMSAvIGZyYW1lU2Nh
bGVGYWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCmluZGV4IGQxMjFk
MjNkNzFjN2Y2OGMwNmZjM2YyNTkwNjc3ZmE5ZGNhZDI2MWUuLmFhNTY2YWYzMzg0ZmFlMGMxMzAz
MmNkM2NiMWMwNTNlMmQzN2MyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNw
cApAQCAtMTQzLDggKzE0Myw4IEBAIHN0cnVjdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHsK
ICAgICBjb25zdCBGcmFtZSYgZnJhbWU7CiAgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVy
OwogICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXI7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+
IHN0YXJ0T2Zmc2V0OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQ7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gZW5kT2Zmc2V0OwogfTsKIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJh
bmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKaW5kZXggZmU4MjNjNDI0NTE5ZWJmNzljN2E1Mzk2MGQ1
NTliOTY4NTVlMzZkZi4uMDMyY2NkYWIyY2RiMGIxZDRiMDkyOTYwNWFlNzU1ZjE0ZmFjY2VjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0ljb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBM
aW5rSWNvbiB7CiAgICAgVVJMIHVybDsKICAgICBMaW5rSWNvblR5cGUgdHlwZTsKICAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNpemU7CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gc2l6ZTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIExpbmtJY29uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IGFiMTUzMWJjMWU4YTQ5ZGRj
MDYyMjRhNDlkNmEzNGE0NWYxZDViMTkuLmZhZDU0NDUzMzQ1MjM1NTRjZmM3M2E1N2Y0MDE1YzVl
MjNmMTFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oCkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3MgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHJlYWRBbmROb3RpZnkoKSBjb25zdDsKIAot
ICAgICAgICBPcHRpb25hbDxpbnQ+IG1fZmQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBt
X2ZkOwogICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fbm90aWZ5SGFuZGxlcjsKICNp
ZiBVU0UoR0xJQikKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKQEAgLTE2NCw4
ICsxNjQsOCBAQCBjbGFzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgewogICAgIENGUnVuTG9vcE9i
c2VydmVyUmVmIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07CiAgICAgTG9jayBtX29ic2VydmVyTXV0
ZXg7CiAjZWxpZiBPUyhMSU5VWCkKLSAgICBPcHRpb25hbDxpbnQ+IG1fZXZlbnRGRDsKLSAgICBP
cHRpb25hbDxpbnQ+IG1fcHJlc3N1cmVMZXZlbEZEOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBt
X2V2ZW50RkQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fcHJlc3N1cmVMZXZlbEZEOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxFdmVudEZEUG9sbGVyPiBtX2V2ZW50RkRQb2xsZXI7CiAgICAgUnVu
TG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiBtX2hvbGRPZmZUaW1lcjsKICAgICB2
b2lkIGhvbGRPZmZUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCmluZGV4IGI0YWFmOTcxZTMzYWM3NjMyM2Q5ZGZjNzJjZWU4MWFjYjJjMmVjZTAuLmNiZmZl
NmUxYzgxMmI0ZGRkMTRlNDcwMDNhODc4NDhiNGVmMWFkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCkBAIC00NTQsOCArNDU0LDggQEAgdm9pZCBTY3JvbGxWaWV3Ojpo
YW5kbGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKQogICAgIGVs
c2UgaWYgKG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzKQogICAgICAgICBzY3JvbGxPZmZzZXRDaGFu
Z2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzLnZhbHVlKCku
Zmlyc3QsIG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzLnZhbHVlKCkuc2Vjb25kKTsKICAgICAKLSAg
ICBtX2RlZmVycmVkU2Nyb2xsRGVsdGEgPSBOdWxsb3B0OwotICAgIG1fZGVmZXJyZWRTY3JvbGxP
ZmZzZXRzID0gTnVsbG9wdDsKKyAgICBtX2RlZmVycmVkU2Nyb2xsRGVsdGEgPSBzdGQ6Om51bGxv
cHQ7CisgICAgbV9kZWZlcnJlZFNjcm9sbE9mZnNldHMgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgU2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mIG5ld1Bvc2l0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGU1YzE4MjE4NjlkYWVkNmZm
ZjQ4Mzg4NTY4ZjEzMDg4NmIyYTNiMTQuLmRiNTcwZGQ5ODViMTc3MjQwOWE1MTUwYWZkNzYzYzMw
YzI0NzE0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTQ2Miw4ICs0
NjIsOCBAQCBjbGFzcyBTY3JvbGxWaWV3IDogcHVibGljIFdpZGdldCwgcHVibGljIFNjcm9sbGFi
bGVBcmVhIHsKICAgICBJbnRTaXplIG1fZml4ZWRMYXlvdXRTaXplOwogICAgIEludFNpemUgbV9j
b250ZW50c1NpemU7CiAKLSAgICBPcHRpb25hbDxJbnRTaXplPiBtX2RlZmVycmVkU2Nyb2xsRGVs
dGE7IC8vIE5lZWRlZCBmb3IgV2ViS2l0IHNjcm9sbGluZwotICAgIE9wdGlvbmFsPHN0ZDo6cGFp
cjxTY3JvbGxPZmZzZXQsIFNjcm9sbE9mZnNldD4+IG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzOyAv
LyBOZWVkZWQgZm9yIHBsYXRmb3JtIHdpZGdldCBzY3JvbGxpbmcKKyAgICBzdGQ6Om9wdGlvbmFs
PEludFNpemU+IG1fZGVmZXJyZWRTY3JvbGxEZWx0YTsgLy8gTmVlZGVkIGZvciBXZWJLaXQgc2Ny
b2xsaW5nCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U2Nyb2xsT2Zmc2V0LCBTY3JvbGxP
ZmZzZXQ+PiBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0czsgLy8gTmVlZGVkIGZvciBwbGF0Zm9ybSB3
aWRnZXQgc2Nyb2xsaW5nCiAKICAgICBib29sIG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCmluZGV4IDM1ODYzYmM4MjAxNGMzOTc3YzNjNjk0ZmE0Mjc2YzA1
NDExZWYxYjEuLjU5MTE5NzhhZWVjMThmMDgzZmRiZjg1ZjFhZjNlZDI0MTc5MDExNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBUaGVtZSB7CiAgICAg
Ly8gTWV0aG9kcyB1c2VkIHRvIGFkanVzdCB0aGUgUmVuZGVyU3R5bGVzIG9mIGNvbnRyb2xzLgog
ICAgIAogICAgIC8vIFRoZSBmb250IGRlc2NyaXB0aW9uIHJlc3VsdCBzaG91bGQgaGF2ZSBhIHpv
b21lZCBmb250IHNpemUuCi0gICAgdmlydHVhbCBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0
aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCAv
Knpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFy
dCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgCiAgICAgLy8gVGhlIHNpemUgaGVyZSBpcyBpbiB6b29t
ZWQgY29vcmRpbmF0ZXMgYWxyZWFkeS4gSWYgYSBuZXcgc2l6ZSBpcyByZXR1cm5lZCwgaXQgYWxz
byBuZWVkcyB0byBiZSBpbiB6b29tZWQgY29vcmRpbmF0ZXMuCiAgICAgdmlydHVhbCBMZW5ndGhT
aXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExl
bmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVy
biB6b29tZWRTaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAppbmRleCBhMzVjOGM2N2VlMjJi
NmVkNWRjODUzYmRlMmUxOWYzY2VkY2U4ZjFlLi41MmExNjZlYmEyZDIzMTlkMTVhMWI3ZWQ5MDgy
YjZiMTQzM2YzYjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKQEAgLTg4LDcgKzg4LDcgQEAg
Y2xhc3MgVGltZXJCYXNlIHsKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgPSAw
OwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBhbGln
bmVkRmlyZVRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcykgY29uc3QgeyByZXR1cm4gTnVs
bG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzPiBhbGlnbmVkRmlyZVRpbWUoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcykgY29uc3QgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dDsKICAgICB2b2lkIGNoZWNrSGVhcEluZGV4KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNw
cAppbmRleCBmMjYxYjg0Njg2Y2ZkMTJhYTAxMjU1MjcwYjQ2MjgwNmM0NjFlNmQ1Li43MjY5NzVh
YTgxMTk1NzhiOGM0ZTk5YzE4ZGMwMDJjZjdlNjZlYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAKQEAgLTcxNCwxMCArNzE0LDEwIEBAIFN0cmluZyBVUkw6Omhvc3QoKSBjb25zdAogICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0KIAot
T3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVpbnQx
Nl90PiBVUkw6OnBvcnQoKSBjb25zdAogewogICAgIGlmICghbV9wb3J0RW5kIHx8IG1faG9zdEVu
ZCA+PSBtX3BvcnRFbmQgLSAxKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBu
dW1iZXI7CkBAIC03MjYsNyArNzI2LDcgQEAgT3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgp
IGNvbnN0CiAgICAgZWxzZQogICAgICAgICBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0RW5kIC0gbV9o
b3N0RW5kIC0gMSwgJm9rKTsKICAgICBpZiAoIW9rIHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG51bWJlcjsKIH0KIApAQCAtODI2LDcg
KzgyNiw3IEBAIHZvaWQgY2xlYXJEZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygp
CiAgICAgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1hcEZvclRlc3RpbmcoKS5jbGVhcigpOwogfQog
Ci1PcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKQorc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChT
dHJpbmdWaWV3IHByb3RvY29sKQogewogICAgIGNvbnN0IGF1dG8mIGRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2xNYXAgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpOwogICAgIGF1
dG8gaXRlcmF0b3IgPSBkZWZhdWx0UG9ydEZvclByb3RvY29sTWFwLmZpbmQocHJvdG9jb2wudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKTsKQEAgLTIyODgsNyArMjI4OCw3IEBAIGJvb2wgVVJMOjpp
c0JsYW5rVVJMKCkgY29uc3QKIAogYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKIHsK
LSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CiAKICAgICAvLyBTaW5jZSBtb3N0IFVS
THMgZG9uJ3QgaGF2ZSBhIHBvcnQsIHJldHVybiBlYXJseSBmb3IgdGhlICJubyBwb3J0IiBjYXNl
LgogICAgIGlmICghcG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKaW5kZXggMGMxYjc0YmFiYjM2ZGE3
NDc3MzI4ZGJjNTVhMDEyZGQwYzA1MTYyMC4uMGMzMGI2YWUwYjhjMGZlMmRiYWUwMWMwNmMwYmQ3
OTI0ZmFiYjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFz
cyBVUkwgewogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBob3N0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHVzZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGFzcygpIGNvbnN0OwpA
QCAtMzEyLDcgKzMxMiw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBw
cm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7CiBXRUJDT1JFX0VYUE9SVCBi
b29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29uc3QgU3RyaW5nJiB1cmwpOwogCi1PcHRpb25h
bDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsK
K3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmll
dyBwcm90b2NvbCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHByb3RvY29sKTsKIFdFQkNPUkVfRVhQT1JUIGJv
b2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8vIEJsYWNrbGlzdCBwb3J0cyB0aGF0IHNob3Vs
ZCBuZXZlciBiZSB1c2VkIGZvciBXZWIgcmVzb3VyY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmNwcAppbmRleCBlMTA3Y2FmZWRlZmM2MjAyN2VkYWUxMzhkZWEyOWE2Mzk5NmIz
NjI0Li5kN2Y1ZmFiNzk3YmVmNGY0Y2FhNzQxN2IyZjI5OTFkNGI5MGI5MGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIFVSTFBh
cnNlcjo6ZW5jb2RlUXVlcnkoY29uc3QgVmVjdG9yPFVDaGFyPiYgc291cmNlLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuYwogICAgIH0KIH0KIAotT3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKK3N0ZDo6b3B0aW9uYWw8
dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNj
aGVtZSkKIHsKICAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZnRwUG9ydCA9IDIxOwogICAgIHN0
YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0ID0gNzA7CkBAIC02MzQsMTkgKzYzNCwxOSBA
QCBPcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0
cmluZ1ZpZXcgc2NoZW1lKQogICAgIAogICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzd2l0Y2ggKHNjaGVtZVswXSkgewogICAgIGNhc2UgJ3cn
OgogICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgICBjYXNlIDI6CiAgICAgICAgICAg
ICBpZiAoc2NoZW1lWzFdID09ICdzJykKICAgICAgICAgICAgICAgICByZXR1cm4gd3NQb3J0Owot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJwog
ICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncycpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHdzc1BvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTY1NywxNiArNjU3LDE2IEBAIE9wdGlvbmFsPHVpbnQxNl90
PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCiAg
ICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNj
aGVtZVszXSA9PSAncCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBQb3J0OwotICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwogICAgICAg
ICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVb
M10gPT0gJ3AnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKICAgICAgICAg
ICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB9CiAgICAgY2FzZSAnZyc6CiAgICAgICAgIGlmIChsZW5ndGggPT0gNgpAQCAtNjc2
LDE1ICs2NzYsMTUgQEAgT3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRG
b3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9
PSAnZScKICAgICAgICAgICAgICYmIHNjaGVtZVs1XSA9PSAncicpCiAgICAgICAgICAgICByZXR1
cm4gZ29waGVyUG9ydDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgY2FzZSAnZic6CiAgICAgICAgIGlmIChsZW5ndGggPT0gMwogICAg
ICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0JwogICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICdwJykKICAgICAgICAgICAgIHJldHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAK
QEAgLTIwNTUsOSArMjA1NSw5IEBAIHN0YXRpYyBzaXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNv
bnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzLCBzaXplX3QKICAgICByZXR1cm4g
ZW5kIC0gYmVnaW47CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVy
b1NlcXVlbmNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBhZGRyZXNzKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6
OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykKIHsKLSAgICBPcHRpb25hbDxzaXplX3Q+IGxv
bmdlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxvbmdlc3Q7CiAgICAgc2l6ZV90IGxv
bmdlc3RMZW5ndGggPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7CiAg
ICAgICAgIHNpemVfdCBsZW5ndGggPSB6ZXJvU2VxdWVuY2VMZW5ndGgoYWRkcmVzcywgaSk7CkBA
IC0yMTE0LDcgKzIxMTQsNyBAQCB2b2lkIFVSTFBhcnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJz
ZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+Ci1PcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRh
eFZpb2xhdGlvbikKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0
UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBib29sJiBk
aWRTZWVTeW50YXhWaW9sYXRpb24pCiB7CiAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3Qg
ewogICAgICAgICBVbmtub3duQmFzZSwKQEAgLTIxMjYsNyArMjEyNiw3IEBAIE9wdGlvbmFsPHVp
bnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJh
Y3RlclR5cGU+JiBpCiAgICAgU3RhdGUgc3RhdGUgPSBTdGF0ZTo6VW5rbm93bkJhc2U7CiAgICAg
Q2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlID0gMDsKICAgICBpZiAoIWl0
ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09ICcuJykKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgd2hpbGUgKCFpdGVyYXRvci5h
dEVuZCgpKSB7CiAgICAgICAgIGlmIChpc1RhYk9yTmV3bGluZSgqaXRlcmF0b3IpKSB7CiAgICAg
ICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24gPSB0cnVlOwpAQCAtMjE1NywzMSArMjE1Nywz
MSBAQCBPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgU3RhdGU6OkRlY2ltYWw6CiAgICAgICAgICAgICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8
ICppdGVyYXRvciA+ICc5JykKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgdmFsdWUgKj0gMTA7
CiAgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CiAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgKytpdGVyYXRvcjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0YXRlOjpP
Y3RhbDoKICAgICAgICAgICAgIEFTU0VSVChkaWRTZWVTeW50YXhWaW9sYXRpb24pOwogICAgICAg
ICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAqaXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIHZhbHVlICo9IDg7CiAgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0
b3IgLSAnMCc7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgKytpdGVyYXRvcjsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFN0YXRlOjpIZXg6CiAgICAgICAgICAgICBBU1NFUlQoZGlkU2Vl
U3ludGF4VmlvbGF0aW9uKTsKICAgICAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVy
YXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHZhbHVlICo9IDE2OwogICAgICAgICAg
ICAgdmFsdWUgKz0gdG9BU0NJSUhleFZhbHVlKCppdGVyYXRvcik7CiAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgKytpdGVyYXRvcjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTk4LDcg
KzIxOTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB1aW50NjRfdCBwb3cyNTYoc2l6ZV90IGV4
cG9uZW50KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotT3B0aW9uYWw8
VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJhdG9yKQorc3RkOjpvcHRpb25hbDxVUkxQYXJz
ZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEhvc3QoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiB7CiAgICAgYXV0byBob3N0QmVnaW4gPSBpdGVy
YXRvcjsKIApAQCAtMjIxMiwzMCArMjIxMiwzMCBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjRB
ZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGl0ZW1zLnNpemUo
KSA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYXV0byBpdGVtID0gcGFyc2VJUHY0UGllY2UoaXRl
cmF0b3IsIGRpZFNlZVN5bnRheFZpb2xhdGlvbikpCiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQo
aXRlbS52YWx1ZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWl0ZXJhdG9y
LmF0RW5kKCkpIHsKICAgICAgICAgICAgIGlmIChpdGVtcy5zaXplKCkgPj0gNCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgaWYgKCppdGVyYXRvciA9PSAnLicpCiAgICAgICAgICAgICAgICAg
KytpdGVyYXRvcjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgfQogICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSB8fCAhaXRlbXMuc2l6ZSgpIHx8IGl0ZW1z
LnNpemUoKSA+IDQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmIChpdGVtcy5zaXplKCkgPiAxKSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAo
aXRlbXNbaV0gPiAyNTUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAo
aXRlbXNbaXRlbXMuc2l6ZSgpIC0gMV0gPj0gcG93MjU2KDUgLSBpdGVtcy5zaXplKCkpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCiAgICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0
QmVnaW4pOwpAQCAtMjI1NCwyNyArMjI1NCwyNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjRB
ZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotT3B0aW9uYWw8dWludDMyX3Q+
IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3N0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNl
cjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5
cGU+JiBpdGVyYXRvcikKIHsKICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgdWludDMyX3Qg
cGllY2UgPSAwOwogICAgIGJvb2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CiAgICAgc2l6ZV90IGRp
Z2l0Q291bnQgPSAwOwogICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAgICBp
ZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICArK2RpZ2l0Q291bnQ7
CiAgICAgICAgIGlmICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykgewogICAgICAgICAgICAg
aWYgKGxlYWRpbmdaZXJvcykKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbGVhZGluZ1plcm9z
ID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAn
MCcpCiAgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOwogICAgICAgICBwaWVjZSA9IHBp
ZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CiAgICAgICAgIGlmIChwaWVjZSA+IDI1NSkKLSAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246
Ok5vPihpdGVyYXRvcik7CiAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMjgyLDUxICsyMjgyLDUxIEBAIE9wdGlvbmFsPHVpbnQzMl90PiBVUkxQ
YXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0
CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKHBpZWNlICYmIGxlYWRpbmdaZXJv
cykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHBpZWNlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PgotT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRB
ZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRv
cikKK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJz
ZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBp
dGVyYXRvcikKIHsKICAgICBJUHY0QWRkcmVzcyBhZGRyZXNzID0gMDsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IHBp
ZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKKyAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0
ZXJhdG9yKSkKICAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZh
bHVlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGkgPCAzKSB7CiAgICAgICAg
ICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaWYg
KCppdGVyYXRvciAhPSAnLicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGFkdmFuY2U8Q2hh
cmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBBU1NFUlQo
aXRlcmF0b3IuYXRFbmQoKSk7CiAgICAgcmV0dXJuIGFkZHJlc3M7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1PcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBV
UkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4g
YykKK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJz
ZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGMpCiB7CiAgICAgQVNT
RVJUKCpjID09ICdbJyk7CiAgICAgYXV0byBob3N0QmVnaW4gPSBjOwogICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIElQdjZBZGRyZXNzIGFkZHJlc3Mg
PSB7ezAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9fTsKICAgICBzaXplX3QgcGllY2VQb2ludGVyID0g
MDsKLSAgICBPcHRpb25hbDxzaXplX3Q+IGNvbXByZXNzUG9pbnRlcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gY29tcHJlc3NQb2ludGVyOwogCiAgICAgaWYgKCpjID09ICc6JykgewogICAg
ICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAgICAgICAgIGlmIChjLmF0RW5kKCkpCi0gICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKICAgICAgICAgKytwaWVjZVBvaW50ZXI7CiAgICAgICAgIGNvbXByZXNzUG9pbnRlciA9
IHBpZWNlUG9pbnRlcjsKQEAgLTIzMzQsMTkgKzIzMzQsMTkgQEAgT3B0aW9uYWw8VVJMUGFyc2Vy
OjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9y
PENoYXIKICAgICAKICAgICB3aGlsZSAoIWMuYXRFbmQoKSkgewogICAgICAgICBpZiAocGllY2VQ
b2ludGVyID09IDgpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqYyA9PSAnOicpIHsKICAgICAgICAgICAg
IGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGFkdmFuY2Uo
YywgaG9zdEJlZ2luKTsKICAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwogICAgICAgICAgICAg
Y29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50
ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxJUHY0
QWRkcmVzcz4gaXB2NEFkZHJlc3MgPSBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihjKSkgewor
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0g
cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsKICAgICAgICAgICAgICAgICBpZiAoY29t
cHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1KQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKICAgICAgICAgICAg
ICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7
CiAgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52
YWx1ZSgpICYgMHhGRkZGOwpAQCAtMjM3NywxMiArMjM3NywxMiBAQCBPcHRpb25hbDxVUkxQYXJz
ZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0
b3I8Q2hhcgogICAgICAgICBpZiAoYy5hdEVuZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGFk
dmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFjLmF0RW5kKCkpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKICAgICAgICAgc2l6ZV90IHN3YXBzID0gcGll
Y2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVlKCk7CkBAIC0yMzkwLDkgKzIzOTAsOSBA
QCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgICAgICB3aGlsZSAoc3dhcHMpCiAgICAgICAg
ICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQ
b2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwogICAgIH0gZWxzZSBpZiAocGllY2VQb2lu
dGVyICE9IDgpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgT3B0aW9uYWw8c2l6ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9
IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3MpOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFk
ZHJlc3MpOwogICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKICAgICAgICAgcG9zc2li
bGVDb21wcmVzc1BvaW50ZXIudmFsdWUoKSsrOwogICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1Bv
aW50ZXIgIT0gcG9zc2libGVDb21wcmVzc1BvaW50ZXIpKQpAQCAtMjQ1Myw3ICsyNDUzLDcgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBjb250YWluc09ubHlBU0NJSShjb25zdCBTdHJpbmcm
IHN0cmluZykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFs
PFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVSTFBh
cnNlcjo6ZG9tYWluVG9BU0NJSShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRp
b24pCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZhdWx0SW5saW5l
QnVmZmVyU2l6ZT4+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShjb25zdCBTdHJpbmcmIGRvbWFp
biwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3lu
dGF4VmlvbGF0aW9uUG9zaXRpb24pCiB7CiAgICAgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5l
QnVmZmVyU2l6ZT4gYXNjaWk7CiAgICAgaWYgKGNvbnRhaW5zT25seUFTQ0lJKGRvbWFpbikpIHsK
QEAgLTI0OTYsNyArMjQ5Niw3IEBAIE9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpk
ZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVSTFBhcnNlcjo6ZG9tYWluVG9BCiAgICAgfQogCiAg
ICAgLy8gRklYTUU6IENoZWNrIGZvciBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiBhbmQgcmV0cnkg
d2l0aCBhbiBhbGxvY2F0ZWQgYnVmZmVyLgotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgVVJMUGFyc2VyOjpoYXNJbnZhbGlkRG9tYWluQ2hh
cmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVy
U2l6ZT4mIGFzY2lpRG9tYWluKQpAQCAtMjY5MCwxMSArMjY5MCwxMSBAQCBib29sIFVSTFBhcnNl
cjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVy
YXRvcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotT3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6
OmZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBV
UkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICBhdXRvIHV0
ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwogICAgIGlmICh1dGY4LmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBhdXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKICAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNp
emUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmluZGV4IGJiNWU5MmJkYTc2
ZWQ3NTNkM2UwMGVmNTQwYjE2YWMzOGRkNzRkYTAuLjg2NGVhY2RmNzUxZjEzYzQwMTY1OTgyZmJh
ZWJmNzAzYWIzOThhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCkBAIC01Myw4
ICs1Myw4IEBAIGNsYXNzIFVSTFBhcnNlciB7CiAgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRl
cm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
T3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7Ci0g
ICAgZnJpZW5kIE9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmlu
Z1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZv
clByb3RvY29sKFN0cmluZ1ZpZXcpOworICAgIGZyaWVuZCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcpOwogCiAgICAgVVJMIG1fdXJsOwog
ICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZlcjsKQEAgLTk0LDEwICs5NCwxMCBAQCBjbGFz
cyBVUkxQYXJzZXIgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+
IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZlcihVbnNpZ25lZEludGVnZXJUeXBlKTsKICAg
ICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCkoVUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUoY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lk
IHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYp
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFZlY3RvcjxM
Q2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5
bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+
PiBkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxp
bmVCdWZmZXJTaXplPiBwZXJjZW50RGVjb2RlKGNvbnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRp
b25Qb3NpdGlvbik7CiAgICAgc3RhdGljIFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZl
clNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENoYXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBP
cHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCk7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQp
OwogICAgIHN0YXRpYyBib29sIGhhc0ludmFsaWREb21haW5DaGFyYWN0ZXIoY29uc3QgVmVjdG9y
PExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mKTsKICAgICB2b2lkIHBlcmNlbnRFbmNv
ZGVCeXRlKHVpbnQ4X3QpOwogICAgIHZvaWQgYXBwZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsK
QEAgLTExMCwxMiArMTEwLDEyIEBAIGNsYXNzIFVSTFBhcnNlciB7CiAKICAgICB1c2luZyBJUHY0
QWRkcmVzcyA9IHVpbnQzMl90OwogICAgIHZvaWQgc2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SVB2NEFkZHJl
c3M+IHBhcnNlSVB2NEhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPHVpbnQzMl90PiBwYXJz
ZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRh
eFZpb2xhdGlvbik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwogICAgIHVzaW5nIElQdjZBZGRyZXNz
ID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gT3B0aW9uYWw8SVB2NkFkZHJlc3M+IHBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBPcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8SVB2NkFkZHJlc3M+IHBhcnNlSVB2Nkhvc3Qo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSVB2NFBpZWNlSW5z
aWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8SVB2NEFkZHJlc3M+IHBhcnNl
SVB2NEFkZHJlc3NJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
ICAgICB2b2lkIHNlcmlhbGl6ZUlQdjZQaWVjZSh1aW50MTZfdCBwaWVjZSk7CiAgICAgdm9pZCBz
ZXJpYWxpemVJUHY2KElQdjZBZGRyZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggODkwMzJkY2E0YjFiNTI0OGQ0ZDc5NGM5ZWQz
NTQ3YzU4MDYwNTJjMy4uZTAyM2NiOGYxOGRlZDk4YmM5ZGQ5NGYyZmFhZjc4ZmI4YjYzYTY3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBA
IC03NCw3ICs3NCw3IEBAIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmZyYW1lQ291
bnQoKTsgfQogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZS5yZXBldGl0aW9uQ291bnQoKTsgfQogICAgIFN0cmluZyBmaWxlbmFtZUV4
dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLmZpbGVuYW1lRXh0ZW5z
aW9uKCk7IH0KLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc291cmNlLmhvdFNwb3QoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NvdXJjZS5ob3RTcG90KCk7
IH0KIAogICAgIC8vIEZsb2F0U2l6ZSBkdWUgdG8gb3ZlcnJpZGUuCiAgICAgRmxvYXRTaXplIHNp
emUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NvdXJjZS5zaXplKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmluZGV4IGU5OTRiYTk3YzJhODZjNzVlZTlj
Y2FjNDdlOWE2YWE0ZWMyYzBlOGIuLjI5Njg3OTYxZWQxZTRhNzYyYzAzMWMxNTc2MWVhZGFiN2Zm
ZGM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtNjks
NyArNjksNyBAQCBSR0JBMzIgbWFrZVByZW11bHRpcGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50
IGIsIGludCBhKTsKIFJHQkEzMiBtYWtlVW5QcmVtdWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcs
IGludCBiLCBpbnQgYSk7CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBjb2xvcldpdGhPdmVycmlk
ZUFscGhhKFJHQkEzMiBjb2xvciwgZmxvYXQgb3ZlcnJpZGVBbHBoYSk7Ci1SR0JBMzIgY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFs
cGhhKTsKK1JHQkEzMiBjb2xvcldpdGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgc3RkOjpv
cHRpb25hbDxmbG9hdD4gb3ZlcnJpZGVBbHBoYSk7CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBt
YWtlUkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsK
IFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGRvdWJsZSBoLCBkb3VibGUgcywgZG91YmxlIGwsIGRv
dWJsZSBhKTsKQEAgLTQwNCw3ICs0MDQsNyBAQCBpbmxpbmUgdWludDE2X3QgZmFzdERpdmlkZUJ5
MjU1KHVpbnQxNl90IHZhbHVlKQogICAgIHJldHVybiBhcHByb3hpbWF0aW9uICsgKHJlbWFpbmRl
ciA+PiA4KTsKIH0KIAotaW5saW5lIFJHQkEzMiBjb2xvcldpdGhPdmVycmlkZUFscGhhKFJHQkEz
MiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJyaWRlQWxwaGEpCitpbmxpbmUgUkdCQTMyIGNv
bG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNvbG9yLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBv
dmVycmlkZUFscGhhKQogewogICAgIHJldHVybiBvdmVycmlkZUFscGhhID8gY29sb3JXaXRoT3Zl
cnJpZGVBbHBoYShjb2xvciwgb3ZlcnJpZGVBbHBoYS52YWx1ZSgpKSA6IGNvbG9yOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQuaAppbmRleCBjNjY5ZGNiNGMwZjBlMjU1MGNkNzFmZDVjZTE4
ZDc2NWE3OTQyZjdjLi44ZmExMTRjNDUxNDQ1OThmMWU3NTRmM2UxYzYxYWFmYzJkYzg2MzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQgewogCiBwcml2YXRlOgogICAgIGJvb2wgbV9zY2hlZHVs
ZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBtX2Rpc3BsYXlJ
RDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBtX2Rpc3BsYXlJRDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCAyYjkxNGVl
OGIzMzlmZGRjMDQzODcxMmQ2OTdlYzg0N2VmNGE3ZDJmLi41Mzc0ZTcyNzJiYzgzNzhlM2MyMWI3
MDViZmNlOGY1OTA5NjliYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCkBAIC0yODQsMTAgKzI4NCwxMCBAQCBjbGFzcyBGb250IDogcHVibGljIFJlZkNvdW50ZWQ8
Rm9udD4gewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gbV9ub25LZXJuZWRDRlN0cmluZ0F0dHJpYnV0ZXM7CiAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX2tlcm5lZENGU3RyaW5nQXR0cmlidXRlczsKLSAg
ICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2Fw
czsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeUFs
bFNtYWxsQ2FwczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBw
b3J0ZWRCeVBldGl0ZUNhcHM7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5
cGhzU3VwcG9ydGVkQnlBbGxQZXRpdGVDYXBzOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxC
aXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlTbWFsbENhcHM7CisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeUFsbFNtYWxsQ2FwczsKKyAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5UGV0
aXRlQ2FwczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1
cHBvcnRlZEJ5QWxsUGV0aXRlQ2FwczsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFVTRShIQVJGQlVaWikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcAppbmRleCBhZTk3NTE4YjE2OWUxMDFjN2JmZWMxODMwMjg4MzEwMzBhODJl
NmI4Li43ZTY4MzExMzhiOTc0MDY4OTVhMTc1Y2NjNmMxNTJjZDU1NGIzODEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0zMDEs
NyArMzAxLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2Rl
UGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJgogICAgIHJldHVybiBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKIH0K
IAotZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJv
bSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9t
Rm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CiB7
CiAgICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3aGlsZSB3ZSBhcmUgdXNpbmcgY3VzdG9tIGZv
bnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcsCiAgICAgLy8gZXhjZXB0IGlm
IHRoZSAnZm9yY2UnIGFyZ3VtZW50IGlzIHNldCB0byB0cnVlIChpbiB3aGljaCBjYXNlIGl0IHdp
bGwgdXNlIGEgZmFsbGJhY2sKQEAgLTMwOSw3ICszMDksNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6
ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkgJiYgY3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uID09IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAg
ICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAg
ICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTog
VXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgg
a2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAg
LTMyNywxMiArMzI3LDEyIEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICByZXR1cm4gc3Rh
cnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNp
c01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBm
cm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5z
aWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgaWYg
KGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVk
IGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRl
c3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKIAogICAgIENvZGVQYXRoIGNv
ZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3Qg
Y29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBs
aWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MApAQCAtNDkwLDkgKzQ5MCw5
IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxv
YXQmIHdpZHRoKSBjb25zdAogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi12b2lkIEZvbnRDYXNj
YWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91
dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0
bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJv
bSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVz
dGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGlu
YXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogCiAgICAgQ29kZVBhdGggY29kZVBh
dGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2Rl
IHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0
dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCkBAIC0xMTc5LDI3ICsxMTc5LDI3
IEBAIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxpbmVUeXBlIGNvbXB1dGVVbmRl
cmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRlCiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIG1h
eSBub3Qgd29yayBpZiB0aGUgZW1waGFzaXMgbWFyayB1c2VzIGEgY29tcGxleCBzY3JpcHQsIGJ1
dCBub25lIG9mIHRoZQogLy8gc3RhbmRhcmQgZW1waGFzaXMgbWFya3MgZG8gc28uCi1PcHRpb25h
bDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3Qg
QXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAorc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IEZvbnRD
YXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJr
KSBjb25zdAogewogICAgIGlmIChtYXJrLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBVQ2hhcjMyIGNoYXJhY3Rl
cjsKICAgICBpZiAoIW1hcmsuaXM4Qml0KCkpIHsKICAgICAgICAgU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKG1hcmsuY2hhcmFjdGVyczE2KCksIDAsIG1hcmsubGVuZ3Ro
KCksIG1hcmsubGVuZ3RoKCkpOwogICAgICAgICB1bnNpZ25lZCBjbHVzdGVyTGVuZ3RoOwogICAg
ICAgICBpZiAoIWl0ZXJhdG9yLmNvbnN1bWUoY2hhcmFjdGVyLCBjbHVzdGVyTGVuZ3RoKSkKLSAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9IGVsc2UKICAgICAgICAgY2hhcmFjdGVyID0gbWFya1swXTsKIAotICAgIE9wdGlv
bmFsPEdseXBoRGF0YT4gZ2x5cGhEYXRhKGdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIs
IGZhbHNlLCBFbXBoYXNpc01hcmtWYXJpYW50KSk7Ci0gICAgcmV0dXJuIGdseXBoRGF0YS52YWx1
ZSgpLmlzVmFsaWQoKSA/IGdseXBoRGF0YSA6IE51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxH
bHlwaERhdGE+IGdseXBoRGF0YShnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBmYWxz
ZSwgRW1waGFzaXNNYXJrVmFyaWFudCkpOworICAgIHJldHVybiBnbHlwaERhdGEudmFsdWUoKS5p
c1ZhbGlkKCkgPyBnbHlwaERhdGEgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGludCBGb250Q2FzY2Fk
ZTo6ZW1waGFzaXNNYXJrQXNjZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgY29uc3QKIHsK
LSAgICBPcHRpb25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtH
bHlwaERhdGEobWFyayk7CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERh
dGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFyayk7CiAgICAgaWYgKCFtYXJrR2x5cGhE
YXRhKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTIxMyw3ICsxMjEzLDcgQEAgaW50IEZvbnRD
YXNjYWRlOjplbXBoYXNpc01hcmtBc2NlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25z
dAogCiBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0Rlc2NlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBtYXJrKSBjb25zdAogewotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0
YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEds
eXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsK
ICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMjI3LDcg
KzEyMjcsNyBAQCBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0Rlc2NlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBtYXJrKSBjb25zdAogCiBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0hl
aWdodChjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8R2x5
cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwor
ICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNN
YXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICghbWFya0dseXBoRGF0YSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTEzMjksNyArMTMyOSw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0
VG9NaWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAK
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIE9wdGlvbmFsPEds
eXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lz
TWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKaW5kZXggYTQ2M2UzNzVjMDYyZWI2NDZmYjZiMzNmM2JjOWNiZTBkMTFiZDRjNi4uMzJkZWMy
ZjNiMmU2NjI0NWM0YWViZDc0OTc2YTgzOTMxMjc4M2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0xMzIsOSArMTMyLDkgQEAgY2xh
c3MgRm9udENhc2NhZGUgewogICAgIHZvaWQgdXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+JiYp
IGNvbnN0OwogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50
SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBmbG9hdCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4g
dG8gPSBOdWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250
Tm90UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
ZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0LCBDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0Owog
ICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYs
IGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBj
b25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwotICAgIHZvaWQgZHJhd0VtcGhh
c2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0
cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25h
bDx1bnNpZ25lZD4gdG8gPSBOdWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01h
cmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgRGFzaEFycmF5IGRh
c2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQ
b2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50cykgY29uc3Q7CiAK
QEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBGb250Q2FzY2FkZSB7CiAgICAgc3RhdGljIGZsb2F0
IHdpZHRoKFRleHRMYXlvdXQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIEhhc2hTZXQ8
Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCk7CiAKICAgICBpbnQgb2Zmc2V0Rm9yUG9z
aXRpb24oY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFs
R2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0
IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gTnVsbG9wdCkgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RT
ZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9u
UmVjdCwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3Rk
OjpudWxsb3B0KSBjb25zdDsKIAogICAgIGJvb2wgaXNTbWFsbENhcHMoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21h
bGw7IH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIGNsYXNzIEZvbnRDYXNjYWRlIHsKICAgICBpbnQg
b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3Np
dGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RT
ZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2Vs
ZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8R2x5cGhEYXRhPiBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IGdldEVtcGhhc2lzTWFy
a0dseXBoRGF0YShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29s
IGNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpOwogICAgIHN0YXRpYyBib29s
IGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBj
NzczNDQyOTljYTExY2UzYTcyZDdmZmRmMmU2NTEzZWI0MDU2NGY1Li4xYmY1OWMzMGVmNTBmN2Uw
MWVmOTg0OTE2NzI3NTQyMGZkMzc2NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTYzNyw3ICs2MzcsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIC0tbV90cmFu
c3BhcmVuY3lDb3VudDsKIH0KIAotZmxvYXQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25z
dCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvKQorZmxvYXQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdG8pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBm
b24KICAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKCp0aGlzLCBmb250LCBidWZmZXIsIGZyb20s
IG51bUdseXBocywgcG9pbnQsIGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9v
dGhpbmcoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNT
dHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRp
b25hbDx1bnNpZ25lZD4gdG8pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFy
a3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRv
bWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4m
IHJ1biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAg
ICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRl
KGZhbHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBz
dWJydW4sIGN1cnJQb2ludCwgMCwgTnVsbG9wdCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsK
KyAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQ
b2ludCwgMCwgc3RkOjpudWxsb3B0LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwogICAgICAg
ICBjdXJyUG9pbnQubW92ZSh3aWR0aCwgMCk7CiAKICAgICAgICAgYmlkaVJ1biA9IGJpZGlSdW4t
Pm5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggOWEzN2Q3YzlmYTYwYjUwY2IxNGYxYTI4NDdmYzIyYTgzYmYwMGJi
ZS4uODJiOTYxMjZjY2IyMjU4Y2MwNzdmODc2YTc0NzBlMjJhNmViODI0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM4
Nyw5ICszODcsOSBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQgewogICAgIHZvaWQgc2V0VGV4dERy
YXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzKTsKICAgICBUZXh0RHJhd2luZ01vZGVGbGFn
cyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9k
ZTsgfQogCi0gICAgZmxvYXQgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gdG8gPSBOdWxsb3B0KTsKKyAgICBmbG9hdCBkcmF3VGV4dChjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZm
ZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
KTsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBOdWxsb3B0KTsKKyAgICB2
b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZy
b20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBG
b250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KTsKIAogICAgIHZvaWQgYXBwbHlT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwpAQCAtNjk4LDcgKzY5OCw3IEBAIGNs
YXNzIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciB7CiAgICAgICAgICAgICBtX2dyYXBo
aWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFs
aXR5VG9Vc2UpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgT3B0aW9uYWw8SW50ZXJw
b2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5KQorICAgIGV4cGxpY2l0IEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxp
dHkpCiAgICAgICAgIDogSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29u
dGV4dCwgaW50ZXJwb2xhdGlvblF1YWxpdHkgPyBpbnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgp
IDogZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oCmluZGV4IDBjNTdkMjE5NTU0YTRjMWYzNjQwYTRlMWFkOWZhNTA5MmI1ODg1MGMuLjU4MzEy
NTNkZjcwNDRiYjcyYTk2NTY3ZmMyMzJlYTIxNWFiZjA0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTMwNywxMSArMzA3LDEx
IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogCiAgICAgLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSBs
YXllciAodGhlIGxvY2F0aW9uIG9mIGl0cyB0b3AtbGVmdCBjb3JuZXIgaW4gaXRzIHBhcmVudCkK
ICAgICBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRp
b247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcCkg
eyBtX2FwcHJveGltYXRlUG9zaXRpb24gPSBOdWxsb3B0OyBtX3Bvc2l0aW9uID0gcDsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwKSB7IG1fYXBwcm94
aW1hdGVQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsgbV9wb3NpdGlvbiA9IHA7IH0KIAogICAgIC8v
IGFwcHJveGltYXRlUG9zaXRpb24sIGlmIHNldCwgb3ZlcnJpZGVzIHBvc2l0aW9uKCkgYW5kIGlz
IHVzZWQgZHVyaW5nIGNvdmVyYWdlIHJlY3QgY29tcHV0YXRpb24uCiAgICAgRmxvYXRQb2ludCBh
cHByb3hpbWF0ZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcHByb3hpbWF0ZVBvc2l0aW9u
ID8gbV9hcHByb3hpbWF0ZVBvc2l0aW9uLnZhbHVlKCkgOiBtX3Bvc2l0aW9uOyB9Ci0gICAgdm9p
ZCBzZXRBcHByb3hpbWF0ZVBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHApIHsgbV9hcHBy
b3hpbWF0ZVBvc2l0aW9uID0gcDsgfQorICAgIHZvaWQgc2V0QXBwcm94aW1hdGVQb3NpdGlvbihz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHApIHsgbV9hcHByb3hpbWF0ZVBvc2l0aW9uID0gcDsg
fQogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG1vdmUgdW5kZXJseWluZyBwbGF0Zm9ybSBs
YXllcnMgb24gYSBkaWZmZXJlbnQgdGhyZWFkIGZvciBzY3JvbGxpbmc7IGp1c3QgdXBkYXRlIHRo
ZSBHcmFwaGljc0xheWVyIHN0YXRlLgogICAgIHZpcnR1YWwgdm9pZCBzeW5jUG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYgcCkgeyBtX3Bvc2l0aW9uID0gcDsgfQpAQCAtNjAyLDcgKzYwMiw3IEBA
IGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKIAogICAg
IC8vIElmIHNldCwgb3ZlcnJpZGVzIG1fcG9zaXRpb24uIE9ubHkgdXNlZCBmb3IgY292ZXJhZ2Ug
Y29tcHV0YXRpb24uCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0
aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0aW9u
OwogCiAgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9yUG9pbnQ7CiAgICAgRmxvYXRTaXplIG1fc2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDdiZGFiMDc5
YTMzNzJjNzgyYzA1ZTFhYTExZTg3ODI5NzU4NmU1OWEuLjgwYjEyMmI3ZWNhMjk2OTNlNGEzODFk
MjUzYTE1OGM2NDcyOTg5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaApAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNzIEltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8
SW1hZ2U+IHsKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUoKSk7IH0KICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS53aWR0aCgpOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc2l6
ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0IHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50
UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogI2lmIFBM
QVRGT1JNKElPUykKICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvcmlnaW5hbFNpemUoKSBjb25zdCB7
IHJldHVybiBzaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCmluZGV4IGYwZTY1Yjg3MDAxODk0ZDY3Nzc1ZTA1ZmM2YWFlYWIyMjczODFi
MmMuLjM5N2JlZWU1YTcxMjEwNzI0MWI5ODdmMjlhODAyN2UwN2YxMzJmZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTExLDcgKzEx
MSw3IEBAIGNsYXNzIEltYWdlQnVmZmVyIHsKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKICAgICAKLSAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IE51bGxvcHQsIENvb3JkaW5hdGVTeXN0
ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgU3RyaW5nIHRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9
IHN0ZDo6bnVsbG9wdCwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVt
KSBjb25zdDsKICNpZiAhVVNFKENHKQogICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7IH0KICAgICB2b2lkIHRyYW5zZm9y
bUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9y
U3BhY2UpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIGNsYXNzIEltYWdlQnVmZmVyIHsKIH07CiAKICNp
ZiBVU0UoQ0cpCi1TdHJpbmcgZGF0YVVSTChjb25zdCBJbWFnZURhdGEmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOworU3RyaW5nIGRhdGFVUkwoY29u
c3QgSW1hZ2VEYXRhJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkpOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCmlu
ZGV4IDFjNDE4ZTJlZWRlNTkxZmQ4YWRjNGY3NDZmOTA2YzhiNDA0YWNkMDQuLmU3OGE1MzdlODE0
ZjBhMGZmNjQ4Y2UwZWYxMThlZDhlOGExZGQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtMzM1LDEyICszMzUs
MTIgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMKIAogdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNs
ZWFyTWV0YWRhdGEoKQogewotICAgIG1fZnJhbWVDb3VudCA9IE51bGxvcHQ7Ci0gICAgbV9zaW5n
bGVQaXhlbFNvbGlkQ29sb3IgPSBOdWxsb3B0OworICAgIG1fZnJhbWVDb3VudCA9IHN0ZDo6bnVs
bG9wdDsKKyAgICBtX3NpbmdsZVBpeGVsU29saWRDb2xvciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4K
LVQgSW1hZ2VGcmFtZUNhY2hlOjptZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlv
bmFsPFQ+KiBjYWNoZWRWYWx1ZSkKK1QgSW1hZ2VGcmFtZUNhY2hlOjptZXRhZGF0YShjb25zdCBU
JiBkZWZhdWx0VmFsdWUsIHN0ZDo6b3B0aW9uYWw8VD4qIGNhY2hlZFZhbHVlKQogewogICAgIGlm
IChjYWNoZWRWYWx1ZSAmJiAqY2FjaGVkVmFsdWUpCiAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1
ZS0+dmFsdWUoKTsKQEAgLTM1Nyw3ICszNTcsNyBAQCBUIEltYWdlRnJhbWVDYWNoZTo6bWV0YWRh
dGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRpb25hbDxUPiogY2FjaGVkVmFsdWUpCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0Pgot
VCBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hp
bmcsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkKK1QgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZU1l
dGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgSW1hZ2VGcmFtZTo6Q2FjaGluZyBjYWNoaW5nLCBzdGQ6Om9wdGlvbmFsPFQ+KiBjYWNo
ZWRWYWx1ZSkKIHsKICAgICBpZiAoY2FjaGVkVmFsdWUgJiYgKmNhY2hlZFZhbHVlKQogICAgICAg
ICByZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7CkBAIC00MDAsOSArNDAwLDkgQEAgU3RyaW5n
IEltYWdlRnJhbWVDYWNoZTo6ZmlsZW5hbWVFeHRlbnNpb24oKQogICAgIHJldHVybiBtZXRhZGF0
YTxTdHJpbmcsICgmSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik+KFN0cmluZygpLCAm
bV9maWxlbmFtZUV4dGVuc2lvbik7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50PiBJbWFnZUZyYW1l
Q2FjaGU6OmhvdFNwb3QoKQorc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VGcmFtZUNhY2hl
Ojpob3RTcG90KCkKIHsKLSAgICByZXR1cm4gbWV0YWRhdGE8T3B0aW9uYWw8SW50UG9pbnQ+LCAo
JkltYWdlRGVjb2Rlcjo6aG90U3BvdCk+KE51bGxvcHQsICZtX2hvdFNwb3QpOworICAgIHJldHVy
biBtZXRhZGF0YTxzdGQ6Om9wdGlvbmFsPEludFBvaW50PiwgKCZJbWFnZURlY29kZXI6OmhvdFNw
b3QpPihzdGQ6Om51bGxvcHQsICZtX2hvdFNwb3QpOwogfQogCiBJbnRTaXplIEltYWdlRnJhbWVD
YWNoZTo6c2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVDYWNoZS5oCmluZGV4IDZmOTA1YTEwYTZiYTJlMzMxNDllMjMxYzJkZDNjNzVhMjM0
ZmUxMGIuLjMyZWUyMWU4Njk5NDNhZTA3ZjY1YTc5YTgxMDE3M2U0NDc2OGVkY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCkBA
IC03OCw3ICs3OCw3IEBAIGNsYXNzIEltYWdlRnJhbWVDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEltYWdlRnJhbWVDYWNoZT4gewogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAgICAgUmVwZXRp
dGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpOwogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpOwotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCk7CisgICAgc3RkOjpvcHRpb25h
bDxJbnRQb2ludD4gaG90U3BvdCgpOwogICAgIAogICAgIC8vIEltYWdlIG1ldGFkYXRhIHdoaWNo
IGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZmlyc3QgSW1hZ2VGcmFtZS4KICAgICBJbnRTaXplIHNp
emUoKTsKQEAgLTEwNiwxMCArMTA2LDEwIEBAIGNsYXNzIEltYWdlRnJhbWVDYWNoZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEltYWdlRnJhbWVDYWNoZT4gewogICAgIEltYWdlRnJhbWVDYWNoZShOYXRp
dmVJbWFnZVB0ciYmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rl
cjo6KmZ1bmN0b3IpKCkgY29uc3Q+Ci0gICAgVCBtZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFs
dWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIpOworICAgIFQgbWV0YWRhdGEo
Y29uc3QgVCYgZGVmYXVsdFZhbHVlLCBzdGQ6Om9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51
bGxwdHIpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0
b3IpKCkgY29uc3Q+Ci0gICAgVCBmcmFtZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpVbmRlZmluZGVkLCBJbWFnZUZyYW1l
OjpDYWNoaW5nID0gSW1hZ2VGcmFtZTo6Q2FjaGluZzo6RW1wdHksIE9wdGlvbmFsPFQ+KiA9IG51
bGxwdHIpOworICAgIFQgZnJhbWVNZXRhZGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6VW5kZWZpbmRlZCwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZyA9IEltYWdlRnJhbWU6OkNhY2hpbmc6OkVtcHR5LCBzdGQ6Om9wdGlvbmFsPFQ+KiA9IG51
bGxwdHIpOwogCiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2RlY29kZXI7IH0KICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2Rl
ZFNpemUpOwpAQCAtMTUzLDE2ICsxNTMsMTYgQEAgY2xhc3MgSW1hZ2VGcmFtZUNhY2hlIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VGcmFtZUNhY2hlPiB7CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4g
bV9kZWNvZGluZ1F1ZXVlOwogCiAgICAgLy8gSW1hZ2UgbWV0YWRhdGEuCi0gICAgT3B0aW9uYWw8
Ym9vbD4gbV9pc1NpemVBdmFpbGFibGU7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBtX2ZyYW1lQ291
bnQ7Ci0gICAgT3B0aW9uYWw8UmVwZXRpdGlvbkNvdW50PiBtX3JlcGV0aXRpb25Db3VudDsKLSAg
ICBPcHRpb25hbDxTdHJpbmc+IG1fZmlsZW5hbWVFeHRlbnNpb247Ci0gICAgT3B0aW9uYWw8T3B0
aW9uYWw8SW50UG9pbnQ+PiBtX2hvdFNwb3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2lz
U2l6ZUF2YWlsYWJsZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbV9mcmFtZUNvdW50Owor
ICAgIHN0ZDo6b3B0aW9uYWw8UmVwZXRpdGlvbkNvdW50PiBtX3JlcGV0aXRpb25Db3VudDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV9maWxlbmFtZUV4dGVuc2lvbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+PiBtX2hvdFNwb3Q7CiAKICAgICAvLyBJbWFn
ZSBtZXRhZGF0YSB3aGljaCBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIGZpcnN0IEltYWdlRnJhbWUu
Ci0gICAgT3B0aW9uYWw8SW50U2l6ZT4gbV9zaXplOwotICAgIE9wdGlvbmFsPEludFNpemU+IG1f
c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKLSAgICBPcHRpb25hbDxDb2xvcj4gbV9zaW5nbGVQ
aXhlbFNvbGlkQ29sb3I7CisgICAgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBtX3NpemU7CisgICAg
c3RkOjpvcHRpb25hbDxJbnRTaXplPiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CisgICAg
c3RkOjpvcHRpb25hbDxDb2xvcj4gbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3I7CiB9OwogICAgIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5k
ZXggM2UyNDEyNmI0NjA0ZjA1NzA1YmU2ZTI0MDc4ZWY1MmVjMDU4ZWUxMy4uNzM4MThkOWYwNWQ4
MWViODMyYzI0YzcyZjE5YjY0MGVhMjRlNmRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIEltYWdl
U291cmNlIHsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+
ZnJhbWVDb3VudCgpOyB9CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIHsg
cmV0dXJuIG1fZnJhbWVDYWNoZS0+cmVwZXRpdGlvbkNvdW50KCk7IH0KICAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSB7IHJldHVybiBtX2ZyYW1lQ2FjaGUtPmZpbGVuYW1lRXh0ZW5zaW9u
KCk7IH0KLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIHsgcmV0dXJuIG1fZnJhbWVD
YWNoZS0+aG90U3BvdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+aG90U3BvdCgpOyB9CiAKICAgICAvLyBJbWFnZSBtZXRh
ZGF0YSB3aGljaCBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIGZpcnN0IEltYWdlRnJhbWUuCiAgICAg
SW50U2l6ZSBzaXplKCkgeyByZXR1cm4gbV9mcmFtZUNhY2hlLT5zaXplKCk7IH0KQEAgLTExMCw3
ICsxMTAsNyBAQCBjbGFzcyBJbWFnZVNvdXJjZSB7CiAgICAgUmVmPEltYWdlRnJhbWVDYWNoZT4g
bV9mcmFtZUNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZURlY29kZXI+IG1fZGVjb2Rl
cjsKIAotICAgIE9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+IG1fbWF4aW11bVN1YnNhbXBsaW5n
TGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiBtX21heGltdW1TdWJz
YW1wbGluZ0xldmVsOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgZXhwb3NlIGEgc2V0dGluZyB0byBlbmFibGUvZGlzYWJsZSBwcm9ncmVzc2l2ZSBsb2FkaW5n
IHNvIHRoYXQgd2UgY2FuIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXgg
MjVmZTQzMzM2ODc0N2Q4MGE5ODU1MWI5NjU3NTFjNDNkMTdjZWEzZi4uYTdkOTA3MTI5NGY1NzI5
NjZiNThiNzQ1NGE3M2VlMjM1YzNmYjczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKQEAgLTQ2MiwxMyArNDYyLDEzIEBAIHN0
YXRpYyBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBhZGp1c3RlZHRSYWRpaUZvckh1Z2dpbmdDdXJ2
ZShjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgcmV0dXJuIHJhZGlpOwogfQogICAgIAotc3RhdGlj
IE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFw
aDo6UG9seWdvbiYgcG9seSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZy
b21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdvbiYgcG9seSkKIHsKICAgICBp
ZiAocG9seS5zaXplKCkgIT0gNCkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEZsb2F0UmVjdD4o
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PigpOwogCi0gICAgT3B0
aW9uYWw8RmxvYXRQb2ludD4gdG9wTGVmdDsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBib3R0
b21SaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHRvcExlZnQ7CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21SaWdodDsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcG9seS5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiB0b0VkZ2Ug
PSBwb2x5W2ldOwogICAgICAgICBjb25zdCBhdXRvJiBmcm9tRWRnZSA9IChpID4gMCkgPyBwb2x5
W2kgLSAxXSA6IHBvbHlbcG9seS5zaXplKCkgLSAxXTsKQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJvbVBvbHlnb24oY29uc3QgRmxvYXRQb2ludEdy
YXBoOjpQb2x5Z29uJiBwb2x5KQogICAgICAgICB9CiAgICAgfQogICAgIGlmICghdG9wTGVmdCB8
fCAhYm90dG9tUmlnaHQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxGbG9hdFJlY3Q+KCk7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4oKTsKICAgICByZXR1cm4gRmxv
YXRSZWN0KHRvcExlZnQudmFsdWUoKSwgYm90dG9tUmlnaHQudmFsdWUoKSk7CiB9CiAKQEAgLTUx
Niw3ICs1MTYsNyBAQCBQYXRoIFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJl
Y3RzRm9yT3V0bGluZShjb25zdCBWZWN0b3I8RmxvYXRSZWN0PgogICAgICAgICByZXR1cm4gUGF0
aCgpOwogICAgIGNvbnN0IGF1dG8mIHBvbHkgPSBwb2x5cy5hdCgwKTsKICAgICAvLyBGYXN0IHBh
dGggd2hlbiBwb2x5IGhhcyBvbmUgcmVjdCBvbmx5LgotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
cmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gcmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5KTsKICAgICBpZiAocmVjdCkKICAgICAgICAg
cmV0dXJuIHJvdW5kZWRSZWN0KHJlY3QudmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggNTIzYjNhZjVkN2JlNzdmYTFk
ZTc2OWU4ZGMxMzA3NmQ1ZjNjMjEzZi4uMzI5Y2ExMDA5YmNhOGRhMWE4Y2UxMDExODIwMzUwZmZl
OTk0YTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCBJbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0
ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRgogICAg
IGlmIChtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgp
KSB7CiAgICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFw
UXVhZChGbG9hdFF1YWQoc2hhZG93ZWRSZWN0KSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUG9seWdv
bi5tb3ZlKG1fb2Zmc2V0KTsKLSAgICAgICAgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdvbiku
Ym91bmRpbmdCb3goKTsKKyAgICAgICAgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJv
dW5kaW5nQm94KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5ZXJSZWN0ID0gc2hhZG93ZWRS
ZWN0OwogICAgICAgICBsYXllclJlY3QubW92ZShtX29mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCmluZGV4IDBkMmI0ODRiZDhmZjc4
ZjM3ZTRkNWY1ZTA3MjJiMWY0OTk5MTNiNGEuLmJiMWQzMzE1ODMyN2QwZTE5ZTNkMmJlYzgwNTBl
M2I5ODQ0MWMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rp
bGVkQmFja2luZy5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIFRpbGVkQmFja2luZyB7CiAgICAg
dmlydHVhbCBGbG9hdFJlY3QgdmlzaWJsZVJlY3QoKSBjb25zdCA9IDA7CiAKICAgICAvLyBPbmx5
IHVzZWQgdG8gdXBkYXRlIHRoZSB0aWxlIGNvdmVyYWdlIG1hcC4gCi0gICAgdmlydHVhbCB2b2lk
IHNldExheW91dFZpZXdwb3J0UmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldExheW91dFZpZXdwb3J0UmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4p
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDb3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdCgpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGI3NTljZDhiNWNkMTBjOWExMzk5ZmYxNzhlMDkz
MzVkNzBlMjMxNzAuLmFjMDQ2MDlmZGQ2N2Q5MjFmZDg5N2IzYmExMzAxOTBjOTM4ZDlkNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM1NSw3ICsyMzU1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGlj
c0NvbnRleHQmIGMKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9s
YXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KG1fbGFzdEltYWdlLmdldCgpKSk7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gW2ZpcnN0RW5hYmxlZFZpZGVvVHJh
Y2sgcHJlZmVycmVkVHJhbnNmb3JtXTsKLSAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRwdXRS
ZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFJlY3Qob3V0cHV0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkT3V0cHV0UmVj
dCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUmVjdChvdXRwdXRSZWN0KTsKIAogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNm
b3JtKTsKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1h
Z2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWRPdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5k
ZXggNTUzZGU4ZmJlYTA3ZTY2YTBhMjQyM2QwZWRhZjU1MGY3MGE1MmI1OC4uMDY0ZWY4ZjUwN2Y5
MmM4NGRlZDExMjFiYWU3NTRjMzAzMmViNzQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0xNTgsNyArMTU4LDcgQEAg
Y2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVm
ZmVyUHJpdmF0ZSB7CiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CiAg
ICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogbV9zZXNzaW9uIHsgbnVsbHB0ciB9Owog
Ci0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CisgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAgICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsK
ICAgICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZDsKICAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNS
ZXNldCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGZjMmViOGI2ZmY4ZGRhMDdiMGE3Njk5YzU0Njk4
OWE1MTAzYWFmZDMuLjhhMDI0M2RlMmZiZmM5ZTZlNGQxNDUyNDgyMTg3NjM0OWQ4OGMwNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6Zmx1c2goQXRvbWljU3RyaW5nIHRyYWNrSURTdHJpbmcpCiB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpmbHVzaChBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqcmVuZGVyZXIp
CiB7CiAgICAgW3JlbmRlcmVyIGZsdXNoXTsKLSAgICBtX2NhY2hlZFNpemUgPSBOdWxsb3B0Owor
ICAgIG1fY2FjaGVkU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtX21lZGlhU291cmNl
KSB7CiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zZXRIYXNBdmFpbGFibGVWaWRl
b0ZyYW1lKGZhbHNlKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OnNlZWtUb1RpbWUoTWVkaWFUaW1lIHRpbWUpCiAKIEZsb2F0U2l6ZSBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUoKQogewotICAgIHJldHVybiBtX2Nh
Y2hlZFNpemUudmFsdWVPcihGbG9hdFNpemUoKSk7CisgICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52
YWx1ZV9vcihGbG9hdFNpemUoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMoaW50IHRyYWNrSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAppbmRleCA1M2Q4MGUyMGQwMDVlNGNjYTdjYTUyMWQ3NGFmNjBiZWU0NzAwMDQ1Li5mNzk0ODk4
ZmZiNzNkYjJlMWFiM2ZmMzc1YjA4MGJmNjdlYWU2MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEy
NzQsNyArMTI3NCw3IEBAIEdyYXBoaWNzTGF5ZXJDQTo6VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMg
R3JhcGhpY3NMYXllckNBOjpjb21wdXRlVmlzaWJsZUFuZENvdmVyCiAgICAgfQogCiAgICAgRmxv
YXRSZWN0IGNvdmVyYWdlUmVjdCA9IGNsaXBSZWN0Rm9yU2VsZjsKLSAgICBPcHRpb25hbDxGbG9h
dFF1YWQ+IHF1YWQgPSBzdGF0ZS5tYXBwZWRTZWNvbmRhcnlRdWFkKCZtYXBXYXNDbGFtcGVkKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4gcXVhZCA9IHN0YXRlLm1hcHBlZFNlY29uZGFy
eVF1YWQoJm1hcFdhc0NsYW1wZWQpOwogICAgIGlmIChxdWFkICYmICFtYXBXYXNDbGFtcGVkICYm
ICFhcHBseVdhc0NsYW1wZWQpCiAgICAgICAgIGNvdmVyYWdlUmVjdCA9ICgqcXVhZCkuYm91bmRp
bmdCb3goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDQxMzJiMDQ4NmEzYTg3ZDJlZjNhMzc4OGEyNzk5
YjYxNGIzYTFlMmMuLjM4YTRkMjg1NTI2YzRmMmMyZGY3Njc4MzUxYWQzMTBhNzM3ODYxZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRW
aXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgdXBkYXRlVGlsZUNvdmVyYWdl
TWFwKCk7CiB9CiAKLXZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldExheW91dFZpZXdwb3J0UmVjdChP
cHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QpCit2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRMYXlvdXRW
aWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QpCiB7CiAgICAgaWYgKHJl
Y3QgPT0gbV9sYXlvdXRWaWV3cG9ydFJlY3QpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4
IGMzZWU0MWUwNmJkODgyMDAzMWVkMjkyMTI4NjE1ZmU3OWQ5MzNhYzguLjhjODRjN2NjOTI3NjZj
NDZmOTc1OTExNzExZjg5N2JkZWJiMThkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApAQCAtODIsNyArODIsNyBAQCBj
bGFzcyBUaWxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBUaWxlZEJhY2tpbmcgewogCiAgICAg
RmxvYXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92aXNpYmxl
UmVjdDsgfQogICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2NvdmVyYWdlUmVjdDsgfQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0Vmll
d3BvcnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRWaWV3cG9ydFJlY3Q7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0Vmlld3BvcnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9sYXlvdXRWaWV3cG9ydFJlY3Q7IH0KIAogICAgIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3Vu
dCgpIGNvbnN0OwogICAgIHN0YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291bnRGb3JUaWxlcyhj
b25zdCBQbGF0Zm9ybUxheWVyTGlzdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFBvaW50
Jik7CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3MgVGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJs
aWMgVGlsZWRCYWNraW5nIHsKIAogICAgIC8vIFRpbGVkQmFja2luZyBtZW1iZXIgZnVuY3Rpb25z
LgogICAgIHZvaWQgc2V0VmlzaWJsZVJlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0Pikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+KSBvdmVycmlkZTsKICAgICB2b2lkIHNldENvdmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKICAgICBib29sIHRpbGVzV291bGRDaGFuZ2VGb3JDb3ZlcmFnZVJlY3QoY29u
c3QgRmxvYXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRUaWxlZFNjcm9sbGlu
Z0luZGljYXRvclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKQEAgLTE5Miw3
ICsxOTIsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBUaWxlZEJhY2tp
bmcgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV96b29tZWRPdXRUaWxlR3JpZDsK
IAogICAgIEZsb2F0UmVjdCBtX3Zpc2libGVSZWN0OyAvLyBPbmx5IHVzZWQgZm9yIHNjcm9sbCBw
ZXJmb3JtYW5jZSBsb2dnaW5nLgotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9sYXlvdXRWaWV3
cG9ydFJlY3Q7IC8vIE9ubHkgdXNlZCBieSB0aGUgdGlsZWQgc2Nyb2xsaW5nIGluZGljYXRvci4K
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbV9sYXlvdXRWaWV3cG9ydFJlY3Q7IC8vIE9u
bHkgdXNlZCBieSB0aGUgdGlsZWQgc2Nyb2xsaW5nIGluZGljYXRvci4KICAgICBGbG9hdFJlY3Qg
bV9jb3ZlcmFnZVJlY3Q7CiAgICAgSW50UmVjdCBtX2JvdW5kc0F0TGFzdFJldmFsaWRhdGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggY2ZjNjZmYTA3ZjQ3MDU3NWJhMWMxZGIxNTJhNjAz
MzMwNWJkOWRjNC4uMGIwZTY5NTY5YjQ1NWUwODkzZWQ0ZTYwOWM0M2ZkNmU1Yjc2NWRmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCBzdGF0aWMgYm9vbCBlbmNv
ZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBW
ZWN0b3I8YwogICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oaW1h
Z2UsIHdyaXRlRnVuY3Rpb24sIG91dHB1dCkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1M7CiB9CiAK
LVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4sIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZm
ZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4sIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKaW5kZXggNDU4NzU2MjQwNGY3ZDFhZTQyM2Q1NjRhM2MyZjRmZTgyZTc2NThjNi4uZjZj
NTQ0YzRjNjNlOGJlY2ZkNDE1YWVkMGI5YTU5NGVhN2RiMzMyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTQ1
OCw3ICs0NTgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBlbmNv
ZGVJbWFnZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiB1dGksIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgQ0ZNdXRhYmxlRGF0YVJlZiBkYXRhKQorc3RhdGljIGJvb2wgZW5jb2RlSW1h
Z2UoQ0dJbWFnZVJlZiBpbWFnZSwgQ0ZTdHJpbmdSZWYgdXRpLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgQ0ZNdXRhYmxlRGF0YVJlZiBkYXRhKQogewogICAgIGlmICghaW1hZ2UgfHwg
IXV0aSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDgzLDcgKzQ4Myw3IEBA
IHN0YXRpYyBib29sIGVuY29kZUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIHV0
aSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsCiAgICAgcmV0dXJuIENHSW1hZ2VEZXN0aW5hdGlvbkZp
bmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKIH0KIAotc3RhdGljIFN0cmluZyBkYXRhVVJMKENH
SW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkKK3N0YXRpYyBTdHJpbmcgZGF0YVVSTChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICBh
dXRvIHV0aSA9IHV0aUZyb21NSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CkBA
IC00OTgsNyArNDk4LDcgQEAgc3RhdGljIFN0cmluZyBkYXRhVVJMKENHSW1hZ2VSZWYgaW1hZ2Us
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4KICAgICByZXR1cm4gImRh
dGE6IiArIG1pbWVUeXBlICsgIjtiYXNlNjQsIiArIGJhc2U2NERhdGE7CiB9CiAKLVN0cmluZyBJ
bWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0cmluZyBJbWFnZUJ1ZmZl
cjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIEFTU0VSVChNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkp
OwogCkBAIC01MzksNyArNTM5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LAogICAgIHJldHVy
biBkYXRhVVJMKGltYWdlLmdldCgpLCBtaW1lVHlwZSwgcXVhbGl0eSk7CiB9CiAKLVN0cmluZyBk
YXRhVVJMKGNvbnN0IEltYWdlRGF0YSYgc291cmNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCitTdHJpbmcgZGF0YVVSTChjb25zdCBJbWFnZURhdGEm
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1
YWxpdHkpCiB7CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBiMjkwMzFl
YmI3MGYxYWUwZDc1NTQ0MzVhNjY4ZTMzNWYzMGE2MjNlLi5kZDI4YTRhMDBjZjVmNzdmMTNhNTcy
ZDU0OGNlODhlNzM1OWUzZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yMDMsMjMgKzIwMywyMyBAQCBS
ZXBldGl0aW9uQ291bnQgSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAogICAg
IHJldHVybiBSZXBldGl0aW9uQ291bnROb25lOwogfQogCi1PcHRpb25hbDxJbnRQb2ludD4gSW1h
Z2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdl
RGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0CiB7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRl
eChtX25hdGl2ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7
CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpbnQgeCA9IC0xLCB5ID0gLTE7CiAgICAg
Q0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3Bl
cnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsKICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1i
ZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ4KSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgbnVtID0gKENG
TnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJo
b3RzcG90WSIpKTsKICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51
bWJlckludFR5cGUsICZ5KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKHggPCAwIHx8IHkgPCAwKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBy
ZXR1cm4gSW50UG9pbnQoeCwgeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA2YmMyMzY4MWFhNjE5OWUyMTky
NzFhYzNmNTAwZjA2NGY1MWI1YWZkLi40ZTBmNjc1ZDNiOGRjNzMzNzZmZDI0NmExMDU2MGI1YWYx
NGJiZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSW1hZ2VEZWNvZGVyIHsK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OwogICAgIFJlcGV0aXRpb25Db3VudCByZXBl
dGl0aW9uQ291bnQoKSBjb25zdDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OworICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKIAogICAgIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0KSBjb25zdDsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRD
b2NvYS5tbQppbmRleCA1MTAyYzIxZDFiZDY1N2ZkN2E0YzMwNTMzZjhmOGI4NWUyZDZjYjg4Li45
YzE4NmNkMjQwYzU3NDI5ZTQ4ZWI4ODVmZDgyZGE4ODU4OWZmMGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCkBAIC00MDQs
NyArNDA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVHJ1ZVR5cGVGZWF0dXJlKENGRGljdGlv
bmFyeVJlZiBmZWF0dXJlKQogICAgIHJldHVybiBDRkRpY3Rpb25hcnlDb250YWluc0tleShmZWF0
dXJlLCBrQ1RGb250RmVhdHVyZVR5cGVJZGVudGlmaWVyS2V5KSAmJiBDRkRpY3Rpb25hcnlDb250
YWluc0tleShmZWF0dXJlLCBrQ1RGb250RmVhdHVyZVNlbGVjdG9ySWRlbnRpZmllcktleSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q0ZTdHJpbmdSZWY+IG9wZW5UeXBlRmVhdHVyZShD
RkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxDRlN0
cmluZ1JlZj4gb3BlblR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQogewogICAg
IEFTU0VSVChpc09wZW5UeXBlRmVhdHVyZShmZWF0dXJlKSk7CiAgICAgQ0ZTdHJpbmdSZWYgdGFn
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUs
IGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVUYWcpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMg
aW5saW5lIE9wdGlvbmFsPENGU3RyaW5nUmVmPiBvcGVuVHlwZUZlYXR1cmUoQ0ZEaWN0aW9uYXJ5
UmVmIGZlYXR1cmUpCiAgICAgQ0ZOdW1iZXJSZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxDRk51bWJl
clJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZmVhdHVyZSwga0NURm9udE9wZW5UeXBlRmVhdHVy
ZVZhbHVlKSk7CiAgICAgYXV0byBzdWNjZXNzID0gQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZSwga0NG
TnVtYmVySW50VHlwZSwgJnJhd1ZhbHVlKTsKICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1
Y2Nlc3MpOwotICAgIHJldHVybiByYXdWYWx1ZSA/IE9wdGlvbmFsPENGU3RyaW5nUmVmPih0YWcp
IDogTnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFsdWUgPyBzdGQ6Om9wdGlvbmFsPENGU3RyaW5n
UmVmPih0YWcpIDogc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxp
bnQsIGludD4gdHJ1ZVR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQpAQCAtNTky
LDExICs1OTIsMTEgQEAgRmxvYXRSZWN0IEZvbnQ6OnBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5
cGggZ2x5cGgpIGNvbnN0CiB9CiAKICNpZiAhKChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDAwMDApKQotc3RhdGljIGlubGluZSBP
cHRpb25hbDxDR1NpemU+IGFkdmFuY2VGb3JDb2xvckJpdG1hcEZvbnQoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBHbHlwaCBnbHlwaCkKK3N0YXRpYyBpbmxpbmUgc3RkOjpv
cHRpb25hbDxDR1NpemU+IGFkdmFuY2VGb3JDb2xvckJpdG1hcEZvbnQoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBHbHlwaCBnbHlwaCkKIHsKICAgICBDVEZvbnRSZWYgZm9u
dCA9IHBsYXRmb3JtRGF0YS5mb250KCk7CiAgICAgaWYgKCFmb250IHx8ICFwbGF0Zm9ybURhdGEu
aXNDb2xvckJpdG1hcEZvbnQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQ0dTaXplIGFkdmFuY2U7CiAgICAgQ1RGb250R2V0QWR2
YW5jZXNGb3JHbHlwaHMoZm9udCwga0NURm9udE9yaWVudGF0aW9uRGVmYXVsdCwgJmdseXBoLCAm
YWR2YW5jZSwgMSk7CiAgICAgcmV0dXJuIGFkdmFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKaW5kZXggNGFmMTgyNjVlNDhhZDcxMDJkM2Y1NWNkZWQyMDA3Yjk1MTYxZjc2
NS4uMGZjYTEyM2RhMGFhNWM1MDFmMjNmMDk1NTg0OWRkM2VmY2U3NDMzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgRHJhd0ds
eXBoczo6Y29tcHV0ZUJvdW5kcygpCiAgICAgfQogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERy
YXdHbHlwaHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0dseXBoczo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKIHsKICAgICBGbG9hdFJlY3QgbG9jYWxCb3VuZHMgPSBtX2JvdW5k
czsKICAgICBsb2NhbEJvdW5kcy5tb3ZlKG1fYmxvY2tMb2NhdGlvbi54KCksIG1fYmxvY2tMb2Nh
dGlvbi55KCkpOwpAQCAtNTc1LDcgKzU3NSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UmVjdCYgaXRlbSkKICAgICByZXR1cm4gdHM7
CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmU6OmxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmU6
OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRS
ZWN0IGJvdW5kczsKICAgICBib3VuZHMuZml0VG9Qb2ludHMobV9wb2ludDEsIG1fcG9pbnQyKTsK
QEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIERyYXdMaW5lc0ZvclRleHQ6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRyYXdMaW5lc0ZvclRleHQocG9p
bnQoKSwgbV93aWR0aHMsIG1fcHJpbnRpbmcsIG1fZG91YmxlTGluZXMpOwogfQogCi1PcHRpb25h
bDxGbG9hdFJlY3Q+IERyYXdMaW5lc0ZvclRleHQ6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmVzRm9yVGV4
dDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhIHZhbHVlIGVxdWFsIHRvIG9yIGVuY2xvc2lu
ZyB3aGF0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdN
b2RlRm9yVGV4dCgpIHJldHVybnMuCiAKQEAgLTYzMCw3ICs2MzAsNyBAQCB2b2lkIERyYXdMaW5l
Rm9yRG9jdW1lbnRNYXJrZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
ICAgICBjb250ZXh0LmRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIobV9wb2ludCwgbV93aWR0aCwg
bV9zdHlsZSk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmVGb3JEb2N1bWVudE1h
cmtlcjo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBEcmF3TGluZUZvckRvY3VtZW50TWFya2VyOjpsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbmVl
ZHMgdG8gcmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gb3IgZW5jbG9zaW5nIHdoYXQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKCkgcmV0dXJucy4KIApAQCAtNjc5LDcg
KzY3OSw3IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1BhdGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRyYXdGb2N1c1JpbmcobV9wYXRoLCBtX3dpZHRo
LCBtX29mZnNldCwgbV9jb2xvcik7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3Vz
UmluZ1BhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlc3VsdCA9IG1fcGF0
aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgcmVzdWx0LmluZmxhdGUocGxhdGZvcm1Gb2N1c1Jp
bmdXaWR0aCk7CkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBEcmF3Rm9jdXNSaW5nUmVjdHM6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRyYXdGb2N1
c1JpbmcobV9yZWN0cywgbV93aWR0aCwgbV9vZmZzZXQsIG1fY29sb3IpOwogfQogCi1PcHRpb25h
bDxGbG9hdFJlY3Q+IERyYXdGb2N1c1JpbmdSZWN0czo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3Rm9jdXNSaW5n
UmVjdHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAg
RmxvYXRSZWN0IHJlc3VsdDsKICAgICBmb3IgKGF1dG8mIHJlY3QgOiBtX3JlY3RzKQpAQCAtODI1
LDcgKzgyNSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLU9wdGlvbmFs
PEZsb2F0UmVjdD4gU3Ryb2tlUmVjdDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VSZWN0Ojpsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIEZsb2F0UmVjdCBib3VuZHMg
PSBtX3JlY3Q7CiAgICAgYm91bmRzLmV4cGFuZChtX2xpbmVXaWR0aCwgbV9saW5lV2lkdGgpOwpA
QCAtODQ1LDcgKzg0NSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotT3B0
aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VQYXRoOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlUGF0
aDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRha2Ugc3Ryb2tlIHRoaWNrbmVzcyBpbnRvIGFjY291bnQg
Y29ycmVjdGx5LCB2aWEgQ0dQYXRoQnlTdHJva2luZ1BhdGgoKS4KICAgICBmbG9hdCBzdHJva2VU
aGlja25lc3MgPSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwpAQCAtODY3LDcgKzg2Nyw3IEBA
IHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJv
a2VQYXRoJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBT
dHJva2VFbGxpcHNlOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlRWxsaXBzZTo6bG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGZsb2F0IHN0
cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGE3MWUzMTQ5Yjg4MzY0Y2IwOWRjY2NjM2NjZGE4M2Zi
MDVjOGRkZmMuLmE3MGZkNmQxZTQxZGMwN2VhMjA0MmIxMGI1MzFmODNiOTJhMTlkNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMTcyLDEyICsxNzIsMTIgQEAgY2xhc3Mg
RHJhd2luZ0l0ZW0gOiBwdWJsaWMgSXRlbSB7CiAKICAgICAvLyBSZXR1cm4gYm91bmRzIG9mIHRo
aXMgZHJhd2luZyBvcGVyYXRpb24gaW4gbG9jYWwgY29vcmRpbmF0ZXMuCiAgICAgLy8gRG9lcyBu
b3QgaW5jbHVkZSBlZmZldHMgb2YgdHJhbnNmb3JtLCBzaGFkb3cgZXRjIGluIHRoZSBzdGF0ZS4K
LSAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc0RyYXdpbmdJdGVtKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBtX2V4dGVudDsgLy8gSW4gYmFzZSBjb29yZGluYXRlcywgdGFraW5nIHNoYWRv
d3MgYW5kIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LgorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBtX2V4dGVudDsgLy8gSW4gYmFzZSBjb29yZGluYXRlcywgdGFraW5nIHNoYWRvd3MgYW5k
IHRyYW5zZm9ybXMgaW50byBhY2NvdW50LgogfTsKIAogY2xhc3MgU2F2ZSA6IHB1YmxpYyBJdGVt
IHsKQEAgLTU0Myw3ICs1NDMsNyBAQCBjbGFzcyBEcmF3R2x5cGhzIDogcHVibGljIERyYXdpbmdJ
dGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEds
eXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoKSBjb25zdDsKIApAQCAtNTcyLDcgKzU3Miw3
IEBAIGNsYXNzIERyYXdJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZGVzdGluYXRpb247IH0KIAogICAgIG11dGFibGUgUmVmPEltYWdlPiBtX2ltYWdlOyAv
LyBGSVhNRTogRHJhd2luZyBpbWFnZXMgY2FuIGNhdXNlIHRoZWlyIGFuaW1hdGlvbnMgdG8gcHJv
Z3Jlc3MuIFRoaXMgc2hvdWxkbid0IGhhdmUgdG8gYmUgbXV0YWJsZS4KICAgICBGbG9hdFJlY3Qg
bV9kZXN0aW5hdGlvbjsKQEAgLTU5OSw3ICs1OTksNyBAQCBjbGFzcyBEcmF3VGlsZWRJbWFnZSA6
IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0K
IAogICAgIG11dGFibGUgUmVmPEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTogRHJhd2luZyBpbWFn
ZXMgY2FuIGNhdXNlIHRoZWlyIGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxkbid0
IGhhdmUgdG8gYmUgbXV0YWJsZS4KICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKQEAgLTYy
NSw3ICs2MjUsNyBAQCBjbGFzcyBEcmF3VGlsZWRTY2FsZWRJbWFnZSA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogICAgIG11dGFibGUg
UmVmPEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTogRHJhd2luZyBpbWFnZXMgY2FuIGNhdXNlIHRo
ZWlyIGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxkbid0IGhhdmUgdG8gYmUgbXV0
YWJsZS4KICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKQEAgLTY1Miw3ICs2NTIsNyBAQCBj
bGFzcyBEcmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICNpZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1faW1hZ2U7CkBAIC02ODcsNyArNjg3LDcgQEAgY2xhc3MgRHJhd1BhdHRlcm4gOiBw
dWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAK
ICAgICBtdXRhYmxlIFJlZjxJbWFnZT4gbV9pbWFnZTsgLy8gRklYTUU6IERyYXdpbmcgaW1hZ2Vz
IGNhbiBjYXVzZSB0aGVpciBhbmltYXRpb25zIHRvIHByb2dyZXNzLiBUaGlzIHNob3VsZG4ndCBo
YXZlIHRvIGJlIG11dGFibGUuCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fcGF0dGVyblRyYW5zZm9y
bTsKQEAgLTc1Niw3ICs3NTYsNyBAQCBjbGFzcyBEcmF3UmVjdCA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiAg
ICAgZmxvYXQgbV9ib3JkZXJUaGlja25lc3M7CkBAIC03ODEsNyArNzgxLDcgQEAgY2xhc3MgRHJh
d0xpbmUgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFBvaW50IG1fcG9pbnQxOwogICAgIEZsb2F0
UG9pbnQgbV9wb2ludDI7CkBAIC04MTYsNyArODE2LDcgQEAgY2xhc3MgRHJhd0xpbmVzRm9yVGV4
dCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBGbG9hdFBvaW50IG1fYmxvY2tMb2NhdGlvbjsKICAgICBGbG9hdFNp
emUgbV9sb2NhbEFuY2hvcjsKQEAgLTg0Nyw3ICs4NDcsNyBAQCBjbGFzcyBEcmF3TGluZUZvckRv
Y3VtZW50TWFya2VyIDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UG9pbnQgbV9wb2ludDsKICAgICBmbG9h
dCBtX3dpZHRoOwpAQCAtODcxLDcgKzg3MSw3IEBAIGNsYXNzIERyYXdFbGxpcHNlIDogcHVibGlj
IERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0
IG1fcmVjdDsKIH07CkBAIC04OTQsNyArODk0LDcgQEAgY2xhc3MgRHJhd1BhdGggOiBwdWJsaWMg
RHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXRoLmZhc3RCb3VuZGlu
Z1JlY3QoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhdGguZmFzdEJv
dW5kaW5nUmVjdCgpOyB9CiAKICAgICBjb25zdCBQYXRoIG1fcGF0aDsKIH07CkBAIC05MjMsNyAr
OTIzLDcgQEAgY2xhc3MgRHJhd0ZvY3VzUmluZ1BhdGggOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29uc3QgUGF0
aCBtX3BhdGg7CiAgICAgaW50IG1fd2lkdGg7CkBAIC05NTUsNyArOTU1LDcgQEAgY2xhc3MgRHJh
d0ZvY3VzUmluZ1JlY3RzIDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fcmVjdHM7
CiAgICAgaW50IG1fd2lkdGg7CkBAIC05ODAsNyArOTgwLDcgQEAgY2xhc3MgRmlsbFJlY3QgOiBw
dWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7
IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9h
dFJlY3QgbV9yZWN0OwogfTsKQEAgLTEwMDUsNyArMTAwNSw3IEBAIGNsYXNzIEZpbGxSZWN0V2l0
aENvbG9yIDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQog
CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKICAgICBDb2xvciBtX2NvbG9yOwpAQCAtMTAyOSw3ICsx
MDI5LDcgQEAgY2xhc3MgRmlsbFJlY3RXaXRoR3JhZGllbnQgOiBwdWJsaWMgRHJhd2luZ0l0ZW0g
ewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAg
IG11dGFibGUgUmVmPEdyYWRpZW50PiBtX2dyYWRpZW50OyAvLyBGSVhNRTogTWFrZSB0aGlzIG5v
dCBtdXRhYmxlCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCBjbGFzcyBGaWxsQ29tcG9zaXRlZFJlY3Qg
OiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Jl
Y3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBG
bG9hdFJlY3QgbV9yZWN0OwogICAgIENvbG9yIG1fY29sb3I7CkBAIC0xMDg3LDcgKzEwODcsNyBA
QCBjbGFzcyBGaWxsUm91bmRlZFJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAog
ICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3QucmVjdCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVjdC5yZWN0KCk7IH0KIAogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9y
ZWN0OwogICAgIENvbG9yIG1fY29sb3I7CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBjbGFzcyBGaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JlY3Q7IH0KIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgRmxvYXRSb3VuZGVkUmVj
dCBtX3JvdW5kZWRIb2xlUmVjdDsKQEAgLTExMzksNyArMTEzOSw3IEBAIGNsYXNzIEZpbGxQYXRo
IDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
YXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKICAgICBjb25zdCBQYXRoIG1fcGF0aDsK
IH07CkBAIC0xMTYyLDcgKzExNjIsNyBAQCBjbGFzcyBGaWxsRWxsaXBzZSA6IHB1YmxpYyBEcmF3
aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0Owog
fTsKQEAgLTExODYsNyArMTE4Niw3IEBAIGNsYXNzIFN0cm9rZVJlY3QgOiBwdWJsaWMgRHJhd2lu
Z0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIGZsb2F0IG1fbGluZVdpZHRoOwpAQCAtMTIwOSw3
ICsxMjA5LDcgQEAgY2xhc3MgU3Ryb2tlUGF0aCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAg
fQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0IFBh
dGggbV9wYXRoOwogICAgIEZsb2F0UG9pbnQgbV9ibG9ja0xvY2F0aW9uOwpAQCAtMTIzMiw3ICsx
MjMyLDcgQEAgY2xhc3MgU3Ryb2tlRWxsaXBzZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAg
fQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UmVj
dCBtX3JlY3Q7CiB9OwpAQCAtMTI1NCw3ICsxMjU0LDcgQEAgY2xhc3MgQ2xlYXJSZWN0IDogcHVi
bGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRS
ZWN0IG1fcmVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
aW5kZXggYzljM2M0ZDQ5ZDE1NDIxZTBiNTk5ZmQ0ZmU5OGJkYjZlNGNhY2I2MS4uNmQ2ODUzMzQ1
MGI5MDkyMTMzYmY3MDg2MmYzZWY2MmRiZWYwMzIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIEl0ZW0mIFJlY29yZGVyOjph
cHBlbmRJdGVtKFJlZjxJdGVtPiYmIGl0ZW0pCiAKIHZvaWQgUmVjb3JkZXI6OnVwZGF0ZUl0ZW1F
eHRlbnQoRHJhd2luZ0l0ZW0mIGl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFsPEZsb2F0
UmVjdD4gcmVjdCA9IGl0ZW0ubG9jYWxCb3VuZHMobV9ncmFwaGljc0NvbnRleHQpKQorICAgIGlm
IChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IGl0ZW0ubG9jYWxCb3VuZHMobV9ncmFw
aGljc0NvbnRleHQpKQogICAgICAgICBpdGVtLnNldEV4dGVudChleHRlbnRGcm9tTG9jYWxCb3Vu
ZHMocmVjdC52YWx1ZSgpKSk7CiB9CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIFJlY29yZGVy
OjpDb250ZXh0U3RhdGU6OnJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykKICAgICBBZmZpbmVU
cmFuc2Zvcm0gcm90YXRpb247CiAgICAgcm90YXRpb24ucm90YXRlKGFuZ2xlSW5EZWdyZWVzKTsK
IAotICAgIGlmIChPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSByb3RhdGlvbi5p
bnZlcnNlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNl
ID0gcm90YXRpb24uaW52ZXJzZSgpKQogICAgICAgICBjbGlwQm91bmRzID0gaW52ZXJzZS52YWx1
ZSgpLm1hcFJlY3QoY2xpcEJvdW5kcyk7CiB9CiAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFJl
Y29yZGVyOjpDb250ZXh0U3RhdGU6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1h
dHJpeCkKIHsKICAgICBjdG0gKj0gbWF0cml4OwogCi0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRy
YW5zZm9ybT4gaW52ZXJzZSA9IG1hdHJpeC5pbnZlcnNlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gbWF0cml4LmludmVyc2UoKSkKICAgICAgICAg
Y2xpcEJvdW5kcyA9IGludmVyc2UudmFsdWUoKS5tYXBSZWN0KGNsaXBCb3VuZHMpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZm
ZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVm
ZmVyRWZsLmNwcAppbmRleCA4YTFjOWUyMDk3NmU4NmFiZDIwNWEwZGQ2NzhjZTQxNzVjNTY3MWNh
Li5hMTEyZGI0ZGE4NTM3ZTA0MjRkYTc0MjFiZjZkZWM1ZGE0YzIyMWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5j
cHAKQEAgLTQ3LDEyICs0NywxMiBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZVBORyhjYWlyb19z
dXJmYWNlX3QqIGltYWdlLCBWZWN0b3I8Y2hhcj4qIG91dHB1dCkKICAgICByZXR1cm4gY2Fpcm9f
c3VyZmFjZV93cml0ZV90b19wbmdfc3RyZWFtKGltYWdlLCB3cml0ZUZ1bmN0aW9uLCBvdXRwdXQp
ID09IENBSVJPX1NUQVRVU19TVUNDRVNTOwogfQogCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZUpQ
RUcodW5zaWduZWQgY2hhciogZGF0YSwgSW50U2l6ZSBzaXplLCBWZWN0b3I8Y2hhcj4qIG91dHB1
dCwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQorc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2VKUEVH
KHVuc2lnbmVkIGNoYXIqIGRhdGEsIEludFNpemUgc2l6ZSwgVmVjdG9yPGNoYXI+KiBvdXRwdXQs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogeyAgICAKICAgICByZXR1cm4gY29tcHJl
c3NSR0JBQmlnRW5kaWFuVG9KUEVHKGRhdGEsIHNpemUsICpvdXRwdXQsIHF1YWxpdHkpOwogfQog
Ci1TdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHksIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcg
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBBU1NF
UlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rpbmco
bWltZVR5cGUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmgKaW5kZXggMjVhNWRiYjEyNjE4MzQ3NTNkNTQ3Njg4OTA4NDA1YmZmNzAy
MDk4Yy4uM2FmZmQ0MjFlMGUzZDczMTg3ZjJlMzQyN2ZiNmQ0ZjEzZWI1ODViOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC00
Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlcj4gewog
ICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoZmxvYXQgc2NhbGUpIHsgbV9maWx0ZXJTY2FsZSA9IHNj
YWxlOyB9CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybTsgfQotICAgIEZsb2F0UG9pbnQgbWFw
QWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3Qg
eyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOyB9CisgICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBv
aW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBt
X2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnQpOyB9CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01v
ZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRl
cmluZ01vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCmluZGV4IDNiZmEyNjBkZWFiMjY1NDlkYWRhZTYzNWUx
YTg1NjQ3M2M4NGMwNTYuLmIyZmUyYTkwOTI5ODViMmVhMjQzMzU1N2RmM2FjYTBhZmEyY2YzYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1
ZmZlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0lt
YWdlQnVmZmVyR3RrLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBHVW5pcXVlT3V0
UHRyPGdjaGFyPiYgYnVmZmVyLCBnc2l6ZSYgYnVmZmVyU2l6ZSkKK3N0YXRpYyBib29sIGVuY29k
ZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIEdVbmlxdWVPdXRQdHI8Z2NoYXI+JiBidWZm
ZXIsIGdzaXplJiBidWZmZXJTaXplKQogewogICAgIC8vIExpc3Qgb2Ygc3VwcG9ydGVkIGltYWdl
IGVuY29kaW5nIHR5cGVzIGNvbWVzIGZyb20gdGhlIEdka1BpeGJ1ZiBkb2N1bWVudGF0aW9uLgog
ICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dkay1waXhidWYvc3RhYmxlL2dkay1w
aXhidWYtRmlsZS1zYXZpbmcuaHRtbCNnZGstcGl4YnVmLXNhdmUtdG8tYnVmZmVydgpAQCAtNzUs
NyArNzUsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbgogICAgIHJldHVybiAhZXJyb3I7CiB9
CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0cmlu
ZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIEFT
U0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGlu
ZyhtaW1lVHlwZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAKaW5kZXggNGQ2ZGQxNjAzZTQ5
N2UyZjljZWUwNGI0ZTM2NjYzZGI3NjRkMWE3Ny4uOWU2ZjQ0ODY3NWMxNzE4NDJmZmE3ZjNlNzY2
YjhmMjU0NDg2MDY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcApAQCAtNjUyLDggKzY1Miw4
IEBAIEZsb2F0UmVjdCBIYXJmQnV6elNoYXBlcjo6c2VsZWN0aW9uUmVjdChjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgaW50IGhlaWdodCwgdW5zCiAgICAgYm9vbCBmb3VuZEZyb21YID0gZmFsc2U7
CiAgICAgYm9vbCBmb3VuZFRvWCA9IGZhbHNlOwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZy
b21JbmRleCA9IGZyb207Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRvSW5kZXggPSB0bzsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tSW5kZXggPSBmcm9tOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRvSW5kZXggPSB0bzsKIAogICAgIGlmIChtX3J1bi5ydGwoKSkKICAg
ICAgICAgY3VycmVudFggPSBtX3RvdGFsV2lkdGg7CkBAIC02NjgsNyArNjY4LDcgQEAgRmxvYXRS
ZWN0IEhhcmZCdXp6U2hhcGVyOjpzZWxlY3Rpb25SZWN0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgaGVpZ2h0LCB1bnMKICAgICAgICAgICAgIGlmIChmcm9tSW5kZXggJiYgZnJvbUluZGV4
LnZhbHVlKCkgPj0gbnVtQ2hhcmFjdGVycykKICAgICAgICAgICAgICAgICBmcm9tSW5kZXgudmFs
dWUoKSAtPSBudW1DaGFyYWN0ZXJzOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGZyb21JbmRleCA9IE51bGxvcHQ7CisgICAgICAgICAgICAgICAgZnJvbUluZGV4ID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmb3VuZFRvWCAmJiB0b0luZGV4LnZh
bHVlKCkgPCBudW1DaGFyYWN0ZXJzKSB7CkBAIC02NzgsNyArNjc4LDcgQEAgRmxvYXRSZWN0IEhh
cmZCdXp6U2hhcGVyOjpzZWxlY3Rpb25SZWN0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQg
aGVpZ2h0LCB1bnMKICAgICAgICAgICAgIGlmICh0b0luZGV4ICYmIHRvSW5kZXgudmFsdWUoKSA+
PSBudW1DaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgIHRvSW5kZXgudmFsdWUoKSAtPSBudW1D
aGFyYWN0ZXJzOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRvSW5kZXggPSBO
dWxsb3B0OworICAgICAgICAgICAgICAgIHRvSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoZm91bmRGcm9tWCAmJiBmb3VuZFRvWCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAKaW5kZXggYjk0MTFiNDJiNTI3ZGQ0NDczMjU2ZGE0ODhjMzNkYmVkMzMwYTY0
NS4uOGRmYWY3YjJhOTkyZmU1MzFmYzk5NGQ2M2ExODlmYmQ2NDNlMTAzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKQEAgLTI3NiwxOSArMjc2LDE5IEBAIHN0YXRpYyBib29sIGFkdmFu
Y2VCeUNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFyKiYgaXRlcmF0b3IsIGNv
bnN0IFVDCiB9CiAKIC8vIEZJWE1FOiBDYXBpdGFsaXphdGlvbiBpcyBsYW5ndWFnZS1kZXBlbmRl
bnQgYW5kIGNvbnRleHQtZGVwZW5kZW50IGFuZCBzaG91bGQgb3BlcmF0ZSBvbiBncmFwaGVtZSBj
bHVzdGVycyBpbnN0ZWFkIG9mIGNvZGVwb2ludHMuCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVD
aGFyMzI+IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikKK3N0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFsaXplZChVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIp
CiB7CiAgICAgaWYgKFVfR0VUX0dDX01BU0soYmFzZUNoYXJhY3RlcikgJiBVX0dDX01fTUFTSykK
LSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBVQ2hhcjMyIHVwcGVyY2FzZUNoYXJhY3RlciA9IHVfdG91cHBlcihiYXNlQ2hhcmFjdGVy
KTsKICAgICBBU1NFUlQodXBwZXJjYXNlQ2hhcmFjdGVyID09IGJhc2VDaGFyYWN0ZXIgfHwgKFVf
SVNfQk1QKGJhc2VDaGFyYWN0ZXIpID09IFVfSVNfQk1QKHVwcGVyY2FzZUNoYXJhY3RlcikpKTsK
ICAgICBpZiAodXBwZXJjYXNlQ2hhcmFjdGVyICE9IGJhc2VDaGFyYWN0ZXIpCiAgICAgICAgIHJl
dHVybiB1cHBlcmNhc2VDaGFyYWN0ZXI7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU3ludGhlc2l6ZShjb25zdCBG
b250KiBuZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hhcmFjdGVyLCBPcHRpb25hbDxVQ2hhcjMyPiBj
YXBpdGFsaXplZEJhc2UsIEZvbnRWYXJpYW50Q2FwcyBmb250VmFyaWFudENhcHMsIGJvb2wgZW5n
YWdlQWxsU21hbGxDYXBzUHJvY2Vzc2luZykKK3N0YXRpYyBib29sIHNob3VsZFN5bnRoZXNpemUo
Y29uc3QgRm9udCogbmV4dEZvbnQsIFVDaGFyMzIgYmFzZUNoYXJhY3Rlciwgc3RkOjpvcHRpb25h
bDxVQ2hhcjMyPiBjYXBpdGFsaXplZEJhc2UsIEZvbnRWYXJpYW50Q2FwcyBmb250VmFyaWFudENh
cHMsIGJvb2wgZW5nYWdlQWxsU21hbGxDYXBzUHJvY2Vzc2luZykKIHsKICAgICBpZiAoIW5leHRG
b250IHx8IG5leHRGb250ID09IEZvbnQ6OnN5c3RlbUZhbGxiYWNrKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggODk1ZDM3ZjM5Y2YwNTcy
ZjVkNDk2ZTBlYjYwYWJiMWYyOTA2ZmE1Yy4uNDkxMGNmMGFjN2UyZDg3NjAwMTk4Yjg0OTVlNThk
NzNmOGExNTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIxMSw3ICsyMTEs
NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVw
bGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgogICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zIHJlcGxpY2FPcHRpb25zKG9wdGlvbnMpOwogICAgICAgICByZXBsaWNhT3B0aW9ucy50
cmFuc2Zvcm0KICAgICAgICAgICAgIC5tdWx0aXBseShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9j
dXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpCi0gICAgICAgICAgICAubXVsdGlwbHkobV9jdXJy
ZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkpOworICAgICAgICAgICAgLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21i
aW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAgICAg
ICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxpY2FPcHRpb25zKTsKICAgICB9CiAKQEAgLTIz
MCw3ICsyMzAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFjaXR5
KGZsb2F0IG9wYWNpdHkpCiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRleHR1cmVNYXBwZXJMYXll
cjo6cmVwbGljYVRyYW5zZm9ybSgpCiB7Ci0gICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKSkubXVs
dGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCht
X3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpLm11bHRp
cGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRB
bmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKQEAgLTczMSw3
ICs3MzEsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6ZmluZFNj
cm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYQogRmxvYXRTaXplIFRleHR1cmVNYXBw
ZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQogewogICAg
IGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNldFk7Ci0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgp
LnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgIHRyYW5zZm9ybS5tYXAoMCwg
MCwgemVyb1gsIHplcm9ZKTsKICAgICB0cmFuc2Zvcm0ubWFwKG9mZnNldC53aWR0aCgpLCBvZmZz
ZXQuaGVpZ2h0KCksIG9mZnNldFgsIG9mZnNldFkpOwogICAgIHJldHVybiBGbG9hdFNpemUob2Zm
c2V0WCAtIHplcm9YLCBvZmZzZXRZIC0gemVyb1kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA1ZDc0NGQyNTI5YzIw
MDdiZGUwZTg5OTE0MDAwZjA1N2I3MWQzN2ZjLi4wNTVlZjk5NTQ5ZTY5NDI2MjQxMDNkODg4Y2Jj
NzU0ZDZmYjZkM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTQ3LDcgKzk0Nyw3IEBAIEludFJlY3QgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICAvLyBSZXR1
cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxlIHJlY3QgKHN1cmZhY2UgY29vcmRpbmF0ZXMp
IG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVyIGNvb3JkaW5hdGVzKS4KICAgICAvLyBUaGUg
cmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQgdGhlIHZpc2libGUgcmVjdCBpcyB0
aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAvLyBzbyBpdCBtaWdodCBzcHJlYWQg
ZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAoYW5kIHRoZW4gZXZlbiBtb3JlIGFt
cGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVyKS4KLSAgICBBU1NFUlQobV9jYWNo
ZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgQVNTRVJUKG1fY2FjaGVk
SW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgp
LnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICBGbG9hdFJlY3QgcmVjdCA9
IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFkKEZs
b2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVudHNSZWN0KCkpKTsKICAgICBjbGFt
cFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShyZWN0LCBzaXplKCkpOwogICAgIHJldHVy
biBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAg
ICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3Jt
KCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50KCkgPyBk
b3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpwYXJlbnQoKSkubV9sYXllclRyYW5z
Zm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKIAot
ICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQo
KS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBtX2NhY2hl
ZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgp
LnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVk
IHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4K
ICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFu
c2Zvcm0uY3BwCmluZGV4IGMxNzZmMGQxYWI2Nzg2YTJjMTIyNmIzNDM1YjliMDlkOTAzNjUwYWIu
LjhlYmRkOThmMTgxMDI3MmE2OWJmODAzZTdjY2FhNDUzYzJhMDcyYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3Jt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0Fm
ZmluZVRyYW5zZm9ybS5jcHAKQEAgLTEwNCwxMSArMTA0LDExIEBAIGJvb2wgQWZmaW5lVHJhbnNm
b3JtOjppc0ludmVydGlibGUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OmlzZmluaXRlKGRldGVy
bWluYW50KSAmJiBkZXRlcm1pbmFudCAhPSAwOwogfQogCi1PcHRpb25hbDxBZmZpbmVUcmFuc2Zv
cm0+IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEFmZmlu
ZVRyYW5zZm9ybT4gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBkb3Vi
bGUgZGV0ZXJtaW5hbnQgPSBkZXQobV90cmFuc2Zvcm0pOwogICAgIGlmICghc3RkOjppc2Zpbml0
ZShkZXRlcm1pbmFudCkgfHwgZGV0ZXJtaW5hbnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0g
cmVzdWx0OwogICAgIGlmIChpc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5z
Zm9ybS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZp
bmVUcmFuc2Zvcm0uaAppbmRleCA4MmQzZDZhNGIwNjNhYmZlMTE3MGVhOTVjNzlkYmNjYzNhZDg3
YWMyLi5hMGIxZjdiZDNmZTdlOGI5NTQxMTBlNGVjMTNlYjhhNjQ4Yzk2MTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5z
Zm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
QWZmaW5lVHJhbnNmb3JtLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zv
cm0gewogICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSB5U2NhbGUoKSBjb25zdDsKIAogICAgIGJv
b2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7IC8vIElmIHlvdSBjYWxsIHRoaXMgdGhpcywgeW91J3Jl
IHByb2JhYmx5IGRvaW5nIGl0IHdyb25nLgotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEFm
ZmluZVRyYW5zZm9ybT4gaW52ZXJzZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlKCkgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGJsZW5kKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZnJvbSwgZG91YmxlIHBy
b2dyZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBlNzYzY2MxMzkzZGJj
ZGU2MTEzMjExOGZmYjQzMTkxYzY0OGU0NWU0Li41ZWYwZTViZjQwYjlkZWI0ZTc4Y2U3NDM5MTdh
ODIyMTA4MzFlZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtMTcwLDcgKzE3
MCw3IEBAIEZsb2F0UG9pbnQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KGJvb2wqIHdhc0Ns
YW1wZWQpIGNvbnN0CiAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0
aW9uKQogICAgICAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bWFwUG9pbnQocG9p
bnQpOwogCi0gICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1
ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBl
ZCk7CisgICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9v
cihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQp
OwogfQogCiBGbG9hdFF1YWQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xh
bXBlZCkgY29uc3QKQEAgLTE4MywxMyArMTgzLDEzIEBAIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0
ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdAogICAgIHJldHVybiBxdWFkOwog
fQogCi1PcHRpb25hbDxGbG9hdFF1YWQ+IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlR
dWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4gVHJh
bnNmb3JtU3RhdGU6Om1hcHBlZFNlY29uZGFyeVF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QK
IHsKICAgICBpZiAod2FzQ2xhbXBlZCkKICAgICAgICAgKndhc0NsYW1wZWQgPSBmYWxzZTsKIAog
ICAgIGlmICghbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPEZsb2F0UXVhZD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFk
PigpOwogCiAgICAgRmxvYXRRdWFkIHF1YWQgPSAqbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZDsK
ICAgICBtYXBRdWFkKHF1YWQsIG1fZGlyZWN0aW9uLCB3YXNDbGFtcGVkKTsKQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJh
bnNmb3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbAogICAgIGlmIChkaXJlY3Rpb24gPT0gQXBw
bHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNm
b3JtLT5tYXBRdWFkKHF1YWQpOwogCi0gICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0t
PmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1
YWQsIHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZl
cnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwg
d2FzQ2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3YXNDbGFtcGVkKQpAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3CiAgICAgICAgIH0KIAogICAg
IH0gZWxzZSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0g
PSB0LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVf
b3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIGlmIChtX21hcFBvaW50KQogICAg
ICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlVHJhbnNmb3JtLnByb2plY3RQb2lu
dChtX2xhc3RQbGFuYXJQb2ludCk7CiAgICAgICAgIGlmIChtX21hcFF1YWQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtU3RhdGUuaAppbmRleCA3Mjg3ODYyNDRkODMzNTc0N2ZmYjM2NjE4MTYzNzcwNzQxNTIw
MjRiLi5jZDk1NWFiZjRhYjJmMjE2ZjliNTEwNWY0YmE1YTk5NGRjYjE2Njk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1TdGF0ZS5oCkBAIC04MCw3ICs4MCw3IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlIHsK
ICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IHF1YWQ7CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IHdlYmtpdC5vcmcvYi8xNDQyMjYgdXNlIE9wdGlvbmFsPEZsb2F0UXVhZD4uIAorICAgIC8vIEZJ
WE1FOiB3ZWJraXQub3JnL2IvMTQ0MjI2IHVzZSBzdGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4uIAog
ICAgIHZvaWQgc2V0U2Vjb25kYXJ5UXVhZChjb25zdCBGbG9hdFF1YWQqIHF1YWQpCiAgICAgewog
ICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChubyBhY2N1bXVsYXRl
ZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgpAQCAtOTEsNyArOTEs
NyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNv
bmRhcnlRdWFkID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9i
LzE0NDIyNiB1c2UgT3B0aW9uYWw8RmxvYXRRdWFkPi4KKyAgICAvLyBGSVhNRTogd2Via2l0Lm9y
Zy9iLzE0NDIyNiB1c2Ugc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+LgogICAgIHZvaWQgc2V0TGFz
dFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFkKik7CiAKICAgICB2b2lkIG1vdmUo
TGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0IHksIFRyYW5zZm9ybUFjY3VtdWxhdGlvbiBhY2N1bXVs
YXRlID0gRmxhdHRlblRyYW5zZm9ybSkKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBUcmFuc2Zv
cm1TdGF0ZSB7CiAgICAgLy8gUmV0dXJuIHRoZSBwb2ludCBvciBxdWFkIG1hcHBlZCB0aHJvdWdo
IHRoZSBjdXJyZW50IHRyYW5zZm9ybQogICAgIEZsb2F0UG9pbnQgbWFwcGVkUG9pbnQoYm9vbCog
d2FzQ2xhbXBlZCA9IG51bGxwdHIpIGNvbnN0OwogICAgIEZsb2F0UXVhZCBtYXBwZWRRdWFkKGJv
b2wqIHdhc0NsYW1wZWQgPSBudWxscHRyKSBjb25zdDsKLSAgICBPcHRpb25hbDxGbG9hdFF1YWQ+
IG1hcHBlZFNlY29uZGFyeVF1YWQoYm9vbCogd2FzQ2xhbXBlZCA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPiBtYXBwZWRTZWNvbmRhcnlRdWFkKGJvb2wqIHdh
c0NsYW1wZWQgPSBudWxscHRyKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIHRyYW5zbGF0
ZVRyYW5zZm9ybShjb25zdCBMYXlvdXRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCmluZGV4IDRkMWYwYmZmODgzOWE2MDM5YzE0M2RiNTJiOWQ0ZjAwMjMwOGRk
ZWUuLjI0MjdiMDFjMTdhY2RmYTg4ZTE3OTIwMTg3NGY1OTE3YjU4OWU2OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBib29s
IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0ludmVydGlibGUoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1PcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gVHJhbnNmb3JtYXRpb25N
YXRyaXg6OmludmVyc2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UoKSBjb25zdAogewogICAgIGlmIChpc0lk
ZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CiAgICAgICAgIC8vIGlkZW50aXR5IG1hdHJpeApAQCAt
MTQ2Myw3ICsxNDYzLDcgQEAgT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5zZm9y
bWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKICAgICAvLyBGSVhNRTogVXNlIExVIGRlY29t
cG9zaXRpb24gdG8gYXBwbHkgdGhlIGludmVyc2UgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUg
aW52ZXJzZSBleHBsaWNpdGx5LgogICAgIC8vIENhbGN1bGF0aW5nIHRoZSBpbnZlcnNlIG9mIGEg
NHg0IG1hdHJpeCB1c2luZyBjb2ZhY3RvcnMgaXMgbnVtZXJpY2FsbHkgdW5zdGFibGUgYW5kIHVu
bmVjZXNzYXJ5IHRvIGFwcGx5IHRoZSBpbnZlcnNlIHRyYW5zZm9ybWF0aW9uIHRvIGEgcG9pbnQu
CiAgICAgaWYgKCFXZWJDb3JlOjppbnZlcnNlKG1fbWF0cml4LCBpbnZNYXQubV9tYXRyaXgpKQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBpbnZNYXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgK
aW5kZXggMDY1NDdkNGM4MTM0NmUwMWVjZjBkNTk1N2U1MGE0YTM0MjZiMWY5NS4uNWRiMGMwMDJh
MmQ4ZmI0ZWVhMGZjY2Y4NGRlMGU1M2YzMTk0NjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguaApAQCAtMjU4LDcgKzI1OCw3IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVj
dFRvUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIGJvb2wg
aXNJbnZlcnRpYmxlKCkgY29uc3Q7IC8vIElmIHlvdSBjYWxsIHRoaXMgdGhpcywgeW91J3JlIHBy
b2JhYmx5IGRvaW5nIGl0IHdyb25nLgotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gaW52ZXJzZSgpIGNvbnN0OwogCiAgICAg
Ly8gRGVjb21wb3NlIHRoZSBtYXRyaXggaW50byBpdHMgY29tcG9uZW50IHBhcnRzLgogICAgIHN0
cnVjdCBEZWNvbXBvc2VkMlR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCmluZGV4IDcxMGEw
YmJmNGQ5YjNiMzVmNmYwMGFiYjI1MTAxZmNjNmUyMzM4M2IuLjljYTE1M2I1MDA4OWRhY2IyOTI5
N2RmMTg5YjI5N2M1NDAwZmI5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKQEAgLTI1NCw3
ICsyNTQsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlw
bGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIG1fZGF0YS5wdXREYXRhKHNv
dXJjZSwgc2NhbGVkU291cmNlU2l6ZSwgc2NhbGVkU291cmNlUmVjdCwgZGVzdFBvaW50LCBpbnRl
cm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQg
PT0gVW5tdWx0aXBsaWVkLCAxKTsKIH0KIAotU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8ZG91YmxlPiwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QK
K1N0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImRhdGE6LCIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAKaW5kZXggM2ZkZTgzMjY0MmIyNGM1NTMzYTE5OTViZjNlYzQzZTJhMTcxMGFkMy4u
MTI5YTIxODQxMGM0YjI1ZDUzYWUxMDY5NDVmZmRjMjZlZDMyODQwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgUmVwZXRpdGlvbkNvdW50IEltYWdlRGVj
b2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKICAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50
Tm9uZTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25z
dAogewogICAgIHJldHVybiBJbnRQb2ludCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRl
eCBlNTM4MjY3MDg0NDZlMGQyOWUwMGRlOTkwYmViZWJjYWM4N2NiYTJlLi5hY2IzMmE5ZjU4MTdh
MTYzMTVkNTlmNGI3YWY4ZGNmNmM3YjkzZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApAQCAt
NTYsNyArNTYsNyBAQCBjbGFzcyBJbWFnZURlY29kZXIgewogICAgIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3Q7CiAKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7
Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7CiAgICAgCiAgICAgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0OwogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1Bs
YXRmb3JtRGlzcGxheVgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94
MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAppbmRleCAxY2EzZmExZDAzNDg2ZTI3ZTI3OGJiYjVl
YTkzZjdiZmVjNjY5NzAxLi42ZGEwNjJmNDBkNjAxNzNhZGU1OGIxNzE0MTJlMzUwNDAxZTQyYjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZv
cm1EaXNwbGF5WDExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94
MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIFBsYXRmb3Jt
RGlzcGxheVgxMTo6c3VwcG9ydHNYQ29tcG9zaXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXBw
b3J0c1hDb21wb3NpdGUudmFsdWUoKTsKIH0KIAotYm9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6OnN1
cHBvcnRzWERhbWFnZShPcHRpb25hbDxpbnQ+JiBkYW1hZ2VFdmVudEJhc2UpIGNvbnN0Citib29s
IFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYRGFtYWdlKHN0ZDo6b3B0aW9uYWw8aW50PiYg
ZGFtYWdlRXZlbnRCYXNlKSBjb25zdAogewogICAgIGlmICghbV9zdXBwb3J0c1hEYW1hZ2UpIHsK
ICAgICAgICAgbV9zdXBwb3J0c1hEYW1hZ2UgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaAppbmRl
eCAxMGJjMWUyNDYyZDk5OTdiOThiMTMzOTg2ZGQ0NDFjMjBiZDAzZTkxLi4xZTBhZGQyOTgxMGNm
MzJjZjZiY2FkMjg2NzU0YWFkYzMxNGZkN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5oCkBAIC00Myw3
ICs0Myw3IEBAIGNsYXNzIFBsYXRmb3JtRGlzcGxheVgxMSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9y
bURpc3BsYXkgewogCiAgICAgRGlzcGxheSogbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5OyB9CiAgICAgYm9vbCBzdXBwb3J0c1hDb21wb3NpdGUoKSBjb25zdDsKLSAgICBib29sIHN1
cHBvcnRzWERhbWFnZShPcHRpb25hbDxpbnQ+JiBkYW1hZ2VFdmVudEJhc2UpIGNvbnN0OworICAg
IGJvb2wgc3VwcG9ydHNYRGFtYWdlKHN0ZDo6b3B0aW9uYWw8aW50PiYgZGFtYWdlRXZlbnRCYXNl
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMTsgfQpAQCAtNTQsOSArNTQsOSBAQCBjbGFz
cyBQbGF0Zm9ybURpc3BsYXlYMTEgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIAog
ICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBib29sIG1fb3duZWREaXNwbGF5OwotICAgIG11
dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0c1hDb21wb3NpdGU7Ci0gICAgbXV0YWJsZSBP
cHRpb25hbDxib29sPiBtX3N1cHBvcnRzWERhbWFnZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGlu
dD4gbV9kYW1hZ2VFdmVudEJhc2U7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
c3VwcG9ydHNYQ29tcG9zaXRlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX3N1
cHBvcnRzWERhbWFnZTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2RhbWFnZUV2
ZW50QmFzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTk2
YjM1ODczZmFmZWYzYzZjOTQ3ZGI3MWE4ZGY5OTAyOGMxNWIxNC4uYTQxZWMwYTJmODIxMjVkYTMx
ZjU0N2UxMGY4MTlkYWU3MDM2N2Q0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNv
ciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0
dXJucyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KLSAgICAgICAgdmlydHVhbCBPcHRp
b25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICAg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgcHJlcGFy
ZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4
IGQwYTJhZmY2NTJkNzVkNTU2ZGU0ZmE2ZjhkNzg5MzIyMDVkNWZiNjEuLjY0YzJjMzU4YTY2ODdh
MWI1YzEzYWE5YTc3ZDUyZGZkMDJhYmY4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OnNldEZhaWxlZCgpCiAg
ICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCk7CiB9CiAKLU9wdGlvbmFsPEludFBv
aW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRQ
b2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKIHsKICAgICAvLyBXaGVuIHVu
c3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBmcmFtZSBpcyBhbHdheXMgZnJhbWUgMC4gVGhpcyBpcyBj
b25zaXN0ZW50IHdpdGgKICAgICAvLyBCaXRtYXBJbWFnZSB3aGVyZSBjdXJyZW50RnJhbWUoKSBz
dGFydHMgYXQgMCBhbmQgb25seSBpbmNyZWFzZXMgd2hlbiBhbmltYXRpb24gaXMKQEAgLTEyNywx
MCArMTI3LDEwIEBAIE9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3Qo
KSBjb25zdAogICAgIHJldHVybiBob3RTcG90QXRJbmRleCgwKTsKIH0KIAotT3B0aW9uYWw8SW50
UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dAorc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAgaWYgKGluZGV4ID49IG1fZGlyRW50cmllcy5z
aXplKCkgfHwgbV9maWxlVHlwZSAhPSBDVVJTT1IpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1fZGlyRW50cmllc1tp
bmRleF0ubV9ob3RTcG90OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDJkNDdhN2Jj
NTllMmZiYTZiMTRhNDY0NDkxYjA1M2IzYzY1NTdjY2YuLmIxYmM1YWRlNjcxMmY0MjVmMDA1MTBl
ZmMxODVjMjhkYjliNzhjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTU1LDcgKzU1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBhdm9pZCBhY2Nlc3NpbmcgZGVs
ZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbQogICAgICAgICAv
LyBpbnNpZGUgQk1QSW1hZ2VSZWFkZXIhCiAgICAgICAgIGJvb2wgc2V0RmFpbGVkKCkgb3ZlcnJp
ZGU7Ci0gICAgICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gSW1hZ2VUeXBlIHsKQEAgLTExNSw4ICsx
MTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGNvdWxkIGJlIGRlY29kZWQu
CiAgICAgICAgIGJvb2wgcHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKTsKIAotICAgICAgICAvLyBS
ZXR1cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwgcmV0dXJucyBOdWxsb3B0IGlmIHRoZXJl
IGlzIG5vbmUuCi0gICAgICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJbmRleChzaXpl
X3QpIGNvbnN0OworICAgICAgICAvLyBSZXR1cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwg
cmV0dXJucyBzdGQ6Om51bGxvcHQgaWYgdGhlcmUgaXMgbm9uZS4KKyAgICAgICAgc3RkOjpvcHRp
b25hbDxJbnRQb2ludD4gaG90U3BvdEF0SW5kZXgoc2l6ZV90KSBjb25zdDsKIAogICAgICAgICAv
LyBSZWFkcyBhbmQgcmV0dXJucyBhIGRpcmVjdG9yeSBlbnRyeSBmcm9tIHRoZSBjdXJyZW50IG9m
ZnNldCBpbnRvCiAgICAgICAgIC8vIHxkYXRhfC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL0pQRUdJbWFnZUVuY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKaW5kZXgg
ZTQxMGE3ZDhjNGI2NGRjNzdjMmEzN2NlZjEzMDIzYzlhYTZjOTQ4ZC4uMDU3ZTAzMzFkN2YyMjI5
ODY2MWYxM2Y5Yjk4ZmRjZjQ2YWVjMDk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgc3RhdGljIHZvaWQganBlZ0Vycm9yRXhpdChqX2NvbW1vbl9wdHIgY29tcHJl
c3NEYXRhKQogICAgIGxvbmdqbXAoZXJyLT5tX3NldGptcEJ1ZmZlciwgLTEpOwogfQogCi1ib29s
IGNvbXByZXNzUkdCQUJpZ0VuZGlhblRvSlBFRyh1bnNpZ25lZCBjaGFyKiByZ2JhQmlnRW5kaWFu
RGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmVjdG9yPGNoYXI+JiBqcGVnRGF0YSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5KQorYm9vbCBjb21wcmVzc1JHQkFCaWdFbmRpYW5Ub0pQRUcodW5z
aWduZWQgY2hhciogcmdiYUJpZ0VuZGlhbkRhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIFZlY3Rv
cjxjaGFyPiYganBlZ0RhdGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQogewogICAg
IHN0cnVjdCBqcGVnX2NvbXByZXNzX3N0cnVjdCBjb21wcmVzc0RhdGE7CiAgICAgSlBFR0NvbXBy
ZXNzRXJyb3JNZ3IgZXJyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5oCmluZGV4IDMyODQzNGIyMGEyNTA1NjU0
ZmJiYzZlNmFmNzVmYmU5MDZhNDY3MWIuLjlmMzFhOTFjM2M2ZTcwZDdjYzI2NGM4M2RlMjJmOWVi
ODdkMGU0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29k
ZXJzL0pQRUdJbWFnZUVuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmgKQEAgLTI3LDYgKzI3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwogCi1ib29sIGNvbXByZXNzUkdCQUJpZ0VuZGlh
blRvSlBFRyh1bnNpZ25lZCBjaGFyKiByZ2JhQmlnRW5kaWFuRGF0YSwgY29uc3QgSW50U2l6ZSYs
IFZlY3RvcjxjaGFyPiYganBlZ0RhdGEsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IE51bGxv
cHQpOworYm9vbCBjb21wcmVzc1JHQkFCaWdFbmRpYW5Ub0pQRUcodW5zaWduZWQgY2hhciogcmdi
YUJpZ0VuZGlhbkRhdGEsIGNvbnN0IEludFNpemUmLCBWZWN0b3I8Y2hhcj4mIGpwZWdEYXRhLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCk7CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAppbmRleCAyZjJjNDhj
ZGE4YTEyMGEwY2ZjMmRhZGFlNWNkZGE4NGUxMTllZWU0Li45MmMyMWQyNGIzMDE5ZWQ0MTM3ZTZl
ODE0NjkyNmMzNTQwOGMxOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5oCkBAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgTGVnYWN5VGlsZUNhY2hl
IHsKICAgICBDQUxheWVyKiBob3N0TGF5ZXIoKSBjb25zdDsKICAgICB1bnNpZ25lZCB0aWxlQ2Fw
YWNpdHlGb3JHcmlkKExlZ2FjeVRpbGVHcmlkKik7CiAgICAgQ29sb3IgY29sb3JGb3JHcmlkVGls
ZUJvcmRlcihMZWdhY3lUaWxlR3JpZCopIGNvbnN0OwotICAgIHZvaWQgc2V0T3ZlcnJpZGVWaXNp
YmxlUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+KTsKKyAgICB2b2lkIHNldE92ZXJyaWRlVmlzaWJs
ZVJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KTsKIAogICAgIHZvaWQgZG9QZW5kaW5nUmVw
YWludHMoKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIGNsYXNzIExlZ2FjeVRpbGVDYWNoZSB7CiAg
ICAgLy8gRW5zdXJlIHRoZXJlIGFyZSBubyBhc3luYyBjYWxscyBvbiBhIGRlYWQgdGlsZSBjYWNo
ZS4KICAgICBSZXRhaW5QdHI8TGVnYWN5VGlsZUNhY2hlVG9tYnN0b25lPiBtX3RvbWJzdG9uZTsK
IAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9vdmVycmlkZVZpc2libGVSZWN0OworICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX292ZXJyaWRlVmlzaWJsZVJlY3Q7CiAKICAgICBUaWxp
bmdNb2RlIG1fdGlsaW5nTW9kZTsKICAgICBUaWxpbmdEaXJlY3Rpb24gbV90aWxpbmdEaXJlY3Rp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNh
Y2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpp
bmRleCBiMGI3YmZkYTJkYjgxZWVmNzQxY2Y2NjQzYzEwZjgwZWY3ZDI5ZWYzLi42NmEyNmUxZTY4
ZTNjNGQ1NzdhYjNlYjU2ODUxOGZhYzU4ZjU5NjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTExNyw3ICsxMTcsNyBAQCBGbG9hdFJl
Y3QgTGVnYWN5VGlsZUNhY2hlOjp2aXNpYmxlUmVjdEluTGF5ZXIoQ0FMYXllciAqbGF5ZXIpIGNv
bnN0CiAgICAgcmV0dXJuIFtsYXllciBjb252ZXJ0UmVjdDpbbV93aW5kb3cgZXh0ZW5kZWRWaXNp
YmxlUmVjdF0gZnJvbUxheWVyOmhvc3RMYXllcigpXTsKIH0KIAotdm9pZCBMZWdhY3lUaWxlQ2Fj
aGU6OnNldE92ZXJyaWRlVmlzaWJsZVJlY3QoT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0KQordm9p
ZCBMZWdhY3lUaWxlQ2FjaGU6OnNldE92ZXJyaWRlVmlzaWJsZVJlY3Qoc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IHJlY3QpCiB7CiAgICAgbV9vdmVycmlkZVZpc2libGVSZWN0ID0gcmVjdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUxheWVyLm1tCmluZGV4
IDc3ODJiMjVmNDgwOWE5ZDZkZmRjYmMxYmNkMzhlNzM5N2VhMDFiMzQuLjVjYTIxMmEzYzRmMmJl
YzIxMmQ2YmRmNWZiMTEyN2QxMzQ2NjlmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQpAQCAtNjQsNyArNjQsNyBAQCAtICh2b2lkKXJlbmRl
ckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIAogICAgIFtzdXBlciByZW5kZXJJbkNv
bnRleHQ6Y29udGV4dF07CiAKLSAgICBfdGlsZUdyaWQtPnRpbGVDYWNoZSgpLnNldE92ZXJyaWRl
VmlzaWJsZVJlY3QoTnVsbG9wdCk7CisgICAgX3RpbGVHcmlkLT50aWxlQ2FjaGUoKS5zZXRPdmVy
cmlkZVZpc2libGVSZWN0KHN0ZDo6bnVsbG9wdCk7CiB9CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxp
bnV4LmNwcAppbmRleCA5YTAzODMyNjYwYWEyY2JhOTc4OTFjNjgwZTRiNmQyYWRjMTE5NGIxLi40
MjFjNjE2MGY4ODkxMjQ2NDc3M2Q0ZWEzZmNhZWQ0OTYzZDVhN2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
TGludXguY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpFdmVu
dEZEUG9sbGVyOjpFdmVudEZEUG9sbGVyKGludCBmZCwgc3RkOjpmdW5jdGlvbjx2b2lkICgKIAog
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpFdmVudEZEUG9sbGVyOjp+RXZlbnRGRFBvbGxlcigpCiB7
Ci0gICAgbV9mZCA9IE51bGxvcHQ7CisgICAgbV9mZCA9IHN0ZDo6bnVsbG9wdDsKICNpZiBVU0Uo
R0xJQikKICAgICBnX3NvdXJjZV9kZXN0cm95KG1fc291cmNlLmdldCgpKTsKICNlbHNlCkBAIC0x
NjQsMTEgKzE2NCwxMSBAQCBpbmxpbmUgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmxvZ0Vy
cm9yQW5kQ2xvc2VGRHMoY29uc3QgY2hhciogbG9nKQogCiAgICAgaWYgKG1fZXZlbnRGRCkgewog
ICAgICAgICBjbG9zZShtX2V2ZW50RkQudmFsdWUoKSk7Ci0gICAgICAgIG1fZXZlbnRGRCA9IE51
bGxvcHQ7CisgICAgICAgIG1fZXZlbnRGRCA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgaWYg
KG1fcHJlc3N1cmVMZXZlbEZEKSB7CiAgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZELnZh
bHVlKCkpOwotICAgICAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IE51bGxvcHQ7CisgICAgICAgIG1f
cHJlc3N1cmVMZXZlbEZEID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtMjUwLDEyICsy
NTAsMTIgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCiAKICAgICBp
ZiAobV9wcmVzc3VyZUxldmVsRkQpIHsKICAgICAgICAgY2xvc2UobV9wcmVzc3VyZUxldmVsRkQu
dmFsdWUoKSk7Ci0gICAgICAgIG1fcHJlc3N1cmVMZXZlbEZEID0gTnVsbG9wdDsKKyAgICAgICAg
bV9wcmVzc3VyZUxldmVsRkQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gT25seSBjbG9z
ZSB0aGUgZXZlbnRGRCB1c2VkIGZvciBjZ3JvdXBzLgogICAgICAgICBpZiAobV9ldmVudEZEKSB7
CiAgICAgICAgICAgICBjbG9zZShtX2V2ZW50RkQudmFsdWUoKSk7Ci0gICAgICAgICAgICBtX2V2
ZW50RkQgPSBOdWxsb3B0OworICAgICAgICAgICAgbV9ldmVudEZEID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCmlu
ZGV4IGU0YzcyNzE3OWJlODA3NDJjZjVlYmMzMzk5ODJkZGMyOGIyZTdkNjQuLmIzNDZhNjVlZDAx
NmE0ODA3OTEwNGU5M2UyODU4NGE2MmIwY2FmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaGVtZU1hYy5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFRoZW1lTWFjIDogcHVibGljIFRo
ZW1lQ29jb2EgewogICAgIAogICAgIGludCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250
cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGb250Q2FzY2FkZURlc2Ny
aXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9h
dCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIExlbmd0aFNp
emUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVu
Z3RoU2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwogICAgIExlbmd0aFNp
emUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZs
b2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tCmluZGV4IDJiYzI2MmQ4MDZlZTljZjNhYzdlNTQxZjY4YWMzMDJiNjJkMDg2
OGYuLmExZDc4NWY0NTRlYmVmYWJiNDExZWY4YWM4OWQyYWVlMDNlMjI0NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTY4Niw3ICs2ODYsNyBAQCBpbnQgVGhl
bWVNYWM6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0
CiAgICAgcmV0dXJuIFRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChwYXJ0KTsKIH0K
IAotT3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVNYWM6OmNvbnRyb2xGb250
KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdAorc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZU1h
Yzo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgICAg
IGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKaW5kZXggNDUxMmI4ODE5MjIx
MjEwY2ViNWU1ZDdlMWE2MGQ5MWEzMDI5YmNhZS4uMjgwNWRjZTk5YTE2OGRkMmZjMGVlYWIxMzBl
Y2VlNDJkMWZkMmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lk
IE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmaWx0ZXIoc3RkOjpmdW5jdGlvbjxib29sKGNv
bnN0IE1lZGlhQ29uc3RyYWludAogICAgICAgICByZXR1cm47CiB9CiAKLXZvaWQgTWVkaWFUcmFj
a0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBl
LCBPcHRpb25hbDxJbnRDb25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCit2b2lkIE1lZGlhVHJhY2tD
b25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwg
c3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCiB7CiAgICAgc3dpdGNo
IChjb25zdHJhaW50VHlwZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6
CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0
KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIE9wdGlvbmEKICAgICB9CiB9CiAK
LXZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBl
IGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiYmIGNvbnN0cmFpbnQp
Cit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlw
ZSBjb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiYmIGNvbnN0
cmFpbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewogICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWlu
dFR5cGUsIE9wdGlvbmEKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxCb29s
ZWFuQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9u
YWw8Qm9vbGVhbkNvbnN0cmFpbnQ+JiYgY29uc3RyYWludCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0
cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpFY2hvQ2FuY2VsbGF0
aW9uOgpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6
OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hCiAgICAgfQog
fQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50
VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4mJiBjb25zdHJh
aW50KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWlu
dFR5cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4mJiBj
b25zdHJhaW50KQogewogICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKaW5kZXggOWRmYzIxYzQ4
MjFhMTEyMWQ0NWVmMmE4OTE1YjIyOGEzOTQ2NGM0MS4uMGU3MTkyMTVkZGFiYjdkZmY5MmM4YWIx
ZTU3YWYyZDY3ZDAwODBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApAQCAtMzQxLDEwICszNDEsMTAgQEAgY2xh
c3MgTnVtZXJpY0NvbnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKICAgICAgICAg
fQogICAgIH0KIAotICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV9taW47Ci0gICAgT3B0aW9uYWw8
VmFsdWVUeXBlPiBtX21heDsKLSAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1fZXhhY3Q7Ci0gICAg
T3B0aW9uYWw8VmFsdWVUeXBlPiBtX2lkZWFsOworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBl
PiBtX21pbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbV9tYXg7CisgICAgc3RkOjpv
cHRpb25hbDxWYWx1ZVR5cGU+IG1fZXhhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+
IG1faWRlYWw7CiB9OwogCiBjbGFzcyBJbnRDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVy
aWNDb25zdHJhaW50PGludD4gewpAQCAtNDc0LDggKzQ3NCw4IEBAIGNsYXNzIEJvb2xlYW5Db25z
dHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CiAgICAgfQogCiBwcml2YXRl
OgotICAgIE9wdGlvbmFsPGJvb2w+IG1fZXhhY3Q7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9pZGVh
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fZXhhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBtX2lkZWFsOwogfTsKIAogY2xhc3MgU3RyaW5nQ29uc3RyYWludCA6IHB1YmxpYyBNZWRp
YUNvbnN0cmFpbnQgewpAQCAtNTgzLDI1ICs1ODMsMjUgQEAgY2xhc3MgTWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXAgewogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChN
ZWRpYUNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxJbnRDb25zdHJhaW50PiYmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxEb3VibGVD
b25zdHJhaW50PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFp
bnRUeXBlLCBPcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4mJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWlu
dD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwg
c3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0
ZDo6b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWlu
dD4mJik7CiAKLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2lkdGg7IH0KLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHNhbXBs
ZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KLSAgICBPcHRpb25hbDxJbnRD
b25zdHJhaW50PiBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVTaXplOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2lkdGg7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBz
YW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgc3RkOjpvcHRp
b25hbDxJbnRDb25zdHJhaW50PiBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVT
aXplOyB9CiAKLSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBhc3BlY3RSYXRpbygpIGNv
bnN0IHsgcmV0dXJuIG1fYXNwZWN0UmF0aW87IH0KLSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJh
aW50PiBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQotICAgIE9wdGlv
bmFsPERvdWJsZUNvbnN0cmFpbnQ+IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9
CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBhc3BlY3RSYXRpbygpIGNvbnN0
IHsgcmV0dXJuIG1fYXNwZWN0UmF0aW87IH0KKyAgICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0
cmFpbnQ+IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSYXRlOyB9CisgICAgc3Rk
OjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3Zv
bHVtZTsgfQogCi0gICAgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGVjaG9DYW5jZWxsYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2VjaG9DYW5jZWxsYXRpb247IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPEJvb2xlYW5Db25zdHJhaW50PiBlY2hvQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9lY2hvQ2FuY2VsbGF0aW9uOyB9CiAKLSAgICBPcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBm
YWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9mYWNpbmdNb2RlOyB9Ci0gICAgT3B0aW9uYWw8
U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9
Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JvdXBJZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZmFjaW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjaW5nTW9kZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBncm91cElkKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncm91cElkOyB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7CkBAIC02NTMsMjAgKzY1MywyMCBA
QCBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCB7CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1fd2lkdGg7Ci0gICAgT3B0aW9uYWw8SW50Q29u
c3RyYWludD4gbV9oZWlnaHQ7Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9zYW1wbGVS
YXRlOwotICAgIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1fc2FtcGxlU2l6ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1fd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxJbnRD
b25zdHJhaW50PiBtX2hlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1f
c2FtcGxlUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1fc2FtcGxlU2l6
ZTsKIAotICAgIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IG1fYXNwZWN0UmF0aW87Ci0gICAg
T3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV9mcmFtZVJhdGU7Ci0gICAgT3B0aW9uYWw8RG91
YmxlQ29uc3RyYWludD4gbV92b2x1bWU7CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJh
aW50PiBtX2FzcGVjdFJhdGlvOworICAgIHN0ZDo6b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4g
bV9mcmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBtX3ZvbHVt
ZTsKIAotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBtX2VjaG9DYW5jZWxsYXRpb247
CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4gbV9lY2hvQ2FuY2VsbGF0aW9u
OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9mYWNpbmdNb2RlOwotICAgIE9w
dGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZGV2aWNlSWQ7Ci0gICAgT3B0aW9uYWw8U3RyaW5n
Q29uc3RyYWludD4gbV9ncm91cElkOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWlu
dD4gbV9mYWNpbmdNb2RlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9k
ZXZpY2VJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZ3JvdXBJZDsK
IH07CiAKIGNsYXNzIEZsYXR0ZW5lZENvbnN0cmFpbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApp
bmRleCA3N2QxZmEwZTJiNWFmOTM5NzAxOGNiMjZhMGNjYzE2OWFiYzE0ZTdlLi4xOTA4NmNmOTAx
NDQzNGY0ZWNmOTkyMjA0ODdhMzEwMzAxOTUxNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApA
QCAtMTUwLDEzICsxNTAsMTMgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3Rv
cChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQogICAgIHN0b3AoY2FsbGluZ09ic2VydmVyKTsK
IH0KIAotYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUo
T3B0aW9uYWw8aW50PiwgT3B0aW9uYWw8aW50PiwgT3B0aW9uYWw8ZG91YmxlPikKK2Jvb2wgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8
aW50Piwgc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pCiB7CiAgICAg
Ly8gVGhlIHNpemUgYW5kIGZyYW1lIHJhdGUgYXJlIHdpdGhpbiB0aGUgY2FwYWJpbGl0eSBsaW1p
dHMsIHNvIHRoZXkgYXJlIHN1cHBvcnRlZC4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50
Q29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50LCBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWln
aHRDb25zdHJhaW50LCBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBmcmFtZVJhdGVDb25zdHJh
aW50LCBTdHJpbmcmIGJhZENvbnN0cmFpbnQpCitib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1
cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRo
Q29uc3RyYWludCwgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWlnaHRDb25zdHJhaW50
LCBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGZyYW1lUmF0ZUNvbnN0cmFpbnQsIFN0
cmluZyYgYmFkQ29uc3RyYWludCkKIHsKICAgICBpZiAoIXdpZHRoQ29uc3RyYWludCAmJiAhaGVp
Z2h0Q29uc3RyYWludCAmJiAhZnJhbWVSYXRlQ29uc3RyYWludCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0
c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgKICAgICBBU1NF
UlQodGhpcy0+Y2FwYWJpbGl0aWVzKCkpOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcyA9ICp0aGlzLT5jYXBhYmlsaXRpZXMoKTsKIAotICAgIE9wdGlv
bmFsPGludD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoOwogICAgIGlmICh3
aWR0aENvbnN0cmFpbnQgJiYgY2FwYWJpbGl0aWVzLnN1cHBvcnRzV2lkdGgoKSkgewogICAgICAg
ICBpZiAoc3RkOjppc2luZihmaXRuZXNzRGlzdGFuY2UoKndpZHRoQ29uc3RyYWludCkpKSB7CiAg
ICAgICAgICAgICBiYWRDb25zdHJhaW50ID0gd2lkdGhDb25zdHJhaW50LT5uYW1lKCk7CkBAIC0x
NzUsNyArMTc1LDcgQEAgYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRG
cmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGgKICAgICAgICAgd2lkdGggPSB3
aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUoKS53aWR0aCgpLCBy
YW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50KTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0
OwogICAgIGlmIChoZWlnaHRDb25zdHJhaW50ICYmIGNhcGFiaWxpdGllcy5zdXBwb3J0c0hlaWdo
dCgpKSB7CiAgICAgICAgIGlmIChzdGQ6OmlzaW5mKGZpdG5lc3NEaXN0YW5jZSgqaGVpZ2h0Q29u
c3RyYWludCkpKSB7CiAgICAgICAgICAgICBiYWRDb25zdHJhaW50ID0gaGVpZ2h0Q29uc3RyYWlu
dC0+bmFtZSgpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoCiAg
ICAgICAgIGhlaWdodCA9IGhlaWdodENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdl
KHNpemUoKS5oZWlnaHQoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgo
KS5hc0ludCk7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZTsKICAgICBpZiAoZnJhbWVSYXRlQ29uc3Ry
YWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNGcmFtZVJhdGUoKSkgewogICAgICAgICBpZiAo
c3RkOjppc2luZihmaXRuZXNzRGlzdGFuY2UoKmZyYW1lUmF0ZUNvbnN0cmFpbnQpKSkgewogICAg
ICAgICAgICAgYmFkQ29uc3RyYWludCA9IGZyYW1lUmF0ZUNvbnN0cmFpbnQtPm5hbWUoKTsKQEAg
LTM0NSw3ICszNDUsNyBAQCBzdGF0aWMgdm9pZCBhcHBseU51bWVyaWNDb25zdHJhaW50KGNvbnN0
IE51bWVyaWNDb25zdHJhaW50PFZhbHVlVHlwZT4mIGNvbnN0cmFpbgogICAgICAgICAoc291cmNl
LT4qYXBwbGllcikodmFsdWUpOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdo
dCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0
aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAg
ICAgaWYgKHdpZHRoKQogICAgICAgICBzZXRXaWR0aCh3aWR0aC52YWx1ZSgpKTsKQEAgLTU4OSw3
ICs1ODksNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29u
c3QgRmxhdHRlbmVkQ29uc3RyYWludCYgY29uc3RyYWludAogCiAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzID0gKnRoaXMtPmNhcGFiaWxpdGllcygpOwog
Ci0gICAgT3B0aW9uYWw8aW50PiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGg7
CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRz
LmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGgpKSB7CiAgICAgICAgIEFTU0VSVChjb25z
dHJhaW50LT5pc0ludCgpKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c1dpZHRo
KCkpIHsKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5
Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3RyYWludCYgY29uc3RyYWludAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25h
bDxpbnQ+IGhlaWdodDsKICAgICBpZiAoY29uc3QgTWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50
ID0gY29uc3RyYWludHMuZmluZChNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQpKSB7CiAgICAg
ICAgIEFTU0VSVChjb25zdHJhaW50LT5pc0ludCgpKTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGll
cy5zdXBwb3J0c0hlaWdodCgpKSB7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNv
bnN0cmFpbnQKICAgICAgICAgfQogICAgIH0KIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVS
YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGU7CiAgICAgaWYgKGNvbnN0
IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZpbmQoTWVkaWFDb25z
dHJhaW50VHlwZTo6RnJhbWVSYXRlKSkgewogICAgICAgICBBU1NFUlQoY29uc3RyYWludC0+aXNE
b3VibGUoKSk7CiAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMuc3VwcG9ydHNGcmFtZVJhdGUoKSkg
ewpAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25z
dHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50JiBjb25zdHJhaW50CiAgICAgY29tbWl0
Q29uZmlndXJhdGlvbigpOwogfQogCi1PcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmIGNvbnN0cmFpbnRzKQorc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29u
c3RyYWludHMmIGNvbnN0cmFpbnRzKQogewogICAgIEFTU0VSVChjb25zdHJhaW50cy5pc1ZhbGlk
KCkpOwogCkBAIC02MzgsNyArNjM4LDcgQEAgT3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdAogICAgICAg
ICByZXR1cm4geyB7IGZhaWxlZENvbnN0cmFpbnQsIEFTQ0lJTGl0ZXJhbCgiQ29uc3RyYWludCBu
b3Qgc3VwcG9ydGVkIikgfSB9OwogCiAgICAgYXBwbHlDb25zdHJhaW50cyhjYW5kaWRhdGVzKTsK
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYgY29uc3RyYWludHMsIFN1Y2Nlc3NIYW5kbGVyIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJl
SGFuZGxlciBmYWlsdXJlSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCAyYjMwNDZjNTdl
Mjc1NTMwOGEyNjI1YTQwYjM5M2Y2ZDE2YmM0MGJiLi5lNmFhOWY3NGNkZTYyNzk2MjlkMTVjZjJm
NzZjOGRjN2Y4OTkwNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC05NSw3ICs5NSw3IEBAIGNs
YXNzIFJlYWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFsdGltZU1lZGlh
U291cmNlPiB7CiAgICAgdXNpbmcgU3VjY2Vzc0hhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT47CiAgICAgdXNpbmcgRmFpbHVyZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiBiYWRDb25zdHJhaW50LCBjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKT47CiAgICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdWNjZXNzSGFu
ZGxlciwgRmFpbHVyZUhhbmRsZXIpOwotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOworICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhj
b25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25z
dHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7CiAKQEAgLTE3NCwxMSAr
MTc0LDExIEBAIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZWFsdGltZU1lZGlhU291cmNlPiB7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0U2V0dGluZ3Mo
Y29uc3QgTWVkaWFDb25zdHJhaW50cyYsIEZsYXR0ZW5lZENvbnN0cmFpbnQmLCBTdHJpbmcmKTsK
ICAgICB2aXJ0dWFsIGRvdWJsZSBmaXRuZXNzRGlzdGFuY2UoY29uc3QgTWVkaWFDb25zdHJhaW50
Jik7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJ
bnRDb25zdHJhaW50PiB3aWR0aCwgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gaGVpZ2h0LCBPcHRp
b25hbDxEb3VibGVDb25zdHJhaW50PiwgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhl
aWdodCwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2l6ZUFu
ZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlv
bmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50
PiwgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPik7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludChjb25z
dCBNZWRpYUNvbnN0cmFpbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhj
b25zdCBGbGF0dGVuZWRDb25zdHJhaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5U2l6ZUFu
ZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0
aW9uYWw8ZG91YmxlPik7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPik7CiAKICAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDY3Y2RiZTgwMjc0ZmZkYmRhMDdmMTRhNWQwZmFh
YjNkNGU5YmFmYTQuLmI3MmVjYjQ0OWJkYjIzMjU1MDRlODMyNDlmN2I3MDg5NTRhZGE3OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC01OSwxMyArNTksMTMgQEAgY2xhc3MgQVZW
aWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgQVZNZWRpYUNhcHR1cmVTb3VyY2UgewogCiAgICAg
dm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbDsK
IAotICAgIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9w
dGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIGFw
cGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9u
YWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgYm9vbCBh
cHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUo
ZG91YmxlKSBmaW5hbDsKICAgICBib29sIHNldFByZXNldChOU1N0cmluZyopOwogCi0gICAgTlNT
dHJpbmcgKmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKE9wdGlvbmFsPGludD4g
d2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0KSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzU2l6
ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwg
T3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CisgICAgTlNTdHJpbmcgKmJlc3RTZXNzaW9uUHJlc2V0
Rm9yVmlkZW9EaW1lbnNpb25zKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25h
bDxpbnQ+IGhlaWdodCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUo
c3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogCiAgICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0
aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmKSBmaW5hbDsKICAgICB2b2lkIGlu
aXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVk
Q29uc3RyYWludHMmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCA3
ZDM2MTQ1MGE0OWE1ZTg3NzhhMzg2NTE2NWZmN2E5Y2UzNDcxZDI4Li5lZjVlNDVjOTAzMWQ5NjIz
YmNmMjQ3Yzg4ZjU4ZDRmMTgzMWIyNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
CkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFt
ZVJhdGUoZG91YmxlIHJhdGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBP
cHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIEFW
VmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxp
bnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gZnJhbWVSYXRlKQogewogICAgIHNldFByZXNldChiZXN0U2Vzc2lvblByZXNldEZvclZpZGVv
RGltZW5zaW9ucyhXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpKSk7CiAKQEAgLTU0MSw3
ICs1NDEsNyBAQCBSZWZQdHI8QVZNZWRpYVNvdXJjZVByZXZpZXc+IEFWVmlkZW9DYXB0dXJlU291
cmNlOjpjcmVhdGVQcmV2aWV3KCkKICAgICByZXR1cm4gQVZWaWRlb1NvdXJjZVByZXZpZXc6OmNy
ZWF0ZShzZXNzaW9uKCksIGRldmljZSgpLCB0aGlzKTsKIH0KIAotTlNTdHJpbmcgKkFWVmlkZW9D
YXB0dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhPcHRpb25h
bDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCkgY29uc3QKK05TU3RyaW5nICpBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc3Rk
OjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0KSBjb25zdAog
ewogICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTU2
NSw3ICs1NjUsNyBAQCBOU1N0cmluZyAqQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9u
UHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKE9wdGlvbmFsPGludAogICAgIHJldHVybiBuaWw7CiB9
CiAKLWJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShP
cHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91Ymxl
PiBmcmFtZVJhdGUpCitib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzdXBwb3J0c1NpemVBbmRG
cmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVp
Z2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQogewogICAgIGlmICghaGVpZ2h0
ICYmICF3aWR0aCAmJiAhZnJhbWVSYXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmgKaW5kZXggYzMzOTZlNzE4ZmU0NzAzYWQwY2M1NTcxOGEy
ZWIzZTJjMzBhYzIxYi4uZjMxMDQ4YzllY2ZlZWUzNTBhYzI5ZjYyMjFhY2QwYzJlYWRiOTBmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9NZWRpYUVuZHBvaW50T3dyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBj
bGFzcyBNZWRpYUVuZHBvaW50T3dyIDogcHVibGljIE1lZGlhRW5kcG9pbnQgewogICAgIHZvaWQg
ZW5zdXJlVHJhbnNwb3J0QWdlbnRBbmRUcmFuc2NlaXZlcnMoYm9vbCBpc0luaXRpYXRvciwgY29u
c3QgVmVjdG9yPFRyYW5zY2VpdmVyQ29uZmlnPiYpOwogICAgIHZvaWQgaW50ZXJuYWxBZGRSZW1v
dGVDYW5kaWRhdGUoT3dyU2Vzc2lvbiosIGNvbnN0IEljZUNhbmRpZGF0ZSYsIGNvbnN0IFN0cmlu
ZyYgdWZyYWcsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpOwogCi0gICAgT3B0aW9uYWw8TWVkaWFF
bmRwb2ludENvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CiAgICAgR1JlZ2V4
KiBtX2hlbHBlclNlcnZlclJlZ0V4OwogCiAgICAgT3dyVHJhbnNwb3J0QWdlbnQqIG1fdHJhbnNw
b3J0QWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hl
VmFsaWRhdGlvbi5jcHAKaW5kZXggMWYxYzM4MDU1NTExMWY0NGExZjFlN2U2ZTAzMmEyNzMwZGQ5
NGJmZC4uYjM4ZTcwNzIwMjM4ZTBjOGVlN2VjYjBkZWI5MDZjMmExYjI1NjU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY29tcHV0ZUN1cnJl
bnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0CiAgICAgLy8gTm8gY29t
cGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRoYXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBp
biBwcmFjdGljZS4KICAgICBhdXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKICAgICBh
dXRvIGFwcGFyZW50QWdlID0gZGF0ZVZhbHVlID8gc3RkOjptYXgoMHVzLCBkdXJhdGlvbl9jYXN0
PG1pY3Jvc2Vjb25kcz4ocmVzcG9uc2VUaW1lIC0gKmRhdGVWYWx1ZSkpIDogMHVzOwotICAgIGF1
dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52YWx1ZU9yKDB1cyk7CisgICAgYXV0byBhZ2VW
YWx1ZSA9IHJlc3BvbnNlLmFnZSgpLnZhbHVlX29yKDB1cyk7CiAgICAgYXV0byBjb3JyZWN0ZWRJ
bml0aWFsQWdlID0gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKTsKICAgICBhdXRvIHJl
c2lkZW50VGltZSA9IGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihzeXN0ZW1fY2xvY2s6Om5v
dygpIC0gcmVzcG9uc2VUaW1lKTsKICAgICByZXR1cm4gY29ycmVjdGVkSW5pdGlhbEFnZSArIHJl
c2lkZW50VGltZTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
IGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZQog
ICAgICAgICByZXR1cm4gKm1heEFnZTsKIAogICAgIGF1dG8gZGF0ZSA9IHJlc3BvbnNlLmRhdGUo
KTsKLSAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZhbHVlT3IocmVzcG9uc2VUaW1lKTsK
KyAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRlLnZhbHVlX29yKHJlc3BvbnNlVGltZSk7CiAg
ICAgaWYgKGF1dG8gZXhwaXJlcyA9IHJlc3BvbnNlLmV4cGlyZXMoKSkKICAgICAgICAgcmV0dXJu
IGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPigqZXhwaXJlcyAtIGVmZmVjdGl2ZURhdGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
aAppbmRleCBkMzc2ZWJjMTU4YmFmNGE2Y2Q3ZTdjOTM3MGYxNTI0MGU3YzhiZWFmLi4xYmJiZWRl
ZDY1NmI3NzQ1Yjg4Y2ZmYzZjNTc0MjdmZGRiYWEzNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmgKQEAgLTYxLDggKzYxLDggQEAg
ZW51bSBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90IHsgRG9Ob3RSZXVzZUV4cGlyZWRSZWRp
cmVjdGlvbiwgUmV1c2VFeHBpcmVkUmUKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVkaXJlY3RDaGFp
bkFsbG93c1JldXNlKFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgUmV1c2VFeHBpcmVkUmVkaXJl
Y3Rpb25Pck5vdCk7CiAKIHN0cnVjdCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHsKLSAgICBPcHRp
b25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhBZ2U7Ci0gICAgT3B0aW9uYWw8c3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhBZ2U7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFsZTsKICAgICBib29sIG5vQ2FjaGUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbm9TdG9yZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtdXN0UmV2YWxpZGF0ZSB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmgKaW5kZXggODkwMWM3MzMwNTEwN2JlYTgxM2Q4ZDlhNDE2NDQ5MmMxOTBkMDU0OS4u
ZTVkYjE1NDI2Njg3NDQyODVjNWM4ZDFjMzNiYWU1MmRlOTZiZmNhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtNDksNyArNDks
NyBAQCBzdHJ1Y3QgUmVzdWx0IHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogfTsK
IAotdXNpbmcgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQgKE9w
dGlvbmFsPFJlc3VsdD4pPjsKK3VzaW5nIERlY29kZUNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpm
dW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJlc3VsdD4pPjsKIHN0cnVjdCBTY2hlZHVsZUNv
bnRleHQgewogI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0
IHNjaGVkdWxlZFBhaXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBIZWFkZXJNYXAuaAppbmRleCAxNDk1YTZjOTI0ZWIzMWUwNGRkZmRjNWVjZWRkYmNkNWM5OTY4
MzBkLi42NDU1OWUxMjVjNjE1N2I1M2FhNTU1MTMwYzZkMTA0YWM0NmQzMWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNTQsNyAr
NTQsNyBAQCBjbGFzcyBIVFRQSGVhZGVyTWFwIHsKIAogICAgICAgICBzdHJ1Y3QgS2V5VmFsdWUg
ewogICAgICAgICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEhUVFBIZWFk
ZXJOYW1lPiBrZXlBc0hUVFBIZWFkZXJOYW1lOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxI
VFRQSGVhZGVyTmFtZT4ga2V5QXNIVFRQSGVhZGVyTmFtZTsKICAgICAgICAgICAgIFN0cmluZyB2
YWx1ZTsKICAgICAgICAgfTsKIApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBIVFRQSGVhZGVyTWFw
IHsKICAgICAgICAgICAgIGlmIChpdCA9PSBtX3RhYmxlLnVuY29tbW9uSGVhZGVycygpLmVuZCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG1fa2V5VmFsdWUu
a2V5ID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1fa2V5VmFsdWUua2V5QXNIVFRQSGVhZGVyTmFt
ZSA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2tleVZhbHVlLmtleUFzSFRUUEhlYWRlck5hbWUg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2tleVZhbHVlLnZhbHVlID0gaXQtPnZhbHVl
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNWZlZDM4OTU3NzM3MGQ4
NmFkZGZiZmQxYWFkNDI2MmFjZDFiM2U3Yi4uNDkyOGEzNWU4YWI3MTg2OTQxNTI2OGJlNWU4MTM4
YWRmYTMyNzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIHBhcnNlSFRUUFJlZnJlc2goY29u
c3QgU3RyaW5nJiByZWZyZXNoLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCkKICAgICB9CiB9
CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNl
SFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIGRvdWJsZSBkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVwb2NoID0gcGFyc2VE
YXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggN2Y2YjQy
NmFjMDk1Y2Q5NTY4YmFlOTRjNzMzZDJlMzM5MjgzZjBlOS4uZGVjYzFiMDNiYjUwN2Y3NDg0YmMx
YTljMDQ4Y2IxZTc2MzdiN2U1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuaApAQCAtNzEsNyArNzEsNyBAQCBib29sIGlzVmFsaWRSZWFzb25QaHJh
c2UoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFsaWRIVFRQSGVhZGVyVmFsdWUoY29uc3QgU3Ry
aW5nJik7CiBib29sIGlzVmFsaWRIVFRQVG9rZW4oY29uc3QgU3RyaW5nJik7CiBib29sIHBhcnNl
SFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNoLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcm
IHVybCk7Ci1PcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBw
YXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOwog
U3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29uc3QgU3RyaW5nJik7
CiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0
cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4
IDQ3NzNkZWQ3ZjRlMWU3ODQxOWY4NGZmNDYxOGE1ZDlmNWI1ZmE2ZTkuLjY0N2Y2MDQxOWJmY2Qw
ZmVlNjM3NWQ5ZDE4ODA3NjU5MmExZjkyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSkKIHsKICAgICBpZiAocmVzcG9uc2UuaXNIdHRwVmVyc2lvbjBfOSgpKSB7CiAgICAg
ICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9y
dCA9IHVybC5wb3J0KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJv
dG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKICAgICAgICAgICAgIGNhbmNl
bCgpOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAn
IiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQg
aXMgdXNpbmcgSFRUUC8wLjkuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggMmMxMjI3OGQ1YWYwY2M3
ODEwM2I2YjFlYTM4ZTk4MWUyZGU3NDg2MC4uZmE0NThhMjRkZmMwZWEyNjA5MGM5MDNkNWY3YWQw
N2NjZmRlMmQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTQzMywxNCArNDMzLDE0IEBAIGJvb2wg
UmVzb3VyY2VSZXNwb25zZUJhc2U6Omhhc0NhY2hlVmFsaWRhdG9yRmllbGRzKCkgY29uc3QKICAg
ICByZXR1cm4gIW1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2Rp
ZmllZCkuaXNFbXB0eSgpIHx8ICFtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1l
OjpFVGFnKS5pc0VtcHR5KCk7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHM+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGF2ZVBhcnNlZENh
Y2hlQ29udHJvbEhlYWRlcikKICAgICAgICAgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKCk7
CiAgICAgcmV0dXJuIG1fY2FjaGVDb250cm9sRGlyZWN0aXZlcy5tYXhBZ2U7CiB9CiAKLXN0YXRp
YyBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZURh
dGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJO
YW1lIGhlYWRlck5hbWUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCiB7CiAgICAgU3RyaW5n
IGhlYWRlclZhbHVlID0gaGVhZGVycy5nZXQoaGVhZGVyTmFtZSk7CiAgICAgaWYgKGhlYWRlclZh
bHVlLmlzRW1wdHkoKSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihj
bwogICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhlYWRlclZhbHVlKTsKIH0KIAotT3B0aW9uYWw8
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmRhdGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSgpIGNvbnN0CiB7CiAgICAg
bGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBPcHRpb25h
bDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZGF0ZSgpIGNvbgogICAgIHJldHVybiBtX2RhdGU7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZ2UoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6YWdlKCkgY29uc3QKIHsKICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CiAK
QEAgLTQ4MCw3ICs0ODAsNyBAQCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QKICAgICByZXR1cm4gbV9hZ2U7CiB9CiAK
LU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNl
UmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMo
KSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC00OTEsNyAr
NDkxLDcgQEAgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4g
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKQogICAgIHJldHVybiBtX2V4cGlyZXM7CiB9
CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291
cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
bGFzdE1vZGlmaWVkKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsK
IApAQCAtNTAyLDcgKzUwMiw3IEBAIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpCiAgICAgICAgIC8v
IGFuIGludmFsaWQgdmFsdWUgKHJkYXI6Ly9wcm9ibGVtLzIyMzUyODM4KS4KICAgICAgICAgY29u
c3Qgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBlcG9jaDsKICAgICAgICAg
aWYgKG1fbGFzdE1vZGlmaWVkICYmIG1fbGFzdE1vZGlmaWVkLnZhbHVlKCkgPT0gZXBvY2gpCi0g
ICAgICAgICAgICBtX2xhc3RNb2RpZmllZCA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2xhc3RN
b2RpZmllZCA9IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgICAgICBtX2hhdmVQYXJzZWRMYXN0
TW9kaWZpZWRIZWFkZXIgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBmM2QyODgxZWRi
ZmEyYjY2NTUwNGQzYmU5ZGM5ODM1ZmE1N2QxYzU1Li45ZDIyZjRmZjExMjJhYjhiMzNhMDBkZDdk
YzljZmE0NmVjODY0YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBAIC0xMTUsNyArMTE1LDcgQEAgY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2Vy
dGlmaWNhdGVJbmZvKCkgY29uc3Q7Ci0gICAgY29uc3QgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZv
PiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH07
CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfTsKICAgICAKICAgICAvLyBU
aGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2YWx1ZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcg
cmVzcG9uc2UgaGVhZGVycy4KICAgICAvLyBOYU4gbWVhbnMgdGhhdCB0aGUgaGVhZGVyIHdhcyBu
b3QgcHJlc2VudCBvciBoYWQgaW52YWxpZCB2YWx1ZS4KQEAgLTEyMywxMSArMTIzLDExIEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hl
Q29udHJvbENvbnRhaW5zTm9TdG9yZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzQ2FjaGVWYWxpZGF0b3JGaWVsZHMoKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBjYWNoZUNvbnRyb2xN
YXhBZ2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBkYXRlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gYWdlKCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludD4gZXhwaXJlcygpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGxhc3RNb2RpZmllZCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25k
cz4gY2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBkYXRlKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9z
ZWNvbmRzPiBhZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGV4cGlyZXMoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQ+IGxhc3RNb2RpZmllZCgpIGNvbnN0OwogICAgIFBhcnNlZENvbnRlbnRSYW5n
ZSYgY29udGVudFJhbmdlKCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIGlzIHByaW1hcmlseSBmb3Ig
dGVzdGluZyBzdXBwb3J0LiBJdCBpcyBub3QgbmVjZXNzYXJpbHkgYWNjdXJhdGUgaW4gYWxsIHNj
ZW5hcmlvcy4KQEAgLTE4OSwxNSArMTg5LDE1IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNl
IHsKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICBtdXRhYmxlIE5l
dHdvcmtMb2FkVGltaW5nIG1fbmV0d29ya0xvYWRUaW1pbmc7CiAKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAKICAgICBpbnQg
bV9odHRwU3RhdHVzQ29kZTsKIAogcHJpdmF0ZToKLSAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHM+IG1fYWdlOwotICAgIG11dGFibGUgT3B0aW9uYWw8c3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gbV9kYXRlOwotICAgIG11dGFibGUgT3B0
aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gbV9leHBpcmVzOwot
ICAgIG11dGFibGUgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dD4gbV9sYXN0TW9kaWZpZWQ7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM+IG1fYWdlOworICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBtX2RhdGU7CisgICAgbXV0YWJsZSBzdGQ6
Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJl
czsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludD4gbV9sYXN0TW9kaWZpZWQ7CiAgICAgbXV0YWJsZSBQYXJzZWRDb250ZW50UmFu
Z2UgbV9jb250ZW50UmFuZ2U7CiAgICAgbXV0YWJsZSBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIG1f
Y2FjaGVDb250cm9sRGlyZWN0aXZlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggYTJkYmI5Y2U5NGJkNmRlY2Rm
Njg1NjY5ZGMyM2VlMTYzYmJkMTJkMy4uZmJhZDY0MTk1YWJkZTMwODc5Zjk4MGE4YTI3ZWNjNDg1
N2E5MDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZS5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhh
bmRsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+IHsK
ICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50Jik7CiAKICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwotICAgIHZpcnR1YWwgT3B0aW9u
YWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkg
PSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtQ2xvc2UoKSA9IDA7CiAKICAgICBVUkwgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAppbmRl
eCA0YzQyZDg1YmNmNmM0ODRmNjMyODg4OTdmYmIzNDNjNThjNzM4YWMyLi5lMjZiOWE2MjNjMzBi
ZGUzOGFkOTg3Y2UzM2U1MjNjOTZlYzNlNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IHsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmLCBjb25zdCBjaGFyKiBkYXRhLCBPcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRT
dHJlYW1IYW5kbGUmLCBjb25zdCBjaGFyKiBkYXRhLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVu
Z3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tl
dFN0cmVhbUhhbmRsZSYsIHNpemVfdCBidWZmZXJlZEFtb3VudCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tl
dFN0cmVhbUVycm9yJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggODc2Y2Yy
NDFmODYyY2M2ZmRiZDFhN2E1ZmVmMjhiZGFiZmJjZjc1Ny4uNGVkZDM5MGRjYjg5NmYxMGEzYzU2
MDkwM2QyZWQ5MjdiYTc5YWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTUwLDcgKzUw
LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1I
YW5kbGUgewogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwoKTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBTZXNz
aW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IGJhMzljZGIx
NzQ0MTRjYWFlYjk2YTZkZDQ1NTViYjE4NDFlYzNkM2EuLmNjYjE0ZWExYjIwNzY5NzZlMmM1YTdm
NGQzNmQxMmY3ODg0NWNkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAK
QEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJl
YW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlKQogICAgICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG9wdGlvbmFs
TGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gb3B0aW9uYWxMZW5ndGg7CiAg
ICAgICAgIGlmIChsZW5ndGggIT0gLTEpCiAgICAgICAgICAgICBvcHRpb25hbExlbmd0aCA9IGxl
bmd0aDsKICAgICAgICAgCkBAIC02NTMsMTQgKzY1MywxNCBAQCBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjp+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgpCiAgICAgQVNTRVJUKCFtX3BhY1J1bkxvb3BT
b3VyY2UpOwogfQogCi1PcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBs
YXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorc3RkOjpvcHRpb25h
bDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlmICghQ0ZXcml0ZVN0cmVhbUNhbkFjY2Vw
dEJ5dGVzKG1fd3JpdGVTdHJlYW0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENGSW5kZXggcmVzdWx0ID0gQ0ZXcml0
ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPihkYXRhKSwgbGVuZ3RoKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VS
VChyZXN1bHQgPj0gMCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IDc1NGEyMzZiNGVjODcwN2I0Y2ViZmVhODc5
ZWNiOTE2NmZjM2MxNTUuLjYyNjQ4MGZkYjI3NjBjN2I5MDA0N2Q5NjNhOGRhYWQwNDY5ZDFiNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiBwcml2YXRl
OgogICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50Jik7CiAKLSAgICBPcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZpbmFsOwogCiAgICAgYm9vbCByZWFkRGF0YShDVVJM
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA1N2E2YTczZDRl
MDdkZGZjYTE2MDBjMTlkMmM1MzEyYTIyY2JhYjYzLi5lOTRmODRhNjgyMzM5NTJkNGMyYzY1MmM2
YjJhZmYyNWQyNjZkYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhh
bmRsZUltcGwoKQogICAgIEFTU0VSVCghbV93b3JrZXJUaHJlYWQpOwogfQogCi1PcHRpb25hbDxz
aXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhh
bmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQog
ewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtU2VuZCIs
IHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVKYXJNYWMubW0KaW5kZXggYTRjZGFkZmI5NmQxNWY5MDllM2M5YzM3MmYxNDljYzkyZDZm
OTQ0Ni4uYzdjYzBmMDliYjI1NDU4NWRkOWE3ZjU5ZDM1NDIyZDYxYjBlZjI2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQpA
QCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzSW5QYXJ0aXRpb25Gb3JV
UkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjCiAgICAgICAgIGNvb2tp
ZVN0b3JhZ2UgPSBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07
CiAKICAgICAvLyBUaGUgX2dldENvb2tpZXNGb3JVUkw6IG1ldGhvZCBjYWxscyB0aGUgY29tcGxl
dGlvbkhhbmRsZXIgc3luY2hyb25vdXNseS4KLSAgICBPcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJh
eSAqPj4gY29va2llc1B0cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxOU0FycmF5ICo+
PiBjb29raWVzUHRyOwogICAgIFtjb29raWVTdG9yYWdlIF9nZXRDb29raWVzRm9yVVJMOnVybCBt
YWluRG9jdW1lbnRVUkw6Zmlyc3RQYXJ0eSBwYXJ0aXRpb246cGFydGl0aW9uIGNvbXBsZXRpb25I
YW5kbGVyOlsmY29va2llc1B0cl0oTlNBcnJheSAqY29va2llcykgewogICAgICAgICBjb29raWVz
UHRyID0gcmV0YWluUHRyKGNvb2tpZXMpOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
LmgKaW5kZXggN2YwMzg0NmVjODRmMDU0NzNlNWQ1NWI5ZGE0NGU5YzgwYjY2NThjYi4uNTgxMGQ5
YmM5N2Y0NzI5M2MwMzY3YTFlYjI5NGJmN2IzMjM3MjFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbC5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmlu
YWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKIHByaXZhdGU6CiAgICAgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQmKTsKIAot
ICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBwbGF0Zm9y
bUNsb3NlKCkgZmluYWw7CiAKICAgICB2b2lkIGJlZ2luV2FpdGluZ0ZvclNvY2tldFdyaXRhYmls
aXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAppbmRleCAwODdkYWZk
YTQ5MzJlZjA0YTk1NzM0M2IwOWE3ZWFlOGJjMTdiOTk1Li4yNDExMzIzMGYzOGRkN2RmZDBmZjIy
ZTJmOTQ3NzUxOTE5NTYxOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5j
cHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRC
eXRlcyhnc3NpemUgYnl0ZXNSZWFkKQogCiAgICAgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhl
IGhhbmRsZSwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgogICAgIFJl
ZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgT3B0aW9u
YWw8c2l6ZV90PiBvcHRpb25hbExlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gb3B0
aW9uYWxMZW5ndGg7CiAgICAgaWYgKGJ5dGVzUmVhZCAhPSAtMSkKICAgICAgICAgb3B0aW9uYWxM
ZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCk7CiAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMsIG1fcmVhZEJ1ZmZlci5nZXQoKSwgb3B0aW9u
YWxMZW5ndGgpOwpAQCAtMTcxLDExICsxNzEsMTEgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjp3cml0ZVJlYWR5KCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotT3B0aW9uYWw8
c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0ZDo6b3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
IHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQi
LCB0aGlzKTsKICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtIHx8ICFkYXRhKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgd3JpdHRlbiA9IGdfcG9sbGFibGVfb3V0
cHV0X3N0cmVhbV93cml0ZV9ub25ibG9ja2luZyhtX291dHB1dFN0cmVhbS5nZXQoKSwgZGF0YSwg
bGVuZ3RoLCBtX2NhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwpAQCAtMTg0LDcg
KzE4NCw3IEBAIE9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZv
cm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsCiAgICAgICAgICAgICBiZWdpbldhaXRp
bmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkaWRG
YWlsKFNvY2tldFN0cmVhbUVycm9yKGVycm9yLT5jb2RlLCBTdHJpbmcoKSwgZXJyb3ItPm1lc3Nh
Z2UpKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgZGlkIG5vdCBzZW5kIGFsbCB0aGUgYnl0ZXMgd2Ug
d2VyZSBnaXZlbiwgd2Uga25vdyB0aGF0CkBAIC0xOTMsNyArMTkzLDcgQEAgT3B0aW9uYWw8c2l6
ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGwKICAgICAgICAgYmVnaW5XYWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKTsK
IAogICAgIGlmICh3cml0dGVuID09IC0xKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+
KHdyaXR0ZW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFr
TGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKaW5kZXggZjI2
MTc5NTY4M2FmMjU5NTU4YzgxYzIxNjg0MzQ2OTlkMjc3NDgyZC4uODhkN2U5OTU4MjAzNTg5NzBm
MGU4YTFlNjE3MTE1Y2ZmMDgwNjk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JyZWFrTGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5l
cy5oCkBAIC04NSw3ICs4NSw3IEBAIGlubGluZSBib29sIG5lZWRzTGluZUJyZWFrSXRlcmF0b3Io
VUNoYXIgY2hhcmFjdGVyKQogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTm9uQnJl
YWtpbmdTcGFjZUJlaGF2aW9yIG5vbkJyZWFraW5nU3BhY2VCZWhhdmlvcj4KIGlubGluZSB1bnNp
Z25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRv
ciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNvbnN0IENoYXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uKQogewotICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBuZXh0QnJlYWs7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOwog
CiAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0TGFzdENoYXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAx
ID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAyXSA6IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+
KGxhenlCcmVha0l0ZXJhdG9yLnNlY29uZFRvTGFzdENoYXJhY3RlcigpKTsKICAgICBDaGFyYWN0
ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFydFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFydFBv
c2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRv
ci5sYXN0Q2hhcmFjdGVyKCkpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIGlubGluZSB1bnNpZ25lZCBu
ZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6
eUJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGlmIChicmVha0l0ZXJhdG9yKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gdGV4dEJyZWFrRm9sbG93aW5nKGJyZWFr
SXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJyZWFrRG9uZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXh0QnJlYWsgPSBOdWxsb3B0OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5leHRCcmVhayA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGNhbmRp
ZGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID49IHByaW9y
Q29udGV4dExlbmd0aCk7CkBAIC0xMzIsNyArMTMyLDcgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRC
cmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJl
YWsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIE5vbkJyZWFraW5nU3BhY2VCZWhh
dmlvciBub25CcmVha2luZ1NwYWNlQmVoYXZpb3I+CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG5l
eHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJl
YWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCiB7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRC
cmVhazsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWs7CiAKICAgICBDaGFy
YWN0ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFydFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFy
dFBvc2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVy
YXRvci5sYXN0Q2hhcmFjdGVyKCkpOwogICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCA9
IGxhenlCcmVha0l0ZXJhdG9yLnByaW9yQ29udGV4dExlbmd0aCgpOwpAQCAtMTUyLDcgKzE1Miw3
IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseShM
YXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChp
ICsgcHJpb3JDb250ZXh0TGVuZ3RoID49IDEpOwogICAgICAgICAgICAgICAgICAgICBpbnQgY2Fu
ZGlkYXRlID0gdGV4dEJyZWFrRm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgKyBwcmlvckNvbnRl
eHRMZW5ndGggLSAxKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBUZXh0
QnJlYWtEb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEJyZWFrID0gTnVsbG9wdDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBjYW5kaWRhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
ID4gcHJpb3JDb250ZXh0TGVuZ3RoKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBpbmxpbmUgdW5zaWdu
ZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3JpbmdOQlNQTG9vc2UoTGF6eUxpbmVCcmVha0l0
ZXJhdG9yJiBsYQogICAgIHJldHVybiBuZXh0QnJlYWthYmxlUG9zaXRpb25Mb29zZWx5PFVDaGFy
LCBOb25CcmVha2luZ1NwYWNlQmVoYXZpb3I6Oklnbm9yZU5vbkJyZWFraW5nU3BhY2U+KGxhenlC
cmVha0l0ZXJhdG9yLCBzdHJpbmdWaWV3LmNoYXJhY3RlcnMxNigpLCBzdHJpbmdWaWV3Lmxlbmd0
aCgpLCBzdGFydFBvc2l0aW9uKTsKIH0KIAotaW5saW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxp
bmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlv
biwgT3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBib29sIGJyZWFrTkJTUCwgYm9v
bCBpc0xvb3NlTW9kZSwgYm9vbCBrZWVwQWxsV29yZHMpCitpbmxpbmUgYm9vbCBpc0JyZWFrYWJs
ZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFy
dFBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgbmV4dEJyZWFrYWJsZSwgYm9vbCBi
cmVha05CU1AsIGJvb2wgaXNMb29zZU1vZGUsIGJvb2wga2VlcEFsbFdvcmRzKQogewogICAgIGlm
IChuZXh0QnJlYWthYmxlICYmIG5leHRCcmVha2FibGUudmFsdWUoKSA+PSBzdGFydFBvc2l0aW9u
KQogICAgICAgICByZXR1cm4gc3RhcnRQb3NpdGlvbiA9PSBuZXh0QnJlYWthYmxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNw
cAppbmRleCBmZjkwNDUwYjgxZTIxN2RhOTA1MjU5YTg5NDhmMGMxZDZhOGM2OTE4Li42MzE2YjNh
ODJmNzg2Y2M0M2E2YzkwODMyNDEyNGJlNmYyZWRjM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCB2b2lkIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbigpCiAKIHZvaWQg
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdCkKIHsKLSAgICBpZiAoT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25N
YXRyaXg+IGludmVyc2UgPSB0LmludmVyc2UoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPFRy
YW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlID0gdC5pbnZlcnNlKCkpIHsKICAgICAgICAgbV9s
YXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlLnZhbHVlKCkucHJvamVjdFBvaW50KG1fbGFzdFBsYW5h
clBvaW50KTsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IGludmVyc2UudmFsdWUoKS5wcm9q
ZWN0UXVhZChtX2xhc3RQbGFuYXJRdWFkKTsKICAgICAgICAgbV9sYXN0UGxhbmFyQXJlYSA9IGlu
dmVyc2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xhc3RQbGFuYXJBcmVhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA0
ZWNkODVhNjExZDM0MmE3OTNiYzIyYmJkY2RjZjcxMDRmZjJhOWJhLi5hMWZlOGZjYzFjODhmMjZl
MTZhNjNmMTJiNjQzMmQ1YTBlODFjZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFydFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQpOwogfQogCi1PcHRpb25hbDxJbnRlcnBv
bGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1YWxp
dHlGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorc3RkOjpvcHRpb25hbDxJbnRl
cnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1
YWxpdHlGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIHN3aXRjaCAo
c3R5bGUuaW1hZ2VSZW5kZXJpbmcoKSkgewogICAgIGNhc2UgSW1hZ2VSZW5kZXJpbmdPcHRpbWl6
ZVNwZWVkOgpAQCAtMTEwLDcgKzExMCw3IEBAIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5
PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TCiAgICAg
Y2FzZSBJbWFnZVJlbmRlcmluZ0F1dG86CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3Qs
IEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUp
CkBAIC0xMTksNyArMTE5LDcgQEAgSW50ZXJwb2xhdGlvblF1YWxpdHkgSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcjo6Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3MKICAgICBpZiAoIShp
bWFnZS5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpIHx8IGNv
bnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkRl
ZmF1bHQ7CiAKLSAgICBpZiAoT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IHN0eWxlSW50
ZXJwb2xhdGlvbiA9IGludGVycG9sYXRpb25RdWFsaXR5RnJvbVN0eWxlKG9iamVjdC0+c3R5bGUo
KSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IHN0eWxlSW50
ZXJwb2xhdGlvbiA9IGludGVycG9sYXRpb25RdWFsaXR5RnJvbVN0eWxlKG9iamVjdC0+c3R5bGUo
KSkpCiAgICAgICAgIHJldHVybiBzdHlsZUludGVycG9sYXRpb24udmFsdWUoKTsKIAogICAgIC8v
IE1ha2Ugc3VyZSB0byB1c2UgdGhlIHVuem9vbWVkIGltYWdlIHNpemUsIHNpbmNlIGlmIGEgZnVs
bCBwYWdlIHpvb20gaXMgaW4gZWZmZWN0LCB0aGUgaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IDJiMWE0NDU2ZTE0MWEy
ZTAyZDY4OTMyMWQ4NGQwY2Y4MDNlOGM2ZDIuLmViNGYxNTM1YmU0YjNkNjhkNmE0NDZmY2E1NjQz
NzQ5YmQyNGIyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250
cm9sbGVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNv
bnN0IFJlbmRlclZpZXcmKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVh
bGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xh
dGlvblF1YWxpdHlGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlJiwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExh
eW91dFNpemUmKTsKIAogICAgIHZvaWQgcmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoUmVuZGVyQm94
TW9kZWxPYmplY3QmIHJlbmRlcmVyKSB7IHJlbW92ZU9iamVjdCgmcmVuZGVyZXIpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IGE3YWQ4MTZhZDdhMTVi
ZjAzZDJlY2JhMGU0YTA5ZTVjMDAwZTM0YzcuLmYzNjZiM2NkM2E0MGYwOGIzY2FhOWVmMzE2NzU3
MmI0M2UwZThmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
CkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIElubGluZUl0ZXJhdG9yIHsKICAgICAgICAgbW92ZVRv
KG9iamVjdCwgMCk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlVG8oUmVuZGVyT2JqZWN0JiBvYmpl
Y3QsIHVuc2lnbmVkIG9mZnNldCwgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhayA9IE9wdGlv
bmFsPHVuc2lnbmVkPigpKQorICAgIHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1
bnNpZ25lZCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhayA9IHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+KCkpCiAgICAgewogICAgICAgICBzZXRSZW5kZXJlcigmb2JqZWN0
KTsKICAgICAgICAgc2V0T2Zmc2V0KG9mZnNldCk7CkBAIC04Niw4ICs4Niw4IEBAIGNsYXNzIElu
bGluZUl0ZXJhdG9yIHsKICAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Bv
czsgfQogICAgIHZvaWQgc2V0T2Zmc2V0KHVuc2lnbmVkIHBvc2l0aW9uKTsKICAgICBSZW5kZXJF
bGVtZW50KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEJyZWFr
YWJsZVBvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXROZXh0QnJlYWthYmxlUG9zaXRpb24oT3B0aW9u
YWw8dW5zaWduZWQ+IHBvc2l0aW9uKSB7IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gcG9zaXRp
b247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX25leHRCcmVha2FibGVQb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0
TmV4dEJyZWFrYWJsZVBvc2l0aW9uKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHBvc2l0aW9uKSB7
IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gcG9zaXRpb247IH0KICAgICBib29sIHJlZmVyc1Rv
RW5kT2ZQcmV2aW91c05vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyc1RvRW5kT2ZQcmV2aW91
c05vZGU7IH0KICAgICB2b2lkIHNldFJlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoKTsKIApAQCAt
MTE4LDcgKzExOCw3IEBAIGNsYXNzIElubGluZUl0ZXJhdG9yIHsKICAgICBSZW5kZXJFbGVtZW50
KiBtX3Jvb3QgeyBudWxscHRyIH07CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyIHsgbnVs
bHB0ciB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9u
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOwog
ICAgIHVuc2lnbmVkIG1fcG9zIHsgMCB9OwogCiAgICAgLy8gVGhlcmUgYXJlIGEgY291cGxlIHBs
YWNlcyB3aGVyZSB3ZSB3YW50IHRvIGRlY3JlbWVudCBhbiBJbmxpbmVJdGVyYXRvci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyM2FkY2QzNDMxNzIx
ZDA2NWJiMjIzZTI2NjhkOGEwNWY1MjAyNTU3Li4zZjMwNTU1YWE0ZDNiYzA3NTZkODM3NmVmN2Y1
YmJmOWY5ZTgyNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlv
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKICAgICBib29s
IHJlc3BlY3RIeXBoZW4gPSBzZWxlY3Rpb25FbmQgPT0gbGVuZ3RoICYmIGhhc0h5cGhlbigpOwog
ICAgIGlmIChyZXNwZWN0SHlwaGVuKQogICAgICAgICBoeXBoZW5hdGVkU3RyaW5nID0gaHlwaGVu
YXRlZFN0cmluZ0ZvclRleHRSdW4oc3R5bGUsIGxlbmd0aCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVu
ID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgaHlwaGVuYXRlZFN0cmluZywgT3B0aW9uYWw8dW5z
aWduZWQ+KGxlbmd0aCkpOworICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4o
c3R5bGUsIGh5cGhlbmF0ZWRTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KGxlbmd0aCkp
OwogICAgIGlmIChyZXNwZWN0SHlwaGVuKQogICAgICAgICBzZWxlY3Rpb25FbmQgPSB0ZXh0UnVu
Lmxlbmd0aCgpOwogCkBAIC0xMDE1LDE4ICsxMDE1LDE4IEBAIGZsb2F0IElubGluZVRleHRCb3g6
OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKICAgICByZXR1cm4gc25h
cFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLm1heFgo
KTsKIH0KIAotU3RyaW5nVmlldyBJbmxpbmVUZXh0Qm94OjpzdWJzdHJpbmdUb1JlbmRlcihPcHRp
b25hbDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0aCkgY29uc3QKK1N0cmluZ1ZpZXcgSW5saW5l
VGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gb3ZlcnJp
ZGluZ0xlbmd0aCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nVmlldyhyZW5kZXJlcigpLnRl
eHQoKSkuc3Vic3RyaW5nKHN0YXJ0KCksIG92ZXJyaWRpbmdMZW5ndGgudmFsdWVPcihsZW4oKSkp
OworICAgIHJldHVybiBTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoc3Rh
cnQoKSwgb3ZlcnJpZGluZ0xlbmd0aC52YWx1ZV9vcihsZW4oKSkpOwogfQogCi1TdHJpbmcgSW5s
aW5lVGV4dEJveDo6aHlwaGVuYXRlZFN0cmluZ0ZvclRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVuZ3RoKSBjb25zdAorU3RyaW5n
IElubGluZVRleHRCb3g6Omh5cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVuZ3RoKSBjb25z
dAogewogICAgIEFTU0VSVChoYXNIeXBoZW4oKSk7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoc3Vi
c3RyaW5nVG9SZW5kZXIoYWx0ZXJuYXRlTGVuZ3RoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpOwog
fQogCi1UZXh0UnVuIElubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBTdHJpbmdWaWV3IGFsdGVybmF0ZVN0cmluZ1RvUmVuZGVyLCBPcHRpb25h
bDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVuZ3RoKSBjb25zdAorVGV4dFJ1biBJbmxpbmVUZXh0Qm94
Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU3RyaW5nVmlldyBh
bHRlcm5hdGVTdHJpbmdUb1JlbmRlciwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRl
TGVuZ3RoKSBjb25zdAogewogICAgIGlmIChhbHRlcm5hdGVTdHJpbmdUb1JlbmRlci5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIHN1YnN0cmluZ1RvUmVu
ZGVyKGFsdGVybmF0ZUxlbmd0aCksIHJlbmRlcmVyKCkudGV4dExlbmd0aCgpIC0gc3RhcnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA2YTk3MjMyMjhj
NTYxNmMxMzFlNzNiYmM4YTgzODRmYzdlZWRjYjE5Li45YzQ2MThhMTY3NDhmMTRkMjg1ZWNkNzE1
Y2Y1YWY4MGVjNjRmMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmgKQEAgLTEwNiw5ICsxMDYsOSBAQCBjbGFzcyBJbmxpbmVUZXh0Qm94IDogcHVibGljIElubGlu
ZUJveCB7CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20oKSBjb25zdDsKICAgICBMYXlv
dXRVbml0IHNlbGVjdGlvbkhlaWdodCgpIGNvbnN0OwogCi0gICAgU3RyaW5nVmlldyBzdWJzdHJp
bmdUb1JlbmRlcihPcHRpb25hbDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0aCA9IHsgfSkgY29u
c3Q7Ci0gICAgU3RyaW5nIGh5cGhlbmF0ZWRTdHJpbmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0
eWxlJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCA9IHsgfSkgY29uc3Q7Ci0g
ICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgU3RyaW5nVmll
dyBhbHRlcm5hdGVTdHJpbmdUb1JlbmRlciA9IHsgfSwgT3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVy
bmF0ZUxlbmd0aCA9IHsgfSkgY29uc3Q7CisgICAgU3RyaW5nVmlldyBzdWJzdHJpbmdUb1JlbmRl
cihzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBvdmVycmlkaW5nTGVuZ3RoID0geyB9KSBjb25zdDsK
KyAgICBTdHJpbmcgaHlwaGVuYXRlZFN0cmluZ0ZvclRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUm
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhbHRlcm5hdGVMZW5ndGggPSB7IH0pIGNvbnN0Owor
ICAgIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYsIFN0cmluZ1Zp
ZXcgYWx0ZXJuYXRlU3RyaW5nVG9SZW5kZXIgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGFsdGVybmF0ZUxlbmd0aCA9IHsgfSkgY29uc3Q7CiAgICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0
UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgU3RyaW5nVmlldywgdW5zaWduZWQgbWF4aW11bUxlbmd0
aCkgY29uc3Q7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9PcmRlckl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJh
dG9yLmNwcAppbmRleCAyZjk0Zjg1MTFhYWQ1NWEwZjhlN2EyMTFlMzc5MmY5NzAxNTA4NzJlLi5m
YWRlOTM4OGNlMDhhN2Q0N2FkOWE5NmY3MTYxOGZhZTE0NDZkYzQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFJlbmRlckJv
eCogT3JkZXJJdGVyYXRvcjo6bmV4dCgpCiB2b2lkIE9yZGVySXRlcmF0b3I6OnJlc2V0KCkKIHsK
ICAgICBtX2N1cnJlbnRDaGlsZCA9IG51bGxwdHI7Ci0gICAgbV9vcmRlckluZGV4ID0gTnVsbG9w
dDsKKyAgICBtX29yZGVySW5kZXggPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9yZGVySXRlcmF0b3JQ
b3B1bGF0b3I6Ok9yZGVySXRlcmF0b3JQb3B1bGF0b3IoT3JkZXJJdGVyYXRvciYgaXRlcmF0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuaAppbmRleCAzNzhlYzUyMjJj
N2ZmODcyNTRjZTI0ZjdkNjJjZTc4MGIwZjU3N2E3Li40N2NkMjdhZDI4MzUzM2IxZDMwZWUzYjhi
ZjhmNTcxZmI3YmFiNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3Jk
ZXJJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9y
LmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgT3JkZXJJdGVyYXRvciB7CiAgICAgUmVuZGVyQm94
KiBtX2N1cnJlbnRDaGlsZDsKIAogICAgIFZlY3RvcjxpbnQsIDE+IG1fb3JkZXJWYWx1ZXM7Ci0g
ICAgT3B0aW9uYWw8c2l6ZV90PiBtX29yZGVySW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG1fb3JkZXJJbmRleDsKIH07CiAKIGNsYXNzIE9yZGVySXRlcmF0b3JQb3B1bGF0b3Igewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDhlMzA3MDdkN2VjMDc2ODVlNTUy
NGQ1ZDc0ZTVlZmY0ODUyZWE5ZmQuLjg0ZDQ2YjYyNGIwM2E0ZjE5MTY2MzFiNTk1N2JmMDFlYjc4
MzBkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTEwOCw3ICsxMDgs
NyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKHJlY3QuaXNJbmZpbml0ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChs
b2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFJlY3QocmVjdCkpOworICAgICAgICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9j
YWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAgIHJlY3Quc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQo
dHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkpOwogICAgICAgICByZWN0LnNldFNpemUoTGF5b3V0
U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA4NTFhMDQ3NGU4NGM3MTUxOWJjZGIyM2MxM2NlOTli
Y2FhMTk0MGI4Li4yMDAxYjAwY2MzOTE5YWYwZTE2OGM0YWQyNTE2MmFmNzM0NjlmZjdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI0OCwxNCArMjQ4LDE0
IEBAIHN0cnVjdCBSZW5kZXJCbG9ja1JhcmVEYXRhIHsKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRh
KCkKICAgICAgICAgOiBtX3BhZ2luYXRpb25TdHJ1dCgwKQogICAgICAgICAsIG1fcGFnZUxvZ2lj
YWxPZmZzZXQoMCkKLSAgICAgICAgLCBtX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2soTnVsbG9w
dCkKKyAgICAgICAgLCBtX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2soc3RkOjpudWxsb3B0KQog
ICAgIHsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIExh
eW91dFVuaXQgbV9wYWdlTG9naWNhbE9mZnNldDsKIAotICAgIE9wdGlvbmFsPFJlbmRlckZsb3dU
aHJlYWQqPiBtX2Zsb3dUaHJlYWRDb250YWluaW5nQmxvY2s7CisgICAgc3RkOjpvcHRpb25hbDxS
ZW5kZXJGbG93VGhyZWFkKj4gbV9mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrOwogfTsKIAogdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJs
b2NrUmFyZURhdGE+PiBSZW5kZXJCbG9ja1JhcmVEYXRhTWFwOwpAQCAtMjk0NCw3ICsyOTQ0LDcg
QEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGlu
ZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgYm9vbCBpZ25vcmVCYXNlbGluZSA9
IChsYXllcigpICYmIChsYXllcigpLT5tYXJxdWVlKCkgfHwgKGRpcmVjdGlvbiA9PSBIb3Jpem9u
dGFsTGluZSA/IChsYXllcigpLT52ZXJ0aWNhbFNjcm9sbGJhcigpIHx8IGxheWVyKCktPnNjcm9s
bE9mZnNldCgpLnkoKSAhPSAwKQogICAgICAgICAgICAgOiAobGF5ZXIoKS0+aG9yaXpvbnRhbFNj
cm9sbGJhcigpIHx8IGxheWVyKCktPnNjcm9sbE9mZnNldCgpLngoKSAhPSAwKSkpKSB8fCAoaXNX
cml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpOwogICAgICAgICAKLSAgICAgICAgT3B0
aW9uYWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lID8gT3B0aW9uYWw8aW50Pigp
IDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gYmFzZWxpbmVQb3MgPSBpZ25vcmVCYXNlbGluZSA/IHN0ZDo6b3B0aW9uYWw8aW50Pigp
IDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOwogICAgICAgICAKICAgICAgICAgaWYg
KGlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCkpIHsKICAgICAgICAgICAgIC8vIEhpc3RvcmljYWxs
eSwgd2UgZGlkIHRoaXMgY2hlY2sgZm9yIGFsbCBiYXNlbGluZXMuIEJ1dCB3ZSBjYW4ndApAQCAt
Mjk1NCw3ICsyOTU0LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAgIC8v
IEZvciBzaW1wbGljaXR5LCB3ZSB1c2UgdGhpcyBmb3IgYWxsIHVzZXMgb2YgZGVwcmVjYXRlZCBm
bGV4Ym94LgogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21PZkNvbnRlbnQgPSBkaXJlY3Rp
b24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSArIGNvbnRl
bnRIZWlnaHQoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSArIGNvbnRlbnRXaWR0
aCgpOwogICAgICAgICAgICAgaWYgKGJhc2VsaW5lUG9zICYmIGJhc2VsaW5lUG9zLnZhbHVlKCkg
PiBib3R0b21PZkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgYmFzZWxpbmVQb3MgPSBPcHRpb25h
bDxpbnQ+KCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVQb3MgPSBzdGQ6Om9wdGlvbmFsPGlu
dD4oKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmFzZWxpbmVQb3MpCiAgICAgICAgICAgICBy
ZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgKyBiYXNlbGlu
ZVBvcy52YWx1ZSgpIDogbWFyZ2luUmlnaHQoKSArIGJhc2VsaW5lUG9zLnZhbHVlKCk7CkBAIC0y
OTc5LDQzICsyOTc5LDQzIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRG
b3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91CiAgICAgcmV0dXJuIHN0
ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0KGlzRmlyc3RMaW5l
LCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExp
bmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJl
bmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4g
UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0
aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxp
bnQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAogICAgIGZvciAo
UmVuZGVyQm94KiBjdXJyID0gZmlyc3RDaGlsZEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4
dFNpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAoIWN1cnItPmlzRmxvYXRpbmdPck91dE9mRmxv
d1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludD4gcmVzdWx0ID0g
Y3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9u
YWw8aW50PihjdXJyLT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0
ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KKyAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFs
PGludD4gcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGN1cnItPmxvZ2ljYWxUb3AoKSArIHJlc3VsdC52
YWx1ZSgpKTsgLy8gVHJhbnNsYXRlIHRvIG91ciBjb29yZGluYXRlIHNwYWNlLgogICAgICAgICB9
CiAgICAgfQogCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICByZXR1cm4gc3RkOjpv
cHRpb25hbDxpbnQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2s6OmlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8aW50PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9v
dCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCiAgICAgYm9vbCBoYXZlTm9ybWFs
Rmxvd0NoaWxkID0gZmFsc2U7CiAgICAgZm9yIChhdXRvKiBib3ggPSBsYXN0Q2hpbGRCb3goKTsg
Ym94OyBib3ggPSBib3gtPnByZXZpb3VzU2libGluZ0JveCgpKSB7CiAgICAgICAgIGlmIChib3gt
PmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBoYXZlTm9ybWFsRmxvd0NoaWxkID0gdHJ1ZTsKLSAgICAgICAgaWYgKE9wdGlv
bmFsPGludD4gcmVzdWx0ID0gYm94LT5pbmxpbmVCbG9ja0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24p
KQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oYm94LT5sb2dpY2FsVG9wKCkgKyBy
ZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KKyAg
ICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50PiByZXN1bHQgPSBib3gtPmlubGluZUJsb2NrQmFz
ZWxpbmUobGluZURpcmVjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxp
bnQ+KGJveC0+bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8g
b3VyIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgfQogCiAgICAgaWYgKCFoYXZlTm9ybWFsRmxvd0No
aWxkICYmIGhhc0xpbmVJZkVtcHR5KCkpIHsKICAgICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBm
aXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxp
bnQ+KGZvbnRNZXRyaWNzLmFzY2VudCgpCisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGlu
dD4oZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwg
bGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNz
LmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRh
bExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRk
aW5nUmlnaHQoKSkpOwogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNS
ZW5kZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50
KQpAQCAtMzM1NCw3ICszMzU0LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6Y2FjaGVkRmxvd1RocmVh
ZENvbnRhaW5pbmdCbG9ja05lZWRzVXBkYXRlKCkgY29uc3QKIHZvaWQgUmVuZGVyQmxvY2s6OnNl
dENhY2hlZEZsb3dUaHJlYWRDb250YWluaW5nQmxvY2tOZWVkc1VwZGF0ZSgpCiB7CiAgICAgUmVu
ZGVyQmxvY2tSYXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVCbG9ja1JhcmVEYXRhKHRoaXMpOwot
ICAgIHJhcmVEYXRhLm1fZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayA9IE51bGxvcHQ7CisgICAg
cmFyZURhdGEubV9mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrID0gc3RkOjpudWxsb3B0OwogfQog
CiBSZW5kZXJGbG93VGhyZWFkKiBSZW5kZXJCbG9jazo6dXBkYXRlQ2FjaGVkRmxvd1RocmVhZENv
bnRhaW5pbmdCbG9jayhSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA0ZTc4NjY3MThmZGQ3ODYwYzBkNTg1
Yjk5YzQxZjE5NmM3YWQ3Yzc5Li4xYWY2YTg5OTBiOTM4N2EwNDcxMzkxMGMxMmVmYzNjYTM0NDBl
YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMzQxLDggKzM0
MSw4IEBAIGNsYXNzIFJlbmRlckJsb2NrIDogcHVibGljIFJlbmRlckJveCB7CiAgICAgdm9pZCBj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgs
IExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogICAgIAotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJy
aWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIERlbGF5IHVwZGF0aW5nIHNj
cm9sbGJhcnMgdW50aWwgZW5kQW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJh
bnNhY3Rpb24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZAogICAgIC8vIHdo
ZW4gYSBmbGV4Ym94IGlzIGxheWluZyBvdXQgaXRzIGRlc2NlbmRhbnRzLiBJZiBtdWx0aXBsZSBj
YWxscyBhcmUgbWFkZSB0byBiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0
aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5k
ZXggMjNlZjFkOTg2OWJiOGFhNzU3NWIzMWVkZGZkMTk0ZTY2Y2Q5Zjg1Yi4uNjc4NDk1MTJlM2Jj
ZWViYjQ0Y2RjOTljODIwYjZiYjhiZmZiZTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMwMzQsNDMgKzMwMzQsNDMgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6Om1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKExheW91dFVuaXQgbG9naWNh
bFRvcCwgTGF5b3V0VW4KICAgICB9CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyQmxv
Y2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01v
ZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pigp
OworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICBpZiAoIWNoaWxk
cmVuSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxp
bmUoKTsKIAogICAgIGlmICghaGFzTGluZXMoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGlu
dD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCiAgICAgaWYgKGF1
dG8gc2ltcGxlTGluZUxheW91dCA9IHRoaXMtPnNpbXBsZUxpbmVMYXlvdXQoKSkKLSAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oU2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZUZsb3dGaXJzdExp
bmVCYXNlbGluZSgqdGhpcywgKnNpbXBsZUxpbmVMYXlvdXQpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8aW50PihTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRlRmxvd0ZpcnN0TGluZUJh
c2VsaW5lKCp0aGlzLCAqc2ltcGxlTGluZUxheW91dCkpOwogCiAgICAgQVNTRVJUKGZpcnN0Um9v
dEJveCgpKTsKICAgICByZXR1cm4gZmlyc3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0
TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoZmlyc3RSb290Qm94KCktPmJhc2VsaW5l
VHlwZSgpKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVj
dGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJv
b3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAogICAgIC8vIE5vdGUgdGhhdCBo
ZXJlIHdlIG9ubHkgdGFrZSB0aGUgbGVmdCBhbmQgYm90dG9tIGludG8gY29uc2lkZXJhdGlvbi4g
T3VyIGNhbGxlciB0YWtlcyB0aGUgcmlnaHQgYW5kIHRvcCBpbnRvIGNvbnNpZGVyYXRpb24uCiAg
ICAgZmxvYXQgYm94SGVpZ2h0ID0gbGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGhl
aWdodCgpICsgbV9tYXJnaW5Cb3guYm90dG9tKCkgOiB3aWR0aCgpICsgbV9tYXJnaW5Cb3gubGVm
dCgpOwogICAgIGZsb2F0IGxhc3RCYXNlbGluZTsKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkp
IHsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gUmVuZGVyQmxv
Y2s6OmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbik7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gUmVuZGVyQmxvY2s6OmlubGluZUJsb2Nr
QmFzZWxpbmUobGluZURpcmVjdGlvbik7CiAgICAgICAgIGlmICghaW5saW5lQmxvY2tCYXNlbGlu
ZSkKICAgICAgICAgICAgIHJldHVybiBpbmxpbmVCbG9ja0Jhc2VsaW5lOwogICAgICAgICBsYXN0
QmFzZWxpbmUgPSBpbmxpbmVCbG9ja0Jhc2VsaW5lLnZhbHVlKCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCFoYXNMaW5lcygpKSB7CiAgICAgICAgICAgICBpZiAoIWhhc0xpbmVJZkVtcHR5
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAgICAgICAgICAgICBjb25zdCBhdXRv
JiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAg
ICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGZvbnRNZXRyaWNzLmFzY2VudCgpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGZvbnRNZXRyaWNzLmFzY2VudCgpCiAgICAgICAg
ICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50
ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMgogICAgICAgICAgICAg
ICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBh
ZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpOwogICAgICAgICB9
CkBAIC0zMDg2LDcgKzMwODYsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aQogICAgIC8vIEFj
Y29yZGluZyB0byB0aGUgQ1NTIHNwZWMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRl
dC5odG1sLCB3ZSBzaG91bGRuJ3QgYmUgcGVyZm9ybWluZyB0aGlzIG1pbiwgYnV0IHNob3VsZAog
ICAgIC8vIGluc3RlYWQgYmUgcmV0dXJuaW5nIGJveEhlaWdodCBkaXJlY3RseS4gSG93ZXZlciwg
d2UgZmVlbCB0aGF0IGEgbWluIGhlcmUgaXMgYmV0dGVyIGJlaGF2aW9yIChhbmQgaXMgY29uc2lz
dGVudAogICAgIC8vIGVub3VnaCB3aXRoIHRoZSBzcGVjIHRvIG5vdCBjYXVzZSB0b25zIG9mIGJy
ZWFrYWdlcykuCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3R5bGUoKS5vdmVyZmxvd1koKSA9
PSBPVklTSUJMRSA/IGxhc3RCYXNlbGluZSA6IHN0ZDo6bWluKGJveEhlaWdodCwgbGFzdEJhc2Vs
aW5lKSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihzdHlsZSgpLm92ZXJmbG93WSgp
ID09IE9WSVNJQkxFID8gbGFzdEJhc2VsaW5lIDogc3RkOjptaW4oYm94SGVpZ2h0LCBsYXN0QmFz
ZWxpbmUpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldFNlbGVjdGlvblN0YXRlKFNl
bGVjdGlvblN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oCmluZGV4IDFhN2E4MzAwNjYzMTNhNTY3Y2FlYjc2Y2Q0Y2Q2NTFkOTUyMmM2N2EuLjcx
YjQzMTFjNTlkMDBkN2IwOTE4NmZiNmY3ZTI2ZmE4ODcyMzQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTQ0Nyw4ICs0NDcsOCBAQCBjbGFzcyBS
ZW5kZXJCbG9ja0Zsb3cgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogCiAgICAgdm9pZCBjcmVhdGVG
bG9hdGluZ09iamVjdHMoKTsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIGJvb2wgaXNNdWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGZhNDU0MmQ4ZDYzOTg2NzdmMWRjZTI1NDM3Mjc4N2Fm
Y2YwZWJkYjkuLmEzYmM1YWY0ZDVjNGM3YjllMzRkOTY4ZDU1ODlmZDE1NDhiNzlhODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRp
YyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkZVdpZHRoTWFwID0gbnVsbHB0cjsKIAogI2lmIEVO
QUJMRShDU1NfR1JJRF9MQVlPVVQpCiAvLyBVc2VkIGJ5IGdyaWQgZWxlbWVudHMgdG8gcHJvcGVy
bHkgc2l6ZSB0aGVpciBncmlkIGl0ZW1zLgotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVu
ZGVyQm94KiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4+IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwor
dHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0Pj4gT3ZlcnJpZGVPcHRpb25hbFNpemVNYXA7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25h
bFNpemVNYXAqIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRNYXAgPSBudWxs
cHRyOwogc3RhdGljIE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwKiBnT3ZlcnJpZGVDb250YWluaW5n
QmxvY2tMb2dpY2FsV2lkdGhNYXAgPSBudWxscHRyOwogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCog
Z0V4dHJhSW5saW5lT2Zmc2V0TWFwID0gbnVsbHB0cjsKQEAgLTY2NywyNiArNjY3LDI2IEBAIExh
eW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsV2lkdGhJblJlZ2lvbkJ5TWluTWF4
KExheW91dFVuaXQgbG9naWNhbFdpCiAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxXaWR0aCwg
Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgc3R5bGVUb1VzZS5sb2dp
Y2FsTWluV2lkdGgoKSwgYXZhaWxhYmxlV2lkdGgsIGNiLCByZWdpb24pKTsKIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWln
aHQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbEhlaWdodEJ5
TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAgICBpZiAoIXN0eWxlVG9Vc2UubG9naWNhbE1heEhl
aWdodCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+
IG1heEggPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1heFNpemUsIHN0eWxlVG9Vc2UubG9n
aWNhbE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKKyAgICAgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4SCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmco
TWF4U2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpKQogICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IHN0ZDo6bWluKGxvZ2ljYWxIZWln
aHQsIG1heEgudmFsdWUoKSk7CiAgICAgfQotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBj
b21wdXRlZExvZ2ljYWxIZWlnaHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUs
IHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZExvZ2ljYWxIZWlnaHQg
PSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1p
bkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4KGxvZ2ljYWxIZWlnaHQsIGNvbXB1dGVkTG9naWNhbEhlaWdodC52YWx1ZSgpKTsKICAgICBy
ZXR1cm4gbG9naWNhbEhlaWdodDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFp
bkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0
LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5N
YXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGlu
dHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGlmICghc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0
KCkuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4
SCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2lj
YWxNYXhIZWlnaHQoKSwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgICAgIGlmIChzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQo
TWF4U2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpKQogICAgICAgICAgICAgbG9naWNhbEhlaWdodCA9IHN0ZDo6bWluKGxvZ2ljYWxIZWln
aHQsIG1heEgudmFsdWUoKSk7CiAgICAgfQotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBj
b21wdXRlZENvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0
KE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50
SGVpZ2h0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZENvbnRl
bnRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNpemUsIHN0
eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQsIGNvbXB1dGVkQ29udGVudExvZ2lj
YWxIZWlnaHQudmFsdWUoKSk7CiAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQ7CiB9CkBAIC0xMTIz
LDEzICsxMTIzLDEzIEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpvdmVycmlkZUxvZ2ljYWxDb250
ZW50SGVpZ2h0KCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi1PcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVu
dExvZ2ljYWxXaWR0aCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJv
eDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGgoKSk7CiAg
ICAgcmV0dXJuIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aE1hcC0+Z2V0KHRo
aXMpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxI
ZWlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2lj
YWxIZWlnaHRNYXAtPmdldCh0aGlzKTsKQEAgLTExNDUsMTQgKzExNDUsMTQgQEAgYm9vbCBSZW5k
ZXJCb3g6Omhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRNYXAgJiYgZ092
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodE1hcC0+Y29udGFpbnModGhpcyk7CiB9
CiAKLXZvaWQgUmVuZGVyQm94OjpzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsV2lkdGgoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbFdpZHRoKQordm9pZCBSZW5kZXJC
b3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxXaWR0aCkKIHsKICAgICBpZiAoIWdPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aE1hcCkKICAgICAgICAgZ092ZXJyaWRlQ29udGFpbmlu
Z0Jsb2NrTG9naWNhbFdpZHRoTWFwID0gbmV3IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwogICAg
IGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aE1hcC0+c2V0KHRoaXMsIGxvZ2lj
YWxXaWR0aCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQp
Cit2b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQpCiB7CiAgICAg
aWYgKCFnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwKQogICAgICAgICBn
T3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0TWFwID0gbmV3IE92ZXJyaWRlT3B0
aW9uYWxTaXplTWFwOwpAQCAtMTIyOCw3ICsxMjI4LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6
OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCB3aWR0
aCkKICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgd2lkdGgpOwogfQogCi1MYXlv
dXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXpp
bmcoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAogewogICAgIGlmICghaGVpZ2h0KQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNh
CiAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVzdWx0OwogICAgICAgICBpZiAoY2hlY2tNaW5N
YXhIZWlnaHQpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgaW50cmluc2ljSGVpZ2h0ID0gY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpOwot
ICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWlu
T3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0
KS52YWx1ZU9yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKKyAgICAgICAgICAgIGhlaWdodFJl
c3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFsdWVfb3IoY29tcHV0ZWRW
YWx1ZXMubV9leHRlbnQpOwogICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29uc3RyYWluTG9n
aWNhbEhlaWdodEJ5TWluTWF4KGhlaWdodFJlc3VsdCwgaW50cmluc2ljSGVpZ2h0KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBvbmx5IHRpbWVzIHdlIGRvbid0IGNoZWNr
IG1pbi9tYXggaGVpZ2h0IGFyZSB3aGVuIGEgZml4ZWQgbGVuZ3RoIGhhcwpAQCAtMjg5NSwyMSAr
Mjg5NSwyMSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIH0KIH0KIAotT3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBl
IGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBp
bnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwg
Y29uc3QgTGVuZ3RoJiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2lj
Q29udGVudEhlaWdodCkgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9n
aWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5n
KGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgaWYgKHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5k
U2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2lj
Q29udGVudEhlaWdodCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVp
Z2h0Rm9yQm94U2l6aW5nKGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7Ci0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoU2l6ZVR5cGUgaGVpZ2h0VHlw
ZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0Nv
bnRlbnRIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6
Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExl
bmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodEluY2x1
ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVz
aW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCisgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29t
cHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVp
Z2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExh
eW91dFVuaXQ+KDAsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhl
aWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpOwotICAg
IHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVp
Z2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVuaXQ+
IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2lj
TG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0
IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6aW5n
IHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29udGVu
dCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29kZSB3
aWxsIGhhdmUgdG8gY2hhbmdlLgpAQCAtMjkyNiwxMCArMjkyNiwxMCBAQCBPcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVz
aW5nKExlbmd0aAogICAgIHJldHVybiBMYXlvdXRVbml0KDApOwogfQogCi1PcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdo
dFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25h
bDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNh
bEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7
CiAgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0g
TWluU2l6ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkg
OiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6aW5nIHNwZWMgaXMgY29u
c2lkZXJpbmcgY2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29udGVudCBzaG91bGQgcmVz
b2x2ZSB0by4KICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8g
Y2hhbmdlLgogICAgIGlmIChoZWlnaHQuaXNJbnRyaW5zaWMoKSkKQEAgLTI5MzgsNyArMjkzOCw3
IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3Jv
bGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6CiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGhl
aWdodC52YWx1ZSgpKTsKICAgICBpZiAoaGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQog
ICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGhlaWdodCk7Ci0g
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBS
ZW5kZXJCb3g6OnNraXBDb250YWluaW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24o
Y29uc3QgUmVuZGVyQm94JiBjb250YWluaW5nQmxvY2ssIGJvb2wgaXNQZXJwZW5kaWN1bGFyV3Jp
dGluZ01vZGUpIGNvbnN0CkBAIC0yOTY4LDkgKzI5NjgsOSBAQCBzdGF0aWMgYm9vbCB0YWJsZUNl
bGxTaG91bGRIYXZlWmVyb0luaXRpYWxTaXplKGNvbnN0IFJlbmRlckJsb2NrJiBibG9jaywgYm9v
bCBzYwogICAgIHJldHVybiBzY3JvbGxzT3ZlcmZsb3dZICYmICghY2VsbC5zdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKS5pc0F1dG8oKSB8fCAhY2VsbC50YWJsZSgpLT5zdHlsZSgpLmxvZ2ljYWxIZWln
aHQoKS5pc0F1dG8oKSk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29t
cHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KSBjb25zdAor
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9n
aWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdodCkgY29uc3QKIHsKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBhdmFpbGFibGVIZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVIZWlnaHQ7CiAKICAgICBib29sIHNraXBwZWRBdXRvSGVpZ2h0Q29udGFpbmlu
Z0Jsb2NrID0gZmFsc2U7CiAgICAgUmVuZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7
CkBAIC0zMDA4LDIzICszMDA4LDIzIEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6
Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpCiAgICAgICAg
ICAgICAvLyBkb24ndCBjYXJlIGlmIHRoZSBjZWxsIHNwZWNpZmllZCBhIGhlaWdodCBvciBub3Qu
IFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vyc2VsdmVzCiAgICAgICAgICAgICAvLyBiZSBhIHBlcmNl
bnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJyZW50IGNvbnRlbnQgaGVpZ2h0LgogICAgICAgICAgICAg
aWYgKCFjYi0+aGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0YWJsZUNlbGxTaG91bGRIYXZlWmVyb0luaXRpYWxTaXplKCpjYiwgc2Nyb2xs
c092ZXJmbG93WSgpKSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KCkgOiBOdWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxTaG91bGRIYXZlWmVyb0luaXRpYWxTaXplKCpjYiwg
c2Nyb2xsc092ZXJmbG93WSgpKSA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oKSA6IHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY2ItPm92ZXJyaWRlTG9n
aWNhbENvbnRlbnRIZWlnaHQoKTsKICAgICAgICAgICAgIGluY2x1ZGVCb3JkZXJQYWRkaW5nID0g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoY2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCku
aXNGaXhlZCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgY29udGVudEJveEhlaWdodCA9IGNiLT5h
ZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0KGNic3R5
bGUubG9naWNhbEhlaWdodCgpLnZhbHVlKCkpKTsKLSAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0g
c3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY2ItPmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0QnlNaW5NYXgoY29udGVudEJveEhlaWdodCAtIGNiLT5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
KCksIE51bGxvcHQpKTsKKyAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0
VW5pdD4oMCwgY2ItPmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29u
dGVudEJveEhlaWdodCAtIGNiLT5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9w
dCkpOwogICAgIH0gZWxzZSBpZiAoY2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JD
YWxjdWxhdGVkKCkgJiYgIWlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQp
IHsKICAgICAgICAgLy8gV2UgbmVlZCB0byByZWN1ciBhbmQgY29tcHV0ZSB0aGUgcGVyY2VudGFn
ZSBoZWlnaHQgZm9yIG91ciBjb250YWluaW5nIGJsb2NrLgotICAgICAgICBpZiAoT3B0aW9uYWw8
TGF5b3V0VW5pdD4gaGVpZ2h0V2l0aFNjcm9sbGJhciA9IGNiLT5jb21wdXRlUGVyY2VudGFnZUxv
Z2ljYWxIZWlnaHQoY2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCkpKSB7CisgICAgICAgIGlmIChzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodFdpdGhTY3JvbGxiYXIgPSBjYi0+Y29tcHV0ZVBl
cmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNic3R5bGUubG9naWNhbEhlaWdodCgpKSkgewogICAgICAg
ICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciA9IGNiLT5hZGp1
c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhoZWlnaHRXaXRoU2Nyb2xsYmFy
KTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IGZvciBtaW4vbWF4IGhlaWdodCBi
ZWNhdXNlIHRoaXMgbWV0aG9kIGRvZXMgbm90CiAgICAgICAgICAgICAvLyBoYW5kbGUgdGhlIG1p
bi9tYXggb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGl0cyBjYWxsZXIgZG9lcy4gU28gdGhlCiAgICAg
ICAgICAgICAvLyByZXR1cm4gdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBub3Qg
aGF2ZSBiZWVuIGFkanVzdGVkCiAgICAgICAgICAgICAvLyB5ZXQuCi0gICAgICAgICAgICBMYXlv
dXRVbml0IGNvbnRlbnRCb3hIZWlnaHQgPSBjYi0+Y29uc3RyYWluQ29udGVudEJveExvZ2ljYWxI
ZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIGNiLT5zY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0KCksIE51bGxvcHQpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250
ZW50Qm94SGVpZ2h0ID0gY2ItPmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5N
YXgoY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxiYXIgLSBjYi0+c2Nyb2xsYmFyTG9naWNhbEhl
aWdodCgpLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3Rk
OjptYXg8TGF5b3V0VW5pdD4oMCwgY29udGVudEJveEhlaWdodCk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsKQEAg
LTMxMjcsNyArMzEyNyw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRM
b2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuCiB7CiAgICAgQVNTRVJU
KGhlaWdodFR5cGUgPT0gTWluU2l6ZSB8fCBoZWlnaHRUeXBlID09IE1haW5PclByZWZlcnJlZFNp
emUgfHwgIWxvZ2ljYWxIZWlnaHQuaXNBdXRvKCkpOwogICAgIGlmIChoZWlnaHRUeXBlID09IE1p
blNpemUgJiYgbG9naWNhbEhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJuIGFkanVzdENv
bnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKE9wdGlvbmFsPExheW91dFVuaXQ+KDAp
KTsKKyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkpOwogCiAgICAgc3dpdGNoIChsb2dpY2Fs
SGVpZ2h0LnR5cGUoKSkgewogICAgICAgICBjYXNlIEZpeGVkOgpAQCAtMzE5MSw3ICszMTkxLDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2lu
ZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBMZW4KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWls
YWJsZUxvZ2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KGF2YWls
YWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgaGVpZ2h0VHlw
ZSksIE51bGxvcHQpOworICAgIHJldHVybiBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgo
YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBoZWln
aHRUeXBlKSwgc3RkOjpudWxsb3B0KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWls
YWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBMZW5ndGgmIGgsIEF2YWlsYWJsZUxvZ2ljYWxI
ZWlnaHRUeXBlIGhlaWdodFR5cGUpIGNvbnN0CkBAIC0zMjExLDcgKzMyMTEsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYg
aCwgQXZhaWxhYmxlTG9naQogICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxI
ZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5ndGgoaCwgYXZhaWxhYmxlSGVpZ2h0KSk7CiAg
ICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9s
bGJhciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKE1haW5P
clByZWZlcnJlZFNpemUsIGgsIE51bGxvcHQpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xs
YmFyTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIGgsIHN0ZDo6bnVsbG9w
dCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBhZGp1c3RDb250ZW50
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIpIC0g
c2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKTsKIAogICAgIC8vIEZJWE1FOiBDaGVjayBsb2dpY2Fs
VG9wL2xvZ2ljYWxCb3R0b20gaGVyZSB0byBjb3JyZWN0bHkgaGFuZGxlIHZlcnRpY2FsIHdyaXRp
bmctbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCAyYTY4Y2ZkMzk1
YzZmYzQ2ZGRkNjE4YTQ4YjczMjFmNWVjNDgzYTdiLi4zMmRiNTJhMmU5NDI4NDI1OTYzMGI1ZTcw
YWQ3MWNmYjk0NTY1MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC04
NCw4ICs4NCw4IEBAIGNsYXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVj
dCB7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaGVpZ2h0KCkgOiB3aWR0aCgpOyB9CiAKICAg
ICBMYXlvdXRVbml0IGNvbnN0cmFpbkxvZ2ljYWxXaWR0aEluUmVnaW9uQnlNaW5NYXgoTGF5b3V0
VW5pdCwgTGF5b3V0VW5pdCwgUmVuZGVyQmxvY2smLCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cikg
Y29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxMYXlv
dXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNv
bnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Cisg
ICAgTGF5b3V0VW5pdCBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0KSBjb25zdDsKIAogICAgIHZvaWQgc2V0TG9naWNhbExlZnQoTGF5b3V0
VW5pdCBsZWZ0KQogICAgIHsKQEAgLTMwOSwxMiArMzA5LDEyIEBAIGNsYXNzIFJlbmRlckJveCA6
IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiAgICAgdm9pZCBjbGVhck92ZXJyaWRlTG9n
aWNhbENvbnRlbnRXaWR0aCgpOwogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGgoKSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5p
bmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRlQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICBib29sIGhhc092ZXJyaWRlQ29u
dGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdDsKLSAgICB2b2lkIHNldE92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChPcHRpb25hbDxMYXlvdXRVbml0Pik7
Ci0gICAgdm9pZCBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0
KE9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICB2b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxXaWR0aChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICB2
b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0Pik7CiAgICAgdm9pZCBjbGVhckNvbnRhaW5pbmdCbG9ja092ZXJy
aWRlU2l6ZSgpOwogICAgIHZvaWQgY2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0KCk7CiAgICAgTGF5b3V0VW5pdCBleHRyYUlubGluZU9mZnNldCgpIGNvbnN0
OwpAQCAtMzI5LDcgKzMyOSw3IEBAIGNsYXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5kZXJCb3hN
b2RlbE9iamVjdCB7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhG
b3JCb3hTaXppbmcoTGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBhZGp1
c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgaGVpZ2h0KSBj
b25zdDsKICAgICBMYXlvdXRVbml0IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hT
aXppbmcoTGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RDb250
ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWln
aHQpIGNvbnN0OworICAgIExheW91dFVuaXQgYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRG
b3JCb3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0OwogCiAg
ICAgc3RydWN0IENvbXB1dGVkTWFyZ2luVmFsdWVzIHsKICAgICAgICAgQ29tcHV0ZWRNYXJnaW5W
YWx1ZXMoKQpAQCAtNDE5LDkgKzQxOSw5IEBAIGNsYXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5k
ZXJCb3hNb2RlbE9iamVjdCB7CiAgICAgTGF5b3V0VW5pdCBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2
b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRNYXJnaW5TdGFydCwgTGF5b3V0VW5pdCBjaGlsZE1h
cmdpbkVuZCwgY29uc3QgUmVuZGVyQmxvY2smIGNiLCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAog
ICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUs
IExlbmd0aCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBj
b25zdCBSZW5kZXJCbG9jayYgY29udGFpbmluZ0Jsb2NrLCBSZW5kZXJSZWdpb24qKSBjb25zdDsK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVU
eXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2lj
Q29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNv
bnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNp
bmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBp
bnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVp
Z2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRMb2dpY2Fs
SGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5n
KFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVUeXBlLCBMZW5ndGggd2lkdGgpIGNvbnN0Owog
ICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1h
eFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBTaG91bGRDb21wdXRlUHJlZmVycmVkICA9
IENvbXB1dGVBY3R1YWwpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBMZW5ndGggaGVpZ2h0KSBjb25zdDsKQEAgLTQzMyw3
ICs0MzMsNyBAQCBjbGFzcyBSZW5kZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3Qg
ewogICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICBzdGF0aWMg
Ym9vbCBwZXJjZW50YWdlTG9naWNhbEhlaWdodElzUmVzb2x2YWJsZUZyb21CbG9jayhjb25zdCBS
ZW5kZXJCbG9jayYgY29udGFpbmluZ0Jsb2NrLCBib29sIG91dE9mRmxvd1Bvc2l0aW9uZWQsIGJv
b2wgc2Nyb2xsc092ZXJmbG93WSk7CiAgICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQo
KSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlUGVyY2VudGFnZUxvZ2lj
YWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYg
aGVpZ2h0KSBjb25zdDsKIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50TG9naWNhbFdpZHRoKCk7IH0KICAgICB2aXJ0
dWFsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVp
Z2h0VHlwZSkgY29uc3Q7CkBAIC01MTUsOCArNTE1LDggQEAgY2xhc3MgUmVuZGVyQm94IDogcHVi
bGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsKICAgICAKICAgICBSZW5kZXJMYXllciogZW5jbG9z
aW5nRmxvYXRQYWludGluZ0xheWVyKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBPcHRpb25h
bDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWw8aW50Pigp
OyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsgfSAvLyBSZXR1cm5z
IGVtcHR5IGlmIHdlIHNob3VsZCBza2lwIHRoaXMgYm94IHdoZW4gY29tcHV0aW5nIHRoZSBiYXNl
bGluZSBvZiBhbiBpbmxpbmUtYmxvY2suCisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGludD4g
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsg
fQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGlu
ZURpcmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOyB9IC8v
IFJldHVybnMgZW1wdHkgaWYgd2Ugc2hvdWxkIHNraXAgdGhpcyBib3ggd2hlbiBjb21wdXRpbmcg
dGhlIGJhc2VsaW5lIG9mIGFuIGlubGluZS1ibG9jay4KIAogICAgIGJvb2wgc2hyaW5rVG9Bdm9p
ZEZsb2F0cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdDsK
QEAgLTY0OCw3ICs2NDgsNyBAQCBjbGFzcyBSZW5kZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94TW9k
ZWxPYmplY3QgewogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNh
bEV4dGVudENvbXB1dGVkVmFsdWVzJiwgUmVuZGVyUmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0Owog
CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3Ro
IGxvZ2ljYWxXaWR0aExlbmd0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExh
eW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5n
dGggbG9naWNhbEhlaWdodExlbmd0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29u
dGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250
ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQ
YWRkaW5nKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVB
c1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNSZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2Nr
T3JJbmxpbmVUYWJsZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb21iaW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q29tYmluZVRleHQuY3BwCmluZGV4IGI1MDNhMTM4MDkzNDBlN2FhYTI5NmUwYmQ3OGM1ZTZiMDAy
YTU4ZTguLjEyNjUxOWYxNTQxOWQwODk5OGY3OGNjMDhjM2E2NGFkYzM0YmNlY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcApAQCAtNzEsMTAg
KzcxLDEwIEBAIGZsb2F0IFJlbmRlckNvbWJpbmVUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRDYXNjYWRlCiAgICAgcmV0dXJuIFJlbmRlclRleHQ6
OndpZHRoKGZyb20sIGxlbmd0aCwgZm9udCwgeFBvc2l0aW9uLCBmYWxsYmFja0ZvbnRzLCBnbHlw
aE92ZXJmbG93KTsKIH0KIAotT3B0aW9uYWw8RmxvYXRQb2ludD4gUmVuZGVyQ29tYmluZVRleHQ6
OmNvbXB1dGVUZXh0T3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8RmxvYXRQb2ludD4gUmVuZGVyQ29tYmluZVRleHQ6OmNvbXB1dGVUZXh0T3JpZ2lu
KGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNDb21iaW5l
ZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBWaXN1YWxseSBjZW50ZXIgbV9jb21iaW5lZFRleHRXaWR0aC9Bc2NlbnQvRGVz
Y2VudCB3aXRoaW4gYm94UmVjdAogICAgIEZsb2F0UG9pbnQgcmVzdWx0ID0gYm94UmVjdC5taW5Y
TWF4WUNvcm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRl
eHQuaAppbmRleCAyYjhiY2QyZjhmZWI1MDZlNmU1NDdkMDUxNjA3NDY5MTZmMGQwMTIzLi4wNzJi
ODFjNjFlMDhmNzc5NmM2OWUzNDYwZjg4NGUyMjc3NjBlMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBS
ZW5kZXJDb21iaW5lVGV4dCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXh0IHsKICAgICBUZXh0JiB0
ZXh0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFRleHQ+KG5vZGVGb3JOb25Bbm9ueW1v
dXMoKSk7IH0KIAogICAgIHZvaWQgY29tYmluZVRleHQoKTsKLSAgICBPcHRpb25hbDxGbG9hdFBv
aW50PiBjb21wdXRlVGV4dE9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gY29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxv
YXRSZWN0JiBib3hSZWN0KSBjb25zdDsKICAgICBTdHJpbmcgY29tYmluZWRTdHJpbmdGb3JSZW5k
ZXJpbmcoKSBjb25zdDsKICAgICBib29sIGlzQ29tYmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29tYmluZWQ7IH0KICAgICBmbG9hdCBjb21iaW5lZFRleHRXaWR0aChjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCkgY29uc3QgeyByZXR1cm4gZm9udC5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5k
ZXggODJhZGJjZDQxZjA5ODhhOGI0OWVkZjA5ZWY5MjFlMDdiZjljZDJkNC4uNTYzZTUzNmQ2YTE2
NjAyZjRjZTk0NTAzOTY0MGY0MTBmMmU5YzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTQzMyw3
ICs0MzMsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpv
bnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSBv
dXIgaGVpZ2h0IGFuZCBvdmVyZmxvdyBoZWlnaHQuCiAgICAgICAgICAgICBpZiAoc3R5bGUoKS5i
b3hBbGlnbigpID09IEJCQVNFTElORSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNj
ZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkg
KyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNj
ZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgp
ICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hp
bGQtPm1hcmdpblRvcCgpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChj
aGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7
CiAKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6
bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAg
ICAgICAgIGNoaWxkWSArPSBjaGlsZC0+bWFyZ2luVG9wKCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0
PigwLCAoY29udGVudEhlaWdodCgpIC0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNh
bE1hcmdpbkV4dGVudCgpKSkgLyAyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBCQkFTRUxJTkU6IHsKLSAgICAgICAgICAgICAgICAgICAgTGF5b3V0
VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5o
ZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CisgICAgICAgICAgICAgICAgICAgIExh
eW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hp
bGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgYXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKTsKICAgICAgICAgICAgICAgICAgICAgY2hp
bGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIChtYXhBc2NlbnQgLSBhc2NlbnQpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCmluZGV4IDQ5Y2EyYWNkMjg0YWYxY2QxZjJhNzllYzAyYjc2YTAzODk0
MzNkZTIuLmM1ZDBmNzAxNTBkM2I5Y2Y2MDg3NTM1ZDA5OGZiMGY4MzlhZTU2YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTc1LDE2
ICsxNzUsMTYgQEAgc3RhdGljIGludCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3go
Y29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb24KIAogaW50IFJlbmRlckZsZXhpYmxl
Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewotICAgIGludCBiYXNlbGlu
ZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNv
bnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOworICAgIGludCBiYXNlbGluZSA9IGZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVfb3Ioc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0
aGlzLCBkaXJlY3Rpb24pKTsKIAogICAgIGludCBtYXJnaW5Bc2NlbnQgPSBkaXJlY3Rpb24gPT0g
SG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCk7CiAgICAgcmV0dXJu
IGJhc2VsaW5lICsgbWFyZ2luQXNjZW50OwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhp
YmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVu
ZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNX
cml0aW5nTW9kZVJvb3QoKSB8fCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8
PSAwKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxpbnQ+KCk7CiAgICAgUmVuZGVyQm94KiBiYXNlbGluZUNoaWxkID0gbnVsbHB0
cjsKICAgICBpbnQgY2hpbGROdW1iZXIgPSAwOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9
IG1fb3JkZXJJdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBtX29yZGVySXRlcmF0b3Iu
bmV4dCgpKSB7CkBAIC0yMDMsMjcgKzIwMywyNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhp
YmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKCFiYXNl
bGluZUNoaWxkKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1
cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICBpZiAoIWlzQ29sdW1uRmxvdygpICYmIGhh
c09ydGhvZ29uYWxGbG93KCpiYXNlbGluZUNoaWxkKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PGludD4oY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVD
aGlsZC0+bG9naWNhbFRvcCgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50Pihj
cm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5s
b2dpY2FsVG9wKCkpOwogICAgIGlmIChpc0NvbHVtbkZsb3coKSAmJiAhaGFzT3J0aG9nb25hbEZs
b3coKmJhc2VsaW5lQ2hpbGQpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihtYWluQXhp
c0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxU
b3AoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4obWFpbkF4aXNFeHRlbnRG
b3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOwog
Ci0gICAgT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJh
c2VsaW5lKCk7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gYmFzZWxpbmVDaGls
ZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICBpZiAoIWJhc2VsaW5lKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcGFzcyB8ZGlyZWN0aW9ufCBpbnRvIGZpcnN0TGluZUJveEJhc2Vs
aW5lIGFuZCBzdG9wIGJhaWxpbmcgb3V0IGlmIHdlJ3JlIGEgd3JpdGluZyBtb2RlIHJvb3QuCiAg
ICAgICAgIC8vIFRoaXMgd291bGQgYWxzbyBmaXggc29tZSBjYXNlcyB3aGVyZSB0aGUgZmxleGJv
eCBpcyBvcnRob2dvbmFsIHRvIGl0cyBjb250YWluZXIuCiAgICAgICAgIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbiA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZTsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3ludGhlc2l6
ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCpiYXNlbGluZUNoaWxkLCBkaXJlY3Rpb24pICsgYmFz
ZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
aW50PihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKmJhc2VsaW5lQ2hpbGQsIGRp
cmVjdGlvbikgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOwogICAgIH0KIAotICAgIHJl
dHVybiBPcHRpb25hbDxpbnQ+KGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNlbGluZUNoaWxkLT5sb2dp
Y2FsVG9wKCkpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oYmFzZWxpbmUudmFsdWUo
KSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhpYmxlQm94Ojppbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3QKIHsKLSAg
ICBpZiAoT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkpCisgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkpCiAg
ICAgICAgIHJldHVybiBiYXNlbGluZTsKIAogICAgIGludCBtYXJnaW5Bc2NlbnQgPSBkaXJlY3Rp
b24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCk7CkBAIC00
NTUsMTIgKzQ1NSwxMiBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjptYWluQXhpc0Nv
bnRlbnRFeHRlbnQoTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaQogICAgIHJldHVybiBjb250
ZW50TG9naWNhbFdpZHRoKCk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhp
YmxlQm94Ojpjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNo
aWxkLCBTaXplVHlwZSBzaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBzaXplKQorc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9y
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0IExl
bmd0aCYgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyB3cm9uZyBmb3Igb3J0aG9nb25h
bCBmbG93cy4gSXQgc2hvdWxkIHVzZSB0aGUgZmxleGJveCdzIHdyaXRpbmctbW9kZSwgbm90IHRo
ZSBjaGlsZCdzIGluIG9yZGVyCiAgICAgLy8gdG8gZmlndXJlIG91dCB0aGUgbG9naWNhbCBoZWln
aHQvd2lkdGguCiAgICAgaWYgKGlzQ29sdW1uRmxvdygpKSB7Ci0gICAgICAgIC8vIFdlIGRvbid0
IGhhdmUgdG8gY2hlY2sgZm9yICJhdXRvIiBoZXJlIC0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVp
Z2h0IHdpbGwganVzdCByZXR1cm4gTnVsbG9wdCBmb3IgdGhhdCBjYXNlIGFueXdheS4KKyAgICAg
ICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBmb3IgImF1dG8iIGhlcmUgLSBjb21wdXRlQ29u
dGVudExvZ2ljYWxIZWlnaHQgd2lsbCBqdXN0IHJldHVybiBzdGQ6Om51bGxvcHQgZm9yIHRoYXQg
Y2FzZSBhbnl3YXkuCiAgICAgICAgIGlmIChzaXplLmlzSW50cmluc2ljKCkpCiAgICAgICAgICAg
ICBjb25zdF9jYXN0PFJlbmRlckJveCY+KGNoaWxkKS5sYXlvdXRJZk5lZWRlZCgpOyAvLyBGSVhN
RTogU2hvdWxkIG5vdCBuZWVkIHRvIGRvIGEgbGF5b3V0IGhlcmUuCiAgICAgICAgIHJldHVybiBj
aGlsZC5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoc2l6ZVR5cGUsIHNpemUsIGNoaWxkLmxv
Z2ljYWxIZWlnaHQoKSAtIGNoaWxkLmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwpA
QCAtNjg1LDcgKzY4NSw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJl
ZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKFJlbmRlckJveCYKICAgICAgICAgQVNTRVJU
KG1haW5BeGlzRXh0ZW50IC0gbWFpbkF4aXNCb3JkZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQo
Y2hpbGQpID49IDApOwogICAgICAgICByZXR1cm4gbWFpbkF4aXNFeHRlbnQgLSBtYWluQXhpc0Jv
cmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChjaGlsZCk7CiAgICAgfQotICAgIHJldHVybiBj
b21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwg
ZmxleEJhc2lzKS52YWx1ZU9yKDApOworICAgIHJldHVybiBjb21wdXRlTWFpbkF4aXNFeHRlbnRG
b3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgZmxleEJhc2lzKS52YWx1ZV9vcigw
KTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgVmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKQpAQCAtODI1
LDcgKzgyNSw3IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnVwZGF0ZUF1dG9NYXJnaW5zSW5D
cm9zc0F4aXMoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pCiAKIExheW91dFVuaXQgUmVuZGVy
RmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpCiB7
Ci0gICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVl
T3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICBMYXlvdXRVbml0IGFzY2Vu
dCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY3Jvc3NBeGlzRXh0ZW50Rm9y
Q2hpbGQoY2hpbGQpKTsKICAgICByZXR1cm4gYXNjZW50ICsgZmxvd0F3YXJlTWFyZ2luQmVmb3Jl
Rm9yQ2hpbGQoY2hpbGQpOwogfQogCkBAIC04NjksMTIgKzg2OSwxMiBAQCBib29sIFJlbmRlckZs
ZXhpYmxlQm94Ojpjcm9zc0F4aXNMZW5ndGhJc0RlZmluaXRlKGNvbnN0IFJlbmRlckJveCYgY2hp
bGQsIGNvbnN0CiB9CiAKICAgICAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxl
Qm94Ojpjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBMZW5ndGggY3Jvc3NTaXplTGVuZ3RoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlv
VXNpbmcoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgTGVuZ3RoIGNyb3NzU2l6ZUxlbmd0aCkgY29u
c3QKIHsKICAgICBBU1NFUlQoY2hpbGQuaGFzQXNwZWN0UmF0aW8oKSk7CiAgICAgQVNTRVJUKGNo
aWxkLmludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA+IDApOwogICAgIAotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGNyb3NzU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNyb3Nz
U2l6ZTsKICAgICBpZiAoY3Jvc3NTaXplTGVuZ3RoLmlzRml4ZWQoKSkKICAgICAgICAgY3Jvc3NT
aXplID0gTGF5b3V0VW5pdChjcm9zc1NpemVMZW5ndGgudmFsdWUoKSk7CiAgICAgZWxzZSB7CkBA
IC05MDAsMTMgKzkwMCwxMyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RD
aGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhpc01pbkFuZE1heChjbwogICAgIExlbmd0aCBj
cm9zc01heCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkubWF4SGVpZ2h0KCkg
OiBjaGlsZC5zdHlsZSgpLm1heFdpZHRoKCk7CiAKICAgICBpZiAoY3Jvc3NBeGlzTGVuZ3RoSXNE
ZWZpbml0ZShjaGlsZCwgY3Jvc3NNYXgpKSB7Ci0gICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IG1heFZhbHVlID0gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY2hpbGQsIGNy
b3NzTWF4KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtYXhWYWx1ZSA9IGNv
bXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjcm9zc01heCk7CiAgICAg
ICAgIGlmIChtYXhWYWx1ZSkKICAgICAgICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWluKG1heFZh
bHVlLnZhbHVlKCksIGNoaWxkU2l6ZSk7CiAgICAgfQogICAgIAogICAgIGlmIChjcm9zc0F4aXNM
ZW5ndGhJc0RlZmluaXRlKGNoaWxkLCBjcm9zc01pbikpIHsKLSAgICAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gbWluVmFsdWUgPSBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhj
aGlsZCwgY3Jvc3NNaW4pOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1pblZh
bHVlID0gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY2hpbGQsIGNyb3NzTWlu
KTsKICAgICAgICAgaWYgKG1pblZhbHVlKQogICAgICAgICAgICAgY2hpbGRTaXplID0gc3RkOjpt
YXgobWluVmFsdWUudmFsdWUoKSwgY2hpbGRTaXplKTsKICAgICB9CkBAIC05MjcsMTUgKzkyNywx
NSBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94Ojp1c2VDaGlsZEFzcGVjdFJhdGlvKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQpIGNvbnN0CiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1
c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5p
dCBjaGlsZFNpemUpCiB7CiAgICAgTGVuZ3RoIG1heCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNo
aWxkLnN0eWxlKCkubWF4V2lkdGgoKSA6IGNoaWxkLnN0eWxlKCkubWF4SGVpZ2h0KCk7Ci0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4RXh0ZW50ID0gTnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobWF4Lmlz
U3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkgewogICAgICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFp
bkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWF4U2l6ZSwgbWF4KTsKLSAgICAgICAgY2hpbGRT
aXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVPcihjaGlsZFNpemUpKTsK
KyAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVf
b3IoY2hpbGRTaXplKSk7CiAgICAgfQogICAgIAogICAgIExlbmd0aCBtaW4gPSBpc0hvcml6b250
YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLm1pbldpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLm1pbkhl
aWdodCgpOwogICAgIGlmIChtaW4uaXNTcGVjaWZpZWRPckludHJpbnNpYygpKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChj
aGlsZCwgTWluU2l6ZSwgbWluKS52YWx1ZU9yKGNoaWxkU2l6ZSkpOworICAgICAgICByZXR1cm4g
c3RkOjptYXgoY2hpbGRTaXplLCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwg
TWluU2l6ZSwgbWluKS52YWx1ZV9vcihjaGlsZFNpemUpKTsKICAgICAKICAgICBpZiAoIWlzRmxl
eGlibGVCb3hJbXBsKCkgJiYgbWluLmlzQXV0bygpICYmIG1haW5BeGlzT3ZlcmZsb3dGb3JDaGls
ZChjaGlsZCkgPT0gT1ZJU0lCTEUgJiYgIShpc0NvbHVtbkZsb3coKSAmJiBpczxSZW5kZXJGbGV4
aWJsZUJveD4oY2hpbGQpKSkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlv
biBvZiBDU1MgZmxleGJveCBzZWN0aW9uIDQuNSB3aGljaCBkZWZpbmVzIHRoZSBtaW5pbXVtIHNp
emUgb2YgInB1cmUiIGZsZXgKQEAgLTk0NywxNyArOTQ3LDE3IEBAIExheW91dFVuaXQgUmVuZGVy
RmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkCiAgICAgICAgIEFTU0VSVChjb250ZW50U2l6ZSA+PSAwKTsKICAgICAgICAgaWYgKGNo
aWxkLmhhc0FzcGVjdFJhdGlvKCkgJiYgY2hpbGQuaW50cmluc2ljU2l6ZSgpLmhlaWdodCgpID4g
MCkKICAgICAgICAgICAgIGNvbnRlbnRTaXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0
aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hpbGQsIGNvbnRlbnRTaXplKTsKLSAgICAgICAgY29udGVu
dFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY29udGVudFNp
emUpKTsKKyAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0
ZW50LnZhbHVlX29yKGNvbnRlbnRTaXplKSk7CiAgICAgICAgIAogICAgICAgICBMZW5ndGggbWFp
blNpemUgPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLndpZHRoKCkgOiBjaGls
ZC5zdHlsZSgpLmhlaWdodCgpOwogICAgICAgICBpZiAobWFpbkF4aXNMZW5ndGhJc0RlZmluaXRl
KGNoaWxkLCBtYWluU2l6ZSkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgcmVzb2x2ZWRNYWlu
U2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJy
ZWRTaXplLCBtYWluU2l6ZSkudmFsdWUoKTsKICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZlZE1h
aW5TaXplID49IDApOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3Rk
OjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IocmVzb2x2ZWRNYWluU2l6
ZSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVz
b2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKHJlc29sdmVkTWFpblNpemUpKTsKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIHN0ZDo6bWluKHNwZWNpZmllZFNp
emUsIGNvbnRlbnRTaXplKSk7CiAgICAgICAgIH0gZWxzZSBpZiAodXNlQ2hpbGRBc3BlY3RSYXRp
byhjaGlsZCkpIHsKICAgICAgICAgICAgIExlbmd0aCBjcm9zc1NpemVMZW5ndGggPSBpc0hvcml6
b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLmhlaWdodCgpIDogY2hpbGQuc3R5bGUoKS53aWR0
aCgpOwotICAgICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdHJhbnNmZXJyZWRTaXplID0g
Y29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY2hpbGQsIGNyb3NzU2l6ZUxlbmd0
aCk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHRyYW5zZmVycmVkU2l6
ZSA9IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjcm9zc1NpemVM
ZW5ndGgpOwogICAgICAgICAgICAgaWYgKHRyYW5zZmVycmVkU2l6ZSkgewogICAgICAgICAgICAg
ICAgIHRyYW5zZmVycmVkU2l6ZSA9IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NB
eGlzTWluQW5kTWF4KGNoaWxkLCB0cmFuc2ZlcnJlZFNpemUudmFsdWUoKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwgc3RkOjptaW4odHJhbnNmZXJyZWRTaXpl
LnZhbHVlKCksIGNvbnRlbnRTaXplKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5oCmluZGV4IDM5NGE4ZGU1ODFmMGVmOGY1YmUzMDNkNDg1OWJmMTdmOTIw
ODYxODQuLjNhMTliY2JmZjVmNjM4NzUxMjdhYjljNjU3MjFmNmIxYzdjMDliMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC00OCw4ICs0OCw4
IEBAIGNsYXNzIFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJlbmRlckJsb2NrIHsKICAgICB2
b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbEhlaWdodCA9IDApIGZpbmFsOwogCiAgICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJy
aWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFpbnRDaGlsZHJlbihQ
YWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGls
ZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlOwogCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNz
IFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJlbmRlckJsb2NrIHsKICAgICBMYXlvdXRVbml0
IG1haW5BeGlzRXh0ZW50KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjcm9zc0F4aXNDb250ZW50
RXh0ZW50KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYWluQXhpc0NvbnRlbnRFeHRlbnQoTGF5
b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodCk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgU2l6
ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSk7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBT
aXplVHlwZSwgY29uc3QgTGVuZ3RoJiBzaXplKTsKICAgICBXcml0aW5nTW9kZSB0cmFuc2Zvcm1l
ZFdyaXRpbmdNb2RlKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVCb3JkZXJTdGFy
dCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyRW5kKCkgY29uc3Q7CkBA
IC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUmVuZGVyRmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogICAgIGJvb2wgbWFpbkF4aXNMZW5ndGhJc0RlZmluaXRlKGNvbnN0IFJlbmRlckJv
eCYsIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIGJvb2wgY3Jvc3NBeGlzTGVuZ3RoSXNEZWZp
bml0ZShjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBMZW5ndGgmKSBjb25zdDsKICAgICBib29sIHVz
ZUNoaWxkQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZCwgTGVuZ3RoIGNyb3NzU2l6ZUxlbmd0aCkgY29uc3Q7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhj
b25zdCBSZW5kZXJCb3gmIGNoaWxkLCBMZW5ndGggY3Jvc3NTaXplTGVuZ3RoKSBjb25zdDsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJsZUJveEltcGwoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwCmluZGV4IGQ0MjNhYzNiMzNkMjljNzEwYTUzOTI1MTQ0YmQ4NTk0NDc4ODk4YTAuLjg5Njdh
YjkxOWU0ZmZlZjAwOTI5OTI2NDQ5ZTBlMTQxZjllYzZiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTEwODcsNyArMTA4Nyw3IEBAIGJv
b2wgUmVuZGVyRmxvd1RocmVhZDo6YWRkRm9yY2VkUmVnaW9uQnJlYWsoY29uc3QgUmVuZGVyQmxv
Y2sqIGJsb2NrLCBMYXlvdXRVbml0CiAgICAgICAgIGhhc0NvbXB1dGVkQXV0b0hlaWdodCA9IHRy
dWU7CiAKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgcmVnaW9uIGhlaWdodCBwcmV0ZW5kaW5nIHRo
YXQgdGhlIG9mZnNldEJyZWFrSW5DdXJyZW50UmVnaW9uIGlzIHRoZSBsb2dpY2FsSGVpZ2h0IGZv
ciB0aGUgYXV0by1oZWlnaHQgcmVnaW9uLgotICAgICAgICBMYXlvdXRVbml0IHJlZ2lvbkNvbXB1
dGVkQXV0b0hlaWdodCA9IG5hbWVkRmxvd0ZyYWdtZW50LmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgob2Zmc2V0QnJlYWtJbkN1cnJlbnRSZWdpb24sIE51bGxvcHQpOwor
ICAgICAgICBMYXlvdXRVbml0IHJlZ2lvbkNvbXB1dGVkQXV0b0hlaWdodCA9IG5hbWVkRmxvd0Zy
YWdtZW50LmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgob2Zmc2V0QnJl
YWtJbkN1cnJlbnRSZWdpb24sIHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAgLy8gVGhlIG5ldyBo
ZWlnaHQgb2YgdGhpcyByZWdpb24gbmVlZHMgdG8gYmUgc21hbGxlciB0aGFuIHRoZSBpbml0aWFs
IHZhbHVlLCB0aGUgbWF4IGhlaWdodC4gQSBmb3JjZWQgYnJlYWsgaXMgdGhlIG9ubHkgd2F5IHRv
IGNoYW5nZSB0aGUgaW5pdGlhbAogICAgICAgICAvLyBoZWlnaHQgb2YgYW4gYXV0by1oZWlnaHQg
cmVnaW9uIGJlc2lkZXMgY29udGVudCBlbmRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKaW5kZXggNDc1ZjU5MTRkYzIzOGM4NDA2MzZmYzhmMThmYWY2OTljNWFhMWJm
Zi4uNWNlZjY5YjE0NzIxNzI3MjMzODcxOWExMWE1ODA0ZWE3NjJmZmFkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIEdy
aWRUcmFjayB7CiAKICAgICB2b2lkIHNldEdyb3d0aExpbWl0KExheW91dFVuaXQgZ3Jvd3RoTGlt
aXQpCiAgICAgewotICAgICAgICBtX2dyb3d0aExpbWl0ID0gZ3Jvd3RoTGltaXQgPT0gaW5maW5p
dHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0LCBtX2dyb3d0aExpbWl0Q2Fw
LnZhbHVlT3IoZ3Jvd3RoTGltaXQpKTsKKyAgICAgICAgbV9ncm93dGhMaW1pdCA9IGdyb3d0aExp
bWl0ID09IGluZmluaXR5ID8gZ3Jvd3RoTGltaXQgOiBzdGQ6Om1pbihncm93dGhMaW1pdCwgbV9n
cm93dGhMaW1pdENhcC52YWx1ZV9vcihncm93dGhMaW1pdCkpOwogICAgICAgICBlbnN1cmVHcm93
dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VTaXplKCk7CiAgICAgfQogCkBAIC0xNDAsMTMgKzE0MCwx
MyBAQCBjbGFzcyBHcmlkVHJhY2sgewogICAgIGJvb2wgaW5maW5pdGVseUdyb3dhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9pbmZpbml0ZWx5R3Jvd2FibGU7IH0KICAgICB2b2lkIHNldEluZmluaXRl
bHlHcm93YWJsZShib29sIGluZmluaXRlbHlHcm93YWJsZSkgeyBtX2luZmluaXRlbHlHcm93YWJs
ZSA9IGluZmluaXRlbHlHcm93YWJsZTsgfQogCi0gICAgdm9pZCBzZXRHcm93dGhMaW1pdENhcChP
cHRpb25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1pdENhcCkKKyAgICB2b2lkIHNldEdyb3d0aExp
bWl0Q2FwKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZ3Jvd3RoTGltaXRDYXApCiAgICAgewog
ICAgICAgICBBU1NFUlQoIWdyb3d0aExpbWl0Q2FwIHx8IGdyb3d0aExpbWl0Q2FwLnZhbHVlKCkg
Pj0gMCk7CiAgICAgICAgIG1fZ3Jvd3RoTGltaXRDYXAgPSBncm93dGhMaW1pdENhcDsKICAgICB9
CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1pdENhcCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ3Jvd3RoTGltaXRDYXA7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGdy
b3d0aExpbWl0Q2FwKCkgY29uc3QgeyByZXR1cm4gbV9ncm93dGhMaW1pdENhcDsgfQogCiBwcml2
YXRlOgogICAgIGJvb2wgZ3Jvd3RoTGltaXRJc0luZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV9n
cm93dGhMaW1pdCA9PSBpbmZpbml0eTsgfQpAQCAtMTYyLDcgKzE2Miw3IEBAIGNsYXNzIEdyaWRU
cmFjayB7CiAgICAgTGF5b3V0VW5pdCBtX2dyb3d0aExpbWl0IHsgMCB9OwogICAgIExheW91dFVu
aXQgbV9wbGFubmVkU2l6ZSB7IDAgfTsKICAgICBMYXlvdXRVbml0IG1fdGVtcFNpemUgeyAwIH07
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9ncm93dGhMaW1pdENhcDsKKyAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IG1fZ3Jvd3RoTGltaXRDYXA7CiAgICAgYm9vbCBtX2luZmluaXRl
bHlHcm93YWJsZSB7IGZhbHNlIH07CiB9OwogCkBAIC0yODQsMTEgKzI4NCwxMSBAQCBjbGFzcyBS
ZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YSB7CiAgICAgVmVjdG9yPEdyaWRUcmFjayo+IGdyb3dC
ZXlvbmRHcm93dGhMaW1pdHNUcmFja3M7CiAgICAgVmVjdG9yPEdyaWRJdGVtV2l0aFNwYW4+IGl0
ZW1zU29ydGVkQnlJbmNyZWFzaW5nU3BhbjsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZy
ZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSB7IHJldHVybiBkaXJl
Y3Rpb24gPT0gRm9yQ29sdW1ucyA/IGZyZWVTcGFjZUZvckNvbHVtbnMgOiBmcmVlU3BhY2VGb3JS
b3dzOyB9Ci0gICAgdm9pZCBzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBP
cHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gZnJlZVNwYWNlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsgcmV0
dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gZnJlZVNwYWNlRm9yQ29sdW1ucyA6IGZyZWVT
cGFjZUZvclJvd3M7IH0KKyAgICB2b2lkIHNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKTsKIAotICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFi
bGVTcGFjZTsgfQotICAgIHZvaWQgc2V0QXZhaWxhYmxlU3BhY2UoT3B0aW9uYWw8TGF5b3V0VW5p
dD4gYXZhaWxhYmxlU3BhY2UpIHsgbV9hdmFpbGFibGVTcGFjZSA9IGF2YWlsYWJsZVNwYWNlOyB9
CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXZhaWxhYmxlU3BhY2U7IH0KKyAgICB2b2lkIHNldEF2YWlsYWJsZVNwYWNlKHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UpIHsgbV9hdmFpbGFibGVTcGFj
ZSA9IGF2YWlsYWJsZVNwYWNlOyB9CiAKICAgICBTaXppbmdPcGVyYXRpb24gc2l6aW5nT3BlcmF0
aW9uIHsgVHJhY2tTaXppbmcgfTsKIApAQCAtMzI4LDE0ICszMjgsMTQgQEAgY2xhc3MgUmVuZGVy
R3JpZDo6R3JpZFNpemluZ0RhdGEgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBmcmVlU3BhY2VGb3JDb2x1bW5zOwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGZyZWVTcGFjZUZvclJvd3M7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3Bh
Y2VGb3JDb2x1bW5zOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlRm9y
Um93czsKICAgICAvLyBObyBuZWVkIHRvIHN0b3JlIG9uZSBwZXIgZGlyZWN0aW9uIGFzIGl0IHdp
bGwgYmUgb25seSB1c2VkIGZvciBjb21wdXRhdGlvbnMgZHVyaW5nIGVhY2ggYXhpcwogICAgIC8v
IHRyYWNrIHNpemluZy4gSXQncyBjYWNoZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29t
cHV0ZSByZWxhdGl2ZSBzaXplcy4KLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2F2YWlsYWJs
ZVNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9hdmFpbGFibGVTcGFjZTsK
IH07CiAKLXZvaWQgUmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEZyZWVTcGFjZShHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBmcmVl
U3BhY2UpCit2b2lkIFJlbmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRGcmVlU3BhY2UoR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBmcmVlU3BhY2UpCiB7CiAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKQogICAgICAg
ICBmcmVlU3BhY2VGb3JDb2x1bW5zID0gZnJlZVNwYWNlOwpAQCAtNTI2LDcgKzUyNiw3IEBAIHZv
aWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0KQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgUmVuZGVyQmxvY2s6Omhhc0RlZmlu
aXRlTG9naWNhbEhlaWdodCgpIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGZvciBwb3NpdGlvbmVkIHN0
dWZmLgogICAgIC8vIEZJWE1FOiBDb25zaWRlciBjYWNoaW5nIHRoZSBoYXNEZWZpbml0ZUxvZ2lj
YWxIZWlnaHQgdmFsdWUgdGhyb3VnaG91dCB0aGUgbGF5b3V0LgotICAgIGJvb2wgaGFzRGVmaW5p
dGVMb2dpY2FsSGVpZ2h0ID0gaGFzT3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodCgpIHx8IGNv
bXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKSwgTnVsbG9wdCk7CisgICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWln
aHQgPSBoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRlbnRM
b2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgp
LCBzdGQ6Om51bGxvcHQpOwogICAgIGlmICghaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KQogICAg
ICAgICBjb21wdXRlSW50cmluc2ljTG9naWNhbEhlaWdodChzaXppbmdEYXRhKTsKICAgICBlbHNl
CkBAIC02NjYsOCArNjY2LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9n
aWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW8KICAgICAgICAgY29u
c3RfY2FzdDxSZW5kZXJHcmlkKj4odGhpcyktPnBsYWNlSXRlbXNPbkdyaWQoSW50cmluc2ljU2l6
ZUNvbXB1dGF0aW9uKTsKIAogICAgIEdyaWRTaXppbmdEYXRhIHNpemluZ0RhdGEobnVtVHJhY2tz
KEZvckNvbHVtbnMpLCBudW1UcmFja3MoRm9yUm93cykpOwotICAgIHNpemluZ0RhdGEuc2V0QXZh
aWxhYmxlU3BhY2UoTnVsbG9wdCk7Ci0gICAgc2l6aW5nRGF0YS5zZXRGcmVlU3BhY2UoRm9yQ29s
dW1ucywgTnVsbG9wdCk7CisgICAgc2l6aW5nRGF0YS5zZXRBdmFpbGFibGVTcGFjZShzdGQ6Om51
bGxvcHQpOworICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNlKEZvckNvbHVtbnMsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gPSBJbnRyaW5zaWNTaXplQ29t
cHV0YXRpb247CiAgICAgY29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvckNvbHVtbnMs
IHNpemluZ0RhdGEsIG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKIApAQCAtNjg2
LDggKzY4Niw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiB2b2lkIFJlbmRlckdyaWQ6OmNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQog
ewogICAgIEFTU0VSVChzaXppbmdEYXRhLmlzVmFsaWRUcmFuc2l0aW9uKEZvclJvd3MpKTsKLSAg
ICBzaXppbmdEYXRhLnNldEF2YWlsYWJsZVNwYWNlKE51bGxvcHQpOwotICAgIHNpemluZ0RhdGEu
c2V0RnJlZVNwYWNlKEZvclJvd3MsIE51bGxvcHQpOworICAgIHNpemluZ0RhdGEuc2V0QXZhaWxh
YmxlU3BhY2Uoc3RkOjpudWxsb3B0KTsKKyAgICBzaXppbmdEYXRhLnNldEZyZWVTcGFjZShGb3JS
b3dzLCBzdGQ6Om51bGxvcHQpOwogICAgIHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uID0gSW50
cmluc2ljU2l6ZUNvbXB1dGF0aW9uOwogICAgIExheW91dFVuaXQgbWluSGVpZ2h0LCBtYXhIZWln
aHQ7CiAgICAgY29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvclJvd3MsIHNpemluZ0Rh
dGEsIG1pbkhlaWdodCwgbWF4SGVpZ2h0KTsKQEAgLTcxMCwxMCArNzEwLDEwIEBAIHZvaWQgUmVu
ZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxIZWlnaHQoR3JpZFNpemluZ0RhdGEmIHNp
emluZ0RhdGEpCiAgICAgc2l6aW5nRGF0YS5zaXppbmdPcGVyYXRpb24gPSBUcmFja1NpemluZzsK
IH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIE9wdGlv
bmFsPExheW91dFVuaXQ+IGludHJpbnNpY0xvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgYm9yZGVy
QW5kUGFkZGluZykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxI
ZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljTG9naWNhbEhl
aWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdAogewogICAgIGlmICghaW50
cmluc2ljTG9naWNhbEhlaWdodCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc01pbkNv
bnRlbnQoKSkKICAgICAgICAgcmV0dXJuIG1fbWluQ29udGVudEhlaWdodDsKQEAgLTcyMywxMyAr
NzIzLDEzIEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0CiAKICAgICBpZiAobG9naWNhbEhlaWdo
dExlbmd0aC5pc0ZpdENvbnRlbnQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFi
bGVFeHRlbnQgPSBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChFeGNs
dWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihtX21heENv
bnRlbnRIZWlnaHQudmFsdWVPcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVl
T3IoMCksIGZpbGxBdmFpbGFibGVFeHRlbnQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1f
bWF4Q29udGVudEhlaWdodC52YWx1ZV9vcigwKSwgc3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0
LnZhbHVlX29yKDApLCBmaWxsQXZhaWxhYmxlRXh0ZW50KSk7CiAgICAgfQogCiAgICAgaWYgKGxv
Z2ljYWxIZWlnaHRMZW5ndGguaXNGaWxsQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBjb250
YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVy
UGFkZGluZykgLSBib3JkZXJBbmRQYWRkaW5nOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNrJiB0
cmFjaywgZG91YmxlIGZsZXhGYWN0b3IpCkBAIC03MzksMTQgKzczOSwxNCBAQCBzdGF0aWMgaW5s
aW5lIGRvdWJsZSBub3JtYWxpemVkRmxleEZyYWN0aW9uKGNvbnN0IEdyaWRUcmFjayYgdHJhY2ss
IGRvdWJsZSBmbGV4RgogCiB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3Jp
ZFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0
YSYgc2l6aW5nRGF0YSwgTGF5b3V0VW5pdCYgYmFzZVNpemVzV2l0aG91dE1heGltaXphdGlvbiwg
TGF5b3V0VW5pdCYgZ3Jvd3RoTGltaXRzV2l0aG91dE1heGltaXphdGlvbikgY29uc3QKIHsKLSAg
ICBjb25zdCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbml0aWFsRnJlZVNwYWNlID0gc2l6aW5nRGF0
YS5mcmVlU3BhY2UoZGlyZWN0aW9uKTsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGluaXRpYWxGcmVlU3BhY2UgPSBzaXppbmdEYXRhLmZyZWVTcGFjZShkaXJlY3Rpb24pOwog
ICAgIFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMp
ID8gc2l6aW5nRGF0YS5jb2x1bW5UcmFja3MgOiBzaXppbmdEYXRhLnJvd1RyYWNrczsKICAgICBW
ZWN0b3I8dW5zaWduZWQ+IGZsZXhpYmxlU2l6ZWRUcmFja3NJbmRleDsKICAgICBzaXppbmdEYXRh
LmNvbnRlbnRTaXplZFRyYWNrc0luZGV4LnNocmluaygwKTsKIAogICAgIC8vIEdyaWQgZ3V0dGVy
cyB3ZXJlIHJlbW92ZWQgZnJvbSBmcmVlU3BhY2UgYnkgdGhlIGNhbGxlciAoaWYgZnJlZVNwYWNl
IGlzIGRlZmluaXRlKSwKICAgICAvLyBidXQgd2UgbXVzdCB1c2UgdGhlbSB0byBjb21wdXRlIHJl
bGF0aXZlIChpLmUuIHBlcmNlbnRhZ2VzKSBzaXplcy4KLSAgICBMYXlvdXRVbml0IG1heFNpemUg
PSBzdGQ6Om1heChMYXlvdXRVbml0KCksIHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1
ZU9yKExheW91dFVuaXQoKSkpOworICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KExh
eW91dFVuaXQoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKExheW91dFVu
aXQoKSkpOwogICAgIGNvbnN0IGJvb2wgaGFzRGVmaW5pdGVGcmVlU3BhY2UgPSBzaXppbmdEYXRh
LnNpemluZ09wZXJhdGlvbiA9PSBUcmFja1NpemluZzsKIAogICAgIC8vIDEuIEluaXRpYWxpemUg
cGVyIEdyaWQgdHJhY2sgdmFyaWFibGVzLgpAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgUmVuZGVy
R3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3RpCiAgICAgICAgIGdyb3d0aExpbWl0c1dpdGhvdXRNYXhpbWl6YXRpb24gKz0g
dHJhY2suZ3Jvd3RoTGltaXQoKTsKICAgICAgICAgLy8gVGhlIGdyb3d0aCBsaW1pdCBjYXBzIG11
c3QgYmUgY2xlYXJlZCBub3cgaW4gb3JkZXIgdG8gcHJvcGVybHkgc29ydCB0cmFja3MgYnkgZ3Jv
d3RoCiAgICAgICAgIC8vIHBvdGVudGlhbCBvbiBhbiBldmVudHVhbCAiTWF4aW1pemUgVHJhY2tz
Ii4KLSAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXRDYXAoTnVsbG9wdCk7CisgICAgICAgIHRy
YWNrLnNldEdyb3d0aExpbWl0Q2FwKHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogICAgIExheW91dFVu
aXQgZnJlZVNwYWNlID0gaW5pdGlhbEZyZWVTcGFjZSA/IGluaXRpYWxGcmVlU3BhY2UudmFsdWUo
KSAtIGJhc2VTaXplc1dpdGhvdXRNYXhpbWl6YXRpb24gOiBMYXlvdXRVbml0KDApOwogCkBAIC05
NzMsMTIgKzk3MywxMiBAQCBzdGF0aWMgYm9vbCBoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZAogICAgIHJldHVybiBkaXJl
Y3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9n
aWNhbFdpZHRoKCkgOiBjaGlsZC5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWln
aHQoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRlQ29udGFpbmlu
Z0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQub3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgOiBjaGlsZC5vdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldE92ZXJyaWRl
Q29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBzaXpl
KQorc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNo
aWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24s
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc2l6ZSkKIHsKICAgICBpZiAoZGlyZWN0aW9uID09
IEZvckNvbHVtbnMpCiAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxXaWR0aChzaXplKTsKQEAgLTEwODAsNyArMTA4MCw3IEBAIExheW91dFVuaXQg
UmVuZGVyR3JpZDo6bG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGNvbnN0
CiAgICAgLy8gSWYgfGNoaWxkfCBoYXMgYSByZWxhdGl2ZSBsb2dpY2FsIGhlaWdodCwgd2Ugc2hv
dWxkbid0IGxldCBpdCBvdmVycmlkZSBpdHMgaW50cmluc2ljIGhlaWdodCwgd2hpY2ggaXMKICAg
ICAvLyB3aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGhlcmUuIFRodXMgd2UgbmVlZCB0byBzZXQg
dGhlIGJsb2NrLWF4aXMgb3ZlcnJpZGUgc2l6ZSB0byAtMSAobm8gcG9zc2libGUgcmVzb2x1dGlv
bikuCiAgICAgaWYgKHNob3VsZENsZWFyT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6
ZUZvckNoaWxkKGNoaWxkLCBGb3JSb3dzKSkgewotICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24sIE51
bGxvcHQpOworICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IGNoaWxkLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgfQogCkBAIC0xMTA0LDEz
ICsxMTA0LDEzIEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bWluU2l6ZUZvckNoaWxkKFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvCiAgICAgYm9vbCBvdmVycmlkZVNp
emVIYXNDaGFuZ2VkID0gdXBkYXRlT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZv
ckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbiwgc2l6aW5nRGF0YSk7CiAgICAgaWYg
KGlzUm93QXhpcykgewogICAgICAgICBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxXaWR0aCA9IHNp
emluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uID09IFRyYWNrU2l6aW5nID8gY29tcHV0ZU1hcmdpbkxv
Z2ljYWxTaXplRm9yQ2hpbGQoY2hpbGRJbmxpbmVEaXJlY3Rpb24sIGNoaWxkKSA6IG1hcmdpbklu
dHJpbnNpY0xvZ2ljYWxXaWR0aEZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgcmV0dXJuIGNoaWxk
LmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwg
b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElu
bGluZURpcmVjdGlvbikudmFsdWVPcigwKSwgKnRoaXMsIG51bGxwdHIpICsgbWFyZ2luTG9naWNh
bFdpZHRoOworICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9u
VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uKS52YWx1ZV9vcigwKSwg
KnRoaXMsIG51bGxwdHIpICsgbWFyZ2luTG9naWNhbFdpZHRoOwogICAgIH0KIAogICAgIGlmIChv
dmVycmlkZVNpemVIYXNDaGFuZ2VkICYmIChkaXJlY3Rpb24gIT0gRm9yQ29sdW1ucyB8fCBzaXpp
bmdEYXRhLnNpemluZ09wZXJhdGlvbiAhPSBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24pKQogICAg
ICAgICBjaGlsZC5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogICAgIGNoaWxkLmxheW91
dElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmco
TWluU2l6ZSwgY2hpbGRNaW5TaXplLCBOdWxsb3B0KS52YWx1ZU9yKDApICsgY2hpbGQubWFyZ2lu
TG9naWNhbEhlaWdodCgpICsgY2hpbGQuc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOworICAgIHJl
dHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6
ZSwgc3RkOjpudWxsb3B0KS52YWx1ZV9vcigwKSArIGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQo
KSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKIH0KIAogYm9vbCBSZW5kZXJHcmlk
Ojp1cGRhdGVPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVy
Qm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemlu
Z0RhdGEmIHNpemluZ0RhdGEpIGNvbnN0CkBAIC0xMTI4LDkgKzExMjgsOSBAQCBMYXlvdXRVbml0
IFJlbmRlckdyaWQ6Om1pbkNvbnRlbnRGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJh
Y2tTaXppbmdEaXJlYwogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURp
cmVjdGlvbiA9IGZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKGNoaWxkLCBGb3JDb2x1bW5zKTsK
ICAgICBpZiAoZGlyZWN0aW9uID09IGNoaWxkSW5saW5lRGlyZWN0aW9uKSB7CiAgICAgICAgIC8v
IElmIHxjaGlsZHwgaGFzIGEgcmVsYXRpdmUgbG9naWNhbCB3aWR0aCwgd2Ugc2hvdWxkbid0IGxl
dCBpdCBvdmVycmlkZSBpdHMgaW50cmluc2ljIHdpZHRoLCB3aGljaCBpcwotICAgICAgICAvLyB3
aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGhlcmUuIFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIG92
ZXJyaWRlIGxvZ2ljYWwgd2lkdGggdG8gTnVsbG9wdCAobm8gcG9zc2libGUgcmVzb2x1dGlvbiku
CisgICAgICAgIC8vIHdoYXQgd2UgYXJlIGludGVyZXN0ZWQgaW4gaGVyZS4gVGh1cyB3ZSBuZWVk
IHRvIHNldCB0aGUgb3ZlcnJpZGUgbG9naWNhbCB3aWR0aCB0byBzdGQ6Om51bGxvcHQgKG5vIHBv
c3NpYmxlIHJlc29sdXRpb24pLgogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJPdmVycmlkZUNvbnRh
aW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIEZvckNvbHVtbnMpKQotICAgICAg
ICAgICAgc2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxk
LCBjaGlsZElubGluZURpcmVjdGlvbiwgTnVsbG9wdCk7CisgICAgICAgICAgICBzZXRPdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGly
ZWN0aW9uLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIg
aWYgd2Ugc2hvdWxkIHJldHVybiB0aGUgaW50cmluc2ljIHdpZHRoIG9yIHRoZSBwcmVmZXJyZWQg
d2lkdGguCiAgICAgICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1Ymxp
Yy93d3ctc3R5bGUvMjAxM0phbi8wMjQ1Lmh0bWwKQEAgLTExNTgsNyArMTE1OCw3IEBAIExheW91
dFVuaXQgUmVuZGVyR3JpZDo6bWF4Q29udGVudEZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdy
aWRUcmFja1NpemluZ0RpcmVjCiAgICAgICAgIC8vIElmIHxjaGlsZHwgaGFzIGEgcmVsYXRpdmUg
bG9naWNhbCB3aWR0aCwgd2Ugc2hvdWxkbid0IGxldCBpdCBvdmVycmlkZSBpdHMgaW50cmluc2lj
IHdpZHRoLCB3aGljaCBpcwogICAgICAgICAvLyB3aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGhl
cmUuIFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIGlubGluZS1heGlzIG92ZXJyaWRlIHNpemUgdG8g
LTEgKG5vIHBvc3NpYmxlIHJlc29sdXRpb24pLgogICAgICAgICBpZiAoc2hvdWxkQ2xlYXJPdmVy
cmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIEZvckNvbHVtbnMp
KQotICAgICAgICAgICAgc2V0T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNo
aWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbiwgTnVsbG9wdCk7CisgICAgICAgICAgICBz
ZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxk
SW5saW5lRGlyZWN0aW9uLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJdCdz
IHVuY2xlYXIgaWYgd2Ugc2hvdWxkIHJldHVybiB0aGUgaW50cmluc2ljIHdpZHRoIG9yIHRoZSBw
cmVmZXJyZWQgd2lkdGguCiAgICAgICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hp
dmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxM0phbi8wMjQ1Lmh0bWwKQEAgLTEyNzQsNyArMTI3NCw3
IEBAIHZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rp
b25zRm9yTm9uU3Bhbm5pbmdJdGVtcyhHcmlkCiAgICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFz
TWF4Q29udGVudE9yQXV0b01heFRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQg
Z3Jvd3RoTGltaXQgPSBtYXhDb250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgc2l6
aW5nRGF0YSk7CiAgICAgICAgIGlmICh0cmFja1NpemUuaXNGaXRDb250ZW50KCkpCi0gICAgICAg
ICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0
cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2
YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKSkpOworICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBz
dGQ6Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRU
cmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgc2l6aW5nRGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVl
X29yKDApKSk7CiAgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0KHN0ZDo6bWF4KHRyYWNrLmdy
b3d0aExpbWl0KCksIGdyb3d0aExpbWl0KSk7CiAgICAgfQogfQpAQCAtMTQ2Miw4ICsxNDYyLDgg
QEAgc3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRU
cmFjayogdHJhY2sxLCBjb25zdCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5maW5pdGVHcm93
dGhQb3RlbnRpYWxXaXRob3V0Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFs
V2l0aG91dENhcCkKICAgICAgICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50
aWFsV2l0aG91dENhcDsKIAotICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdy
b3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwotICAgIExheW91
dFVuaXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFj
azItPmdyb3d0aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEt
Pmdyb3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKKyAgICBM
YXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29y
KHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1pdCAtIHRyYWNr
MS0+YmFzZVNpemUoKSkgPCAodHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXplKCkpOwogfQog
CkBAIC0xNTMyLDcgKzE1MzIsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRv
VHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYgdHJhY2tzLCBWZWN0b3I8R3JpZAogYm9vbCBSZW5k
ZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiB7CiAgICAg
Y29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNrcyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBzaXppbmdEYXRhLmNvbHVtblRyYWNrcyA6IHNpemluZ0RhdGEucm93VHJhY2tzOwotICAg
IGNvbnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52
YWx1ZU9yKDApOworICAgIGNvbnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZh
aWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNr
U2l6ZSA9IGdyaWRUcmFja1NpemUoZGlyZWN0aW9uLCBpLCBzaXppbmdEYXRhLnNpemluZ09wZXJh
dGlvbik7CiAgICAgICAgIGlmIChjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aCh0cmFja1Np
emUsIG1heFNpemUpID4gdHJhY2tzW2ldLmJhc2VTaXplKCkpCkBAIC0xNTUxLDE5ICsxNTUxLDE5
IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgaWYgKCFhdXRvUmVwZWF0VHJhY2tMaXN0
TGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2
YWlsYWJsZVNpemU7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXpl
OwogICAgIGlmIChpc1Jvd0F4aXMpIHsKICAgICAgICAgaWYgKHNpemluZ09wZXJhdGlvbiAhPSBJ
bnRyaW5zaWNTaXplQ29tcHV0YXRpb24pCiAgICAgICAgICAgICBhdmFpbGFibGVTaXplID0gIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF2YWlsYWJsZVNp
emUgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCksIE51bGxvcHQpOworICAgICAgICBhdmFpbGFibGVTaXplID0g
Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCku
bG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBpZiAoIWF2YWlsYWJsZVNp
emUpIHsKICAgICAgICAgICAgIGNvbnN0IExlbmd0aCYgbWF4TGVuZ3RoID0gc3R5bGUoKS5sb2dp
Y2FsTWF4SGVpZ2h0KCk7CiAgICAgICAgICAgICBpZiAoIW1heExlbmd0aC5pc1VuZGVmaW5lZCgp
KQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNpemUgPSBjb21wdXRlQ29udGVudExvZ2ljYWxI
ZWlnaHQoTWF4U2l6ZSwgbWF4TGVuZ3RoLCBOdWxsb3B0KTsKKyAgICAgICAgICAgICAgICBhdmFp
bGFibGVTaXplID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG1heExlbmd0
aCwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXZhaWxhYmxlU2l6ZSkK
LSAgICAgICAgICAgIGF2YWlsYWJsZVNpemUgPSBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhl
aWdodEJ5TWluTWF4KGF2YWlsYWJsZVNpemUudmFsdWUoKSwgTnVsbG9wdCk7CisgICAgICAgICAg
ICBhdmFpbGFibGVTaXplID0gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1h
eChhdmFpbGFibGVTaXplLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgYm9v
bCBuZWVkc1RvRnVsZmlsbE1pbmltdW1TaXplID0gZmFsc2U7CkBAIC0xOTI2LDcgKzE5MjYsNyBA
QCBzdGF0aWMgY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgY29udGVudEFsaWdubWVu
dE5vcm1hbEJlaGF2aW9yR3JpZCgpCiAKIHZvaWQgUmVuZGVyR3JpZDo6YXBwbHlTdHJldGNoQWxp
Z25tZW50VG9UcmFja3NJZk5lZWRlZChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkKIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBmcmVlU3BhY2UgPSBzaXppbmdEYXRhLmZyZWVTcGFjZShkaXJlY3Rpb24pOworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlID0gc2l6aW5nRGF0YS5mcmVlU3BhY2UoZGly
ZWN0aW9uKTsKICAgICBpZiAoIWZyZWVTcGFjZQogICAgICAgICB8fCBmcmVlU3BhY2UudmFsdWUo
KSA8PSAwCiAgICAgICAgIHx8IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyAmJiBzdHlsZSgpLnJl
c29sdmVkSnVzdGlmeUNvbnRlbnREaXN0cmlidXRpb24oY29udGVudEFsaWdubWVudE5vcm1hbEJl
aGF2aW9yR3JpZCgpKSAhPSBDb250ZW50RGlzdHJpYnV0aW9uU3RyZXRjaCkKQEAgLTE5NTEsNyAr
MTk1MSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6YXBwbHlTdHJldGNoQWxpZ25tZW50VG9UcmFja3NJ
Zk5lZWRlZChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24KICAgICAgICAgYXV0byYgdHJhY2sgPSB0
cmFja3NbdHJhY2tJbmRleF07CiAgICAgICAgIHRyYWNrLnNldEJhc2VTaXplKHRyYWNrLmJhc2VT
aXplKCkgKyBzaXplVG9JbmNyZWFzZSk7CiAgICAgfQotICAgIHNpemluZ0RhdGEuc2V0RnJlZVNw
YWNlKGRpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkpOworICAgIHNpemluZ0RhdGEu
c2V0RnJlZVNwYWNlKGRpcmVjdGlvbiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSk7CiB9
CiAKIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKEdyaWRTaXppbmdEYXRhJiBzaXpp
bmdEYXRhKQpAQCAtMTk2OCw4ICsxOTY4LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlk
SXRlbXMoR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiAKICAgICAgICAgLy8gQmVjYXVzZSB0
aGUgZ3JpZCBhcmVhIGNhbm5vdCBiZSBzdHlsZWQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0CiAg
ICAgICAgIC8vIHRoZSBncmlkIGJyZWFkdGggdG8gYWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgot
ICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvbGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGggPSBjaGlsZC0+aGFzT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dp
Y2FsV2lkdGgoKSA/IGNoaWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2Fs
V2lkdGgoKSA6IExheW91dFVuaXQoKTsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb2xk
T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCA9IGNoaWxkLT5oYXNP
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSA/IGNoaWxkLT5vdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgOiBMYXlvdXRVbml0KCk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb2xkT3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbFdpZHRoID0gY2hpbGQtPmhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9n
aWNhbFdpZHRoKCkgPyBjaGlsZC0+b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bFdpZHRoKCkgOiBMYXlvdXRVbml0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gb2xkT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCA9IGNoaWxk
LT5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSA/IGNoaWxkLT5vdmVy
cmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgOiBMYXlvdXRVbml0KCk7
CiAKICAgICAgICAgTGF5b3V0VW5pdCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsV2lkdGggPSBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNl
dHMoKmNoaWxkLCBGb3JDb2x1bW5zLCBzaXppbmdEYXRhKTsKICAgICAgICAgTGF5b3V0VW5pdCBv
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gZ3JpZEFyZWFCcmVh
ZHRoRm9yQ2hpbGRJbmNsdWRpbmdBbGlnbm1lbnRPZmZzZXRzKCpjaGlsZCwgRm9yUm93cywgc2l6
aW5nRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBhNzY2NWFj
MGMzMTI2ZmZkYjhiOWM5YjQyYmFiZDJmMjJkZGM4YzI1Li43YjVlZjZlZmVmNWE0MWNiODdiZmFk
MmZiMGVmNzM1MjBmZTI3OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
QEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgUmVuZGVyR3JpZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJC
bG9jayB7CiAgICAgYm9vbCBpc1JlbmRlckdyaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0
JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlSW50cmluc2ljTG9naWNh
bENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQ
YWRkaW5nKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVp
Z2h0TGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWln
aHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBj
bGFzcyBHcmlkSXRlcmF0b3I7CiAgICAgY2xhc3MgR3JpZFNpemluZ0RhdGE7CkBAIC0yMjgsOCAr
MjI4LDggQEAgY2xhc3MgUmVuZGVyR3JpZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAg
ICAgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBHcmlkQXJlYT4gbV9ncmlkSXRlbUFyZWE7CiAg
ICAgT3JkZXJJdGVyYXRvciBtX29yZGVySXRlcmF0b3I7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBtX21pbkNvbnRlbnRIZWlnaHQ7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9tYXhD
b250ZW50SGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9taW5Db250ZW50
SGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9tYXhDb250ZW50SGVpZ2h0
OwogCiAgICAgaW50IG1fc21hbGxlc3RDb2x1bW5TdGFydDsKICAgICBpbnQgbV9zbWFsbGVzdFJv
d1N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNWJi
Y2MwMDM5MDVhYWI5YTY4NzY1YWY3YzdjZTgyZGVjNjE3NGRjYS4uZjhiYzM2NGI0ZTg4NjJiOTgw
ZmQ4OWY2NTVjN2E1Y2FhMWQ3OWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC00NDY2LDcgKzQ0NjYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAK
ICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRoIHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUg
dXMuCiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RlZFN1YnBpeGVsT2Zmc2V0ID0gb2Zmc2V0Rm9yVGhp
c0xheWVyIC0gTGF5b3V0U2l6ZShkZXZpY2VQaXhlbFNuYXBwZWRPZmZzZXRGb3JUaGlzTGF5ZXIp
OwotICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExh
eW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlS
ZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKSwKKyAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zv
cm1lZFBhaW50aW5nSW5mbyh0aGlzLCBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhl
bHModHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVj
dChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpLAogICAg
ICAgICBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCwg
cGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3QsIHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJl
cXVlc3RzKTsKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRy
YW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKICAgICBjb250ZXh0LnNldENUTShv
bGRUcmFuc2Zyb20pOwpAQCAtNTEwMCw3ICs1MTAwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxh
eWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNv
bnQKIAogICAgIC8vIENoZWNrIGZvciBoaXQgdGVzdCBvbiBiYWNrZmFjZSBpZiBiYWNrZmFjZS12
aXNpYmlsaXR5IGlzICdoaWRkZW4nCiAgICAgaWYgKGxvY2FsVHJhbnNmb3JtU3RhdGUgJiYgcmVu
ZGVyZXIoKS5zdHlsZSgpLmJhY2tmYWNlVmlzaWJpbGl0eSgpID09IEJhY2tmYWNlVmlzaWJpbGl0
eUhpZGRlbikgewotICAgICAgICBPcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gaW52ZXJ0
ZWRNYXRyaXggPSBsb2NhbFRyYW5zZm9ybVN0YXRlLT5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtLmlu
dmVyc2UoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gaW52
ZXJ0ZWRNYXRyaXggPSBsb2NhbFRyYW5zZm9ybVN0YXRlLT5tX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
LmludmVyc2UoKTsKICAgICAgICAgLy8gSWYgdGhlIHotdmVjdG9yIG9mIHRoZSBtYXRyaXggaXMg
bmVnYXRpdmUsIHRoZSBiYWNrIGlzIGZhY2luZyB0b3dhcmRzIHRoZSB2aWV3ZXIuCiAgICAgICAg
IGlmIChpbnZlcnRlZE1hdHJpeCAmJiBpbnZlcnRlZE1hdHJpeC52YWx1ZSgpLm0zMygpIDwgMCkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAwMzI0NzIzOTQzMzM5NzQ5OTA4YWM3Mjlh
MDg4NWQ0ZjE5MjkxNTViLi5iY2MzMDU3M2ExOTRmNDcxYjRmOGM4M2QyYzFlMzBhYWMzYThiOWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtNzkwLDkgKzc5MCw5IEBAIGNsYXNzIENvbXB1dGVkT2Zmc2V0cyB7CiAgICAgICAgIHJl
dHVybiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5ZXIudmFsdWUoKTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5ZXI7Ci0gICAgT3B0
aW9uYWw8TGF5b3V0U2l6ZT4gbV9mcm9tUGFyZW50R3JhcGhpY3NMYXllcjsKLSAgICBPcHRpb25h
bDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5R3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFNpemU+IG1fZnJvbUFuY2VzdG9yR3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPExheW91dFNpemU+IG1fZnJvbVBhcmVudEdyYXBoaWNzTGF5ZXI7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5R3JhcGhpY3NMYXllcjsKICAgICAKICAg
ICBjb25zdCBSZW5kZXJMYXllciYgbV9yZW5kZXJMYXllcjsKICAgICAvLyBMb2NhdGlvbiBpcyBy
ZWxhdGl2ZSB0byB0aGUgcmVuZGVyZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKaW5kZXggYjcxNjNlNjZiM2M2ZmYxMTg3NzFhYzk4OTA5NzZjM2IzYmU0NjZm
Yi4uMmM2YThlZTdjNjVjNjEyYTg1ODYyZDRlMWI1NzYwNzQyZmYxMDI4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIExh
eW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJvdW5kaW5nQm94UmVjdChjb25zdCBMYXlvdXRQ
b2ludCYgYWRkaXRpb25hbE9mZnNlCiB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEZ1
bmN0aW9uIHBhaW50RnVuY3Rpb24pCiB7CiAgICAgaW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVt
cygpOwotICAgIGludCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRl
bUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9mZnNldCk7CisgICAgaW50IGZp
cnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1Rv
cEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7CiAgICAgaW50IGVuZEluZGV4ID0gZmlyc3RW
aXNpYmxlSXRlbSArIG51bVZpc2libGVJdGVtcyhDb25zaWRlclBhZGRpbmc6Olllcyk7CiAgICAg
Zm9yIChpbnQgaSA9IGZpcnN0VmlzaWJsZUl0ZW07IGkgPCBsaXN0SXRlbXNTaXplICYmIGkgPCBl
bmRJbmRleDsgKytpKQogICAgICAgICBwYWludEZ1bmN0aW9uKHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQsIGkpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG9S
ZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoaW50IGluZGV4KQogCiBib29sIFJlbmRlckxpc3RCb3g6
Omxpc3RJbmRleElzVmlzaWJsZShpbnQgaW5kZXgpCiB7Ci0gICAgaW50IGZpcnN0SW5kZXggPSBt
X2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2lu
ZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0
ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQg
ZW5kSW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFy
ZWEKICAgICAgICAgPyBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRv
bUFyZWEudmFsdWUoKSArIG51bWJlck9mVmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkKICAg
ICAgICAgOiBtX2luZGV4T2Zmc2V0ICsgbnVtVmlzaWJsZUl0ZW1zKCk7CkBAIC02NjksOCArNjY5
LDggQEAgaW50IFJlbmRlckxpc3RCb3g6Om51bWJlck9mVmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90
dG9tKCkgY29uc3QKIAogdm9pZCBSZW5kZXJMaXN0Qm94Ojpjb21wdXRlRmlyc3RJbmRleGVzVmlz
aWJsZUluUGFkZGluZ1RvcEJvdHRvbUFyZWFzKCkKIHsKLSAgICBtX2luZGV4T2ZGaXJzdFZpc2li
bGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEgPSBOdWxsb3B0OwotICAgIG1faW5kZXhPZkZpcnN0
VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90dG9tQXJlYSA9IE51bGxvcHQ7CisgICAgbV9pbmRl
eE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhID0gc3RkOjpudWxsb3B0Owor
ICAgIG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90dG9tQXJlYSA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIGludCBtYXhpbXVtTnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRp
bmdUb3BBcmVhID0gcGFkZGluZ1RvcCgpIC8gaXRlbUhlaWdodCgpOwogICAgIGlmIChtYXhpbXVt
TnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdUb3BBcmVhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCBmMjgwYzA3M2Q1N2U2YThhYjE3MGQ5OWM2MmVj
NzRkZmEwZDZiNzM4Li43MzAwM2U5OWZlMmE4YjdlYTk5ZTQ2M2NhMmI5Zjc2YTM3YzhjMjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTE3NSw4ICsxNzUs
OCBAQCBjbGFzcyBSZW5kZXJMaXN0Qm94IGZpbmFsIDogcHVibGljIFJlbmRlckJsb2NrRmxvdywg
cHVibGljIFNjcm9sbGFibGVBcmVhIHsKICAgICBpbnQgbV9vcHRpb25zV2lkdGg7CiAgICAgaW50
IG1faW5kZXhPZmZzZXQ7CiAKLSAgICBPcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0VmlzaWJs
ZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYTsKLSAgICBPcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZp
cnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90dG9tQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFs
PGludD4gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhOworICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGlu
Z0JvdHRvbUFyZWE7CiAKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3ZCYXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCAyNzViMWFhNzkxMGZjNzg5
NmIyODM4MWUzZGQ2MzNkZTJjNDFlZGRhLi42ZTBiYTc1NTI1YThlZjU0NGJjOGJkYjRkMDJiMDZl
NzgzMzNiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApA
QCAtMTIyLDggKzEyMiw4IEBAIGNsYXNzIFJlbmRlck1lbnVMaXN0IGZpbmFsIDogcHVibGljIFJl
bmRlckZsZXhpYmxlQm94LCBwcml2YXRlIFBvcHVwTWVudUNsaWVudCB7CiAgICAgewogICAgICAg
ICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmUsIGZpcnN0TGlu
ZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RM
aW5lQmFzZWxpbmUoKTsgfQotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRl
ckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KKyAgICBzdGQ6Om9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5k
ZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9u
KTsgfQogCiAgICAgdm9pZCBnZXRJdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRl
eCwgQ29sb3ImLCBib29sJiBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAK
aW5kZXggN2QyZmI0MzYyODE1NGI5NDI1NjZmOTk3ODljZjUwOGY1MmI0OTdhZC4uOTIxMGQ3NDZm
ZmYwMTVlYjI3NDIxMDkyN2UwZTQ1ZTE0MjU3ZWUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0
KCkgY29uc3QKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUhlaWdodCA9IG11bHRpQ29sdW1uRmxv
d1RocmVhZCgpLT5jb2x1bW5IZWlnaHRBdmFpbGFibGUoKTsKICAgICBMYXlvdXRVbml0IG1heENv
bHVtbkhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCA/IGF2YWlsYWJsZUhlaWdodCA6IFJlbmRlckZs
b3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQoKTsKICAgICBpZiAoIW11bHRpY29sU3R5bGUubG9n
aWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG1heENvbHVtbkhlaWdodCA9
IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRM
b2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBO
dWxsb3B0KS52YWx1ZU9yKG1heENvbHVtbkhlaWdodCkpOworICAgICAgICBtYXhDb2x1bW5IZWln
aHQgPSBzdGQ6Om1pbihtYXhDb2x1bW5IZWlnaHQsIG11bHRpY29sQmxvY2stPmNvbXB1dGVDb250
ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBtdWx0aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQo
KSwgc3RkOjpudWxsb3B0KS52YWx1ZV9vcihtYXhDb2x1bW5IZWlnaHQpKTsKICAgICByZXR1cm4g
aGVpZ2h0QWRqdXN0ZWRGb3JTZXRPZmZzZXQobWF4Q29sdW1uSGVpZ2h0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggNjExZjQ2ZDJlMmRkYjU5ZjM5
ZDBmODUxZWQ0M2Q0YmE5Nzk1ODA4Yy4uMzg2YjUyNzgwMDJmMzA1NDUyNTUzN2MwNmY2YmMxMzkz
YzJjYjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0z
NzMsOSArMzczLDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNh
bEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQoY29uc3QgTGVuZ3RoJgogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBzdHlsZUxvZ2ljYWxIZWlnaHQudmFsdWUoKSAtIGJvcmRlcnM7CiAgICAgfSBlbHNl
IGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAg
IHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0
KS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVp
Z2h0KHN0eWxlTG9naWNhbEhlaWdodCkudmFsdWVfb3IoMCk7CiAgICAgZWxzZSBpZiAoc3R5bGVM
b2dpY2FsSGVpZ2h0LmlzSW50cmluc2ljKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxI
ZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlT3IoMCk7
CisgICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2lu
ZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcs
IGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlX29yKDApOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIExheW91dFVuaXQoKTsKQEAgLTE0NjgsMzcgKzE0
NjgsMzcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBkYXRlRmlyc3RMZXR0ZXIoUmVuZGVyVHJlZU11
dGF0aW9uSXNBbGxvd2VkKQogCiBpbnQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
IGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewot
ICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAg
cmV0dXJuIHZhbHVlT3JDb21wdXRlKGZpcnN0TGluZUJhc2VsaW5lKCksIFsmXSB7CiAgICAgICAg
IHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExp
bmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFs
PGludD4gUmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxp
bmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gVGFibGVzIGFyZSBza2lwcGVk
IHdoZW4gY29tcHV0aW5nIGFuIGlubGluZS1ibG9jaydzIGJhc2VsaW5lLgotICAgIHJldHVybiBP
cHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogfQogCi1P
cHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsK
ICAgICAvLyBUaGUgYmFzZWxpbmUgb2YgYSAndGFibGUnIGlzIHRoZSBzYW1lIGFzIHRoZSAnaW5s
aW5lLXRhYmxlJyBiYXNlbGluZSBwZXIgQ1NTIDMgRmxleGJveCAoQ1NTIDIuMQogICAgIC8vIGRv
ZXNuJ3QgZGVmaW5lIHRoZSBiYXNlbGluZSBvZiBhICd0YWJsZScgb25seSBhbiAnaW5saW5lLXRh
YmxlJykuCiAgICAgLy8gVGhpcyBpcyBhbHNvIG5lZWRlZCB0byBwcm9wZXJseSBkZXRlcm1pbmUg
dGhlIGJhc2VsaW5lIG9mIGEgY2VsbCBpZiBpdCBoYXMgYSB0YWJsZSBjaGlsZC4KIAogICAgIGlm
IChpc1dyaXRpbmdNb2RlUm9vdCgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOwor
ICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAgICByZWNhbGNTZWN0aW9u
c0lmTmVlZGVkKCk7CiAKICAgICBjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcE5vbkVtcHR5
U2VjdGlvbiA9IHRoaXMtPnRvcE5vbkVtcHR5U2VjdGlvbigpOwogICAgIGlmICghdG9wTm9uRW1w
dHlTZWN0aW9uKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1
cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKLSAgICBpZiAoT3B0aW9uYWw8aW50PiBiYXNlbGlu
ZSA9IHRvcE5vbkVtcHR5U2VjdGlvbi0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKLSAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPGludD4odG9wTm9uRW1wdHlTZWN0aW9uLT5sb2dpY2FsVG9wKCkgKyBiYXNl
bGluZS52YWx1ZSgpKTsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9w
Tm9uRW1wdHlTZWN0aW9uLT5maXJzdExpbmVCYXNlbGluZSgpKQorICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxpbnQ+KHRvcE5vbkVtcHR5U2VjdGlvbi0+bG9naWNhbFRvcCgpICsgYmFzZWxp
bmUudmFsdWUoKSk7CiAKICAgICAvLyBGSVhNRTogQSB0YWJsZSByb3cgYWx3YXlzIGhhcyBhIGJh
c2VsaW5lIHBlciBDU1MgMi4xLiBXaWxsIHRoaXMgcmV0dXJuIHRoZSByaWdodCB2YWx1ZT8KLSAg
ICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4o
KTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJUYWJsZTo6b3ZlcmZsb3dDbGlwUmVjdChjb25zdCBM
YXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBPdmVybGF5U2Nyb2xs
YmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3ksIFBhaW50UGhhc2UgcGhhc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IGZkOTdhMDEwMjU5YmMxZjIyNjEyODllMDYx
N2NmZTcwN2Q3YzYyYTAuLjgyZWQyNzc2ZjNiNzI4ZTA2NGZmZGVhNzdhMTcxMmQzMGU5ODgxZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0yOTEsOCArMjkxLDgg
QEAgY2xhc3MgUmVuZGVyVGFibGUgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogICAgIGJvb2wgbm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCiAgICAgaW50IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZp
bmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jh
c2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAgIFJlbmRlclRhYmxl
Q29sKiBzbG93Q29sRWxlbWVudCh1bnNpZ25lZCBjb2wsIGJvb2wqIHN0YXJ0RWRnZSwgYm9vbCog
ZW5kRWRnZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKaW5kZXggYzAwY2JjYzk5MTNkMTNkNzZmMTdhZmQ4MzJjODY4ZjJhYjc4ZWI5ZC4u
ZTFhN2VhYTc1OWFkMzMxNjliYTExMWEzNWY5MTVhNGMxZThjNzUyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBM
YXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAog
ICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxl
cy5odG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUgYmFzZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNl
bGluZSBvZgogICAgIC8vIHRoZSBmaXJzdCBpbi1mbG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBv
ciB0aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cgaW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21l
cyBmaXJzdC4gSWYgdGhlcmUKICAgICAvLyBpcyBubyBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJv
dywgdGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20gb2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxs
IGJveC4KLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGJvcmRlckFuZFBh
ZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAgIHJldHVybiBmaXJz
dExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRl
bnRMb2dpY2FsSGVpZ2h0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0NlbGxEaXJ0
eVdoZW5Db2xsYXBzZWRCb3JkZXJDaGFuZ2VzKFJlbmRlclRhYmxlQ2VsbCogY2VsbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZDg4
NWU4ZTJjNjI1YzZkYzBiNWYyZGZmMTU3OTM0M2VlNWVlNTEwZi4uN2I0N2Q2Y2U2YTgzYzg4ZmJj
N2JmMWRlMmJjNTZhODYwNGNkZTU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTkxNywxNiArOTE3LDE2IEBAIHZvaWQgUmVuZGVy
VGFibGVTZWN0aW9uOjpyZWNhbGNPdXRlckJvcmRlcigpCiAgICAgbV9vdXRlckJvcmRlckVuZCA9
IGNhbGNPdXRlckJvcmRlckVuZCgpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2Vj
dGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRl
clRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmICghbV9n
cmlkLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCiAgICAgaW50IGZpcnN0TGluZUJhc2VsaW5lID0g
bV9ncmlkWzBdLmJhc2VsaW5lOwogICAgIGlmIChmaXJzdExpbmVCYXNlbGluZSkKICAgICAgICAg
cmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lICsgcm91bmRUb0ludChtX3Jvd1Bvc1swXSk7CiAKLSAg
ICBPcHRpb25hbDxpbnQ+IHJlc3VsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gcmVzdWx0Owog
ICAgIGNvbnN0IFJvdyYgZmlyc3RSb3cgPSBtX2dyaWRbMF0ucm93OwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmlyc3RSb3cuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgQ2VsbFN0
cnVjdCYgY3MgPSBmaXJzdFJvdy5hdChpKTsKQEAgLTkzNCw3ICs5MzQsNyBAQCBPcHRpb25hbDxp
bnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAg
ICAvLyBPbmx5IGNlbGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYg
KGNlbGwgJiYgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgaW50
IGNhbmRpZGF0ZSA9IHJvdW5kVG9JbnQoY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVy
QW5kUGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5k
aWRhdGUpOworICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlX29yKGNh
bmRpZGF0ZSksIGNhbmRpZGF0ZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAppbmRleCAzMzMyYzgxZmE0YjVhZjgx
MDZmYTkwZjgzMDJiYjhkNDcxMTJlNmUwLi5hZjlhYjQ0ZDNkYmI0NTM4MjQ3YjEzNDljMDY3MjUz
MTQ4ODVmMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbiBmaW5hbCA6
IHB1YmxpYyBSZW5kZXJCb3ggewogCiAgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNo
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRp
b25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGFkZENlbGwoUmVuZGVyVGFibGVDZWxsKiwgUmVuZGVyVGFibGVSb3cqIHJvdyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBjZTE1NmVjOGY5OGY5MGM2
ODFlNzA2YjU4ODgyNWM0Y2JiZGJmNDg1Li4zN2IwNzQxODc4YTFiZDk4MzhlYzYyNTNkZWQwNzE5
MTAwMWZjYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC04
MDAsNyArODAwLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICBib29sIGlzU3BhY2Ug
PSBmYWxzZTsKICAgICBib29sIGZpcnN0V29yZCA9IHRydWU7CiAgICAgYm9vbCBmaXJzdExpbmUg
PSB0cnVlOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlOworICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGU7CiAgICAgdW5zaWduZWQgbGFzdFdvcmRC
b3VuZGFyeSA9IDA7CiAKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4ga2VybmluZyBpcyBlbmFi
bGVkLCBpbiB3aGljaCBjYXNlIHdlIG1lYXN1cmUgd29yZHMgd2l0aCB0aGVpciB0cmFpbGluZwpA
QCAtODIyLDcgKzgyMiw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIG1pbmlt
dW1TdWZmaXhMZW5ndGggPSBhZnRlciA8IDAgPyAyIDogYWZ0ZXI7CiAgICAgfQogCi0gICAgT3B0
aW9uYWw8aW50PiBmaXJzdEdseXBoTGVmdE92ZXJmbG93OworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBmaXJzdEdseXBoTGVmdE92ZXJmbG93OwogCiAgICAgYm9vbCBicmVha05CU1AgPSBzdHlsZS5h
dXRvV3JhcCgpICYmIHN0eWxlLm5ic3BNb2RlKCkgPT0gU1BBQ0U7CiAgICAgCkBAIC04OTgsNyAr
ODk4LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhm
bG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgICAgIGZsb2F0IGN1cnJN
aW5XaWR0aCA9IDA7CiAgICAgICAgICAgICBib29sIGlzU3BhY2UgPSAoaiA8IGxlbikgJiYgaXNT
cGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUpOwogICAgICAgICAgICAgZmxvYXQgdzsKLSAg
ICAgICAgICAgIE9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICAg
ICAgICAgIGlmIChpc1NwYWNlKQogICAgICAgICAgICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lk
dGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAg
IGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgUmVu
ZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBI
YXNoU2V0PGNvbnN0IEZvCiAKICAgICAgICAgICAgICAgICBpZiAoc3VmZml4U3RhcnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgc3VmZml4V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAg
IE9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOworICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNTcGFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRU
cmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRz
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC0x
MDAwLDcgKzEwMDAsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBGbwogICAgICAgICB9CiAgICAg
fQogCi0gICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1
ZU9yKGdseXBoT3ZlcmZsb3cubGVmdCk7CisgICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RH
bHlwaExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlwaE92ZXJmbG93LmxlZnQpOwogCiAgICAgaWYg
KChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEpIHx8IChpZ25vcmluZ1NwYWNlcyAmJiAhZmly
c3RXb3JkKSkKICAgICAgICAgY3Vyck1heFdpZHRoICs9IHdvcmRTcGFjaW5nOwpAQCAtMTY3Niw5
ICsxNjc2LDkgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENo
YXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKICAgICBzZWN1cmVUZXh0VGltZXIt
PnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCi1TdHJpbmdWaWV3
IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVk
PiBzdG9wKSBjb25zdAorU3RyaW5nVmlldyBSZW5kZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVk
IHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAogewotICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZU9yKHRleHRMZW5ndGgoKSk7CisgICAgdW5zaWdu
ZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHRMZW5ndGgoKSk7CiAgICAgQVNTRVJU
KHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb24gPD0gbGVuZ3RoKCkp
OwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaAppbmRleCA2MTM5OTAwM2RlMmMyZmJlODE5NDE5ODIwODFjYzJjMjkwNmI4
YzA1Li45Y2EwZjU0MDZkZjQzNzRlOGZiNGUwOThiNTA3MDU1MzFjNDRmMDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBjbGFzcyBSZW5k
ZXJUZXh0IDogcHVibGljIFJlbmRlck9iamVjdCB7CiAgICAgdm9pZCBkZWxldGVMaW5lQm94ZXNC
ZWZvcmVTaW1wbGVMaW5lTGF5b3V0KCk7CiAgICAgY29uc3QgU2ltcGxlTGluZUxheW91dDo6TGF5
b3V0KiBzaW1wbGVMaW5lTGF5b3V0KCkgY29uc3Q7CiAKLSAgICBTdHJpbmdWaWV3IHN0cmluZ1Zp
ZXcodW5zaWduZWQgc3RhcnQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gc3RvcCA9IE51bGxvcHQp
IGNvbnN0OworICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0b3AgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAg
TGF5b3V0VW5pdCB0b3BPZkZpcnN0VGV4dCgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCAwOTZmNTY0YmZmNDI4NWE4MTE1
NzUxZTE3NjNlZTMxMDA4ZjViMmJkLi5kMDkzYjc5MDU2MGJhZDhmNTMwYzU0MTViM2ExZGZhNmI1
Y2M4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
aApAQCAtOTksOCArOTksOCBAQCBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVy
IGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94IHsKICAgICB7CiAgICAgICAgIHJldHVy
biBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJl
Y3Rpb24sIHBvc2l0aW9uKTsKICAgICB9Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNl
bGluZSgpOyB9Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6
OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2Nr
OjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBpc0ZsZXhpYmxlQm94SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRl
eCA4MTMwZDJlODIwNmIwYzA0MTZkZGQ5YWYxYmU0MWQ0MjY0MTViM2MxLi41NzRiYjE0NDkzNzMx
OTc1ZDRjYjBjMjUyYjM5ZWIyODcyMGQ5NDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50
U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCkgY29uc3QK
ICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCog
c3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIE9w
dGlvbmFsPHVuc2lnbmVkPiBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlIGJsb2NrUmVwYWlu
dE1vZGUpCit2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tS
ZXBhaW50TW9kZSkKIHsKICAgICAvLyBNYWtlIHN1cmUgYm90aCBvdXIgc3RhcnQgYW5kIGVuZCBv
YmplY3RzIGFyZSBkZWZpbmVkLgogICAgIC8vIENoZWNrIHd3dy5tc25iYy5jb20gYW5kIHRyeSBj
bGlja2luZyBhcm91bmQgdG8gZmluZCB0aGUgY2FzZSB3aGVyZSB0aGlzIGhhcHBlbmVkLgpAQCAt
ODgyLDcgKzg4Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVj
dCogc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywKICAgICBzcGxpdFNlbGVjdGlv
bkJldHdlZW5TdWJ0cmVlcyhzdGFydCwgc3RhcnRQb3MsIGVuZCwgZW5kUG9zLCBibG9ja1JlcGFp
bnRNb2RlKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0
cmVlcyhjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0LCBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQ
b3MsIGNvbnN0IFJlbmRlck9iamVjdCogZW5kLCBPcHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBT
ZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQordm9pZCBSZW5kZXJWaWV3Ojpz
cGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0LCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywgY29uc3QgUmVuZGVyT2JqZWN0KiBlbmQs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxv
Y2tSZXBhaW50TW9kZSkKIHsKICAgICAvLyBDb21wdXRlIHRoZSB2aXNpYmxlIHNlbGVjdGlvbiBl
bmQgcG9pbnRzIGZvciBlYWNoIG9mIHRoZSBzdWJ0cmVlcy4KICAgICBSZW5kZXJTdWJ0cmVlc01h
cCByZW5kZXJTdWJ0cmVlc01hcDsKQEAgLTkwNyw3ICs5MDcsNyBAQCB2b2lkIFJlbmRlclZpZXc6
OnNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnQs
IE9wdGlvbgogICAgICAgICAgICAgU2VsZWN0aW9uU3VidHJlZURhdGEgc2VsZWN0aW9uRGF0YSA9
IHJlbmRlclN1YnRyZWVzTWFwLmdldCgmcm9vdCk7CiAgICAgICAgICAgICBpZiAoc2VsZWN0aW9u
RGF0YS5zZWxlY3Rpb25DbGVhcigpKSB7CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5z
ZXRTZWxlY3Rpb25TdGFydChub2RlLT5yZW5kZXJlcigpKTsKLSAgICAgICAgICAgICAgICBzZWxl
Y3Rpb25EYXRhLnNldFNlbGVjdGlvblN0YXJ0UG9zKG5vZGUgPT0gc3RhcnROb2RlID8gc3RhcnRQ
b3MgOiBPcHRpb25hbDx1bnNpZ25lZD4oMCkpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRh
dGEuc2V0U2VsZWN0aW9uU3RhcnRQb3Mobm9kZSA9PSBzdGFydE5vZGUgPyBzdGFydFBvcyA6IHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KDApKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
c2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25FbmQobm9kZS0+cmVuZGVyZXIoKSk7CkBAIC0xMTAy
LDcgKzExMDIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihjb25z
dCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgU2VsZWN0aQogICAgICAgICBzZWxlY3RlZEJs
b2NrSW5mby52YWx1ZS0+cmVwYWludCgpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmdldFNlbGVj
dGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBPcHRpb25hbDx1bnNpZ25lZD4mIHN0
YXJ0T2Zmc2V0LCBSZW5kZXJPYmplY3QqJiBlbmRSZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+
JiBlbmRPZmZzZXQpIGNvbnN0Cit2b2lkIFJlbmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJP
YmplY3QqJiBzdGFydFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgc3RhcnRPZmZz
ZXQsIFJlbmRlck9iamVjdComIGVuZFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYg
ZW5kT2Zmc2V0KSBjb25zdAogewogICAgIHN0YXJ0UmVuZGVyZXIgPSBtX3NlbGVjdGlvblVuc3Bs
aXRTdGFydDsKICAgICBzdGFydE9mZnNldCA9IG1fc2VsZWN0aW9uVW5zcGxpdFN0YXJ0UG9zOwpA
QCAtMTExMyw3ICsxMTEzLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpnZXRTZWxlY3Rpb24oUmVuZGVy
T2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+Jgogdm9pZCBSZW5kZXJW
aWV3OjpjbGVhclNlbGVjdGlvbigpCiB7CiAgICAgbGF5ZXIoKS0+cmVwYWludEJsb2NrU2VsZWN0
aW9uR2FwcygpOwotICAgIHNldFNlbGVjdGlvbihudWxscHRyLCBOdWxsb3B0LCBudWxscHRyLCBO
dWxsb3B0LCBSZXBhaW50TmV3TWludXNPbGQpOworICAgIHNldFNlbGVjdGlvbihudWxscHRyLCBz
dGQ6Om51bGxvcHQsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgUmVwYWludE5ld01pbnVzT2xkKTsK
IH0KIAogYm9vbCBSZW5kZXJWaWV3OjpwcmludGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaAppbmRleCA2ZTg0ZjgzOTQzZmMxMWZkMTk3MTc1ODgzZmE4Yjk0NWEy
ODg0N2FkLi40YTEzYWFjOGVhNThjMzM4NTA5NjFhNzcxYmZiMWRkYWU2YTc3NjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTg0LDggKzg0LDggQEAgY2xhc3MgUmVu
ZGVyVmlldyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3csIHB1YmxpYyBTZWxlY3Rpb25T
dWJ0cmVlUm9vdCB7CiAgICAgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNlbGVjdGlvblJlcGFpbnRN
b2RlIHsgUmVwYWludE5ld1hPUk9sZCwgUmVwYWludE5ld01pbnVzT2xkLCBSZXBhaW50Tm90aGlu
ZyB9OwotICAgIHZvaWQgc2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFs
PHVuc2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmRPYmplY3QsIE9wdGlvbmFsPHVu
c2lnbmVkPiBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlID0gUmVwYWludE5ld1hPUk9sZCk7
Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgT3B0
aW9uYWw8dW5zaWduZWQ+JiBzdGFydE9mZnNldCwgUmVuZGVyT2JqZWN0KiYgZW5kUmVuZGVyZXIs
IE9wdGlvbmFsPHVuc2lnbmVkPiYgZW5kT2Zmc2V0KSBjb25zdDsKKyAgICB2b2lkIHNldFNlbGVj
dGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBv
cywgUmVuZGVyT2JqZWN0KiBlbmRPYmplY3QsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBv
cywgU2VsZWN0aW9uUmVwYWludE1vZGUgPSBSZXBhaW50TmV3WE9ST2xkKTsKKyAgICB2b2lkIGdl
dFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiYgc3RhcnRPZmZzZXQsIFJlbmRlck9iamVjdComIGVuZFJlbmRlcmVyLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiYgZW5kT2Zmc2V0KSBjb25zdDsKICAgICB2b2lkIGNsZWFyU2VsZWN0
aW9uKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25VbnNwbGl0U3RhcnQoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdGlvblVuc3BsaXRTdGFydDsgfQogICAgIFJlbmRlck9iamVjdCogc2Vs
ZWN0aW9uVW5zcGxpdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uVW5zcGxpdEVuZDsg
fQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFJlbmRlclZpZXcgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogCiAgICAgYm9vbCBp
c1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3Rh
cnRSZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0UG9zLCBjb25zdCBSZW5kZXJPYmpl
Y3QqIGVuZFJlbmRlcmVyLCBPcHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBh
aW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKTsKKyAgICB2b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2Vl
blN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gc3RhcnRQb3MsIGNvbnN0IFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tS
ZXBhaW50TW9kZSk7CiAgICAgdm9pZCBjbGVhclN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0
aW9uU3VidHJlZVJvb3QmLCBTZWxlY3Rpb25SZXBhaW50TW9kZSwgT2xkU2VsZWN0aW9uRGF0YSYp
IGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJl
ZXNNYXAmLCBTZWxlY3Rpb25SZXBhaW50TW9kZSk7CiAgICAgdm9pZCBhcHBseVN1YnRyZWVTZWxl
Y3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmLCBTZWxlY3Rpb25SZXBhaW50TW9kZSwg
Y29uc3QgT2xkU2VsZWN0aW9uRGF0YSYpOwpAQCAtMzM3LDggKzMzNyw4IEBAIGNsYXNzIFJlbmRl
clZpZXcgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0aW9uU3Vi
dHJlZVJvb3QgewogCiAgICAgUmVuZGVyT2JqZWN0KiBtX3NlbGVjdGlvblVuc3BsaXRTdGFydCB7
IG51bGxwdHIgfTsKICAgICBSZW5kZXJPYmplY3QqIG1fc2VsZWN0aW9uVW5zcGxpdEVuZCB7IG51
bGxwdHIgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQ
b3M7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9uVW5zcGxpdEVuZFBvczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3NlbGVjdGlvblVuc3BsaXRTdGFydFBvczsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3NlbGVjdGlvblVuc3BsaXRFbmRQb3M7CiAKICAg
ICAvLyBJbmNsdWRlIHRoaXMgUmVuZGVyVmlldy4KICAgICB1aW50NjRfdCBtX3JlbmRlcmVyQ291
bnQgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9u
U3VidHJlZVJvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVl
Um9vdC5oCmluZGV4IDBkMTkzODUyOWRiNzk0MjUwYWI2ZjA4NTJjNWQ3NTQyNjc1ZjJjYWQuLmM3
Mzk5ZWY5NmQ5YWMxYTk1ZWZiYmExMjE2NjBiNDZmY2U5NjM2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oCkBAIC00Nyw4ICs0Nyw4IEBA
IGNsYXNzIFNlbGVjdGlvblN1YnRyZWVSb290IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zOwotICAgICAgICBPcHRp
b25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9zOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBzZWxlY3Rpb25TdGFydFBvczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gc2VsZWN0aW9uRW5kUG9zOwogICAgICAgICBTZWxlY3RlZE9iamVjdE1hcCBzZWxlY3RlZE9i
amVjdHM7CiAgICAgICAgIFNlbGVjdGVkQmxvY2tNYXAgc2VsZWN0ZWRCbG9ja3M7CiAgICAgfTsK
QEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogICAgIHB1Ymxp
YzoKICAgICAgICAgU2VsZWN0aW9uU3VidHJlZURhdGEoKSA9IGRlZmF1bHQ7CiAKLSAgICAgICAg
U2VsZWN0aW9uU3VidHJlZURhdGEoUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCwgT3B0aW9u
YWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVu
ZCwgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvbkVuZFBvcykKKyAgICAgICAgU2VsZWN0aW9u
U3VidHJlZURhdGEoUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRQb3MsIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25FbmRQb3MpCiAgICAgICAgICAgICA6IG1f
c2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uU3RhcnQpCiAgICAgICAgICAgICAsIG1fc2VsZWN0aW9u
U3RhcnRQb3Moc2VsZWN0aW9uU3RhcnRQb3MpCiAgICAgICAgICAgICAsIG1fc2VsZWN0aW9uRW5k
KHNlbGVjdGlvbkVuZCkKQEAgLTY2LDkgKzY2LDkgQEAgY2xhc3MgU2VsZWN0aW9uU3VidHJlZVJv
b3QgewogICAgICAgICB9CiAKICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhcnQ7IH0KLSAgICAgICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFy
dFBvczsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25TdGFydFBv
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhcnRQb3M7IH0KICAgICAgICAgUmVuZGVy
T2JqZWN0KiBzZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkVuZDsgfQot
ICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9zKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rpb25FbmRQb3M7IH0KKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
c2VsZWN0aW9uRW5kUG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmRQb3M7IH0KICAg
ICAgICAgYm9vbCBzZWxlY3Rpb25DbGVhcigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiAhbV9zZWxlY3Rpb25TdGFydApAQCAtODMsMjIgKzgzLDIyIEBAIGNsYXNzIFNlbGVj
dGlvblN1YnRyZWVSb290IHsKICAgICAgICAgICAgIGVuZFBvcyA9IG1fc2VsZWN0aW9uRW5kUG9z
LnZhbHVlKCk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChSZW5k
ZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0KSB7IG1fc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25T
dGFydDsgfQotICAgICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0UG9zKE9wdGlvbmFsPHVuc2ln
bmVkPiBzZWxlY3Rpb25TdGFydFBvcykgeyBtX3NlbGVjdGlvblN0YXJ0UG9zID0gc2VsZWN0aW9u
U3RhcnRQb3M7fQorICAgICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0UG9zKHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zKSB7IG1fc2VsZWN0aW9uU3RhcnRQb3MgPSBz
ZWxlY3Rpb25TdGFydFBvczt9CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5kKFJlbmRlck9i
amVjdCogc2VsZWN0aW9uRW5kKSB7IG1fc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kOyB9Ci0g
ICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5kUG9zKE9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rp
b25FbmRQb3MpIHsgbV9zZWxlY3Rpb25FbmRQb3MgPSBzZWxlY3Rpb25FbmRQb3M7fQorICAgICAg
ICB2b2lkIHNldFNlbGVjdGlvbkVuZFBvcyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rp
b25FbmRQb3MpIHsgbV9zZWxlY3Rpb25FbmRQb3MgPSBzZWxlY3Rpb25FbmRQb3M7fQogICAgICAg
ICB2b2lkIGNsZWFyU2VsZWN0aW9uKCkKICAgICAgICAgewogICAgICAgICAgICAgbV9zZWxlY3Rp
b25TdGFydCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX3NlbGVjdGlvblN0YXJ0UG9zID0gTnVs
bG9wdDsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uU3RhcnRQb3MgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBtX3NlbGVjdGlvbkVuZCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX3NlbGVj
dGlvbkVuZFBvcyA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkVuZFBvcyA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBtX3NlbGVjdGlvblN0YXJ0IHsgbnVsbHB0ciB9OwotICAgICAgICBPcHRpb25hbDx1bnNp
Z25lZD4gbV9zZWxlY3Rpb25TdGFydFBvczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gbV9zZWxlY3Rpb25TdGFydFBvczsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBtX3NlbGVjdGlv
bkVuZCB7IG51bGxwdHIgfTsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9u
RW5kUG9zOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3NlbGVjdGlvbkVuZFBv
czsKICAgICB9OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFNlbGVjdGlvblN1YnRyZWVSb290Kiwg
U2VsZWN0aW9uU3VidHJlZURhdGE+IFJlbmRlclN1YnRyZWVzTWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IDA3MWZiMzA5ODFjZTk2YTQx
M2U0YTE0YzA1ZmM2Njc0MDExMGRhYjMuLjVmODA5ZDg4MDA3YzFkM2FkZDRiODI2ZWQ5NjllMTIw
NWQ1NjhhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAKQEAgLTQwMCwxMSArNDAwLDExIEBAIGNsYXNzIExpbmVTdGF0ZSB7CiAgICAgZmxvYXQg
bG9naWNhbExlZnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxMZWZ0T2Zmc2V0OyB9
CiAgICAgY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudCYgb3ZlcmZsb3dl
ZEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvd2VkRnJhZ21lbnQ7IH0KICAgICBi
b29sIGhhc1RyYWlsaW5nV2hpdGVzcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdXaGl0
ZXNwYWNlTGVuZ3RoOyB9Ci0gICAgT3B0aW9uYWw8VGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRG
cmFnbWVudD4gbGFzdEZyYWdtZW50KCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRGcmFn
bWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ+IGxhc3RGcmFnbWVudCgpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAobV9mcmFnbWVudHMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1fZnJh
Z21lbnRzLmxhc3QoKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGJvb2wgaXNXaGl0ZXNwYWNlT25seSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggJiYgbV9ydW5zV2lkdGggPT0gbV90cmFp
bGluZ1doaXRlc3BhY2VXaWR0aDsgfQogICAgIGJvb2wgZml0cyhmbG9hdCBleHRyYSkgY29uc3Qg
eyByZXR1cm4gbV9hdmFpbGFibGVXaWR0aCA+PSBtX3J1bnNXaWR0aCArIGV4dHJhOyB9CkBAIC04
MDcsNyArODA3LDcgQEAgc3RhdGljIEVUZXh0QWxpZ24gdGV4dEFsaWduRm9yTGluZShjb25zdCBU
ZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGUmIHN0eWxlLCBib28KICAgICByZXR1cm4gdGV4dEFs
aWduOwogfQogCi1zdGF0aWMgdm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKExpbmVT
dGF0ZSYgbGluZSwgTGF5b3V0OjpSdW5WZWN0b3ImIHJ1bnMsIE9wdGlvbmFsPHVuc2lnbmVkPiBs
YXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZSwgdW5zaWduZWQmIGxpbmVDb3VudCwKK3N0YXRpYyB2
b2lkIGNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMoTGluZVN0YXRlJiBsaW5lLCBMYXlvdXQ6
OlJ1blZlY3RvciYgcnVucywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdFJ1bkluZGV4T2ZQ
cmV2aW91c0xpbmUsIHVuc2lnbmVkJiBsaW5lQ291bnQsCiAgICAgY29uc3QgVGV4dEZyYWdtZW50
SXRlcmF0b3ImIHRleHRGcmFnbWVudEl0ZXJhdG9yLCBib29sIGxhc3RMaW5lSW5GbG93KQogewog
ICAgIGlmICghcnVucy5zaXplKCkgfHwgKGxhc3RSdW5JbmRleE9mUHJldmlvdXNMaW5lICYmIHJ1
bnMuc2l6ZSgpIC0gMSA9PSBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZS52YWx1ZSgpKSkKQEAg
LTgzOSw3ICs4MzksNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlvdXQ6OlJ1blZl
Y3RvciYgcnVucywgUmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZwogICAgIExpbmVTdGF0ZSBs
aW5lOwogICAgIGJvb2wgaXNFbmRPZkNvbnRlbnQgPSBmYWxzZTsKICAgICBUZXh0RnJhZ21lbnRJ
dGVyYXRvciB0ZXh0RnJhZ21lbnRJdGVyYXRvciA9IFRleHRGcmFnbWVudEl0ZXJhdG9yKGZsb3cp
OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZTsKICAg
ICBkbyB7CiAgICAgICAgIGZsb3cuc2V0TG9naWNhbEhlaWdodChsaW5lSGVpZ2h0ICogbGluZUNv
dW50ICsgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSk7CiAgICAgICAgIExpbmVTdGF0ZSBwcmV2aW91
c0xpbmUgPSBsaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IGVjMDI4NjUwNzA2NmIzMTliYzc3ZjE2ZDU4
ZjgzMGNkOTlmZjM0ZDYuLjk1YTM3NDg1ZTUxNWMyYWExMzEzMmJmOTMwY2QwYTM2MTBjZWVmZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAKQEAgLTk0LDExICs5NCwxMSBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBh
aQogICAgIHRleHRQYWludGVyLnNldEZvbnQoc3R5bGUuZm9udENhc2NhZGUoKSk7CiAgICAgdGV4
dFBhaW50ZXIuc2V0VGV4dFBhaW50U3R5bGUoY29tcHV0ZVRleHRQYWludFN0eWxlKGZsb3cuZnJh
bWUoKSwgc3R5bGUsIHBhaW50SW5mbykpOwogCi0gICAgT3B0aW9uYWw8VGV4dERlY29yYXRpb25Q
YWludGVyPiB0ZXh0RGVjb3JhdGlvblBhaW50ZXI7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0RGVj
b3JhdGlvblBhaW50ZXI+IHRleHREZWNvcmF0aW9uUGFpbnRlcjsKICAgICBpZiAoc3R5bGUudGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSAhPSBUZXh0RGVjb3JhdGlvbk5vbmUpIHsKICAgICAgICAg
Y29uc3QgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVyID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4
dD4oZmxvdykuZmlyc3QoKTsKICAgICAgICAgaWYgKHRleHRSZW5kZXJlcikgewotICAgICAgICAg
ICAgdGV4dERlY29yYXRpb25QYWludGVyID0gVGV4dERlY29yYXRpb25QYWludGVyKHBhaW50SW5m
by5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0ZXh0UmVuZGVy
ZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci5lbXBsYWNlKHBh
aW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCksICp0ZXh0
UmVuZGVyZXIsIGZhbHNlKTsKICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci0+c2V0
Rm9udChzdHlsZS5mb250Q2FzY2FkZSgpKTsKICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFp
bnRlci0+c2V0QmFzZWxpbmUoc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgK
aW5kZXggMTFmMjgzMWJmZmQwNTEzYjM0MjFhMTFiN2Y5MWFmNjBkYzNjYzNhNy4uZWQ3NjExZWY4
OTA1MTA4N2IyMzE4NmE3YTA0MWM0ZDUxNjBhNjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0
IFdvcmRUcmFpbGluZ1NwYWNlIHsKICAgICB7CiAgICAgfQogCi0gICAgV1RGOjpPcHRpb25hbDxm
bG9hdD4gd2lkdGgoSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCisgICAgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gd2lkdGgoSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9u
dHMpCiAgICAgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRl
OjpDb21wdXRlZCkKICAgICAgICAgICAgIHJldHVybiBtX3dpZHRoOwpAQCAtODUsNyArODUsNyBA
QCBzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2UgewogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFdv
cmRUcmFpbGluZ1NwYWNlU3RhdGUgeyBVbmluaXRpYWxpemVkLCBDb21wdXRlZCB9OwogICAgIFdv
cmRUcmFpbGluZ1NwYWNlU3RhdGUgbV9zdGF0ZSB7IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OlVu
aW5pdGlhbGl6ZWQgfTsKLSAgICBXVEY6Ok9wdGlvbmFsPGZsb2F0PiBtX3dpZHRoOworICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1fd2lkdGg7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5
bGU7CiAgICAgVGV4dExheW91dCogbV90ZXh0TGF5b3V0IHsgbnVsbHB0ciB9OwogfTsKQEAgLTE3
Myw3ICsxNzMsNyBAQCBjbGFzcyBCcmVha2luZ0NvbnRleHQgewogICAgICAgICBtX2hhbmdzQXRF
bmQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdp
ZHRoKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQgPSAwLCBPcHRpb25hbDx1
bnNpZ25lZD4gbmV4dEJyZWFrID0gT3B0aW9uYWw8dW5zaWduZWQ+KCkpCisgICAgdm9pZCBjb21t
aXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQg
b2Zmc2V0ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4oKSkKICAgICB7CiAgICAgICAgIG1fd2lkdGguY29tbWl0KCk7CiAgICAg
ICAgIG1fbGluZUJyZWFrSGlzdG9yeS5tb3ZlVG8ob2JqZWN0LCBvZmZzZXQsIG5leHRCcmVhayk7
CkBAIC0yMTAsMTQgKzIxMCwxNCBAQCBjbGFzcyBCcmVha2luZ0NvbnRleHQgewogCiAgICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiB0aGlzLT5hdCgwKS5yZW5k
ZXJlcigpOyB9CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMt
PmF0KDApLm9mZnNldCgpOyB9Ci0gICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWth
YmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB0aGlzLT5hdCgwKS5uZXh0QnJlYWthYmxlUG9z
aXRpb24oKTsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxl
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB0aGlzLT5hdCgwKS5uZXh0QnJlYWthYmxlUG9zaXRp
b24oKTsgfQogICAgICAgICBib29sIGF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpIGNvbnN0IHsg
cmV0dXJuIHRoaXMtPmF0KDApLmF0VGV4dFBhcmFncmFwaFNlcGFyYXRvcigpOyB9CiAgICAgICAg
IFVDaGFyIHByZXZpb3VzSW5TYW1lTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLnBy
ZXZpb3VzSW5TYW1lTm9kZSgpOyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZXJhdG9yJiBnZXQo
c2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KGkpOyB9OwogICAgICAgICBjb25zdCBJ
bmxpbmVJdGVyYXRvciYgY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuIGdldCgwKTsgfQogICAgICAg
ICBzaXplX3QgaGlzdG9yeUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnNpemUoKTsgfQog
Ci0gICAgICAgIHZvaWQgbW92ZVRvKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZz
ZXQsIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBOdWxsb3B0KQorICAgICAgICB2b2lk
IG1vdmVUbyhSZW5kZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHB1c2goWyZdKElubGluZUl0ZXJhdG9yJiBtb2RpZnlNZSkgewogICAgICAgICAgICAg
ICAgIG1vZGlmeU1lLm1vdmVUbyhvYmplY3QsIG9mZnNldCwgbmV4dEJyZWFrKTsKQEAgLTY2Miw3
ICs2NjIsNyBAQCBpbmxpbmUgdm9pZCBlbnN1cmVDaGFyYWN0ZXJHZXRzTGluZUJveChMaW5lV2hp
dGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSYgbGluZVdoaXRlcwogICAgIGxpbmVXaGl0ZXNwYWNlQ29s
bGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNlcyhJbmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFy
YWdyYXBoU2VwYXJhdG9yLnJlbmRlcmVyKCksIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0
KCkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRp
ZmllciwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIGludCBjb25zZWN1dGl2
ZUh5cGhlbmF0ZWRMaW5lc0xpbWl0LCBpbnQgbWluaW11bVByZWZpeExpbWl0LCBpbnQgbWluaW11
bVN1ZmZpeExpbWl0LCB1bnNpZ25lZCBsYXN0U3BhY2UsIHVuc2lnbmVkIHBvcywgZmxvYXQgeFBv
cywgaW50IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzRml4ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdo
aXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3JkU3BhY2luZywgSW5saW5lSXRlcmF0b3ImIGxpbmVC
cmVhaywgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGUsIGJvb2wmIGh5cGhlbmF0ZWQp
CitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCB1bnNp
Z25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgaW50IGNvbnNlY3V0aXZlSHlwaGVuYXRl
ZExpbmVzTGltaXQsIGludCBtaW5pbXVtUHJlZml4TGltaXQsIGludCBtaW5pbXVtU3VmZml4TGlt
aXQsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWduZWQgcG9zLCBmbG9hdCB4UG9zLCBpbnQgYXZh
aWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSwg
aW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxpbmVJdGVyYXRvciYgbGluZUJyZWFrLCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlLCBib29sJiBoeXBoZW5hdGVkKQogewog
ICAgIC8vIE1hcCAnaHlwaGVuYXRlLWxpbWl0LXtiZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4K
ICAgICB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVuZ3RoOwpAQCAtNzQwLDcgKzc0MCw3IEBAIGlu
bGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRz
V2lkdGgoUmVuZGVyVGV4dCYgcmVuCiAgICAgd29yZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0g
bGFzdFNwYWNlOwogICAgIAogICAgIGZsb2F0IGFkZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAg
IFdURjo6T3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGg7CisgICAgc3RkOjpv
cHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICBpZiAoY3VycmVudENo
YXJhY3RlciA9PSAnICcpCiAgICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJh
aWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKICAgICBpZiAod29yZFRyYWlsaW5nU3Bh
Y2VXaWR0aCkKQEAgLTg3MCw3ICs4NzAsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6
OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAg
ICAgICAgICAgbWlkV29yZEJyZWFrID0gbV93aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcg
KyBjaGFyV2lkdGggPiBtX3dpZHRoLmF2YWlsYWJsZVdpZHRoKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50
Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9u
KCk7CiAgICAgICAgIGJvb2wgYmV0d2VlbldvcmRzID0gYyA9PSAnXG4nIHx8IChtX2N1cnJXUyAh
PSBQUkUgJiYgIW1fYXRTdGFydCAmJiBpc0JyZWFrYWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVC
cmVha0l0ZXJhdG9yLCBtX2N1cnJlbnQub2Zmc2V0KCksIG5leHRCcmVha2FibGVQb3NpdGlvbiwg
YnJlYWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwga2VlcEFsbFdvcmRzKQogICAgICAgICAgICAgJiYg
KHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9uZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5T
YW1lTm9kZSgpICE9IHNvZnRIeXBoZW4pKSk7CiAgICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJl
YWthYmxlUG9zaXRpb24obmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKQEAgLTk3Miw3ICs5NzIsNyBA
QCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50
cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBsYXN0IGJyZWFraW5nIHBvc2l0aW9uIGlzIGEg
c29mdC1oeXBoZW4uCiAgICAgICAgICAgICAgICAgICAgIGlmICghaHlwaGVuYXRlZCAmJiBzdHls
ZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE9w
dGlvbmFsPHVuc2lnbmVkPiBsYXN0QnJlYWtpbmdQb3NpdG9uOworICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbGFzdEJyZWFraW5nUG9zaXRvbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXJBdEJyZWFraW5n
UG9zaXRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fbGluZUJy
ZWFrSGlzdG9yeS5vZmZzZXQoKSB8fCBtX2xpbmVCcmVha0hpc3RvcnkubmV4dEJyZWFrYWJsZVBv
c2l0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QnJlYWtpbmdQb3Np
dG9uID0gbV9saW5lQnJlYWtIaXN0b3J5Lm9mZnNldCgpOwpAQCAtOTgzLDcgKzk4Myw3IEBAIGlu
bGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3
b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXJBdEJyZWFraW5nUG9zaXRpb24gPSBtX2N1cnJlbnQucmVuZGVyZXIoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0QnJlYWtpbmdQ
b3NpdG9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8VUNoYXI+IGNo
YXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxVQ2hhcj4gY2hhcmFjdGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIGxhc3QgYnJlYWtpbmcgcG9zaXRp
b24gcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBjb250ZXh0LCB3ZSBuZWVkIHRv
IGxvb2sgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgcHJldmlvdXMgbm9uLWVtcHR5IHRleHQgcmVuZGVyZXIuCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0QnJlYWtpbmdQb3NpdG9uLnZhbHVlKCkpCkBAIC0x
MzM2LDcgKzEzMzYsNyBAQCBpbmxpbmUgSW5saW5lSXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0Ojpv
cHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFpbGluZ1dvcmQoKQogICAgICAgICByZXR1cm4g
bGluZUJyZWFrOwogICAgIGJvb2wgaXNMb29zZUNKS01vZGUgPSBtX3JlbmRlclRleHRJbmZvLnRl
eHQgIT0gJnJlbmRlclRleHQgJiYgbV9yZW5kZXJUZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvci5p
c0xvb3NlQ0pLTW9kZSgpOwogICAgIGJvb2wgYnJlYWtOQlNQID0gbV9hdXRvV3JhcCAmJiBtX2N1
cnJlbnRTdHlsZS0+bmJzcE1vZGUoKSA9PSBTUEFDRTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbGluZUJyZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigp
OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IGxp
bmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsKICAgICBpc0JyZWFrYWJsZShtX3JlbmRl
clRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yLCBsaW5lQnJlYWsub2Zmc2V0KCkgKyAxLCBuZXh0
QnJlYWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwgaXNMb29zZUNKS01vZGUsIG1fY3VycmVudFN0
eWxlLT53b3JkQnJlYWsoKSA9PSBLZWVwQWxsV29yZEJyZWFrKTsKICAgICBpZiAoIW5leHRCcmVh
a2FibGVQb3NpdGlvbiB8fCBuZXh0QnJlYWthYmxlUG9zaXRpb24udmFsdWUoKSAhPSByZW5kZXJU
ZXh0LnRleHRMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGxpbmVCcmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE1MU3R5bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKaW5kZXggNWYzMTZhNDgx
YjRjMGVjOTczZWE2YzM2MjUyMmRjMmVhMDBlMTBjNy4uY2E0NmMyZWJjZDAyZmRlMzRlNWU2YzBi
ZjBiZDhiNzJhMDRhMmUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9NYXRoTUxTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9NYXRoTUxTdHlsZS5jcHAKQEAgLTEzNSwxMCArMTM1LDEwIEBAIHZvaWQgTWF0aE1MU3R5bGU6
OnJlc29sdmVNYXRoTUxTdHlsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIC8vIFRoZSBk
aXNwbGF5c3R5bGUgYW5kIG1hdGh2YXJpYW50IGF0dHJpYnV0ZXMgb3ZlcnJpZGUgdGhlIGRlZmF1
bHQgYmVoYXZpb3IuCiAgICAgYXV0byogZWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+
KHJlbmRlcmVyKS0+ZWxlbWVudCgpOwogICAgIGlmIChpczxNYXRoTUxFbGVtZW50PihlbGVtZW50
KSkgewotICAgICAgICBPcHRpb25hbDxib29sPiBkaXNwbGF5U3R5bGUgPSBkb3duY2FzdDxNYXRo
TUxFbGVtZW50PihlbGVtZW50KS0+c3BlY2lmaWVkRGlzcGxheVN0eWxlKCk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gZGlzcGxheVN0eWxlID0gZG93bmNhc3Q8TWF0aE1MRWxlbWVudD4o
ZWxlbWVudCktPnNwZWNpZmllZERpc3BsYXlTdHlsZSgpOwogICAgICAgICBpZiAoZGlzcGxheVN0
eWxlKQogICAgICAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBkaXNwbGF5U3R5bGUudmFsdWUoKTsK
LSAgICAgICAgT3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IG1hdGhWYXJpYW50
ID0gZG93bmNhc3Q8TWF0aE1MRWxlbWVudD4oZWxlbWVudCktPnNwZWNpZmllZE1hdGhWYXJpYW50
KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IG1h
dGhWYXJpYW50ID0gZG93bmNhc3Q8TWF0aE1MRWxlbWVudD4oZWxlbWVudCktPnNwZWNpZmllZE1h
dGhWYXJpYW50KCk7CiAgICAgICAgIGlmIChtYXRoVmFyaWFudCkKICAgICAgICAgICAgIG1fbWF0
aFZhcmlhbnQgPSBtYXRoVmFyaWFudC52YWx1ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggNTIx
NTUwYjFkZDRjMmMxM2U2YTI5MTAyMjQwYjg5M2MxYzYxMTQ1MS4uNDE3ZTljNjU1Yzc4YWU3Nzg2
ZWFkODNlMzQ5ZjBhNjI2YjAxNWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBp
bnQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2Vs
aW5lVHlwZSwgYm9vbCBmaXJzdExpbgogICAgIGlmIChsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0
aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4g
Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9u
KGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsK
KyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihSZW5kZXJCbG9jazo6YmFz
ZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9z
aXRpb25Nb2RlKSk7CiB9CiAKICNpZiBFTkFCTEUoREVCVUdfTUFUSF9MQVlPVVQpCkBAIC0xNzMs
MTEgKzE3MywxMSBAQCBMYXlvdXRVbml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6
Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAgIH0KIH0KIAotT3B0aW9u
YWw8aW50PiBSZW5kZXJNYXRoTUxUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgLy8gQnkgZGVmYXVsdCB0aGUgdmVydGljYWwgY2VudGVyIG9mIDxtdGFibGU+
IGlzIGFsaWduZWQgb24gdGhlIG1hdGggYXhpcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0
aGFuIFJlbmRlclRhYmxlOjpmaXJzdExpbmVCb3hCYXNlbGluZSwgd2hpY2ggcmV0dXJucyB0aGUg
YmFzZWxpbmUgb2YgdGhlIGZpcnN0IHJvdyBvZiBhIDx0YWJsZT4uCi0gICAgcmV0dXJuIE9wdGlv
bmFsPGludD4obG9naWNhbEhlaWdodCgpIC8gMiArIGF4aXNIZWlnaHQoc3R5bGUoKSkpOworICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4obG9naWNhbEhlaWdodCgpIC8gMiArIGF4aXNIZWln
aHQoc3R5bGUoKSkpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpsYXlvdXRJdGVtcyhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXggN2E0MjdiYjI1NTkyNzk0ZGE4NWY3OTY5
MzUwNDhkMDA5ZjgzMjA3Mi4uYmIxNDJhMjU0MjBhM2E2YmNlMTRjMTU0YmRlOTMyMzM2MzQzNGUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBhc2NlbnRGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmZp
cnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAg
ICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC5sb2dpY2Fs
SGVpZ2h0KCkpOwogICAgIH0KIAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CkBAIC0x
MDksNyArMTA5LDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MVGFibGUgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyVGFibGUgewogcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxUYWJsZSI7IH0KLSAgICBPcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1MU3R5
bGU+IG1fbWF0aE1MU3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA2M2Y0MTg4ZTk4NDZi
YjgzNGYxMWRkNzllMWI3M2EyOWY0ZTE3YTFmLi4zNWU0NDE0NWY3Zjg2MmMwOGJkMDRlMjE3ZWQ1
ZmQwZGU2MzBjMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtMjQyLDEwICsyNDIsMTAgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3Rl
ZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9m
ZnNldC54KCkgKyBsb2dpY2FsV2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSk7CiB9
CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MRnJhY3Rpb246OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihtX2FzY2VudCkp
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihzdGQ6Omxyb3VuZChzdGF0aWNf
Y2FzdDxmbG9hdD4obV9hc2NlbnQpKSk7CiAgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpm
aXJzdExpbmVCYXNlbGluZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggYjk5OTQ4MDE5NTA5NTk2
NGNjN2YzOGQ3Nzg5ODFlNDlmNjg5ZjE1Mi4uMGFkOWRmZmFhOWM1Yzc5ZjYxYTk4MmJiMzc4M2M1
OTZmYzBhZWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBSZW5kZXJN
YXRoTUxGcmFjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiAKICAgICB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSAwKSBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IGZpbmFsOwogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3Io
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAppbmRleCA2ZDlhMDNjYWQwYzU1NGU0Y2Y0YmMyZjdm
NTMzY2ZkMGU5ODFkODQwLi45Zjk3OTI2ZjI1M2QxNDhmOWNhNDM5YzcwNTM5MzI2NzhmZThkMjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMjg3LDEwICsyODcsMTAgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6dmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29uc3QK
ICAgICByZXR1cm4gKG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSAtIG1fc3RyZXRjaEhlaWdo
dEFib3ZlQmFzZWxpbmUgLSBtX21hdGhPcGVyYXRvci5kZXNjZW50KCkgKyBtX21hdGhPcGVyYXRv
ci5hc2NlbnQoKSkgLyAyOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTE9wZXJhdG9y
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0
aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAodXNlTWF0
aE9wZXJhdG9yKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0
YXRpY19jYXN0PGZsb2F0PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRj
aGVkT3BlcmF0b3JTaGlmdCgpKSkpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+
KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAt
IHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgpKSkpOwogICAgIHJldHVybiBSZW5kZXJN
YXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IDYw
NzFlZGY0M2ViODQ2MTI0ODZhYTg4ZGE0NjVkM2NjOWRjN2E2ZDMuLmUyMTJlOWJmNzM0YWQyNTVm
MDZlNjkwZWMyNWUxNzg1YTkyOTllMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTc3LDcgKzc3LDcgQEAg
Y2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBwdWJsaWMgUmVuZGVyTWF0aE1MVG9rZW4gewog
ICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzSW52aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKIAotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJNYXRo
TUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgZmluYWwgeyByZXR1cm4gdGhpczsg
fQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUGFkZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUGFkZGVkLmNwcAppbmRleCBjMTM1YTI3NmY2MWIwNjQ1OTFjMDIzM2YyMDU3MWQyMWI0OWE5
NmNhLi41OWIyYjAxZGY2N2FmNTA5ZTYxNTE1ZGYxODQ3MDBjZjZmN2Y1NmVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQu
Y3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxQYWRkZWQ6OmxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5
b3V0KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gV2UgdHJ5IGFuZCBjYWxjdWxhdGUg
dGhlIGJhc2VsaW5lIGZyb20gdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGlsZC4KICAgICBM
YXlvdXRVbml0IGFzY2VudDsKQEAgLTExOCw3ICsxMTgsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRl
ck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICBhc2NlbnQg
PSBhc2NlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2Fs
VG9wKCkgKyB2b2Zmc2V0KCk7CiAgICAgZWxzZQogICAgICAgICBhc2NlbnQgPSBtcGFkZGVkSGVp
Z2h0KDApOwotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0
PGZsb2F0Pihhc2NlbnQpKSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihzdGQ6Omxy
b3VuZChzdGF0aWNfY2FzdDxmbG9hdD4oYXNjZW50KSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaAppbmRleCAw
YWMzYzg5MDcyNTQzZGNmNWEwYzRjN2JiNTU2NTBlODg0ZDU1ZWNkLi5iMTU5OGQ4ZWE3NTMzNmQx
YzE4NzI2ZDExNGQ3MDFiMDU2NDhmMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xh
c3MgUmVuZGVyTWF0aE1MUGFkZGVkIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiAK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9p
ZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2lj
YWxIZWlnaHQgPSAwKSBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QgZmluYWw7CiAKICAgICBNYXRoTUxQYWRkZWRFbGVtZW50JiBlbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MUGFkZGVkRWxlbWVudCY+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KICAgICBMYXlvdXRVbml0IHZvZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAppbmRl
eCBlNWYxMmIzM2VhMjhjMmIyMDhlZDQ5MWMyZTIzZmQ5OGEyMDBkNTU4Li5jNGJlYmMyYTIzYzM5
MjdiMWZhNTRkZGVmODJiNzUzYjE3MDI3N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCkBAIC00OSwxMyArNDksMTMgQEAg
TWF0aE1MUm93RWxlbWVudCYgUmVuZGVyTWF0aE1MUm93OjplbGVtZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MUm93RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMo
KSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRC
b3goKTsKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxp
bnQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIAotICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZihhc2NlbnRGb3JDaGlsZCgq
YmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpKSk7CisgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9y
Q2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkpOwog
fQogCiB2b2lkIFJlbmRlck1hdGhNTFJvdzo6Y29tcHV0ZUxpbmVWZXJ0aWNhbFN0cmV0Y2goTGF5
b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggMjg5NDIxZDJmYjg5
ZjJiM2E5NzQxODBjOTc5YzAzYzhlY2M4ZDM3Ny4uZjljMTY3ODliMTFjZWFjMjllNDMyMGY4N2Q5
ODg0OTRjN2EyOTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvdy5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJv
dyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxh
eW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhl
aWdodCA9IDApIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5b3V0Um93SXRlbXMoTGF5b3V0VW5p
dCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50KTsKICAgICB2b2lkIGNvbXB1dGVMaW5lVmVy
dGljYWxTdHJldGNoKExheW91dFVuaXQmIGFzY2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmNwcAppbmRleCBmY2ZhNGFmMTc1ZmVhYmIyOTQ5MzQ4MjQ3NGM4MjA0ZThlYzFhMmJl
Li4wNWQ1MGUwYzlkMDdhYzc0YzJjM2FiMDQzYTJmNzgxZjJmN2ZjYTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5j
cHAKQEAgLTc2LDEzICs3NiwxMyBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1M
U2NyaXB0czo6dW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkKICAgICByZXR1cm4gZG93bmNhc3Q8UmVu
ZGVyTWF0aE1MQmxvY2s+KGJhc2UpLT51bmVtYmVsbGlzaGVkT3BlcmF0b3IoKTsKIH0KIAotT3B0
aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhN
TFNjcmlwdHM6OnZhbGlkYXRlQW5kR2V0UmVmZXJlbmNlQ2hpbGRyZW4oKQorc3RkOjpvcHRpb25h
bDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2Ny
aXB0czo6dmFsaWRhdGVBbmRHZXRSZWZlcmVuY2VDaGlsZHJlbigpCiB7CiAgICAgLy8gQWxsIHNj
cmlwdGVkIGVsZW1lbnRzIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY2hpbGQuCiAgICAgLy8gVGhl
IGZpcnN0IGNoaWxkIGlzIHRoZSBiYXNlLgogICAgIGF1dG8gYmFzZSA9IGZpcnN0Q2hpbGRCb3go
KTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmZXJlbmNlQ2hpbGRyZW4gcmVmZXJlbmNlOwogICAg
IHJlZmVyZW5jZS5iYXNlID0gYmFzZTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBPcHRpb25hbDxSZW5k
ZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6
dmFsaWRhdGVBbgogICAgICAgICAvLyA8bW92ZXI+IGJhc2Ugb3ZlcnNjcmlwdCA8L21vdmVyPgog
ICAgICAgICBhdXRvIHNjcmlwdCA9IGJhc2UtPm5leHRTaWJsaW5nQm94KCk7CiAgICAgICAgIGlm
ICghc2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzY3JpcHQpIHx8IHNjcmlwdC0+bmV4
dFNpYmxpbmdCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVmZXJlbmNlLmZpcnN0UG9zdFNjcmlwdCA9
IHNjcmlwdDsKICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZTsKICAgICB9CkBAIC0xMTUsMTAgKzEx
NSwxMCBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4g
UmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbgogICAgICAgICAvLyA8bXVuZGVyb3Zlcj4g
YmFzZSBzdWJzY3JpcHQgc3VwZXJzY3JpcHQgPC9tdW5kZXJvdmVyPgogICAgICAgICBhdXRvIHN1
YlNjcmlwdCA9IGJhc2UtPm5leHRTaWJsaW5nQm94KCk7CiAgICAgICAgIGlmICghc3ViU2NyaXB0
IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzdWJTY3JpcHQpKQotICAgICAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRv
IHN1cGVyU2NyaXB0ID0gc3ViU2NyaXB0LT5uZXh0U2libGluZ0JveCgpOwogICAgICAgICBpZiAo
IXN1cGVyU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzdXBlclNjcmlwdCkgfHwgc3Vw
ZXJTY3JpcHQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlZmVyZW5jZS5maXJz
dFBvc3RTY3JpcHQgPSBzdWJTY3JpcHQ7CiAgICAgICAgIHJldHVybiByZWZlcmVuY2U7CiAgICAg
fQpAQCAtMTQ4LDE5ICsxNDgsMTkgQEAgT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVm
ZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAgICAg
ICAgIGlmIChpc1ByZXNjcmlwdERlbGltaXRlcigqc2NyaXB0KSkgewogICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgYSA8bXByZXNjcmlwdHMvPi4gTGV0J3MgY2hlY2sgMmEpIGFuZCAyYykuCiAg
ICAgICAgICAgICAgICAgaWYgKCFudW1iZXJPZlNjcmlwdElzRXZlbiB8fCByZWZlcmVuY2UuZmly
c3RQcmVTY3JpcHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZS5maXJzdFByZVNjcmlwdCA9IHNjcmlwdC0+bmV4dFNpYmxpbmdCb3goKTsgLy8gV2UgZG8g
MSkuCiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLnByZXNjcmlwdERlbGltaXRlciA9IHNjcmlw
dDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IG51bWJlck9mU2NyaXB0SXNFdmVuID0gIW51bWJlck9mU2NyaXB0SXNFdmVuOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBudW1iZXJPZlNjcmlwdElzRXZlbiA/IE9wdGlvbmFsPFJlZmVyZW5j
ZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogTnVsbG9wdDsgLy8gV2UgdmVyaWZ5IDJiKS4KKyAgICAg
ICAgcmV0dXJuIG51bWJlck9mU2NyaXB0SXNFdmVuID8gc3RkOjpvcHRpb25hbDxSZWZlcmVuY2VD
aGlsZHJlbj4ocmVmZXJlbmNlKSA6IHN0ZDo6bnVsbG9wdDsgLy8gV2UgdmVyaWZ5IDJiKS4KICAg
ICB9CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJNYXRo
TUxTY3JpcHRzOjpzcGFjZUFmdGVyU2NyaXB0KCkKQEAgLTQ3MSwxMyArNDcxLDEzIEBAIHZvaWQg
UmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBS
ZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPGludD4gUmVuZGVyTWF0aE1MU2NyaXB0czo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAog
ewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CiAgICAgYXV0byogYmFzZSA9IGZpcnN0Q2hp
bGRCb3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7
Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2Vu
dEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oc3Rh
dGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2lj
YWxUb3AoKSkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAppbmRleCBkNDg3MGI0ZDk0ZDMxZjVhOGY3Zjky
ZDMyYTYzNTViNDcxYzNmNjQzLi5mZjA0ZTg2YzVkODdjYWRhY2ViZDE2OTI5YmYyN2UzOWUyMTg5
MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuaApAQCAtNTIsMTQgKzUyLDE0IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNj
cmlwdHMgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogCiBwcml2YXRlOgogICAgIE1hdGhN
TFNjcmlwdHNFbGVtZW50JiBlbGVtZW50KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAgIHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJl
biB7CiAgICAgICAgIFJlbmRlckJveCogYmFzZTsKICAgICAgICAgUmVuZGVyQm94KiBwcmVzY3Jp
cHREZWxpbWl0ZXI7CiAgICAgICAgIFJlbmRlckJveCogZmlyc3RQb3N0U2NyaXB0OwogICAgICAg
ICBSZW5kZXJCb3gqIGZpcnN0UHJlU2NyaXB0OwogICAgIH07Ci0gICAgT3B0aW9uYWw8UmVmZXJl
bmNlQ2hpbGRyZW4+IHZhbGlkYXRlQW5kR2V0UmVmZXJlbmNlQ2hpbGRyZW4oKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPiB2YWxpZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxk
cmVuKCk7CiAgICAgTGF5b3V0VW5pdCBzcGFjZUFmdGVyU2NyaXB0KCk7CiAgICAgTGF5b3V0VW5p
dCBpdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFJlZmVyZW5jZUNoaWxkcmVuJik7CiAgICAgc3RydWN0
IFZlcnRpY2FsUGFyYW1ldGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmluZGV4IDRjMWZlOWU2OTBlMGMyY2IxYTg1
NmEwMGVjYzliMzcxNjVmM2YzZGUuLjA3MGFlZTdmZGIxODNlZDg0NjYzYjM3NTNiN2E4YWM5NjBm
ZWFmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04MiwxMSArODIsMTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxT
cGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAg
IGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFj
ZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlck1h
dGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCBo
ZWlnaHQsIGRlcHRoOwogICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7
Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oaGVpZ2h0KTsKKyAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxpbnQ+KGhlaWdodCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCAwZWIyMDU2ZTg3ZGFmOTRiYjQ3
NDM0YzMyMzVkZmU3Nzg3YWU0MjJlLi5mZDE5YmUyZDZmY2IwNjRkYThkNmE4NmFjYTZmMzk2ZTVl
ODkwYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcGFjZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNwYWNl
IGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKICAgICBib29sIGlzQ2hpbGRBbGxv
d2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IHNwYWNl
V2lkdGgoKSBjb25zdDsKICAgICB2b2lkIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5p
dCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0aCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IGJkMWU5
NmJhM2ZjMTFmMTE2ODQ4ZGNkMGQ4MmQ1YjE4OWNjMmY5ZDEuLjQzYmYyMDZmY2VmMWQ5YTJmZjY3
MjE4ZmU0MjNlZDFjZDZmYTdhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC01MTYsNyArNTE2LDcgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCgpCiB7CiAgICAgQVNT
RVJUKG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5KTsKIAotICAgIG1fbWF0aFZhcmlhbnRDb2RlUG9p
bnQgPSBOdWxsb3B0OworICAgIG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgbV9tYXRoVmFyaWFudEdseXBoRGlydHkgPSBmYWxzZTsKIAogICAgIC8vIEVhcmx5IHJl
dHVybiBpZiB0aGUgdG9rZW4gZWxlbWVudCBjb250YWlucyBSZW5kZXJFbGVtZW50cy4KQEAgLTU1
MSwxMiArNTUxLDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZUZyb21FbGVtZW50
KCkKICAgICBzZXRNYXRoVmFyaWFudEdseXBoRGlydHkoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBS
ZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxpbnQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpIHsKICAgICAgICAgYXV0byBtYXRoVmFyaWFu
dEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNoYXJhY3RlcihtX21h
dGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1fbWF0aFZhcmlhbnRJc01pcnJvcmVkKTsKICAg
ICAgICAgaWYgKG1hdGhWYXJpYW50R2x5cGguZm9udCkKLSAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250
LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZigt
bWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmds
eXBoKS55KCkpKSk7CiAgICAgfQogICAgIHJldHVybiBSZW5kZXJNYXRoTUxCbG9jazo6Zmlyc3RM
aW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRleCBjMzMxZWM1ZjFkMmI5MThjMGU2Mzg4MTBhOGY1
OTk2YTk0MzgyMmIxLi41MTAxZDZhZjFjNTAzZjgyMzcyY2NiZDJlNDU0ZWQ1NTY2MGM1ZDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFRva2VuIDogcHVibGlj
IFJlbmRlck1hdGhNTEJsb2NrIHsKIHByb3RlY3RlZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludENoaWxkcmVu
KFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQYWludEluZm8mIGZvckNo
aWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJy
aWRlOwogCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFRva2VuIDogcHVibGlj
IFJlbmRlck1hdGhNTEJsb2NrIHsKICAgICAgICAgbV9tYXRoVmFyaWFudEdseXBoRGlydHkgPSB0
cnVlOwogICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9
Ci0gICAgT3B0aW9uYWw8VUNoYXIzMj4gbV9tYXRoVmFyaWFudENvZGVQb2ludCB7IE51bGxvcHQg
fTsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgeyBz
dGQ6Om51bGxvcHQgfTsKICAgICBib29sIG1fbWF0aFZhcmlhbnRJc01pcnJvcmVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5IHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAK
aW5kZXggZWVhNGYwZDgzMjA2ZjM0N2IxNzdmNzNmMDcyNjU4ZDAxNjZlNjQwMy4uY2NkZjI0Zjlj
NjFlNjJkNTlhNWJiODViN2VjYWFiN2NhOWFlNzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTczLDcgKzE3Myw3
IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgaWYgKCFwb2ludElzSW5zaWRlVmlld3Bv
cnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9h
dFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZh
bHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZs
b2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAg
ICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2Nh
bFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggMmJmMDg2
ZmMxZjMwNzk4MzU5YmQ2NzY4YTYzODRhZjA5OWQ1NzNkMC4uMTA5NWQyNGUxMTIxOWI2MjI3Yzhj
MmQ2OWUxNmYzMTc0YzVhMTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAg
Ym9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0
Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2Nh
bFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50
ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgLy8gRWFybHkgZXhpdCBpZiBsb2NhbCBw
b2ludCBpcyBub3QgY29udGFpbmVkIGluIGNsaXBwZWQgdmlld3BvcnQgYXJlYQogICAgIGlmIChT
VkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSAmJiAhbV92aWV3cG9ydC5j
b250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMWRlZDY1MWM1OGIzYjE3ODJhZDI0MGU2MzJiM2I4YWEy
ZTY2MWZhZi4uOGRlNWJmNDVjNDUwYzY2ZmVkMWEwZDYzZGUzZmQ2YWEzMTU1ODkxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE4
NSw3ICsxODUsNyBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIFBvaW50ZXJFdmVudHNI
aXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNU
SU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMoKSk7CiAgICAgYm9vbCBpc1Zpc2li
bGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSk7CiAgICAgaWYgKGlzVmlzaWJs
ZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2Nh
bFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0
aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcAppbmRleCBiNWNiZGU2YThlMTVkOGIyOTIxYmZjMWJkOGRmOWYwY2FkNGNhYTM2Li41ZDgz
NWZlMTcwNmQ4OTMwMGRlYWNhZTcyNWExZjEwMTBkZGQ4YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CkBAIC0yNjcsMTAgKzI2NywxMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0
VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbgogICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9i
amVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgdHJh
bnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RC
b3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgICAgIHBv
aW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxl
bWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5l
eHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9k
ZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYTQ5MDQ2NGI3OWVhMmZkOTMwNzA1
ODU0Zjk1ZDMwNmRkOGE1YTA2ZS4uY2Q1YmY3NWY2YTAwNTk4OTQ2Y2FjMzZkZThiZDE1ODg5OWY4
OTM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZl
Y3QtPmFzSW1hZ2VCdWZmZXIoKTsKICAgICAgICAgaWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAogICAgICAgICAgICAg
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJl
c29sdXRpb24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0
aW9uKCkuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigq
cmVzdWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggYzUyNmVjZjE1
MjI0NThmMzBjN2IwNGNiZWY5NGRjNDZiYzdkYWJjMi4uYmVmOTAzZTkxZmQ4ZjA1ZjdmZjcyMmE3
NDQ0Y2UwNDMwYWIxZWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgYm9vbCBSZW5kZXJTVkdSb290Ojpu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYg
cmUKICAgICAvLyBPbmx5IHRlc3QgU1ZHIGNvbnRlbnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBj
b250ZW50IGJveC4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gaW50ZXJzZWN0aW9u
IHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVzdHMgYXJlIHN1cHBvcnRlZCBieSBub2RlQXRGbG9hdFBv
aW50LgogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmNvbnRhaW5zKHBvaW50SW5Cb3JkZXJCb3gp
KSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQ
b2ludChwb2ludEluUGFyZW50KSk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOwogCiAgICAgICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBv
aW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCAxNWVhYTNk
ZmE3MmY0ZTYyZWU1MzU3NzYyNGVhYTkzYzE1ZGE3YTJkLi40M2FiN2Q4OWE3ZDNhYWEyNGZjZjRk
NTQzM2VlODZmZTJlNmFmMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIFBhdGgqIFJlbmRlclNWR1No
YXBlOjpub25TY2FsaW5nU3Ryb2tlUGF0aChjb25zdCBQYXRoKiBwYXRoLCBjb25zdCBBZmZpbmVU
cmFuc2ZvCiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNldHVwTm9uU2NhbGluZ1N0cm9rZUNvbnRl
eHQoQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFuc2Zvcm0sIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXImIHN0YXRlU2F2ZXIpCiB7Ci0gICAgT3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZl
cnNlID0gc3Ryb2tlVHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFmZmlu
ZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHN0cm9rZVRyYW5zZm9ybS5pbnZlcnNlKCk7CiAgICAgaWYg
KCFpbnZlcnNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBi
b29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIGlmIChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RG
b3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2Fs
UG9pbnQgPSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQg
PSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBv
aW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00MTAsNyArNDEwLDcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1NoYXBlOjpjYWxjdWxh
dGVTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgICAgIEJvdW5kaW5nUmVjdFN0cm9rZVN0
eWxlQXBwbGllciBzdHJva2VTdHlsZSgqdGhpcyk7CiAgICAgICAgIGlmIChoYXNOb25TY2FsaW5n
U3Ryb2tlKCkpIHsKICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBub25TY2FsaW5nVHJhbnNm
b3JtID0gbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgpOwotICAgICAgICAgICAgaWYgKE9wdGlv
bmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IG5vblNjYWxpbmdUcmFuc2Zvcm0uaW52ZXJz
ZSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGlu
dmVyc2UgPSBub25TY2FsaW5nVHJhbnNmb3JtLmludmVyc2UoKSkgewogICAgICAgICAgICAgICAg
IFBhdGgqIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aChtX3BhdGguZ2V0KCksIG5vblNj
YWxpbmdUcmFuc2Zvcm0pOwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzdHJva2VCb3VuZGlu
Z1JlY3QgPSB1c2VQYXRoLT5zdHJva2VCb3VuZGluZ1JlY3QoJnN0cm9rZVN0eWxlKTsKICAgICAg
ICAgICAgICAgICBzdHJva2VCb3VuZGluZ1JlY3QgPSBpbnZlcnNlLnZhbHVlKCkubWFwUmVjdChz
dHJva2VCb3VuZGluZ1JlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAKaW5kZXggNTkwMGE1MWUzNmIwY2Y5OGQ4MTYyZjQ4NzcxZGFhMjQwY2Iw
YjI3ZC4uZDNiYjMwZDAyYTM4Y2FlMDNlZDEyYWY5ODQ1NzQ5NTU4ODVlNjhjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00MzMsNyAr
NDMzLDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWwKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFo
aXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0
cm9rZSAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1
aXJlU3Ryb2tlKSkKICAgICAgICAgICAgIHx8IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHls
ZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7Ci0g
ICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5Q
YXJlbnQpOworICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQocG9pbnRJblBhcmVudCk7CiAKICAgICAgICAgICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6
cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOyAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDg0YjdlM2Y2YzllOWNmNmUyNjUxMTMyN2U4MjAx
YmViYTRhZDNjZmYuLmI3ODI5NDBlMzUwNjVmMGY3ODdlMTcyMjM3ODA3NTUxZDI5Y2UxZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cApAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVw
YWludFJlY3RXaXRoU2hhZG93cyhjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kCiAgICAgaWYgKGxv
Y2FsVG9Sb290VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QWZmaW5lVHJhbnNmb3JtIHJvb3RUb0xvY2FsVHJhbnNmb3JtID0gbG9jYWxUb1Jvb3RUcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpOworICAgIEFmZmluZVRyYW5z
Zm9ybSByb290VG9Mb2NhbFRyYW5zZm9ybSA9IGxvY2FsVG9Sb290VHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgcmVwYWludFJlY3QgPSByb290VG9M
b2NhbFRyYW5zZm9ybS5tYXBSZWN0KHJlcGFpbnRSZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNGYz
NWVkOWVhYTAzOTEzNGU3MGM4Y2UyMzE5NTg1Y2NkZjlkOTY5NS4uYzRiM2FhYzViZmQxY2U4Y2M1
NjYxYzhkYmJiZTRjNTMyNDY3ZWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9p
ZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEFmZmkKIAogICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNy
ZWF0ZWQgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91
bGQgbm90IGJlIHNjYWxlZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBo
YXMgdG8gYmUgZG9uZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgot
ICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAgICAgY29udGV4
dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAg
ICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHAKaW5kZXggMzUyMGMyYTJjYTAxNWY0
N2ZiYTA0MDhlM2U1ZTk4MzQzODc5Zjg4My4uODZlNGJmMmYzZDUxZWNmZGMyZjg4YWMwNTU4NDgy
OGI3MmVlYWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1
ZXJ5LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFy
dEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVyZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAg
Ym9vbCBhbHRlclN0YXJ0UG9zaXRpb24gPSB0cnVlOwogICAgIGJvb2wgYWx0ZXJFbmRQb3NpdGlv
biA9IHRydWU7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGFzdFBvc2l0aW9uT2Zmc2V0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxhc3RQb3NpdGlvbk9mZnNldDsKICAgICBmb3Ig
KDsgdGV4dE1ldHJpY3NPZmZzZXQgPCB0ZXh0TWV0cmljc1NpemUgJiYgcG9zaXRpb25PZmZzZXQg
PCBwb3NpdGlvblNpemU7ICsrdGV4dE1ldHJpY3NPZmZzZXQpIHsKICAgICAgICAgU1ZHVGV4dE1l
dHJpY3MmIG1ldHJpY3MgPSB0ZXh0TWV0cmljc1ZhbHVlc1t0ZXh0TWV0cmljc09mZnNldF07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCA3ODJhNmFi
NjQ4NGFhMzQyNGI4ZmM4YzVmYWM5YWNmZjRhMmQxNjk1Li41MWM2OTNjN2FjODFjMmE5M2JhZWQ4
NjA5YWI2OTY3NGM4NTkxZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5k
ZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBh
cmVudChDb250YWluZXJOb2RlJiByb290KQogUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFy
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIFN0eWxlOjpDaGFuZ2Ugc3R5bGVDaGFuZ2UpCiAgICAgOiBl
bGVtZW50KCZlbGVtZW50KQogICAgICwgc3R5bGVDaGFuZ2Uoc3R5bGVDaGFuZ2UpCi0gICAgLCBy
ZW5kZXJUcmVlUG9zaXRpb24oZWxlbWVudC5yZW5kZXJlcigpID8gbWFrZU9wdGlvbmFsKFJlbmRl
clRyZWVQb3NpdGlvbigqZWxlbWVudC5yZW5kZXJlcigpKSkgOiBOdWxsb3B0KQorICAgICwgcmVu
ZGVyVHJlZVBvc2l0aW9uKGVsZW1lbnQucmVuZGVyZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChS
ZW5kZXJUcmVlUG9zaXRpb24oKmVsZW1lbnQucmVuZGVyZXIoKSkpIDogc3RkOjpudWxsb3B0KQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuaAppbmRleCA0Njg5
YjA4ZDQyMDQ2ZTJlYzQ0ZTQ5M2IwMTk2ZTRlMGI2NDgyYTYzLi45YmY0NzViYTdiMTU4YzM2ZmE5
ODIwZDQ2MGY3NmJiZjhhMjNlODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
ZW5kZXJUcmVlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVV
cGRhdGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgUmVuZGVyVHJlZVVwZGF0ZXIgewogICAg
IHN0cnVjdCBQYXJlbnQgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50IHsgbnVsbHB0ciB9Owog
ICAgICAgICBTdHlsZTo6Q2hhbmdlIHN0eWxlQ2hhbmdlIHsgU3R5bGU6Ok5vQ2hhbmdlIH07Ci0g
ICAgICAgIE9wdGlvbmFsPFJlbmRlclRyZWVQb3NpdGlvbj4gcmVuZGVyVHJlZVBvc2l0aW9uOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclRyZWVQb3NpdGlvbj4gcmVuZGVyVHJlZVBvc2l0
aW9uOwogCiAgICAgICAgIFBhcmVudChDb250YWluZXJOb2RlJiByb290KTsKICAgICAgICAgUGFy
ZW50KEVsZW1lbnQmLCBTdHlsZTo6Q2hhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaApp
bmRleCBjZjEwYjY2YTcwODUwNGNmZmVjZjQxYzI2N2U0ZWY0NzAyZGE4OWY0Li4wYTZlNzBmMGY4
Yjg0MjdhMjMxYWJkZTEyMWVjMWE0ZGUxMGM3OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgU2NvcGUgewogICAgIGludCBtX3BlbmRpbmdT
dHlsZVNoZWV0Q291bnQgeyAwIH07CiAgICAgYm9vbCBtX2RpZFVwZGF0ZUFjdGl2ZVN0eWxlU2hl
ZXRzIHsgZmFsc2UgfTsKIAotICAgIE9wdGlvbmFsPFVwZGF0ZVR5cGU+IG1fcGVuZGluZ1VwZGF0
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFVwZGF0ZVR5cGU+IG1fcGVuZGluZ1VwZGF0ZTsKICAgICBi
b29sIG1faGFzRGVzY2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlIHsgZmFsc2UgfTsKIAogICAgIExp
c3RIYXNoU2V0PE5vZGUqPiBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2RlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAppbmRleCBiMmNiM2IzM2NhYzFiNzJiNmFkZDI0MjRjM2FiNGEyMGFhMjA1
NmM3Li5mMDQxNWZjYTMwZjljZTRjNDEwMmZhNThkN2IzNTJmYWZmODVlYzNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC00NjEsNyArNDYxLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHYKICAgICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OnRhYmluZGV4QXR0cikgewogICAgICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY2xlYXJUYWJJbmRleEV4cGxpY2l0
bHlJZk5lZWRlZCgpOwotICAgICAgICBlbHNlIGlmIChPcHRpb25hbDxpbnQ+IHRhYkluZGV4ID0g
cGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCisgICAgICAgIGVsc2UgaWYgKHN0ZDo6b3B0aW9uYWw8
aW50PiB0YWJJbmRleCA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQogICAgICAgICAgICAgc2V0
VGFiSW5kZXhFeHBsaWNpdGx5KHRhYkluZGV4LnZhbHVlKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICBjb250ZXh0RWxlbWVu
dC0+c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5
bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxl
PiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVu
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMg
aW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVl
LgogICAgIGlmIChhdXRvKiBzdHlsZUVsZW1lbnQgPSB0aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVu
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggYzliYzNhYzhhNTY2ZmJjMWIyOWZkN2Nl
MDAxMGVjMWUxZDY5NTg2MC4uYzY2NmE2YWE3YWQ2MTA4YzAyOWI2MjFhMTI1NmQ2YjU5Yzg2YTYw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgU1ZH
RWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50LCBwdWJsaWMgU1ZHTGFuZ1NwYWNlIHsKICAg
ICB2b2lkIHN5bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRy
aWJ1dGUoU1ZHRWxlbWVudCopOwogIAotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2
ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxFbGVt
ZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogCiAgICAg
c3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KTsKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9u
cyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggMGVlYWE1ZmM0M2ZhMzczNDU3NjhhYzc2ZWJi
ZDBiN2I0ZTBjNzdhMS4uZjA2NDNkMzgzNjY3YTk3YjU0ZDVkOTBhODhhZjM1MDY3NjMwNDIyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAt
MTk1LDcgKzE5NSw3IEBAIGNsYXNzIFNWR1RvT1RGRm9udENvbnZlcnRlciB7CiAKICAgICB1aW50
MzJfdCBjYWxjdWxhdGVDaGVja3N1bShzaXplX3Qgc3RhcnRpbmdPZmZzZXQsIHNpemVfdCBlbmRp
bmdPZmZzZXQpIGNvbnN0OwogCi0gICAgdm9pZCBwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBjb25zdCBTVkdHbHlwaEVsZW1l
bnQqLCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNh
bEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgT3B0aW9uYWw8RmxvYXRSZWN0PiYg
Ym91bmRpbmdCb3gpOworICAgIHZvaWQgcHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVt
ZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwgY29uc3QgU1ZHR2x5cGhFbGVtZW50Kiwg
ZmxvYXQgZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBmbG9hdCBkZWZhdWx0VmVydGljYWxBZHZh
bmNlLCBjb25zdCBTdHJpbmcmIGNvZGVwb2ludHMsIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYg
Ym91bmRpbmdCb3gpOwogCiAgICAgdHlwZWRlZiB2b2lkIChTVkdUb09URkZvbnRDb252ZXJ0ZXI6
OipGb250QXBwZW5kaW5nRnVuY3Rpb24pKCk7CiAgICAgdm9pZCBhcHBlbmRUYWJsZShjb25zdCBj
aGFyIGlkZW50aWZpZXJbNF0sIEZvbnRBcHBlbmRpbmdGdW5jdGlvbik7CkBAIC0yMjEsNyArMjIx
LDcgQEAgY2xhc3MgU1ZHVG9PVEZGb250Q29udmVydGVyIHsKIAogICAgIHZvaWQgYXBwZW5kVmFs
aWRDRkZTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKLSAgICBWZWN0b3I8Y2hhcj4gdHJhbnNjb2Rl
R2x5cGhQYXRocyhmbG9hdCB3aWR0aCwgY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdH
bHlwaEVsZW1lbnQsIE9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KSBjb25zdDsKKyAg
ICBWZWN0b3I8Y2hhcj4gdHJhbnNjb2RlR2x5cGhQYXRocyhmbG9hdCB3aWR0aCwgY29uc3QgU1ZH
RWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiYgYm91bmRpbmdCb3gpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRDb2RlcG9pbnRSYW5nZXMo
Y29uc3QgVW5pY29kZVJhbmdlcyYsIEhhc2hTZXQ8R2x5cGg+JiBnbHlwaFNldCkgY29uc3Q7CiAg
ICAgdm9pZCBhZGRDb2RlcG9pbnRzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgY29kZXBvaW50cywg
SGFzaFNldDxHbHlwaD4mIGdseXBoU2V0KSBjb25zdDsKQEAgLTExNTUsNyArMTE1NSw3IEBAIGNs
YXNzIENGRkJ1aWxkZXIgZmluYWwgOiBwdWJsaWMgU1ZHUGF0aENvbnN1bWVyIHsKICAgICAgICAg
bV9jZmZEYXRhLmFwcGVuZChyTW92ZVRvKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGJvdW5kaW5nQm94KCkgY29uc3QKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91
bmRpbmdCb3goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYm91bmRpbmdCb3g7CiAg
ICAgfQpAQCAtMTI0NiwxMSArMTI0NiwxMSBAQCBjbGFzcyBDRkZCdWlsZGVyIGZpbmFsIDogcHVi
bGljIFNWR1BhdGhDb25zdW1lciB7CiAgICAgVmVjdG9yPGNoYXI+JiBtX2NmZkRhdGE7CiAgICAg
RmxvYXRQb2ludCBtX3N0YXJ0aW5nUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBtX2N1cnJlbnQ7Ci0g
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2JvdW5kaW5nQm94OworICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBtX2JvdW5kaW5nQm94OwogICAgIGZsb2F0IG1fdW5pdHNQZXJFbVNjYWxhcjsK
IH07CiAKLVZlY3RvcjxjaGFyPiBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBo
UGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhF
bGVtZW50LCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBib3VuZGluZ0JveCkgY29uc3QKK1ZlY3Rvcjxj
aGFyPiBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lk
dGgsIGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KSBjb25zdAogewogICAgIFZlY3RvcjxjaGFy
PiByZXN1bHQ7CiAKQEAgLTEyODYsNyArMTI4Niw3IEBAIFZlY3RvcjxjaGFyPiBTVkdUb09URkZv
bnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0Vs
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnBy
b2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVs
ZW1lbnQsIGNvbnN0IFNWR0dseXBoRWxlbWVudCogZ2x5cGhFbGVtZW50LCBmbG9hdCBkZWZhdWx0
SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0
cmluZyYgY29kZXBvaW50cywgT3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpCit2b2lk
IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVt
ZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVudCwgY29uc3QgU1ZHR2x5cGhFbGVtZW50KiBn
bHlwaEVsZW1lbnQsIGZsb2F0IGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZmxvYXQgZGVmYXVs
dFZlcnRpY2FsQWR2YW5jZSwgY29uc3QgU3RyaW5nJiBjb2RlcG9pbnRzLCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KQogewogICAgIGJvb2wgb2s7CiAgICAgZmxvYXQgaG9y
aXpvbnRhbEFkdmFuY2UgPSBzY2FsZVVuaXRzUGVyRW0oZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1l
bnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6aG9yaXpfYWR2X3hB
dHRyKS50b0Zsb2F0KCZvaykpOwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgdm9pZCBTVkdUb09URkZv
bnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhP
ck1pc3NpbmcKICAgICAgICAgdmVydGljYWxBZHZhbmNlID0gZGVmYXVsdFZlcnRpY2FsQWR2YW5j
ZTsKICAgICBtX2FkdmFuY2VIZWlnaHRNYXggPSBzdGQ6Om1heChtX2FkdmFuY2VIZWlnaHRNYXgs
IHZlcnRpY2FsQWR2YW5jZSk7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdseXBoQm91bmRp
bmdCb3g7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGdseXBoQm91bmRpbmdCb3g7CiAg
ICAgYXV0byBwYXRoID0gdHJhbnNjb2RlR2x5cGhQYXRocyhob3Jpem9udGFsQWR2YW5jZSwgZ2x5
cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGdseXBoQm91bmRpbmdCb3gpOwogICAgIGlmICghcGF0
aC5zaXplKCkpIHsKICAgICAgICAgLy8gSXQncyBiZXR0ZXIgdG8gdXNlIGEgZmFsbGJhY2sgZm9u
dCByYXRoZXIgdGhhbiB1c2UgYSBmb250IHdpdGhvdXQgYWxsIGl0cyBnbHlwaHMuCkBAIC0xMzEx
LDcgKzEzMTEsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxl
bWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZwogICAgIGlmIChnbHlwaEJvdW5k
aW5nQm94KQogICAgICAgICBtX21pblJpZ2h0U2lkZUJlYXJpbmcgPSBzdGQ6Om1pbihtX21pblJp
Z2h0U2lkZUJlYXJpbmcsIGhvcml6b250YWxBZHZhbmNlIC0gZ2x5cGhCb3VuZGluZ0JveC52YWx1
ZSgpLm1heFgoKSk7CiAKLSAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0
aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5
cGhCb3VuZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOworICAgIG1f
Z2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jp
em9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlX29y
KEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOwogfQogCiB2b2lkIFNWR1RvT1RGRm9udENvbnZl
cnRlcjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgU1ZHVG9P
VEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1l
bnQmIGZvbnRFbGVtZW50KQogCiAgICAgcG9wdWxhdGVFbXB0eUdseXBoQ2hhclN0cmluZyhtX2Vt
cHR5R2x5cGhDaGFyU3RyaW5nLCBzX291dHB1dFVuaXRzUGVyRW0pOwogCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBib3VuZGluZ0JveDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91
bmRpbmdCb3g7CiAgICAgaWYgKG1fbWlzc2luZ0dseXBoRWxlbWVudCkKICAgICAgICAgcHJvY2Vz
c0dseXBoRWxlbWVudCgqbV9taXNzaW5nR2x5cGhFbGVtZW50LCBudWxscHRyLCBkZWZhdWx0SG9y
aXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIFN0cmluZygpLCBib3VuZGlu
Z0JveCk7CiAgICAgZWxzZSB7CkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBTVkdUb09URkZvbnRDb252
ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVs
ZW1lbnQpCiAgICAgICAgICAgICBwcm9jZXNzR2x5cGhFbGVtZW50KGdseXBoRWxlbWVudCwgJmds
eXBoRWxlbWVudCwgZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBkZWZhdWx0VmVydGljYWxBZHZh
bmNlLCB1bmljb2RlQXR0cmlidXRlLCBib3VuZGluZ0JveCk7CiAgICAgfQogCi0gICAgbV9ib3Vu
ZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpOworICAgIG1fYm91bmRp
bmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSk7CiAKICNpZiBQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTAxMDAwCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzIwMDg2MjIzPiBDb2NvYSBoYXMgYSBidWcgd2hlcmUgZ2x5cGgg
Ym91bmRpbmcgYm94ZXMgYXJlIG5vdCBjb3JyZWN0bHkgcmVzcGVjdGVkIGZvciBmcnVzdHVtIGN1
bGxpbmcuIFdvcmsgYXJvdW5kIHRoaXMgYnkKQEAgLTE1ODQsMTMgKzE1ODQsMTMgQEAgYm9vbCBT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OmNvbnZlcnRTVkdUb09URkZvbnQoKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1PcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29u
c3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4g
Y29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBTVkdUb09URkZvbnRDb252ZXJ0ZXIgY29udmVydGVyKGVsZW1lbnQpOwogICAgIGlmIChjb252
ZXJ0ZXIuZXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFjb252ZXJ0ZXIuY29udmVydFNWR1RvT1RGRm9udCgpKQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gY29udmVydGVyLnJlbGVhc2VSZXN1bHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgKaW5kZXggY2M1M2RlMzAwOWUwZTg3NTExMTFj
ODBlYWQ4OWFkMDUxODBhYzY3Yy4uNzc1NmU0NTI5YjY3YzBlM2FiZTI3NjQ0ZTQ5MDk1YzlkYjU4
MTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCkBA
IC0zMiw2ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRm9udEVsZW1l
bnQ7CiAKLU9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBT
VkdGb250RWxlbWVudCYpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdU
b09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDkzOGM3ZjAzNmVlYWZmZDMz
YWQyZmM1ZDJlMDk2YzNiMmJkOTI2OGMuLjEwZjY4ZmU2Y2MyNGVmYzVhZWEwNzM4ZDJlYTBhODBl
ODYyOThiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTg1NCwxNCAr
ODU0LDE0IEBAIGJvb2wgSW50ZXJuYWxzOjphcmVUaW1lcnNUaHJvdHRsZWQoKSBjb25zdAogICAg
IHJldHVybiBjb250ZXh0RG9jdW1lbnQoKS0+aXNUaW1lclRocm90dGxpbmdFbmFibGVkKCk7CiB9
CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9w
dGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiB2YWx1ZSkKK3ZvaWQgSW50ZXJuYWxzOjpz
ZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3I+IHZhbHVlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgZG9jdW1lbnQtPnBh
Z2UoKS0+c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShOdWxsb3B0KTsKKyAgICAg
ICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShz
dGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzUsMTUgKzg3NSwx
NSBAQCB2b2lkIEludGVybmFsczo6c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShP
cHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdgogICAgIH0KIH0KIAotT3B0aW9uYWw8SW50ZXJu
YWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdC
ZWhhdmlvck92ZXJyaWRlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRo
cm90dGxpbmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKCkgY29uc3QKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQo
KTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVo
YXZpb3IgPSBkb2N1bWVudC0+cGFnZSgpLT5ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRl
KCk7CiAgICAgaWYgKCFiZWhhdmlvcikKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc3dpdGNoIChiZWhhdmlvci52YWx1ZSgp
KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcjo6UmVzcG9uc2l2
ZToKQEAgLTg5Miw3ICs4OTIsNyBAQCBPcHRpb25hbDxJbnRlcm5hbHM6OkV2ZW50VGhyb3R0bGlu
Z0JlaGF2aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yTwogICAgICAgICBy
ZXR1cm4gSW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcjo6VW5yZXNwb25zaXZlOwog
ICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIFN0cmluZyBJbnRlcm5hbHM6OnZpc2libGVQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjUwZmQwNWFhYWY4ODU4ZGY3NWMx
MmNiNDU5MmE2MWQ4Nzg5ZjMxNi4uMTAwZTgyYzczMDg5MzYyYWUxMDVhZGY2MjE1YTg3ZWU1NWM2
ZmI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMjIsOCArMTIyLDggQEAg
Y2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJp
dmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb24KICAgICBib29sIGFyZVRpbWVyc1Rocm90dGxlZCgpIGNv
bnN0OwogCiAgICAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7IFJlc3BvbnNpdmUsIFVu
cmVzcG9uc2l2ZSB9OwotICAgIHZvaWQgc2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlk
ZShPcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4pOwotICAgIE9wdGlvbmFsPEV2ZW50
VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKHN0ZDo6b3B0
aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV2ZW50
VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29u
c3Q7CiAKICAgICAvLyBTcGF0aWFsIE5hdmlnYXRpb24gdGVzdGluZy4KICAgICBFeGNlcHRpb25P
cjx1bnNpZ25lZD4gbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDEyODg0Y2ZkMTAwMmRlNjY2ZjBmNTE2YTA2OGU5
M2FhNGE4ZjA5NzEuLjE5ZDhkNTYyYmYyODRjMDA5NzYxMzFjN2U5YjZhMzU5YzAzNDYxMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBXb3JrZXIgZmlu
YWwgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHByaXZh
dGUgV29yawogICAgIFJlZlB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fc2NyaXB0TG9hZGVyOwog
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogbV9j
b250ZXh0UHJveHk7IC8vIFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0g
dGhyZWFkIHNodXRkb3duLgotICAgIE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycz4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CisgICAg
c3RkOjpvcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOwogICAgIGJvb2wgbV9zaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBmYWxzZSB9OwogICAgIEpTQzo6UnVu
dGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCmluZGV4IDUwOWE5YTljZDcxMGI0NWJmYzBjYjllZTkxYTIyZjEzN2NmNjhiN2EuLjBj
YTczODllYmEyN2Y5YzdiOWFhZGZlN2Q1ZTUyNDFiZTEwNzc3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDc2LDEwICs0NzYsMTAgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmlu
ZyYgdXJsLAogICAgIHJldHVybiBvcGVuKG1ldGhvZCwgdXJsV2l0aENyZWRlbnRpYWxzLCBhc3lu
Yyk7CiB9CiAKLU9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJl
cGFyZVRvU2VuZCgpCitzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVx
dWVzdDo6cHJlcGFyZVRvU2VuZCgpCiB7Ci0gICAgLy8gQSByZXR1cm4gdmFsdWUgb3RoZXIgdGhh
biBOdWxsb3B0IG1lYW5zIHdlIHNob3VsZCBub3QgdHJ5IHRvIHNlbmQsIGFuZCB3ZSBzaG91bGQg
cmV0dXJuIHRoYXQgdmFsdWUgdG8gdGhlIGNhbGxlci4KLSAgICAvLyBOdWxsb3B0IG1lYW5zIHdl
IGFyZSByZWFkeSB0byBzZW5kIGFuZCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgc2VuZCBhbGdv
cml0aG0uCisgICAgLy8gQSByZXR1cm4gdmFsdWUgb3RoZXIgdGhhbiBzdGQ6Om51bGxvcHQgbWVh
bnMgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc2VuZCwgYW5kIHdlIHNob3VsZCByZXR1cm4gdGhhdCB2
YWx1ZSB0byB0aGUgY2FsbGVyLgorICAgIC8vIHN0ZDo6bnVsbG9wdCBtZWFucyB3ZSBhcmUgcmVh
ZHkgdG8gc2VuZCBhbmQgc2hvdWxkIGNvbnRpbnVlIHdpdGggdGhlIHNlbmQgYWxnb3JpdGhtLgog
CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb25Pcjx2b2lkPiB7IH07CkBAIC01MDEsNyArNTAxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9u
T3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKICAgICB9CiAKICAgICBt
X2Vycm9yID0gZmFsc2U7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRG9jdW1l
bnQmIGRvY3VtZW50KQpAQCAtOTgwLDcgKzk4MCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUpCiAKICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5zaHJpbmtUb0ZpdCgpOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBk
ZWNvZGVkVGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQ7CiAgICAg
aWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKICAgICAgICAgZGVjb2RlZFRleHQgPSBtX3Jl
c3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKTsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmcoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCB0aGlzLCBpZGVudGlmaWVyLCBkZWNvZGVkVGV4dCwgbV91cmwsIG1fbGFzdFNlbmRVUkws
IG1fbGFzdFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RTZW5kQ29sdW1uTnVtYmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggYWY2NTBmZTc5M2Q5YzhkYjU4MDg1OTkyODFiZGY4
MDBiZTUzYjc0OS4uMDRhYmMwOWRkN2Y2YmI4YjhhOTVhNTI0MTI3YzE0NjhjZmRhYzI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBY
TUxIdHRwUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0Piwg
cHVibGljIFhNTEh0dHBSZQogCiAgICAgYm9vbCByZXNwb25zZUlzWE1MKCkgY29uc3Q7CiAKLSAg
ICBPcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4gcHJlcGFyZVRvU2VuZCgpOworICAgIHN0ZDo6
b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IHByZXBhcmVUb1NlbmQoKTsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqLCBzaXplX3QpOwogCiAgICAgdm9p
ZCBjaGFuZ2VTdGF0ZShTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
RE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUhU
TUxPcHRpb25zQ29sbGVjdGlvbi5tbQppbmRleCA1MDNmZjYyYzZmNjkxM2NjOTUwOGRlZDg4YzBj
MGI2MzUwMTI3YjRhLi5mZGZhNmU4ZmMzM2E3YjliZDYyYmE4MGNjMDk1NTdiZjJhYmJlZmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24u
bW0KQEAgLTkwLDcgKzkwLDcgQEAgLSAodm9pZClhZGQ6KERPTUhUTUxPcHRpb25FbGVtZW50ICop
b3B0aW9uIGluZGV4Oih1bnNpZ25lZClpbmRleAogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKICAgICBpZiAoIW9wdGlvbikKICAgICAgICAgcmFpc2VUeXBlRXJyb3JF
eGNlcHRpb24oKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+YWRkKGNvcmUob3B0aW9uKSwg
T3B0aW9uYWw8V2ViQ29yZTo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MRWxlbWVudE9ySW50
PiB7IHN0YXRpY19jYXN0PGludD4oaW5kZXgpIH0pKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1Q
TC0+YWRkKGNvcmUob3B0aW9uKSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIVE1MT3B0aW9uc0Nv
bGxlY3Rpb246OkhUTUxFbGVtZW50T3JJbnQ+IHsgc3RhdGljX2Nhc3Q8aW50PihpbmRleCkgfSkp
OwogfQogCiAtICh2b2lkKXJlbW92ZToodW5zaWduZWQpaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQppbmRleCAzNmRiYmVjNjI0ZWViMDU0ZjA2MmEwMjg0MTAwMjliZjA4ZTQyOWQ5
Li5iOWFiOGEwZGRkY2M3NjQ3ZGE3ODYzMzk4NDIzMjdjYTVjN2E5N2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCkBAIC04ODksNyArODg5LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmV2YWx1YXRlKHVpbnQzMl90IG9iamVjdElELCBjb25zdCBTdHJpbmcm
IHNjcmkKICAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCh2bSwgZnJhbWUt
PnNjcmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKSk7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBVc2VyR2VzdHVyZUluZGlj
YXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBOdWxsb3B0KTsKKyAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gc3RkOjpv
cHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1
YXRlKGV4ZWMsIG1ha2VTb3VyY2Uoc2NyaXB0KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGVlYWFiYTgyNDgx
ZTczOTBkMzYyZThiM2ExNDJhZTUyMjAzMjI0YWIuLmQ5ZTU4ZTMzNjk0ZDUwY2MxZjY3NmIwNGZj
MWY5OGUzZWZhNGJkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC02NjYsNyArNjY2LDcgQEAgLSAoQk9PTClzZW5kRXZl
bnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJPT0wpZXZlbnRJc0RyYXdSZWN0CiAgICAgQVNT
RVJUKF9ldmVudEhhbmRsZXIpOwogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpKTsKLSAgICAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihfZXZlbnRIYW5kbGVyLT5jdXJy
ZW50RXZlbnRJc1VzZXJHZXN0dXJlKCkgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVT
dGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IE51bGxvcHQpOworICAgICAgICBVc2VyR2Vz
dHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVu
dElzVXNlckdlc3R1cmUoKSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3Rh
dGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgICAgICBhY2Nl
cHRlZEV2ZW50ID0gW19wbHVnaW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+ZXZlbnQocGx1
Z2luLCBldmVudCk7CiAgICAgfQogICAgIFtzZWxmIGRpZENhbGxQbHVnSW5GdW5jdGlvbl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCAzNjJkYzZkMzRjNTJjMDljZDQ1MGI5ZWU2YWYyMDY5Y2FhZWU0M2Ri
Li5hMTFmYjg4YmRiZDkxYmFkOGZkOGRmOWZkMjkyZjgyNTg4ZmM0NWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVJY29uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRj
aERpZENvbW1pdExvYWQoT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2Fk
KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGYwYjMxMmZiZDMwYzFmMjcxYjkwM2Q3
MDQzNzc1MmIzMGY1M2IzM2YuLmM0OWQ1MWI5Zjg1YzI3MWZlM2NiZTQ4Y2IyOGFkYzJmMDYwMWNh
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYgdGkKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpk
aWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1f
d2ViRnJhbWUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PikKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0lu
c2VjdXJlQ29udGVudD4pCiB7CiAgICAgLy8gVGVsbCB0aGUgY2xpZW50IHdlJ3ZlIGNvbW1pdHRl
ZCB0aGlzIFVSTC4KICAgICBBU1NFUlQoW21fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZp
ZXcgZG9jdW1lbnRWaWV3XSAhPSBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAppbmRl
eCBjZmZjMTEzYWRlYjM3NzQ0MGE0NzhiZjEwZjk5ZDgwYzc1NTkwMDMwLi4wMjEwMDY0YjU3NDZh
YjVlN2U4OTJhZWQyMGQyYWFjOGI2NmExZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
aApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZQogICAgIHZvaWQgb3Bl
blBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hp
cHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRl
UGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdU
b3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0
U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFu
ZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhYm9ydFBheW1l
bnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95
ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCA4MGI0Zjdm
NGZkMmNlNWYxYmJjMWFhYWUwMzlhZDZhMmViYTNmODI2Li5lYmZkODM1NDBmMTIyYmU3ZTljZmY3
OWFmNThkMjdmMDcyYjlhODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC03
MSwxNSArNzEsMTUgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW0KIHsKIH0KIAotdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KQogewogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6U2hpcHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6
OlRvdGFsQW5kTGluZUl0ZW1zPikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpj
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGlu
Z01ldGhvZD4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFu
ZExpbmVJdGVtcz4pCiB7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpj
b21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmlu
ZGV4IDE0ZjNmNDRmZjZmMjI4YzU5MmYwMjA4Yjk3Zjg1YjlkMzEzZDQ4ZTkuLjRmNDI0ODM3ZGVh
OGE5YTJjNGQ1N2NhZjZjODNkYWFmODRlNzJhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC04OCw3ICs4OCw3
IEBAIC0gKE5TU3RyaW5nICopc3RyaW5nVmFsdWUKIAogLSAodW5zaWduZWQgc2hvcnQpcG9ydAog
ewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUp
LT5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0
eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBGSVhNRTog
T3ZlcnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92ZXJyaWRpbmcgaGFzaCB3aWxsIGNhdXNlIHRy
b3VibGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBhbiBOU1NldCBvciBpcyB0aGUga2V5IGluIGFu
IE5TRGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDg5MjMyMGMxMWQ4NDFmNGEwYjkxZjMxN2YzYTgzNGRmMGFjMTEyNzcuLmQyODlmMWE3YzVl
ZDg5NzQzZDA4NzEwMzM0YjcyYTlmMWYwN2NhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIC0gKHZvaWQpc2V0TWVudUNvbnRy
b2xsZXI6KFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlciopbWVudUNvbnRyb2xsZXI7CiAt
ICh2b2lkKWZvcndhcmRDb250ZXh0TWVudUFjdGlvbjooaWQpc2VuZGVyOwogQGVuZAogCi1zdGF0
aWMgT3B0aW9uYWw8Q29udGV4dE1lbnVBY3Rpb24+IHRvQWN0aW9uKE5TSW50ZWdlciB0YWcpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxDb250ZXh0TWVudUFjdGlvbj4gdG9BY3Rpb24oTlNJbnRlZ2Vy
IHRhZykKIHsKICAgICBpZiAodGFnID49IENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcgJiYg
dGFnIDw9IENvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWcpIHsKICAgICAgICAgLy8gSnVzdCBw
YXNzIHRoZXNlIHRocm91Z2guCkBAIC0zNTcsMTQgKzM1NywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8
Q29udGV4dE1lbnVBY3Rpb24+IHRvQWN0aW9uKE5TSW50ZWdlciB0YWcpCiAgICAgY2FzZSBXZWJN
ZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgogICAgICAgICByZXR1cm4gQ29udGV4dE1l
bnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiAgICAgfQotICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxOU0ludGVn
ZXI+IHRvVGFnKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PE5TSW50ZWdlcj4gdG9UYWcoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRj
aCAoYWN0aW9uKSB7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbjoKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c6CiAgICAgICAgIHJldHVy
biBXZWJNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c7CkBAIC01NDcsNyArNTQ3LDcgQEAg
c3RhdGljIE9wdGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9u
KQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgV2ViTWVudVRhcmdl
dCogdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
ZGFkZDNiNzQ1ZjdmNGZiNzFmNWQzYWE2ZjllZDA3OGM5YjgyNjAyOC4uMjA3YTk2MTNjY2E4ZDlj
MTAzN2NmYjRkMWIxZTQyYTY4NTE5NTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3Jt
UmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIFVSTCByZXF1ZXN0VVJMID0gcmVx
dWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIFN0
cmluZyBqc1N0cmluZyA9IHNjcmlwdFN0cmluZ0lmSmF2YVNjcmlwdFVSTChyZXF1ZXN0VVJMKTsK
IAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hv
dWxkQWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogTnVsbG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpID8gc3RkOjpv
cHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSA6IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBpZiAoanNTdHJpbmcuaXNOdWxsKCkpIHsKICAgICAg
ICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0LCBjcmVhdGUgYSBzdHJlYW0g
Zm9yIGl0LiBvdGhlcndpc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNzQyN2UwYzJmMTM4ZTM3
MmMyNDUxYzg2ZDM3NTRiZGJiODIxNWE3OS4uMTU2MTg1Mjc2MzBlM2IyMDkwZmEzMGM0ODk1ODUz
ZmRmMjMwMTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mIHRpCiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZl
VGl0bGUod2ViVmlldywgQlN0cmluZyh0aXRsZS5zdHJpbmcoKSksIG1fd2ViRnJhbWUpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9u
YWw8SGFzSW5zZWN1cmVDb250ZW50PikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4pCiB7CiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8
SVdlYkZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IGYyNzJlNjBjNDRiOTBiZTEzODdiNzM0ZDdmYmQyMmEzMTU5ZWM5YjAuLjhjYTliOWRlY2Qx
OWNlYzk3ZTRiYTdkM2Q1MTY4NjRjZTE4OWVlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtODYsNyAr
ODYsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6OgogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4pIG92
ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERp
ZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9h
ZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4
IDRiYTQ1NmE4Y2VlNWI3M2NmOTRhYmJiNzJmMTRiZTcyZGZjY2FmN2MuLjkwNmNiYmE1MWRjNzU0
OWJiNzNlZGYyNTczZjJhZmFlMDIzZGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2lu
Ojpwb3J0KF9PdXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdp
bi0+cG9ydCgpLnZhbHVlT3IoMCk7CisgICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBv
cnQoKS52YWx1ZV9vcigwKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKaW5kZXggMzEyNTg4ODMz
NTUwZWExZjgyNDdjMzdjOWZkMzk3ZTg1YThjMWQ0NC4uOWJmYTRlYzY0Yzg0NzBjN2RiZWJjZTRm
ZmUzYmZjMDRjODU2M2I5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNw
b25zZUNvCiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBpZiAocmVzcG9uc2UuaXNIdHRwVmVy
c2lvbjBfOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsK
ICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRl
V2l0aEVycm9yKHsgU3RyaW5nKCksIDAsIHVybCwgIkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1
cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVz
aW5nIEhUVFAvMC45LiIgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaAppbmRleCA3ZDE0YzhjMmFhNjM4MzZhNzAxZGQxNGIyYzc4NzNkNThmMzJkZTAzLi43
NjZiZDUwZGNjODk5MzQxMzU2MjBmYmJmZDVlMWU5YWVkMDZmMzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFz
cyBOZXR3b3JrTG9hZCBmaW5hbCA6CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1f
cGFyYW1ldGVyczsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFJlZlB0cjxOZXR3b3Jr
RGF0YVRhc2s+IG1fdGFzazsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZT4gbV9jaGFsbGVuZ2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0Vf
QVVUSF9DQUxMQkFDSykKICAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBtX2NoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCA0ZjM5ODFiYWJjN2MyYzAz
YThjZjJjN2I5OTU2NGU4MGZkNDViNjk3Li42Yjk5NDc2ZWM4NjY1NWY5YTRiYWUxNWE1NzhkN2I1
NDVhMmE1NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgYm9vbCBjYWNo
ZVBvbGljeUFsbG93c0V4cGlyZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
cG9saWN5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNF
eHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVzdGFtcCwgT3B0aW9uYWw8c3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGUpCitzdGF0aWMgYm9vbCByZXNwb25zZUhhc0V4
cGlyZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZXN0YW1wLCBzdGQ6Om9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heFN0YWxlKQogewogICAgIGlmIChyZXNwb25zZS5j
YWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUNvZGVycy5oCmluZGV4IDNlOWUyMjhhNDEzMWU0N2NkYzQxYmE5ODg3ODU4MzUwMWMzM2I3NjAu
LjQxNzFhY2UwOWQxODYzZDhlMmM5Y2Q3YTZmOTBhZmMwOTc0MGVkNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVy
cy5oCkBAIC04MCw4ICs4MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJlcCwgdHlwZW5hbWUgUGVy
aW9kPiBzdHJ1Y3QgQ29kZXI8c3RkOjpjaHJvbm86OmR1cmF0aW9uPFJlcCwKICAgICB9CiB9Owog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29kZXI8T3B0aW9uYWw8VD4+IHsKLSAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3B0aW9uYWw8VD4mIG9w
dGlvbmFsKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvZGVyPHN0ZDo6b3B0aW9uYWw8
VD4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewogICAgICAgICBpZiAoIW9wdGlvbmFsKSB7
CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwpAQCAtOTIsMTQgKzkyLDE0IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxUPj4gewogICAgICAgICBlbmNv
ZGVyIDw8IG9wdGlvbmFsLnZhbHVlKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBPcHRpb25hbDxUPiYgb3B0aW9uYWwpCisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIHN0ZDo6b3B0aW9uYWw8VD4mIG9wdGlvbmFs
KQogICAgIHsKICAgICAgICAgYm9vbCBpc0VuZ2FnZWQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNFbmdhZ2VkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAg
ICAgICAgIGlmICghaXNFbmdhZ2VkKSB7Ci0gICAgICAgICAgICBvcHRpb25hbCA9IE51bGxvcHQ7
CisgICAgICAgICAgICBvcHRpb25hbCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCAzMTNmOGRh
NGNjYjBlNzQwMGQ0N2EwYWIyZWNkMDlmYWJhMGJkOTFmLi4zMWFlNDhmZTVhZDJkOTdkYjZiMWNm
Njg0N2EyZWY4NGMyMGQwN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBA
IHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKICAgICByZXR1cm4gc2FsdDsKIH0KIAotT3B0aW9uYWw8
U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxT
YWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYXV0byBjcGF0
aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBhdXRvIGZk
ID0gb3BlbihjcGF0aC5kYXRhKCksIE9fUkRPTkxZLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAppbmRleCA4ZjU0
ZjBlYmRmZjEwN2JhNTgwYmQ1YzIyYjg4YWFkZjM3Y2NmMzc4Li43MjQ2MDhkODc3YWE1YTUxZDQ2
YmFiYzk3NDcxODMwZDJhZDM2MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCkBAIC0xNTksNyArMTU5LDcgQEAg
RGF0YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgpOwogCiB1c2luZyBTYWx0ID0gc3RkOjphcnJh
eTx1aW50OF90LCA4PjsKIAotT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKK3N0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiwgY29uc3Qg
U2FsdCYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCmluZGV4IGYyNjIyOWQwZTBhOWE3N2ExNzZhZWY0MTE5ZGM0ZTdkODQ4OWI0MTguLmE0
MzU5ZjNiMDE3YzQ0MTczMWFjODllYjg3N2ZlZTJmMmM1N2IxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6RXhwaXJpbmdFbnRyeSB7CiBjbGFzcyBTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRyeSA6IHByaXZhdGUgRXhwaXJpbmdFbnRy
eSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUHJlbG9hZGVk
RW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgT3B0aW9uYWw8UmVzb3VyY2VSZXF1
ZXN0PiYmIHNwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCisgICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBlbnRyeSwgc3RkOjpvcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgc3Bl
Y3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgbGlmZXRp
bWVSZWFjaGVkSGFuZGxlcikKICAgICAgICAgOiBFeHBpcmluZ0VudHJ5KFdURk1vdmUobGlmZXRp
bWVSZWFjaGVkSGFuZGxlcikpCiAgICAgICAgICwgbV9lbnRyeShXVEZNb3ZlKGVudHJ5KSkKICAg
ICAgICAgLCBtX3NwZWN1bGF0aXZlVmFsaWRhdGlvblJlcXVlc3QoV1RGTW92ZShzcGVjdWxhdGl2
ZVZhbGlkYXRpb25SZXF1ZXN0KSkKQEAgLTE0NSwxMiArMTQ1LDEyIEBAIGNsYXNzIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OlByZWxvYWRlZEVudHJ5IDogcHJpdmF0ZSBFeHBpcmluZ0VudHJ5IHsK
ICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9lbnRyeSk7CiAgICAgfQogCi0gICAgY29uc3QgT3B0
aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYgcmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYgcmV2YWxpZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQogICAgIGJvb2wgd2FzUmV2YWxp
ZGF0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsg
fQogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbV9lbnRyeTsKLSAgICBP
cHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVzdD4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRp
b25SZXF1ZXN0OwogfTsKIAogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0Zy
YW1lTG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdGcmFtZUxvYWQ+IHsKQEAgLTM4MCw3
ICszODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25z
dCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZQogICAgICAgICBwZW5kaW5nRnJhbWVM
b2FkLT5yZWdpc3RlclN1YnJlc291cmNlTG9hZChyZXF1ZXN0LCByZXNvdXJjZUtleSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgT3B0aW9u
YWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3QpCit2b2lkIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
ZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UmVzb3Vy
Y2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKGVudHJ5KTsK
ICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKaW5kZXggNDI1NTIzNmQ5NTRiMmQ1MmM2YmU0
NzM1NGQ5MWZiMGQzNzJjZTY4MS4uZGQ2MDZkNTY0MTgyMWIzODU2NjNhMjZmYzVhMmY2NDlmYzY4
ZTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaApA
QCAtNTcsNyArNTcsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyIHsKIHByaXZhdGU6
CiAgICAgY2xhc3MgUHJlbG9hZGVkRW50cnk7CiAKLSAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IE51bGxvcHQp
OworICAgIHZvaWQgYWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29u
c3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiYmIHJldmFsaWRhdGlvblJlcXVlc3QgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgcHJlbG9h
ZEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIGNvbnN0IEdsb2JhbEZy
YW1lSUQmKTsKICAgICB2b2lkIHJldHJpZXZlRW50cnlGcm9tU3RvcmFnZShjb25zdCBLZXkmLCBS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgcmV2YWxpZGF0ZUVudHJ5KHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIGNvbnN0IEdsb2Jh
bEZyYW1lSUQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggZThkYzY0M2M3ZjI0
NTJiYTlkYzUzM2Y1MThlMWZmYmE5OTg4ZDUxYi4uMTBhNTIwM2VmZDgxODBlMGFjYTM0YmU1NGRm
NTI1ODJmNTljOTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZE5vdFVzaW5nQ2FjaGVGb3JSZXF1ZXN0KHVp
bnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZQogICAgIEFTU0VSVChyZXRyaWV2ZURlY2lz
aW9uICE9IFJldHJpZXZlRGVjaXNpb246Olllcyk7CiAKICAgICBhdXRvIGhhc2ggPSBrZXkuaGFz
aEFzU3RyaW5nKCk7Ci0gICAgcXVlcnlXYXNFdmVyUmVxdWVzdGVkKGhhc2gsIE5lZWRVbmNhY2hl
ZFJlYXNvbjo6Tm8sIFt0aGlzLCBoYXNoLCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKSwgd2Vi
UGFnZUlELCByZXRyaWV2ZURlY2lzaW9uXShib29sIHdhc0V2ZXJSZXF1ZXN0ZWQsIGNvbnN0IE9w
dGlvbmFsPFN0b3JlRGVjaXNpb24+JikgeworICAgIHF1ZXJ5V2FzRXZlclJlcXVlc3RlZChoYXNo
LCBOZWVkVW5jYWNoZWRSZWFzb246Ok5vLCBbdGhpcywgaGFzaCwgcmVxdWVzdFVSTCA9IHJlcXVl
c3QudXJsKCksIHdlYlBhZ2VJRCwgcmV0cmlldmVEZWNpc2lvbl0oYm9vbCB3YXNFdmVyUmVxdWVz
dGVkLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JlRGVjaXNpb24+JikgewogICAgICAgICBpZiAo
d2FzRXZlclJlcXVlc3RlZCkgewogICAgICAgICAgICAgU3RyaW5nIGRpYWdub3N0aWNLZXkgPSBy
ZXRyaWV2ZURlY2lzaW9uVG9EaWFnbm9zdGljS2V5KHJldHJpZXZlRGVjaXNpb24pOwogICAgICAg
ICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgd2ViUGFnZUlEICUiIFBS
SXU2NCAiOiAlcyB3YXMgcHJldmlvdXNseSByZXF1ZXN0ZWQgYnV0IHdlIGFyZSBub3QgdXNpbmcg
dGhlIGNhY2hlLCByZWFzb246ICVzIiwgd2ViUGFnZUlELCByZXF1ZXN0VVJMLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpLCBkaWFnbm9zdGljS2V5LnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjU2LDcgKzI1
Niw3IEBAIHN0YXRpYyBTdHJpbmcgc3RvcmVEZWNpc2lvblRvRGlhZ25vc3RpY0tleShTdG9yZURl
Y2lzaW9uIHN0b3JlRGVjaXNpb24pCiB2b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZhbEZh
aWx1cmUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGF1dG8gaGFzaCA9IGtleS5oYXNoQXNT
dHJpbmcoKTsKLSAgICBxdWVyeVdhc0V2ZXJSZXF1ZXN0ZWQoaGFzaCwgTmVlZFVuY2FjaGVkUmVh
c29uOjpZZXMsIFt0aGlzLCBoYXNoLCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKSwgd2ViUGFn
ZUlEXShib29sIHdhc1ByZXZpb3VzbHlSZXF1ZXN0ZWQsIGNvbnN0IE9wdGlvbmFsPFN0b3JlRGVj
aXNpb24+JiBzdG9yZURlY2lzaW9uKSB7CisgICAgcXVlcnlXYXNFdmVyUmVxdWVzdGVkKGhhc2gs
IE5lZWRVbmNhY2hlZFJlYXNvbjo6WWVzLCBbdGhpcywgaGFzaCwgcmVxdWVzdFVSTCA9IHJlcXVl
c3QudXJsKCksIHdlYlBhZ2VJRF0oYm9vbCB3YXNQcmV2aW91c2x5UmVxdWVzdGVkLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFN0b3JlRGVjaXNpb24+JiBzdG9yZURlY2lzaW9uKSB7CiAgICAgICAgIGlm
ICh3YXNQcmV2aW91c2x5UmVxdWVzdGVkKSB7CiAgICAgICAgICAgICBTdHJpbmcgZGlhZ25vc3Rp
Y0tleSA9IHN0b3JlRGVjaXNpb25Ub0RpYWdub3N0aWNLZXkoc3RvcmVEZWNpc2lvbi52YWx1ZSgp
KTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHdlYlBh
Z2VJRCAlIiBQUkl1NjQgIjogJXMgd2FzIHByZXZpb3VzbHkgcmVxdWVzdCBidXQgaXMgbm90IGlu
IHRoZSBjYWNoZSwgcmVhc29uOiAlcyIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSwgZGlhZ25vc3RpY0tleS51dGY4KCkuZGF0YSgpKTsKQEAgLTM1MSw3ICsz
NTEsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnF1ZXJ5V2FzRXZlclJlcXVlc3RlZChjb25zdCBTdHJp
bmcmIGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbiBuZQogICAgIC8vIFF1ZXJ5IHBlbmRpbmcgd3Jp
dGVzIGZpcnN0LgogICAgIGJvb2wgd2FzQWxyZWFkeVJlcXVlc3RlZCA9IG1faGFzaGVzVG9BZGQu
Y29udGFpbnMoaGFzaCk7CiAgICAgaWYgKHdhc0FscmVhZHlSZXF1ZXN0ZWQgJiYgbmVlZFVuY2Fj
aGVkUmVhc29uID09IE5lZWRVbmNhY2hlZFJlYXNvbjo6Tm8pIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSwgTnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUs
IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5lZWRVbmNh
Y2hlZFJlYXNvbiA9PSBOZWVkVW5jYWNoZWRSZWFzb246OlllcyAmJiBtX3N0b3JlRGVjaXNpb25z
VG9BZGQuY29udGFpbnMoaGFzaCkpIHsKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIFN0YXRpc3Rp
Y3M6OnF1ZXJ5V2FzRXZlclJlcXVlc3RlZChjb25zdCBTdHJpbmcmIGhhc2gsIE5lZWRVbmNhY2hl
ZFJlYXNvbiBuZQogICAgIG1fYWN0aXZlUXVlcmllcy5hZGQoV1RGTW92ZShldmVyUmVxdWVzdGVk
UXVlcnkpKTsKICAgICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCB3
YXNBbHJlYWR5UmVxdWVzdGVkLCAmcXVlcnldICgpIG11dGFibGUgewogICAgICAgICBXZWJDb3Jl
OjpTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50
ZXI7Ci0gICAgICAgIE9wdGlvbmFsPFN0b3JlRGVjaXNpb24+IHN0b3JlRGVjaXNpb247CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4gc3RvcmVEZWNpc2lvbjsKICAgICAgICAg
aWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKICAgICAgICAgICAgIGlmICghd2FzQWxyZWFkeVJl
cXVlc3RlZCkgewogICAgICAgICAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFsKCJTRUxFQ1QgaGFzaCBGUk9NIEFscmVhZHlS
ZXF1ZXN0ZWQgV0hFUkUgaGFzaD0/IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oCmluZGV4IGNj
MjlmYWU3Y2ZiOWZlMDY0ODdlMGI2MmIxNjY1YjRjNTA1Y2VmYWEuLmI2N2MyNjBlMTk0ZGU4MzBl
YmUzMWJjODkyM2RkNzA4MDczNDFlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmgKQEAgLTY2
LDcgKzY2LDcgQEAgY2xhc3MgU3RhdGlzdGljcyB7CiAgICAgdm9pZCBhZGRTdG9yZURlY2lzaW9u
c1RvRGF0YWJhc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIE5ldHdvcmtDYWNoZTo6U3RvcmVEZWNp
c2lvbj4mKTsKICAgICB2b2lkIHdyaXRlVGltZXJGaXJlZCgpOwogCi0gICAgdHlwZWRlZiBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGJvb2wgd2FzRXZlclJlcXVlc3RlZCwgY29uc3QgT3B0aW9uYWw8U3Rv
cmVEZWNpc2lvbj4mKT4gUmVxdWVzdGVkQ29tcGxldGlvbkhhbmRsZXI7CisgICAgdHlwZWRlZiBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgd2FzRXZlclJlcXVlc3RlZCwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTdG9yZURlY2lzaW9uPiYpPiBSZXF1ZXN0ZWRDb21wbGV0aW9uSGFuZGxlcjsKICAgICBl
bnVtIGNsYXNzIE5lZWRVbmNhY2hlZFJlYXNvbiB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHF1ZXJ5
V2FzRXZlclJlcXVlc3RlZChjb25zdCBTdHJpbmcmLCBOZWVkVW5jYWNoZWRSZWFzb24sIFJlcXVl
c3RlZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgbWFya0FzUmVxdWVzdGVkKGNvbnN0
IFN0cmluZyYgaGFzaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDA1YTNkMWM2MWY2MzBj
NjFhNDVlNDc0MjhhZWJjZThhMmYyMzJlNmMuLmIwNmIxY2Y4NmE4NWQ0NDFkYWMxN2M4MzU1MDNm
NWYwM2NkZWMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAg
c3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURhdGEoY29uc3QgUmVjb3JkTWV0YURhdGEmIG1l
dGFEYXRhKQogICAgIHJldHVybiBEYXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAotT3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IFN0b3JhZ2U6OnN0b3Jl
Qm9keUFzQmxvYihXcml0ZU9wZXJhdGlvbiYgd3JpdGVPcGVyYXRpb24pCitzdGQ6Om9wdGlvbmFs
PEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdlOjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRp
b24mIHdyaXRlT3BlcmF0aW9uKQogewogICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvcktl
eSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIE9wdGlv
bmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdlOjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVy
YXRpb24mIHdyaXRlT3BlcmF0CiAgICAgcmV0dXJuIGJsb2I7CiB9CiAKLURhdGEgU3RvcmFnZTo6
ZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6
QmxvYj4gYmxvYikKK0RhdGEgU3RvcmFnZTo6ZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVj
b3JkLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBibG9iKQogewogICAgIEFTU0VS
VCghYmxvYiB8fCBieXRlc0VxdWFsKGJsb2IudmFsdWUoKS5kYXRhLCByZWNvcmQuYm9keSkpOwog
CkBAIC03MTksNyArNzE5LDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4gd3JpdGVPcGVyYXQKICAgICAgICAgKyt3
cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIAogICAgICAgICBib29sIHNob3VsZFN0b3JlQXNC
bG9iID0gc2hvdWxkU3RvcmVCb2R5QXNCbG9iKHdyaXRlT3BlcmF0aW9uLnJlY29yZC5ib2R5KTsK
LSAgICAgICAgYXV0byBibG9iID0gc2hvdWxkU3RvcmVBc0Jsb2IgPyBzdG9yZUJvZHlBc0Jsb2Io
d3JpdGVPcGVyYXRpb24pIDogTnVsbG9wdDsKKyAgICAgICAgYXV0byBibG9iID0gc2hvdWxkU3Rv
cmVBc0Jsb2IgPyBzdG9yZUJvZHlBc0Jsb2Iod3JpdGVPcGVyYXRpb24pIDogc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGF1dG8gcmVjb3JkRGF0YSA9IGVuY29kZVJlY29yZCh3cml0ZU9wZXJhdGlv
bi5yZWNvcmQsIGJsb2IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKaW5kZXggZWMyZmIxNDQ4MWIxMDYy
ZDJlNjE2NmJhZDQ4NzUwODNmYjFkNjFiOC4uMmU5YzI1MTg3ZTdhNTQwYzMwMzQ5ZTNlY2NiMmMx
Mzg0YWJhYzFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaApAQCAtMTI0LDggKzEyNCw4IEBAIGNsYXNz
IFN0b3JhZ2UgewogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nV3JpdGVPcGVyYXRpb25zKCk7CiAg
ICAgdm9pZCBmaW5pc2hXcml0ZU9wZXJhdGlvbihXcml0ZU9wZXJhdGlvbiYpOwogCi0gICAgT3B0
aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IHN0b3JlQm9keUFzQmxvYihXcml0ZU9wZXJhdGlvbiYp
OwotICAgIERhdGEgZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYsIE9wdGlvbmFsPEJsb2JTdG9y
YWdlOjpCbG9iPik7CisgICAgc3RkOjpvcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gc3RvcmVC
b2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJik7CisgICAgRGF0YSBlbmNvZGVSZWNvcmQoY29uc3Qg
UmVjb3JkJiwgc3RkOjpvcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4pOwogICAgIHZvaWQgcmVh
ZFJlY29yZChSZWFkT3BlcmF0aW9uJiwgY29uc3QgRGF0YSYpOwogCiAgICAgdm9pZCB1cGRhdGVG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCAwNTY4YWNlYTlmNDc5NzE0NWIw
MGQ5ZGI1NzZjM2MxOGM3NzUzZTFjLi5mNmQ4OGI3Y2RiYjdkZTZmYTZhMmRjYjU0YWY4NmZhM2Nh
Nzk3NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aApAQCAtNjksOCArNjksOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6Ok9wdGlvbmFsPFQ+PiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdURjo6T3B0aW9uYWw8VD4mIG9wdGlvbmFs
KQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpvcHRpb25h
bDxUPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKICAgICB7CiAgICAgICAgIGlmICghb3B0aW9uYWwp
IHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CkBAIC04MSwxNCArODEsMTQgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpPcHRpb25hbDxUPj4g
ewogICAgICAgICBlbmNvZGVyIDw8IG9wdGlvbmFsLnZhbHVlKCk7CiAgICAgfQogCi0gICAgc3Rh
dGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFdURjo6T3B0aW9uYWw8VD4mIG9wdGlv
bmFsKQorICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6Om9wdGlv
bmFsPFQ+JiBvcHRpb25hbCkKICAgICB7CiAgICAgICAgIGJvb2wgaXNFbmdhZ2VkOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzRW5nYWdlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgaWYgKCFpc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG9wdGlvbmFsID0g
TnVsbG9wdDsKKyAgICAgICAgICAgIG9wdGlvbmFsID0gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKaW5kZXggNTAzY2Y1ZjNiYjIyNjI2MWMyMjQwZGVjODJkNmUwN2VhYWRmZTFl
Mi4uZjAxMmEwMWI1NGRlN2QxZmNlMjE3OTdlNmY0NTUwNTBjODNlNjg4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0xNjUsNyArMTY1LDcgQEAgY2xhc3Mg
Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb25uZWN0aW9uPiB7CiAg
ICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0
Y2hlciwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFt
ZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRsZXIpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgc2VuZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQg
KHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5
cGU+KT4mJiByZXBseUhhbmRsZXIpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+
IHdhaXRGb3JPcHRpb25zID0geyB9KTsKIApAQCAtMzQ1LDcgKzM0NSw3IEBAIGJvb2wgQ29ubmVj
dGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0
PFNlbmRPcHRpb24+CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIENvbm5lY3Rpb246
OnNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIEZ1bmN0
aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDx0
eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFu
ZGxlcikKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1
bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBU
OjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgcmVxdWVz
dElEID0gMDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciA9IGNyZWF0ZVN5
bmNNZXNzYWdlRW5jb2RlcihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlv
bklELCByZXF1ZXN0SUQpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2Vu
ZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgRnVuY3Rpb25E
aXNwCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICByZXBseUhhbmRsZXIoTnVs
bG9wdCk7CisgICAgICAgIHJlcGx5SGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IDBjYzYyZGQxZmI0Y2Rl
YTkzZDVhMDIxNTk1MzI0NTY5ZDA5Mzc0Y2EuLjdkZjhlMmZmY2RhZjUyYWNjNDdkNjViMDU2NmYw
ZmQzMGZiMTI5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0x
MTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcmVkTWVtb3J5IDogcHVibGljIFJlZkNvdW50ZWQ8U2hh
cmVkTWVtb3J5PiB7CiAgICAgUHJvdGVjdGlvbiBtX3Byb3RlY3Rpb247CiAKICNpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKLSAgICBPcHRpb25hbDxpbnQ+IG1fZmlsZURlc2NyaXB0b3I7Cisg
ICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZmlsZURlc2NyaXB0b3I7CiAgICAgYm9vbCBtX2lzV3Jh
cHBpbmdNYXAgeyBmYWxzZSB9OwogI2VsaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9ydF90IG1f
cG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVt
b3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVu
aXguY3BwCmluZGV4IDI3YjI1YjdlNWIzYzdkMTc0OTg2MTQ0NmYwZTA5Njk4MjIzNTM4NGEuLjlk
OTExNzkyNTlkNWUyNTBlODUxZGE5Njc5ZGZhMWYyZWJmMzAyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtMTY0LDcgKzE2
NCw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3RpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gaW5zdGFuY2UgPSB3cmFwTWFwKGRhdGEsIGhhbmRs
ZS5tX2F0dGFjaG1lbnQuc2l6ZSgpLCAtMSk7Ci0gICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0
b3IgPSBOdWxsb3B0OworICAgIGluc3RhbmNlLT5tX2ZpbGVEZXNjcmlwdG9yID0gc3RkOjpudWxs
b3B0OwogICAgIGluc3RhbmNlLT5tX2lzV3JhcHBpbmdNYXAgPSBmYWxzZTsKICAgICByZXR1cm4g
aW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDA1OWVjODVjMjIyYjljOWUzODViZTI2YTdiZTE0YTE3MWU2NTc1MzAuLmFmOTQ0N2IxMDY5
YzY0MzZhNTAxYmY4ZDZhNDkzMzM2YWRlZWRhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yOTAsNyArMjkwLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRl
X2hlYWRlcnModGVtcGxhdGVfc3RyaW5nKToKIAogICAgIGNsYXNzX3RlbXBsYXRlX3R5cGVzID0g
ewogICAgICAgICAnSGFzaE1hcCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9IYXNoTWFwLmg+J10sICdh
cmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCi0gICAgICAg
ICdPcHRpb25hbCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9PcHRpb25hbC5oPiddLCAnYXJndW1lbnRf
Y29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnc3RkOjpv
cHRpb25hbCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9PcHRpb25hbC5oPiddLCAnYXJndW1lbnRfY29k
ZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnT3B0aW9uU2V0
JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNldC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVh
ZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnVmVjdG9yJzogeydoZWFk
ZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8
dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5o
IiddfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlP
cmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaApp
bmRleCA3YmMzYzZmNmJhNzFlYWEzZTcwOTBmMjVlMTMxNjE5Zjk3YzllZDIzLi44OTE3YzY3MDQ5
MDRkMzdmODRiODMxNWI5MzM5OWRmMmRlNzRkNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U2Vj
dXJpdHlPcmlnaW4+CiAgICAgICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc3RyaW5nKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90b2NvbCwgY29u
c3QgV1RGOjpTdHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorICAgIHN0YXRp
YyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9j
b2wsIGNvbnN0IFdURjo6U3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHByb3RvY29sLCBob3N0LCBwb3J0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5t
bQppbmRleCBiMGRhNGI2MWYzN2RhZjllMWNkZmM1MDM2MDE2YjY0Yzg2MGU4MzE5Li4yYjZhMzFk
YzRkMDliY2I4MjYxZjUxYzIxZWQ1NjdlMTNlOTQ4MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5t
bQpAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3QgTWV0aG9kSW5mbyB7CiAgICAgICAgIENTdHJpbmcg
cmVwbHlTaWduYXR1cmU7CiAgICAgICAgIFZlY3RvcjxIYXNoU2V0PENsYXNzPj4gYWxsb3dlZFJl
cGx5Q2xhc3NlczsKICAgICB9OwotICAgIE9wdGlvbmFsPFJlcGx5SW5mbz4gcmVwbHlJbmZvOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UmVwbHlJbmZvPiByZXBseUluZm87CiB9OwogCiBAaW1wbGVtZW50
YXRpb24gX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCAyZmRlMzNlNTQ1N2Ji
NmIzNDg0YmNiODViYzRkY2NhNGU0Njc1MDg3Li5kMTE2MDc0MGM3M2M1YTQ5MWVjZDJkMzI3ZjMx
YjVhNTFmMTNlM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
ZWN1cml0eU9yaWdpblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2VjdXJpdHlPcmlnaW5SZWYuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFdLU3RyaW5nUmVmIFdLU2Vj
dXJpdHlPcmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQog
CiB1bnNpZ25lZCBzaG9ydCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChXS1NlY3VyaXR5T3JpZ2lu
UmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0ltcGwoc2VjdXJpdHlPcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiB0b0ltcGwo
c2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0K
IAogLy8gRm9yIGJhY2t3YXJkcyBBQkkgY29tcGF0aWJpbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
ZXNzaW9uU3RhdGUuaAppbmRleCBkZWU3NjhiN2M3NmViY2RjNjEzMGU5ZTkzYmRmOTQzYzQyOGY0
OWI4Li4wZmY3YmJhMDExMWI2YzQzODU4ZDQ4NWEzZWFhYTVhMDk3NzI5ODY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC02Niw4ICs2Niw4IEBAIHN0cnVjdCBIVFRQQm9k
eSB7CiAgICAgICAgIC8vIEZpbGUuCiAgICAgICAgIFN0cmluZyBmaWxlUGF0aDsKICAgICAgICAg
aW50NjRfdCBmaWxlU3RhcnQ7Ci0gICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IGZpbGVMZW5ndGg7
Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBmaWxlTGVuZ3RoOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAg
ICAvLyBCbG9iLgogICAgICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKQEAgLTkwLDcgKzkwLDcg
QEAgc3RydWN0IEZyYW1lU3RhdGUgewogICAgIFN0cmluZyB0YXJnZXQ7CiAKICAgICBWZWN0b3I8
U3RyaW5nPiBkb2N1bWVudFN0YXRlOwotICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gc3Rh
dGVPYmplY3REYXRhOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBzdGF0ZU9i
amVjdERhdGE7CiAKICAgICBpbnQ2NF90IGRvY3VtZW50U2VxdWVuY2VOdW1iZXI7CiAgICAgaW50
NjRfdCBpdGVtU2VxdWVuY2VOdW1iZXI7CkBAIC05OCw3ICs5OCw3IEBAIHN0cnVjdCBGcmFtZVN0
YXRlIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbjsKICAgICBmbG9hdCBw
YWdlU2NhbGVGYWN0b3I7CiAKLSAgICBPcHRpb25hbDxIVFRQQm9keT4gaHR0cEJvZHk7CisgICAg
c3RkOjpvcHRpb25hbDxIVFRQQm9keT4gaHR0cEJvZHk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ug
c2hvdWxkIG5vdCBiZSBwZXIgZnJhbWUuCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTM5LDcgKzEz
OSw3IEBAIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RTdGF0ZSB7CiAgICAgc3RhdGljIGJvb2wgZGVj
b2RlKElQQzo6RGVjb2RlciYsIEJhY2tGb3J3YXJkTGlzdFN0YXRlJik7CiAKICAgICBWZWN0b3I8
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBpdGVtczsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4g
Y3VycmVudEluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGN1cnJlbnRJbmRleDsK
IH07CiAKIHN0cnVjdCBTZXNzaW9uU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggN2ZhMDI3ZTA3Nzg4ZTdmMDJiOTkx
ODhlOGFmNTNjODZlNzc3MzUyOS4uNDBiNDIwNTczOTU1MDY1Yzk5OGY1NWJmZGMzOGI1YThhYjBm
MjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCkBAIC0xMDksOSArMTA5LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgewogICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQ
aW5uaW5nQmVoYXZpb3I7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgV1RGOjpPcHRp
b25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+LCBidXQgd2Ugd291bGQgbmVlZCB0
bworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4sIGJ1dCB3ZSB3b3VsZCBuZWVkIHRvCiAgICAgLy8gY29ycmVj
dGx5IGhhbmRsZSBlbnVtcyBpbnNpZGUgT3B0aW9uYWxzIHdoZW4gZW5jb2RpbmcgYW5kIGRlY29k
aW5nLiAKLSAgICBXVEY6Ok9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7
CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogCiAg
ICAgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KaW5kZXggZDdiZDMyNzk2OGM4ZjdmNzNiODE3
NGQ3NmIzMTM2ODI2NTk0ZDgxNS4uNzBkYzkwOWVjZmNmNzc3MTQ0ZmZkNGNkZThiNjQ3MWI1ZmYz
YTRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3Jh
cGgubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0K
QEAgLTExMyw3ICsxMTMsNyBAQCBlbnVtIGNsYXNzIE9iakNUeXBlIHsKICNlbmRpZgogfTsKIAot
c3RhdGljIE9wdGlvbmFsPE9iakNUeXBlPiB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21PYmplY3QoaWQgb2JqZWN0KQogewog
ICAgIEFTU0VSVChvYmplY3QpOwogCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIE9wdGlvbmFs
PE9iakNUeXBlPiB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgICAgIHJldHVybiBPYmpD
VHlwZTo6V0tUeXBlUmVmV3JhcHBlcjsKICNlbmRpZgogCi0gICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBPYmpDT2JqZWN0R3JhcGg6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGlkIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9TZWNJdGVtU2hpbS5jcHAKaW5kZXggNDM3MDBkMWEzYmZjNDQ0YmY5MDEwY2E4YWM1MTAx
ZTZlNzUzODJkYi4uODU0MzNiZDU5ODZjMTM2YThiZWNjOTgxYmZkNzBkODRlZTQ3ZDQ2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKQEAgLTcxLDkgKzcxLDkg
QEAgc3RhdGljIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKCkKICAgICByZXR1cm4gKndvcmtRdWV1ZTsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHNlbmRTZWNJdGVtUmVx
dWVzdChTZWNJdGVtUmVxdWVzdERhdGE6OlR5cGUgcmVxdWVzdFR5cGUsIENGRGljdGlvbmFyeVJl
ZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNUb01hdGNoID0gMCkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHNlbmRTZWNJdGVtUmVxdWVzdChTZWNJ
dGVtUmVxdWVzdERhdGE6OlR5cGUgcmVxdWVzdFR5cGUsIENGRGljdGlvbmFyeVJlZiBxdWVyeSwg
Q0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNUb01hdGNoID0gMCkKIHsKLSAgICBPcHRpb25hbDxT
ZWNJdGVtUmVzcG9uc2VEYXRhPiByZXNwb25zZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlY0l0ZW1S
ZXNwb25zZURhdGE+IHJlc3BvbnNlOwogCiAgICAgYXV0byBzZW1hcGhvcmUgPSBhZG9wdE9TT2Jq
ZWN0KGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUoMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3Bw
CmluZGV4IDFlYjc2ZDEyMjczM2JjNGZhZGVjZDNkMzExZWIxOTdkNmUyZGQ1NjQuLmIzMjJlNDMx
OTlmYTkwMWYxMDBiNzRhMzBiZGJiMTNlM2I5YWUyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3Bw
CkBAIC0xMDEsOSArMTAxLDkgQEAgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9y
YWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclIKIAogICAgICAgICAg
ICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdp
bktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7CiAgICAgICAgICAgICBpZiAob3JpZ2luRGV0YWls
cy5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQ
STo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUudmFsdWVPcigwKSkp
OworICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1lLnZhbHVlX29yKDApKSk7CiAgICAgICAgICAg
ICBpZiAob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIGRl
dGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRp
b25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxz
Lm1vZGlmaWNhdGlvblRpbWUudmFsdWVPcigwKSkpOworICAgICAgICAgICAgICAgIGRldGFpbHNN
YXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlm
aWNhdGlvblRpbWUudmFsdWVfb3IoMCkpKTsKIAogICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKGRldGFpbHNNYXApKSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tTZWN1cml0eU9yaWdpbi5tbQppbmRleCBjNTU0M2EyMGI3MWU4Yzk3NmUyMTIyYjliNGJlYTQ4
YjM3NTFmYzcwLi5iNzExMmNlZTE3YmRjYzI2OWJjOWY5ZTI3MWQyNDAyZGEyMTY2ODIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmln
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5
T3JpZ2luLm1tCkBAIC01OCw3ICs1OCw3IEBAIC0gKE5TU3RyaW5nICopaG9zdAogCiAtIChOU0lu
dGVnZXIpcG9ydAogewotICAgIHJldHVybiBfc2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2lu
KCkucG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJp
dHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVj
dCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA5OTQ1ODRiYTI5YTQyNmYyZTIzMjdhYzMzZTMz
YjViZDkxZWEyYTJhLi45ZTkwYWJhNzk2YTk2ZTc4YTZiYzE0OTUzMzAxMzVhYWQ2NDQ2OWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMjM1LDExICsyMzUsMTEgQEAgQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAgICAgdWlu
dDY0X3QgX2ZpcnN0UGFpbnRBZnRlckNvbW1pdExvYWRUcmFuc2FjdGlvbklEOwogICAgIER5bmFt
aWNWaWV3cG9ydFVwZGF0ZU1vZGUgX2R5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGU7CiAgICAgQ0FU
cmFuc2Zvcm0zRCBfcmVzaXplQW5pbWF0aW9uVHJhbnNmb3JtQWRqdXN0bWVudHM7Ci0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1UcmFuc2FjdGlvbklEOwor
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1UcmFu
c2FjdGlvbklEOwogICAgIFJldGFpblB0cjxVSVZpZXc+IF9yZXNpemVBbmltYXRpb25WaWV3Owog
ICAgIENHRmxvYXQgX2xhc3RBZGp1c3RtZW50Rm9yU2Nyb2xsZXI7Ci0gICAgT3B0aW9uYWw8Q0dS
ZWN0PiBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0OwotICAgIE9wdGlvbmFsPENHUmVjdD4gX2Zy
b3plblVub2JzY3VyZWRDb250ZW50UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENHUmVjdD4gX2Zy
b3plblZpc2libGVDb250ZW50UmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENHUmVjdD4gX2Zyb3pl
blVub2JzY3VyZWRDb250ZW50UmVjdDsKIAogICAgIEJPT0wgX25lZWRzVG9SZXN0b3JlU2Nyb2xs
UG9zaXRpb247CiAgICAgQk9PTCBfY29tbWl0RGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uOwpAQCAt
MTI3MSw3ICsxMjcxLDcgQEAgLSAodm9pZClfZGlkQ29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllclRyZWUKIAogICAgIGlmIChfZHlu
YW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAhPSBEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RS
ZXNpemluZykgewogICAgICAgICBpZiAoX3Jlc2l6ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0
aW9uSUQgJiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpID49IF9yZXNpemVB
bmltYXRpb25UcmFuc2Zvcm1UcmFuc2FjdGlvbklELnZhbHVlKCkpIHsKLSAgICAgICAgICAgIF9y
ZXNpemVBbmltYXRpb25UcmFuc2Zvcm1UcmFuc2FjdGlvbklEID0gTnVsbG9wdDsKKyAgICAgICAg
ICAgIF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1UcmFuc2FjdGlvbklEID0gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgW19yZXNpemVBbmltYXRpb25WaWV3IGxheWVyXS5zdWJsYXllclRyYW5z
Zm9ybSA9IF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1BZGp1c3RtZW50czsKICAgICAgICAgICAg
IGlmIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSA9PSBEeW5hbWljVmlld3BvcnRVcGRhdGVN
b2RlOjpSZXNpemluZ1dpdGhEb2N1bWVudEhpZGRlbikgewogICAgICAgICAgICAgICAgIFtfY29u
dGVudFZpZXcgc2V0SGlkZGVuOk5PXTsKQEAgLTIzMDEsOCArMjMwMSw4IEBAIC0gKHZvaWQpX25h
dmlnYXRpb25HZXN0dXJlRGlkQmVnaW4KIAogLSAodm9pZClfbmF2aWdhdGlvbkdlc3R1cmVEaWRF
bmQKIHsKLSAgICBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID0gTnVsbG9wdDsKLSAgICBfZnJv
emVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gTnVsbG9wdDsKKyAgICBfZnJvemVuVmlzaWJsZUNv
bnRlbnRSZWN0ID0gc3RkOjpudWxsb3B0OworICAgIF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJl
Y3QgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRleCBmODYwZjg4YTdkOGE3Yzc3ZmFjMmY0MzI1NmVi
MTc4NWYyMWUyOGQ0Li5mZGRkNmE1M2ExZWI0NGFiMGYzNjkxMDg5YzUwMmVlZjY2MDQzYzM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAgLTQwLDcgKzQwLDcgQEAgaW5saW5l
IFdLV2Vic2l0ZURhdGFSZWNvcmQgKndyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVJlY29yZCYgd2Vi
c2l0ZURhdGFSZWNvcmQpCiAgICAgcmV0dXJuIChXS1dlYnNpdGVEYXRhUmVjb3JkICopd2Vic2l0
ZURhdGFSZWNvcmQud3JhcHBlcigpOwogfQogCi1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNp
dGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndlYnNpdGVEYXRhVHlwZSkK
K3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURh
dGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVR5cGUpCiB7CiAgICAgaWYgKFt3ZWJzaXRlRGF0
YVR5cGUgaXNFcXVhbFRvU3RyaW5nOldLV2Vic2l0ZURhdGFUeXBlQ29va2llc10pCiAgICAgICAg
IHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkNvb2tpZXM7CkBAIC03MSw3ICs3MSw3IEBAIHN0YXRp
YyBpbmxpbmUgT3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0
cmluZyAqd2Vic2l0ZURhdGFUCiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3Ry
aW5nOl9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3NdKQogICAgICAgICBy
ZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogc3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHRvV2Vi
c2l0ZURhdGFUeXBlcyhOU1NldCAqd2Vic2l0ZURhdGFUeXBlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggY2FmMGQ3MjNmMDY1OTY5ZTBjMDhj
NDZlMDJjMjRhNmU0N2MxMTlkOC4uZDI3NzAwNTk2MWQyOWFlZDY3NTA5MzY5NGIyM2U0ZTgyNTVl
MTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAK
QEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkIEV3a1ZpZXc6OnNldEN1cnNvcihjb25zdCBDdXJzb3Im
IGN1cnNvcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAKLSAgICAgICAgT3B0aW9u
YWw8SW50UG9pbnQ+IGhvdFNwb3QgPSBjdXJzb3JJbWFnZS0+aG90U3BvdCgpOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90ID0gY3Vyc29ySW1hZ2UtPmhvdFNwb3QoKTsK
ICAgICAgICAgRWNvcmVfWF9DdXJzb3IgY3VzdG9tQ3Vyc29yID0gY3JlYXRlQ3VzdG9tQ3Vyc29y
KHdpbmRvdywgY3Vyc29ySW1hZ2UsIEludFNpemUoY3Vyc29ySW1hZ2UtPnNpemUoKSksIGhvdFNw
b3QgPyBob3RTcG90LnZhbHVlKCkgOiBJbnRQb2ludCgpKTsKICAgICAgICAgaWYgKCFjdXN0b21D
dXJzb3IpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0KaW5kZXggYTYzMzk4YTY3ZmY1Njg2M2IwZWNlYWIzMWY1NGU0YjJiOGRj
Zjc5OC4uMmZlZjFiMGJjNWY2ZGU1ZTE2ODRiNzg3YTE4N2U5YTdjNzhhY2ZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTMyOSw3ICsxMzI5LDcg
QEAgLSAoQ0dGbG9hdClfdG90YWxIZWlnaHRPZkJhbm5lcnMKICAgICByZXR1cm4gX2RhdGEtPl9p
bXBsLT50b3RhbEhlaWdodE9mQmFubmVycygpOwogfQogCi1zdGF0aWMgV1RGOjpPcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHRvQ29yZVNjcm9sbGJhclN0eWxlKF9XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZSBzY3JvbGxiYXJTdHlsZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dL
T3ZlcmxheVNjcm9sbGJhclN0eWxlIHNjcm9sbGJhclN0eWxlKQogewogICAgIHN3aXRjaCAoc2Ny
b2xsYmFyU3R5bGUpIHsKICAgICBjYXNlIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZURhcms6CkBA
IC0xMzQzLDEwICsxMzQzLDEwIEBAIHN0YXRpYyBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLXN0YXRpYyBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJT
dHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gY29yZVNj
cm9sbGJhclN0eWxlKQorc3RhdGljIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSB0b0FQSVNjcm9s
bGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBj
b3JlU2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAgaWYgKCFjb3JlU2Nyb2xsYmFyU3R5bGUpCiAgICAg
ICAgIHJldHVybiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVBdXRvbWF0aWM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcAppbmRleCA0ZmU5NDVmMjdiODFiMjZmZjI3YTk2Njc4OGFkOWI5
Mjc3YjUyYmY4Li45MmExOWY4ZTNlMGJmYzgzMDk2OTE1MTE1M2NjMjU2Njc4ZWY2NzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25z
dCBXZWJDb3JlOjpQYXltZQogICAgIG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgPSBNZXJjaGFu
dFZhbGlkYXRpb25TdGF0ZTo6VmFsaWRhdGlvbkNvbXBsZXRlOwogfQogCi12b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQz
Ml90IG9wYXF1ZVN0YXR1cywgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6
OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQz
Ml90IG9wYXF1ZVN0YXR1cywgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykKIHsKICAgICAv
LyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBheW1lbnQgaGFzIGJlZW4gY2FuY2VsZWQgYWxyZWFk
eS4KICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SWRsZSkKQEAgLTE2OCw3ICsxNjgsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKHVpbnQzMl90IG9wYXF1ZQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWN0aXZlOwogfQog
Ci12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5l
d1RvdGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hp
cHBpbmdNZXRob2RzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQogewogICAgIC8vIEl0
J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5Lgog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHVpbnQzMl90IG9wYXF1CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmU7CiB9CiAKLXZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5l
SXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5k
TGluZUl0ZW1zKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMg
YmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCBhMWI4ZGRjZWYzOTE2YWQzNGVhNGYyNDA1
YWMxMWE5N2I1Nzg1NjQ0Li5jMjZmN2NlZWUxZDQyZDc5ZTY3YzY4YWYyOWI0NjU1NjI5MDgxNDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtODAsOSArODAsOSBAQCBjbGFzcyBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAg
IHZvaWQgc2hvd1BheW1lbnRVSShjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdCYsIGJvb2wmIHJlc3VsdCk7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAg
dm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1
cywgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0
ZW1zPiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odWludDMy
X3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7Ci0gICAgdm9pZCBjb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOworICAgIHZvaWQg
Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3
U2hpcHBpbmdNZXRob2RzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpU
b3RhbEFuZExpbmVJdGVtcz4mKTsKICAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24odWlu
dDMyX3Qgb3BhcXVlU3RhdHVzKTsKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKTsKIApA
QCAtOTgsOSArOTgsOSBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIHZvaWQgcGxhdGZvcm1PcGVuUGF5bWVudFNl
dHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFp
bk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0
aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdCYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRp
b24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwotICAgIHZvaWQgcGxh
dGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXM+Jik7Ci0gICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hp
cHBpbmdNZXRob2RzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90
YWxBbmRMaW5lSXRlbXM+Jik7Ci0gICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxB
bmRMaW5lSXRlbXM+Jik7CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOwor
ICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7
CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4m
KTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cyk7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVBy
b3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDg1ZWFiNGM2NGVjZWNjZDA5NzVhZTg0NDc4ZWY5NDkyM2ZjNGFhZTAuLjg2NDk4MTZiZDhiMWIx
NjI3MTNjNmFmNTA1MTdmNzc1MWNhN2QyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMyLDkgKzMyLDkgQEAgbWVzc2FnZXMgLT4gV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkgewogCiAgICAgU2hvd1BheW1lbnRVSShTdHJpbmcgb3JpZ2lu
YXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkKICAgICBD
b21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9u
IHBheW1lbnRNZXJjaGFudFNlc3Npb24pOwotICAgIENvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCi0gICAgQ29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBWZWN0b3I8V2Vi
Q29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMs
IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3
VG90YWxBbmRJdGVtcykKLSAgICBDb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFu
ZEl0ZW1zKQorICAgIENvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odWludDMyX3Qgb3Bh
cXVlU3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFu
ZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKKyAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0dXMsIFZlY3RvcjxXZWJDb3JlOjpQYXltZW50
UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+IG5ld1NoaXBwaW5nTWV0aG9kcywgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5k
SXRlbXMpCisgICAgQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0
ZW1zKQogICAgIENvbXBsZXRlUGF5bWVudFNlc3Npb24odWludDMyX3Qgb3BhcXVlU3RhdHVzKQog
ICAgIEFib3J0UGF5bWVudFNlc3Npb24oKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCA1NzlhZmFmYThiMjY2ZDU3MmZkZDZlODQxNmZi
YWYyYzMzMjkxZGYwLi5lNjRlZGMzNjRiYzQ0MjhjNDUwNzRiYmRlNDMxYWE0YzFhMzM0ZWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAt
Mjc1LDcgKzI3NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEZWNpbWFsTnVtYmVyPiB0b0RlY2lt
YWxOdW1iZXIoaW50NjRfdCB2YWx1ZSkKIAogc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTdW1t
YXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQogewotICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3Vt
bWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3Vu
dDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50LnZhbHVlT3IoMCkpLmdldCgpIHR5cGU6
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOworICAgIHJldHVybiBb
Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJ
dGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50LnZhbHVlX29y
KDApKS5nZXQoKSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUp
XTsKIH0KIAogc3RhdGljIFBLTWVyY2hhbnRDYXBhYmlsaXR5IHRvUEtNZXJjaGFudENhcGFiaWxp
dGllcyhjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMm
IG1lcmNoYW50Q2FwYWJpbGl0aWVzKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgV2ViQ29yCiAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9zZXNzaW9uQmxvY2sgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJ
dGVtcykKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cyBzdGF0dXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCiB7CiAgICAgQVNTRVJUKG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAgICAgQVNTRVJUKG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKQEAgLTQ5MCw3ICs0OTAsNyBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZQogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0g
bnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyBzdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0
ZW1zKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cyBzdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdN
ZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMp
CiB7CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAg
ICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsK
QEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcgogICAgIG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdD
b250YWN0Q29tcGxldGlvbiA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1Rv
dGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJ
dGVtcykKIHsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
KTsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDgyMzIzMTRiNGNjMWRiMjcyNTk3Yjll
YmNmODdlNzdhMjNlMTYzYmIuLjY0OGUyMGVjNGViY2M0YmZjZmM4NDQ3NDJlNDQxMDZjNmJmYzdh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvck5hbWVBbmRE
ZXRhaWxzU2VwYXJhdG9yID0gIjsiOwogCiAvLyBNYWtlIHN1cmUgdGhlIHByZWRlZmluZWQgZXJy
b3IgbmFtZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIHVzZSBJbnRlcm5hbEVycm9yLgotI2RlZmluZSBW
QUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9yU3RyaW5nKS52YWx1ZU9yKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW50ZXJuYWxFcnJv
cikKKyNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmlu
ZykudmFsdWVfb3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjpJbnRlcm5hbEVycm9yKQogCiAvLyBJZiB0aGUgZXJyb3IgbmFtZSBpcyBpbmNvcnJlY3QgZm9y
IHRoZXNlIG1hY3JvcywgaXQgd2lsbCBiZSBhIGNvbXBpbGUtdGltZSBlcnJvci4KICNkZWZpbmUg
U1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUoZXJyb3JOYW1lKSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjplcnJvck5hbWUpCkBAIC0xNzQs
MTQgKzE3NCwxNCBAQCBTdHJpbmcgV2ViQXV0b21hdGlvblNlc3Npb246OmhhbmRsZUZvcldlYlBh
Z2VQcm94eShjb25zdCBXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcgogICAgIHJldHVybiBoYW5kbGU7
CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2ViRnJhbWVJ
REZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYg
aGFuZGxlKQogewogICAgIGlmIChoYW5kbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGF1dG8gaXRlciA9IG1faGFuZGxlV2ViRnJhbWVNYXAuZmluZChoYW5kbGUpOwogICAg
IGlmIChpdGVyID09IG1faGFuZGxlV2ViRnJhbWVNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGl0ZXIt
PnZhbHVlOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dO
b3RGb3VuZCk7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURG
b3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZy
YW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxl
IDogZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKCFmcmFtZUlEKQogICAgICAgICBGQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIApAQCAtNDg0LDcgKzQ4NCw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmIGVyCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpv
cHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSk7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRs
ZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKCFmcmFt
ZUlEKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsK
IApAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVD
aGlsZEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yCiAgICAgaWYgKCFw
YWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7
CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUo
b3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmco
KSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JI
YW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlT
dHJpbmcoKSk7CiAgICAgaWYgKCFmcmFtZUlEKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIApAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9y
U3RyaW5nJiBlcnJvCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCA9IHdlYkZyYW1lSURGb3JIYW5kbGUoZnJhbWVIYW5kbGUpOworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQgPSB3ZWJGcmFtZUlERm9ySGFuZGxlKGZyYW1lSGFuZGxlKTsKICAg
ICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1l
Tm90Rm91bmQpOwogCkBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHIK
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRv
d05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJ
REZvckhhbmRsZShmcmFtZUhhbmRsZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUoZnJhbWVIYW5kbGUpOwogICAgIGlmICghZnJhbWVJ
RCkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDZhOGQwNTBkZTJlYTAzYWE4MzZjYjI2NmNmZTA0MWFm
MTQ0MTEzM2YuLjYwMjRhYTQ5YmIzMDYwODc3MzM5MmI2MDhlMThhMzAxM2EwMGMxODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaApAQCAtMTM0LDcgKzEzNCw3IEBAIGNsYXNzIFdlYkF1dG9tYXRpb25T
ZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
QXV0CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYlBhZ2VQcm94eShjb25zdCBXZWJQYWdlUHJveHkm
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdD
b250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZvclBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gd2ViRnJhbWVJREZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0
cmluZyYpOwogICAgIFN0cmluZyBoYW5kbGVGb3JXZWJGcmFtZUlEKHVpbnQ2NF90IGZyYW1lSUQp
OwogICAgIFN0cmluZyBoYW5kbGVGb3JXZWJGcmFtZVByb3h5KGNvbnN0IFdlYkZyYW1lUHJveHkm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRl
eCBmNzc0NGNmYWFjYjcyZmRlM2M3Zjg2ZTI5ODBhNGE2YmRmM2MzZmI2Li5iODA2OTc4MzBlZGQ0
NzMxNTI4ZmRkNDExOTcyYzYxZTBmYmYxNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtMjMwLDggKzIzMCw4IEBAIGNsYXNzIFdlYlZpZXdJ
bXBsIHsKICAgICBOU0NvbG9yICp1bmRlcmxheUNvbG9yKCkgY29uc3Q7CiAgICAgTlNDb2xvciAq
cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldE92ZXJs
YXlTY3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlT
dHlsZT4gc2Nyb2xsYmFyU3R5bGUpOwotICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBvdmVybGF5U2Nyb2xsYmFyU3R5bGUoKSBjb25zdDsKKyAgICB2b2lk
IHNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJh
ck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBvdmVybGF5U2Nyb2xsYmFyU3R5bGUoKSBjb25zdDsK
IAogICAgIHZvaWQgYmVnaW5EZWZlcnJpbmdWaWV3SW5XaW5kb3dDaGFuZ2VzKCk7CiAgICAgLy8g
RklYTUU6IE1lcmdlIHRoZXNlIHR3bz8KQEAgLTY4Niw3ICs2ODYsNyBAQCBjbGFzcyBXZWJWaWV3
SW1wbCB7CiAgICAgU3RyaW5nIG1fcHJvbWlzZWRGaWxlbmFtZTsKICAgICBTdHJpbmcgbV9wcm9t
aXNlZFVSTDsKIAotICAgIFdURjo6T3B0aW9uYWw8TlNJbnRlZ2VyPiBtX3NwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnOworICAgIHN0ZDo6b3B0aW9uYWw8TlNJbnRlZ2VyPiBtX3NwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnOwogCiAgICAgQ0dGbG9hdCBtX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzIHsgMCB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
MWUwZTA3NjJiNmRlZDVlZDg4YTYyNDQ4NDg0ODBhMjBlNWJmNjI4NC4uYjAwN2U1MDVhMWM3MWY2
ZTU3MTQxODU3MDhkNjkzZGY3YzNmOWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTYzNSw3ICsxNjM1LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6dXBkYXRlVmlld0V4cG9zZWRSZWN0KCkKICAgICAgICAgZXhwb3NlZFJlY3QgPSBDR1Jl
Y3RVbmlvbihtX2NvbnRlbnRQcmVwYXJhdGlvblJlY3QsIGV4cG9zZWRSZWN0KTsKIAogICAgIGlm
IChhdXRvIGRyYXdpbmdBcmVhID0gbV9wYWdlLT5kcmF3aW5nQXJlYSgpKQotICAgICAgICBkcmF3
aW5nQXJlYS0+c2V0Vmlld0V4cG9zZWRSZWN0KG1fY2xpcHNUb1Zpc2libGVSZWN0ID8gT3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PihleHBvc2VkUmVjdCkgOiBOdWxsb3B0KTsKKyAgICAgICAg
ZHJhd2luZ0FyZWEtPnNldFZpZXdFeHBvc2VkUmVjdChtX2NsaXBzVG9WaXNpYmxlUmVjdCA/IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PihleHBvc2VkUmVjdCkgOiBzdGQ6Om51bGxv
cHQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRDbGlwc1RvVmlzaWJsZVJlY3QoYm9vbCBj
bGlwc1RvVmlzaWJsZVJlY3QpCkBAIC0yMDg0LDEyICsyMDg0LDEyIEBAIE5TQ29sb3IgKldlYlZp
ZXdJbXBsOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBX
ZWJDb3JlOjpuc0NvbG9yKGNvbG9yKTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0T3Zlcmxh
eVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0
eWxlPiBzY3JvbGxiYXJTdHlsZSkKK3ZvaWQgV2ViVmlld0ltcGw6OnNldE92ZXJsYXlTY3JvbGxi
YXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Ny
b2xsYmFyU3R5bGUpCiB7CiAgICAgbV9wYWdlLT5zZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoc2Ny
b2xsYmFyU3R5bGUpOwogfQogCi1XVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJs
YXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92
ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+b3Zlcmxh
eVNjcm9sbGJhclN0eWxlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eS5jcHAKaW5kZXggNjllOGM1YjMyMjMyMmRiMDM3MWJiY2IxZjM2NDBmZTRjOTZk
ODU2NS4uYjQ1ZjIyNzllNzJiZWVlMGFlNzMzYzZlMTBhYjE0MTkyZTAxZjJlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtNzUsNyArNzUs
NyBAQCBNYWNoU2VuZFJpZ2h0IERyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZUZlbmNlKCkKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKQotdm9pZCBEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhw
b3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCit2
b2lkIERyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogewogICAgIGlmICghbV93ZWJQYWdl
UHJveHkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCBkNjk5ZjYzOTg2Zjg3NTcwMDhmYTgzY2Y0NGQx
MDA5NjcyMTQ2MGMwLi5hNWQ0ZWIyNDFiZTg3ZGRlOGQwODU4MTExZjljMmI4MTg4MGRlNzhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTgyLDgg
KzgyLDggQEAgY2xhc3MgRHJhd2luZ0FyZWFQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlLCBXZWJD
b3JlOjpGbG9hdFBvaW50KSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pOwotICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0V4cG9z
ZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0Pik7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlld0V4cG9zZWRSZWN0OyB9CiAgICAgdm9pZCB2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGlt
ZXJGaXJlZCgpOwogI2VuZGlmCiAKQEAgLTEzNiw4ICsxMzYsOCBAQCBjbGFzcyBEcmF3aW5nQXJl
YVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBSdW5Mb29wOjpUaW1lcjxEcmF3aW5nQXJlYVByb3h5PiBtX3ZpZXdFeHBvc2VkUmVj
dENoYW5nZWRUaW1lcjsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4
cG9zZWRSZWN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV9sYXN0U2VudFZp
ZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92
aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1f
bGFzdFNlbnRWaWV3RXhwb3NlZFJlY3Q7CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogI2VuZGlm
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZThh
Y2Q5NzE0NDcyNGM4YjFiNWMyNmJhZmYzNmRhOWZhYTQ5ODk4Yi4uN2FmODU0MjE3M2Q1YmVjNjRk
Njc1NGQwMGUyNGM4NDlkNDY4NGQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb24uY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKQogICAgIG1f
c2VydmVyLT5kaWRDbG9zZVdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24odGhpcyk7CiB9CiAKLXZv
aWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEo
U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBs
ZW5ndGgpCit2b2lkIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqIGRhdGEsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBsZW5ndGgpCiB7CiAgICAgLy8gRWFjaCBkaWRSZWNlaXZlRGF0YSBjYWxs
IGFkZHMgbW9yZSBkYXRhIHRvIG91ciBidWZmZXIuCiAgICAgLy8gV2UgY2xlYXIgdGhlIGJ1ZmZl
ciB3aGVuIHdlIGhhdmUgaGFuZGxlZCBkYXRhIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0
U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGEyZDQxMTkzNTBmZjk4NmYxNTdlMDI5Y2JiZGFkNGY1
N2RmYTkwYmIuLjFlYWQ1MDFhOTg3MDdlNjU1NWM0MjE1MzA0OWY3YTJmNjhjNTZmMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0
U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIGNs
YXNzIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50CiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGlt
cGxlbWVudGF0aW9uLgogICAgIHZvaWQgZGlkT3BlblNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGUmKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZENsb3NlU29ja2V0U3RyZWFt
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hh
ciogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3Qg
Y2hhciogZGF0YSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkgZmluYWw7CiAgICAgdm9p
ZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBz
aXplX3QgYnVmZmVyZWRBbW91bnQpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbFNvY2tldFN0cmVh
bShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBXZWJDb3JlOjpTb2NrZXRTdHJl
YW1FcnJvciYpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmNwcAppbmRleCAzNTZjNzhhOWMxMzcwOTY3YTU1MGVkZTBiYjQwZGJhNzIzMmE5M2E3Li4z
ODNkZjU4OTQ2YTdmZDdjMThjNWYwYWYyZmZiZTA1ZWIxNTU2ZTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlk
Q2hhbmdlKFdlYkNvcmU6OgogfQogCiAvLyBUaGlzIGNvbWVzIGZyb20gdGhlIHNjcm9sbGluZyB0
cmVlLgotdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxpbmdUcmVl
Tm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsZWROb2RlSUQsIGNvbnN0IEZsb2F0
UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5
b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGVkTm9k
ZUlELCBjb25zdCBGbG9hdFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9z
aXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKIHsKICAgICAvLyBTY3Jv
bGwgdXBkYXRlcyBmb3IgdGhlIG1haW4gZnJhbWUgYXJlIHNlbnQgdmlhIFdlYlBhZ2VQcm94eTo6
dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cygpCiAgICAgLy8gc28gZG9uJ3Qgc2VuZCB0aGVtIGhl
cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDliZmI0Mzk4
ODZmMjZkZTU3MGI4YjRkODFmMWQ5YjhkYWQzNDFlZjMuLmU4N2JiMmMyZTg0Yzg0OWIwNWZlMTNi
ZjA5OTZlYzBlMzVlN2RkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkgewogICAgIGJvb2wgdmlzdWFsVmlld3BvcnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxpbmdUcmVlICYmIG1fc2Nyb2xsaW5nVHJlZS0+dmlzdWFsVmlld3BvcnRFbmFibGVkKCk7
IH0KIAogICAgIC8vIEluZm9ybSB0aGUgd2ViIHByb2Nlc3MgdGhhdCB0aGUgc2Nyb2xsIHBvc2l0
aW9uIGNoYW5nZWQgKGNhbGxlZCBmcm9tIHRoZSBzY3JvbGxpbmcgdHJlZSkKLSAgICB2b2lkIHNj
cm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xs
aW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNj
cm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IG5ld1Njcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9p
bnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlv
bkFjdGlvbik7CiAgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKFdlYkNv
cmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24sIGJvb2wgcmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCk7CiAKICAgICBXZWJDb3Jl
OjpUcmFja2luZ1R5cGUgZXZlbnRUcmFja2luZ1R5cGVGb3JQb2ludChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50TmFtZSwgV2ViQ29yZTo6SW50UG9pbnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5j
cHAKaW5kZXggOWU0OGVjNmY1Y2IwOWNmMGZhNzI1MTAyOTMzMzllZDgxMjFmNTlhNC4uZTExNTUy
OTEwNjQ3MDFiODhiN2IzMmFiY2QxZjJlNjU0MzNlMjg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3Bw
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdU
cmVlTm9kZURpZEVuZFNjcm9sbCgpCiAKICNlbmRpZgogCi12b2lkIFJlbW90ZVNjcm9sbGluZ1Ry
ZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNv
bnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50
PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6c2Ny
b2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4m
IGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9s
bGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxh
eW91dFZpZXdwb3J0T3JpZ2luLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xs
aW5nVHJlZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3Jv
bGxpbmdUcmVlLmgKaW5kZXggNmMwYzI1ODYwMzMxN2M5NDQ3YWRiZmZiNmNjOTY5M2E4YTUzYWVm
MS4uZDY1YjJmNWVkNmRkZjU3ZWM0NDBkZjQ5MGQyZTExNjhjOGVjMDVjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdU
cmVlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgUmVtb3RlU2Nyb2xsaW5nVHJlZSA6IHB1Ymxp
YyBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlIHsKIAogICAgIGNvbnN0IFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkmIHNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk7IH0KIAotICAgIHZvaWQgc2Nyb2xsaW5nVHJl
ZU5vZGVEaWRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQ
b2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBXZWJDb3JlOjpTY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykg
b3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChXZWJDb3JlOjpT
Y3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9u
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9y
dE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFdlYkNvcmU6
OlNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2Nyb2xsaW5nVHJlZU5vZGVSZXF1ZXN0c1Njcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIHJlcHJlc2Vu
dHNQcm9ncmFtbWF0aWNTY3JvbGwpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjdXJyZW50U25hcFBv
aW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhv
cml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuY3BwCmluZGV4IDk5ODk3MTA4MzAxZWJiMjFkYjJjNDc3OWU2YTkxNzY1ZjY5OTZi
NzguLmI0ZjQ0ZjA2YzFlNzFlZjVlNTNkOGU4NzFhY2EyYTUyOTY0Zjg0YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMTI1LDE3ICsxMjUsMTcgQEAgdm9pZCBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCiAgICAgZGVsZXRlRW1w
dHlEaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8dGltZV90PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDx0aW1lX3Q+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICB0aW1lX3QgdGltZTsKLSAgICByZXR1cm4gZ2V0RmlsZUNyZWF0aW9u
VGltZShmaWxlUGF0aCwgdGltZSkgPyB0aW1lIDogT3B0aW9uYWw8dGltZV90PihOdWxsb3B0KTsK
KyAgICByZXR1cm4gZ2V0RmlsZUNyZWF0aW9uVGltZShmaWxlUGF0aCwgdGltZSkgPyB0aW1lIDog
c3RkOjpvcHRpb25hbDx0aW1lX3Q+KHN0ZDo6bnVsbG9wdCk7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDx0aW1lX3Q+IGZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDx0aW1lX3Q+IGZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgdGltZV90IHRpbWU7CiAgICAgaWYgKCFnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShmaWxlUGF0aCwgdGltZSkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHRpbWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IGRhNTQxOTM0MTU3ODY1MWFhMTEyMTY1MmRjM2Y0
NjVkYzYxZTc5NTUuLmJiN2ZiNDg3ZWVlMWFjMGI2NWEzMWUwNDg3MGExZDNkOTE3MDYzYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC02MSw4ICs2MSw4IEBAIGNsYXNzIExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2Nh
bFN0b3JhZ2VEYXRhCiAKICAgICBzdHJ1Y3QgT3JpZ2luRGV0YWlscyB7CiAgICAgICAgIFN0cmlu
ZyBvcmlnaW5JZGVudGlmaWVyOwotICAgICAgICBPcHRpb25hbDx0aW1lX3Q+IGNyZWF0aW9uVGlt
ZTsKLSAgICAgICAgT3B0aW9uYWw8dGltZV90PiBtb2RpZmljYXRpb25UaW1lOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPHRpbWVfdD4gY3JlYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHRpbWVfdD4gbW9kaWZpY2F0aW9uVGltZTsKICAgICB9OwogICAgIFZlY3RvcjxPcmlnaW5EZXRh
aWxzPiBvcmlnaW5EZXRhaWxzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDU1ODBiMmNjMmEwMzk5ZWJlZDU2MDEyMDMwMTM4NWY0Mjk5NDc0OWEuLjBmODFl
MGI4OGI3NTg0OWIzZmFiMzZlNDlmZTU1NjIxMzA1NmJiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjEzLDggKzIxMyw4IEBAIHZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1l
KHVpbnQ2CiAgICAgYXV0byByZXF1ZXN0ID0gVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6
OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQpOwogICAgIG1fcGVuZGluZ0RldmljZVJlcXVlc3Rz
LmFkZCh1c2VyTWVkaWFJRCwgcmVxdWVzdC5wdHIoKSk7CiAKLSAgICBhdXRvIHVzZXJNZWRpYU9y
aWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21EYXRhYmFzZUlkZW50aWZpZXIodXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKS52
YWx1ZU9yKFNlY3VyaXR5T3JpZ2luRGF0YSgpKS5zZWN1cml0eU9yaWdpbigpKTsKLSAgICBhdXRv
IHRvcExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRl
bnRpZmllcikudmFsdWVPcihTZWN1cml0eU9yaWdpbkRhdGEoKSkuc2VjdXJpdHlPcmlnaW4oKSk7
CisgICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHVzZXJNZWRpYURvY3Vt
ZW50T3JpZ2luSWRlbnRpZmllcikudmFsdWVfb3IoU2VjdXJpdHlPcmlnaW5EYXRhKCkpLnNlY3Vy
aXR5T3JpZ2luKCkpOworICAgIGF1dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRv
cExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKS52YWx1ZV9vcihTZWN1cml0eU9yaWdpbkRh
dGEoKSkuc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICBpZiAoIW1fcGFnZS51aUNsaWVudCgpLmNo
ZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihtX3BhZ2UsICptX3BhZ2UucHJvY2Vzcygp
LndlYkZyYW1lKGZyYW1lSUQpLCAqdXNlck1lZGlhT3JpZ2luLmdldCgpLCAqdG9wTGV2ZWxPcmln
aW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0RldmljZVJlcXVl
c3RzLnRha2UodXNlck1lZGlhSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBmMmEyODk4OWIyMjM3OGQwMmVjOWI2NTlhMjQ2ZWE3
NWM2ZmViMDQ2Li4zNjhkOTJhOWJjNzdhYjY5MDMzNmE0YmQ2N2U4MGY4OTZhODVlOGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAt
NDE1LDcgKzQxNSw3IEBAIEJhY2tGb3J3YXJkTGlzdFN0YXRlIFdlYkJhY2tGb3J3YXJkTGlzdDo6
YmFja0ZvcndhcmRMaXN0U3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvCiAgICAgfQogCiAgICAgaWYg
KGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgYmFja0Zvcndh
cmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID0gTnVsbG9wdDsKKyAgICAgICAgYmFja0ZvcndhcmRM
aXN0U3RhdGUuY3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKGJhY2tG
b3J3YXJkTGlzdFN0YXRlLml0ZW1zLnNpemUoKSA8PSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJy
ZW50SW5kZXgudmFsdWUoKSkKICAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudElu
ZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuc2l6ZSgpIC0gMTsKIApAQCAtNDMyLDcg
KzQzMiw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tG
b3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0CiAgICAgICAgIGl0ZW1zLnVuY2hlY2tl
ZEFwcGVuZChXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoV1RGTW92ZShiYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKSk7CiAgICAgfQogICAgIG1faGFzQ3Vy
cmVudEluZGV4ID0gISFiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXg7Ci0gICAgbV9j
dXJyZW50SW5kZXggPSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWVPcigw
KTsKKyAgICBtX2N1cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRl
eC52YWx1ZV9vcigwKTsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1YWRkYTAxYTE3ZmU0
ZDRiMjhmZTNhYzU3YTYxYWQxMmQ2YjlkYjNlLi42Nzc1OWRiYWFiYmQyYjkxY2I3MjU3MzBiMzRk
ZTdmZjcyODM4NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzI5NSw3ICszMjk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVu
ZGVudENhbGxiYWNrcygpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
dWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9u
YWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVG
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPEhhc0luc2Vj
dXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApA
QCAtNTU1Miw3ICs1NTUyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OmNyZWF0aW9uUGFyYW1ldGVycygpCiAgICAgaWYgKG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KQogICAgICAgICBwYXJhbWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSA9IG1fc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlLnZhbHVlKCk7CiAgICAgZWxzZQotICAgICAgICBwYXJhbWV0ZXJzLnNjcm9s
bGJhck92ZXJsYXlTdHlsZSA9IE51bGxvcHQ7CisgICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlID0gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYmFja2dyb3VuZEV4
dGVuZHNCZXlvbmRQYWdlID0gbV9iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U7CiAgICAgcGFy
YW1ldGVycy5sYXllckhvc3RpbmdNb2RlID0gbV9sYXllckhvc3RpbmdNb2RlOwogICAgIHBhcmFt
ZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbiA9IG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsK
QEAgLTYxODAsNyArNjE4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiAgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHBpbm5p
bmcpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xs
YmFyU3R5bGUoV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNj
cm9sbGJhclN0eWxlKQordm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHls
ZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFy
U3R5bGUpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSAmJiAhc2Nyb2xsYmFy
U3R5bGUpCiAgICAgICAgIHJldHVybjsKQEAgLTYxOTAsNyArNjE5MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpT
Y3JvbGxiYXJPdmVyCiAKICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHNjcm9sbGJhclN0
eWxlOwogCi0gICAgV1RGOjpPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGVGb3JNZXNz
YWdlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlRm9yTWVzc2Fn
ZTsKICAgICBpZiAoc2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHNjcm9sbGJhclN0eWxlRm9yTWVz
c2FnZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck92ZXJsYXlTdHlsZT4oc2Nyb2xsYmFyU3R5bGUu
dmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAx
ZWM4ZGYxZGFhZTE4MmFjYjEwOTQ2NDA1MThlNmI5MGRiODNjNzAxLi4yMGZhMWJmNzA5ZTAyMmE3
MDdlYTk4OGJmZTcyMjNmYTBiNzA1ODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMDE4LDggKzEwMTgsOCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgc2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvcik7CiAg
ICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAKLSAgICB2b2lkIHNl
dE92ZXJsYXlTY3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92
ZXJsYXlTdHlsZT4pOwotICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlPiBvdmVybGF5U2Nyb2xsYmFyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJh
ck92ZXJsYXlTdHlsZTsgfQorICAgIHZvaWQgc2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPik7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CiAKICAgICBib29s
IHNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHM7IH0KICAgICB2b2lkIHNldFNob3VsZFJlY29yZE5h
dmlnYXRpb25TbmFwc2hvdHMoYm9vbCBzaG91bGRSZWNvcmRTbmFwc2hvdHMpIHsgbV9zaG91bGRS
ZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzID0gc2hvdWxkUmVjb3JkU25hcHNob3RzOyB9CkBAIC0x
MjE3LDcgKzEyMTcsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBm
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRh
aW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4g
Zm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlk
Q29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE5MTUsNyArMTkxNSw3IEBAIGNs
YXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlBhZ2U+CiAgICAgSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlcjo6
VG9rZW4gbV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50Owog
ICAgICAgICAKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5u
aW5nQmVoYXZpb3I7Ci0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5
U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsKIAogICAg
IHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5MDIzZDU3MTlkMjMxMDA4ZDI4OWQx
NTdlMDJiYzgwNzlhMTBmZTkzLi4zNjE3YmJmY2Q3MDc4Y2ZhYjk1NzgyMGY3YWZiYmM5M2UwNjY3
ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTEzMSw3ICsxMzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHVybCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHVybCkKICAg
ICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNpb25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcg
bWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBsb2FkVHlw
ZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZv
cmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBE
aWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywg
Ym9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0lu
c2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKICAgICBEaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3Jk
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuaAppbmRleCBiYzNmOTg1MDI5NDQzNjZmYjc2ODNmMDgzYjg3ZDEzYjM5M2ZjNzQ2Li4xMzdm
YzFjMzFiMzQ4NzdiZmI2OGE1MTZkZmJjOTA4ZjcxOGJlOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaApA
QCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogICAgICAgICB1aW50
NjRfdCB0b3RhbFNpemU7CiAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIHVpbnQ2NF90PiB0eXBl
U2l6ZXM7CiAgICAgfTsKLSAgICBPcHRpb25hbDxTaXplPiBzaXplOworICAgIHN0ZDo6b3B0aW9u
YWw8U2l6ZT4gc2l6ZTsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBjb29raWVIb3N0TmFtZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAppbmRleCA1MDNjYTYwMzViMmQ2MzcxZmU3
MDMxYWZmYjQyNGU3YzUwYTE0YzYzLi5lY2RlMzRiNzBiMGMwMTM1ODhiOGUxZjI3YzFhMGY2NTNk
ODU1Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTM0
OCw3ICszNDgsNyBAQCB2b2lkIFdlYlZpZXc6OmRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHRhcmdldCwgY29uc3QgV2ViQ29yZQogCiBBZmZpbmVUcmFuc2Zvcm0g
V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHJhbnNm
b3JtVG9TY2VuZSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSk7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Ub1NjZW5lKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKaW5kZXggMTQ5ZGUyYTE3OTk4NzRlOWI1ODQ3NmJi
ZGRhYWRmZjdiOTcwNmNmYy4uNzZhMzg5MTI1OGQ1MzkxOGJiNDFjZGVjYWVkYThhNzQ2YzJhNTQz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgT3B0aW9uYWw8aW50
PiBzX2RhbWFnZUV2ZW50QmFzZTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gc19kYW1hZ2VF
dmVudEJhc2U7CiAKIGNsYXNzIFhEYW1hZ2VOb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoWERhbWFnZU5vdGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKaW5kZXggM2YwNTg1ZDUwYzMzMjJiODdhNDA4ZWIz
YzNmMDk3YjlkZjllYjNmMi4uY2I0OWJkNmEyNGM1N2Y5ZmNhZTc0MzQ2Zjc0NjViNzY1MTQzZDA2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNl
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNl
c0d0ay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1J
bml0aWFsaXplU3RvcmUoKQogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQog
ICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZv
cm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKICAgICAgICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0
PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOwot
ICAgICAgICBPcHRpb25hbDxpbnQ+IGRhbWFnZUJhc2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiBkYW1hZ2VCYXNlOwogICAgICAgICBpZiAoIWRpc3BsYXkuc3VwcG9ydHNYQ29tcG9zaXRl
KCkgfHwgIWRpc3BsYXkuc3VwcG9ydHNYRGFtYWdlKGRhbWFnZUJhc2UpKQogICAgICAgICAgICAg
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggMjBkOTA0YTNkZGIyYTA2NDYxNGMwOTc2ZjM4ZTA5MzIwYmVkMTU0Ni4uZjJk
YThlMTE1ZTEzYTZlMTY5YzQ5MzFkNTE4Njg3ZGVkMzA2MGNhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTMxODgsMTYgKzMxODgsMTYgQEAgLSAodm9pZClfZGlkSGFuZGxlS2V5RXZlbnQ6KFdlYklP
U0V2ZW50ICopZXZlbnQgZXZlbnRXYXNIYW5kbGVkOihCT09MKWV2ZW50V2FzSGEKICAgICBfdWlF
dmVudEJlaW5nUmVzZW50ID0gbmlsOwogfQogCi0tIChPcHRpb25hbDxGbG9hdFBvaW50Pilfc2Ny
b2xsT2Zmc2V0Rm9yRXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9uYWw8
RmxvYXRQb2ludD4pX3Njcm9sbE9mZnNldEZvckV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50CiB7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJTcGFjZUtleSA9IDB4MjA7CiAKICAgICBp
ZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTlNTdHJpbmcg
KmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczsKICAgICBpZiAoIWNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5sZW5ndGgpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgZW51bSBTY3JvbGxpbmdJbmNyZW1lbnQgeyBEb2N1bWVudCwgUGFnZSwgTGluZSB9OwogICAg
IGVudW0gU2Nyb2xsaW5nRGlyZWN0aW9uIHsgVXAsIERvd24sIExlZnQsIFJpZ2h0IH07CkBAIC0z
MjQ5LDcgKzMyNDksNyBAQCAtIChPcHRpb25hbDxGbG9hdFBvaW50Pilfc2Nyb2xsT2Zmc2V0Rm9y
RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQKICAgICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBdID09IGtXZWJTcGFjZUtleSkKICAgICAgICAgcmV0
dXJuIGNvbXB1dGVPZmZzZXQoUGFnZSwgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZs
YWdNYXNrU2hpZnQpID8gVXAgOiBEb3duKTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKEJPT0wpX2ludGVycHJldEtleUV2ZW50OihXZWJJ
T1NFdmVudCAqKWV2ZW50IGlzQ2hhckV2ZW50OihCT09MKWlzQ2hhckV2ZW50CkBAIC0zMjY2LDcg
KzMyNjYsNyBAQCAtIChCT09MKV9pbnRlcnByZXRLZXlFdmVudDooV2ViSU9TRXZlbnQgKilldmVu
dCBpc0NoYXJFdmVudDooQk9PTClpc0NoYXJFdmVudAogICAgIGlmICghY29udGVudEVkaXRhYmxl
ICYmIGV2ZW50LmlzVGFiS2V5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBpZiAoT3B0aW9u
YWw8RmxvYXRQb2ludD4gc2Nyb2xsT2Zmc2V0ID0gW3NlbGYgX3Njcm9sbE9mZnNldEZvckV2ZW50
OmV2ZW50XSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHNjcm9sbE9mZnNl
dCA9IFtzZWxmIF9zY3JvbGxPZmZzZXRGb3JFdmVudDpldmVudF0pIHsKICAgICAgICAgW193ZWJW
aWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KnNjcm9sbE9mZnNldF07CiAgICAgICAgIHJldHVy
biBZRVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IDAxNmM2YjkzMzQ2NTNjZmVhMjI5
MGIyMTY1MDBhYjAwOTIxYmRlNmYuLjE3ZjY2YjcxNzc5YzA1NDljZjY4YWUyODE2NTgxOGE3Mjlk
NjYzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vz
c2lvblN0YXRlQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xl
Z2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAgLTI4Miw4ICsyODIsOCBAQCBzdGF0aWMgdm9p
ZCBlbmNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9yeUVudHJ5RGF0YUVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEhUVFBCbwogICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOwogCiAgICAgICAgIGVuY29k
ZXIgPDwgZWxlbWVudC5maWxlU3RhcnQ7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxl
TGVuZ3RoLnZhbHVlT3IoLTEpOwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
cXVpZXRfTmFOKCkpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1
ZV9vcigtMSk7CisgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lLnZhbHVlX29yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6
OkJsb2I6CkBAIC03MDQsMTMgKzcwNCwxMyBAQCBjbGFzcyBIaXN0b3J5RW50cnlEYXRhRGVjb2Rl
ciB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYXV0byBvcGVyYXRv
cj4+KE9wdGlvbmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQorICAgIGF1
dG8gb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPFQ+JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXIm
Pjo6dHlwZQogICAgIHsKICAgICAgICAgdWludDMyX3QgdW5kZXJseWluZ0VudW1WYWx1ZTsKICAg
ICAgICAgKnRoaXMgPj4gdW5kZXJseWluZ0VudW1WYWx1ZTsKIAogICAgICAgICBpZiAoIWlzVmFs
aWQoKSB8fCAhaXNWYWxpZEVudW0oc3RhdGljX2Nhc3Q8VD4odW5kZXJseWluZ0VudW1WYWx1ZSkp
KQotICAgICAgICAgICAgdmFsdWUgPSBOdWxsb3B0OworICAgICAgICAgICAgdmFsdWUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8
VD4odW5kZXJseWluZ0VudW1WYWx1ZSk7CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBjbGFzcyBIaXN0
b3J5RW50cnlEYXRhRGVjb2RlciB7CiAKIHN0YXRpYyB2b2lkIGRlY29kZUZvcm1EYXRhRWxlbWVu
dChIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgZGVjb2RlciwgSFRUUEJvZHk6OkVsZW1lbnQmIGZv
cm1EYXRhRWxlbWVudCkKIHsKLSAgICBPcHRpb25hbDxGb3JtRGF0YUVsZW1lbnRUeXBlPiBlbGVt
ZW50VHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZvcm1EYXRhRWxlbWVudFR5cGU+IGVsZW1lbnRU
eXBlOwogICAgIGRlY29kZXIgPj4gZWxlbWVudFR5cGU7CiAgICAgaWYgKCFlbGVtZW50VHlwZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgc3RhdGljIGJvb2wgZGVjb2Rl
VjFTZXNzaW9uSGlzdG9yeShDRkRpY3Rpb25hcnlSZWYgc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5
LCBCYWMKICAgICBhdXRvIGN1cnJlbnRJbmRleE51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51
bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LCBz
ZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleEtleSkpOwogICAgIGlmICghY3VycmVudEluZGV4TnVt
YmVyKSB7CiAgICAgICAgIC8vIE5vIGN1cnJlbnQgaW5kZXggbWVhbnMgdGhlIGRpY3Rpb25hcnkg
cmVwcmVzZW50cyBhbiBlbXB0eSBzZXNzaW9uLgotICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0
ZS5jdXJyZW50SW5kZXggPSBOdWxsb3B0OworICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5j
dXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRl
Lml0ZW1zID0geyB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5oCmluZGV4IGQ3MWUxMGM3ZWM3YTU1ZDIwOTNhYTNkYWI4ZmM2YThlYWU0ODAz
ZTguLjNlNWU5YmYwMDIzOWM2YmFkZWRiZjUzYmU0YmM5OGNlYTI5OWNmZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5oCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkgZmluYWwgOiBwdWJsaWMgRHJhd2luZ0FyZWFQcm94eSB7CiAgICAg
dm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2
b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBmbG9hdCBpbmRpY2F0b3JTY2Fs
ZShXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkubW0KaW5kZXggZWY1YzMzOGE5ZTAyMTMzZDEzMDFkMGYwODQ3Yjk3Mzc0YjhiYmEz
OC4uMzQ5MzBkZDFjNDBlNWMwZjVhZGFjNDI1NTBhOTA3MTI0MmM0ZTJjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6YWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3Qg
bGF5ZXJJCiBzdGF0aWMgY29uc3QgZmxvYXQgaW5kaWNhdG9ySW5zZXQgPSAxMDsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6c2V0Vmll
d0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0
KQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJl
Y3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsK
ICAgICBEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3Qodmlld0V4cG9zZWRSZWN0
KTsKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvclBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5jcHAKaW5kZXggMWZmNTliZWRjZTMzZjc1MWQ5MzA4M2FiMDU4MDZlM2Q2OWQzZTg1NS4uMGRk
ZjYzZmQyM2VlYmQ5ODI3ZmM4MzBhMWQyZjFjYmRmZTVhNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcApAQCAtMTE3LDE3ICsxMTcsMTcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6
OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXIKICAg
ICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKHBheW1lbnRNZXJjaGFudFNlc3Npb24pKTsKIH0KIAot
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRl
bXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdU
b3RhbEFuZEl0ZW1zKQogewogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc3RhdHVzKSwgbmV3VG90YWxBbmRJdGVtcykpOwogfQogCi12b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2Vi
Q29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2Rz
LCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5l
d1RvdGFsQW5kSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMg
c3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0
aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKIHsKICAgICBtX3dl
YlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGF0dXMpLCBu
ZXdTaGlwcGluZ01ldGhvZHMsIG5ld1RvdGFsQW5kSXRlbXMpKTsKIH0KIAotdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRl
bXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGlu
ZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogewogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKG5ld1RvdGFsQW5kSXRlbXMpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IDM2YjJh
YTQ3MTdmNjJlNjIxY2RmOTk0OTNmNGEyMTk2ZjgyZjk0ZGYuLjIzOWNlNzczOTA3Mzk0NzE3MWRk
MDlhOGFkZWQ2NGY0ZjRjZTUxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTksOSArNTks
OSBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcgogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hp
cHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5k
TGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRl
UGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdU
b3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0
U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFu
ZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhYm9ydFBheW1l
bnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRl
eCBkMzJkYWQ2ZTdiOGVmYTBkNjE3NTg0ZmIxODlhMGRhZmRkMWZjNTlkLi44MjgwMThhZjI3OTBi
NDkxNTA5NzQzZmJjNDljMTZlNTYyYTEyNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCkBAIC02OTQsNyArNjk0LDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5T3JpZ2lu
c1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogCiB2b2lkIFdLQnVu
ZGxlUGFnZVNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yKiBiZWhhdmlvcikKIHsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gYmVoYXZpb3JWYWx1ZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBiZWhhdmlvclZh
bHVlOwogICAgIGlmIChiZWhhdmlvcikgewogICAgICAgICBzd2l0Y2ggKCpiZWhhdmlvcikgewog
ICAgICAgICBjYXNlIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yUmVzcG9uc2l2ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRl
ZFBERlBsdWdpbi5tbQppbmRleCAwNjM5ZGVmZmVmZjdiZGIzOGNiNjNkYTc1NmQ5YmQ5YTFkYWU5
ZDA5Li5iYWU5NmI2YTJjZGRmOWJiMmM4MDkxMWY3NmE2ZjQ0OGFjZGRmMjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVn
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNh
dGVkUERGUGx1Z2luLm1tCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBJbnRQb2ludCBQREZQbHVnaW46
OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0
CiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEludFBvaW50IHBvaW50SW5QbHVnaW5Db29y
ZGluYXRlcyhwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0
dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1
cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogRmxv
YXRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRS
ZWN0JiByZWN0KSBjb25zdApAQCAtMTIwNyw3ICsxMjA3LDcgQEAgRmxvYXRSZWN0IFBERlBsdWdp
bjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKICAgICBGbG9hdFBvaW50IG9yaWdpbklu
UGx1Z2luQ29vcmRpbmF0ZXMocmVjdC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHJlY3QueSgpIC0g
cmVjdC5oZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFJlY3QoRmxvYXRSZWN0KG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJl
Y3Quc2l6ZSgpKSk7CisgICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBt
X3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBSZWN0KEZsb2F0UmVjdChvcmlnaW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0
LnNpemUoKSkpOwogCiAgICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNs
b3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KQEAgLTEyMjAsNyAr
MTIyMCw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOwogICAgIHJldHVy
biBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKQEAgLTEyMzAsNyArMTIzMCw3IEBAIHZvaWQgUERGUGx1
Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJ
bnRSZWN0JiwgY29uCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7
Ci0gICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBz
ZXRGcmFtZVNpemU6cGx1Z2luU2l6ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IDRhNzJhYjc5MzUyNTliNTRiODQ1ZGFkYzlmYTM2ZmJhOGNhODM2OWEuLjc4MTZkYWM2
ODEzZGJhYjU3YzdmOTk2OTllYTFmYjM3ZmZlNjY1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05MzIsNyArOTMyLDcg
QEAgSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHZvaWQgUERGUGx1
Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
KQogewogICAgIG1fcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdU
cmFuc2Zvcm07Ci0gICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290
Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAg
bV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIG1fc2l6ZSA9IHBsdWdp
blNpemU7CiAKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFt
ZSgpLT52aWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggYTBkOGFiODY2ZmMwYmFkMTAyMGJkMTY1YmZkNTRmNTVlMjFjZjY5
NC4uYWMxZGFhYmFkMDYzYTQ5NjI2YjM3ZTA0MDJlOWViZjU0OTJkM2IxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTIwNSw3
ICsxMjA1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChV
UkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5hbGxvd1BvcHVwcygpID8g
T3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSkgOiBOdWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9y
KHJlcXVlc3QtPmFsbG93UG9wdXBzKCkgPyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAg
IC8vIEZpcnN0LCB0cnkgdG8gZmluZCBhIHRhcmdldCBmcmFtZS4KICAgICBGcmFtZSogdGFyZ2V0
RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50
YXJnZXQoKSk7CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCBib29sIFBsdWdpblZpZXc6OmV2YWx1YXRl
KE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaQog
ICAgIC8vIHByb3RlY3QgdGhlIHBsdWctaW4gdmlldyBmcm9tIGRlc3RydWN0aW9uLgogICAgIE5Q
UnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9ucFJ1
bnRpbWVPYmplY3RNYXApOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGlj
YXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogTnVsbG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQp
OwogICAgIHJldHVybiBtX25wUnVudGltZU9iamVjdE1hcC5ldmFsdWF0ZShucE9iamVjdCwgc2Ny
aXB0U3RyaW5nLCByZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCmluZGV4IGM5OTMy
NmRmMTIzZTg1MzlmNzZjNzNjMGEzNDg2ODg0OTA0ZDc5NDkuLjlmZGI4NjU0ODVhMjA5NGJhNjk0
ZTg2MGNmOWM1ODBlOTFlNWViMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCkBAIC0xNjQsNyAr
MTY0LDcgQEAgdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBvcHVsYXRlUGx1Z2luQ2FjaGUo
Y29uc3QgV2ViQ29yZTo6UGFnZSYgcGFnZSkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQot
T3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1By
b3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3Qs
IGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mIGluZm8pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1
Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBXZWJD
b3JlOjpQbHVnaW5JbmZvJiBpbmZvKSBjb25zdAogewogICAgIFN0cmluZyBob3N0VG9Mb29rVXAg
PSBob3N0OwogICAgIFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwpA
QCAtMTgxLDcgKzE4MSw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xp
Y3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVuCiAgICAgICAgIH0KICAg
ICB9CiAgICAgaWYgKHBvbGljaWVzQnlJZGVudGlmaWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1
Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcG9saWNpZXNCeUlkZW50aWZpZXIg
PSBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yLT52YWx1ZTsKIApAQCAtMTk1LDcgKzE5NSw3
IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVuCiAgICAgfQogCiAgICAgaWYgKGlkZW50aWZpZXJQ
b2xpY3lJdGVyYXRvciA9PSBwb2xpY2llc0J5SWRlbnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiB2
ZXJzaW9uc1RvUG9saWNpZXMgPSBpZGVudGlmaWVyUG9saWN5SXRlcmF0b3ItPnZhbHVlOwogCkBA
IC0yMDksNyArMjA5LDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGlj
eT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW4KICAgICB9CiAKICAgICBp
ZiAocG9saWN5SXRlcmF0b3IgPT0gdmVyc2lvbnNUb1BvbGljaWVzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBwb2xpY3lJdGVyYXRvci0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgKaW5kZXggN2E3MzJl
ZmU3MDYwYTIzZjZlOTFlN2UwNjczZDE3YmM4YmUyYzRiYS4uZjc2ZDNmNTg1OGVlYTI2YzJkZWU3
NmIxMjEzNjI5YmYyM2Q2ZjBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBXZWJQbHVnaW5JbmZvUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGx1
Z2luSW5mb1Byb3ZpZGVyIHsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9z
dChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJikgY29uc3Q7CiAgICAg
U3RyaW5nIGxvbmdlc3RNYXRjaGVkV2lsZGNhcmRIb3N0Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhv
c3QpIGNvbnN0OwogICAgIGJvb2wgcmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChT
dHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KaW5kZXggYzZjYzZhYmRhZGNhZWM1YjRhZDBjNTg2OGI3
NzdhNTJlMmI0ZWUxMy4uODg2NDE1MjVlNTJiOTc5ZGU0MDNhNmU2YTcxMDJjZDNhMjVkMzI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3Jv
bGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KQEAgLTk3LDcgKzk3LDcgQEAgdm9p
ZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6YnVpbGRUcmFuc2FjdGlvbihSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW4KIC8vIE5vdGlmaWNhdGlvbiBmcm9tIHRoZSBVSSBwcm9jZXNz
IHRoYXQgd2Ugc2Nyb2xsZWQuCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3Jv
bGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZs
b2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIHN5bmNMYXllclBvc2l0aW9uKQogewotICAg
IHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKG5vZGVJRCwgc2Ny
b2xsUG9zaXRpb24sIE51bGxvcHQsIGZhbHNlIC8qIEZJWE1FICovLCBzeW5jTGF5ZXJQb3NpdGlv
biA/IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgOiBTY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uOjpTZXQpOworICAgIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRl
ckFzeW5jU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIHN0ZDo6bnVsbG9wdCwgZmFsc2Ug
LyogRklYTUUgKi8sIHN5bmNMYXllclBvc2l0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbjo6U3luYyA6IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CiB9CiAKIHZv
aWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzQ2hh
bmdlZEZvck5vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwg
dW5zaWduZWQgdmVydGljYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApp
bmRleCAxY2E3ZjQ0OTdhNzk4YjNlNWRlZDRhZWViMThlYWNjMmYxOWFhNzcxLi4yOGY3NTdmZmUw
YjQzNDZmMjYzNzk5ZjA0N2Y3NjE0N2I2ODQ0Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gdG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAg
ICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVt
ZW50LmZpbGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoQmxvYkRhdGFJdGVtOjp0
b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9y
KGludmFsaWRGaWxlVGltZSgpKSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJh
bmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5n
dGgudmFsdWVfb3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcihpbnZhbGlkRmlsZVRpbWUoKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6Qmxv
YjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA4MWQ1NjE5NTUzMDVlYzAzNTJlMzU5MWQ5
Yzk1NDExOTdiYWNmODgwLi43ZjBlNzVkY2I5ODIzYmIyZGRjMTBjZTYwOTFkMTk0NGFkOTIyYTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFy
U3R5bGUgbmV3U3R5bGUKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShzdGF0aWNfY2FzdDxpbnQzMl90Pihu
ZXdTdHlsZSkpKTsKIH0KIAotV1RGOjpPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IFdl
YkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkKK3N0ZDo6b3B0
aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBXZWJDaHJvbWVDbGllbnQ6OnByZWZlcnJlZFNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+c2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCk7IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNmE3ZWNjNGFhYTdiZjA0
NTAzNDg4YjFkNjU2MzBmY2E1MGE5ZjQ3OS4uMDVlNGIzNWExZGUxOGI5ZWJlZjg1NDA1MjZhZmIy
YTVlZmRmZDc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yODAsNyArMjgwLDcgQEAgY2xh
c3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CiAgICAg
dm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRD
aGFuZ2UoV2ViQ29yZTo6U2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUpIG92ZXJyaWRlOwogCi0gICAg
V1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUo
KSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxYzg4MTUz
MGFhNDFhYWY3ZWFjMjJhMWZiMDI2N2M4N2JmZDI2NWUxLi5lZGVmZGI4ZjM0MjBkYWVkNTFjYjFh
YjUzODY0YzE3MTAyZjJiMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpCiAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2Zy
YW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0cmluZygpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50KQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8
SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQpCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC00NTQsNyAr
NDU0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGEKICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0
ZW5zaW9uVHJhY2tlcigpLmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZChtX2ZyYW1lKTsKIAogICAg
IC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9j
dW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWlt
ZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1l
bnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7
IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1
bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExv
YWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29tcHV0
ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVy
biBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgp
LT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGYyYmJiYWY1N2E3Nzg2NzBkZTI0OWZl
MTZkNDFmZTNmNzEyNmU3YmMuLmRiMmY5NDkxNDA3MjQwNzc3M2JkMDg2ZjdmOGI5YWNkMDdlZWE3
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xh
c3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnQgewogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlv
biYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdl
YkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA3ODNhZGVjMzVm
MmNmMzg0ZWNiZGM0NjBlNjc3MGU5NGQ0MDg5MGE3Li44ZTRkMDljNDg0M2IxYWMxMzRhNTkyYmVk
YThhNjk5ZGM2N2Q3OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaApAQCAtODgsOCArODgsOCBAQCBjbGFzcyBEcmF3aW5nQXJlYSA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNv
bnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4pID0gMDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSA9
IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4
cG9zZWRSZWN0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkQW5p
bWF0aW9uRGlkU3RhcnQodWludDY0X3QgLypsYXllcklEKi8sIGNvbnN0IFN0cmluZyYgLyprZXkq
LywgZG91YmxlIC8qc3RhcnRUaW1lKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRl
ZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCAvKmxheWVySUQqLywgY29uc3QgU3RyaW5nJiAvKmtl
eSovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCA4NDgzMmIzMzM0YWM1MWU2YTZkMWNlMTI1
M2FkYTc2YzYwNGRjZGRiLi5iMDc2ZjM0YzFhYzY4YzM5ZDBkODAwZjNlYWFjNDA2NWYwNTcwZWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0yOSw3ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdp
bmdBcmVhIHsKICAgICBVcGRhdGVHZW9tZXRyeShXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBX
ZWJDb3JlOjpJbnRTaXplIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBX
ZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAgICBTZXREZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBXZWJL
aXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpCi0gICAgU2V0Vmlld0V4cG9zZWRSZWN0KE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQorICAgIFNldFZpZXdF
eHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKQogICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGY0YzBkM2RhZjExNmY1ZGEyMGYyODEyYWRhOGNk
MzgxYWVlODY3ODIuLjUzODFiNzUzYmJjYWM1MDBmZDY1MzNlNzA5MWVjNDhkNWUyNmM5NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAt
NDE4LDcgKzQxOCw3IEBAIENlcnRpZmljYXRlSW5mbyBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZv
KCkgY29uc3QKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygp
LnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KTsKKyAgICBy
ZXR1cm4gdmFsdWVPckNvbXB1dGUoZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNh
dGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KTsKIH0KIAogU3RyaW5n
IFdlYkZyYW1lOjppbm5lclRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ5NTAxODNmNTFjMjU3MjkxM2ZjYWI3MmQ2NDAx
NTlmMTc5MjEyMzYuLjAyNTdmNzJiNzY3NTc3YTYzMzRlZDU0M2FiYjA3NzliOGM5OWE3NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ0
OSw3ICs0NDksNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBpZiAocGFyYW1ldGVycy5z
Y3JvbGxiYXJPdmVybGF5U3R5bGUpCiAgICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0g
c3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihwYXJhbWV0ZXJzLnNjcm9sbGJhck92
ZXJsYXlTdHlsZS52YWx1ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fc2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlID0gV1RGOjpPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CisgICAgICAg
IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RkOjpvcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5
U3R5bGU+KCk7CiAKICAgICBzZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UocGFyYW1ldGVy
cy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpOwogCkBAIC01Mzk0LDEyICs1Mzk0LDEyIEBA
IHZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcp
CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPnNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cihtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKFdURjo6T3B0aW9uYWw8dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQor
dm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAgaWYgKHNjcm9sbGJhclN0eWxlKQogICAgICAg
ICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck92ZXJsYXlT
dHlsZT4oc2Nyb2xsYmFyU3R5bGUudmFsdWUoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3Njcm9s
bGJhck92ZXJsYXlTdHlsZSA9IFdURjo6T3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPigp
OworICAgICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHN0ZDo6b3B0aW9uYWw8U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPigpOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNh
bGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2OTMwNTNmN2Q4MmJhNGY5ZTg5ZWNkMTY5
N2M4YTE2ZGI4YWJjMjQxLi4xODMxZjJiNTAwNDIxZDhkYzcwN2RhOTFkZWYyYWE4M2M1Mzc4MzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTkx
MCw4ICs5MTAsOCBAQCBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUAogICAgIFdlYkNvcmU6OlNjcm9s
bFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSB7IHJldHVybiBtX3Njcm9s
bFBpbm5pbmdCZWhhdmlvcjsgfQogICAgIHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVp
bnQzMl90IC8qIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciAqLyBwaW5uaW5nKTsKIAot
ICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsgfQotICAg
IHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdURjo6T3B0aW9uYWw8dWludDMyX3QgLyog
V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlICovPiBzY3JvbGxiYXJTdHlsZSk7CisgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92
ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOyB9CisgICAgdm9p
ZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdCAvKiBXZWJD
b3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgKi8+IHNjcm9sbGJhclN0eWxlKTsKIAogICAgIFJl
ZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6
RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2Vi
RG9jdW1lbnRMb2FkZXImLCBXZWJDb3JlOjpGcmFtZSYpOwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAg
Y2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICAgICB1bnNpZ25lZCBtX21heGltdW1SZW5kZXJpbmdT
dXBwcmVzc2lvblRva2VuIHsgMCB9OwogICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdC
ZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciB7IFdlYkNvcmU6OkRvTm90UGluIH07Ci0g
ICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsKIAogICAgIGJvb2wgbV91c2VBc3lu
Y1Njcm9sbGluZyB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOWZjYjhlMzQ4ODdlMTU4MDIw
MjkxNjhmMzU5YmFmNGFiZGRiZmI4Mi4uMWIxMTE5OTkzM2Y5YzVhZmU5YTExOTkyMjk4ZDRkYjli
YzA2N2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQwNCw3ICs0MDQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgU2V0U2Nyb2xsUGlubmluZ0JlaGF2
aW9yKHVpbnQzMl90IHBpbm5pbmcpCi0gICAgU2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKE9wdGlv
bmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkKKyAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5
bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCiAKICAgICBHZXRCeXRl
Y29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oCmluZGV4IGYzNDY1ZDJiNzA1ODY4NGI0OTI0MTkyZTdjNTZjMWQ1YmM0N2Fj
ZjAuLmZkMDcxNDhmYTM1ZjFhM2JiYWMzMmRkYTI4NjljOTM4NmIwOTA0NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAgLTgzLDggKzgzLDggQEAgY2xhc3MgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0FyZWEsIHB1YmxpYyBXZWJDb3Jl
OjpHcmFwaGljc0wKICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwogICAgIGJvb2wg
Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2Vk
UmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7
IH0KKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGVkVmll
d0V4cG9zZWRSZWN0OyB9CiAKICAgICB2b2lkIGFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQo
dWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSBzdGFydFRpbWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5
ZXJJRCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwpAQCAtMTQxLDggKzE0MSw4IEBAIGNs
YXNzIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIDogcHVibGljIERyYXdpbmdBcmVhLCBwdWJs
aWMgV2ViQ29yZTo6R3JhcGhpY3NMCiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld1NpemU7
CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0Owot
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVj
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJl
Y3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fc2Nyb2xsZWRWaWV3
RXhwb3NlZFJlY3Q7CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2xheWVyRmx1c2hUaW1lcjsKICAg
ICBib29sIG1faXNGbHVzaGluZ1N1c3BlbmRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCmluZGV4IDU5NGQ5MDBlZmYwMjIwZjgzY2RhZjBjM2ZkOThiOWViZjcxOTJiY2Qu
LjVhNjczMzRkOGFhM2E0NjFiMzM4ZTBiOGVhODQwNzFkZGM4ZDA3ZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90
IGxheWVySUQsIGNvCiAgICAgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LT5hbmltYXRpb25EaWRF
bmQobGF5ZXJJRCwga2V5KTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9z
ZWRSZWN0KQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRS
ZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7
CiAgICAgbV92aWV3RXhwb3NlZFJlY3QgPSB2aWV3RXhwb3NlZFJlY3Q7CiAgICAgdXBkYXRlU2Ny
b2xsZWRFeHBvc2VkUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oCmluZGV4IDdhNmIwZTJmMDRlOTVhZjBkNDliZjdjODg4MzI0M2JkOTM4OGQzOGIuLjk1ODMz
OGEwM2VlN2M3YWRhNWYxYzNjZWI4OWI3ODE1ZGNmZmQ0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTcyLDggKzcyLDggQEAgY2xhc3MgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0FyZWEsIFdlYkNvcmU6OkxheWVy
Rmx1c2hTY2gKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChj
b25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFZpZXdFeHBv
c2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2b2lkIHNldFZpZXdF
eHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0OyB9CiAKICAg
ICBib29sIHN1cHBvcnRzQXN5bmNTY3JvbGxpbmcoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKQEAgLTEzNyw4ICsxMzcsOCBAQCBjbGFzcyBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YSA6IHB1YmxpYyBEcmF3aW5nQXJlYSwgV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaAogCiAgICAgYm9v
bCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQ7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJl
Y3Q+IG1fdmlld0V4cG9zZWRSZWN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4g
bV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZs
b2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7CiAKICAgICBXZWJDb3JlOjpJbnRT
aXplIG1fbGFzdFNlbnRJbnRyaW5zaWNDb250ZW50U2l6ZTsKICAgICBib29sIG1faW5VcGRhdGVH
ZW9tZXRyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4
IDU4ZDhhOWFjYjBjM2Q4YTZlNjQwOTRmZWZiZTk2MjAyYjg0ZTYxZTkuLmY0ZWVhMDFmZTZlYTU3
MWMzYjVjYjQzMGY5YzE4NzQzY2U5YTQwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkKICAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJE
aWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdDptX2hvc3RpbmdMYXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJd
XTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9z
ZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgbV92
aWV3RXhwb3NlZFJlY3QgPSB2aWV3RXhwb3NlZFJlY3Q7CiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBv
c2VkUmVjdCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDZhMjUzNmM5YzZmOTYwZjEwMzdiMzk3YjhjZDk5ZmRiNDFkOTFhYTQuLmY4ZDJhNzBi
Zjc4NGQ4OTU2N2M4ODgxNDEzOTQxOGQzYmMyNDcyY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxNi0xMS0yNiAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJ
bXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRp
b25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkgYW5kIFNhbSBXZWluaWcuCisK
KyAgICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKToKKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKToKKyAgICAgICAgKiBUZXN0
UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmg6CisgICAgICAgIChXVFI6OkpTVmFs
dWVNYWtlQm9vbGVhbk9yTnVsbCk6CisgICAgICAgIChXVFI6OkpTVmFsdWVUb051bGxhYmxlQm9v
bGVhbik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzdGFi
bGVTdGF0ZU92ZXJyaWRlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRT
dGFibGVTdGF0ZU92ZXJyaWRlKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9PcHRpb25hbC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1MSW50ZWdlcik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNr
UmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNl
cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRl
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJy
aWRlKToKKwogMjAxNi0xMS0yNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEZpeCBjb21waWxlIHdhcm5pbmdzIGFmdGVyIHIyMDg0MTUKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGM2
Y2EwZDU1M2U1YzJiZTVmOTI1Njk3ZTVjM2YyZDJhY2EzNGU5ZDguLmZmOWQ1N2E1OGI4OTBkOTc3
NTY3YWNlZWEwYjgyZjA3ODUwNjYwMjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMTk5LDEyICsxOTksMTIgQEAgZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IGdXZWJTY3JvbGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFVJ
U2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAot
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8
Ym9vbD4pCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShz
dGQ6Om9wdGlvbmFsPGJvb2w+KQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0Jp
bmRpbmdzL0pTV3JhcHBhYmxlLmgKaW5kZXggMTViMzkwZGM0MTUyY2RiOWJmY2IxNWEyMGM2ZDc3
Yzc3MDM2MWZjYi4uZTc5MjA4Y2FlZTNiYTVmZWM2NWI3MjhiMzYxM2EwMTZhNWEyMDhhZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oCisr
KyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNXcmFwcGFibGUuaApAQCAtMzcs
MTQgKzM3LDE0IEBAIGNsYXNzIEpTV3JhcHBhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8SlNXcmFw
cGFibGU+IHsKICAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNsYXNzKCkgPSAwOwogfTsK
IAotaW5saW5lIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VCb29sZWFuT3JOdWxsKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBPcHRpb25hbDxib29sPiB2YWx1ZSkKK2lubGluZSBKU1ZhbHVlUmVmIEpTVmFs
dWVNYWtlQm9vbGVhbk9yTnVsbChKU0NvbnRleHRSZWYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxi
b29sPiB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUgPyBKU1ZhbHVlTWFrZUJvb2xlYW4oY29u
dGV4dCwgdmFsdWUudmFsdWUoKSkgOiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7CiB9CiAKLWlu
bGluZSBPcHRpb25hbDxib29sPiBKU1ZhbHVlVG9OdWxsYWJsZUJvb2xlYW4oSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxib29sPiBK
U1ZhbHVlVG9OdWxsYWJsZUJvb2xlYW4oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkg
fHwgSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgPyBOdWxsb3B0IDogT3B0aW9uYWw8Ym9v
bD4oSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCB2YWx1ZSkpOworICAgIHJldHVybiBKU1ZhbHVl
SXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFs
dWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxib29sPihKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIHZhbHVlKSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3Ry
aW5nT3JOdWxsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiBzdHJpbmdPck51bGwp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA5YWNlMjAyZDFkOGUwMmY1ZjgxZTNkYTFj
MTM0NDI5MmQ5YjNlM2NmLi4xNjkxMTQ1YWM5YzM4ZjVlY2M4NmMwMDRiZWQ2NGJhMTdhMWUzYWUw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI4OCwxMiArMjg4LDEyIEBAIGRvdWJs
ZSBVSVNjcmlwdENvbnRyb2xsZXI6Om1heGltdW1ab29tU2NhbGUoKSBjb25zdAogICAgIHJldHVy
biAxOwogfQogCi1PcHRpb25hbDxib29sPiBVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRl
T3ZlcnJpZGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxib29sPiBVSVNjcmlwdENvbnRyb2xsZXI6
OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAogewotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRT
dGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KQordm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBhZmM4Y2ZhZTBiMTQ5Mzc5ODA2NWIzYWMzMzVlMTAy
YzVkNDRjMjY2Li4wNDkzMjY5NmU5ZTViMDc4OGJkYWI3OTQ2ZTUwNWI5MzU0MDEyYTYxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMTIyLDggKzEyMiw4IEBAIGNsYXNzIFVJU2NyaXB0Q29u
dHJvbGxlciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2Nh
bGUoKSBjb25zdDsKICAgICBkb3VibGUgbWF4aW11bVpvb21TY2FsZSgpIGNvbnN0OwogICAgIAot
ICAgIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdDsKLSAgICB2b2lk
IHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pOworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gc3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhYmxl
U3RhdGVPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+KTsKIAogICAgIEpTT2JqZWN0UmVmIGNv
bnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvT3B0aW9uYWwuY3BwCmluZGV4IGEwNzE1ZmQ2MmZlNzZjMTAyYzQ0M2ExYzc3NDZmNmQ0
Yjg4Yzc0YmIuLmE3MDg4MWYzNWM5ODI3MDdkODczNmQ2OTFjZGFhMmY3NzA5ZTIwZWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL09wdGlvbmFsLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKQEAgLTMyLDEzICszMiwx
MyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdURl9PcHRpb25hbCwgRGlzZW5n
YWdlZCkKIHsKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gb3B0aW9uYWw7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiBvcHRpb25hbDsKIAogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CiAKICAgICB7Ci0gICAgICAgIE9wdGlv
bmFsPGludD4gb3B0aW9uYWwgeyBOdWxsb3B0IH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBvcHRpb25hbCB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0
aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAgIH0KQEAgLTQ2LDcgKzQ2LDcgQEAgVEVTVChX
VEZfT3B0aW9uYWwsIERpc2VuZ2FnZWQpCiAKIFRFU1QoV1RGX09wdGlvbmFsLCBFbmdhZ2VkKQog
ewotICAgIE9wdGlvbmFsPGludD4gb3B0aW9uYWwgeyAxMCB9OworICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiBvcHRpb25hbCB7IDEwIH07CiAKICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29s
PihvcHRpb25hbCkpOwogICAgIEVYUEVDVF9FUSgxMCwgb3B0aW9uYWwudmFsdWUoKSk7CkBAIC02
NCw3ICs2NCw3IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBEZXN0cnVjdG9yKQogICAgIH07CiAKICAg
ICB7Ci0gICAgICAgIE9wdGlvbmFsPEE+IG9wdGlvbmFsIHsgSW5QbGFjZSB9OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPEE+IG9wdGlvbmFsIHsgc3RkOjppbl9wbGFjZSB9OwogCiAgICAgICAgIEVY
UEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgfQpAQCAtNzUsOCAr
NzUsOCBAQCBURVNUKFdURl9PcHRpb25hbCwgRGVzdHJ1Y3RvcikKIFRFU1QoV1RGX09wdGlvbmFs
LCBDYWxsYmFjaykKIHsKICAgICBib29sIGNhbGxlZCA9IGZhbHNlOwotICAgIE9wdGlvbmFsPGlu
dD4gYTsKLSAgICBpbnQgcmVzdWx0ID0gYS52YWx1ZU9yQ29tcHV0ZShbJl0geworICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBhOworICAgIGludCByZXN1bHQgPSB2YWx1ZU9yQ29tcHV0ZShhLCBbJl0g
ewogICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMzAwOwogICAgIH0pOwpA
QCAtODUsNyArODUsNyBAQCBURVNUKFdURl9PcHRpb25hbCwgQ2FsbGJhY2spCiAKICAgICBhID0g
MjUwOwogICAgIGNhbGxlZCA9IGZhbHNlOwotICAgIHJlc3VsdCA9IGEudmFsdWVPckNvbXB1dGUo
WyZdIHsKKyAgICByZXN1bHQgPSB2YWx1ZU9yQ29tcHV0ZShhLCBbJl0gewogICAgICAgICBjYWxs
ZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMzAwOwogICAgIH0pOwpAQCAtOTUsMjIgKzk1LDIy
IEBAIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFjaykKIAogVEVTVChXVEZfT3B0aW9uYWwsIEVx
dWFsaXR5KQogewotICAgIE9wdGlvbmFsPGludD4gdW5lbmdhZ2VkMTsKLSAgICBPcHRpb25hbDxp
bnQ+IHVuZW5nYWdlZDI7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHVuZW5nYWdlZDE7CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IHVuZW5nYWdlZDI7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGVuZ2Fn
ZWQxIHsgMSB9OwotICAgIE9wdGlvbmFsPGludD4gZW5nYWdlZDIgeyAyIH07Ci0gICAgT3B0aW9u
YWw8aW50PiBlbmdhZ2VkeDIgeyAyIH07CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVuZ2FnZWQx
IHsgMSB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBlbmdhZ2VkMiB7IDIgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGludD4gZW5nYWdlZHgyIHsgMiB9OwogCiAgICAgRVhQRUNUX1RSVUUodW5lbmdh
Z2VkMSA9PSB1bmVuZ2FnZWQyKTsKICAgICBFWFBFQ1RfRkFMU0UoZW5nYWdlZDEgPT0gZW5nYWdl
ZDIpOwogICAgIEVYUEVDVF9GQUxTRShlbmdhZ2VkMSA9PSB1bmVuZ2FnZWQxKTsKICAgICBFWFBF
Q1RfVFJVRShlbmdhZ2VkMiA9PSBlbmdhZ2VkeDIpOwogCi0gICAgRVhQRUNUX1RSVUUodW5lbmdh
Z2VkMSA9PSBOdWxsb3B0KTsKLSAgICBFWFBFQ1RfRkFMU0UoZW5nYWdlZDEgPT0gTnVsbG9wdCk7
Ci0gICAgRVhQRUNUX1RSVUUoTnVsbG9wdCA9PSB1bmVuZ2FnZWQxKTsKLSAgICBFWFBFQ1RfRkFM
U0UoTnVsbG9wdCA9PSBlbmdhZ2VkMSk7CisgICAgRVhQRUNUX1RSVUUodW5lbmdhZ2VkMSA9PSBz
dGQ6Om51bGxvcHQpOworICAgIEVYUEVDVF9GQUxTRShlbmdhZ2VkMSA9PSBzdGQ6Om51bGxvcHQp
OworICAgIEVYUEVDVF9UUlVFKHN0ZDo6bnVsbG9wdCA9PSB1bmVuZ2FnZWQxKTsKKyAgICBFWFBF
Q1RfRkFMU0Uoc3RkOjpudWxsb3B0ID09IGVuZ2FnZWQxKTsKIAogICAgIEVYUEVDVF9UUlVFKGVu
Z2FnZWQxID09IDEpOwogICAgIEVYUEVDVF9UUlVFKDEgPT0gZW5nYWdlZDEpOwpAQCAtMTIwLDIy
ICsxMjAsMjIgQEAgVEVTVChXVEZfT3B0aW9uYWwsIEVxdWFsaXR5KQogCiBURVNUKFdURl9PcHRp
b25hbCwgSW5lcXVhbGl0eSkKIHsKLSAgICBPcHRpb25hbDxpbnQ+IHVuZW5nYWdlZDE7Ci0gICAg
T3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQyOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB1bmVuZ2Fn
ZWQxOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQyOwogCi0gICAgT3B0aW9uYWw8
aW50PiBlbmdhZ2VkMSB7IDEgfTsKLSAgICBPcHRpb25hbDxpbnQ+IGVuZ2FnZWQyIHsgMiB9Owot
ICAgIE9wdGlvbmFsPGludD4gZW5nYWdlZHgyIHsgMiB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBlbmdhZ2VkMSB7IDEgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZW5nYWdlZDIgeyAyIH07
CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVuZ2FnZWR4MiB7IDIgfTsKIAogICAgIEVYUEVDVF9G
QUxTRSh1bmVuZ2FnZWQxICE9IHVuZW5nYWdlZDIpOwogICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQx
ICE9IGVuZ2FnZWQyKTsKICAgICBFWFBFQ1RfVFJVRShlbmdhZ2VkMSAhPSB1bmVuZ2FnZWQxKTsK
ICAgICBFWFBFQ1RfRkFMU0UoZW5nYWdlZDIgIT0gZW5nYWdlZHgyKTsKIAotICAgIEVYUEVDVF9G
QUxTRSh1bmVuZ2FnZWQxICE9IE51bGxvcHQpOwotICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQxICE9
IE51bGxvcHQpOwotICAgIEVYUEVDVF9GQUxTRShOdWxsb3B0ICE9IHVuZW5nYWdlZDEpOwotICAg
IEVYUEVDVF9UUlVFKE51bGxvcHQgIT0gZW5nYWdlZDEpOworICAgIEVYUEVDVF9GQUxTRSh1bmVu
Z2FnZWQxICE9IHN0ZDo6bnVsbG9wdCk7CisgICAgRVhQRUNUX1RSVUUoZW5nYWdlZDEgIT0gc3Rk
OjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RkOjpudWxsb3B0ICE9IHVuZW5nYWdlZDEp
OworICAgIEVYUEVDVF9UUlVFKHN0ZDo6bnVsbG9wdCAhPSBlbmdhZ2VkMSk7CiAKICAgICBFWFBF
Q1RfRkFMU0UoZW5nYWdlZDEgIT0gMSk7CiAgICAgRVhQRUNUX1RSVUUoZW5nYWdlZDEgIT0gMik7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNl
cklkaW9tcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNl
cklkaW9tcy5jcHAKaW5kZXggMGYxYzAyZDllNmNhODVjMDljYjQ5NmNiMzdmMTJjMjk5ZjU4ZmVm
OC4uNmU5ZTczOGFiNWJjZTFkZmFiZmI0MmY2MGViN2IyZjJiNjQ1Y2I0ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgaW50IHRlc3RQYXJzZUhUTUxJbnRlZ2VyKGNvbnN0
IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBvcHRpb25hbFJlc3VsdCA9IHBhcnNlSFRNTElu
dGVnZXIoaW5wdXQpOwogICAgIEVYUEVDVF9UUlVFKCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJl
dHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcHRpb25hbFJlc3Vs
dC52YWx1ZV9vcigwKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VIVE1MSW50ZWdlckZhaWxzKGNv
bnN0IFN0cmluZyYgaW5wdXQpCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHVuc2lnbmVkIHRl
c3RQYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAg
ICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGlucHV0
KTsKICAgICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFsUmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9u
YWxSZXN1bHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3Io
MCk7CiB9CiAKIHN0YXRpYyBib29sIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlckZhaWxzKGNv
bnN0IFN0cmluZyYgaW5wdXQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VUkxQYXJzZXIuY3BwCmluZGV4IDVlNzZmYWIwN2NkMDEwZjBlNDA2ZGM5NWQxZmEyYjY4MjQw
MTViZjYuLjdjNDJkNGYwMDkyZDMyYjBjYmZiMGJjOGQzNTk1ZTFjNDE3NjU5MTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3Qo
KSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOwor
ICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
ZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTA4LDcgKzEwOCw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBl
Y3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwg
b2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCBvbGRV
UkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgb2xkVVJMLmhvc3Qo
KSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkp
OworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAt
MTQyLDcgKzE0Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTUyLDcgKzE1
Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
dXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgb2xkVVJM
Lmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVl
T3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29y
KDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkp
OwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1
cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwu
cG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1
cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVy
eSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVu
dElkZW50aWZpZXIoKSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJM
RGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMm
IHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQudXNlciwgb2xkVVJMLnVzZXIoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVY
UEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVY
UEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNPbGQucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNPbGQuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpA
QCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNl
cyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNO
ZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwu
cG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9y
dCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwu
cGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSkpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRp
dmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBi
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQudXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNPbGQuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVD
VF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVD
VF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c09sZC5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNPbGQucXVlcnksIG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNPbGQuZnJhZ21lbnQsIG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAt
MjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zCiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3Io
MCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMzA4LDcgKzMw
OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
dXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1
cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkp
OwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAg
IEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJh
Z21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGZhZjcwMzdiOTY4
NDVjMWFiNjFkYTU3MDNjNDE0ZTcxYjFjNjkxMjUuLmNkNjg3YTM4MmE2MDVhZTFjZDQ5OGI4ZWI5
OTIxMDM1MmUyNjRkMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJ
U2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTQwNSwxNiArNDA1LDE2IEBAIGRvdWJsZSBVSVNj
cmlwdENvbnRyb2xsZXI6Om1heGltdW1ab29tU2NhbGUoKSBjb25zdAogICAgIHJldHVybiB3ZWJW
aWV3LnNjcm9sbFZpZXcubWF4aW11bVpvb21TY2FsZTsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gVUlT
Y3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8Ym9vbD4gVUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3QK
IHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogICAgIGlmICh3ZWJWaWV3
Ll9zdGFibGVTdGF0ZU92ZXJyaWRlKQogICAgICAgICByZXR1cm4gd2ViVmlldy5fc3RhYmxlU3Rh
dGVPdmVycmlkZS5ib29sVmFsdWU7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3Rh
dGVPdmVycmlkZShPcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVlKQordm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoc3RkOjpvcHRpb25hbDxib29sPiBvdmVy
cmlkZVZhbHVlKQogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAgICAg
aWYgKG92ZXJyaWRlVmFsdWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295451</attachid>
            <date>2016-11-26 17:35:58 -0800</date>
            <delta_ts>2016-11-26 17:38:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164199-20161127103536.patch</filename>
            <type>text/plain</type>
            <size>1226800</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
OWI0MjljMjk4ZDljZDEyMzEyOWIwNjE0OGQwZmU0ZmM5MjA5ODc5Li4wMWEzNGZkYTJmZjUxNWU4
MjYyNTdhYmFlNmIyNGZkYWI5NGIzOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDcgQEAKKzIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGlt
cGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpIGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFByZXZpb3VzIFdURjo6T3B0aW9uYWw6
Om9wZXJhdG9yPSBpcyBub3QgY29tcGF0aWJsZSB0byBzdGQ6Om9wdGlvbmFsOjpvcGVyYXRvcj0u
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw6OmVtcGxhY2UgaGFzIHRoZSBzYW1lIHNlbWFudGljcyB0
byB0aGUgcHJldmlvdXMgb25lLgorICAgICAgICBTbyB3ZSBjaGFuZ2UgdGhlIGNvZGUgdG8gdXNl
IGl0LgorCisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHk6
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29y
ZS1CdWlsdGluLlByb21pc2UtQ29tYmluZWQuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLVNl
cGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdDoK
KyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3Jl
LUJ1aWx0aW4ucHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rv
ci1Db21iaW5lZC5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVz
dWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlw
dENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJlc3VsdDoKKyAgICAgICAg
KiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQW5vdGhlckd1YXJkZWRJ
bnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIFNjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNl
cGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVj
dGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAq
IFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxC
dWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQ6
CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENh
c2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNvbW11
dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
Y29tbXV0ZUNvbXBhcmVUb1plcm9JbnRvVGVzdCk6CisgICAgICAgICogYjMvQjNDaGVja1NwZWNp
YWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAg
ICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAg
ICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmg6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNw
cDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6c2NhbGVGb3JTaGwpOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjplZmZlY3RpdmVBZGRyKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKToKKyAgICAgICAgKiBiMy9C
M09wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjppbnZlcnRlZENvbXBhcmUpOgorICAgICAg
ICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyk6CisgICAg
ICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpCMzo6U3RhY2tt
YXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCk6CisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNp
YWwuaDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjppbnZlcnRlZENvbXBhcmUpOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkU2NhbGUpOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpBcmc6OmlzVmFsaWRBZGRyRm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNW
YWxpZEluZGV4Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZEZvcm0p
OgorICAgICAgICAqIGIzL2Fpci9BaXJDdXN0b20uaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
UGF0Y2hDdXN0b206OnNob3VsZFRyeUFsaWFzaW5nRGVmKToKKyAgICAgICAgKiBiMy9haXIvQWly
Rml4T2J2aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuaDoKKyAgICAg
ICAgKiBiMy9haXIvQWlySW5zdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5z
dDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYpOgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJl
Z2lzdGVyQ29hbGVzY2luZy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZik6Cisg
ICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFBDKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lOjpjdXJyZW50UG9zaXRpb24pOgorICAgICAgICAqIGRlYnVnZ2VyL0Rl
YnVnZ2VyUGFyc2VEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJQYXVzZVBvc2l0aW9u
czo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbik6CisgICAgICAgICogZGVidWdnZXIv
RGVidWdnZXJQYXJzZURhdGEuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9TY3JpcHRQcm9maWxpbmdT
Y29wZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZmZWN0cyk6CisgICAg
ICAgICogZGZnL0RGR0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmZp
bmRQQyk6CisgICAgICAgICogZGZnL0RGR0pJVENvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5h
bCk6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkRGRzo6U2xvd1BhdGhHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpydW5T
bG93UGF0aEdlbmVyYXRvcnMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0VW50eXBlZEJpdE9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFVudHlwZWRSaWdodFNoaWZ0Qml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlTWF0aElDKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoRGl2KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
TG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZnRsL0ZU
TEpJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmZpbmRQQyk6CisgICAg
ICAgICogZnRsL0ZUTEpJVENvZGUuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAg
ICAoSlNDOjpIZWFwOjpjb2xsZWN0QXN5bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0
U3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJblRocmVhZCk6CisgICAgICAgIChK
U0M6OkhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6d2lsbFN0
YXJ0Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdGlvblNjb3BlKToKKyAg
ICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdC5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hv
dDo6bm9kZUZvckNlbGwpOgorICAgICAgICAoSlNDOjpIZWFwU25hcHNob3Q6Om5vZGVGb3JPYmpl
Y3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBoZWFwL0hlYXBTbmFwc2hvdC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAgIChJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycyk6CisgICAgICAgIChJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckhlYXBBZ2VudDo6bm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRSZW1vdGVPYmplY3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5tbToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cCk6CisgICAgICAgICog
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3Rvci5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yOjp1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weToKKyAg
ICAgICAgKF9nZW5lcmF0ZV9kZWNsYXJhdGlvbnNfZm9yX2VudW1fY29udmVyc2lvbl9tZXRob2Rz
KToKKyAgICAgICAgKF9nZW5lcmF0ZV9kZWNsYXJhdGlvbnNfZm9yX2VudW1fY29udmVyc2lvbl9t
ZXRob2RzLnJldHVybl90eXBlX3dpdGhfZXhwb3J0X21hY3JvKToKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weToKKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRv
ci5fZ2VuZXJhdGVfZW51bV9jb252ZXJzaW9uX21ldGhvZHNfZm9yX2RvbWFpbi5nZW5lcmF0ZV9j
b252ZXJzaW9uX21ldGhvZF9ib2R5KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9w
dGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmZpbmRQQyk6
CisgICAgICAgICogaml0L0pJVERpdkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVERp
dkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHA6CisgICAgICAgIChK
U0M6OlBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEMpOgorICAgICAgICAqIGppdC9QQ1RvQ29kZU9y
aWdpbk1hcC5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OlJ1bnRpbWVBcnJh
eTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6
ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0NvbmN1cnJlbnRKU0xvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29uY3VycmVudEpTTG9ja2VyOjpDb25jdXJyZW50SlNMb2NrZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6CisgICAgICAg
IChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6d3JpdGFibGUpOgorICAgICAgICAoSlND
OjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6OmNvbmZpZ3VyYWJsZSk6CisgICAgICAgIChKU0M6
OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6ZW51bWVyYWJsZSk6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1l
bnRzPFR5cGU+OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJn
dW1lbnRzPFR5cGU+OjpwdXQpOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+
OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0hhc093blByb3BlcnR5Q2Fj
aGUuaDoKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlDYWNoZTo6Z2V0KToKKyAgICAgICAg
KiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgIChKU0M6OmNvbmN1cnJlbnRKU01hcEhh
c2gpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpwYXJz
ZUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpK
U0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVl
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9OdW1iZXJGcm9tUHJpbWl0aXZlKToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc6OnRvQWRhcHRvck5hdGl2
ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbik6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCk6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0RGlyZWN0QWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVy
dHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHlNYXlCZUluZGV4KToKKyAgICAgICAgKiBy
dW50aW1lL0pTT2JqZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90
KToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0aENv
bW1vbi5oOgorICAgICAgICAoSlNDOjpzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNj
cmlwdG9yLmg6CisgICAgICAgIChKU0M6OnRvUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAg
KiBydW50aW1lL1Byb3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpwYXJzZUluZGV4KToKKyAg
ICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1w
bGluZ1Byb2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0
KToKKyAgICAgICAgKEpTQzo6aXNTdHJpbmdPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN0
cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvVG9OYXRpdmVG
cm9tVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6dG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3JzLmg6CisgICAgICAgIChK
U0M6OkludGVncmFsVHlwZWRBcnJheUFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyV2l0aG91dENv
ZXJjaW9uKToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBlZEFycmF5QWRhcHRvcjo6dG9OYXRp
dmVGcm9tVWludDMyV2l0aG91dENvZXJjaW9uKToKKyAgICAgICAgKEpTQzo6SW50ZWdyYWxUeXBl
ZEFycmF5QWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKToKKyAgICAg
ICAgKEpTQzo6RmxvYXRUeXBlZEFycmF5QWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzJXaXRob3V0
Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpGbG9hdFR5cGVkQXJyYXlBZGFwdG9yOjp0b05hdGl2
ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24pOgorICAgICAgICAoSlNDOjpVaW50OENsYW1wZWRB
ZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbik6CisgICAgICAgIChKU0M6
OlVpbnQ4Q2xhbXBlZEFkYXB0b3I6OnRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbik6
CisKIDIwMTYtMTEtMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBFTkFCTEVfQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSBjb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDlm
M2Y4ZjI5MWMzM2RmYzY1ZGE3NTM1ZGZhYjU1OGIzOTc3N2NkNmUuLjk0Mjk1YWY2MTAyN2RiNDJi
ODliNDI2N2NhNDJiZTJkNDY1NDI5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDE2LTExLTI2
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZd
IEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9w
dGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBhbmQgU2FtIFdlaW5pZy4K
KworICAgICAgICBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24g
b2ZmZXJlZCBieSB0aGUgQysrMTcKKyAgICAgICAgb3JpZ2luYWwgcHJvcG9zYWwgcGFwZXIuIEl0
IGhhcyB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgdG8gdGhl
IEMrKzE3J3Mgb25lLiBQcmV2aW91cyBXVEY6Ok9wdGlvbmFsIGxhY2tzIHNldmVyYWwgZnVuY3Rp
b25hbGl0aWVzLgorICAgICAgICBUaGUgbGFyZ2VzdCBvbmUgaXMgdGhlIGNvcnJlY3QgY29uc3Rl
eHByIGNvbnN0cnVjdG9ycy4gVGhpcyBmYWN0IHByZXZlbnRzCisgICAgICAgIHVzIGZyb20gdXNp
bmcgT3B0aW9uYWw8bGl0ZXJhbCB0eXBlPiBpbiBjb25zdGV4cHIgY29udGV4dCBpbiBXZWJLaXQu
CisKKyAgICAgICAgSW4gV2ViS2l0LCB3ZSBkbyBub3QgYWxsb3cgZ2xvYmFsIGNvbnN0cnVjdG9y
cy4gU28gb25seSB0aGUgY29uc3RleHByCisgICAgICAgIGNvbnN0cnVjdG9yIGlzIHRoZSB3YXkg
dG8gdXNlIFdURjo6T3B0aW9uYWwgaW4gdGhlIHN0YXRpYyBjb25zdAorICAgICAgICBnbG9iYWwg
dmFyaWFibGVzLiBXVEY6Ok9wdGlvbmFsIGlzIHVzZWQgaW4gRE9NSklUOjpFZmZlY3QgYW5kCisg
ICAgICAgIHdlIHdvdWxkIGxpa2UgdG8gZW1pdCBzdGF0aWMgY29uc3QgZ2xvYmFsIHZhcmlhYmxl
cyB0aGF0IGluY2x1ZGVzCisgICAgICAgIHRoaXMgRE9NSklUOjpFZmZlY3QuIFRoYXQgaXMgdGhl
IG1haW4gbW90aXZhdGlvbiBvZiB0aGlzIHdvcmsuCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0
eSBhbGxvd3MgdGhlIElETCBjb2RlIGdlbmVyYXRvciB0byBlbWl0IERPTUpJVAorICAgICAgICBz
aWduYXR1cmVzIGFzIHN0YXRpYyBjb25zdCBnbG9iYWwgdmFyaWFibGVzLgorCisgICAgICAgIFdl
IGltcG9ydCB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9uZSBpbnN0ZWFkIG9mIExMVk0g
bGliYysrJ3Mgb25lLgorICAgICAgICBUaGlzIGlzIGJlY2F1c2UgTExWTSBsaWJjKysncyBvbmUg
ZGVwZW5kcyBvbiBtYW55IG1hY3JvIGFuZCB0eXBlX3RyYWl0cworICAgICAgICBvZmZlcmVkIGJ5
IGxpYmMrKyBpbXBsZW1lbnRhdGlvbi4gQW5kIGFkb3B0aW5nIGl0IHRvIFdlYktpdCByZXF1aXJl
cworICAgICAgICBsYXJnZSBtb2RpZmljYXRpb24gY29tcGFyZWQgdG8gdGhpcyByZWZlcmVuY2Ug
aW1wbGVtZW50YXRpb24gb25lLgorICAgICAgICBGdXJ0aGVybW9yZSwgaXQgaXMgZGlmZmljdWx0
IHRvIGNvbXBpbGUgbGliYysrJ3Mgb3B0aW9uYWwgaW4gb2xkIEdDQyBhbmQgVkMrKy4KKyAgICAg
ICAgSXQgYWxzbyByZXF1aXJlcyBzb21lIG1vcmUgbW9kaWZpY2F0aW9ucy4gVG8ga2VlcCB0aGUg
dGhpbmcgc2ltcGxlLAorICAgICAgICB3ZSBpbXBvcnQgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRh
dGlvbiBvbmUgbm93LiBPbmNlIEMrKzE3IGlzIHJlbGVhc2VkCisgICAgICAgIGFuZCB3ZSB1cGRh
dGUgdGhlIGNvbXBpbGVyIGJhc2VsaW5lLCB3ZSBjYW4gc21vb3RobHkgc3dpdGNoIHRvIHRoZSBz
dGFuZGFyZAorICAgICAgICBsaWJyYXJ5J3Mgc3RkOjpvcHRpb25hbC4KKworICAgICAgICBXZSBh
bHNvIGFkZCBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdGhhdCBkb2VzIG5vdCB1c2UgZXhj
ZXB0aW9ucyB0byB0aGlzCisgICAgICAgIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICBBbmQgd2UgYWxzbyBhZGQgdmFsdWVPckNvbXB1dGUgaGVscGVyIGZ1bmN0aW9uLiBUaGF0
IGtlZXBzIHRoZSBleHRlbmRlZAorICAgICAgICBmdW5jdGlvbmFsaXR5IHRoYXQgcHJldmlvdXMg
V1RGOjpPcHRpb25hbCBoYXMuCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oOgor
ICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFF1ZXVlPERhdGFUeXBlPjo6dHJ5R2V0TWVzc2FnZSk6
CisgICAgICAgICogd3RmL0V4cGVjdGVkLmg6CisgICAgICAgIChXVEY6Om1ha2VFeHBlY3RlZCk6
CisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAgKiB3dGYvSGFzaFRyYWl0cy5oOgor
ICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFJlZjxQPj46OnRha2UpOgorICAgICAgICAqIHd0Zi9N
YWluVGhyZWFkLmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUdDVGhyZWFkcyk6CisgICAg
ICAgIChXVEY6Om1heUJlR0NUaHJlYWQpOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmg6Cisg
ICAgICAgICogd3RmL09wdGlvbmFsLmg6CisgICAgICAgIChzdGQ6OmRldGFpbF86OmlzX2Fzc2ln
bmFibGU6Omhhc19hc3NpZ24pOgorICAgICAgICAoc3RkOjpkZXRhaWxfOjpoYXNfb3ZlcmxvYWRl
ZF9hZGRyZXNzb2Y6Omhhc19vdmVybG9hZCk6CisgICAgICAgIChzdGQ6OmRldGFpbF86OnN0YXRp
Y19hZGRyZXNzb2YpOgorICAgICAgICAoc3RkOjpkZXRhaWxfOjpjb252ZXJ0KToKKyAgICAgICAg
KHN0ZDo6bnVsbG9wdF90OjpudWxsb3B0X3QpOgorICAgICAgICAoc3RkOjpiYWRfb3B0aW9uYWxf
YWNjZXNzOjpiYWRfb3B0aW9uYWxfYWNjZXNzKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWxfYmFz
ZTo6b3B0aW9uYWxfYmFzZSk6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsX2Jhc2U6On5vcHRpb25h
bF9iYXNlKToKKyAgICAgICAgKHN0ZDo6Y29uc3RleHByX29wdGlvbmFsX2Jhc2U6OmNvbnN0ZXhw
cl9vcHRpb25hbF9iYXNlKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6OmRhdGFwdHIpOgorICAg
ICAgICAoc3RkOjpvcHRpb25hbDo6Y29udGFpbmVkX3ZhbCk6CisgICAgICAgIChzdGQ6Om9wdGlv
bmFsOjpfX05PRVhDRVBUXyk6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsOjpvcHRpb25hbCk6Cisg
ICAgICAgIChzdGQ6Om9wdGlvbmFsOjpvcGVyYXRvcj0pOgorICAgICAgICAoc3RkOjpvcHRpb25h
bDo6ZW1wbGFjZSk6CisgICAgICAgIChzdGQ6Om9wdGlvbmFsOjpvcGVyYXRvciAtPik6CisgICAg
ICAgIChzdGQ6Om9wdGlvbmFsOjpvcGVyYXRvciAqKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6
OnZhbHVlKToKKyAgICAgICAgKHN0ZDo6b3B0aW9uYWw6OnZhbHVlX29yKToKKyAgICAgICAgKHN0
ZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChzdGQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoc3Rk
OjpvcGVyYXRvcjwpOgorICAgICAgICAoc3RkOjpvcGVyYXRvcj4pOgorICAgICAgICAoc3RkOjpv
cGVyYXRvcjw9KToKKyAgICAgICAgKHN0ZDo6b3BlcmF0b3I+PSk6CisgICAgICAgIChzdGQ6Ol9f
Tk9FWENFUFRfKToKKyAgICAgICAgKHN0ZDo6bWFrZV9vcHRpb25hbCk6CisgICAgICAgIChzdGQ6
Omhhc2g8c3RkOjpvcHRpb25hbDxUPj46Om9wZXJhdG9yKCkpOgorICAgICAgICAoV1RGOjpOdWxs
b3B0VGFnOjpOdWxsb3B0VGFnKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6Ok9w
dGlvbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6On5PcHRpb25hbCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvcj0pOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpPcHRpb25hbDo6b3BlcmF0b3IgYm9vbCk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6Ok9wdGlvbmFsOjpvcGVyYXRvci0+KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9u
YWw6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjp2YWx1ZU9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6T3B0aW9uYWw6OnZhbHVlT3JDb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6T3B0aW9uYWw6OmFzUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6T3B0aW9uYWw6
OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Om1ha2VP
cHRpb25hbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOiBEZWxldGVk
LgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpTdHJp
bmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6CisgICAgICAg
IChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcik6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorCiAyMDE2LTExLTIyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmUgbW9yZSB0aW55IGJpdCBvZiBm
b2xsb3ctdXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNjYTkyYjc5OTZjMGI2NmEyYmQzY2U0ZGU1ZGM4NThm
OTc3YWJmMC4uMzc4N2U5OTRhOTQ5NmI3YTE0Yzk5NmEwMmVhYzg3YTQxMjBjYzcxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDExNDQgQEAKKzIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwg
cmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhYW0gQmFyYXRpIGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgIFJlbmFtZSB2YWx1
ZU9yIHRvIHZhbHVlX29yLiBUaGlzIGlzIHNwZWNpZmllZCBpbiBDKysxNyBwcm9wb3NhbC4KKwor
ICAgICAgICBVc2UgT3B0aW9uYWw6OmVtcGxhY2UuIEMrKzE3IE9wdGlvbmFsOjpvcGVyYXRvcj0o
T3B0aW9uYWwmJikgcmVxdWlyZXMKKyAgICAgICAgZWl0aGVyIGNvcHkgYXNzaWdubWVudCBvcGVy
YXRvciBvciBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEJ1dAorICAgICAgICBERkc6OkpTVmFs
dWVPcGVyYW5kIGV0Yy4gb25seSBkZWZpbmVzIG1vdmUgY29uc3RydWN0b3JzIGFuZCBkcm9wCisg
ICAgICAgIGltcGxpY2l0IGNvcHkgYXNzaWdubWVudCBvcGVyYXRvcnMuCisKKyAgICAgICAgSXQg
d2FzIE9LIGluIHRoZSBwcmV2aW91cyBXVEY6Ok9wdGlvbmFsIHNpbmNlIGl0IGFsd2F5cyB1c2Vz
IG1vdmUKKyAgICAgICAgY29uc3RydWN0b3JzLiBCdXQgaXQgaXMgbm90IHZhbGlkIGluIEMrKzE3
IE9wdGlvbmFsLiBXZSB1c2UgT3B0aW9uYWw6OmVtcGxhY2UKKyAgICAgICAgaW5zdGVhZC4gVGhp
cyBmdW5jdGlvbiBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIHRvIHRoZSBwcmV2aW91cyBXVEY6Ok9w
dGlvbmFsJ3MKKyAgICAgICAgb3BlcmF0b3I9LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5n
ZS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNv
bnRhY3RGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lSXRlbVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTGluZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGlu
ZUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN1cHBvcnRlZE5ldHdvcmtzKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvU2hpcHBpbmdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoaXBwaW5n
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNoaXBwaW5nTWV0aG9kcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQYXltZW50UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjp0
b1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRDb250YWN0Lmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRD
b29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGF5bWVudENvbnRhY3Q6OmZyb21KUyk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9j
b2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpleHRyYWN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OkZl
dGNoQm9keU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxv
Yik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxvYkxvYWRpbmcp
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEhl
YWRlcnM6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSGVh
ZGVycy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNldFJlZmVycmVyUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldE1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q3JlZGVudGlhbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UmVkaXJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZmVycmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJl
cXVlc3Q6OmNsb25lKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9u
c2U6OmNsb25lRm9ySlMpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRGYWls
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVzOjphbHRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
czo6YWx0aXR1ZGVBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6aGVh
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlczo6c3BlZWQpOgorICAgICAgICAq
IE1vZHVsZXMvZ2VvbG9jYXRpb24vQ29vcmRpbmF0ZXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzdHJp
bmdUb0RpcmVjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aGFzaCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5OjpvcGVu
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmdldEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsS2V5cyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXlQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZENvcHkp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjprZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlOjpnZXRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmU6OmdldEFsbEtleXMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RTdG9y
ZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRB
bGxJbmRleFJlY29yZHMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lv
bkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRlc2VyaWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpNZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpvYmplY3RTdG9y
ZUNsZWFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9y
ZUN1cnNvcjo6a2V5RGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGaXJzdEluUmVtYWluaW5nUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rm9yd2FyZEl0
ZXJhdG9yRnJvbVJlbWFpbmluZ1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldFJldmVyc2VJdGVyYXRvckZyb21SZW1haW5pbmdS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yOjppbmNyZW1lbnRGb3J3YXJkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6aW5jcmVtZW50UmV2ZXJzZUl0ZXJhdG9yKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VJbmZvOjpjcmVhdGVOZXdPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJHZXRBbGxSZWNvcmRzRGF0YS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8pOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbzo6a2V5UGF0aCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5TmFtZUZvclRyYWNrKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlOjplbmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c3RyZWFt
RW5kZWRXaXRoRXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZU9mZmVyU3Vj
Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRl
T2ZmZXJGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpj
cmVhdGVBbnN3ZXJTdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpjcmVhdGVBbnN3ZXJGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpzZXRMb2NhbERlc2NyaXB0aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbkZhaWxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2Ny
aXB0aW9uU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6c2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGVTdWNjZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRJY2VDYW5kaWRhdGVGYWlsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzdG9wKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
VENEVE1GU2VuZGVyOjppbnNlcnREVE1GKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNh
bmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRpZGF0ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZTo6c2RwTUxpbmVJbmRleCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aWNl
Q2FuZGlkYXRlRnJvbUpTT04pOgorICAgICAgICAqIE1vZHVsZXMvcHJveGltaXR5L0RldmljZVBy
b3hpbWl0eUV2ZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
U291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnRG
aW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVNvdXJjZTo6cHVsbEZp
bmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtU291cmNlOjpjbGVhbik6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3VsdFNldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjbG9z
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIGJp
bmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OklETFR5cGU6Om51
bGxWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRNb2R1bGVTY3JpcHQ6OmVycm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5Ojpn
ZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OnJlY29uY2lsZUFsZ29yaXRobSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OlZhcmlhZGljQ29udmVydGVyQmFzZTo6Y29udmVy
dCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWw6OlZhcmlhZGljQ29udmVydGVyQmFzZTxJRExJ
bnRlcmZhY2U8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRWYXJpYWRp
Y0FyZ3VtZW50cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SXRlcmF0b3JUcmFpdHM+OjpuZXh0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OkRPTVBy
b21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6Y29udmVy
dFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y29uc3RydWN0SlNGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxIVE1MQWxs
Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVt
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTdHJp
bmdDb25zdHJhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJvb2xlYW5Db25zdHJhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURvdWJsZUNvbnN0cmFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlSW50Q29uc3RyYWludCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
ZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1wb3J0S2V5
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChH
ZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkpOgorICAgICAgICAoR2VuZXJhdGVFbnVtZXJh
dGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChHZW5lcmF0ZUVudW1lcmF0aW9u
SGVhZGVyQ29udGVudCk6CisgICAgICAgIChHZW5lcmF0ZURlZmF1bHRWYWx1ZSk6CisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRmxvYXQ2NEFycmF5OjpwdXQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KToKKyAgICAgICAgKFdlYkNv
cmU6OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6S2luZD4pOgorICAgICAgICAoV2ViQ29yZTo6cGFy
c2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUVu
dW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE9iajo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0NhbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZ0NhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kVHdvT3B0aW9uYWxBcmdzQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdDYWxsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxVbnNpZ25lZExvbmdMb25nQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VDYWxsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxC
b29sZWFuQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkQ2FsbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDJDYWxsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aE9wdGlvbmFsUGFyYW1ldGVyMkNhbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9w
dGlvbmFsSW50QXJndW1lbnRDYWxsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VFbnVt
ZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9u
YXJ5RmlsZT4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFu
ZGFsb25lRGljdGlvbmFyeS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VF
bnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93Q2FsbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5j
V2l0aENsYW1wQ2FsbGVyKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9hcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6UnVudGltZUFycmF5OjpwdXQpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9BbGdvcml0
aG1SZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eTo6aWRlbnRpZmllcik6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
Lmg6CisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleVNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAg
KiBjcnlwdG8vSnNvbldlYktleS5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
QUVTX0NCQzo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVT
X0tXOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2Vu
ZXJhdGVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1wb3J0
S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQUVTX1BL
Q1MxX3YxXzU6OmltcG9ydEtleSk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1ITUFDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNpZ25hdHVy
ZSk6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmg6CisgICAgICAgICogY3J5
cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5oOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tl
eVJTQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayk6Cisg
ICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmg6CisgICAgICAgICogY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9LZXlTZXJpYWxpemF0aW9uUmF3OjpyZWNvbmNpbGVBbGdvcml0aG0pOgorICAgICAgICAqIGNy
eXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaDoKKyAgICAgICAgKiBjcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9u
Q3J5cHRvSE1BQ0FsZ29yaXRobSk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9EaWdl
c3RBbGdvcml0aG0pOgorICAgICAgICAqIGNyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRo
bUhtYWNLZXlQYXJhbXMuaDoKKyAgICAgICAgKiBjcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdv
cml0aG1Sc2FPYWVwUGFyYW1zLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpjYWxjdWxhdGVTdHlsZU1hc2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdlaWdodE1hc2spOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlRm9udFRyYWl0c01hc2spOgorICAgICAgICAqIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6ZG91YmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmRv
dWJsZVZhbHVlSW50ZXJuYWwpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgor
ICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6YWRkUnVsZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuaDoKKyAgICAg
ICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmZvbnRT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9G
b250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Y29tcGxldGVk
TG9hZGluZyk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0Lmg6CisgICAgICAgICogY3NzL01l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVl
SW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TGluZUhlaWdodCk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1
c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
TGluZUhlaWdodCk6CisgICAgICAgICogY3NzL1N0eWxlUnVsZUltcG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHlsZVNoZWV0KToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JGcm9tVmFsdWUpOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVBZGRTdHlsZVJlbGF0aW9uKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUuY3BwOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bGFzdE1vZGlmaWVkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpnZXRJbnRlZ3JhbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6ZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6Y2xlYXIpOgor
ICAgICAgICAqIGRvbS9FeGNlcHRpb25Pci5oOgorICAgICAgICAqIGRvbS9JbmxpbmVTdHlsZVNo
ZWV0T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUlubGluZVN0eWxlU2hlZXRDYWNo
ZUtleSk6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlQ2xhc3Np
Y1NjcmlwdDo6ZXJyb3IpOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaDoK
KyAgICAgICAgKiBkb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGFibGVNb2R1bGVTY3JpcHQ6OmVycm9yKToKKyAgICAgICAgKiBkb20vTG9hZGFibGVN
b2R1bGVTY3JpcHQuaDoKKyAgICAgICAgKiBkb20vTG9hZGFibGVTY3JpcHQuaDoKKyAgICAgICAg
KiBkb20vTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6
TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudCk6CisgICAg
ICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6Om9ic2VydmUpOgorICAg
ICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OmNoZWNrU3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAg
ICAgKiBkb20vUHNldWRvRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9SYW5nZUJvdW5kYXJ5UG9p
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6c2V0VG9CZWZvcmVD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvQWZ0ZXJD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvRW5kT2ZO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlQm91bmRhcnlQb2ludDo6aW52YWxpZGF0ZU9m
ZnNldCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RWxlbWVudDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFbGVtZW50OjpwcmVwYXJlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBkb20v
U2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9UZXh0RGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBkb20vVGV4dERlY29k
ZXIuaDoKKyAgICAgICAgKiBkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKToKKyAg
ICAgICAgKiBkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRD
b21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5oOgorICAgICAgICAqIGhpc3Rvcnkv
Q2FjaGVkRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpoYXNJbnNlY3Vy
ZUNvbnRlbnQpOgorICAgICAgICAqIGh0bWwvRE9NVG9rZW5MaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRva2VuTGlzdDo6dG9nZ2xlKToKKyAgICAgICAgKiBodG1sL0RPTVRva2VuTGlz
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50
Ojp0b0RhdGFVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
OjpwYXJzZUJvcmRlcldpZHRoQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Om1heExlbmd0aEF0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6bWlu
TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6aW5pdGlhbGl6ZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjppY29uVHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxPTGlzdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxl
Y3Rpb246OmFkZCk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTZWxlY3RFbGVtZW50OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ6OnNldExlbmd0aCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEFyZWFFbGVtZW50OjptYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1pbkxlbmd0aEF0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIGh0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VJbnB1dFR5cGU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlw
ZTo6d2lkdGgpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKToKKyAgICAgICAgKiBodG1s
L0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwOgorICAg
ICAgICAqIGh0bWwvTGlua1JlbEF0dHJpYnV0ZS5oOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmZpbmRDbG9zZXN0
VGlja01hcmtWYWx1ZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9p
bnRJblN0cm9rZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZmlsbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzdHJva2VUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcnJheUJ1ZmZlclZpZXdFbGVtZW50
U2l6ZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJ1ZmZl
clN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OnJlY29uc3RydWN0VGhlQWN0aXZl
Rm9ybWF0dGluZ0VsZW1lbnRzKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVE1MSW50ZWdlckludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlSFRNTEludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlVmFsaWRIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWYWxpZEhUTUxO
b25OZWdhdGl2ZUludGVnZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWYWxpZEhUTUxGbG9h
dGluZ1BvaW50TnVtYmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VWYWxpZEhU
TUxGbG9hdGluZ1BvaW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJlZnJl
c2hJbnRlcm5hbCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6bGltaXRUb09ubHlIVE1MTm9uTmVnYXRpdmUpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFy
c2VEZXNjcmlwdG9ycyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25G
cm9tUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyQ29udGFpbmVyRWxlbWVudDo6
cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbFBs
YWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL1Ry
YWNrRXZlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJM
b2FkaW5nSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hYSFJMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzZXRJbnN0cnVtZW50cyk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjbGVhclJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0U3VjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdo
dEZhaWx1cmUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1w
dHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRD
b21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhclRlc3RpbmdP
dmVycmlkZXMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnJlc291cmNlVHlwZUZyb21Bc0F0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGluayk6CisgICAgICAg
ICogbG9hZGVyL0xpbmtMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNl
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURv
bmUpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6c2V0TG9hZFByaW9yaXR5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVz
b3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnByaW9yaXR5
KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTEVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KToKKyAgICAgICAgKiBtYXRobWwv
TWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEZyYWN0
aW9uRWxlbWVudDo6Y2FjaGVkRnJhY3Rpb25BbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MRnJhY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1s
L01hdGhNTEZyYWN0aW9uRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxNYXRoRWxlbWVudDo6c3BlY2lmaWVk
RGlzcGxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50Lmg6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRo
bWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnk6OnNlYXJjaCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eS5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWF0aE1MT3BlcmF0b3JFbGVtZW50Ojpjb21wdXRlT3BlcmF0b3JGbGFnKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE9wZXJhdG9yRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50Lmg6CisgICAgICAgICogbWF0aG1s
L01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUGFkZGVk
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQYWRkZWRF
bGVtZW50Lmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVkQm9v
bGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudDo6c3BlY2lmaWVkRGlzcGxheVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBtYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6dG9PcHRpb25hbEJvb2wpOgorICAg
ICAgICAqIG1hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNYXRoTUxTY3JpcHRzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIG1hdGht
bC9NYXRoTUxTY3JpcHRzRWxlbWVudC5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxTcGFjZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU3BhY2VFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oOgorICAgICAg
ICAqIG1hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0
aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2RlUG9pbnQpOgorICAgICAgICAqIG1h
dGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVW5kZXJP
dmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1l
bnQuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRE9N
VGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmFsaWduZWRGaXJlVGltZSk6
CisgICAgICAgICogcGFnZS9ET01UaW1lci5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudFNvdXJjZTo6cGFyc2VFdmVudFN0cmVhbUxpbmUpOgorICAgICAgICAqIHBhZ2Uv
RXZlbnRTb3VyY2UuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJlY3QpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZXZlbnRUaHJvdHRsaW5n
QmVoYXZpb3JPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFdmVudFRocm90
dGxpbmdCZWhhdmlvck92ZXJyaWRlKToKKyAgICAgICAgKiBwYWdlL1Njcm9sbFRvT3B0aW9ucy5o
OgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpwb3J0KToKKyAgICAgICAgKiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE6OmRlYnVnU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6
ZGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcik6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6U2VjdXJpdHlP
cmlnaW5EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGFIYXNoOjpoYXNoKToKKyAg
ICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5IYXNoOjpoYXNoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGlhbG9nRmVhdHVyZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Ym9vbEZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6ZmxvYXRGZWF0dXJlKToKKyAg
ICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMpOgorICAg
ICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFy
c2VQb3J0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3Jv
bGwpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
U2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpTY2hlZHVsZWRTY3JvbGxVcGRhdGU6
OlNjaGVkdWxlZFNjcm9sbFVwZGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNjcm9sbFBvc2l0aW9uQ2hh
bmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNj
cm9sbCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlSU9TOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRz
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlSU9TOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNj
cm9sbCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuaDoK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWM6OnNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMp
OgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
TGlua0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OmhhbmRsZURlZmVycmVkU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5n
ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmFsaWdu
ZWRGaXJlVGltZSk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVSTDo6cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
KToKKyAgICAgICAgKFdlYkNvcmU6OnBvcnRBbGxvd2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9V
UkwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29sKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6
cGFyc2VJUHY0UGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRI
b3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJ
UHY2KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lk
ZUlQdjYpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSSk6CisgICAgICAgIChXZWJD
b3JlOjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBh
cnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9y
V2l0aE92ZXJyaWRlQWxwaGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNj
YWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6Z2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjplbXBoYXNpc01hcmtBc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
c2NhZGU6OmVtcGhhc2lzTWFya0Rlc2NlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OmVtcGhhc2lzTWFya0hlaWdodCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcjo6SW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpzZXRBcHByb3hpbWF0ZVBvc2l0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmhvdFNw
b3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWVDYWNoZTo6Y2xlYXJNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lQ2FjaGU6Om1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVD
YWNoZTo6ZnJhbWVNZXRhZGF0YUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZUNhY2hlOjpob3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmhvdFNwb3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVjdEZyb21Q
b2x5Z29uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5r
V3JhcHBlZFJlY3RzRm9yT3V0bGluZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5n
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDQTo6Y29tcHV0ZVZpc2libGVBbmRDb3ZlcmFnZVJlY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVDb250cm9sbGVyOjpzZXRMYXlvdXRWaWV3cG9ydFJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRv
RGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5U
eXBlRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6bG9j
YWxCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lOjpsb2Nh
bEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4
dDo6bG9jYWxCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5l
Rm9yRG9jdW1lbnRNYXJrZXI6OmxvY2FsQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aDo6bG9jYWxCb3VuZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0czo6bG9jYWxCb3VuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlN0cm9rZVJlY3Q6OmxvY2FsQm91bmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTdHJva2VQYXRoOjpsb2NhbEJvdW5kcyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U3Ryb2tlRWxsaXBzZTo6bG9jYWxCb3VuZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0l0ZW06OmxvY2FsQm91
bmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6
OnVwZGF0ZUl0ZW1FeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpDb250ZXh0U3RhdGU6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OkNvbnRleHRTdGF0ZTo6Y29uY2F0Q1RNKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5j
b2RlSW1hZ2VKUEVHKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjp0b0RhdGFVUkwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXI6Om1hcEFic29sdXRlUG9pbnRUb0xvY2FsUG9pbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjplbmNvZGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9E
YXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNo
YXBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6c2VsZWN0aW9uUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXBpdGFsaXplZCk6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRTeW50aGVzaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zv
cm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybVN0YXRlOjptYXBwZWRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1T
dGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1T
dGF0ZTo6bWFwUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRl
bldpdGhUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4OjppbnZlcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aG90U3Bv
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlYMTE6OnN1cHBvcnRzWERhbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpob3RTcG90KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFn
ZURlY29kZXI6OmhvdFNwb3RBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZW5j
b2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wcmVzc1JH
QkFCaWdFbmRpYW5Ub0pQRUcpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWVuY29kZXJzL0pQ
RUdJbWFnZUVuY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6c2V0T3ZlcnJpZGVWaXNpYmxlUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbToKKyAgICAgICAgKC1bTGVnYWN5
VGlsZUhvc3RMYXllciByZW5kZXJJbkNvbnRleHQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbGlu
dXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9UaGVtZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpjb250cm9sRm9udCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcDo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFUcmFja0NvbnN0
cmFpbnRTZXRNYXA6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcDo6c2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcDo6c2FtcGxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVRyYWNr
Q29uc3RyYWludFNldE1hcDo6YXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFU
cmFja0NvbnN0cmFpbnRTZXRNYXA6OmZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDo6dm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
VHJhY2tDb25zdHJhaW50U2V0TWFwOjplY2hvQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpmYWNpbmdNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpkZXZpY2VJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6Z3JvdXBJZCk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVS
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3Ry
YWludHMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1
cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBw
bHlTaXplQW5kRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21w
dXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXBDb25zdEl0
ZXJhdG9yOjp1cGRhdGVLZXlWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBEYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpjYWNoZUNvbnRyb2xNYXhBZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEYXRlVmFs
dWVJbkhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpyZWFkU3RyZWFtQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvb2tpZXNJblBhcnRpdGlvbkZvclVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZEJ5dGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0JyZWFrTGluZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCcmVha2Fi
bGVQb3NpdGlvbk5vbkxvb3NlbHkpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJyZWFrYWJsZVBv
c2l0aW9uTG9vc2VseSk6CisgICAgICAgIChXZWJDb3JlOjppc0JyZWFrYWJsZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21T
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9vc2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgICogcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjptb3ZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lSXRlcmF0b3I6Om5leHRCcmVha2FibGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6c2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0
Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpz
dWJzdHJpbmdUb1JlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpoeXBo
ZW5hdGVkU3RyaW5nRm9yVGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94
Ojpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6aHlwaGVuYXRlZFN0cmluZ0ZvclRleHRS
dW4pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bik6
CisgICAgICAgICogcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T3JkZXJJdGVyYXRvcjo6cmVzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9PcmRlckl0ZXJh
dG9yLmg6CisgICAgICAgICogcmVuZGVyaW5nL1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6UGFpbnRJbmZvOjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrUmFyZURhdGE6OlJlbmRl
ckJsb2NrUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJhc2VsaW5l
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2Vs
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXRDYWNoZWRGbG93VGhyZWFkQ29u
dGFpbmluZ0Jsb2NrTmVlZHNVcGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbEhl
aWdodEJ5TWluTWF4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluQ29u
dGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6Om92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRPdmVycmlkZUNvbnRh
aW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94OjpzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRG
b3JCb3hTaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNh
bEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVp
Z2h0VXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExv
Z2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWln
aHRVc2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJDb21iaW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb21iaW5lVGV4dDo6
Y29tcHV0ZVRleHRPcmlnaW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRI
b3Jpem9udGFsQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4
aXNFeHRlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
cHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0
aW9Vc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0Q2hp
bGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVh
ZDo6YWRkRm9yY2VkUmVnaW9uQnJlYWspOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0R3Jvd3RoTGltaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmlkVHJhY2s6Omdyb3d0aExpbWl0Q2FwKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpmcmVlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OmF2YWlsYWJsZVNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRTaXppbmdEYXRhOjpzZXRBdmFpbGFibGVTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YTo6c2V0RnJlZVNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91dEJsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
Q29udGVudEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1
dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpvdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
T3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmxvZ2ljYWxIZWlnaHRGb3JDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHcmlkOjptaW5TaXplRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyR3JpZDo6bWluQ29udGVudEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6Om1heENvbnRlbnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpy
ZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JOb25TcGFubmluZ0l0ZW1z
KToKKyAgICAgICAgKFdlYkNvcmU6OnNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0Jy
ZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRU
cmFja3NDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjphcHBseVN0cmV0Y2hB
bGlnbm1lbnRUb1RyYWNrc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmxheW91dEdyaWRJdGVtcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhJc1Zpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6Y29tcHV0ZUZpcnN0SW5kZXhlc1Zpc2libGVJblBhZGRp
bmdUb3BCb3R0b21BcmVhcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVs
dGlDb2x1bW5TZXQ6OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjb252
ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjZWxsQmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c3RyaW5nVmlldyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Z2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OmNsZWFyU2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRh
OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0
cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURhdGE6OnNlbGVjdGlvblN0YXJ0UG9zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6
c2VsZWN0aW9uRW5kUG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290
OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2V0U2VsZWN0aW9uU3RhcnRQb3MpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZXRT
ZWxlY3Rpb25FbmRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6
OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpjbGVhclNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxh
eW91dDo6TGluZVN0YXRlOjpsYXN0RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6Y2xvc2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVUZXh0UnVucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9CcmVh
a2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmRUcmFpbGluZ1NwYWNlOjp3aWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2luZ0NvbnRleHQ6OmNvbW1pdExpbmVCcmVha0F0
Q3VycmVudFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJyZWFraW5nQ29udGV4dDo6SW5saW5l
SXRlcmF0b3JIaXN0b3J5OjpuZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6QnJlYWtpbmdDb250ZXh0OjpJbmxpbmVJdGVyYXRvckhpc3Rvcnk6Om1vdmVUbyk6CisgICAg
ICAgIChXZWJDb3JlOjp0cnlIeXBoZW5hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2lu
Z0NvbnRleHQ6OmNvbXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJyZWFraW5nQ29udGV4dDo6b3B0aW1hbExpbmVCcmVha0xvY2F0aW9uRm9yVHJhaWxpbmdXb3Jk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhNTFN0eWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6YXNjZW50Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
RnJhY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVy
YXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFBhZGRlZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxQYWRkZWQ6OmZp
cnN0TGluZUJhc2VsaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFBhZGRlZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6Zmlyc3RMaW5lQmFzZWxpbmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW5kR2V0UmVmZXJlbmNlQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6Zmlyc3RMaW5lQmFz
ZWxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
OgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0aFZhcmlhbnRHbHlwaCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdG
b3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpu
b2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpub2RlQXRQ
b2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6c2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6Y2FsY3VsYXRlU3Ryb2tlQm91bmRp
bmdCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVwYWludFJlY3RXaXRoU2hhZG93cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0UXVlcnk6Om1vZGlmeVN0YXJ0RW5kUG9zaXRpb25zUmVzcGVjdGluZ0xpZ2F0dXJlcyk6Cisg
ICAgICAgICogc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KToKKyAgICAgICAgKiBzdHlsZS9SZW5k
ZXJUcmVlVXBkYXRlci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1Rv
T1RGRm9udENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29u
dmVydGVyOjp0cmFuc2NvZGVHbHlwaFBhdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RG
Rm9udENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0U1ZHVG9PVEZGb250KToKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3Zl
cnJpZGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXIuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnByZXBhcmVUb1NlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOgorCiAyMDE2LTExLTI1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBGb250IExvYWRpbmddIEZvbnRGYWNlLmxvYWQo
KSBwcm9taXNlcyBkb24ndCBhbHdheXMgZmlyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFkMmU4YjJh
ZmIzNWFjODhjOGEyODYxYzAxZDE2OTVkYTI0ZjE5ODEuLjA2NDBhYWI3M2RhYWVjY2ExNzUyY2Iy
OTU3MWVhNmFjZDI1NzI1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAx
Ni0xMS0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXMg
V1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkgYW5kIFNhbSBX
ZWluaWcuCisKKyAgICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZhbHVlX29yLgorCisgICAgICAg
ICogRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbToKKyAgICAgICAgKC1bRE9NSFRNTE9w
dGlvbnNDb2xsZWN0aW9uIGFkZDppbmRleDpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2Vu
ZEV2ZW50OmlzRHJhd1JlY3Q6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQ6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAg
KC1bV2ViU2VjdXJpdHlPcmlnaW4gcG9ydF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICh0b0FjdGlvbik6CisgICAgICAgICh0b1RhZyk6CisKIDIwMTYtMTEt
MjIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBJbiBM
ZWdhY3kgV2ViS2l0LCBwcmVzc2luZyBhbiBhcnJvdyBrZXkgaW4gZWRpdGFibGUgY29udGVudCBk
b2VzbuKAmXQgaGlkZSB0aGUgbW91c2UgY3Vyc29yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggM2JiOGE2
NGIyZTk3NjAyZWIyMTNlYjczMTU0M2VlMDU0YzIwY2Y2OS4uMjJmYjliNGY0N2FkMWIxNzFkOTc5
NTY3MGYzMGU0NmUxZDdhYmUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE2LTExLTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtXVEZdIEltcG9ydCBzdGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBh
cyBXVEY6Ok9wdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aSBhbmQgU2Ft
IFdlaW5pZy4KKworICAgICAgICBVc2UgV1RGOjpPcHRpb25hbDo6dmFsdWVfb3IuCisKKyAgICAg
ICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENvbW1pdExvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2Vj
dXJpdHlPcmlnaW46OnBvcnQpOgorCiAyMDE2LTExLTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0syXSBXaGVuIHpvb21lZCBpbiBhbmQg
cGFubmluZyBvbiBwYWdlcyB3aXRoIGZpeGVkIGJhcnMsIHBhcnRzIG9mIHRoZSBiYXJzIGFyZSBz
b21ldGltZXMgbWlzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIzMGRkMjJiOTgxMzQ1NGUzOTg3YWUwZDU1
ZDc0MDIyZTIxNTkyNGYuLmY1NmZhMzEyYjNkYmUzYWU3NTgxZDliNzEzYWNkZDVhM2U4MDllODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOTEgQEAKKzIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0
aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDE5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpIGFuZCBTYW0gV2VpbmlnLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXNwb25zZUhhc0V4cGly
ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPHN0ZDo6b3B0aW9uYWw8VD4+
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPHN0ZDo6b3B0
aW9uYWw8VD4+OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVy
PE9wdGlvbmFsPFQ+Pjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDb2RlcjxPcHRpb25hbDxUPj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6cmVhZE9yTWFrZVNhbHQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRy
eTo6UHJlbG9hZGVkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OlByZWxvYWRlZEVudHJ5OjpyZXZhbGlkYXRpb25SZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjph
ZGRQcmVsb2FkZWRFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OnJlY29yZE5vdFVzaW5nQ2FjaGVGb3JSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpyZWNvcmRSZXRyaWV2YWxG
YWlsdXJlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdGF0aXN0aWNzOjpxdWVy
eVdhc0V2ZXJSZXF1ZXN0ZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjpzdG9yZUJvZHlBc0Jsb2IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OmVuY29kZVJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Rv
cmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPHN0ZDo6b3B0aW9uYWw8
VD4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPHN0ZDo6b3B0aW9uYWw8
VD4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6T3B0aW9uYWw8
VD4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdURjo6
T3B0aW9uYWw8VD4+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkpOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFBsYXRmb3JtL3Vu
aXgvU2hhcmVkTWVtb3J5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
bWFwKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKGNs
YXNzX3RlbXBsYXRlX2hlYWRlcnMpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJU2VjdXJpdHlP
cmlnaW4uaDoKKyAgICAgICAgKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOgorICAgICAgICAoV0tTZWN1
cml0eU9yaWdpbkdldFBvcnQpOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNo
YXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRnJvbU9i
amVjdCk6CisgICAgICAgICogU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnNlbmRTZWNJdGVtUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dLU2VjdXJpdHlPcmlnaW4g
cG9ydF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9uYXZpZ2F0aW9uR2VzdHVyZURpZEVuZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6
OnRvV2Vic2l0ZURhdGFUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcDoKKyAgICAgICAgKEV3a1ZpZXc6OnNldEN1cnNvcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAodG9Db3JlU2Nyb2xsYmFyU3R5bGUpOgorICAg
ICAgICAodG9BUElTY3JvbGxiYXJTdHlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OndlYkZyYW1lSURGb3JIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c3dpdGNoVG9Ccm93c2luZ0NvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzb2x2
ZUNoaWxkRnJhbWVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cmVzb2x2ZVBhcmVudEZyYW1lSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZVZpZXdFeHBvc2VkUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6b3ZlcmxheVNjcm9sbGJhclN0eWxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdFeHBvc2VkUmVjdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0Fy
ZWFQcm94eTo6dmlld0V4cG9zZWRSZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpmaWxlQ3JlYXRpb25UaW1lKToKKyAgICAgICAgKFdlYktp
dDo6ZmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVNZWRpYURldmlj
ZXNGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0ZvcndhcmRMaXN0U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tU3Rh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpvdmVy
bGF5U2Nyb2xsYmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlWDExLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL1dlYlByZWZlcmVuY2VzR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXM6OnBsYXRmb3JtSW5pdGlhbGl6ZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2Ny
b2xsT2Zmc2V0Rm9yRXZlbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2ludGVycHJl
dEtleUV2ZW50OmlzQ2hhckV2ZW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZW5jb2RlRm9ybURhdGFF
bGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6ZGVjb2RlRm9ybURhdGFFbGVtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6ZGVjb2RlVjFTZXNzaW9uSGlzdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJp
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jv
b3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdU
b1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4pOgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3Jt
RnJhbWVMb2FkVVJMUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmV2YWx1
YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5Rm9ySG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBs
dWdpbkluZm9Qcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6dG9Gb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
Y2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldFZpZXdFeHBvc2VkUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpzZXRWaWV3RXhwb3NlZFJlY3QpOgorCiAyMDE2LTExLTI1ICBNaWNoYWVsIENhdGFuemFy
byAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBGb2xsb3ctdXAgZml4
ZXMgdG8gcjIwODk3NApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CmluZGV4IDg3MjhhZDcyYjUxNDNh
YWRmYzhiYzNjODhhMjQ4NDNiMTQyZjI1MDcuLjVlM2VlODJhNjEzYmE0Yjc1MzQ2MjU1YzQyOTZh
YmUwMzcwYWJlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAgLTg1LDcgKzg1LDcgQEAg
Y2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAjZGVmaW5lIERFRklORV9CVUlMVElO
X0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxc
CiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291
cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKQEAgLTk2LDcgKzk2LDcgQEAgY2xhc3MgQnVpbHRpbnNHZW5lcmF0b3JU
ZW1wbGF0ZXM6CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCkt
PmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNp
Yyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRl
czoKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
JHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNf
IyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFt
ZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBCdWlsdGluc0dlbmVyYXRvclRlbXBsYXRl
czoKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0m
IHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
JHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNf
IyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFt
ZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RN
YWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJv
bWlzZS1Db21iaW5lZC5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90
ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtQ29t
YmluZWQuanMtcmVzdWx0CmluZGV4IGZhZjQ0OTkxZjBjYjU3YTQyZWQ5OGYzZGUwOGQ3Y2ExMTNj
NDQ3OWUuLjliYjIxZDYwMzc5ZmI0NDAyNDIyNmI3Zjg3MDI3NTY4NTdiMDMwZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1Db21iaW5lZC5qcy1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2
YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNlLUNvbWJpbmVkLmpzLXJlc3VsdApAQCAtMTUyLDcg
KzE1Miw3IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpblByb21pc2VGdWxmaWxsUHJvbWlzZUNvZGUg
PQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFt
ZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNH
ZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRh
YmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJp
bnNpYyk7IH0KKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
U291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CiBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERF
RklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
LlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5Qcm9taXNl
LVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCA2MTFhZWVmNDQ5OWE4ZjZlODUyYjQ0OWYyYzljM2Ux
ODA5YWU1ZTRkLi44N2ZkYWVlMzhlZGE2Njk3OWIyZTg3OWE1NGVkZGEzYmM0ZWExMmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLlByb21pc2UtU2VwYXJhdGUuanMtcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVk
L0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4uUHJvbWlzZS1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTE1
MSw3ICsxNTEsNyBAQCBjb25zdCBjaGFyKiBzX2J1aWx0aW5Qcm9taXNlRnVsZmlsbFByb21pc2VD
b2RlID0KICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlv
bk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFt
ZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAotICAgIHJldHVybiB2bS5idWlsdGluRXhl
Y3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyB9CisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFt
ZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQog
SlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9NSVNFX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0ph
dmFTY3JpcHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3Jp
cHRDb3JlLUJ1aWx0aW4ucHJvdG90eXBlLUNvbWJpbmVkLmpzLXJlc3VsdAppbmRleCA2ODc2ODhh
YmY3YjhmOWJiODM3ZGZlNzFjYWRlMTAzMDU1NzE4NmJmLi42YmY2OTZmZGRkNTEyYTViYTM0MDE0
OTkzYWIwMDI0ZTMzYjZlNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3Rv
dHlwZS1Db21iaW5lZC5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbi5wcm90b3R5
cGUtQ29tYmluZWQuanMtcmVzdWx0CkBAIC0xNzYsNyArMTc2LDcgQEAgY29uc3QgY2hhciogc19i
dWlsdGluUHJvdG90eXBlRm9yRWFjaENvZGUgPQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0g
ICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgp
LT5saW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBO
dWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICByZXR1cm4gdm0uYnVpbHRp
bkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyB9CiBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9K
YXZhU2NyaXB0Q29yZS1CdWlsdGluLnByb3RvdHlwZS1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXgg
OWRhZGM1NjhhMTIwNmE1MDIxOWQ0YWYxNzE2ZTBmMzU5MjhkNTE3MC4uZDBjOGYyNmVmMThhNjJl
ZjFmYWQ5YjczOTA5YjExMjU5MjdjZmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRp
bi5wcm90b3R5cGUtU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW4u
cHJvdG90eXBlLVNlcGFyYXRlLmpzLXJlc3VsdApAQCAtMTc1LDcgKzE3NSw3IEBAIGNvbnN0IGNo
YXIqIHNfYnVpbHRpblByb3RvdHlwZUZvckVhY2hDb2RlID0KICNkZWZpbmUgREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3VtZW50Q291bnQpIFwKIEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBc
CiB7XAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3Vy
Y2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyB9CisgICAgcmV0dXJuIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQogSlNDX0ZPUkVBQ0hfQlVJTFRJTi5QUk9UT1RZ
UEVfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0
cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rv
ci1Db21iaW5lZC5qcy1yZXN1bHQKaW5kZXggNjdiZWQ2NDk1MDEwYWFiZTQ3YTZiMTNjOWZjZWRk
NDQ2MGFmYTc2My4uMDIzYTgyOThjNGNiNDU0NWI1M2E3MDViZTdmZmI4MmRjNzIxYzAyZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLUNvbWJpbmVkLmpzLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGluQ29uc3RydWN0b3ItQ29tYmluZWQuanMtcmVzdWx0
CkBAIC0xODksNyArMTg5LDcgQEAgY29uc3QgY2hhciogc19idWlsdGluQ29uc3RydWN0b3JGcm9t
Q29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rp
b25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5h
bWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4
ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5h
bWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IH0K
IEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5k
ZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1
aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZhU2NyaXB0Q29yZS1CdWlsdGlu
Q29uc3RydWN0b3ItU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDA5NjIwMTMyN2EyOTZkMTliZmUy
ODQwYzg2NGNhMjRiMDllNDk5ZWEuLjgwMDBiNjk2Mzg0N2M3YmIxOGZiYjZkYjI4ODM2N2M4ZWE5
YWYzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUJ1aWx0aW5Db25zdHJ1Y3Rvci1TZXBhcmF0
ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtQnVpbHRpbkNvbnN0cnVjdG9yLVNlcGFyYXRl
LmpzLXJlc3VsdApAQCAtMTg4LDcgKzE4OCw3IEBAIGNvbnN0IGNoYXIqIHNfYnVpbHRpbkNvbnN0
cnVjdG9yRnJvbUNvZGUgPQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwKIHtcCi0gICAgcmV0dXJuIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBOdWxsb3B0LCBzXyMj
Y29kZU5hbWUjI0ludHJpbnNpYyk7IH0KKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVz
KCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRy
aW5zaWMpOyB9CiBKU0NfRk9SRUFDSF9CVUlMVElOQ09OU1RSVUNUT1JfQlVJTFRJTl9DT0RFKERF
RklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvSmF2YVNjcmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVk
LmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL0phdmFTY3JpcHRDb3JlLUludGVybmFsQ2xhc2hpbmdOYW1lcy1Db21iaW5lZC5q
cy1yZXN1bHQKaW5kZXggYmY4YTQ2Y2YxODQ5YjEyN2VlMzU1YjU5NGQzYzRmMWM5OThlZGRmYS4u
OGNiYjUzOWJlN2E5ZGNjZThhNTE4N2QxYjIyODI4NzkwMTdhMTQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvSmF2YVNj
cmlwdENvcmUtSW50ZXJuYWxDbGFzaGluZ05hbWVzLUNvbWJpbmVkLmpzLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9KYXZh
U2NyaXB0Q29yZS1JbnRlcm5hbENsYXNoaW5nTmFtZXMtQ29tYmluZWQuanMtcmVzdWx0CkBAIC0x
MzksNyArMTM5LDcgQEAgY29uc3QgY2hhciogc19pbnRlcm5hbENsYXNoaW5nTmFtZXNJc1JlYWRh
YmxlU3RyZWFtTG9ja2VkQ29kZSA9CiAjZGVmaW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihj
b2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcCiBKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAoge1wKLSAgICByZXR1
cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmso
dm0sIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgfQorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0
YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUj
I0ludHJpbnNpYyk7IH0KIEpTQ19GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUtQW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2Vi
Q29yZS1Bbm90aGVyR3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5k
ZXggOGY4NDUxMTI3ODIzNzkzNTJlYzg1NGQ0ODEyYjVlODY0NzI3N2ZjOS4uYWQ1MzBiMmY1NWI3
ZjhiNjI1NDVjZTI3MDY0YmFjNTg5MGY1Yjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Bbm90aGVyR3Vh
cmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Bbm90aGVy
R3VhcmRlZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTIxNCw3ICsyMTQs
NyBAQCBjb25zdCBjaGFyKiBzX2Fub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluTGV0c0ZldGNo
Q29kZSA9CiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXAoge1wKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1cm4gY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVp
bHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkuYW5vdGhlckd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNv
ZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisg
ICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5hbm90aGVyR3VhcmRlZElu
dGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwg
Y2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFub3RoZXJHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVO
YW1lIyNJbnRyaW5zaWMpOyBcCiB9CiBXRUJDT1JFX0ZPUkVBQ0hfQU5PVEhFUkdVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRl
ZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5Q29u
ZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5qcy1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUFyYml0cmFyeUNvbmRpdGlv
bmFsR3VhcmQtU2VwYXJhdGUuanMtcmVzdWx0CmluZGV4IDI5Y2UyMTg2MGE1Nzk3OGUzMjAzNzQy
NDhhNWNkODkxNWY5ZDlkMTIuLmY5MWI2ZDljY2UxNDYyZmNkM2M2ZDExZTcyZTRkMTkyOTBjMzMy
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0
aW5zL2V4cGVjdGVkL1dlYkNvcmUtQXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZC1TZXBhcmF0ZS5q
cy1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRp
bnMvZXhwZWN0ZWQvV2ViQ29yZS1BcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkLVNlcGFyYXRlLmpz
LXJlc3VsdApAQCAtMTg0LDcgKzE4NCw3IEBAIGNvbnN0IGNoYXIqIHNfYXJiaXRyYXJ5Q29uZGl0
aW9uYWxHdWFyZElzUmVhZGFibGVTdHJlYW1Mb2NrZWRDb2RlID0KIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcCiB7XAogICAgIEpTVk1D
bGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKTsgXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
YXJiaXRyYXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUo
KS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmFyYml0cmFyeUNvbmRp
dGlvbmFsR3VhcmRCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgTnVsbG9wdCwgc18jI2Nv
ZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS5hcmJpdHJhcnlDb25kaXRpb25hbEd1YXJkQnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhl
Y3V0YWJsZSgpLT5saW5rKHZtLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuYXJiaXRy
YXJ5Q29uZGl0aW9uYWxHdWFyZEJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51
bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX0FS
QklUUkFSWUNPTkRJVElPTkFMR1VBUkRfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUt
R3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1T
ZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggN2MyMDAyODgyMzBkMzU1M2FlMWIwYmUyYTAzODliN2Vh
NWM3MjMwOS4uZTk3MTc1NTFiNzA5YWFhNWI3ZjUwNWQ4ZTEyNzllZjE1MTg4ZjNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0
ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1H
dWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTE4NCw3ICsxODQsNyBAQCBjb25z
dCBjaGFyKiBzX2d1YXJkZWRCdWlsdGluSXNSZWFkYWJsZVN0cmVhbUxvY2tlZENvZGUgPQogSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFwK
IHtcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcCi0gICAgcmV0dXJuIGNsaWVudERhdGEtPmJ1aWx0
aW5GdW5jdGlvbnMoKS5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1YXJkZWRCdWls
dGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNfIyNjb2RlTmFtZSMj
SW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
Z3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0s
IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCku
Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2lj
KTsgXAogfQogV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9l
eHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQv
V2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCAy
MmU3YTc0NzZmZWU5NDNlNTFiOWNmYTk1MGY0NTA4ZWU5MWI4OTc5Li4wMzljY2MxMmQyNjI4ZTIx
NTkzM2E2ODFiNjk3YzNiMzMxOTdjNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
Y3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEludGVybmFsQnVp
bHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTIxNiw3ICsyMTYsNyBAQCBjb25zdCBjaGFyKiBz
X2d1YXJkZWRJbnRlcm5hbEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29kZSA9CiBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXAog
e1wKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLmd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNF
eGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5ndWFy
ZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkuZ3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUj
I0V4ZWN1dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLmd1
YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpu
dWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVu
Z3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGlu
LVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCBhYzEwYTExYTUwMDRjZTM2ZDg0ZjZiM2RiYTJmM2I0
NDI2NmUzMzg1Li5mMWRjYWNlOWU0N2U4OGE3NTA1Njk4ZDhlYTBjZDEwYjNkNDI5NDY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBl
Y3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNv
cmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTE3OCw3ICsxNzgsNyBA
QCBjb25zdCBjaGFyKiBzX3VuZ3VhcmRlZEJ1aWx0aW5Jc1JlYWRhYmxlU3RyZWFtTG9ja2VkQ29k
ZSA9CiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZN
JiB2bSkgXAoge1wKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1cm4gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlucygpLmNvZGVOYW1l
IyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS51
bmd1YXJkZWRCdWlsdGluQnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIE51bGxvcHQsIHNf
IyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkudW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnVuZ3VhcmRlZEJ1
aWx0aW5CdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElO
X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JV
SUxUSU5fR0VORVJBVE9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUu
anMtcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMv
ZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdAppbmRleCBk
NWJlNjJmMDczNzNmMmE3ZmVmMjc2YWRlY2VhNGJkZWUzMTA3MTkwLi5kMjE2MjZkYTQwMWIzNWNl
NTc2ZGEzZjIzMTVjYzFkNzM4YjQzMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3Qt
U2VwYXJhdGUuanMtcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rl
c3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1y
ZXN1bHQKQEAgLTI2Nyw3ICsyNjcsNyBAQCBjb25zdCBjaGFyKiBzX3htbENhc2luZ1Rlc3RVcmxD
YXNpbmdUZXN0Q29kZSA9CiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVy
YXRvcihKU0M6OlZNJiB2bSkgXAoge1wKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9
IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7IFwKLSAgICByZXR1
cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENhc2luZ1Rlc3RCdWlsdGlucygp
LmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIGNsaWVudERhdGEtPmJ1aWx0aW5GdW5j
dGlvbnMoKS54bWxDYXNpbmdUZXN0QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIE51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiBjbGllbnREYXRhLT5i
dWlsdGluRnVuY3Rpb25zKCkueG1sQ2FzaW5nVGVzdEJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnhtbENhc2lu
Z1Rlc3RCdWlsdGlucygpLmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29k
ZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDY1NDYxMDcwYWIxZDYwZGRhYzAwN2FjODM4MjYy
ZjhkYzNiZDUzZWQuLmUzODA1N2I3NDgwM2MzMWY2Y2U4MjE3MDBmMzI0NDgwOGU1YjExMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCkBAIC0zMjkyLDcgKzMyOTIsNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0
IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QVJNNjRBc3NlbWJsZXIsIE1hY3JvQQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oQVJNNjRBc3Nl
bWJsZXI6OmludmVydChzdGF0aWNfY2FzdDxBUk02NEFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25k
KSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxSZXN1bHRDb25kaXRpb24+IGNvbW11
dGVDb21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlc3VsdENvbmRpdGlvbj4gY29tbXV0ZUNvbXBhcmVUb1plcm9J
bnRvVGVzdChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCiAgICAgewogICAgICAgICBzd2l0Y2gg
KGNvbmQpIHsKICAgICAgICAgY2FzZSBFcXVhbDoKQEAgLTMzMDUsNyArMzMwNSw3IEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBUk02
NEFzc2VtYmxlciwgTWFjcm9BCiAgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IGNhZjc5MmE0YjIyZTQwYjhhNjc3NDg0ZWEwNTI3
ODg1MTExYTgyNjguLmRhYTIzYzNiYmNiZjBjMTczOGZjZjc0M2YxZTgyZmU5OTg2YTdhNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTI2NTYsNyArMjY1Niw3IEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8WDg2QXNzZW1ibGVy
LCBNYWNyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0Q29u
ZGl0aW9uPiBjb21tdXRlQ29tcGFyZVRvWmVyb0ludG9UZXN0KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXN1bHRDb25kaXRpb24+IGNvbW11dGVD
b21wYXJlVG9aZXJvSW50b1Rlc3QoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQogICAgIHsKICAg
ICAgICAgc3dpdGNoIChjb25kKSB7CiAgICAgICAgIGNhc2UgRXF1YWw6CkBAIC0yNjY5LDcgKzI2
NjksNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPFg4NkFzc2VtYmxlciwgTWFjcgogICAgICAgICAgICAgcmV0dXJuIFBvc2l0
aXZlT3JaZXJvOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NoZWNrU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNp
YWwuY3BwCmluZGV4IDg2NjFiYmQ1Y2M3YWRhYjNiNWE1ZDJmYmUyMzA2MGRiMWMwNzk1NzguLjZm
NzgyNmNiNWY5ZGY0Yzg5OTFlY2UwYTU4ZDY3MTk4MmRjZjA1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQg
Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJ
bnN0OjpFYWNoQXJnQ2FsbGJhCiAgICAgICAgICAgICBjYWxsYmFjayhpbnN0LmFyZ3NbMSArIGlu
ZGV4XSwgcm9sZSwgdHlwZSwgd2lkdGgpOwogICAgICAgICB9KTsKIAotICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gZmlyc3RSZWNvdmVyYWJsZUluZGV4OwogICAgIGlmIChtX2NoZWNrS2luZC5vcGNvZGUgPT0g
QnJhbmNoQWRkMzIgfHwgbV9jaGVja0tpbmQub3Bjb2RlID09IEJyYW5jaEFkZDY0KQogICAgICAg
ICBmaXJzdFJlY292ZXJhYmxlSW5kZXggPSAxOwogICAgIGZvckVhY2hBcmdJbXBsKG51bUIzQXJn
cyhpbnN0KSwgbV9udW1DaGVja0FyZ3MgKyAxLCBpbnN0LCBtX3N0YWNrbWFwUm9sZSwgZmlyc3RS
ZWNvdmVyYWJsZUluZGV4LCBjYWxsYmFjayk7CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCBib29sIENo
ZWNrU3BlY2lhbDo6YWRtaXRzU3RhY2soSW5zdCYgaW5zdCwgdW5zaWduZWQgYXJnSW5kZXgpCiAg
ICAgcmV0dXJuIGFkbWl0c1N0YWNrSW1wbChudW1CM0FyZ3MoaW5zdCksIG1fbnVtQ2hlY2tBcmdz
ICsgMSwgaW5zdCwgYXJnSW5kZXgpOwogfQogCi1PcHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVj
aWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQorc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQogewot
ICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gYnJhbmNoRGVmID0gaGlkZGVuQnJhbmNoKGluc3Qp
LnNob3VsZFRyeUFsaWFzaW5nRGVmKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGJyYW5jaERlZiA9IGhpZGRlbkJyYW5jaChpbnN0KS5zaG91bGRUcnlBbGlhc2luZ0RlZigpKQog
ICAgICAgICByZXR1cm4gKmJyYW5jaERlZiArIDE7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQ0NhbGxIZWxwZXJzOjpKdW1wIENoZWNrU3BlY2lh
bDo6Z2VuZXJhdGUoSW5zdCYgaW5zdCwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdlbmVyYXRpb25Db250
ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hl
Y2tTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaApp
bmRleCBhZWMxODk3MTVlYzA0ZjNlMGJlOTQ5YmQzODZmY2ZlMGE3NTkzYWNkLi5hYTdmMmZlYWI5
Yzg0MTU5OGM4MWEzYTU0MWU1OTdjM2M4MzRmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1NwZWNpYWwuaApAQCAtMTIzLDcgKzEyMyw3IEBAIGNsYXNzIENoZWNrU3BlY2lh
bCA6IHB1YmxpYyBTdGFja21hcFNwZWNpYWwgewogICAgIHZvaWQgZm9yRWFjaEFyZyhBaXI6Oklu
c3QmLCBjb25zdCBTY29wZWRMYW1iZGE8QWlyOjpJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+Jikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc1ZhbGlkKEFpcjo6SW5zdCYpIG92ZXJyaWRlOwogICAgIGJvb2wg
YWRtaXRzU3RhY2soQWlyOjpJbnN0JiwgdW5zaWduZWQgYXJnSW5kZXgpIG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihBaXI6Okluc3QmKSBvdmVy
cmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzaG91bGRUcnlBbGlhc2luZ0RlZihB
aXI6Okluc3QmKSBvdmVycmlkZTsKIAogICAgIC8vIE5PVEU6IHRoZSBnZW5lcmF0ZSBtZXRob2Qg
d2lsbCBnZW5lcmF0ZSB0aGUgaGlkZGVuIGJyYW5jaCBhbmQgdGhlbiByZWdpc3RlciBhIExhdGVQ
YXRoIHRoYXQKICAgICAvLyBnZW5lcmF0ZXMgdGhlIHN0YWNrbWFwLiBTdXBlciBjcmF6eSBkdWRl
IQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA5NzU5MjI2
ZTUyYjg4MDlhYjUwNGE5NmI1YmRkODFiNzUxMDgzZGQyLi40OTBiYWU0NDUyY2E2Y2UwOTdlZGEz
ZTA0YjQ5YTMyNDBjN2ZlMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcApAQCAtNDI3LDEyICs0MjcsMTIgQEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2NhbGVG
b3JTaGwoVmFsdWUqIHNobCwgaW50MzJfdCBvZmZzZXQsIE9wdGlvbmFsPEFyZzo6V2lkdGg+IHdp
ZHRoID0gTnVsbG9wdCkKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzY2FsZUZvclNobChW
YWx1ZSogc2hsLCBpbnQzMl90IG9mZnNldCwgc3RkOjpvcHRpb25hbDxBcmc6OldpZHRoPiB3aWR0
aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChzaGwtPm9wY29kZSgpICE9IFNo
bCkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgaWYgKCFzaGwtPmNoaWxkKDEpLT5oYXNJbnQzMigpKQotICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB1bnNpZ25lZCBsb2dTY2FsZSA9IHNobC0+Y2hpbGQoMSktPmFzSW50MzIoKTsKICAg
ICAgICAgaWYgKHNobC0+dHlwZSgpID09IEludDMyKQogICAgICAgICAgICAgbG9nU2NhbGUgJj0g
MzE7CkBAIC00NDIsMTAgKzQ0MiwxMCBAQCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICAgICAgLy8g
dG8gc2lnbmVkIHNpbmNlIHRoYXQncyB3aGF0IGFsbCBvZiBvdXIgQVBJcyB3YW50LgogICAgICAg
ICBpbnQ2NF90IGJpZ1NjYWxlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90Pihsb2dTY2FsZSk7CiAgICAgICAgIGlmICghaXNSZXByZXNlbnRhYmxlQXM8
aW50MzJfdD4oYmlnU2NhbGUpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB1bnNpZ25lZCBzY2FsZSA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KGJpZ1NjYWxlKTsKICAgICAgICAgaWYgKCFBcmc6OmlzVmFsaWRJbmRl
eEZvcm0oc2NhbGUsIG9mZnNldCwgd2lkdGgpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gc2NhbGU7
CiAgICAgfQogCkBAIC00NzAsNyArNDcwLDcgQEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgICAg
ICAgICBWYWx1ZSogcmlnaHQgPSBhZGRyZXNzLT5jaGlsZCgxKTsKIAogICAgICAgICAgICAgYXV0
byB0cnlJbmRleCA9IFsmXSAoVmFsdWUqIGluZGV4LCBWYWx1ZSogYmFzZSkgLT4gQXJnIHsKLSAg
ICAgICAgICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChpbmRl
eCwgb2Zmc2V0LCB3aWR0aCk7CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gc2NhbGUgPSBzY2FsZUZvclNobChpbmRleCwgb2Zmc2V0LCB3aWR0aCk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFzY2FsZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFyZygpOwogICAg
ICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhpbmRleC0+Y2hpbGQoMCkpIHx8IG1f
bG9ja2VkLmNvbnRhaW5zKGJhc2UpKQpAQCAtMTkzNCw3ICsxOTM0LDcgQEAgY2xhc3MgTG93ZXJU
b0FpciB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5U2hsID0gWyZdIChW
YWx1ZSogc2hsLCBWYWx1ZSogb3RoZXIpIC0+IGJvb2wgewotICAgICAgICAgICAgT3B0aW9uYWw8
dW5zaWduZWQ+IHNjYWxlID0gc2NhbGVGb3JTaGwoc2hsLCBvZmZzZXQpOworICAgICAgICAgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2NhbGUgPSBzY2FsZUZvclNobChzaGwsIG9mZnNldCk7
CiAgICAgICAgICAgICBpZiAoIXNjYWxlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGlmICghY2FuQmVJbnRlcm5hbChzaGwpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM09wY29kZS5jcHAKaW5kZXggM2M3ZmVkZTQ1MDRkNzVmMTNmZTllMjkzNDViY2EyNzc4NzM3
ODM5Mi4uYTBhYTVhOTkwNjk3NDhlMzk0YWI5YmJjZTY2ZDljYWZkN2U3NmExOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCi1PcHRpb25hbDxPcGNvZGU+IGludmVydGVkQ29tcGFy
ZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUpCitzdGQ6Om9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0
ZWRDb21wYXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKG9wY29k
ZSkgewogICAgIGNhc2UgRXF1YWw6CkBAIC00MiwxOSArNDIsMTkgQEAgT3B0aW9uYWw8T3Bjb2Rl
PiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgTGVz
c1RoYW46CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBHcmVh
dGVyRXF1YWw7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGlmIChpc0ludCh0eXBlKSkK
ICAgICAgICAgICAgIHJldHVybiBMZXNzRXF1YWw7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgTGVzc0VxdWFsOgogICAgICAg
ICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47Ci0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNh
c2UgR3JlYXRlckVxdWFsOgogICAgICAgICBpZiAoaXNJbnQodHlwZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gTGVzc1RoYW47Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNhc2UgQWJvdmU6CiAgICAgICAgIHJldHVybiBCZWxvd0VxdWFs
OwogICAgIGNhc2UgQmVsb3c6CkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPE9wY29kZT4gaW52
ZXJ0ZWRDb21wYXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKICAgICBjYXNlIEJlbG93RXF1
YWw6CiAgICAgICAgIHJldHVybiBBYm92ZTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggYzY4YWFiYjBkYjdhYzgxNTgyNDUxYTQzYjdk
NWQ1ZGNlZTM4MjRmYi4uOTU2ZGJhOTlhZGEyY2EwMzJkODIyNDQ0NWJhNzE2YWNmOWZhODUzOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTI2NSw3ICsyNjUsNyBAQCBpbmxp
bmUgYm9vbCBpc0NoZWNrTWF0aChPcGNvZGUgb3Bjb2RlKQogICAgIH0KIH0KIAotT3B0aW9uYWw8
T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlLCBUeXBlKTsKK3N0ZDo6b3B0aW9uYWw8T3Bj
b2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlLCBUeXBlKTsKIAogaW5saW5lIE9wY29kZSBjb25z
dFB0ck9wY29kZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
YXRjaHBvaW50U3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBv
aW50U3BlY2lhbC5jcHAKaW5kZXggNzFhZGFjOWQyYTk4M2NjOWNmYmI5Zjg3MWI5NTQ0ZGUxZDJj
MDM0My4uYzVmYzU4ODVkM2FjYWY4OTVjOGM5YzAxZGFmODgyNzFkNmMxZTI2OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcApAQCAtNTks
NyArNTksNyBAQCB2b2lkIFBhdGNocG9pbnRTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3Qs
IGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQwogICAgICAgICBjYWxsYmFjayhpbnN0
LmFyZ3NbYXJnSW5kZXgrK10sIHJvbGUsIGluc3Qub3JpZ2luLT5haXJUeXBlKCksIGluc3Qub3Jp
Z2luLT5haXJXaWR0aCgpKTsKICAgICB9CiAKLSAgICBmb3JFYWNoQXJnSW1wbCgwLCBhcmdJbmRl
eCwgaW5zdCwgU2FtZUFzUmVwLCBOdWxsb3B0LCBjYWxsYmFjayk7CisgICAgZm9yRWFjaEFyZ0lt
cGwoMCwgYXJnSW5kZXgsIGluc3QsIFNhbWVBc1JlcCwgc3RkOjpudWxsb3B0LCBjYWxsYmFjayk7
CiAgICAgYXJnSW5kZXggKz0gaW5zdC5vcmlnaW4tPm51bUNoaWxkcmVuKCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7IGktLTspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAppbmRleCA4
Y2Y4MWQwMzdhMWM5MGZiMDhjODI1NzE3ODJjN2JmODUwZmI3NjQxLi5iNWFhNmMzZmZlYzA4OTkx
NjlmMTY5ODU0MDBlNzA3ODM2YmFkNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKQEAgLTczLDcgKzczLDcgQEAgUmVnaXN0ZXJTZXQgU3Rh
Y2ttYXBTcGVjaWFsOjpleHRyYUVhcmx5Q2xvYmJlcmVkUmVncyhJbnN0JiBpbnN0KQogCiB2b2lk
IFN0YWNrbWFwU3BlY2lhbDo6Zm9yRWFjaEFyZ0ltcGwoCiAgICAgdW5zaWduZWQgbnVtSWdub3Jl
ZEIzQXJncywgdW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsCi0gICAgSW5zdCYgaW5zdCwgUm9s
ZU1vZGUgcm9sZU1vZGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBmaXJzdFJlY292ZXJhYmxlSW5kZXgs
CisgICAgSW5zdCYgaW5zdCwgUm9sZU1vZGUgcm9sZU1vZGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwKICAgICBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6
RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2spCiB7CiAgICAgU3RhY2ttYXBWYWx1ZSogdmFsdWUg
PSBpbnN0Lm9yaWdpbi0+YXM8U3RhY2ttYXBWYWx1ZT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKaW5kZXggYmQ2YTNiNTQ3NDg5ODc2NTkzZTU1MWQ2
ZTI4MWIzZGJiYzY3N2ExNy4uOTdhMDgxM2QxZGM1ODE5ZTBiMTc4MjRlNzBmYmU4ZDQ5MjA5MmI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKQEAg
LTU5LDcgKzU5LDcgQEAgY2xhc3MgU3RhY2ttYXBTcGVjaWFsIDogcHVibGljIEFpcjo6U3BlY2lh
bCB7CiAgICAgLy8gc3ViY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGF0LgogICAgIHZvaWQgZm9y
RWFjaEFyZ0ltcGwoCiAgICAgICAgIHVuc2lnbmVkIG51bUlnbm9yZWRCM0FyZ3MsIHVuc2lnbmVk
IG51bUlnbm9yZWRBaXJBcmdzLAotICAgICAgICBBaXI6Okluc3QmLCBSb2xlTW9kZSwgT3B0aW9u
YWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwKKyAgICAgICAgQWlyOjpJbnN0Jiwg
Um9sZU1vZGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZpcnN0UmVjb3ZlcmFibGVJbmRleCwK
ICAgICAgICAgY29uc3QgU2NvcGVkTGFtYmRhPEFpcjo6SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYp
OwogICAgIAogICAgIGJvb2wgaXNWYWxpZEltcGwoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5jcHAKaW5kZXggNjQ0MTBhYzU0ZmM5NWQ2M2E3ZDUxOTAzM2E4OGVlMzBmMDFjOTc1MC4uYjRm
YzQzMzY5OWQwMWFhNjBiMzNmZjBlMTAzMzFmODNiNGY0ZjBlZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIFZhbHVlKiBWYWx1ZTo6aW52ZXJ0
ZWRDb21wYXJlKFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICBpZiAoIW51bUNoaWxkcmVu
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChPcHRpb25hbDxPcGNvZGU+IGlu
dmVydGVkT3Bjb2RlID0gQjM6OmludmVydGVkQ29tcGFyZShvcGNvZGUoKSwgY2hpbGQoMCktPnR5
cGUoKSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxPcGNvZGU+IGludmVydGVkT3Bjb2RlID0g
QjM6OmludmVydGVkQ29tcGFyZShvcGNvZGUoKSwgY2hpbGQoMCktPnR5cGUoKSkpIHsKICAgICAg
ICAgQVNTRVJUKCFraW5kKCkuaGFzRXh0cmFCaXRzKCkpOwogICAgICAgICByZXR1cm4gcHJvYy5h
ZGQ8VmFsdWU+KCppbnZlcnRlZE9wY29kZSwgdHlwZSgpLCBvcmlnaW4oKSwgY2hpbGRyZW4oKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggMmU5ZTU3ZDZj
ZTExZDBmNDA5MGUyMDJiOGU0YjVmOWY1YzZmNWM2ZC4uMTNkYjFjZTdlZjk3OGNkYWI3MWI3YWYz
N2M1MjFmZDhhMjhhOGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBA
IC01NDUsNyArNTQ1LDcgQEAgY2xhc3MgQXJnIHsKICAgICB9CiAKICAgICAvLyBJZiB5b3UgZG9u
J3QgcGFzcyBhIFdpZHRoLCB0aGlzIG9wdGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5b3UncmUg
dXNpbmcgdGhlIHJpZ2h0IHdpZHRoLgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1bnNp
Z25lZCBzY2FsZSwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gTnVsbG9wdCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkU2NhbGUodW5zaWduZWQgc2NhbGUsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdp
ZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzY2FsZSkgewogICAg
ICAgICBjYXNlIDE6CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBjbGFzcyBBcmcgewogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKGlu
dDMyX3Qgb2Zmc2V0LCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBOdWxsb3B0KQorICAgIHN0YXRp
YyBib29sIGlzVmFsaWRBZGRyRm9ybShpbnQzMl90IG9mZnNldCwgc3RkOjpvcHRpb25hbDxXaWR0
aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBpZiAoaXNYODYoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTExMCw3ICsxMTEwLDcgQEAgY2xhc3MgQXJnIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGlzVmFsaWRJ
bmRleEZvcm0odW5zaWduZWQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0LCBPcHRpb25hbDxXaWR0aD4g
d2lkdGggPSBOdWxsb3B0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbmRleEZvcm0odW5zaWdu
ZWQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0
ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmICghaXNWYWxpZFNjYWxlKHNjYWxlLCB3aWR0
aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTI0LDcgKzExMjQsNyBAQCBjbGFz
cyBBcmcgewogICAgIC8vIElmIHlvdSBkb24ndCBwYXNzIGEgd2lkdGggdGhlbiB0aGlzIG9wdGlt
aXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5b3UncmUgdXNpbmcgdGhlIHJpZ2h0IHdpZHRoLiBCdXQK
ICAgICAvLyB0aGUgd2lkdGggaXMgcmVsZXZhbnQgdG8gdmFsaWRpdHksIHNvIHBhc3NpbmcgYSBu
dWxsIHdpZHRoIGlzIG9ubHkgdXNlZnVsIGZvciBhc3NlcnRpb25zLiBEb24ndAogICAgIC8vIHBh
c3MgbnVsbCB3aWR0aHMgd2hlbiBjYXNjYWRpbmcgdGhyb3VnaCBBcmdzIGluIHRoZSBpbnN0cnVj
dGlvbiBzZWxlY3RvciEKLSAgICBib29sIGlzVmFsaWRGb3JtKE9wdGlvbmFsPFdpZHRoPiB3aWR0
aCA9IE51bGxvcHQpIGNvbnN0CisgICAgYm9vbCBpc1ZhbGlkRm9ybShzdGQ6Om9wdGlvbmFsPFdp
ZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
a2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW52YWxpZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckN1c3RvbS5oCmluZGV4IGIwZDU1Y2RmYWMzNTA5YWQwMzkzYTQxZjAxZTVhZmE4NTdm
ODY1NTAuLjY0NGI3YTFiMjllMGVjY2UzOTYzOGZiYzJmZjU5YTNjZjE5ZjgzMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaApAQCAtODIsNyArODIsNyBAQCBzdHJ1
Y3QgUGF0Y2hDdXN0b20gewogICAgICAgICByZXR1cm4gaW5zdC5hcmdzWzBdLnNwZWNpYWwoKS0+
YWRtaXRzU3RhY2soaW5zdCwgYXJnSW5kZXgpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25h
bDx1bnNpZ25lZD4gc2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBpbnN0LmFyZ3NbMF0uc3BlY2lhbCgpLT5zaG91bGRUcnlB
bGlhc2luZ0RlZihpbnN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCBlYzg5YWM1MmY0M2M4ZmY3YzU3
MWJlNzRlYmUxODNjOWFmMzA1OWY3Li5kMDAwZDZjNWQzYjIyYmQxZDkzNDAyMGY0MDIwMWE1ZDIw
MDZiZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9i
dmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4
T2J2aW91c1NwaWxscy5jcHAKQEAgLTEyOSwxMiArMTI5LDEyIEBAIGNsYXNzIEZpeE9idmlvdXNT
cGlsbHMgewogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzU3BpbGxTbG90KGluc3QuYXJnc1sx
XSkpCiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoU2xvdENvbnN0KGluc3Qu
YXJnc1sxXS5zdGFja1Nsb3QoKSwgaW5zdC5hcmdzWzBdLnZhbHVlKCkpKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzBdKSAmJiBpbnN0LmFyZ3NbMV0uaXNS
ZWcoKSkgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9
IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAgICBpZiAo
c3RkOjpvcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5z
dC5hcmdzWzBdKSkKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhSZWdDb25z
dChpbnN0LmFyZ3NbMV0ucmVnKCksICpjb25zdGFudCkpOwogICAgICAgICAgICAgICAgIG1fc3Rh
dGUuYWRkQWxpYXMoCiAgICAgICAgICAgICAgICAgICAgIFJlZ1Nsb3QoaW5zdC5hcmdzWzFdLnJl
ZygpLCBpbnN0LmFyZ3NbMF0uc3RhY2tTbG90KCksIFJlZ1Nsb3Q6OkFsbEJpdHMpKTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaW5zdC5hcmdzWzBdLmlzUmVnKCkgJiYgaXNTcGlsbFNsb3QoaW5z
dC5hcmdzWzFdKSkgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90PiBjb25z
dGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAgICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRG
b3IoaW5zdC5hcmdzWzBdKSkKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcyhT
bG90Q29uc3QoaW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCAqY29uc3RhbnQpKTsKICAgICAgICAg
ICAgICAgICBtX3N0YXRlLmFkZEFsaWFzKAogICAgICAgICAgICAgICAgICAgICBSZWdTbG90KGlu
c3QuYXJnc1swXS5yZWcoKSwgaW5zdC5hcmdzWzFdLnN0YWNrU2xvdCgpLCBSZWdTbG90OjpBbGxC
aXRzKSk7CkBAIC0xNDgsMTIgKzE0OCwxMiBAQCBjbGFzcyBGaXhPYnZpb3VzU3BpbGxzIHsKICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpc1NwaWxsU2xvdChpbnN0LmFyZ3NbMV0pKQogICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlLmFkZEFsaWFzKFNsb3RDb25zdChpbnN0LmFyZ3NbMV0uc3Rh
Y2tTbG90KCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihpbnN0LmFyZ3NbMF0udmFsdWUoKSkpKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTcGlsbFNsb3QoaW5zdC5hcmdzWzBdKSAmJiBpbnN0
LmFyZ3NbMV0uaXNSZWcoKSkgewotICAgICAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ2NF90
PiBjb25zdGFudCA9IG1fc3RhdGUuY29uc3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKKyAgICAgICAg
ICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBjb25zdGFudCA9IG1fc3RhdGUuY29u
c3RhbnRGb3IoaW5zdC5hcmdzWzBdKSkKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRB
bGlhcyhSZWdDb25zdChpbnN0LmFyZ3NbMV0ucmVnKCksIHN0YXRpY19jYXN0PHVpbnQzMl90Pigq
Y29uc3RhbnQpKSk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5hZGRBbGlhcygKICAgICAgICAg
ICAgICAgICAgICAgUmVnU2xvdChpbnN0LmFyZ3NbMV0ucmVnKCksIGluc3QuYXJnc1swXS5zdGFj
a1Nsb3QoKSwgUmVnU2xvdDo6WkV4dDMyKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGluc3Qu
YXJnc1swXS5pc1JlZygpICYmIGlzU3BpbGxTbG90KGluc3QuYXJnc1sxXSkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoT3B0aW9uYWw8aW50NjRfdD4gY29uc3RhbnQgPSBtX3N0YXRlLmNvbnN0YW50
Rm9yKGluc3QuYXJnc1swXSkpCisgICAgICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gY29uc3RhbnQgPSBtX3N0YXRlLmNvbnN0YW50Rm9yKGluc3QuYXJnc1swXSkpCiAgICAg
ICAgICAgICAgICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoU2xvdENvbnN0KGluc3QuYXJnc1sxXS5z
dGFja1Nsb3QoKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oKmNvbnN0YW50KSkpOwogICAgICAgICAg
ICAgICAgIG1fc3RhdGUuYWRkQWxpYXMoCiAgICAgICAgICAgICAgICAgICAgIFJlZ1Nsb3QoaW5z
dC5hcmdzWzBdLnJlZygpLCBpbnN0LmFyZ3NbMV0uc3RhY2tTbG90KCksIFJlZ1Nsb3Q6Ok1hdGNo
MzIpKTsKQEAgLTQ1NCwxOSArNDU0LDE5IEBAIGNsYXNzIEZpeE9idmlvdXNTcGlsbHMgewogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxp
bnQ2NF90PiBjb25zdGFudEZvcihjb25zdCBBcmcmIGFyZykKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxpbnQ2NF90PiBjb25zdGFudEZvcihjb25zdCBBcmcmIGFyZykKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKGFyZy5pc1JlZygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IFJlZ0Nv
bnN0KiBhbGlhcyA9IGdldFJlZ0NvbnN0KGFyZy5yZWcoKSkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBhbGlhcy0+Y29uc3RhbnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChhcmcuaXNTdGFjaygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0
IFNsb3RDb25zdCogYWxpYXMgPSBnZXRTbG90Q29uc3QoYXJnLnN0YWNrU2xvdCgpKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGFsaWFzLT5jb25zdGFudDsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBjbG9iYmVyKGNvbnN0
IEFyZyYgYXJnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAppbmRleCAzMGYy
NGQ4NjRiY2RmZjBkYWRhNzRhYWQ3NDVhMjliYjNhMTE0N2YzLi5mMzhjMjFkZjg0YTgzOGY5YjJm
ZDQ3ZDhjM2QzNjA4NzZhZGJlYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpcklu
c3QuaApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0cnVjdCBJbnN0IHsKICAgICAvLyBGb3IgZXhhbXBs
ZSwKICAgICAvLyAgICAgQWRkIFRtcDEsIFRtcDIsIFRtcDMKICAgICAvLyByZXR1cm5zIDIgaWYg
MCBhbmQgMSBiZW5lZml0IGZyb20gYWxpYXNpbmcgdG8gVG1wMy4KLSAgICBPcHRpb25hbDx1bnNp
Z25lZD4gc2hvdWxkVHJ5QWxpYXNpbmdEZWYoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBzaG91bGRUcnlBbGlhc2luZ0RlZigpOwogICAgIAogICAgIC8vIFRoaXMgY29tcHV0ZXMgYSBo
YXNoIGZvciBjb21wYXJpbmcgdGhpcyB0byBKU0FpcidzIEluc3QuCiAgICAgdW5zaWduZWQganNI
YXNoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckluc3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxp
bmVzLmgKaW5kZXggMWFhYTA2YzUwYzA4NjdjMTVlYzEzMzhhZWNiMjc4NzcxODlmMDQ2NC4uYjc1
MzkyMWUxOWIxMjQ1MGQwNDQwNTA1NGI5YjMwZDk5ODE4MzgzZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaApAQCAtMTExLDEwICsxMTEsMTAgQEAg
aW5saW5lIGJvb2wgSW5zdDo6YWRtaXRzU3RhY2soQXJnJiBhcmcpCiAgICAgcmV0dXJuIGFkbWl0
c1N0YWNrKCZhcmcgLSAmYXJnc1swXSk7CiB9CiAKLWlubGluZSBPcHRpb25hbDx1bnNpZ25lZD4g
SW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IEluc3Q6OnNob3VsZFRyeUFsaWFzaW5nRGVmKCkKIHsKICAgICBpZiAoIWlzWDg2KCkpCi0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgc3dpdGNoIChraW5kLm9wY29kZSkgewogICAgIGNhc2UgQWRkMzI6CkBAIC0xNDAsNyArMTQw
LDcgQEAgaW5saW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBJbnN0OjpzaG91bGRUcnlBbGlhc2luZ0Rl
ZigpCiAgICAgY2FzZSBNdWxGbG9hdDoKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQogICAg
ICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzQVZYKCkpCi0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAg
ICAgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDMpCiAgICAgICAgICAgICByZXR1cm4gMjsKQEAgLTE3
MSw3ICsxNzEsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFs
aWFzaW5nRGVmKCkKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIGJvb2wg
aXNTaGlmdFZhbGlkKGNvbnN0IEluc3QmIGluc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3Bw
CmluZGV4IDk0ZDYyOTE4OGZhNTU0YzM4ZGE1ZDdlMDM1Y2VhZjgzNzFjYzZlOGUuLmJkMWE1Yzc5
NjJiMzJkMDg3MDIwNmNkMjA1NWU2NmZjODEzZTE4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2Np
bmcuY3BwCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBjbGFzcyBDb2xvcmluZ0FsbG9jYXRvciA6IHB1
YmxpYyBBYnN0cmFjdENvbG9yaW5nQWxsb2NhdG9yPHVuc2lnbmVkPiB7CiAgICAgICAgIG1fd29y
a2xpc3RNb3Zlcy5zdGFydEFkZGluZ0xvd1ByaW9yaXR5TW92ZXMoKTsKICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBibG9jayA6IG1fY29kZSkgewogICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0
IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBkZWZB
cmdJbmRleCA9IGluc3Quc2hvdWxkVHJ5QWxpYXNpbmdEZWYoKSkgeworICAgICAgICAgICAgICAg
IGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBkZWZBcmdJbmRleCA9IGluc3Quc2hvdWxkVHJ5
QWxpYXNpbmdEZWYoKSkgewogICAgICAgICAgICAgICAgICAgICBBcmcgb3AxID0gaW5zdC5hcmdz
WypkZWZBcmdJbmRleCAtIDJdOwogICAgICAgICAgICAgICAgICAgICBBcmcgb3AyID0gaW5zdC5h
cmdzWypkZWZBcmdJbmRleCAtIDFdOwogICAgICAgICAgICAgICAgICAgICBBcmcgZGVzdCA9IGlu
c3QuYXJnc1sqZGVmQXJnSW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
U3BlY2lhbC5jcHAKaW5kZXggMGE3MjJlODEwYTU2ZDU0NTVjMTJhZDAxMWUxMzc1ZjhlYjMyN2Uy
OS4uZTgyNTc2N2IwNGQ4YWIzYjljZWM3NWFmNGU5MTk4MGE4OTI5MDU3YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCkBAIC01MCw5ICs1MCw5IEBAIENT
dHJpbmcgU3BlY2lhbDo6bmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsK
IH0KIAotT3B0aW9uYWw8dW5zaWduZWQ+IFNwZWNpYWw6OnNob3VsZFRyeUFsaWFzaW5nRGVmKElu
c3QmKQorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdE
ZWYoSW5zdCYpCiB7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogYm9vbCBTcGVjaWFsOjppc1Rlcm1pbmFsKEluc3QmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAppbmRleCA2YzEwY2I1N2Y5YjRjYjllOThjYjI4NWU2
Njc1NWJhZGYyMzE2Y2U5Li40ODBjYmZjYmE1OGZkZGU4MTE2MzZkODZmMjY3YjUxYzhhNmM4YmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuaApAQCAtNTUsNyAr
NTUsNyBAQCBjbGFzcyBTcGVjaWFsIHsKICAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaEFyZyhJbnN0
JiwgY29uc3QgU2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDYWxsYmFjaz4mKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzVmFsaWQoSW5zdCYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgYWRtaXRz
U3RhY2soSW5zdCYsIHVuc2lnbmVkIGFyZ0luZGV4KSA9IDA7Ci0gICAgdmlydHVhbCBPcHRpb25h
bDx1bnNpZ25lZD4gc2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYpOworICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gc2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYpOwogCiAgICAg
Ly8gVGhpcyBnZXRzIGNhbGxlZCBvbiBmb3IgZWFjaCBJbnN0IHRoYXQgdXNlcyB0aGlzIFNwZWNp
YWwuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyB3YXkgdG8KICAgICAvLyBndWFyYW50ZWUgdGhhdCBh
IFNwZWNpYWwgZ2V0cyB1c2VkIGZyb20ganVzdCBvbmUgSW5zdCwgYmVjYXVzZSBBaXIgbWlnaHQg
dGFpbGR1cCBsYXRlLiBTbywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IDk1OTAzZTIx
ZWJkZjE5NDBhOWZkMDc4M2IxMGY4MmYyYmE3ZmI3YjMuLmY3ZTFlOWEzZDZkOWJlOGU4NzNjNmY3
MjgwODUxNTgxNTQxZmJhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMTE3LDcg
KzExNyw3IEBAIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKIAogICAgICAgICBp
ZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgICAgICBtX3N0b3JhZ2VzLnJl
c2l6ZShpbmRleCArIDEpOwotICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9
IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxTdG9yYWdlPiBz
dG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCiAgICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2U7
CiAKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJs
b2NrKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24gewogCiAgICAgdW5zaWduZWQgbV9lbnRlclBvaW50IHsgMCB9OwogICAgIEJ5dGVjb2RlR3Jh
cGg8VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3JhcGg7Ci0gICAgVmVjdG9yPE9wdGlvbmFsPFN0b3Jh
Z2U+PiBtX3N0b3JhZ2VzOworICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0
b3JhZ2VzOwogICAgIFlpZWxkcyBtX3lpZWxkczsKICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDI0OWQxMTNmYTA4Mzg5MmQ5NmUyMDc1ZGEzY2YyNmYxNjE2NzdiMTIuLmExMmJj
MGEzMDg0YjZhMDJjNzUyZDU1ODkxZWEyOWZiYzA5YzZjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00NTEyLDI5ICs0NTEyLDI5IEBAIHZv
aWQgQ29kZUJsb2NrOjpzZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6OnVuaXF1ZV9wdHI8UENUb0Nv
ZGVPcmlnaW5NYXA+JiYgbWFwKQogICAgIG1fcGNUb0NvZGVPcmlnaW5NYXAgPSBXVEZNb3ZlKG1h
cCk7CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBj
KQorc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBDb2RlQmxvY2s6OmZpbmRQQyh2b2lkKiBwYykK
IHsKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcCkgewotICAgICAgICBpZiAoT3B0aW9uYWw8
Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IG1fcGNUb0NvZGVPcmlnaW5NYXAtPmZpbmRQQyhwYykp
CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGNvZGVPcmlnaW4gPSBtX3Bj
VG9Db2RlT3JpZ2luTWFwLT5maW5kUEMocGMpKQogICAgICAgICAgICAgcmV0dXJuIGNvZGVPcmln
aW47CiAgICAgfQogCiAgICAgZm9yIChCYWc8U3RydWN0dXJlU3R1YkluZm8+OjppdGVyYXRvciBp
dGVyID0gbV9zdHViSW5mb3MuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAgICAgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWIgPSAqaXRlcjsKICAgICAgICAgaWYgKHN0dWItPmNvbnRhaW5z
UEMocGMpKQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPENvZGVPcmlnaW4+KHN0dWItPmNv
ZGVPcmlnaW4pOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4o
c3R1Yi0+Y29kZU9yaWdpbik7CiAgICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPENvZGVPcmlnaW4+
IGNvZGVPcmlnaW4gPSBtX2ppdENvZGUtPmZpbmRQQyh0aGlzLCBwYykpCisgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9IG1faml0Q29kZS0+ZmluZFBDKHRoaXMs
IHBjKSkKICAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW47CiAKLSAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLU9w
dGlvbmFsPHVuc2lnbmVkPiBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5k
ZXgoQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4KQorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCkKIHsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZWNvZGVPZmZzZXQ7CiAgICAgSklUQ29k
ZTo6SklUVHlwZSBqaXRUeXBlID0gdGhpcy0+aml0VHlwZSgpOwogICAgIGlmIChqaXRUeXBlID09
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCkgewogI2lmIFVTRShKU1ZBTFVFNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKaW5kZXggNmJiOTFkYjUyYWVmZWQ3MmZiMmU3ZTUzMDg1NGU2YjFmMWVm
ZTJiMi4uYWFmZWExOWFmYmJmNjE1Mzg1NjM1YjgxMzQyM2RjZGM0Njk3Y2M5NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjMzLDcgKzIzMyw3IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgZXhwcmVzc2lvblJh
bmdlRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYgZGl2b3Qs
CiAgICAgICAgIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGlu
ZSwgdW5zaWduZWQmIGNvbHVtbikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gYnl0
ZWNvZGVPZmZzZXRGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRl
SW5kZXgpOwogCiAgICAgdm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBTdHViSW5mb01hcCYgcmVzdWx0KTsKICAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJ
bmZvTWFwJiByZXN1bHQpOwpAQCAtODg5LDcgKzg4OSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lkIHNldFBDVG9Db2RlT3Jp
Z2luTWFwKHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1hcD4mJik7Ci0gICAgT3B0aW9u
YWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvZGVP
cmlnaW4+IGZpbmRQQyh2b2lkKiBwYyk7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKaW5kZXggZTNhZjYxZjVjODg4OTk4ZTA5NWRhY2JmOTY4Y2U2MjdiZjJi
MmU3Ni4uOTUyZTk4YmEzM2IyYTJiNWYwMjZlYjlmNDhhODRiMGNkYTVmYWFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG8KICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9j
a0ZvckNvbnN0cnVjdCk7CiB9CiAKLUZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBvd25lclNvdXJjZSwg
T3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIsIEludHJpbnNpYyBpbnRyaW5zaWMpCitG
dW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgb3duZXJTb3VyY2UsIHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVy
cmlkZUxpbmVOdW1iZXIsIEludHJpbnNpYyBpbnRyaW5zaWMpCiB7CiAgICAgU291cmNlQ29kZSBz
b3VyY2UgPSBtX3NvdXJjZU92ZXJyaWRlID8gU291cmNlQ29kZShtX3NvdXJjZU92ZXJyaWRlKSA6
IG93bmVyU291cmNlOwogICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJzdExpbmUo
KSArIG1fZmlyc3RMaW5lT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA2ZjU1OGNm
N2E5NzRjODUzMzNiYTg1MjMwMDIxOGZlMjMxMjJlMTY1Li5iZjNjNTI4OGJjYmIwM2VkMmI5OWQx
MWY5ZTk3MGI1Nzc2NTk1NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTA2LDcgKzEw
Niw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUmLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24sIAogICAgICAgICBpbnQgb3ZlcnJpZGVMaW5l
TnVtYmVyKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGlu
ayhWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBPcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJl
ciA9IE51bGxvcHQsIEludHJpbnNpYyA9IE5vSW50cmluc2ljKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgc3Rk
OjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51bWJlciA9IHN0ZDo6bnVsbG9wdCwgSW50cmlu
c2ljID0gTm9JbnRyaW5zaWMpOwogCiAgICAgdm9pZCBjbGVhckNvZGUoKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCAwNDZkMmE3NjU4Mzc5ZjIwODAxMTJkZGFhNDBkODg4M2ZlNWM5YmYwLi5iZjEz
MjBmZDlkNjE2YTE3M2QxY2RkN2E1OWMwYmRhMDE2NmZjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC05
MTAsNyArOTEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAgICAgICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBURFpOZWNlc3NpdHlMZXZlbCwg
SWRlbnRpZmllclJlcEhhc2g+IFREWk1hcDsKICAgICAgICAgVmVjdG9yPFREWk1hcD4gbV9URFpT
dGFjazsKLSAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBtX3ZhclNjb3BlU3ltYm9sVGFibGVJbmRl
eDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fdmFyU2NvcGVTeW1ib2xUYWJsZUlu
ZGV4OwogICAgICAgICB2b2lkIHB1c2hURFpWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYsIFREWkNoZWNrT3B0aW1pemF0aW9uLCBURFpSZXF1aXJlbWVudCk7CiAKICAgICAgICAg
U2NvcGVOb2RlKiBjb25zdCBtX3Njb3BlTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBlZGI2NWQ3ZGVlOTBjYzJl
MjIzMDhhMWRlMWMyOTYwYTk2Njg2ODczLi42OGFlYjVhYTRmMjZmNDk3YzA3MjZkYjYxNDMyNTMx
MjNhNWU3ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoY29uc3QgYXV0byogaWRlbnRp
ZmllciA9IG5vZGUubmFtZSgpKSB7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25h
bEluZGV4ID0gcGFyc2VJbmRleCgqaWRlbnRpZmllcik7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KCppZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKCFvcHRpb25hbEluZGV4KSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVj
dFB1dEJ5SWQobmV3T2JqLCAqaWRlbnRpZmllciwgdmFsdWUuZ2V0KCksIG5vZGUucHV0VHlwZSgp
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NjcsNyArMzk2Nyw3IEBAIHZvaWQgT2JqZWN0
UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiByaHMpCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBpZiAoIXRhcmdldC5wcm9wZXJ0eUV4cHJlc3Npb24p
IHsKICAgICAgICAgICAgIC8vIFNob3VsZCBub3QgZW1pdCBnZXRfYnlfaWQgZm9yIGluZGV4ZWQg
b25lcy4KLSAgICAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFy
c2VJbmRleCh0YXJnZXQucHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHRhcmdldC5wcm9wZXJ0eU5hbWUp
OwogICAgICAgICAgICAgaWYgKCFvcHRpb25hbEluZGV4KQogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0QnlJZCh0ZW1wLmdldCgpLCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOwog
ICAgICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcAppbmRleCA5OGFjZDMyZGNmNDEyNDZiM2Y0ZWMyY2Y4YzNhZWFiM2EyNjEyNzg4Li5k
ZTIzZTEzOWQ2NGM2NTVhYWYyYjA0YzlmY2ZkYmI5YjFkOTMyNzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lk
IERlYnVnZ2VyOjpyZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50LCBTb3Vy
Y2VQcm92aWRlciogc291cmNlUAogICAgIHVuc2lnbmVkIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29s
dW1uID8gYnJlYWtwb2ludC5jb2x1bW4gOiBCcmVha3BvaW50Ojp1bnNwZWNpZmllZENvbHVtbjsK
IAogICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNlRGF0YShi
cmVha3BvaW50LnNvdXJjZUlELCBzb3VyY2VQcm92aWRlcik7Ci0gICAgT3B0aW9uYWw8SlNUZXh0
UG9zaXRpb24+IHJlc29sdmVkUG9zaXRpb24gPSBwYXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJl
YWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbigoaW50KWxpbmUsIChpbnQpY29sdW1uKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiByZXNvbHZlZFBvc2l0aW9uID0gcGFyc2VE
YXRhLnBhdXNlUG9zaXRpb25zLmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oKGludCls
aW5lLCAoaW50KWNvbHVtbik7CiAgICAgaWYgKCFyZXNvbHZlZFBvc2l0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCmluZGV4IDE2YWMxYWRkOWYyN2YyZDk5MDE0MDUwYTNiYzZiMGIzYTVi
OTFlNDQuLjdmODIxMjczOTUwY2EzMzNmZjU3YmY0NmY1MzY0MzIxNzE4MTNiYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNw
cApAQCAtMjkwLDcgKzI5MCw3IEBAIFRleHRQb3NpdGlvbiBEZWJ1Z2dlckNhbGxGcmFtZTo6Y3Vy
cmVudFBvc2l0aW9uKCkKIAogICAgIGlmIChpc1RhaWxEZWxldGVkKCkpIHsKICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX3NoYWRvd0NoaWNrZW5GcmFtZS5jb2RlQmxvY2s7Ci0gICAg
ICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgobV9zaGFkb3dDaGlja2VuRnJhbWUuY2FsbFNp
dGVJbmRleCkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KG1fc2hh
ZG93Q2hpY2tlbkZyYW1lLmNhbGxTaXRlSW5kZXgpKSB7CiAgICAgICAgICAgICByZXR1cm4gVGV4
dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChjb2RlQmxvY2stPmxpbmVO
dW1iZXJGb3JCeXRlY29kZU9mZnNldCgqYnl0ZWNvZGVPZmZzZXQpKSwKICAgICAgICAgICAgICAg
ICBPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoY29kZUJsb2NrLT5jb2x1bW5OdW1iZXJG
b3JCeXRlY29kZU9mZnNldCgqYnl0ZWNvZGVPZmZzZXQpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCmlu
ZGV4IGU3MWFhYzY0ZjMyMmE4ZmJkODE0ZjAyODE1YTg1NmQ2MzAyNmJmOWMuLjNiMDU4YmFiZmIx
MzcxMzdmNDA1M2UwODk4NWI5NDFmNjExZGIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2Vy
UGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4oaW50IGxpbmUs
IGludCBjb2x1bW4pCitzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNl
UG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGludCBsaW5lLCBpbnQg
Y29sdW1uKQogewogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICB1bnNpZ25lZCBlbmQgPSBt
X3Bvc2l0aW9ucy5zaXplKCk7CkBAIC01NCw3ICs1NCw3IEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0
aW9uPiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29s
dW1uCiAgICAgICAgICAgICAvLyBXZSBhcmUgZ3VhcmVudGVlZCB0byBoYXZlIGEgTGVhdmUgZm9y
IGFuIEVudHJ5IHNvIHdlIGRvbid0IG5lZWQgdG8gYm91bmRzIGNoZWNrLgogICAgICAgICAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICBpZiAocGF1c2VQb3NpdGlvbi50eXBlICE9
IERlYnVnZ2VyUGF1c2VQb3NpdGlvblR5cGU6OkVudGVyKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+KHBhdXNlUG9zaXRpb24ucG9zaXRpb24pOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxKU1RleHRQb3NpdGlvbj4o
cGF1c2VQb3NpdGlvbi5wb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgcGF1c2VQb3NpdGlvbiA9
IG1fcG9zaXRpb25zW21pZGRsZSsrXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjcs
NyArNjcsNyBAQCBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gRGVidWdnZXJQYXVzZVBvc2l0aW9u
czo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbgogCiAgICAgLy8gUGFzdCB0aGUgZW5k
LCBubyBwb3NzaWJsZSBwYXVzZSBsb2NhdGlvbnMuCiAgICAgaWYgKHN0YXJ0ID49IG1fcG9zaXRp
b25zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUgbmV4dCBsb2NhdGlvbiBpcyBhIGZ1bmN0aW9uIEVu
dHJ5IHdlIHdpbGwgbmVlZCB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIGdvIGludG8KICAgICAvLyB0
aGUgZnVuY3Rpb24gb3IgZ28gcGFzdCB0aGUgZnVuY3Rpb24uIFdlIGRlY2lkZSB0byBnbyBpbnRv
IHRoZSBmdW5jdGlvbiBpZiB0aGUKQEAgLTg3LDcgKzg3LDcgQEAgT3B0aW9uYWw8SlNUZXh0UG9z
aXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVD
b2x1bW4KICAgICAvLyBWYWxpZCBwYXVzZSBsb2NhdGlvbi4gVXNlIGl0LgogICAgIERlYnVnZ2Vy
UGF1c2VQb3NpdGlvbiYgZmlyc3RTbGlkZVBvc2l0aW9uID0gbV9wb3NpdGlvbnNbc3RhcnRdOwog
ICAgIGlmIChmaXJzdFNsaWRlUG9zaXRpb24udHlwZSAhPSBEZWJ1Z2dlclBhdXNlUG9zaXRpb25U
eXBlOjpFbnRlcikKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihmaXJz
dFNsaWRlUG9zaXRpb24ucG9zaXRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxK
U1RleHRQb3NpdGlvbj4oZmlyc3RTbGlkZVBvc2l0aW9uLnBvc2l0aW9uKTsKIAogICAgIC8vIERl
dGVybWluZSBpZiB3ZSBzaG91bGQgZW50ZXIgdGhpcyBmdW5jdGlvbiBvciBza2lwIHBhc3QgaXQu
CiAgICAgLy8gSWYgZW50cnlTdGFja1NpemUgaXMgPiAwIHdlIGFyZSBza2lwcGluZyBmdW5jdGlv
bnMuCkBAIC0xMTMsMTEgKzExMywxMSBAQCBPcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gRGVidWdn
ZXJQYXVzZVBvc2l0aW9uczo6YnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbgogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRm91bmQgcGF1c2UgcG9zaXRpb24uCi0gICAgICAgIHJldHVybiBP
cHRpb25hbDxKU1RleHRQb3NpdGlvbj4oc2xpZGVQb3NpdGlvbi5wb3NpdGlvbik7CisgICAgICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPihzbGlkZVBvc2l0aW9uLnBvc2l0
aW9uKTsKICAgICB9CiAKICAgICAvLyBObyBwYXVzZSBwb3NpdGlvbnMgZm91bmQuCi0gICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEZWJ1Z2dl
clBhdXNlUG9zaXRpb25zOjpzb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmgKaW5kZXggMDYyMjUxNTVlMTQ1YzM4ODE2NWQzMTQ4
OGFjZTI1OWRhMTNjYjA5Yi4uZWNjNzhkMGQ0YmZkZDIzZTYxNGJiNjE3ZTRmMjVlMzMzZTI0MTE5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFy
c2VEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFy
c2VEYXRhLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgRGVidWdnZXJQYXVzZVBvc2l0aW9ucyB7
CiAgICAgICAgIG1fcG9zaXRpb25zLmFwcGVuZCh7IERlYnVnZ2VyUGF1c2VQb3NpdGlvblR5cGU6
OkxlYXZlLCBwb3NpdGlvbiB9KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxKU1RleHRQb3NpdGlv
bj4gYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihpbnQgbGluZSwgaW50IGNvbHVtbik7
CisgICAgc3RkOjpvcHRpb25hbDxKU1RleHRQb3NpdGlvbj4gYnJlYWtwb2ludExvY2F0aW9uRm9y
TGluZUNvbHVtbihpbnQgbGluZSwgaW50IGNvbHVtbik7CiAKICAgICB2b2lkIHNvcnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL1NjcmlwdFByb2ZpbGlu
Z1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5n
U2NvcGUuaAppbmRleCA5OTYyNGRiZjEwZTE0ODhmZWFlZDMyOTU5M2IyYTk0ZjYxZDEwYTQxLi5l
NDAzMzdmZTlkMzZjM2IzZGUyMTI4NGU0YmQxZjU2YWQyOTA2NDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvU2NyaXB0UHJvZmlsaW5nU2NvcGUuaApAQCAt
ODMsNyArODMsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxpbmdTY29wZSB7CiAgICAgfQogCiAgICAg
SlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0IHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFs
PGRvdWJsZT4gbV9zdGFydFRpbWU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fc3RhcnRU
aW1lOwogICAgIFByb2ZpbGluZ1JlYXNvbiBtX3JlYXNvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCA1ZGY0ZGEzNTgxZjUxZmE2NmE4OGQxOTBmNGNiOGNhOTA2YTJmN2ZmLi5kNGJlMTJh
MjczNDlhZDQ4YTc3YjE1ZGRmNWI2OTA1YTM1YWZjODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBA
IC00MzUsNyArNDM1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgCiAgICAg
Y2FzZSBEb3VibGVSZXA6IHsKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCk7Ci0gICAgICAgIGlmIChPcHRpb25hbDxkb3VibGU+IG51bWJlciA9
IGNoaWxkLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKCpudW1iZXIpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01NDksNyArNTQ5LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKIAogICAgIGNhc2UgQXJpdGhDbHozMjogewogICAgICAgICBKU1ZhbHVl
IG9wZXJhbmQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwotICAgICAgICBpZiAo
T3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBvcGVyYW5kLnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgp
KSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gb3BlcmFuZC50
b051bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgdWludDMyX3QgdmFsdWUgPSB0
b1VJbnQzMigqbnVtYmVyKTsKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVy
KGNsejMyKHZhbHVlKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04NTUsNyArODU1LDcgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAgICBpZiAoT3B0
aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRpdmUoKSkgewor
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051
bWJlckZyb21QcmltaXRpdmUoKSkgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoZmFicygqbnVtYmVyKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0lu
dDMyKCkpIHsKICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgcmVzdWx0KTsK
QEAgLTg2NSw3ICs4NjUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGRv
dWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9OdW1iZXJGcm9t
UHJpbWl0aXZlKCkpIHsKICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJs
ZU51bWJlcihmYWJzKCpudW1iZXIpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkBAIC05MDcsNyArOTA3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBj
YXNlIEFyaXRoQ2VpbDoKICAgICBjYXNlIEFyaXRoVHJ1bmM6IHsKICAgICAgICAgSlNWYWx1ZSBv
cGVyYW5kID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKE9w
dGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gb3BlcmFuZC50b051bWJlckZyb21QcmltaXRpdmUoKSkg
eworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxkb3VibGU+IG51bWJlciA9IG9wZXJhbmQudG9O
dW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSByb3VuZGVkVmFsdWUg
PSAwOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQXJpdGhSb3VuZCkKICAgICAgICAg
ICAgICAgICByb3VuZGVkVmFsdWUgPSBqc1JvdW5kKCpudW1iZXIpOwpAQCAtOTk1LDcgKzk5NSw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAKICAgICBjYXNlIE1hcEhhc2g6IHsKICAgICAg
ICAgaWYgKEpTVmFsdWUga2V5ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSkgewot
ICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBoYXNoID0gY29uY3VycmVudEpTTWFw
SGFzaChrZXkpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaGFz
aCA9IGNvbmN1cnJlbnRKU01hcEhhc2goa2V5KSkgewogICAgICAgICAgICAgICAgIC8vIEFsdGhv
dWdoIEMrKyBjb2RlIHVzZXMgdWludDMyX3QgZm9yIHRoZSBoYXNoLCB0aGUgY2xvc2VzdCB0eXBl
IGluIERGRyBJUiBpcyBJbnQzMgogICAgICAgICAgICAgICAgIC8vIGFuZCB0aGF0J3Mgd2hhdCBN
YXBIYXNoIHJldHVybnMuIFNvLCB3ZSBoYXZlIHRvIGNhc3QgdG8gaW50MzJfdCB0byBhdm9pZCBs
YXJnZQogICAgICAgICAgICAgICAgIC8vIHVuc2lnbmVkIHZhbHVlcyBiZWNvbWluZyBkb3VibGVz
LiBUaGlzIGNhc3RpbmcgYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkCkBAIC0zMTY1LDcgKzMx
NjUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVEb3VibGVVbmFyeU9wRWZm
ZWN0cyhOb2RlKiBub2RlLCBkb3VibGUoKmVxdWl2YWxlbnRGdW5jdGlvbikoZG91YmxlKSkKIHsK
ICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKLSAg
ICBpZiAoT3B0aW9uYWw8ZG91YmxlPiBudW1iZXIgPSBjaGlsZC50b051bWJlckZyb21QcmltaXRp
dmUoKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbnVtYmVyID0gY2hpbGQudG9O
dW1iZXJGcm9tUHJpbWl0aXZlKCkpIHsKICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNEb3Vi
bGVOdW1iZXIoZXF1aXZhbGVudEZ1bmN0aW9uKCpudW1iZXIpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAppbmRleCBlOWFj
M2U1OWRhODA3NjM0MGVmYTM4OTdlOTQ1YjIyZTY3OWFkYmE2Li43ZmI5ZjcxNmNiZmM0OWNiNDNi
YjMzNmVjNzVjNmRiOGEyYmI5YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZS5jcHAKQEAgLTIxNSwxNiArMjE1LDE2IEBAIHZvaWQgSklUQ29kZTo6dmFsaWRhdGVSZWZl
cmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykKICAgICBt
aW5pZmllZERGRy52YWxpZGF0ZVJlZmVyZW5jZXModHJhY2tlZFJlZmVyZW5jZXMpOwogfQogCi1P
cHRpb25hbDxDb2RlT3JpZ2luPiBKSVRDb2RlOjpmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMp
CitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2
b2lkKiBwYykKIHsKICAgICBmb3IgKE9TUkV4aXQmIGV4aXQgOiBvc3JFeGl0KSB7CiAgICAgICAg
IGlmIChFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBleGl0Lm1fY29kZS5leGVjdXRh
YmxlTWVtb3J5KCkpIHsKICAgICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkgPD0gcGMgJiYg
cGMgPCBoYW5kbGUtPmVuZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2Rl
T3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4
aXRQcm9maWxlKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKaW5kZXggZTFmMWQ3Y2EwMTNhYWFkMmFh
NzBjOGFmYjc4MTJkNGQ1YzExNDVlYy4uYWVlODc0MmYzODVkMTdiYWZhODU0OTQ2NzNjOTQ1ZWM4
OGE4N2ZmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTEyNCw3
ICsxMjQsNyBAQCBjbGFzcyBKSVRDb2RlIDogcHVibGljIERpcmVjdEpJVENvZGUgewogCiAgICAg
c3RhdGljIHB0cmRpZmZfdCBjb21tb25EYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpJVENvZGUsIGNvbW1vbik7IH0KIAotICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQ
QyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2Rl
T3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOwogICAgIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgSklUQ29tcGlsZXI7IC8vIEFsbG93IEpJVENvbXBpbGVy
IHRvIGNhbGwgc2V0Q29kZVJlZigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKaW5kZXggNTI5ODY5ZTA2NDljNjVhMGUzYjY1ZTIzYjQyMTlkYWFhN2MyZjRl
Mi4uMTAyNmE4NDE1MmU5MzIyMmUwNDViYTgzYjI3YmVlNGRiNTJhODBjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGUKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIHN0cmljdCk7CiAgICAgaWYgKGRpcmVjdCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChi
YXNlVmFsdWUuaXNPYmplY3QoKSk7Ci0gICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5w
dXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgc3RyaWN0ID8gUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4
QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aFNpemUo
CkBAIC0xMTg4LDcgKzExODgsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0lu
dDE2QXJyYXlXaXRoT25lQXJndW1lbnQoCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNJbnQxNkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwg
TnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MTZBcnJheT4oZXhlYywgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSgKQEAgLTEyMDIsNyArMTIw
Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhPbmVB
cmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMy
QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRW
YWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3VWludDhBcnJheVdpdGhTaXplKApAQCAtMTIxNiw3ICsxMjE2LDcgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZXhlYywgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU1VpbnQ4QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50OENsYW1w
ZWRBcnJheVdpdGhTaXplKApAQCAtMTIzMCw3ICsxMjMwLDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdVaW50OENsYW1wZWRBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihleGVj
LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdVaW50MTZBcnJheVdpdGhTaXplKApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdVaW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihleGVjLCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDE2QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdVaW50MzJBcnJh
eVdpdGhTaXplKApAQCAtMTI1OCw3ICsxMjU4LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdVaW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29k
ZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJy
YXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZSgK
QEAgLTEyNzIsNyArMTI3Miw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3Rmxv
YXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgTnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihleGVj
LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoCkBAIC0xMjg2
LDcgKzEyODYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJh
eVdpdGhPbmVBcmd1bWVudCgKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxv
cHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxl
LCBFbmNvZGVkSlNWYWx1ZSBpbml0aWFsVmFsdWVFbmNvZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDYwODFjNTdiMjg2MThl
NDNkOWVhMjhkNTU2MTAxNTgyYTYyYzU4Y2EuLjY3YWJhODBiN2RmNzA4Mzk2M2JkYWZkNThmOWFi
NjMyN2JjY2UzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xv
d1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgU2xvd1BhdGhHZW5lcmF0b3Ig
ewogICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBtX3N0cmVhbUluZGV4Owog
ICAgICAgICBqaXQtPm1fb3JpZ2luID0gbV9vcmlnaW47CiAgICAgICAgIGdlbmVyYXRlSW50ZXJu
YWwoaml0KTsKLSAgICAgICAgaml0LT5tX291dE9mTGluZVN0cmVhbUluZGV4ID0gTnVsbG9wdDsK
KyAgICAgICAgaml0LT5tX291dE9mTGluZVN0cmVhbUluZGV4ID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAgICAgIGppdC0+bV9qaXQuYWJvcnRX
aXRoUmVhc29uKERGR1Nsb3dQYXRoR2VuZXJhdG9yRmVsbFRocm91Z2gpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNmNl
MDQ1YjhlYmRkY2NiMTBhNTMxYmNlYjM4MjExMGM0YTVhYjIyNS4uMmIxZWZhMWNiOTViNjdjMDI2
NjA5MGI1YWE0NmNlMTRhMzRhZDJhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpydW5TbG93UGF0aEdlbmVyYXRvcnMoUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyJiBw
Y1RvQ29kZU9yaQogICAgICAgICBtX291dE9mTGluZVN0cmVhbUluZGV4ID0gc2xvd1BhdGhMYW1i
ZGEuc3RyZWFtSW5kZXg7CiAgICAgICAgIHBjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJ
dGVtKG1faml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBjdXJyZW50Tm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKICAgICAgICAgc2xvd1BhdGhMYW1iZGEuZ2VuZXJhdG9yKCk7Ci0gICAgICAg
IG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBOdWxsb3B0OworICAgICAgICBtX291dE9mTGluZVN0
cmVhbUluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtMzE4OCw4ICszMTg4LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChOb2RlKiBub2RlKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7
Ci0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8
SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4g
cmlnaHQ7CiAKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVnczsKICAgICBKU1ZhbHVlUmVncyByaWdo
dFJlZ3M7CkBAIC0zMjE5LDExICszMjE5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRV
bnR5cGVkQml0T3AoTm9kZSogbm9kZSkKICAgICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQu
aXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAogICAgIGlmICghbGVmdE9w
ZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAgICAg
ICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KICAgICBpZiAoIXJpZ2h0
T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlz
LCByaWdodENoaWxkKTsKKyAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsK
ICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQtPmpzVmFsdWVSZWdzKCk7CiAgICAgfQogCkBAIC0z
MzM1LDggKzMzMzUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hp
ZnRCaXRPcChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgT3B0aW9u
YWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7Ci0gICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJp
Z2h0OworICAgIHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IGxlZnQ7CisgICAgc3RkOjpv
cHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7CiAKICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVn
czsKICAgICBKU1ZhbHVlUmVncyByaWdodFJlZ3M7CkBAIC0zMzcyLDExICszMzcyLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkUmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUp
CiAgICAgUkVMRUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVy
YW5kLmlzQ29uc3QoKSk7CiAKICAgICBpZiAoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkgewotICAg
ICAgICBsZWZ0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgbGVmdENoaWxkKTsKKyAgICAgICAgbGVm
dC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgIGxlZnRSZWdzID0gbGVmdC0+anNW
YWx1ZVJlZ3MoKTsKICAgICB9CiAgICAgaWYgKCFyaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0g
ICAgICAgIHJpZ2h0ID0gSlNWYWx1ZU9wZXJhbmQodGhpcywgcmlnaHRDaGlsZCk7CisgICAgICAg
IHJpZ2h0LmVtcGxhY2UodGhpcywgcmlnaHRDaGlsZCk7CiAgICAgICAgIHJpZ2h0UmVncyA9IHJp
Z2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIApAQCAtMzQ5Nyw4ICszNDk3LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aEkKICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBub2RlLT5jaGlsZDEoKTsK
ICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKLSAgICBPcHRpb25hbDxK
U1ZhbHVlT3BlcmFuZD4gbGVmdDsKLSAgICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gcmlnaHQ7
CisgICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gbGVmdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIAogICAgIEpTVmFsdWVSZWdzIGxlZnRSZWdzOwog
ICAgIEpTVmFsdWVSZWdzIHJpZ2h0UmVnczsKQEAgLTM1MTEsMTYgKzM1MTEsMTYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aEkKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7
CiAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBJbnZhbGlkRlBSUmVnOwogCi0gICAgT3B0aW9uYWw8
RlBSVGVtcG9yYXJ5PiBmcHJTY3JhdGNoOworICAgIHN0ZDo6b3B0aW9uYWw8RlBSVGVtcG9yYXJ5
PiBmcHJTY3JhdGNoOwogICAgIGlmIChuZWVkc1NjcmF0Y2hGUFJSZWcpIHsKLSAgICAgICAgZnBy
U2NyYXRjaCA9IEZQUlRlbXBvcmFyeSh0aGlzKTsKKyAgICAgICAgZnByU2NyYXRjaC5lbXBsYWNl
KHRoaXMpOwogICAgICAgICBzY3JhdGNoRlBSID0gZnByU2NyYXRjaC0+ZnByKCk7CiAgICAgfQog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBPcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0
Y2g7CisgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGdwclNjcmF0Y2g7CiAgICAgaWYg
KG5lZWRzU2NyYXRjaEdQUlJlZykgewotICAgICAgICBncHJTY3JhdGNoID0gR1BSVGVtcG9yYXJ5
KHRoaXMpOworICAgICAgICBncHJTY3JhdGNoLmVtcGxhY2UodGhpcyk7CiAgICAgICAgIHNjcmF0
Y2hHUFIgPSBncHJTY3JhdGNoLT5ncHIoKTsKICAgICB9CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKQEAgLTM1NDcsMTEgKzM1NDcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkK
ICAgICBBU1NFUlQoIShHZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRP
cGVyYW5kKSAmJiBHZW5lcmF0b3I6OmlzUmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChyaWdodE9w
ZXJhbmQpKSk7CiAKICAgICBpZiAoIUdlbmVyYXRvcjo6aXNMZWZ0T3BlcmFuZFZhbGlkQ29uc3Rh
bnQobGVmdE9wZXJhbmQpKSB7Ci0gICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBs
ZWZ0Q2hpbGQpOworICAgICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAgICAg
ICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KICAgICBpZiAoIUdlbmVy
YXRvcjo6aXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KHJpZ2h0T3BlcmFuZCkpIHsKLSAgICAg
ICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCByaWdodENoaWxkKTsKKyAgICAgICAgcmln
aHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgcmlnaHRSZWdzID0gcmlnaHQt
PmpzVmFsdWVSZWdzKCk7CiAgICAgfQogCkBAIC0zNjE2LDEwICszNjE2LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJCiAgICAgICAgIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChH
ZW5lcmF0b3I6OmlzTGVmdE9wZXJhbmRWYWxpZENvbnN0YW50KGxlZnRPcGVyYW5kKSkgewotICAg
ICAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgICAg
ICAgICBsZWZ0LmVtcGxhY2UodGhpcywgbGVmdENoaWxkKTsKICAgICAgICAgICAgIGxlZnRSZWdz
ID0gbGVmdC0+anNWYWx1ZVJlZ3MoKTsKICAgICAgICAgfSBlbHNlIGlmIChHZW5lcmF0b3I6Omlz
UmlnaHRPcGVyYW5kVmFsaWRDb25zdGFudChyaWdodE9wZXJhbmQpKSB7Ci0gICAgICAgICAgICBy
aWdodCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgcmln
aHQuZW1wbGFjZSh0aGlzLCByaWdodENoaWxkKTsKICAgICAgICAgICAgIHJpZ2h0UmVncyA9IHJp
Z2h0LT5qc1ZhbHVlUmVncygpOwogICAgICAgICB9CiAKQEAgLTQyNTgsOSArNDI1OCw5IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lIFJlcGF0Y2hpbmdGdW5jdGlvbiwg
dHlwZW5hbWUgTm9uUmVwYXRjaGluCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElD
KE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgYm9vbCBuZWVk
c1NjcmF0Y2hHUFJSZWcsIFJlcGF0Y2hpbmdGdW5jdGlvbiByZXBhdGNoaW5nRnVuY3Rpb24sIE5v
blJlcGF0Y2hpbmdGdW5jdGlvbiBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiB7CiAgICAgR1BSUmVn
IHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4g
Z3ByU2NyYXRjaDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gZ3ByU2NyYXRjaDsK
ICAgICBpZiAobmVlZHNTY3JhdGNoR1BSUmVnKSB7Ci0gICAgICAgIGdwclNjcmF0Y2ggPSBHUFJU
ZW1wb3JhcnkodGhpcyk7CisgICAgICAgIGdwclNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAg
ICAgc2NyYXRjaEdQUiA9IGdwclNjcmF0Y2gtPmdwcigpOwogICAgIH0KICAgICBKU1ZhbHVlT3Bl
cmFuZCBjaGlsZE9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNDY4Nyw4ICs0Njg3
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxKU1ZhbHVl
T3BlcmFuZD4gbGVmdDsKLSAgICAgICAgT3B0aW9uYWw8SlNWYWx1ZU9wZXJhbmQ+IHJpZ2h0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiBsZWZ0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPEpTVmFsdWVPcGVyYW5kPiByaWdodDsKIAogICAgICAgICBKU1ZhbHVlUmVncyBs
ZWZ0UmVnczsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzOwpAQCAtNDczNSwxMSArNDcz
NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhEaXYoTm9kZSogbm9kZSkK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRP
cGVyYW5kLmlzQ29uc3QoKSk7CiAKICAgICAgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkp
IHsKLSAgICAgICAgICAgIGxlZnQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBsZWZ0Q2hpbGQpOwor
ICAgICAgICAgICAgbGVmdC5lbXBsYWNlKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgICAgICAgICBs
ZWZ0UmVncyA9IGxlZnQtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFy
aWdodE9wZXJhbmQuaXNDb25zdCgpKSB7Ci0gICAgICAgICAgICByaWdodCA9IEpTVmFsdWVPcGVy
YW5kKHRoaXMsIHJpZ2h0Q2hpbGQpOworICAgICAgICAgICAgcmlnaHQuZW1wbGFjZSh0aGlzLCBy
aWdodENoaWxkKTsKICAgICAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygp
OwogICAgICAgICB9CiAKQEAgLTc2MTIsMTAgKzc2MTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNhbGxET01HZXR0ZXIoTm9kZSogbm9kZSkKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKICAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVl
KGJhc2UuZ3ByKCksIG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCi0gICAg
T3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBnbG9iYWxPYmplY3Q7CiAgICAgaWYgKHBhdGNo
cG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpIHsKICAgICAgICAgRWRnZSYgZ2xvYmFsT2JqZWN0
RWRnZSA9IG5vZGUtPmNoaWxkMigpOwotICAgICAgICBnbG9iYWxPYmplY3QgPSBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCh0aGlzLCBnbG9iYWxPYmplY3RFZGdlKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0
LmVtcGxhY2UodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7CiAgICAgICAgIHJlZ3MuYXBwZW5kKERP
TUpJVDo6VmFsdWUoZ2xvYmFsT2JqZWN0LT5ncHIoKSwgbV9zdGF0ZS5mb3JOb2RlKGdsb2JhbE9i
amVjdEVkZ2UpLnZhbHVlKCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBjOGM5ZWYzNGRhMTcwZDM3M2Y5YmE4NjczZGYy
N2YyOGY4ZDQzY2JmLi41MTlkZjY1ZjE3MmIzNDk0YWFlMGIyZjIzOTFhZDliYTkzNjIxOTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0y
OTI4LDcgKzI5MjgsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgfTsKICAgICBWZWN0
b3I8U2xvd1BhdGhMYW1iZGE+IG1fc2xvd1BhdGhMYW1iZGFzOwogICAgIFZlY3RvcjxTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuPiBtX3BsYW5zOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX291dE9m
TGluZVN0cmVhbUluZGV4OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1fb3V0T2ZMaW5l
U3RyZWFtSW5kZXg7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDY1NzQ0MmY2ZmQxMTViMmFhMzYyZmY1
YWQ0ZjYwZjNlZDgxZmE1N2QuLjhkMWJjMGIzODU0YjFjNGRmZjBhZTE4MTk2ZDQwMTc2MmYyMjM3
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtNTA1MCwxNSArNTA1MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmVJRCh0
aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAotICAgICAgICBPcHRp
b25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4ga2V5QXNDZWxsOwotICAgICAgICBPcHRpb25hbDxK
U1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTcGVjdWxh
dGVDZWxsT3BlcmFuZD4ga2V5QXNDZWxsOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEpTVmFsdWVP
cGVyYW5kPiBrZXlBc1ZhbHVlOwogICAgICAgICBKU1ZhbHVlUmVncyBrZXlSZWdzOwogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAgICAgICAg
ICAgIGtleUFzVmFsdWUgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBrZXlBc1ZhbHVlLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAg
ICAgICAgICAga2V5UmVncyA9IGtleUFzVmFsdWUtPmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0
cmluZ1VzZSB8fCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICAg
ICAgICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgIGtleUFzQ2VsbC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgIGtleVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoa2V5QXND
ZWxsLT5ncHIoKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNTgwNDY4ODc1MmVlZjU5ZjQyZWRjMTA0
N2M2M2M4ODI2YjRmMGRkYi4uZTUzOGZiYjVhNzgxMGI0YTQ5NTgyNTM3MjU3NzYwMGUxODc5Yjc0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC0xOTQ5LDEwICsxOTQ5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVMb2dpY2FsTm90KE5vZGUqIG5vZGUpCiAKICAgICAgICAgYm9vbCBzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0
aWxsVmFsaWQoKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2NyYXRjaDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxH
UFJUZW1wb3Jhcnk+IHNjcmF0Y2g7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxp
ZEdQUlJlZzsKICAgICAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkg
ewotICAgICAgICAgICAgc2NyYXRjaCA9IEdQUlRlbXBvcmFyeSh0aGlzKTsKKyAgICAgICAgICAg
IHNjcmF0Y2guZW1wbGFjZSh0aGlzKTsKICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LT5ncHIoKTsKICAgICAgICAgfQogICAgICAgICBib29sIG5lZ2F0ZVJlc3VsdCA9IHRydWU7CkBA
IC0yMTAzLDEyICsyMTAzLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAg
ICAgICBGUFJUZW1wb3JhcnkgZnByVmFsdWUodGhpcyk7CiAgICAgICAgICAgICBGUFJUZW1wb3Jh
cnkgZnByVGVtcCh0aGlzKTsKLSAgICAgICAgICAgIE9wdGlvbmFsPEdQUlRlbXBvcmFyeT4gc2Ny
YXRjaDsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBzY3JhdGNoOwog
CiAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgICAg
ICAgICBib29sIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9ICFtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwogICAgICAgICAgICAgaWYgKHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgIHNjcmF0
Y2ggPSBHUFJUZW1wb3JhcnkodGhpcyk7CisgICAgICAgICAgICAgICAgc2NyYXRjaC5lbXBsYWNl
KHRoaXMpOwogICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLT5ncHIoKTsKICAg
ICAgICAgICAgIH0KIApAQCAtNDc2OSwxMSArNDc2OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CiAgICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBpbnB1dCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgT3B0aW9u
YWw8R1BSVGVtcG9yYXJ5PiB0ZW1wOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IHRlbXA7CiAKICAgICAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gSW52YWxpZEdQUlJl
ZzsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkg
ewotICAgICAgICAgICAgICAgIHRlbXAgPSBHUFJUZW1wb3JhcnkodGhpcyk7CisgICAgICAgICAg
ICAgICAgdGVtcC5lbXBsYWNlKHRoaXMpOwogICAgICAgICAgICAgICAgIHRlbXBHUFIgPSB0ZW1w
LT5ncHIoKTsKICAgICAgICAgICAgIH0KIApAQCAtNTIwNywxNSArNTIwNywxNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBz
dHJ1Y3R1cmVJRCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAot
ICAgICAgICBPcHRpb25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4ga2V5QXNDZWxsOwotICAgICAg
ICBPcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4ga2V5QXNWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxTcGVjdWxhdGVDZWxsT3BlcmFuZD4ga2V5QXNDZWxsOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPEpTVmFsdWVPcGVyYW5kPiBrZXlBc1ZhbHVlOwogICAgICAgICBHUFJSZWcga2V5R1BSOwog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKLSAg
ICAgICAgICAgIGtleUFzVmFsdWUgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBrZXlBc1ZhbHVlLmVtcGxhY2UodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAga2V5R1BSID0ga2V5QXNWYWx1ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmlu
Z1VzZSB8fCBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKTsKLSAgICAgICAg
ICAgIGtleUFzQ2VsbCA9IFNwZWN1bGF0ZUNlbGxPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIGtleUFzQ2VsbC5lbXBsYWNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgICAgIGtleUdQUiA9IGtleUFzQ2VsbC0+Z3ByKCk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAKaW5kZXggMTA0MDZmYTQxNTk1NzQ5NWYyNDhhOTkyZTU5ZTY0ZDg1Zjc4YjI4MS4u
NjZjNTAwOGUyOTk3ODA1MTlkNjgwNDdjZDkyYjZkYTUzYjcxM2Q0NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3Bw
CkBAIC0yMDQsNyArMjA0LDcgQEAgY2xhc3MgU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoRG91Ymxl
UmVwVXNlKQogICAgICAgICAgICAgICAgICYmIG1fbm9kZS0+Y2hpbGQyKCktPmlzTnVtYmVyQ29u
c3RhbnQoKSkgewogCi0gICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGRvdWJsZT4gcmVjaXBy
b2NhbCA9IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25zdChtX25vZGUtPmNoaWxkMigpLT5hc051
bWJlcigpKSkgeworICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmVj
aXByb2NhbCA9IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25zdChtX25vZGUtPmNoaWxkMigpLT5h
c051bWJlcigpKSkgewogICAgICAgICAgICAgICAgICAgICBOb2RlKiByZWNpcHJvY2FsTm9kZSA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydENvbnN0YW50KG1fbm9kZUluZGV4LCBtX25vZGUtPm9yaWdp
biwganNEb3VibGVOdW1iZXIoKnJlY2lwcm9jYWwpLCBEb3VibGVDb25zdGFudCk7CiAgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZS0+c2V0T3AoQXJpdGhNdWwpOwogICAgICAgICAgICAgICAgICAg
ICBtX25vZGUtPmNoaWxkMigpID0gRWRnZShyZWNpcHJvY2FsTm9kZSwgRG91YmxlUmVwVXNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IDNhYzQxZDkwZWU3
NDc1ZDZiZjBhZTFhZWNjZjViMGZlZWQzYTgwYTAuLjFjZGI1MDk1NzJkOTljZTQxNWVkNzYwMjIy
ZDhiYjE4NTM5OGRlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNw
cApAQCAtMTQ2LDIzICsxNDYsMjMgQEAgUmVnaXN0ZXJTZXQgSklUQ29kZTo6bGl2ZVJlZ2lzdGVy
c1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoQ29kZUJsb2MKICAgICByZXR1
cm4gUmVnaXN0ZXJTZXQoKTsKIH0KIAotT3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6Zmlu
ZFBDKENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBwYykKK3N0ZDo6b3B0aW9uYWw8Q29kZU9y
aWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBwYykKIHsK
ICAgICBmb3IgKE9TUkV4aXQmIGV4aXQgOiBvc3JFeGl0KSB7CiAgICAgICAgIGlmIChFeGVjdXRh
YmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBleGl0Lm1fY29kZS5leGVjdXRhYmxlTWVtb3J5KCkp
IHsKICAgICAgICAgICAgIGlmIChoYW5kbGUtPnN0YXJ0KCkgPD0gcGMgJiYgcGMgPCBoYW5kbGUt
PmVuZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxDb2RlT3JpZ2luPihleGl0
Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxDb2RlT3JpZ2luPihleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlKTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0
aD4mIGxhenlTbG93UGF0aCA6IGxhenlTbG93UGF0aHMpIHsKICAgICAgICAgaWYgKEV4ZWN1dGFi
bGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IGxhenlTbG93UGF0aC0+c3R1YigpLmV4ZWN1dGFibGVN
ZW1vcnkoKSkgewogICAgICAgICAgICAgaWYgKGhhbmRsZS0+c3RhcnQoKSA8PSBwYyAmJiBwYyA8
IGhhbmRsZS0+ZW5kKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPENvZGVPcmln
aW4+KGNvZGVCbG9jay0+Y29kZU9yaWdpbihsYXp5U2xvd1BhdGgtPmNhbGxTaXRlSW5kZXgoKSkp
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+KGNvZGVC
bG9jay0+Y29kZU9yaWdpbihsYXp5U2xvd1BhdGgtPmNhbGxTaXRlSW5kZXgoKSkpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuaAppbmRleCA5ODZhOTBhNzg2ZjdiMWNkYTRhNTkzNDgwMzhkNTc3MWNjOTQx
MzlmLi4yYzI4MDllOTcyZDE5NWU3MTU4YzQ0YzZiYTcwYzNjZWZhMTdmN2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBKSVRD
b2RlIDogcHVibGljIEpTQzo6SklUQ29kZSB7CiAKICAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0
ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxs
U2l0ZUluZGV4KSBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhD
b2RlQmxvY2sqLCB2b2lkKiBwYykgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2RlT3Jp
Z2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIG92ZXJyaWRlOwogCiAgICAgQ29kZVJl
ZiBiM0NvZGUoKSBjb25zdCB7IHJldHVybiBtX2IzQ29kZTsgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAppbmRleCAxMjRkMzZmYTljNTUyMzdkOTBlZGNlMWVlZTQ3ZThjYWQw
NDU2OWJhLi44NDU0ZGJlZDFkMzNiMmE4MGE4ZTZkMmE0YzhhNDM5MzkyZTgxYTU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIFNpbXBsZVN0YXRz
JiB0aW1pbmdTdGF0cyhjb25zdCBjaGFyKiBuYW1lLCBDb2xsZWN0aW9uU2NvcGUgc2NvcGUpCiAK
IGNsYXNzIFRpbWluZ1Njb3BlIHsKIHB1YmxpYzoKLSAgICBUaW1pbmdTY29wZShPcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+IHNjb3BlLCBjb25zdCBjaGFyKiBuYW1lKQorICAgIFRpbWluZ1Njb3Bl
KHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSwgY29uc3QgY2hhciogbmFtZSkK
ICAgICAgICAgOiBtX3Njb3BlKHNjb3BlKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsK
QEAgLTIwMyw3ICsyMDMsNyBAQCBjbGFzcyBUaW1pbmdTY29wZSB7CiAgICAgewogICAgIH0KICAg
ICAKLSAgICB2b2lkIHNldFNjb3BlKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCisg
ICAgdm9pZCBzZXRTY29wZShzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiAg
ICAgewogICAgICAgICBtX3Njb3BlID0gc2NvcGU7CiAgICAgfQpAQCAtMjI0LDcgKzIyNCw3IEBA
IGNsYXNzIFRpbWluZ1Njb3BlIHsKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgT3B0
aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBtX3Njb3BlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVj
dGlvblNjb3BlPiBtX3Njb3BlOwogICAgIGRvdWJsZSBtX2JlZm9yZTsKICAgICBjb25zdCBjaGFy
KiBtX25hbWU7CiB9OwpAQCAtMTA4NCw3ICsxMDg0LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxs
R2FyYmFnZSgpCiAgICAgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9ja3MoKTsKIH0KIAot
dm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkK
K3ZvaWQgSGVhcDo6Y29sbGVjdEFzeW5jKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBz
Y29wZSkKIHsKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkBA
IC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBc3luYyhPcHRpb25hbDxDb2xs
ZWN0aW9uU2NvcGU+IHNjb3BlKQogICAgIGJvb2wgYWxyZWFkeVJlcXVlc3RlZCA9IGZhbHNlOwog
ICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fdGhyZWFkTG9jayk7Ci0gICAgICAg
IGZvciAoT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiByZXF1ZXN0IDogbV9yZXF1ZXN0cykgewor
ICAgICAgICBmb3IgKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiByZXF1ZXN0IDogbV9y
ZXF1ZXN0cykgewogICAgICAgICAgICAgaWYgKHNjb3BlKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHNjb3BlID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikgewogICAgICAgICAgICAgICAgICAgICBh
bHJlYWR5UmVxdWVzdGVkID0gdHJ1ZTsKQEAgLTExMTgsNyArMTExOCw3IEBAIHZvaWQgSGVhcDo6
Y29sbGVjdEFzeW5jKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiAgICAgcmVxdWVz
dENvbGxlY3Rpb24oc2NvcGUpOwogfQogCi12b2lkIEhlYXA6OmNvbGxlY3RTeW5jKE9wdGlvbmFs
PENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCit2b2lkIEhlYXA6OmNvbGxlY3RTeW5jKHN0ZDo6b3B0
aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkKIHsKICAgICBpZiAoIW1faXNTYWZlVG9Db2xs
ZWN0KQogICAgICAgICByZXR1cm47CkBAIC0xMTM4LDcgKzExMzgsNyBAQCB2b2lkIEhlYXA6OmNv
bGxlY3RJblRocmVhZCgpCiB7CiAgICAgbV9jdXJyZW50R0NTdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKICAgICAKLSAgICBPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IHNjb3BlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZTsKICAgICB7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKCptX3RocmVhZExvY2spOwogICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbV9yZXF1ZXN0cy5pc0VtcHR5KCkpOwpAQCAtMTE2NCw3ICsxMTY0LDcgQEAgdm9pZCBIZWFw
Ojpjb2xsZWN0SW5UaHJlYWQoKQogICAgIAogICAgIEFTU0VSVChtX2lzU2FmZVRvQ29sbGVjdCk7
CiAgICAgaWYgKG1fY29sbGVjdGlvblNjb3BlKSB7Ci0gICAgICAgIGRhdGFMb2coIkNvbGxlY3Rp
b24gc2NvcGUgYWxyZWFkeSBzZXQgZHVyaW5nIEdDOiAiLCBtX2NvbGxlY3Rpb25TY29wZSwgIlxu
Iik7CisgICAgICAgIGRhdGFMb2coIkNvbGxlY3Rpb24gc2NvcGUgYWxyZWFkeSBzZXQgZHVyaW5n
IEdDOiAiLCAqbV9jb2xsZWN0aW9uU2NvcGUsICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKQEAgLTE1NDIsNyArMTU0Miw3IEBAIHZvaWQg
SGVhcDo6ZmluYWxpemUoKQogICAgICAgICBjYWNoZS0+Y2xlYXIoKTsKIH0KIAotSGVhcDo6VGlj
a2V0IEhlYXA6OnJlcXVlc3RDb2xsZWN0aW9uKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2Nv
cGUpCitIZWFwOjpUaWNrZXQgSGVhcDo6cmVxdWVzdENvbGxlY3Rpb24oc3RkOjpvcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+IHNjb3BlKQogewogICAgIHN0b3BJZk5lY2Vzc2FyeSgpOwogICAgIApA
QCAtMTU4Miw3ICsxNTgyLDcgQEAgdm9pZCBIZWFwOjpzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCkK
ICNlbmRpZgogfQogCi12b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24oT3B0aW9uYWw8Q29s
bGVjdGlvblNjb3BlPiBzY29wZSkKK3ZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihzdGQ6
Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gc2NvcGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6Omxv
Z0dDKCkpCiAgICAgICAgIGRhdGFMb2coIj0+ICIpOwpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgdm9p
ZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnY1N0YXJ0VGltZSkKIAogICAgIFJF
TEVBU0VfQVNTRVJUKG1fY29sbGVjdGlvblNjb3BlKTsKICAgICBtX2xhc3RDb2xsZWN0aW9uU2Nv
cGUgPSBtX2NvbGxlY3Rpb25TY29wZTsKLSAgICBtX2NvbGxlY3Rpb25TY29wZSA9IE51bGxvcHQ7
CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8q
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT5kaWRHYXJiYWdlQ29s
bGVjdChzY29wZSk7CkBAIC0xOTE1LDcgKzE5MTUsNyBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVC
YXJyaWVyQnVmZmVyKEpTQ2VsbCogY2VsbCkKICAgICBtX3dyaXRlQmFycmllckJ1ZmZlci5hZGQo
Y2VsbCk7CiB9CiAKLWJvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihPcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+IHNjb3BlKSBjb25zdAorYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xs
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBzY29wZSkgY29uc3QKIHsKICAg
ICBpZiAoIU9wdGlvbnM6OnVzZUdlbmVyYXRpb25hbEdDKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDQxMWY5MmE3OTJkNjkwODQzZTE5NzNh
MWU2Mzk5MzQ0ODVhOWZiZTIuLjc3MjZhZGU5YTRjNWRkYWU5ODU1MTgwODQ4MWUyMmQzNDg0MmQy
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFz
cyBIZWFwIHsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEhlYXBPYnNlcnZlciogb2JzZXJ2ZXIp
IHsgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3Qob2JzZXJ2ZXIpOyB9CiAKICAgICBNdXRhdG9yU3Rh
dGUgbXV0YXRvclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9tdXRhdG9yU3RhdGU7IH0KLSAgICBP
cHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+IGNvbGxlY3Rpb25TY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29sbGVjdGlvblNjb3BlOyB9CisgICAgc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+
IGNvbGxlY3Rpb25TY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGVjdGlvblNjb3BlOyB9CiAg
ICAgYm9vbCBoYXNIZWFwQWNjZXNzKCkgY29uc3Q7CiAgICAgYm9vbCBtdXRhdG9ySXNTdG9wcGVk
KCkgY29uc3Q7CiAgICAgYm9vbCBjb2xsZWN0b3JCZWxpZXZlc1RoYXRUaGVXb3JsZElzU3RvcHBl
ZCgpIGNvbnN0OwpAQCAtMTg2LDE4ICsxODYsMTggQEAgY2xhc3MgSGVhcCB7CiAgICAgYm9vbCBz
aG91bGRDb2xsZWN0KCk7CiAgICAgCiAgICAgLy8gUXVldWUgdXAgYSBjb2xsZWN0aW9uLiBSZXR1
cm5zIGltbWVkaWF0ZWx5LiBUaGlzIHdpbGwgbm90IHF1ZXVlIGEgY29sbGVjdGlvbiBpZiBhIGNv
bGxlY3Rpb24KLSAgICAvLyBvZiBlcXVhbCBvciBncmVhdGVyIHN0cmVuZ3RoIGV4aXN0cy4gRnVs
bCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBOdWxsb3B0IGNvbGxlY3Rpb25zCi0gICAg
Ly8gYW5kIE51bGxvcHQgY29sbGVjdGlvbnMgYXJlIHN0cm9uZ2VyIHRoYW4gRWRlbiBjb2xsZWN0
aW9ucy4gTnVsbG9wdCBtZWFucyB0aGF0IHRoZSBHQyBjYW4KKyAgICAvLyBvZiBlcXVhbCBvciBn
cmVhdGVyIHN0cmVuZ3RoIGV4aXN0cy4gRnVsbCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhh
biBzdGQ6Om51bGxvcHQgY29sbGVjdGlvbnMKKyAgICAvLyBhbmQgc3RkOjpudWxsb3B0IGNvbGxl
Y3Rpb25zIGFyZSBzdHJvbmdlciB0aGFuIEVkZW4gY29sbGVjdGlvbnMuIHN0ZDo6bnVsbG9wdCBt
ZWFucyB0aGF0IHRoZSBHQyBjYW4KICAgICAvLyBjaG9vc2UgRWRlbiBvciBGdWxsLiBUaGlzIGlt
cGxpZXMgdGhhdCBpZiB5b3UgcmVxdWVzdCBhIEdDIHdoaWxlIHRoYXQgR0MgaXMgb25nb2luZywg
bm90aGluZwogICAgIC8vIHdpbGwgaGFwcGVuLgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
Y29sbGVjdEFzeW5jKE9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gPSBOdWxsb3B0KTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBc3luYyhzdGQ6Om9wdGlvbmFsPENvbGxlY3Rp
b25TY29wZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIAogICAgIC8vIFF1ZXVlIHVwIGEgY29sbGVj
dGlvbiBhbmQgd2FpdCBmb3IgaXQgdG8gY29tcGxldGUuIFRoaXMgd29uJ3QgcmV0dXJuIHVudGls
IHlvdSBnZXQgeW91ciBvd24KICAgICAvLyBjb21wbGV0ZSBjb2xsZWN0aW9uLiBGb3IgZXhhbXBs
ZSwgaWYgdGhlcmUgd2FzIGFuIG9uZ29pbmcgYXN5bmNocm9ub3VzIGNvbGxlY3Rpb24gYXQgdGhl
IHRpbWUKICAgICAvLyB5b3UgY2FsbGVkIHRoaXMsIHRoZW4gdGhpcyB3b3VsZCB3YWl0IGZvciB0
aGF0IG9uZSB0byBjb21wbGV0ZSBhbmQgdGhlbiB0cmlnZ2VyIHlvdXIKICAgICAvLyBjb2xsZWN0
aW9uIGFuZCB0aGVuIHJldHVybi4gSW4gd2VpcmQgY2FzZXMsIHRoZXJlIGNvdWxkIGJlIG11bHRp
cGxlIEdDIHJlcXVlc3RzIGluIHRoZSBiYWNrbG9nCiAgICAgLy8gYW5kIHRoaXMgd2lsbCB3YWl0
IGZvciB0aGF0IGJhY2tsb2cgYmVmb3JlIHJ1bm5pbmcgaXRzIEdDIGFuZCByZXR1cm5pbmcuCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0U3luYyhPcHRpb25hbDxDb2xsZWN0aW9u
U2NvcGU+ID0gTnVsbG9wdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0U3lu
YyhzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIAog
ICAgIGJvb2wgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0RlZmVycmFsQ29udGV4dCogPSBu
dWxscHRyKTsgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGRpZCBjb2xsZWN0LgogICAgIHZvaWQgY29s
bGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KCk7CkBAIC00MjUsMTEgKzQyNSwxMSBA
QCBjbGFzcyBIZWFwIHsKICAgICB2b2lkIG5vdGlmeVRocmVhZFN0b3BwaW5nKGNvbnN0IExvY2tI
b2xkZXImKTsKICAgICAKICAgICB0eXBlZGVmIHVpbnQ2NF90IFRpY2tldDsKLSAgICBUaWNrZXQg
cmVxdWVzdENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPik7CisgICAgVGlja2V0
IHJlcXVlc3RDb2xsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPik7CiAgICAg
dm9pZCB3YWl0Rm9yQ29sbGVjdGlvbihUaWNrZXQpOwogICAgIAogICAgIHZvaWQgc3VzcGVuZENv
bXBpbGVyVGhyZWFkcygpOwotICAgIHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbihPcHRpb25hbDxD
b2xsZWN0aW9uU2NvcGU+KTsKKyAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oc3RkOjpvcHRp
b25hbDxDb2xsZWN0aW9uU2NvcGU+KTsKICAgICB2b2lkIGZsdXNoV3JpdGVCYXJyaWVyQnVmZmVy
KCk7CiAgICAgdm9pZCBwcmVwYXJlRm9yTWFya2luZygpOwogICAgIApAQCAtNDY5LDcgKzQ2OSw3
IEBAIGNsYXNzIEhlYXAgewogICAgIHZvaWQgc3dlZXBBbGxMb2dpY2FsbHlFbXB0eVdlYWtCbG9j
a3MoKTsKICAgICBib29sIHN3ZWVwTmV4dExvZ2ljYWxseUVtcHR5V2Vha0Jsb2NrKCk7CiAKLSAg
ICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBy
ZXF1ZXN0ZWRDb2xsZWN0aW9uU2NvcGUpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29s
bGVjdGlvbihzdGQ6Om9wdGlvbmFsPENvbGxlY3Rpb25TY29wZT4gcmVxdWVzdGVkQ29sbGVjdGlv
blNjb3BlKSBjb25zdDsKIAogICAgIHZvaWQgaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAg
IHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aCgpOwpAQCAtNDk3LDggKzQ5Nyw4IEBAIGNsYXNz
IEhlYXAgewogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXNWaXNpdGVkOwogICAgIHNpemVfdCBtX3Rv
dGFsQnl0ZXNWaXNpdGVkVGhpc0N5Y2xlOwogICAgIAotICAgIE9wdGlvbmFsPENvbGxlY3Rpb25T
Y29wZT4gbV9jb2xsZWN0aW9uU2NvcGU7Ci0gICAgT3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBt
X2xhc3RDb2xsZWN0aW9uU2NvcGU7CisgICAgc3RkOjpvcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+
IG1fY29sbGVjdGlvblNjb3BlOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPiBt
X2xhc3RDb2xsZWN0aW9uU2NvcGU7CiAgICAgTXV0YXRvclN0YXRlIG1fbXV0YXRvclN0YXRlIHsg
TXV0YXRvclN0YXRlOjpSdW5uaW5nIH07CiAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVy
ZUlEVGFibGU7CiAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKQEAgLTU5OSw3ICs1OTks
NyBAQCBjbGFzcyBIZWFwIHsKICAgICBib29sIG1fY29sbGVjdG9yQmVsaWV2ZXNUaGF0VGhlV29y
bGRJc1N0b3BwZWQgeyBmYWxzZSB9OwogICAgIE1vbm90b25pY1RpbWUgbV9zdG9wVGltZTsKICAg
ICAKLSAgICBEZXF1ZTxPcHRpb25hbDxDb2xsZWN0aW9uU2NvcGU+PiBtX3JlcXVlc3RzOworICAg
IERlcXVlPHN0ZDo6b3B0aW9uYWw8Q29sbGVjdGlvblNjb3BlPj4gbV9yZXF1ZXN0czsKICAgICBU
aWNrZXQgbV9sYXN0U2VydmVkVGlja2V0IHsgMCB9OwogICAgIFRpY2tldCBtX2xhc3RHcmFudGVk
VGlja2V0IHsgMCB9OwogICAgIGJvb2wgbV90aHJlYWRTaG91bGRTdG9wIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3BwCmluZGV4IGZhMzNkYzk3
NzQ0NWRlMmM2ZDQ4ZmU1OGUxZGEyMDZjZmVjOGVlZWIuLjM0ZGIxMmMzZGJiYzcyNzA0MjkzNTFi
ZTBhYmRjOTNlNmI2MjhkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNu
YXBzaG90LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgSGVhcFNuYXBzaG90OjpmaW5hbGl6
ZSgpCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90
Ojpub2RlRm9yQ2VsbChKU0NlbGwqIGNlbGwpCitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5v
ZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvckNlbGwoSlNDZWxsKiBjZWxsKQogewogICAgIEFTU0VS
VChtX2ZpbmFsaXplZCk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNo
b3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JDZWxsKEpTQ2VsbCogY2VsbCkKICAgICAgICAg
ICAgIHVuc2lnbmVkIG1pZGRsZSA9IHN0YXJ0ICsgKChlbmQgLSBzdGFydCkgLyAyKTsKICAgICAg
ICAgICAgIEhlYXBTbmFwc2hvdE5vZGUmIG5vZGUgPSBtX25vZGVzW21pZGRsZV07CiAgICAgICAg
ICAgICBpZiAoY2VsbCA9PSBub2RlLmNlbGwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOwogICAgICAgICAgICAgaWYgKGNlbGwg
PCBub2RlLmNlbGwpCiAgICAgICAgICAgICAgICAgZW5kID0gbWlkZGxlOwogICAgICAgICAgICAg
ZWxzZQpAQCAtMTUzLDMyICsxNTMsMzIgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVh
cFNuYXBzaG90Ojpub2RlRm9yQ2VsbChKU0NlbGwqIGNlbGwpCiAgICAgaWYgKG1fcHJldmlvdXMp
CiAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLT5ub2RlRm9yQ2VsbChjZWxsKTsKIAotICAgIHJl
dHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPEhl
YXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvck9iamVjdElkZW50aWZpZXIodW5z
aWduZWQgb2JqZWN0SWRlbnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4g
SGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3RJZGVu
dGlmaWVyKQogewogICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcHJldmlvdXMp
CiAgICAgICAgICAgICByZXR1cm4gbV9wcmV2aW91cy0+bm9kZUZvck9iamVjdElkZW50aWZpZXIo
b2JqZWN0SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChvYmplY3RJZGVudGlmaWVyID4gbV9s
YXN0T2JqZWN0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAob2JqZWN0SWRlbnRpZmllciA8IG1fZmlyc3RP
YmplY3RJZGVudGlmaWVyKSB7CiAgICAgICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICAgICAg
cmV0dXJuIG1fcHJldmlvdXMtPm5vZGVGb3JPYmplY3RJZGVudGlmaWVyKG9iamVjdElkZW50aWZp
ZXIpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX25vZGVzKSB7CiAgICAgICAgIGlm
IChub2RlLmlkZW50aWZpZXIgPT0gb2JqZWN0SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVy
biBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPihub2RlKTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOwogICAgIH0KIAotICAgIHJldHVy
biBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuaAppbmRleCA2MGQ4
Mjg0NTcwNWQyYmUxYzFhM2I5NTQ2ZjQxNjM3NGEzODg5YjYwLi5mZGQzZGUzYjUwZjA4OGIzNTQw
YzE0MTUzN2Q5MzBmM2I0OTM0YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwU25hcHNob3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3QuaApAQCAtNDUsOCArNDUsOCBAQCBjbGFzcyBIZWFwU25hcHNob3QgewogICAgIHZv
aWQgZmluYWxpemUoKTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZXMuaXNFbXB0eSgpOyB9Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckNl
bGwoSlNDZWxsKik7Ci0gICAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvck9iamVj
dElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcik7CisgICAgc3RkOjpvcHRpb25h
bDxIZWFwU25hcHNob3ROb2RlPiBub2RlRm9yQ2VsbChKU0NlbGwqKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEhlYXBTbmFwc2hvdE5vZGU+IG5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9i
amVjdElkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBIZWFwU25hcHNo
b3RCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCBlMjk1ZjQwYmU5Y2Qw
Yjg1M2MxMGM0NTliODhjYWU2M2JhMTkyMTdhLi4yMzg4YzI4NDc5NjE5NzdhYjhhZDA0ZjM5YTAx
YWI2ZWQ0NzczZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTE0LDcgKzEx
NCw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICB7CiAgICAgICAgIC8vIEluIGNhc2UgdGhpcyBpcyBhIHJlLWVudHJhbnQgY2Fs
bCBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCB3ZSBkb24ndCB3YW50IHRvIGxvc2UKICAgICAgICAg
Ly8gdGhlIG91dGVyIHJlcXVlc3QncyBpZCBqdXN0IGJlY2F1c2UgdGhlIGlubmVyIHJlcXVlc3Qg
aXMgYm9ndXMuCi0gICAgICAgIFNldEZvclNjb3BlPE9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1
ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCBOdWxsb3B0KTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8
c3RkOjpvcHRpb25hbDxsb25nPj4gc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJZCwg
c3RkOjpudWxsb3B0KTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlZE1l
c3NhZ2U7CiAgICAgICAgIGlmICghSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlLCBw
YXJzZWRNZXNzYWdlKSkgewpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNo
ZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAgIHsKICAgICAgICAgLy8g
V2UgY291bGQgYmUgY2FsbGVkIHJlLWVudHJhbnRseSBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCBz
byByZXN0b3JlIHRoZSBwcmV2aW91cyBpZC4KLSAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8
bG9uZz4+IHNjb3BlZFJlcXVlc3RJZChtX2N1cnJlbnRSZXF1ZXN0SWQsIHJlcXVlc3RJZCk7Cisg
ICAgICAgIFNldEZvclNjb3BlPHN0ZDo6b3B0aW9uYWw8bG9uZz4+IHNjb3BlZFJlcXVlc3RJZCht
X2N1cnJlbnRSZXF1ZXN0SWQsIHJlcXVlc3RJZCk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBtZXRob2RWYWx1ZTsKICAgICAgICAgaWYgKCFtZXNzYWdlT2JqZWN0LT5nZXRWYWx1
ZShBU0NJSUxpdGVyYWwoIm1ldGhvZCIpLCBtZXRob2RWYWx1ZSkpIHsKQEAgLTI0Niw3ICsyNDYs
NyBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgbV9m
cm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNlKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIAog
ICAgIG1fcHJvdG9jb2xFcnJvcnMuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBO
dWxsb3B0OworICAgIG1fY3VycmVudFJlcXVlc3RJZCA9IHN0ZDo6bnVsbG9wdDsKIH0KICAgICAK
IHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnJlcG9ydFByb3RvY29sRXJyb3IoQ29tbW9uRXJyb3JD
b2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBAIC0yNTQsNyArMjU0
LDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihDb21tb25F
cnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHIKICAgICByZXBvcnRQcm90b2NvbEVycm9yKG1f
Y3VycmVudFJlcXVlc3RJZCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogfQogCi12b2lkIEJh
Y2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKE9wdGlvbmFsPGxvbmc+IHJlbGF0
ZWRSZXF1ZXN0SWQsIENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQordm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihz
dGQ6Om9wdGlvbmFsPGxvbmc+IHJlbGF0ZWRSZXF1ZXN0SWQsIENvbW1vbkVycm9yQ29kZSBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewogICAgIEFTU0VSVF9BUkcoZXJy
b3JDb2RlLCBlcnJvckNvZGUgPj0gMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAppbmRleCAz
MTc2YjJkMWFmM2VkZGMzNTkwNTc3NjZjYzE0OWRjN2JkMzM2OWJjLi45Mjc2NDJjMjFhMzU1YTM2
YTU0MDc5MjVmNjNmODNmN2FjMzBmMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC04
Nyw3ICs4Nyw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEJhY2tlbmREaXNwYXRjaGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8QmFja2VuZERpc3BhdGNoZXI+CiAgICAgdm9pZCBzZW5kUGVuZGlu
Z0Vycm9ycygpOwogCiAgICAgdm9pZCByZXBvcnRQcm90b2NvbEVycm9yKENvbW1vbkVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgcmVwb3J0UHJvdG9jb2xF
cnJvcihPcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3Io
c3RkOjpvcHRpb25hbDxsb25nPiByZWxhdGVkUmVxdWVzdElkLCBDb21tb25FcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgV1RGX0hJRERFTl9ERUNMQVJBVElPTgpAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIEJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QmFja2Vu
ZERpc3BhdGNoZXI+CiAKICAgICAvLyBGb3Igc3luY2hyb25vdXNseSBoYW5kbGVkIHJlcXVlc3Rz
LCBhdm9pZCBwbHVtYmluZyByZXF1ZXN0SWQgdGhyb3VnaCBldmVyeQogICAgIC8vIGNhbGwgdGhh
dCBjb3VsZCBwb3RlbnRpYWxseSBmYWlsIHdpdGggYSBwcm90b2NvbCBlcnJvci4KLSAgICBPcHRp
b25hbDxsb25nPiBtX2N1cnJlbnRSZXF1ZXN0SWQgeyBOdWxsb3B0IH07CisgICAgc3RkOjpvcHRp
b25hbDxsb25nPiBtX2N1cnJlbnRSZXF1ZXN0SWQgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggNDA0
MTY5ZjdmNTRmYWYwZDk2ODFmMmVmMDIwZmY0YTZkOGMxZGM0ZS4uN2U2ZWI1MGFjNGIwNjQ1Y2M5
YmQ5OWU2MWFiNDAzODE2MTZiMTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC0y
MTMsMjQgKzIxMywyNCBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6c3RvcFRyYWNraW5nKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dHJhY2tp
bmdDb21wbGV0ZSh0aW1lc3RhbXAsIHNuYXBzaG90RGF0YSk7CiB9CiAKLU9wdGlvbmFsPEhlYXBT
bmFwc2hvdE5vZGU+IEluc3BlY3RvckhlYXBBZ2VudDo6bm9kZUZvckhlYXBPYmplY3RJZGVudGlm
aWVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZp
ZXIpCitzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEluc3BlY3RvckhlYXBBZ2VudDo6
bm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgdW5z
aWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIpCiB7CiAgICAgSGVhcFByb2ZpbGVyKiBoZWFwUHJv
ZmlsZXIgPSBtX2Vudmlyb25tZW50LnZtKCkuaGVhcFByb2ZpbGVyKCk7CiAgICAgaWYgKCFoZWFw
UHJvZmlsZXIpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIGhlYXAg
c25hcHNob3QiKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgSGVhcFNuYXBzaG90KiBzbmFwc2hvdCA9IGhlYXBQcm9m
aWxlci0+bW9zdFJlY2VudFNuYXBzaG90KCk7CiAgICAgaWYgKCFzbmFwc2hvdCkgewogICAgICAg
ICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiTm8gaGVhcCBzbmFwc2hvdCIpOwotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
LSAgICBjb25zdCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBzbmFw
c2hvdC0+bm9kZUZvck9iamVjdElkZW50aWZpZXIoaGVhcE9iamVjdElkZW50aWZpZXIpOworICAg
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gb3B0aW9uYWxOb2RlID0gc25h
cHNob3QtPm5vZGVGb3JPYmplY3RJZGVudGlmaWVyKGhlYXBPYmplY3RJZGVudGlmaWVyKTsKICAg
ICBpZiAoIW9wdGlvbmFsTm9kZSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiTm8gb2JqZWN0IGZvciBpZGVudGlmaWVyLCBpdCBtYXkgaGF2ZSBiZWVuIGNvbGxlY3RlZCIp
OwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICByZXR1cm4gb3B0aW9uYWxOb2RlOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZv
aWQgSW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IGhlYXBPYmplY3RJZCwKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAKICAg
ICB1bnNpZ25lZCBoZWFwT2JqZWN0SWRlbnRpZmllciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiho
ZWFwT2JqZWN0SWQpOwotICAgIGNvbnN0IE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlv
bmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0cmluZywgaGVhcE9i
amVjdElkZW50aWZpZXIpOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9k
ZT4gb3B0aW9uYWxOb2RlID0gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKGVycm9yU3RyaW5n
LCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CiAgICAgaWYgKCFvcHRpb25hbE5vZGUpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcEFnZW50Ojpn
ZXRSZW1vdGVPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgaGVhcE9iamVjCiAg
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogCiAgICAgdW5zaWduZWQgaGVhcE9iamVjdElk
ZW50aWZpZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcE9iamVjdElkKTsKLSAgICBjb25z
dCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBub2RlRm9ySGVhcE9i
amVjdElkZW50aWZpZXIoZXJyb3JTdHJpbmcsIGhlYXBPYmplY3RJZGVudGlmaWVyKTsKKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVG
b3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0cmluZywgaGVhcE9iamVjdElkZW50aWZpZXIp
OwogICAgIGlmICghb3B0aW9uYWxOb2RlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2Vu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmgKaW5kZXggYmE3MzgyYmQ5N2Y2YzliOTQ2NDMxNmY0MzcxMDkyM2EyZGE3MGIzZi4u
NDc1NzYwODg4MmI0YjI2NmVmZjRlMDhlYWExYmQyOTU4ODVlMDZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVh
cEFnZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVj
dG9ySGVhcEFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEgKICAgICB2
b2lkIGNsZWFySGVhcFNuYXBzaG90cygpOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEpTQzo6
SGVhcFNuYXBzaG90Tm9kZT4gbm9kZUZvckhlYXBPYmplY3RJZGVudGlmaWVyKEVycm9yU3RyaW5n
JiwgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8SlND
OjpIZWFwU25hcHNob3ROb2RlPiBub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoRXJyb3JTdHJp
bmcmLCB1bnNpZ25lZCBoZWFwT2JqZWN0SWRlbnRpZmllcik7CiAKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxI
ZWFwRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0LmgKaW5kZXggOTMxNzA1ZGM1ZDQ2ODQ5MGNmNzBmNzA5ZWYyYTQ1
MzI1OWIzN2ExYS4uZGJhMDYwMTc5OWFmOTMzMzI4ZDMyZTAwNGI1OGY5OGMyMzFhMDQ5MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFJlbW90ZUNvbm5lY3QKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCB0YXJnZXRDbG9z
ZWQoKTsKIAotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0YXJnZXRJZGVudGlmaWVyKCkgY29uc3Q7
CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0Owog
ICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0OwogICAgIE5TU3RyaW5n
ICpkZXN0aW5hdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
bW0KaW5kZXggMTJmOTU0YzAzNDljMWJmYzczMzAzZDYyOWZkZjFmZWJhNTYyNTU3Yy4uZDYwZGE0
OGFmYTgzMzFmNmNiY2Q5ZGM0ZmU3OTE0YTMyOGVmMjMxMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Lm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldC5tbQpAQCAtMTE5LDkgKzExOSw5IEBAIFJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldDo6flJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldCgpCiAgICAgdGVhcmRvd25SdW5Mb29wKCk7
CiB9CiAKLU9wdGlvbmFsPHVuc2lnbmVkPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdl
dElkZW50aWZpZXIoKSBjb25zdAorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90
YXJnZXQgPyBPcHRpb25hbDx1bnNpZ25lZD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkg
OiBOdWxsb3B0OworICAgIHJldHVybiBtX3RhcmdldCA/IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0OwogfQogCiBOU1N0
cmluZyAqUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNv
bnN0CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNl
dHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2EKICAgICAgICAg
ewogICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7
CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFs
bG93ZWQoKSkgewotICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCku
c2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRpZmllcigpLnZhbHVlT3IoMCkpOworICAgICAgICAgICAg
ICAgIFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRp
ZmllcigpLnZhbHVlX29yKDApKTsKICAgICAgICAgICAgICAgICBtX3RhcmdldCA9IG51bGxwdHI7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KG1fdGFy
Z2V0KSkgewogICAgICAgICAgICAgICAgIGF1dG8gY2FzdGVkVGFyZ2V0ID0gZG93bmNhc3Q8UmVt
b3RlSW5zcGVjdGlvblRhcmdldD4obV90YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCA0ZWE3
ZjM5MjVmOGQzZWI5ZmJkNjY4ZDJjMjlhZDUzYmY5YWE2N2E1Li45M2ZkMWE3ZDdjMGU2ZGRjMzA5
MjAwMzU1YWQyNjBmNmVjYTNmZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMTM3LDcgKzEzNyw3
IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvciBmaW5hbCA6IHB1Ymxp
YyBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0CiAgICAgUmVmUHRyPFJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb24+IG1fcmVsYXlDb25uZWN0aW9uOwogCiAgICAgUmVtb3RlSW5zcGVjdG9yOjpD
bGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPFJlbW90ZUluc3BlY3Rv
cjo6Q2xpZW50OjpDYXBhYmlsaXRpZXM+IG1fY2xpZW50Q2FwYWJpbGl0aWVzOworICAgIHN0ZDo6
b3B0aW9uYWw8UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OkNhcGFiaWxpdGllcz4gbV9jbGllbnRD
YXBhYmlsaXRpZXM7CiAKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1feHBjUXVldWU7CiAgICAgdW5z
aWduZWQgbV9uZXh0QXZhaWxhYmxlVGFyZ2V0SWRlbnRpZmllciB7IDEgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ci5tbQppbmRleCBjYjBiYWNkZjZmMzBlYzNmNTZkMWU0NGFhOWFlYjg0NjU1NjgyNjdlLi4yMWNi
MjMyZDhjNGFhM2Q5NGEzNzg4MzY1NDY4ZDAwMTRiMDE3MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLm1t
CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnVwZGF0ZUNsaWVudENh
cGFiaWxpdGllcygpCiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CiAK
ICAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IE51bGxv
cHQ7CisgICAgICAgIG1fY2xpZW50Q2FwYWJpbGl0aWVzID0gc3RkOjpudWxsb3B0OwogICAgIGVs
c2UgewogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzIHVwZGF0
ZWRDYXBhYmlsaXRpZXMgPSB7CiAgICAgICAgICAgICBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlv
bkFsbG93ZWQoKSAvLyByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3By
b3RvY29sX3R5cGVzX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKaW5k
ZXggZDQzZDVhMTk2NTZkMGQxNWQ4OTA0MTI3ZmJhZjM5ZTVlYmQ0YWM5YS4uMDcwNGIzZTFlMGQx
ZGJiNTI4M2FiN2I2YWY2MTRiMTE5MjBiODE2NSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5
cGVzX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5CkBAIC0zNzAs
MTEgKzM3MCwxMSBAQCBkZWYgX2dlbmVyYXRlX2RlY2xhcmF0aW9uc19mb3JfZW51bV9jb252ZXJz
aW9uX21ldGhvZHMoc2VsZik6CiAgICAgICAgICAgICAnbmFtZXNwYWNlICVzIHsnICUgc2VsZi5o
ZWxwZXJzX25hbWVzcGFjZSgpLAogICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAndGVtcGxh
dGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4nLAotICAgICAgICAgICAgJ09wdGlvbmFsPFBy
b3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsn
LAorICAgICAgICAgICAgJ3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOycsCiAgICAgICAgIF0pKQogCiAgICAgICAg
IGRlZiByZXR1cm5fdHlwZV93aXRoX2V4cG9ydF9tYWNybyhjcHBfcHJvdG9jb2xfdHlwZSk6Ci0g
ICAgICAgICAgICBlbnVtX3JldHVybl90eXBlID0gJ09wdGlvbmFsPCVzPicgJSBjcHBfcHJvdG9j
b2xfdHlwZQorICAgICAgICAgICAgZW51bV9yZXR1cm5fdHlwZSA9ICdzdGQ6Om9wdGlvbmFsPCVz
PicgJSBjcHBfcHJvdG9jb2xfdHlwZQogICAgICAgICAgICAgcmVzdWx0X3Rlcm1zID0gW2VudW1f
cmV0dXJuX3R5cGVdCiAgICAgICAgICAgICBleHBvcnRfbWFjcm8gPSBzZWxmLm1vZGVsKCkuZnJh
bWV3b3JrLnNldHRpbmcoJ2V4cG9ydF9tYWNybycsIE5vbmUpCiAgICAgICAgICAgICBpZiBleHBv
cnRfbWFjcm8gaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1w
bGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKaW5k
ZXggNTdiODQyYmNmOTRlZGNiNzJlNjEzMzljNzExZDc2MzMyYmI1NTE3ZS4uN2JiYjkwMzI3YzQ2
YjhiOGI0NmJiMDYxMWZjNjY4NGRhZjQ5OWJjNiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5
cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weQpAQCAtOTcsNyArOTcsNyBAQCBkZWYgZ2VuZXJhdGVfY29udmVyc2lvbl9tZXRob2Rf
Ym9keShlbnVtX3R5cGUsIGNwcF9wcm90b2NvbF90eXBlKToKICAgICAgICAgICAgIGJvZHlfbGlu
ZXMgPSBbXQogICAgICAgICAgICAgYm9keV9saW5lcy5leHRlbmQoWwogICAgICAgICAgICAgICAg
ICd0ZW1wbGF0ZTw+JywKLSAgICAgICAgICAgICAgICAnT3B0aW9uYWw8JXM+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzwlcz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZyknICUgKGNwcF9w
cm90b2NvbF90eXBlLCBjcHBfcHJvdG9jb2xfdHlwZSksCisgICAgICAgICAgICAgICAgJ3N0ZDo6
b3B0aW9uYWw8JXM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzwlcz4oY29uc3QgU3RyaW5nJiBw
cm90b2NvbFN0cmluZyknICUgKGNwcF9wcm90b2NvbF90eXBlLCBjcHBfcHJvdG9jb2xfdHlwZSks
CiAgICAgICAgICAgICAgICAgJ3snLAogICAgICAgICAgICAgICAgICcgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0geycsCiAgICAgICAgICAgICBdKQpAQCAtMTEyLDcg
KzExMiw3IEBAIGRlZiBnZW5lcmF0ZV9jb252ZXJzaW9uX21ldGhvZF9ib2R5KGVudW1fdHlwZSwg
Y3BwX3Byb3RvY29sX3R5cGUpOgogICAgICAgICAgICAgICAgICcgICAgICAgIGlmIChwcm90b2Nv
bFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pJywKICAg
ICAgICAgICAgICAgICAnICAgICAgICAgICAgcmV0dXJuICglcyljb25zdGFudFZhbHVlc1tpXTsn
ICUgY3BwX3Byb3RvY29sX3R5cGUsCiAgICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAg
ICAgJyAgICByZXR1cm4gTnVsbG9wdDsnLAorICAgICAgICAgICAgICAgICcgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsnLAogICAgICAgICAgICAgICAgICd9JywKICAgICAgICAgICAgICAgICAnJywK
ICAgICAgICAgICAgIF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5k
ZXggZGYzMTAzZGNmMGUyNGZmNDZkNDRlYjcxMDExMzkxZjUxYWM4MGE5Yy4uNDQyZDVjYmZjYTEw
ZTI3YjEwYzA3NmRjOWMwMDAxMDYzZmUwNWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5
bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0
ZS5qc29uLXJlc3VsdApAQCAtNzIzLDExICs3MjMsMTEgQEAgcHVibGljOgogbmFtZXNwYWNlIFRl
c3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlv
bmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21h
aW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25h
bDxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAt
Nzk1LDcgKzc5NSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewog
CiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFs
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xv
cnM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0
IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25z
dGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpQcmltYXJ5Q29sb3JzOjpSZWQsCkBAIC04MDYsNyArODA2LDcgQEAgT3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzwKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3Rh
bnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMpY29uc3RhbnRWYWx1ZXNbaV07
CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0CmluZGV4IDRhZDE0NmE1YjVjZjg3NjhjMjY1YWE4OGQ0OWZkYzFiMTA3NDI5
Y2EuLmViMTY4MjA2NjIwMmY5OTc0NWM4ODMwOTE0YzhmZmVlZGE4ZjM4ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdApAQCAtNjI0LDExICs2MjQsMTEgQEAgcHVibGljOgogbmFtZXNwYWNlIFRlc3RIZWxwZXJz
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3Rv
Y29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0
ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIHRlbXBs
YXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0
b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPihjb25z
dCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNjk2LDcgKzY5
Niw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVt
cyBpbiB0aGUgJ0RhdGFiYXNlJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0
IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+KGNvbnN0IFN0cmluZyYg
cHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVl
c1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzOjpSZWQsCkBAIC03MDcsNyArNzA3LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0
cmluZzwKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVz
W2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCAz
ZTQ0ZmUxMTIzNGYyNjc5OGRlMzc0ODYwM2QyYzZiMGViZjJlZGIzLi5lMDMzNjQyNGI2ZTFhMmFk
MWM3YTM1ZjRkZjdmZTUxODg0YmU4NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CkBAIC00NzEsMTEgKzQ3MSwxMSBAQCBlbnVt
IGNsYXNzIFR5cGVEb21haW5FbnVtIHsKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBl
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFs
PFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKIAogLy8gRW51bXMgaW4gdGhlICdUeXBlRG9tYWluJyBEb21haW4KIHRlbXBsYXRlPD4KLU9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6
VHlwZURvbWFpbkVudW0+KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6
OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bT4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlR5cGVEb21haW46OlR5cGVEb21haW5FbnVtPihj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNTQ1LDcg
KzU0NSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBF
bnVtcyBpbiB0aGUgJ1R5cGVEb21haW4nIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWlu
RW51bT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKK3N0ZDo6b3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW0+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51
bT4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpSW5zcGVjdG9yOjpQcm90
b2NvbDo6VHlwZURvbWFpbjo6VHlwZURvbWFpbkVudW06OlNoYXJlZCwKQEAgLTU1Nyw3ICs1NTcs
NyBAQCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWlu
RW51bT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaQogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcg
PT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAg
cmV0dXJuIChJbnNwZWN0b3I6OlByb3RvY29sOjpUeXBlRG9tYWluOjpUeXBlRG9tYWluRW51bSlj
b25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVy
cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQK
aW5kZXggMTQ1YTA4NjQ5M2YxZGVhMDJlOWU2M2EwOTNmM2Y3ODhmMTczNTM5Mi4uMTVjYTZhYzE2
ZWIzNDU2NmRmODdhODE0MTY5YzkyMDFlZmNjMGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlv
bmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1z
ZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC00MTMsMTEgKzQxMywxMSBAQCBwdWJsaWM6CiBuYW1lc3Bh
Y2UgVGVzdEhlbHBlcnMgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm90b2NvbEVudW1UeXBlPgot
T3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBwYXJzZUVudW1WYWx1
ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKIC8vIEVudW1zIGluIHRoZSAnUnVudGltZScg
RG9tYWluCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpLZXlQYXRoOjpUeXBlPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlv
bmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51
bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpU
eXBlPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKIApAQCAt
NDgxLDcgKzQ4MSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewog
CiAvLyBFbnVtcyBpbiB0aGUgJ1J1bnRpbWUnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4gcGFyc2VFbnVtVmFs
dWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+
KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmlu
ZzxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpLZXlQYXRoOjpUeXBlPihjb25zdCBTdHJp
bmcmIHByb3RvY29sU3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRW
YWx1ZXNbXSA9IHsKICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpLZXlQYXRoOjpUeXBlOjpOdWxsLApAQCAtNDkyLDcgKzQ5Miw3IEBAIE9wdGlvbmFsPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJCiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3Zh
bHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGUpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDViMjU0ZTBjODM3ZWZkNmExYTk0MTQw
ODk3YmEzYzFlMmVlNjVhOWMuLjRkZmMxZjJiNjNmYTUxMmY5YTZkYjIxZDQ5ODdlNDU3ZDhmMDkx
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtMzYzLDExICszNjMs
MTEgQEAgZW51bSBjbGFzcyBSZWFzb24gewogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgUHJvdG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5
cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9u
YWw8UHJvdG9jb2xFbnVtVHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOwogCiAvLyBFbnVtcyBpbiB0aGUgJ0RlYnVnZ2VyJyBEb21haW4KIHRlbXBsYXRlPD4KLU9w
dGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25z
dCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OlJlYXNvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpSZWFzb24+KGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVs
cGVycwogCkBAIC00MzEsNyArNDMxLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGlu
dCBjb2RlKSB7CiAKIC8vIEVudW1zIGluIHRoZSAnRGVidWdnZXInIERvbWFpbgogdGVtcGxhdGU8
PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OlJlYXNvbj4gcGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+
KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uPihjb25zdCBTdHJpbmcmIHByb3RvY29s
U3RyaW5nKQogewogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY29uc3RhbnRWYWx1ZXNbXSA9IHsK
ICAgICAgICAgKHNpemVfdClJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6UmVhc29uOjpE
aWVkLApAQCAtNDQyLDcgKzQ0Miw3IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpSZWFzb24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0CiAgICAgICAg
IGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVl
c1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpSZWFzb24pY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVu
dW0tdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3Vs
dAppbmRleCAyZGJkYTc4NzkwYTZjNmYwZmEyMDk5ZDBmYzI2NGFlNzcxNDcxNjZkLi40OWE4NDQw
ZjgzNGFiMjM4ZGI1YWJjNGZkMDM4MzJlYWYwOTA4MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBl
Lmpzb24tcmVzdWx0CkBAIC0zNjAsMTMgKzM2MCwxMyBAQCBlbnVtIGNsYXNzIFR3b0xlZ2dlZEFu
aW1hbHMgewogbmFtZXNwYWNlIFRlc3RIZWxwZXJzIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJv
dG9jb2xFbnVtVHlwZT4KLU9wdGlvbmFsPFByb3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8UHJvdG9jb2xFbnVtVHlw
ZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAvLyBFbnVtcyBp
biB0aGUgJ1J1bnRpbWUnIERvbWFpbgogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpGYXJtQW5pbWFscz4oY29uc3QgU3RyaW5nJik7
CitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxz
PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6
RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYpOwogdGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+
KGNvbnN0IFN0cmluZyYpOworc3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpUd29MZWdnZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCiAKQEAgLTQzNCw3ICs0MzQsNyBAQCBTdHJpbmcg
Z2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogLy8gRW51bXMgaW4gdGhlICdSdW50
aW1lJyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OkZhcm1BbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJp
bmcpCitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1Bbmlt
YWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6RmFybUFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUlu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzOjpQaWdzLApAQCAtNDQ2LDEx
ICs0NDYsMTEgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFu
aW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnMKICAgICAgICAgaWYgKHByb3RvY29s
U3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAg
ICAgICAgIHJldHVybiAoSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHMp
Y29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+Ci1PcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpUd29MZWdnZWRBbmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFscz4oY29uc3QgU3RyaW5n
JiBwcm90b2NvbFN0cmluZykKK3N0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6VHdvTGVnZ2VkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+KGNvbnN0IFN0cmluZyYgcHJv
dG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjb25zdGFudFZhbHVlc1td
ID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xl
Z2dlZEFuaW1hbHM6OkR1Y2tzLApAQCAtNDYyLDcgKzQ2Miw3IEBAIE9wdGlvbmFsPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJv
bVN0cmluCiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVl
c1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggYjkwNGFmOGRlMmYxYjRlN2NkZWQ4
MDJhM2RkZjViYTExZWVlYWIxMy4uNWJlOTczMzVmZTg2MDQ1NmNmMWE2NjMxY2VkZWRlZjdhYjk5
ZTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTU4MiwxMyAr
NTgyLDEzIEBAIHN0YXRpYyB2b2lkIGFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqKTsKIG5hbWVzcGFjZSBUZXN0SGVscGVycyB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFByb3RvY29sRW51bVR5cGU+Ci1PcHRpb25hbDxQcm90b2NvbEVudW1UeXBlPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFBy
b3RvY29sRW51bVR5cGU+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsK
IAogLy8gRW51bXMgaW4gdGhlICdUZXN0JyBEb21haW4KIHRlbXBsYXRlPD4KLU9wdGlvbmFsPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVG
cm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4oY29u
c3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVu
Y2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4oY29uc3QgU3RyaW5nJik7CiB0ZW1wbGF0ZTw+Ci1P
cHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFs
cz4oY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRl
c3Q6OkNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1l
c3BhY2UgVGVzdEhlbHBlcnMKIApAQCAtNjU2LDcgKzY1Niw3IEBAIFN0cmluZyBnZXRFbnVtQ29u
c3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAvLyBFbnVtcyBpbiB0aGUgJ1Rlc3QnIERvbWFpbgog
dGVtcGxhdGU8PgotT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRB
bmltYWxzPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVz
dDo6VW5jYXN0ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQorc3RkOjpv
cHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFuaW1hbHM+IHBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpVbmNhc3RlZEFu
aW1hbHM+KGNvbnN0IFN0cmluZyYgcHJvdG9jb2xTdHJpbmcpCiB7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBjb25zdGFudFZhbHVlc1tdID0gewogICAgICAgICAoc2l6ZV90KUluc3BlY3Rvcjo6
UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFsczo6UGlncywKQEAgLTY2OCwxMSArNjY4LDEx
IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscz4g
cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluCiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9
PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICBy
ZXR1cm4gKEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlVuY2FzdGVkQW5pbWFscyljb25zdGFu
dFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHRlbXBsYXRlPD4KLU9wdGlvbmFsPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6
OkNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPihjb25zdCBTdHJpbmcmIHByb3RvY29sU3RyaW5nKQor
c3RkOjpvcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVk
QW5pbWFscz4oY29uc3QgU3RyaW5nJiBwcm90b2NvbFN0cmluZykKIHsKICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGNvbnN0YW50VmFsdWVzW10gPSB7CiAgICAgICAgIChzaXplX3QpSW5zcGVjdG9y
OjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFsczo6RHVja3MsCkBAIC02ODQsNyArNjg0LDcg
QEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscz4gcGFy
c2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3AKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09
IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJl
dHVybiAoSW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6Q2FzdGVkQW5pbWFscyljb25zdGFudFZh
bHVlc1tpXTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAppbmRleCBjOGZiMjVhMjg1ZTQ0
NDk2ZTMwNWJkZjNjODhmYThiYWUwMjMwMmMwLi43NWM3MGM3ZjdjODJhNDg5NGU5MDE1OWFiYTli
Y2YwMGE3NGEyNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaApAQCAtMTk2LDcg
KzE5Niw3IEBAIGNsYXNzIEpJVENvZGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SklU
Q29kZT4gewogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB2aXJ0dWFsIFJlZ2lzdGVyU2V0IGxpdmVS
ZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKENvZGVCbG9jayos
IENhbGxTaXRlSW5kZXgpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBD
KENvZGVCbG9jayosIHZvaWQqIHBjKSB7IFVOVVNFRF9QQVJBTShwYyk7IHJldHVybiBOdWxsb3B0
OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxv
Y2sqLCB2b2lkKiBwYykgeyBVTlVTRURfUEFSQU0ocGMpOyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURGl2R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2
R2VuZXJhdG9yLmNwcAppbmRleCBiZTkyZDNmOTZlMWJjODhkNjEzNjIyYzVmZjVjYmE5MGIzZjQ4
MTUyLi5hNWRiN2UxYjI2ZTIzNGJkMWRkMjE4MTNiNWVlZTI5MjhmOWI0MjkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpdkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgSklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0KQogICAgIGxvYWRPcGVyYW5kKGppdCwgbV9sZWZ0T3BlcmFuZCwgbV9sZWZ0LCBtX2xlZnRG
UFIpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBPcHRpb25hbDxkb3VibGU+IHNhZmVSZWNp
cHJvY2FsOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBzYWZlUmVjaXByb2NhbDsKICAgICBp
ZiAobV9yaWdodE9wZXJhbmQuaXNDb25zdCgpKSB7CiAgICAgICAgIGRvdWJsZSBjb25zdGFudCA9
IG1fcmlnaHRPcGVyYW5kLmFzQ29uc3ROdW1iZXIoKTsKICAgICAgICAgc2FmZVJlY2lwcm9jYWwg
PSBzYWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoY29uc3RhbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZjE3YTZjMTc2MzA1NTczZThkM2E2
NWEzMjliM2RhYWU1YmM0MjY4YS4uMTJhNTZmMzgxNWZiZWEwMGExNjI4ZWRkODcyMTZlZWVmZTAx
OTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBA
IC01NzEsNyArNTcxLDcgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBKU1ZhbHVlIHMKICAgICBhdXRvIHByb3Bl
cnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoY2FsbEZyYW1lKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBp
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpIHsKICAgICAgICAgYnlWYWxJbmZv
LT50b29rU2xvd1BhdGggPSB0cnVlOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRl
eChjYWxsRnJhbWUsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENU
b0NvZGVPcmlnaW5NYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9y
aWdpbk1hcC5jcHAKaW5kZXggYjkzZTJjNjJjMTk3OTIwOWE5YzBmMmY5MmE3YmM1NmYyMDFlY2My
Mi4uNDEwMDA5YWIwMjVjYzBhOGQ0MjhjYzdjODViMjlmMzk1YjNhMWIyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKQEAgLTI0NiwxMSAr
MjQ2LDExIEBAIGRvdWJsZSBQQ1RvQ29kZU9yaWdpbk1hcDo6bWVtb3J5U2l6ZSgpCiAgICAgcmV0
dXJuIHNpemU7CiB9CiAKLU9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2RlT3JpZ2luTWFwOjpm
aW5kUEModm9pZCogcGMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2Rl
T3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMpIGNvbnN0CiB7CiAgICAgdWludHB0cl90IHBjQXNJ
bnQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwYyk7CiAgICAgaWYgKCEobV9wY1JhbmdlU3Rh
cnQgPD0gcGNBc0ludCAmJiBwY0FzSW50IDw9IG1fcGNSYW5nZUVuZCkpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludHB0cl90
IGN1cnJlbnRQQyA9IDA7CiAgICAgQ29kZU9yaWdpbiBjdXJyZW50Q29kZU9yaWdpbigwLCBudWxs
cHRyKTsKQEAgLTI5MywxMiArMjkzLDEyIEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+IFBDVG9Db2Rl
T3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMpIGNvbnN0CiAgICAgICAgICAgICAvLyBXZSBzdWJ0
cmFjdCAxIGJlY2F1c2Ugd2UgZ2VuZXJhdGUgZW5kIHBvaW50cyBpbmNsdXNpdmVseSBpbiB0aGlz
IHRhYmxlLCBldmVuIHRob3VnaCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiByYW5nZXMgb2YgdGhlIGZv
cm06IFtwcmV2aW91c1BDLCBjdXJyZW50UEMpCiAgICAgICAgICAgICB1aW50cHRyX3QgZW5kT2ZS
YW5nZSA9IGN1cnJlbnRQQyAtIDE7CiAgICAgICAgICAgICBpZiAoc3RhcnRPZlJhbmdlIDw9IHBj
QXNJbnQgJiYgcGNBc0ludCA8PSBlbmRPZlJhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybiBP
cHRpb25hbDxDb2RlT3JpZ2luPihwcmV2aW91c09yaWdpbik7IC8vIFdlIHJldHVybiBwcmV2aW91
c09yaWdpbiBoZXJlIGJlY2F1c2UgQ29kZU9yaWdpbidzIGFyZSBtYXBwZWQgdG8gdGhlIHN0YXJ0
VmFsdWUgb2YgdGhlIHJhbmdlLgorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFs
PENvZGVPcmlnaW4+KHByZXZpb3VzT3JpZ2luKTsgLy8gV2UgcmV0dXJuIHByZXZpb3VzT3JpZ2lu
IGhlcmUgYmVjYXVzZSBDb2RlT3JpZ2luJ3MgYXJlIG1hcHBlZCB0byB0aGUgc3RhcnRWYWx1ZSBv
ZiB0aGUgcmFuZ2UuCiAgICAgICAgIH0KICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
Q1RvQ29kZU9yaWdpbk1hcC5oCmluZGV4IDFjODBlZDg2ZWNjZjY1NzFjMjFmMWJlYWMyYTY1Yjhk
ODBlNDJkM2UuLmMwMWM0NDFhNTgxODA5Mzk5YjM5OTA3YWY0ODkyZGJhNDMxZGNlZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmgKQEAgLTgzLDcg
KzgzLDcgQEAgY2xhc3MgUENUb0NvZGVPcmlnaW5NYXAgewogICAgIFBDVG9Db2RlT3JpZ2luTWFw
KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciYmLCBMaW5rQnVmZmVyJik7CiAgICAgflBDVG9Db2Rl
T3JpZ2luTWFwKCk7CiAKLSAgICBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEModm9pZCogcGMp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKHZvaWQqIHBjKSBj
b25zdDsKIAogICAgIGRvdWJsZSBtZW1vcnlTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggZmU5OWVkYWRmOTQyNmUxOTYwMDA0MzI4NDBmYTYzYzE0NTBjNDA5ZC4uZjdlNjAzNWIzNWY5
OTM2MGY3OTFlYjkyMTliZDVmN2I4ZWI4NmMzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQy
MSw3ICs0MjEsNyBAQCBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpIHsK
ICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udERlbGV0ZSB8IERvbnRF
bnVtLCBqc051bWJlcih0aGlzT2JqZWN0LT5tX3ZlY3RvcltpbmRleC52YWx1ZSgpXSkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCAwZDU2ZDFkMmZiMzA4MzkyMDcxYzI3YzA2OTVhOGRjNDgw
ZWYwNzI0Li5kMzZiYjI4NDdmZGE1MWQ5YTY1ZGQ2MzhmZDIzMTM0MmJmMTNkYTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTg5Miw3
ICs4OTIsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJl
Y3QpCiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBM
TElOVF9FTkQoKTsKIAotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgo
ZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdElu
ZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNl
IHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAK
aW5kZXggYzIwYWE4NGZkZDAzNjliNmE4YTZmZTA1NjBhM2Y2ODNmZTNhOWM5OS4uYTdiMTgwYjEx
ZTYxM2Q4YmI3MjViOTJjY2E0YmFlNjhlNDJmNmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBN
b2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVBy
b2dyYW1Ob2RlLCBjb25zdAogICAgIC8vIEluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZy4KICAg
ICAvLyBpbXBvcnQgYSBmcm9tICJtb2QiCiAgICAgLy8gZXhwb3J0IHsgYSB9Ci0gICAgT3B0aW9u
YWw8SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gbW9k
dWxlUmVjb3JkKCktPnRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5nZXQoKSk7CisgICAgc3Rk
OjpvcHRpb25hbDxKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50
cnkgPSBtb2R1bGVSZWNvcmQoKS0+dHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmdldCgpKTsK
ICAgICBBU1NFUlQob3B0aW9uYWxJbXBvcnRFbnRyeSk7CiAgICAgY29uc3QgSlNNb2R1bGVSZWNv
cmQ6OkltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OwogICAg
IGZvciAoYXV0byYgZXhwb3J0TmFtZSA6IG1vZHVsZVByb2dyYW1Ob2RlLm1vZHVsZVNjb3BlRGF0
YSgpLmV4cG9ydGVkQmluZGluZ3MoKS5nZXQobG9jYWxOYW1lLmdldCgpKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaAppbmRleCA5ODExYTM4
MjNkYmY4ZjEyZjIyYmNmN2IyNDA3MmVmOWMzNGZlZmQ5Li5hODEyZDBlMjZlMDg1MGRkZDlmZGZm
NzBmYWI4NjA5OGE5OWNjMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25jdXJyZW50SlNMb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uY3VycmVudEpTTG9jay5oCkBAIC0xMDIsNyArMTAyLDcgQEAgY2xhc3MgQ29uY3VycmVu
dEpTTG9ja2VyIDogcHVibGljIENvbmN1cnJlbnRKU0xvY2tlckJhc2UgewogICAgIENvbmN1cnJl
bnRKU0xvY2tlcihDb25jdXJyZW50SlNMb2NrJiBsb2NrYWJsZSkKICAgICAgICAgOiBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlKGxvY2thYmxlKQogI2lmIEVOQUJMRShDT05DVVJSRU5UX0pTKSAmJiAh
ZGVmaW5lZChOREVCVUcpCi0gICAgICAgICwgbV9kaXNhbGxvd0dDKEluUGxhY2UpCisgICAgICAg
ICwgbV9kaXNhbGxvd0dDKHN0ZDo6aW5fcGxhY2UpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAt
MTEwLDcgKzExMCw3IEBAIGNsYXNzIENvbmN1cnJlbnRKU0xvY2tlciA6IHB1YmxpYyBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIoQ29uY3VycmVudEpTTG9j
ayogbG9ja2FibGUpCiAgICAgICAgIDogQ29uY3VycmVudEpTTG9ja2VyQmFzZShsb2NrYWJsZSkK
ICNpZiBFTkFCTEUoQ09OQ1VSUkVOVF9KUykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgICAgICAs
IG1fZGlzYWxsb3dHQyhJblBsYWNlKQorICAgICAgICAsIG1fZGlzYWxsb3dHQyhzdGQ6OmluX3Bs
YWNlKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBDb25j
dXJyZW50SlNMb2NrZXIgOiBwdWJsaWMgQ29uY3VycmVudEpTTG9ja2VyQmFzZSB7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeVRhZykKICAgICAgICAgOiBDb25jdXJy
ZW50SlNMb2NrZXJCYXNlKE5vTG9ja2luZ05lY2Vzc2FyeSkKICNpZiBFTkFCTEUoQ09OQ1VSUkVO
VF9KUykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgICAgICAsIG1fZGlzYWxsb3dHQyhOdWxsb3B0
KQorICAgICAgICAsIG1fZGlzYWxsb3dHQyhzdGQ6Om51bGxvcHQpCiAjZW5kaWYKICAgICB7CiAg
ICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIENvbmN1cnJlbnRKU0xvY2tlciA6IHB1Ymxp
YyBDb25jdXJyZW50SlNMb2NrZXJCYXNlIHsKIAogI2lmIEVOQUJMRShDT05DVVJSRU5UX0pTKSAm
JiAhZGVmaW5lZChOREVCVUcpCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPERpc2FsbG93R0M+IG1f
ZGlzYWxsb3dHQzsKKyAgICBzdGQ6Om9wdGlvbmFsPERpc2FsbG93R0M+IG1fZGlzYWxsb3dHQzsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAppbmRleCBjMmFlZTcxNjk0YTcwMTQ5MTU4N2Yw
YjllMDRhYjE4MjA0OGY3ZTg0Li5kN2UzYjkxMzMzMzU3MjVhNzRhMzM2NDA0ZDY2Mjk3MTEwMGQ0
NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZp
bmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApAQCAtOTksMTAgKzk5LDEwIEBAIGNsYXNzIERlZmluZVBy
b3BlcnR5QXR0cmlidXRlcyB7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFi
bGVTaGlmdCkgIT0gTWl4ZWRUcmlTdGF0ZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiB3
cml0YWJsZSgpIGNvbnN0CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoIWhhc1dyaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVTaGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgIH0K
IApAQCAtMTExLDEwICsxMTEsMTAgQEAgY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsK
ICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgIT0gTWl4
ZWRUcmlTdGF0ZTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxib29sPiBjb25maWd1cmFibGUoKSBj
b25zdAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29uZmlndXJhYmxlKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmICghaGFzQ29uZmlndXJhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBl
eHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpID09IFRydWVUcmlTdGF0ZTsKICAgICB9
CiAKQEAgLTEyMywxMCArMTIzLDEwIEBAIGNsYXNzIERlZmluZVByb3BlcnR5QXR0cmlidXRlcyB7
CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAhPSBNaXhl
ZFRyaVN0YXRlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGJvb2w+IGVudW1lcmFibGUoKSBjb25z
dAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW51bWVyYWJsZSgpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIWhhc0VudW1lcmFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RU
cmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRydWVUcmlTdGF0ZTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5s
aW5lcy5oCmluZGV4IGEzMDFhMzkwOTQ5MDI3OWI2NTBiY2MyZDBjMzZlMDJiNWQ0MzFjMTIuLmVk
ZDY0Nzc1NWQ1MzRkNDgwMmY5M2JlOWQzZGUwNDhlYmMwYjlkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApA
QCAtNTEsNyArNTEsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZQogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQp
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVudCk7
CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmNhbkFjY2Vzc0luZGV4UXVpY2tseShpbmRl
eC52YWx1ZSgpKSkgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIE5vbmUsIHRo
aXNPYmplY3QtPmdldEluZGV4UXVpY2tseShpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlCiAgICAg
aWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCiAgICAg
ICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgaWRlbnQsIHZhbHVl
LCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAgICAKLSAgICBPcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwogICAgIGlmIChpbmRleCAm
JiB0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgudmFsdWUoKSkpIHsKICAg
ICAgICAgdGhpc09iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpbmRleC52YWx1ZSgpLCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgR2VuZXJp
Y0FyZ3VtZW50czxUeXBlPjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlCiAgICAgICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCkpCiAgICAgICAgIHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsK
ICAgICAKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwog
ICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkoaW5kZXgu
dmFsdWUoKSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+b3ZlcnJpZGVBcmd1bWVudCh2bSwgaW5k
ZXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg2LDcgKzE4Niw3IEBAIGJv
b2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5nc0lm
TmVjZXNzYXJ5KHZtKTsKICAgICBlbHNlIHsKLSAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9w
dGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwogICAgICAgICBpZiAo
b3B0aW9uYWxJbmRleCAmJiB0aGlzT2JqZWN0LT5jYW5BY2Nlc3NJbmRleFF1aWNrbHkob3B0aW9u
YWxJbmRleC52YWx1ZSgpKSkgewogICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBvcHRpb25h
bEluZGV4LnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRl
c2NyaXB0b3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGFzT3duUHJvcGVydHlDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFz
T3duUHJvcGVydHlDYWNoZS5oCmluZGV4IDI5YTU3ZTYxY2IwNzE3NTBhYjk4OTM4YzgzOTZjNzRl
M2FlNjVkNmIuLjFiYmU2ZThjNmY4YmRjOTU5YzVkMzVkZGY1MmVkYWZkOTIyYzE1NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hl
LmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgSGFzT3duUHJvcGVydHlDYWNoZSB7CiAgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSArIGltcGwtPmhhc2go
KTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPGJvb2w+IGdldChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BOYW1lKQorICAgIEFMV0FZU19JTkxJTkUg
c3RkOjpvcHRpb25hbDxib29sPiBnZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFt
ZSBwcm9wTmFtZSkKICAgICB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gcHJv
cE5hbWUudWlkKCk7CiAgICAgICAgIFN0cnVjdHVyZUlEIGlkID0gc3RydWN0dXJlLT5pZCgpOwpA
QCAtOTIsNyArOTIsNyBAQCBjbGFzcyBIYXNPd25Qcm9wZXJ0eUNhY2hlIHsKICAgICAgICAgRW50
cnkmIGVudHJ5ID0gYml0d2lzZV9jYXN0PEVudHJ5Kj4odGhpcylbaW5kZXhdOwogICAgICAgICBp
ZiAoZW50cnkuc3RydWN0dXJlSUQgPT0gaWQgJiYgZW50cnkuaW1wbC5nZXQoKSA9PSBpbXBsKQog
ICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnJlc3VsdDsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHRyeUFkZChWTSYgdm0sIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BOYW1lLCBib29sIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCmluZGV4IDNhOWQyZDcwNzY5ZjFmOWE1NjMyZWZm
ZDZlYmQ3YzViMWUwZTViZGIuLjViZDAxMTcyMjBjZmE3YmY2NzQxMTZkZjY0OGI4OGFiODUzMWMy
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaApAQCAt
MjUzLDE2ICsyNTMsMTYgQEAgQUxXQVlTX0lOTElORSB1aW50MzJfdCBqc01hcEhhc2goRXhlY1N0
YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHdhbmdzSW50NjRI
YXNoKHJhd1ZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gY29u
Y3VycmVudEpTTWFwSGFzaChKU1ZhbHVlIGtleSkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gY29uY3VycmVudEpTTWFwSGFzaChKU1ZhbHVlIGtleSkKIHsKICAgICBrZXkg
PSBub3JtYWxpemVNYXBLZXkoa2V5KTsKICAgICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKICAgICAg
ICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGtleSk7CiAgICAgICAgIGlmIChzdHJpbmct
Pmxlbmd0aCgpID4gMTAgKiAxMDI0KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBp
bXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKTsKICAgICAgICAgaWYgKCFpbXBsKQotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm4gaW1wbC0+Y29uY3VycmVudEhhc2goKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCA1ODFiYTQyNGMyOTVk
NmRlMTBjNGRkYmFiYzNiYTZjODg3NTA5ZmE3Li4yNWUxNmFlMzQxN2Q2ZDAyNjlmZjRmNzM2MWRk
OGEyNmYyNDNjODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCkBAIC0zOCw0NiArMzgsNDYgQEAgQUxXQVlTX0lOTElORSBib29sIGlzSW5kZXgodWludDMy
X3QgaW5kZXgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLUFMV0FZU19JTkxJ
TkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCkKK0FMV0FZU19JTkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gcGFyc2VJbmRleChjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQogewogICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCiAgICAgaWYgKCFs
ZW5ndGgpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gR2V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIsIHR1cm5pbmcgaXQgaW50byBh
IGRpZ2l0LgogICAgIHVpbnQzMl90IHZhbHVlID0gY2hhcmFjdGVyc1swXSAtICcwJzsKICAgICBp
ZiAodmFsdWUgPiA5KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIENoZWNrIGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUgZmly
c3QgY2hhcmFjaGVyIGlzIDAsIHRoZW4gdGhlCiAgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJpbmcg
bXVzdCBiZSBvbmUgLSBlLmcuICIwNDIiIGlzIG5vdCBlcXVhbCB0byAiNDIiLgogICAgIGlmICgh
dmFsdWUgJiYgbGVuZ3RoID4gMSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB3aGlsZSAoLS1sZW5ndGgpIHsKICAgICAgICAgLy8g
TXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0
cy4KICAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
dmFsdWUgKj0gMTA7CiAKICAgICAgICAgLy8gR2V0IHRoZSBuZXh0IGNoYXJhY3RlciwgdHVybmlu
ZyBpdCBpbnRvIGEgZGlnaXQuCiAgICAgICAgIHVpbnQzMl90IG5ld1ZhbHVlID0gKigrK2NoYXJh
Y3RlcnMpIC0gJzAnOwogICAgICAgICBpZiAobmV3VmFsdWUgPiA5KQotICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBjaGVja2luZyBmb3Igb3ZlcmZsb3cgb3V0IG9mIDMy
IGJpdHMuCiAgICAgICAgIG5ld1ZhbHVlICs9IHZhbHVlOwogICAgICAgICBpZiAobmV3VmFsdWUg
PCB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsKICAgICB9CiAKICAgICBp
ZiAoIWlzSW5kZXgodmFsdWUpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLUFMV0FZU19JTkxJTkUg
T3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoU3RyaW5nSW1wbCYgaW1wbCkKK0FMV0FZU19J
TkxJTkUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChTdHJpbmdJbXBsJiBpbXBs
KQogewogICAgIGlmIChpbXBsLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gcGFyc2VJbmRleChp
bXBsLmNoYXJhY3RlcnM4KCksIGltcGwubGVuZ3RoKCkpOwpAQCAtMjcxLDEzICsyNzEsMTMgQEAg
aW5saW5lIGJvb2wgSWRlbnRpZmllcjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwgY29uc3Qg
VUNoYXIqIHMsIHVuc2lnbmVkIGxlbmcKICAgICByZXR1cm4gV1RGOjplcXVhbChyLCBzLCBsZW5n
dGgpOwogfQogCi1BTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCitBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IHBhcnNlSW5kZXgoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAg
ICBhdXRvIHVpZCA9IGlkZW50aWZpZXIuaW1wbCgpOwogICAgIGlmICghdWlkKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAodWlk
LT5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcGFyc2VJbmRleCgqdWlkKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBkNzQ4NDM5OGFiMWIwMjAwNDk5
MmNhYzRkOGM2MjYxYmM2NTgzZGJiLi41MTg3MjI2OTJkMjA4MmRlODQzYTdlYTlmOWJjYzViMjAx
YWQ3MzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAt
MjA4LDcgKzIwOCw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKIAogICAgIC8vIDQuIEVsc2Ug
aWYgUCBpcyBhbiBhcnJheSBpbmRleCAoMTUuNCksIHRoZW4KICAgICAvLyBhLiBMZXQgaW5kZXgg
YmUgVG9VaW50MzIoUCkuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBvcHRpb25hbEluZGV4
ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgLy8gYi4gUmVqZWN0IGlmIGluZGV4ID49IG9sZExlbiBhbmQgb2xkTGVuRGVzYy5bW1dyaXRh
YmxlXV0gaXMgZmFsc2UuCiAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gb3B0aW9uYWxJbmRleC52
YWx1ZSgpOwogICAgICAgICAvLyBGSVhNRTogTm90aGluZyBwcmV2ZW50cyB0aGlzIGZyb20gYmVp
bmcgY2FsbGVkIG9uIGEgUnVudGltZUFycmF5LCBhbmQgdGhlIGxlbmd0aCBmdW5jdGlvbiB3aWxs
IGFsd2F5cyByZXR1cm4gMCBpbiB0aGF0IGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGQwMWE3NzkxYTNjZjRmYTdkODMyY2I0YTUyN2Vi
NGIzZTJlYzEwZmEuLjFmOGM2ZDU5MDYzYzA1MzUxZGJjYzA4Y2E0NDJjMGFiN2ZkNmNiOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC03Niwx
MCArNzYsMTAgQEAgZG91YmxlIEpTVmFsdWU6OnRvTnVtYmVyU2xvd0Nhc2UoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogICAgIHJldHVybiBpc1VuZGVmaW5lZCgpID8gUE5hTiA6IDA7IC8vIG51bGwg
YW5kIGZhbHNlIGJvdGggY29udmVydCB0byAwLgogfQogCi1PcHRpb25hbDxkb3VibGU+IEpTVmFs
dWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
SlNWYWx1ZTo6dG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3QKIHsKICAgICBpZiAoaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGFzTnVtYmVyKCk7CiAgICAg
aWYgKGlzQm9vbGVhbigpKQpAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxkb3VibGU+IEpTVmFs
dWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBQTmFOOwog
ICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogSlNPYmplY3QqIEpTVmFsdWU6OnRvT2Jq
ZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSBjb25zdApAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlQnlJ
bmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAK
ICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUg
cHJvdG90eXBlIGNoYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmgKaW5kZXggZDQwYzNmYzQ3ZDA5MGMzYzBmYzZiMmIwYjkxZTA1YTY1OWVhMDNhNi4uODgwOWZk
Y2IxNGZhYjc1NDQwNWRjOWE5MmYyYzJlOTljNGUxMTNiZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjUxLDcgKzI1MSw3IEBAIGNsYXNzIEpTVmFs
dWUgewogICAgIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUqKSBjb25zdDsKIAogICAgIC8vIHRv
TnVtYmVyIGNvbnZlcnNpb24gaWYgaXQgY2FuIGJlIGRvbmUgd2l0aG91dCBzaWRlIGVmZmVjdHMu
Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG9OdW1iZXJGcm9tUHJpbWl0aXZlKCkgY29uc3Q7CiAK
ICAgICBKU1N0cmluZyogdG9TdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7IC8vIE9uIGV4Y2VwdGlv
biwgdGhpcyByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAgSlNTdHJpbmcqIHRvU3RyaW5n
T3JOdWxsKEV4ZWNTdGF0ZSopIGNvbnN0OyAvLyBPbiBleGNlcHRpb24sIHRoaXMgcmV0dXJucyBu
dWxsLCB0byBtYWtlIGV4Y2VwdGlvbiBjaGVja3MgZmFzdGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXgg
MzU1MzkwZDY1NzJmMTAwZGI2Yzc1NzQzZjMwMjllZGExYjcwODVjYS4uOWNjMDVmYWQ0YzFjZTBh
MGEzMmUzNWNhYWUwYjlkZDViYzU5OGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0xODksNyArMTg5
LDcgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1ZmZl
clZpZXcgewogCiAgICAgc3RhdGljIEVsZW1lbnRUeXBlIHRvQWRhcHRvck5hdGl2ZUZyb21WYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9t
VmFsdWU8QWRhcHRvcj4oZXhlYywganNWYWx1ZSk7IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxF
bGVtZW50VHlwZT4gdG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFs
dWUganNWYWx1ZSkgeyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRh
cHRvcj4oanNWYWx1ZSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxFbGVtZW50VHlwZT4g
dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUganNWYWx1ZSkg
eyByZXR1cm4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb248QWRhcHRvcj4oanNWYWx1
ZSk7IH0KIAogICAgIHZvaWQgc29ydCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggY2IyYjVlZGJhMjBlYzc0OTZkOTdkYzE2ZTRj
Njc0YjA3ODE1YWViZi4uNjgyNWZmZGUwOTVmNjE0NjJjYzM5ZmU2OGMzN2Y4M2ZmMzk5Yzg1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0x
MTQsNyArMTE0LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdGcm9tSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHIKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVmlld0NsYXNzPgotaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEVuY29kZWRKU1ZhbHVlIGZpcnN0QXJndW1lbnQsIHVuc2lnbmVkIG9mZnNldCwgT3B0aW9u
YWw8dW5zaWduZWQ+IGxlbmd0aE9wdCkKK2lubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNpZ25lZCBvZmZzZXQs
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aE9wdCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIz
MSw3ICsyMzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBKU1ZhbHVlIGZpcnN0VmFs
dWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAw
OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGggPSBOdWxsb3B0OworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU0FycmF5QnVmZmVyKj4oZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7CiAgICAg
ICAgIG9mZnNldCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW5kZXgoZXhlYywgImJ5
dGVPZmZzZXQiKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDM2N2IxMzUxZTQ3ZGE4
ZDI1ODA3ZmU1YmM4MWNiMTQ0NTQ5MjJhNGYuLjcwOGM1MmM0NjEzZGM2MmY3MWUyNTZiYjBiOTRj
ZTBiMjY3MDQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zNDUsNyArMzQ1
LDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0T3duUHJvcGVy
dHlTbG90KAogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKIAotICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkgewogICAgICAgICAgICAg
c2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgTm9uZSwgdGhyb3dOZXV0ZXJlZFR5cGVkQXJyYXlU
eXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNzEsNyArMzcxLDcgQEAg
Ym9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KAogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWludGVnZXItaW5kZXhlZC1leG90aWMtb2Jq
ZWN0cy1zZXQtcC12LXJlY2VpdmVyCiAgICAgLy8gSWdub3JlIHRoZSByZWNlaXZlciBldmVuIGlm
IHRoZSByZWNlaXZlciBpcyBhbHRlcmVkIHRvIG5vbiBiYXNlIHZhbHVlLgogICAgIC8vIDkuNC41
LjUtMi1iLWkgUmV0dXJuID8gSW50ZWdlckluZGV4ZWRFbGVtZW50U2V0KE8sIG51bWVyaWNJbmRl
eCwgVikuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmpl
Y3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKICAg
ICAKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuY3BwCmluZGV4IDIyMTM1N2YxZDg0YTY5ODczZjgxN2U2NTMwMzExNjU5OTFmMDA5
MjkuLjc2MTc1NzNkY2NlZjNmNmI2NDg5OGU2MmZiYzQyMWUyNmVhZjdlZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTkwLDIw
ICs5MCwyMCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBv
cnRFbnRyeSYgZW50cnkpCiAgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5
KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBwYXJzZXIuCiB9CiAKLWF1dG8gSlNNb2R1
bGVSZWNvcmQ6OnRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUp
IC0+IE9wdGlvbmFsPEltcG9ydEVudHJ5PgorYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1w
b3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gc3RkOjpvcHRpb25hbDxJ
bXBvcnRFbnRyeT4KIHsKICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9pbXBvcnRFbnRyaWVz
LmZpbmQobG9jYWxOYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbXBvcnRFbnRyaWVzLmVu
ZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICByZXR1cm4gT3B0aW9uYWw8SW1wb3J0
RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9
CiAKLWF1dG8gSlNNb2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJ
bXBsKiBleHBvcnROYW1lKSAtPiBPcHRpb25hbDxFeHBvcnRFbnRyeT4KK2F1dG8gSlNNb2R1bGVS
ZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAt
PiBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5PgogewogICAgIGNvbnN0IGF1dG8gaXRlcmF0b3Ig
PSBtX2V4cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0g
bV9leHBvcnRFbnRyaWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICByZXR1
cm4gT3B0aW9uYWw8RXhwb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8RXhwb3J0RW50cnk+KGl0
ZXJhdG9yLT52YWx1ZSk7CiB9CiAKIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5Ojpj
cmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVy
JiBsb2NhbE5hbWUpIC0+IEV4cG9ydEVudHJ5CkBAIC0xNDcsNyArMTQ3LDcgQEAgSlNNb2R1bGVS
ZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QKIAogYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4gUmVzb2x1dGlvbgog
ewotICAgIE9wdGlvbmFsPEltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gdHJ5R2V0
SW1wb3J0RW50cnkobG9jYWxOYW1lLmltcGwoKSk7CisgICAgc3RkOjpvcHRpb25hbDxJbXBvcnRF
bnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IHRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5p
bXBsKCkpOwogICAgIGlmICghb3B0aW9uYWxJbXBvcnRFbnRyeSkKICAgICAgICAgcmV0dXJuIFJl
c29sdXRpb246Om5vdEZvdW5kKCk7CiAKQEAgLTIxNSwxMiArMjE1LDEyIEBAIGlubGluZSBib29s
IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHZlUXVlcnk6Okhhc2g6OmVxdWFsKGNvbnN0IFJlc29sdmVR
dWVyeSYgbGhzLCBjCiAgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0gcmhzLm1vZHVsZVJl
Y29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKIH0KIAotYXV0byBKU01v
ZHVsZVJlY29yZDo6dHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhw
b3J0TmFtZSkgLT4gT3B0aW9uYWw8UmVzb2x1dGlvbj4KK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnRy
eUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IHN0
ZDo6b3B0aW9uYWw8UmVzb2x1dGlvbj4KIHsKICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9y
ZXNvbHV0aW9uQ2FjaGUuZmluZChleHBvcnROYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9y
ZXNvbHV0aW9uQ2FjaGUuZW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgIHJldHVy
biBPcHRpb25hbDxSZXNvbHV0aW9uPihpdGVyYXRvci0+dmFsdWUpOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPFJlc29sdXRpb24+KGl0ZXJh
dG9yLT52YWx1ZSk7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmNhY2hlUmVzb2x1dGlvbihV
bmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSwgY29uc3QgUmVzb2x1dGlvbiYgcmVzb2x1dGlv
bikKQEAgLTU1OCwxNCArNTU4LDE0IEBAIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBv
cnRJbXBsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByb290CiAKICAgICAg
ICAgICAgIC8vICA0LiBPbmNlIHdlIGZvbGxvdyBzdGFyIGxpbmtzLCB3ZSBzaG91bGQgbm90IHJl
dHJpZXZlIHRoZSByZXN1bHQgZnJvbSB0aGUgY2FjaGUgYW5kIHNob3VsZCBub3QgY2FjaGUgdGhl
IHJlc3VsdC4KICAgICAgICAgICAgIGlmICghZm91bmRTdGFyTGlua3MpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoT3B0aW9uYWw8UmVzb2x1dGlvbj4gY2FjaGVkUmVzb2x1dGlvbiA9IG1vZHVsZVJl
Y29yZC0+dHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihxdWVyeS5leHBvcnROYW1lLmdldCgpKSkgewor
ICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPFJlc29sdXRpb24+IGNhY2hlZFJlc29s
dXRpb24gPSBtb2R1bGVSZWNvcmQtPnRyeUdldENhY2hlZFJlc29sdXRpb24ocXVlcnkuZXhwb3J0
TmFtZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRv
cCgqY2FjaGVkUmVzb2x1dGlvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVz
b2x1dGlvbjo6YW1iaWd1b3VzKCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29uc3QgT3B0aW9u
YWw8RXhwb3J0RW50cnk+IG9wdGlvbmFsRXhwb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQtPnRyeUdl
dEV4cG9ydEVudHJ5KHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpOworICAgICAgICAgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxFeHBvcnRFbnRyeT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJl
Y29yZC0+dHJ5R2V0RXhwb3J0RW50cnkocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7CiAgICAgICAg
ICAgICBpZiAoIW9wdGlvbmFsRXhwb3J0RW50cnkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0
aGVyZSBpcyBubyBtYXRjaGVkIGV4cG9ydGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxl
LAogICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KQEAg
LTY0OCw3ICs2NDgsNyBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0SW1wbChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFJlc29sdmVRdWVyeSYgcm9vdAogYXV0byBKU01vZHVsZVJl
Y29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUpIC0+IFJlc29sdXRpb24KIHsKICAgICAvLyBMb29rIHVwIHRoZSBjYWNoZWQgcmVz
b2x1dGlvbiBmaXJzdCBiZWZvcmUgZW50ZXJpbmcgdGhlIHJlc29sdmluZyBsb29wLCBzaW5jZSB0
aGUgbG9vcCBzZXR1cCB0YWtlcyBzb21lIGNvc3QuCi0gICAgaWYgKE9wdGlvbmFsPFJlc29sdXRp
b24+IGNhY2hlZFJlc29sdXRpb24gPSB0cnlHZXRDYWNoZWRSZXNvbHV0aW9uKGV4cG9ydE5hbWUu
aW1wbCgpKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxSZXNvbHV0aW9uPiBjYWNoZWRSZXNvbHV0
aW9uID0gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihleHBvcnROYW1lLmltcGwoKSkpCiAgICAgICAg
IHJldHVybiAqY2FjaGVkUmVzb2x1dGlvbjsKICAgICByZXR1cm4gcmVzb2x2ZUV4cG9ydEltcGwo
ZXhlYywgUmVzb2x2ZVF1ZXJ5KHRoaXMsIGV4cG9ydE5hbWUuaW1wbCgpKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCA5NDI4ZGRh
NTVhZjcyOWQ4ZGEwZDJlZmM3MWVjNTg2YjdjOGRkMTMwLi44OGM5ZTc4MDRjYTJlZTc3YjQyNmEw
MmY1MDQ5NTc5OTA5Y2NmOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmgKQEAgLTk4LDggKzk4LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHZvaWQgYWRkSW1wb3J0RW50cnko
Y29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9y
dEVudHJ5Jik7CiAKLSAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnko
VW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7Ci0gICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+
IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEltcG9ydEVudHJ5PiB0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5n
SW1wbCogbG9jYWxOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4cG9ydEVudHJ5PiB0cnlHZXRF
eHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CiAKICAgICBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlOyB9CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVL
ZXk7IH0KQEAgLTE2Miw3ICsxNjIsNyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5OwogICAgIHN0
YXRpYyBSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnRJbXBsKEV4ZWNTdGF0ZSosIGNvbnN0IFJlc29s
dmVRdWVyeSYpOwotICAgIE9wdGlvbmFsPFJlc29sdXRpb24+IHRyeUdldENhY2hlZFJlc29sdXRp
b24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVz
b2x1dGlvbj4gdHJ5R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0
TmFtZSk7CiAgICAgdm9pZCBjYWNoZVJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9y
dE5hbWUsIGNvbnN0IFJlc29sdXRpb24mKTsKIAogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMg
dGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBp
cyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJlc2VudCB0aGlzIG1vZHVsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBkMWUwNzMxNzhmM2I2MGNiMzNi
OTMyZTBmZDYzOWU4YmYzNzUwZWQ3Li5iNWNjYTc0NDQ1ZDE2MTJmZmEwYzBkZDVmOTRlOTc5NWFl
NWUxMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBA
IC0xNDYyLDcgKzE0NjIsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVgogewogICAgIEFTU0VS
VCh2YWx1ZS5pc0dldHRlclNldHRlcigpICYmIChhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIAot
ICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TGlrZVB1dERpcmVjdCk7
CiAKICAgICByZXR1cm4gcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihleGVjLT52bSgpLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKQEAgLTE1MjcsNyArMTUyNyw3IEBAIGJvb2wg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVyCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNP
YmplY3QqPihjZWxsKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIAotICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5h
bWUpKQogICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSk7CiAKICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwpAQCAtMzAxNiw3ICszMDE2LDcgQEAgc3RhdGljIGJvb2wgcHV0
RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0YXJnZXQsIFByb3BlcnR5TmFt
ZSBwcm9wZXIKIAogYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAg
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleChleGVjLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHB1dERpcmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlKTsKIH0KQEAgLTMxNjksNyArMzE2OSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmlu
ZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOCiBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICAvLyBJ
ZiBpdCdzIGFuIGFycmF5IGluZGV4LCB0aGVuIHVzZSB0aGUgaW5kZXhlZCBwcm9wZXJ0eSBzdG9y
YWdlLgotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgLy8gYy4gTGV0IHN1Y2NlZWRlZCBiZSB0
aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGRlZmF1bHQgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGlu
dGVybmFsIG1ldGhvZCAoOC4xMi45KSBvbiBBIHBhc3NpbmcgUCwgRGVzYywgYW5kIGZhbHNlIGFz
IGFyZ3VtZW50cy4KICAgICAgICAgLy8gZC4gUmVqZWN0IGlmIHN1Y2NlZWRlZCBpcyBmYWxzZS4K
ICAgICAgICAgLy8gZS4gSWYgaW5kZXggPj0gb2xkTGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAppbmRleCAyOTk2ODY2YTZhOGM3MmMwNmY4ZGNjN2M2ZWVjYmU3MGEz
ZWRiMjJjLi43MDZhZmU0YzVjNTEwZWY3ZTBlNWIxYWQwNjBlOGNjNWZkYjAxMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTEzMjAsNyArMTMyMCw3IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmpl
Y3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKG9iamVjdC0+Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eVNsb3Qodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KG9iamVjdCwgZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtMTMzOCw3ICsxMzM4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0
OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAg
ICAgICAgICAgIC8vIGdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KSwgc28gd2UgY2Fubm90IHNh
ZmVseSBjYWxsIHRoZSBvdmVycmlkZGVuIGdldE93blByb3BlcnR5U2xvdAogICAgICAgICAgICAg
Ly8gKGxlc3Qgd2UgcmV0dXJuIGEgcHJvcGVydHkgZnJvbSBhIHByb3RvdHlwZSB0aGF0IGlzIHNo
YWRvd2VkKS4gQ2hlY2sgbm93IGZvciBhbiBpbmRleCwKICAgICAgICAgICAgIC8vIGlmIHNvIHdl
IG5lZWQgdG8gc3RhcnQgYWZyZXNoIGZyb20gdGhpcyBvYmplY3QuCi0gICAgICAgICAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAg
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAgICAgICAgICAvLyBTYWZlIHRvIGNvbnRpbnVl
IHNlYXJjaGluZyBmcm9tIGN1cnJlbnQgcG9zaXRpb247IGNhbGwgZ2V0Tm9uSW5kZXhQcm9wZXJ0
eVNsb3QgdG8gYXZvaWQKICAgICAgICAgICAgIC8vIHBhcnNpbmcgdGhlIGludCBhZ2Fpbi4KQEAg
LTEzNTQsNyArMTM1NCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgICAgIG9iamVj
dCA9IGFzT2JqZWN0KHByb3RvdHlwZSk7CiAgICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAg
IHJldHVybiBnZXRQcm9wZXJ0eVNsb3QoZXhlYywgaW5kZXgudmFsdWUoKSwgc2xvdCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnB1dE93bkRhdGFQcm9wZXJ0eU1heUJlSW5kZXgoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUKICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkpOwogICAgIEFTU0VSVCghc3RydWN0dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3Bl
cnRpZXMoKSk7CiAKLSAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4
KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJl
Y3QpOwogCiAgICAgcmV0dXJuIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGV4ZWMtPnZt
KCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2MTNlZmM1NDEwYjNlYjJkMjEw
Y2EwNzgxOWMzMDJiYjJlODAyMWJjLi5kMGQ0ZGYyYWY1OWNlNzc3NTQzN2RjYzZiMmFlMDBjZjM2
ZDM1MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaApAQCAtMTk2LDcgKzE5Niw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6
cHV0SW5saW5lKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAKICAg
ICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3Ru
ZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1lcyB0aGF0IGFwcGVhciBsaWtlCiAgICAg
Ly8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sgaW4gdGhlIG5hbWVkIHByb3BlcnR5IHN0
b3JhZ2UuCi0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJz
ZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNPYmpl
Y3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKIAog
ICAgIGlmICh0aGlzT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1dElubGluZShleGVjLCB2bSwgcHJv
cGVydHlOYW1lKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3Bw
CmluZGV4IDk2YmI5ZWI1MzNmMDgyZmNiZTI4YmU0NzM5OTQyZDdhZTEyOTdhOGUuLmViOGM5MjE5
YmIzMTllOTY1NmVhZTE4MDM2YmM0NjE1MjlmN2Q0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIEpTU3RyaW5n
OjpnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOworICAgIHN0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAg
IGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgbGVuZ3RoKCkpIHsKICAgICAgICAgZGVzY3Jp
cHRvci5zZXREZXNjcmlwdG9yKGdldEluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCkpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDdjZDcwZjYyMzE1NzQxOTMzMThiN2U4YWU5YjQ5
ZTA4ZTNhMGE3MGYuLjk1YjBiMGQwZjI4ZGQxOTJhOTA5MGE1NjBkNmM1ZmI1NmE0YTAzYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtNjY4LDcgKzY2OCw3
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1l
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKTsKICAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IGxlbmd0aCgpKSB7CiAg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBnZXRJbmRl
eChleGVjLCBpbmRleC52YWx1ZSgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCA1NmUwMzg5
NDdkNjUwNjc0NzE0MzUzYTQ5YzRlOGNiZGQ2OGQ0NDNiLi41OTkzYjMyMzZkYzFkNzRhYzcxNmMz
MzE3ZmIxOTMyZmYyMGQzZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNjkwLDcgKzY5MCw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBh
cnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKICAgICAgICAg
ICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBjb2RlQmxvY2sgPyBjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpIDogZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICBvYmpl
Y3RTdGFjay5sYXN0KCkucHV0KG1fZXhlYywgaWRlbnQsIGxhc3RWYWx1ZSwgc2xvdCk7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+cHV0RGlyZWN0SW5kZXgobV9leGVjLCBpbmRl
eC52YWx1ZSgpLCBsYXN0VmFsdWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgaWRlbnQsIGxhc3RWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggNDljZTc5
MWViYzExYjQxYmM4NjQ5MjljMjg3NGIyZTFlZjkxMmIyYy4uNjMyNTc4NmJjNDZhMDdmMmE1OWJl
MjQwOTMyMDFiNzc1ZGY5OThiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhDb21tb24uaApAQCAtMTE4LDE1ICsxMTgsMTUgQEAgaW5saW5lIHVpbnQzMl90IHRvVUludDMy
KGRvdWJsZSBudW1iZXIpCiAgICAgcmV0dXJuIHRvSW50MzIobnVtYmVyKTsKIH0KIAotaW5saW5l
IE9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KGRvdWJsZSBjb25z
dGFudCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWxGb3JEaXZC
eUNvbnN0KGRvdWJsZSBjb25zdGFudCkKIHsKICAgICAvLyBObyAid2VpcmQiIG51bWJlcnMgKE5h
TiwgRGVub3JtYWwsIGV0YykuCiAgICAgaWYgKCFjb25zdGFudCB8fCAhc3RkOjppc25vcm1hbChj
b25zdGFudCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaW50IGV4cG9uZW50OwogICAgIGlmIChzdGQ6OmZyZXhwKGNvbnN0YW50
LCAmZXhwb25lbnQpICE9IDAuNSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBOb3RlIHRoYXQgZnJleHAoKSByZXR1cm5zIHRo
ZSB2YWx1ZSBkaXZpZGVkIGJ5IHR3bwogICAgIC8vIHNvIHdlIHRvIG9mZnNldCB0aGlzIGV4cG9u
ZW50IGJ5IG9uZS4KQEAgLTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgT3B0aW9uYWw8ZG91YmxlPiBz
YWZlUmVjaXByb2NhbEZvckRpdkJ5Q29uc3QoZG91YmxlIGNvbnN0YW50KQogICAgIC8vIEEgZG91
YmxlIGV4cG9uZW50IGlzIGJldHdlZW4gLTEwMjIgYW5kIDEwMjMuCiAgICAgLy8gTm90aGluZyB3
ZSBjYW4gZG8gdG8gaW52ZXJ0IDEwMjMuCiAgICAgaWYgKGV4cG9uZW50ID09IDEwMjMpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ZG91YmxlIHJlY2lwcm9jYWwgPSBzdGQ6OmxkZXhwKDEsIC1leHBvbmVudCk7CiAgICAgQVNTRVJU
KHN0ZDo6aXNub3JtYWwocmVjaXByb2NhbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggY2VhMjc3NTcwNzg0NGVhODVhMDUx
MDIxNTEzZGMxZmMxOTQ0YTgzYS4uMjFjY2I2ZTQ3MjliNWRjMjcxNTZiNDFjYmMwMzE3Mzc0MTA1
ODg3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSk7CiAgICAgSGFz
T3duUHJvcGVydHlDYWNoZSogaGFzT3duUHJvcGVydHlDYWNoZSA9IHZtLmVuc3VyZUhhc093blBy
b3BlcnR5Q2FjaGUoKTsKLSAgICBpZiAoT3B0aW9uYWw8Ym9vbD4gcmVzdWx0ID0gaGFzT3duUHJv
cGVydHlDYWNoZS0+Z2V0KHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSkgeworICAgIGlmIChzdGQ6
Om9wdGlvbmFsPGJvb2w+IHJlc3VsdCA9IGhhc093blByb3BlcnR5Q2FjaGUtPmdldChzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgQVNTRVJUKCpyZXN1bHQgPT0gdGhpc09iamVj
dC0+aGFzT3duUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIEFTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbigqcmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5oCmluZGV4IGNlNDYzZTFkNDg3MTgzMjcyNWRjMDYzNGM5ZTc5YmJk
YzU0OTEzNGIuLmViNDYxZDM2ZjAwZDdhYzJiZGMxMmQwY2MzZGI2MjdiNmFlOTg1ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5o
CkBAIC05OCwxNiArOTgsMTYgQEAgaW5saW5lIFByb3BlcnR5RGVzY3JpcHRvciB0b1Byb3BlcnR5
RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGdldHRlciwgSlMKICAgICAvLyBXZSBh
c3N1bWUgdGhhdCB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZS4KICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzYzsKIAotICAgIGlmIChPcHRpb25hbDxib29sPiBlbnVtZXJhYmxlID0gYXR0cmli
dXRlcy5lbnVtZXJhYmxlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW51bWVyYWJs
ZSA9IGF0dHJpYnV0ZXMuZW51bWVyYWJsZSgpKQogICAgICAgICBkZXNjLnNldEVudW1lcmFibGUo
ZW51bWVyYWJsZS52YWx1ZSgpKTsKIAotICAgIGlmIChPcHRpb25hbDxib29sPiBjb25maWd1cmFi
bGUgPSBhdHRyaWJ1dGVzLmNvbmZpZ3VyYWJsZSgpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPGJv
b2w+IGNvbmZpZ3VyYWJsZSA9IGF0dHJpYnV0ZXMuY29uZmlndXJhYmxlKCkpCiAgICAgICAgIGRl
c2Muc2V0Q29uZmlndXJhYmxlKGNvbmZpZ3VyYWJsZS52YWx1ZSgpKTsKIAogICAgIGlmIChhdHRy
aWJ1dGVzLmhhc1ZhbHVlKCkpCiAgICAgICAgIGRlc2Muc2V0VmFsdWUodmFsdWUpOwogCi0gICAg
aWYgKE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlID0gYXR0cmlidXRlcy53cml0YWJsZSgpKQorICAg
IGlmIChzdGQ6Om9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlID0gYXR0cmlidXRlcy53cml0YWJsZSgp
KQogICAgICAgICBkZXNjLnNldFdyaXRhYmxlKHdyaXRhYmxlLnZhbHVlKCkpOwogCiAgICAgaWYg
KGF0dHJpYnV0ZXMuaGFzR2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZS5oCmluZGV4IGM0NzZjODhlMWFjOTU1ZjJmMjZiOWYwMzVhYTM0NzM1NWViZGE2
MjkuLmQxZDRkMTk5NDUzYmE4NDNjNDMyMmJiMGQ4ZThmYTMzNzI0Y2VmMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC0xMTQsMTMgKzExNCwx
MyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFByb3BlcnR5TmFtZSBhLCBQcm9wZXJ0eU5hbWUg
YikKICAgICByZXR1cm4gYS51aWQoKSAhPSBiLnVpZCgpOwogfQogCi1BTFdBWVNfSU5MSU5FIE9w
dGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitB
TFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBhdXRvIHVpZCA9IHByb3BlcnR5TmFtZS51aWQoKTsK
ICAgICBpZiAoIXVpZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBhcnNlSW5k
ZXgoKnVpZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAKaW5kZXggM2Q2MWRhY2M0YzZlZjE3MmVjMDhiYzY3ZjA0ODEwMTE1
YmNiZjM0MC4uYjdmZjYzNjlkOGVjYmE2YmY5OTQ2NTA3OGI1NzQ0YzVmMTUxYzhlMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAK
QEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlm
aWVkU3RhY2tUcmFjZXMoKQogICAgICAgICAgICAgICAgICAgICBzdG9yZUNhbGxlZUludG9Ub3BG
cmFtZSh1bnByb2Nlc3NlZFN0YWNrVHJhY2UuZnJhbWVzWzBdLnVudmVyaWZpZWRDYWxsZWUpOwog
ICAgICAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gMTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKE9wdGlvbmFsPENvZGVPcmlnaW4+IGNvZGVPcmlnaW4gPSB0
b3BDb2RlQmxvY2stPmZpbmRQQyh1bnByb2Nlc3NlZFN0YWNrVHJhY2UudG9wUEMpKSB7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gY29kZU9yaWdpbiA9
IHRvcENvZGVCbG9jay0+ZmluZFBDKHVucHJvY2Vzc2VkU3RhY2tUcmFjZS50b3BQQykpIHsKICAg
ICAgICAgICAgICAgICBjb2RlT3JpZ2luLT53YWxrVXBJbmxpbmVTdGFjayhbJl0gKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pIHsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ29kZUJs
b2NrKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID8gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpIDogdG9wQ29kZUJsb2NrLCBjb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKaW5kZXggNWVmNzViMDA1YmMxOTlmODBjZjk3
MmYyNGY4MWQ4ZTNmOTQwZTFkZS4uMjI5MjNlODQ4OTdlMjZhM2FlZTAyNTZiN2Q1NDMwZTRkODYy
ZjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAKICAgICBpZiAo
cHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xvdC5pc1N0cmljdE1vZGUoKSwgQVNDSUlMaXRlcmFs
KFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0gICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90
PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJl
dHVybiBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90Lmlz
U3RyaWN0TW9kZSgpKTsKICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dChjZWxsLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIGJvb2wg
aXNTdHJpbmdPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ09iamVjdCogb2JqZWN0
LCBQcm9wZXJ0eU4KIHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAg
ICAgICAgaWYgKG9iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChpbmRleC52YWx1
ZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBA
QCBib29sIFN0cmluZ09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcgogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7
CiAgICAgaWYgKGluZGV4ICYmIHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5k
ZXgoaW5kZXgudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaApp
bmRleCBmNTRmZDA2NWVkOTYwZTU1MDYwNDdmMDM4MjY0ZTRmYTRjMDgzNjQzLi5mZDYxODQzMjc3
N2NlYjk5NTQzOWY4ZjU4NWE3MzhkYTg0YzI2NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmgKQEAgLTQ4LDEwICs0OCwxMCBAQCB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHRvTmF0aXZlRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLU9wdGlvbmFs
PHR5cGVuYW1lIEFkYXB0b3I6OlR5cGU+IHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
KEpTVmFsdWUgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGU+IHRv
TmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
KCF2YWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQogICAgICAgICByZXR1
cm4gQWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24odmFsdWUuYXNJbnQz
MigpKTsKICAgICByZXR1cm4gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJj
aW9uKHZhbHVlLmFzRG91YmxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAppbmRleCAwZmFjNGZlNjAyYWRjZDE2ZDNiMzFmYzAy
YTUyZDA5NDFkYzQ0YzNiLi4wYWY3MWY0YzYxZmMyNDJjYThhNzkxMDdmY2JiNmZjNTYzMTVhYmMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRh
cHRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRh
cHRvcnMuaApAQCAtNzksMjYgKzc5LDI2IEBAIHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFw
dG9yIHsKICAgICAgICAgcmV0dXJuIE90aGVyQWRhcHRvcjo6dG9OYXRpdmVGcm9tSW50MzIodmFs
dWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQz
MldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAg
ICAgewogICAgICAgICBpZiAoKHZhbHVlID49IDAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZh
bHVlKSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYXhWYWx1ZSkpIHx8IHZhbHVlIDwgc3RhdGlj
X2Nhc3Q8aW50MzJfdD4obWluVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VHlwZT4odmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05h
dGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24odWludDMyX3QgdmFsdWUpCisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tVWludDMyV2l0aG91dENvZXJjaW9uKHVp
bnQzMl90IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1heFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlw
ZT4odmFsdWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZy
b21Eb3VibGVXaXRob3V0Q29lcmNpb24oZG91YmxlIHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2VyY2lvbihkb3VibGUgdmFs
dWUpCiAgICAgewogICAgICAgICBUeXBlIGludGVnZXIgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1
ZSk7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGludGVnZXIpICE9IHZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIGlmICh2YWx1ZSA8IDApCiAgICAgICAgICAgICByZXR1cm4gdG9OYXRp
dmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpKTsK
QEAgLTE0OSwxMiArMTQ5LDEyIEBAIHN0cnVjdCBGbG9hdFR5cGVkQXJyYXlBZGFwdG9yIHsKICAg
ICAgICAgcmV0dXJuIE90aGVyQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlKHZhbHVlKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0
Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0
b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJs
ZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21Eb3Vi
bGVXaXRob3V0Q29lcmNpb24oZG91YmxlIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHN0ZDo6
aXNuYW4odmFsdWUpIHx8IHN0ZDo6aXNpbmYodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKQEAgLTE2MiwxMCArMTYyLDEwIEBAIHN0cnVjdCBGbG9h
dFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICAgICAgVHlwZSB2YWx1ZVJlc3VsdCA9IHN0YXRpY19j
YXN0PFR5cGU+KHZhbHVlKTsKIAogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1
ZVJlc3VsdCkgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKHZhbHVlIDwgbWluVmFsdWUg
fHwgdmFsdWUgPiBtYXhWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gdmFsdWVSZXN1bHQ7
CiAgICAgfQpAQCAtMjU1LDE5ICsyNTUsMTkgQEAgc3RydWN0IFVpbnQ4Q2xhbXBlZEFkYXB0b3Ig
ewogICAgICAgICByZXR1cm4gT3RoZXJBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMih2YWx1ZSk7
CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQz
MldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFR5cGU+IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKGludDMyX3QgdmFsdWUpCiAg
ICAgewogICAgICAgICBpZiAodmFsdWUgPiBtYXhWYWx1ZSB8fCB2YWx1ZSA8IG1pblZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFR5cGU+IHRvTmF0aXZlRnJvbURvdWJsZVdpdGhvdXRDb2Vy
Y2lvbihkb3VibGUgdmFsdWUpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdG9OYXRp
dmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKGRvdWJsZSB2YWx1ZSkKICAgICB7CiAgICAgICAg
IHVpbnQ4X3QgaW50ZWdlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKTsKICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcmV0dXJuIGludGVnZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jv
c3NUaHJlYWRRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRRdWV1ZS5oCmluZGV4
IGExNTBjNmU5NmM3YmI3NzNjOWNjMzYyMDZkOGI5NjI4MDY3ZjZmMjEuLmUwYjQ3ODFkZjQ0Y2I3
YmIxNjVjMThkM2Y1NjZjZmNkNDZkYTQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Ny
b3NzVGhyZWFkUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFF1ZXVlLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ3Jvc3NUaHJlYWRRdWV1ZSB7CiAgICAgdm9pZCBhcHBl
bmQoRGF0YVR5cGUmJik7CiAKICAgICBEYXRhVHlwZSB3YWl0Rm9yTWVzc2FnZSgpOwotICAgIE9w
dGlvbmFsPERhdGFUeXBlPiB0cnlHZXRNZXNzYWdlKCk7CisgICAgc3RkOjpvcHRpb25hbDxEYXRh
VHlwZT4gdHJ5R2V0TWVzc2FnZSgpOwogCiAgICAgYm9vbCBpc0tpbGxlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgRGF0YVR5cGUgQ3Jvc3NUaHJlYWRRdWV1
ZTxEYXRhVHlwZT46OndhaXRGb3JNZXNzYWdlKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRGF0
YVR5cGU+Ci1PcHRpb25hbDxEYXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxEYXRhVHlwZT46OnRy
eUdldE1lc3NhZ2UoKQorc3RkOjpvcHRpb25hbDxEYXRhVHlwZT4gQ3Jvc3NUaHJlYWRRdWV1ZTxE
YXRhVHlwZT46OnRyeUdldE1lc3NhZ2UoKQogewogICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2sp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oIGIvU291cmNlL1dURi93
dGYvRXhwZWN0ZWQuaAppbmRleCBkOGY3NGU3OWQ1ZTJmZWM1ZjlkYjRhZjk0NzFkNDA3NDg5ZGFh
ODMwLi5jZDdmYTU2MDM5NjA4MGU3NjY0ODI4MzhkNmZiZTA5Y2I5MGE0YTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9FeHBlY3RlZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVk
LmgKQEAgLTQwNiwxNSArNDA2LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFVuZXhwZWN0ZWRUeXBlPEU+JiB4CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBFPiB2b2lkIHN3YXAoRXhwZWN0ZWQ8VCwgRT4mIHgs
IEV4cGVjdGVkPFQsIEU+JiB5KSB7IHguc3dhcCh5KTsgfQogCi10ZW1wbGF0ZSA8Y2xhc3MgVCwg
Y2xhc3MgRSA9IFdURjo6TnVsbG9wdFRhZz4gY29uc3RleHByIEV4cGVjdGVkPHN0ZDo6ZGVjYXlf
dDxUPiwgRT4gbWFrZUV4cGVjdGVkKFQmJiB2KQordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEUg
PSBzdGQ6Om51bGxvcHRfdD4gY29uc3RleHByIEV4cGVjdGVkPHN0ZDo6ZGVjYXlfdDxUPiwgRT4g
bWFrZUV4cGVjdGVkKFQmJiB2KQogewogICAgIHJldHVybiBFeHBlY3RlZDx0eXBlbmFtZSBzdGQ6
OmRlY2F5PFQ+Ojp0eXBlLCBFPihzdGQ6OmZvcndhcmQ8VD4odikpOwogfQogdGVtcGxhdGUgPGNs
YXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBFeHBlY3RlZDxULCBzdGQ6OmRlY2F5X3Q8RT4+IG1h
a2VFeHBlY3RlZEZyb21FcnJvcihFJiYgZSkgeyByZXR1cm4gRXhwZWN0ZWQ8VCwgc3RkOjpkZWNh
eV90PEU+PihtYWtlVW5leHBlY3RlZChlKSk7IH0KIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBF
LCBjbGFzcyBVPiBjb25zdGV4cHIgRXhwZWN0ZWQ8VCwgRT4gbWFrZUV4cGVjdGVkRnJvbUVycm9y
KFUmJiB1KSB7IHJldHVybiBFeHBlY3RlZDxULCBFPihtYWtlVW5leHBlY3RlZChFIHsgc3RkOjpm
b3J3YXJkPFU+KHUpIH0gKSk7IH0KLS8vIHRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBFID0gV1RG
OjpOdWxsb3B0VGFnPiBjb25zdGV4cHIgRXhwZWN0ZWQ8dHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8
Rj46OnR5cGUsIEU+IG1ha2VFeHBlY3RlZF9mcm9tX2NhbGwoRiBmKTsKKy8vIHRlbXBsYXRlIDxj
bGFzcyBGLCBjbGFzcyBFID0gc3RkOjpudWxsb3B0X3Q+IGNvbnN0ZXhwciBFeHBlY3RlZDx0eXBl
bmFtZSBzdGQ6OnJlc3VsdF9vZjxGPjo6dHlwZSwgRT4gbWFrZUV4cGVjdGVkX2Zyb21fY2FsbChG
IGYpOwogCi1pbmxpbmUgRXhwZWN0ZWQ8dm9pZCwgV1RGOjpOdWxsb3B0VGFnPiBtYWtlRXhwZWN0
ZWQoKSB7IHJldHVybiBFeHBlY3RlZDx2b2lkLCBXVEY6Ok51bGxvcHRUYWc+KCk7IH0KK2lubGlu
ZSBFeHBlY3RlZDx2b2lkLCBzdGQ6Om51bGxvcHRfdD4gbWFrZUV4cGVjdGVkKCkgeyByZXR1cm4g
RXhwZWN0ZWQ8dm9pZCwgc3RkOjpudWxsb3B0X3Q+KCk7IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3Rm
L0ZvcndhcmQuaAppbmRleCAxMDNkZmFjYjI0OTk4ZDg1YTU4MDUzNTI4ZjE1YmNlYjM0MDlkMTVi
Li5kNjhhOTQ3ZDQ5ODVjZjc3NDg1MDg0MGYwYjEzN2E4Y2Q1NDdhZTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBA
IC0yMiwxMyArMjIsMTYgQEAKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCituYW1lc3BhY2Ugc3Rk
IHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIG9wdGlvbmFsOworfQorCiBuYW1lc3BhY2Ug
V1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRnVuY3Rpb247CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBOZXZlckRlc3Ryb3llZDsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE9wdGlv
blNldDsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE9wdGlvbmFsOwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJl
ZjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZlB0cjsKQEAgLTYxLDcgKzY0LDYgQEAg
dXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNoZXI7CiB1c2luZyBXVEY6OkxhenlOZXZlckRlc3Ry
b3llZDsKIHVzaW5nIFdURjo6TmV2ZXJEZXN0cm95ZWQ7CiB1c2luZyBXVEY6Ok9wdGlvblNldDsK
LXVzaW5nIFdURjo6T3B0aW9uYWw7CiB1c2luZyBXVEY6Ok9yZGluYWxOdW1iZXI7CiB1c2luZyBX
VEY6OlBhc3NSZWZQdHI7CiB1c2luZyBXVEY6OlByaW50U3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oIGIvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCmlu
ZGV4IGViMDQ4NDc0NzgzNTFiNTZhM2M5NjUwZjNlNTE0OTgxNTY0YzY1NGUuLjU0MmU3YWQyY2Jk
M2RmMGVlMDllMDA0ZjIzMzk4OWEyZmZjMDA5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0hhc2hUcmFpdHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgKQEAgLTE4OCw4
ICsxODgsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWY8UD4+
IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFJlZjxQPj4gewogICAgIHN0YXRpYyBQZWVrVHlwZSBw
ZWVrKGNvbnN0IFJlZjxQPiYgdmFsdWUpIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UGVla1R5cGU+KHZh
bHVlLnB0ckFsbG93aW5nSGFzaFRhYmxlRW1wdHlWYWx1ZSgpKTsgfQogICAgIHN0YXRpYyBQZWVr
VHlwZSBwZWVrKFAqIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQogCi0gICAgdHlwZWRlZiBPcHRp
b25hbDxSZWY8UD4+IFRha2VUeXBlOwotICAgIHN0YXRpYyBUYWtlVHlwZSB0YWtlKFJlZjxQPiYm
IHZhbHVlKSB7IHJldHVybiBpc0VtcHR5VmFsdWUodmFsdWUpID8gTnVsbG9wdCA6IE9wdGlvbmFs
PFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CisgICAgdHlwZWRlZiBzdGQ6Om9wdGlvbmFsPFJl
ZjxQPj4gVGFrZVR5cGU7CisgICAgc3RhdGljIFRha2VUeXBlIHRha2UoUmVmPFA+JiYgdmFsdWUp
IHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlv
bmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFN0cmluZz4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U3RyaW5nPiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01h
aW5UaHJlYWQuY3BwCmluZGV4IGQ1NDhmYjc1ODcxZGJkYjY0YWYzMGVkNmJkYjNmZDhiMjBjZmMy
ZDguLjQ3MmJlZTI3YWRmNGQ3ZTBhMmJmNjNiOGY1M2RmMGM4MzQ0NTUzYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5U
aHJlYWQuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBjYW5BY2Nlc3NUaHJlYWRMb2NhbERh
dGFGb3JUaHJlYWQoVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJZCkKIH0KICNlbmRpZgogCi1zdGF0
aWMgVGhyZWFkU3BlY2lmaWM8T3B0aW9uYWw8R0NUaHJlYWRUeXBlPiwgQ2FuQmVHQ1RocmVhZDo6
VHJ1ZT4qIGlzR0NUaHJlYWQ7CitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8c3RkOjpvcHRpb25hbDxH
Q1RocmVhZFR5cGU+LCBDYW5CZUdDVGhyZWFkOjpUcnVlPiogaXNHQ1RocmVhZDsKIAogdm9pZCBp
bml0aWFsaXplR0NUaHJlYWRzKCkKIHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIGluaXRpYWxp
emVHQ1RocmVhZHMoKQogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAgICBmbGFnLAogICAgICAg
ICBbXSB7Ci0gICAgICAgICAgICBpc0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPE9wdGlv
bmFsPEdDVGhyZWFkVHlwZT4sIENhbkJlR0NUaHJlYWQ6OlRydWU+KCk7CisgICAgICAgICAgICBp
c0dDVGhyZWFkID0gbmV3IFRocmVhZFNwZWNpZmljPHN0ZDo6b3B0aW9uYWw8R0NUaHJlYWRUeXBl
PiwgQ2FuQmVHQ1RocmVhZDo6VHJ1ZT4oKTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTIyMSwxMiAr
MjIxLDEyIEBAIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpCiAgICAgcmV0dXJuIGlzTWFp
blRocmVhZCgpOwogfQogCi1PcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKQor
c3RkOjpvcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJlR0NUaHJlYWQoKQogewogICAgIGlmICgh
aXNHQ1RocmVhZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFpc0dDVGhyZWFkLT5pc1NldCgpKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKippc0dD
VGhyZWFkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmggYi9T
b3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggMjRlNWYzMTI3NTlkYmVkZTNkMzFiYmZm
ODMxZDE1YmJlYmU3MTE2NS4uZWYzODZkNDUwOGU2N2VkMWUyOThiM2ZhYTBjOGJjYWZhMjQ0NTQ3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL01haW5UaHJlYWQuaApAQCAtNzgsNyArNzgsNyBAQCBlbnVtIGNsYXNzIEdDVGhyZWFk
VHlwZSB7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBHQ1RocmVhZFR5cGUpOwog
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckdDVGhyZWFkKEdDVGhyZWFkVHlwZSk7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgT3B0aW9uYWw8R0NUaHJlYWRUeXBlPiBtYXlCZUdDVGhyZWFk
KCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxHQ1RocmVhZFR5cGU+IG1heUJl
R0NUaHJlYWQoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTWFpblRocmVhZE9yR0NUaHJl
YWQoKTsKIAogLy8gTk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2Fs
bE9uTWFpblRocmVhZCBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L09wdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCmluZGV4IDkyODZlNmI1ODgx
MWM1YWVjMTNjOWNhNjAzYjliMThlMWUzZThkMjMuLjc2YmEzODhkNWVmMWZiZTg5OWUwZTk0MTkw
Y2JiNWIzYjkxZTY0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKKysr
IGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaApAQCAtMSwyODMgKzEsMTEwOSBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgT3B0aW9uYWxfaAotI2RlZmluZSBPcHRpb25hbF9oCi0KLSNp
bmNsdWRlIDx0eXBlX3RyYWl0cz4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQot
Ly8gV1RGOjpPcHRpb25hbCBpcyBhIGNsYXNzIGJhc2VkIG9uIHN0ZDo6b3B0aW9uYWwsIGRlc2Ny
aWJlZCBoZXJlOgotLy8gaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9j
cy9wYXBlcnMvMjAxMy9uMzUyNy5odG1sCi0vLyBJZiB0aGlzIGVuZHMgdXAgaW4gYSBDKysgc3Rh
bmRhcmQsIHdlIHNob3VsZCByZXBsYWNlIG91ciBpbXBsZW1lbnRhdGlvbiB3aXRoIGl0LgorLy8g
Q29weXJpZ2h0IChDKSAyMDExIC0gMjAxMiBBbmRyemVqIEtyemVtaWVuc2tpLgorLy8KKy8vIFVz
ZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0
IFNvZnR3YXJlCisvLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmls
ZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAorLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElD
RU5TRV8xXzAudHh0KQorLy8KKy8vIFRoZSBpZGVhIGFuZCBpbnRlcmZhY2UgaXMgYmFzZWQgb24g
Qm9vc3QuT3B0aW9uYWwgbGlicmFyeQorLy8gYXV0aG9yZWQgYnkgRmVybmFuZG8gTHVpcyBDYWNj
aW9sYSBDYXJiYWxsYWwKKy8vCisvLyBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlIC0gVmVyc2lvbiAx
LjAgLSBBdWd1c3QgMTd0aCwgMjAwMworLy8KKy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9yIG9yZ2FuaXphdGlvbgorLy8gb2J0
YWluaW5nIGEgY29weSBvZiB0aGUgc29mdHdhcmUgYW5kIGFjY29tcGFueWluZyBkb2N1bWVudGF0
aW9uIGNvdmVyZWQgYnkKKy8vIHRoaXMgbGljZW5zZSAodGhlICJTb2Z0d2FyZSIpIHRvIHVzZSwg
cmVwcm9kdWNlLCBkaXNwbGF5LCBkaXN0cmlidXRlLAorLy8gZXhlY3V0ZSwgYW5kIHRyYW5zbWl0
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUKKy8v
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHRoaXJkLXBhcnRpZXMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMgZnVybmlzaGVkIHRvCisvLyBkbyBzbywgYWxsIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZzoKKy8vCisvLyBUaGUgY29weXJpZ2h0IG5vdGljZXMgaW4gdGhlIFNvZnR3YXJlIGFuZCB0aGlz
IGVudGlyZSBzdGF0ZW1lbnQsIGluY2x1ZGluZworLy8gdGhlIGFib3ZlIGxpY2Vuc2UgZ3JhbnQs
IHRoaXMgcmVzdHJpY3Rpb24gYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciwKKy8vIG11c3Qg
YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGluIHdob2xlIG9yIGlu
IHBhcnQsIGFuZAorLy8gYWxsIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNvZnR3YXJlLCB1bmxl
c3Mgc3VjaCBjb3BpZXMgb3IgZGVyaXZhdGl2ZQorLy8gd29ya3MgYXJlIHNvbGVseSBpbiB0aGUg
Zm9ybSBvZiBtYWNoaW5lLWV4ZWN1dGFibGUgb2JqZWN0IGNvZGUgZ2VuZXJhdGVkIGJ5CisvLyBh
IHNvdXJjZSBsYW5ndWFnZSBwcm9jZXNzb3IuCisvLworLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJ
REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKy8v
IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLAorLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFRJ
VExFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVAorLy8gU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVJTIE9SIEFOWU9ORSBESVNUUklCVVRJTkcgVEhFIFNPRlRXQVJFIEJFIExJQUJM
RQorLy8gRk9SIEFOWSBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisvLyBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKy8vIERFQUxJ
TkdTIElOIFRIRSBTT0ZUV0FSRS4KIAotbmFtZXNwYWNlIFdURiB7CisvLyBDb3BpZWQgZnJvbSBo
dHRwczovL2dpdGh1Yi5jb20vYWtyemVtaTEvT3B0aW9uYWwgKDcyN2M3MjlkZDFkOWYwNmYyMjU4
NjgyODBlNTAxNTQ1OTRkN2U1OWQpCisKKy8vIE1vZGlmaWVkIHRvIG1ha2UgaXQgY29tcGlsZSB3
aXRoIGV4Y2VwdGlvbnMgZGlzYWJsZWQuCisKKyNwcmFnbWEgb25jZQorCisjIGluY2x1ZGUgPHV0
aWxpdHk+CisjIGluY2x1ZGUgPHR5cGVfdHJhaXRzPgorIyBpbmNsdWRlIDxpbml0aWFsaXplcl9s
aXN0PgorIyBpbmNsdWRlIDxjYXNzZXJ0PgorIyBpbmNsdWRlIDxmdW5jdGlvbmFsPgorIyBpbmNs
dWRlIDxzdHJpbmc+CisjIGluY2x1ZGUgPHN0ZGV4Y2VwdD4KKyMgaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyMgaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CisjIGluY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKworIyBkZWZpbmUgVFIyX09QVElPTkFMX1JFUVVJUkVTKC4uLikgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8X19WQV9BUkdTX186OnZhbHVlLCBib29sPjo6dHlwZSA9IGZhbHNl
CisKKyMgaWYgZGVmaW5lZCBfX0dOVUNfXyAvLyBOT1RFOiBHTlVDIGlzIGFsc28gZGVmaW5lZCBm
b3IgQ2xhbmcKKyMgICBpZiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDgp
CisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0dDQ180XzhfQU5EX0hJR0hFUl9fXworIyAgIGVs
aWYgKF9fR05VQ19fID4gNCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfR0NDXzRfOF9BTkRf
SElHSEVSX19fCisjICAgZW5kaWYKKyMKKyMgICBpZiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05V
Q19NSU5PUl9fID49IDcpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0dDQ180XzdfQU5EX0hJ
R0hFUl9fXworIyAgIGVsaWYgKF9fR05VQ19fID4gNCkKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9O
QUxfR0NDXzRfN19BTkRfSElHSEVSX19fCisjICAgZW5kaWYKKyMKKyMgICBpZiAoX19HTlVDX18g
PT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID09IDgpICYmIChfX0dOVUNfUEFUQ0hMRVZFTF9fID49
IDEpCisjICAgICBkZWZpbmUgVFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisj
ICAgZWxpZiAoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDkpCisjICAgICBk
ZWZpbmUgVFIyX09QVElPTkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZWxpZiAoX19H
TlVDX18gPiA0KQorIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hF
Ul9fXworIyAgIGVuZGlmCisjIGVuZGlmCisjCisjIGlmIGRlZmluZWQgX19jbGFuZ19tYWpvcl9f
CisjICAgaWYgKF9fY2xhbmdfbWFqb3JfXyA9PSAzICYmIF9fY2xhbmdfbWlub3JfXyA+PSA1KQor
IyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9DTEFOR18zXzVfQU5EX0hJR0hURVJfCisjICAgZWxp
ZiAoX19jbGFuZ19tYWpvcl9fID4gMykKKyMgICAgIGRlZmluZSBUUjJfT1BUSU9OQUxfQ0xBTkdf
M181X0FORF9ISUdIVEVSXworIyAgIGVuZGlmCisjICAgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxf
Q0xBTkdfM181X0FORF9ISUdIVEVSXworIyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9DTEFOR18z
XzRfMl9BTkRfSElHSEVSXworIyAgIGVsaWYgKF9fY2xhbmdfbWFqb3JfXyA9PSAzICYmIF9fY2xh
bmdfbWlub3JfXyA9PSA0ICYmIF9fY2xhbmdfcGF0Y2hsZXZlbF9fID49IDIpCisjICAgICBkZWZp
bmUgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisjICAgZW5kaWYKKyMgZW5k
aWYKKyMKKyMgaWYgZGVmaW5lZCBfTVNDX1ZFUgorIyAgIGlmIChfTVNDX1ZFUiA+PSAxOTAwKQor
IyAgICAgZGVmaW5lIFRSMl9PUFRJT05BTF9NU1ZDXzIwMTVfQU5EX0hJR0hFUl9fXworIyAgIGVu
ZGlmCisjIGVuZGlmCisKKyMgaWYgZGVmaW5lZCBfX2NsYW5nX18KKyMgICBpZiAoX19jbGFuZ19t
YWpvcl9fID4gMikgfHwgKF9fY2xhbmdfbWFqb3JfXyA9PSAyKSAmJiAoX19jbGFuZ19taW5vcl9f
ID49IDkpCisjICAgICBkZWZpbmUgT1BUSU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgMQorIyAg
IGVsc2UKKyMgICAgIGRlZmluZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAwCisjICAg
ZW5kaWYKKyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9HQ0NfNF84XzFfQU5EX0hJR0hFUl9f
XworIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyAxCisjIGVsaWYgZGVm
aW5lZCBUUjJfT1BUSU9OQUxfTVNWQ18yMDE1X0FORF9ISUdIRVJfX18KKyMgICBkZWZpbmUgT1BU
SU9OQUxfSEFTX1RISVNfUlZBTFVFX1JFRlMgMQorIyBlbHNlCisjICAgZGVmaW5lIE9QVElPTkFM
X0hBU19USElTX1JWQUxVRV9SRUZTIDAKKyMgZW5kaWYKKworCisjIGlmIGRlZmluZWQgVFIyX09Q
VElPTkFMX0dDQ180XzhfMV9BTkRfSElHSEVSX19fCisjICAgZGVmaW5lIE9QVElPTkFMX0hBU19D
T05TVEVYUFJfSU5JVF9MSVNUIDEKKyMgICBkZWZpbmUgT1BUSU9OQUxfQ09OU1RFWFBSX0lOSVRf
TElTVCBjb25zdGV4cHIKKyMgZWxzZQorIyAgIGRlZmluZSBPUFRJT05BTF9IQVNfQ09OU1RFWFBS
X0lOSVRfTElTVCAwCisjICAgZGVmaW5lIE9QVElPTkFMX0NPTlNURVhQUl9JTklUX0xJU1QKKyMg
ZW5kaWYKKworLy8gRklYTUU6IFRvIG1ha2UgdGhlIHJlc3VsdCBvZiB2YWx1ZSgpIHR5cGUgY29u
c2lzdGVudCBhbW9uZyB0aGUgY29tcGlsZXJzLCB3ZSBub3cgaW50ZW50aW9uYWxseSBkaXNhYmxl
cyBtb3ZlIGFjY2Vzc29ycy4KKyMgICBkZWZpbmUgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JT
IDAKKy8vICMgaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfQ0xBTkdfM181X0FORF9ISUdIVEVSXyAm
JiAoZGVmaW5lZCBfX2NwbHVzcGx1cykgJiYgKF9fY3BsdXNwbHVzICE9IDIwMTEwM0wpCisvLyAj
ICAgZGVmaW5lIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyAxCisvLyAjIGVsc2UKKy8vICMg
ICBkZWZpbmUgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTIDAKKy8vICMgZW5kaWYKKworIyAv
LyBJbiBDKysxMSBjb25zdGV4cHIgaW1wbGllcyBjb25zdCwgc28gd2UgbmVlZCB0byBtYWtlIG5v
bi1jb25zdCBtZW1iZXJzIGFsc28gbm9uLWNvbnN0ZXhwcgorIyBpZiAoZGVmaW5lZCBfX2NwbHVz
cGx1cykgJiYgKF9fY3BsdXNwbHVzID09IDIwMTEwM0wpCisjICAgZGVmaW5lIE9QVElPTkFMX01V
VEFCTEVfQ09OU1RFWFBSCisjIGVsc2UKKyMgICBkZWZpbmUgT1BUSU9OQUxfTVVUQUJMRV9DT05T
VEVYUFIgY29uc3RleHByCisjIGVuZGlmCisKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhFWENFUFRJ
T05TKQorI2RlZmluZSBfX1RIUk9XX0VYQ0VQVElPTihfX2V4Y2VwdGlvbikgdGhyb3cgX19leGNl
cHRpb247CisjZGVmaW5lIF9fTk9FWENFUFQgbm9leGNlcHQKKyNkZWZpbmUgX19OT0VYQ0VQVF8o
X19leGNlcHRpb24pIG5vZXhjZXB0KF9fZXhjZXB0aW9uKQorI2Vsc2UKKyNkZWZpbmUgX19USFJP
V19FWENFUFRJT04oX19leGNlcHRpb24pIGRvIHsgKHZvaWQpX19leGNlcHRpb247IENSQVNIKCk7
IH0gd2hpbGUgKDApOworI2RlZmluZSBfX05PRVhDRVBUCisjZGVmaW5lIF9fTk9FWENFUFRfKC4u
LikKKyNlbmRpZgorCituYW1lc3BhY2Ugc3RkIHsKK25hbWVzcGFjZSBkZXRhaWxfIHsKKworLy8g
Tk9URTogQWxsIG91ciB0YXJnZXQgY29tcGlsZXJzIHN1cHBvcnQgaXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZS4KKy8vIC8vIEJFR0lOIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgaXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZQorLy8gIyBpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9HQ0NfNF84X0FORF9I
SUdIRVJfX18KKy8vICAgICAvLyBsZWF2ZSBpdDogaXQgaXMgYWxyZWFkeSB0aGVyZQorLy8gIyBl
bGlmIGRlZmluZWQgVFIyX09QVElPTkFMX0NMQU5HXzNfNF8yX0FORF9ISUdIRVJfCisvLyAgICAg
Ly8gbGVhdmUgaXQ6IGl0IGlzIGFscmVhZHkgdGhlcmUKKy8vICMgZWxpZiBkZWZpbmVkIFRSMl9P
UFRJT05BTF9NU1ZDXzIwMTVfQU5EX0hJR0hFUl9fXworLy8gICAgIC8vIGxlYXZlIGl0OiBpdCBp
cyBhbHJlYWR5IHRoZXJlCisvLyAjIGVsaWYgZGVmaW5lZCBUUjJfT1BUSU9OQUxfRElTQUJMRV9F
TVVMQVRJT05fT0ZfVFlQRV9UUkFJVFMKKy8vICAgICAvLyBsZWF2ZSBpdDogdGhlIHVzZXIgZG9l
c24ndCB3YW50IGl0CisvLyAjIGVsc2UKKy8vIAl0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy8vIAl1
c2luZyBpc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlID0gc3RkOjpoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yPFQ+OworLy8gIyBlbmRpZgorLy8gLy8gRU5EIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgaXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZQorCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoRVhDRVBUSU9O
UykKKyMgaWYgZGVmaW5lZChUUjJfT1BUSU9OQUxfR0NDXzRfN19BTkRfSElHSEVSX19fKSB8fCBk
ZWZpbmVkKFRSMl9PUFRJT05BTF9DTEFOR18zXzRfMl9BTkRfSElHSEVSXykgfHwgZGVmaW5lZChU
UjJfT1BUSU9OQUxfTVNWQ18yMDE1X0FORF9ISUdIRVJfX18pCisgICAgLy8gbGVhdmUgaXQ7IG91
ciBtZXRhZnVuY3Rpb25zIGFyZSBhbHJlYWR5IGRlZmluZWQuCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgdXNpbmcgaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUgPSBzdGQ6Omlz
X25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICAgIHVzaW5nIGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlID0gc3RkOjppc19ub3Rocm93
X21vdmVfYXNzaWduYWJsZTxUPjsKKyMgZWxpZiBkZWZpbmVkIFRSMl9PUFRJT05BTF9ESVNBQkxF
X0VNVUxBVElPTl9PRl9UWVBFX1RSQUlUUworICAgIC8vIGxlYXZlIGl0OiB0aGUgdXNlciBkb2Vz
bid0IHdhbnQgaXQKKyMgZWxzZQorCisKKy8vIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgdHJhaXRz
IGluIEdDQyBhbmQgQ0xBTkcKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IGlzX25vdGhyb3df
bW92ZV9jb25zdHJ1Y3RpYmxlCit7CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IHN0
ZDo6aXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPFQsIFQmJj46OnZhbHVlOworfTsKKworCit0ZW1w
bGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KK3N0cnVjdCBpc19hc3NpZ25hYmxlCit7CisgIHRlbXBs
YXRlIDxjbGFzcyBYLCBjbGFzcyBZPgorICBjb25zdGV4cHIgc3RhdGljIGJvb2wgaGFzX2Fzc2ln
biguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFks
IHNpemVfdCBTID0gc2l6ZW9mKChzdGQ6OmRlY2x2YWw8WD4oKSA9IHN0ZDo6ZGVjbHZhbDxZPigp
LCB0cnVlKSkgPgorICAvLyB0aGUgY29tbWEgb3BlcmF0b3IgaXMgbmVjZXNzYXJ5IGZvciB0aGUg
Y2FzZXMgd2hlcmUgb3BlcmF0b3I9IHJldHVybnMgdm9pZAorICBjb25zdGV4cHIgc3RhdGljIGJv
b2wgaGFzX2Fzc2lnbihib29sKSB7IHJldHVybiB0cnVlOyB9CisKKyAgY29uc3RleHByIHN0YXRp
YyBib29sIHZhbHVlID0gaGFzX2Fzc2lnbjxULCBVPih0cnVlKTsKK307CisKKwordGVtcGxhdGUg
PGNsYXNzIFQ+CitzdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUKK3sKKyAgdGVtcGxh
dGUgPGNsYXNzIFgsIGJvb2wgaGFzX2FueV9tb3ZlX2Fzc2lnbj4KKyAgc3RydWN0IGhhc19ub3Ro
cm93X21vdmVfYXNzaWduIHsKKyAgICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBmYWxz
ZTsKKyAgfTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgWD4KKyAgc3RydWN0IGhhc19ub3Rocm93X21v
dmVfYXNzaWduPFgsIHRydWU+IHsKKyAgICBjb25zdGV4cHIgc3RhdGljIGJvb2wgdmFsdWUgPSBf
X05PRVhDRVBUXyggc3RkOjpkZWNsdmFsPFgmPigpID0gc3RkOjpkZWNsdmFsPFgmJj4oKSApOwor
ICB9OworCisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCB2YWx1ZSA9IGhhc19ub3Rocm93X21vdmVf
YXNzaWduPFQsIGlzX2Fzc2lnbmFibGU8VCYsIFQmJj46OnZhbHVlPjo6dmFsdWU7Cit9OworLy8g
ZW5kIHdvcmthcm91bmQKKworCisjIGVuZGlmCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgZGV0
YWlsXworCisvLyAyMC41LjQsIG9wdGlvbmFsIGZvciBvYmplY3QgdHlwZXMKK3RlbXBsYXRlIDxj
bGFzcyBUPiBjbGFzcyBvcHRpb25hbDsKKworLy8gMjAuNS41LCBvcHRpb25hbCBmb3IgbHZhbHVl
IHJlZmVyZW5jZSB0eXBlcwordGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIG9wdGlvbmFsPFQmPjsK
KworbmFtZXNwYWNlIGRldGFpbF8geworCisvLyB3b3JrYXJvdW5kOiBzdGQgdXRpbGl0eSBmdW5j
dGlvbnMgYXJlbid0IGNvbnN0ZXhwciB5ZXQKK3RlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgY29u
c3RleHByIFQmJiBjb25zdGV4cHJfZm9yd2FyZCh0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVu
Y2U8VD46OnR5cGUmIHQpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIHN0YXRpY19jYXN0PFQmJj4o
dCk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgY29uc3RleHByIFQmJiBjb25zdGV4
cHJfZm9yd2FyZCh0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiB0KSBf
X05PRVhDRVBUCit7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19sdmFsdWVfcmVmZXJlbmNl
PFQ+Ojp2YWx1ZSwgIiEhIik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQmJj4odCk7Cit9CiAK
LXN0cnVjdCBJblBsYWNlVGFnIHsgfTsKLWNvbnN0ZXhwciBJblBsYWNlVGFnIEluUGxhY2UgeyB9
OwordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBjb25zdGV4cHIgdHlwZW5hbWUgc3RkOjpyZW1v
dmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgY29uc3RleHByX21vdmUoVCYmIHQpIF9fTk9FWENFUFQK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNl
PFQ+Ojp0eXBlJiY+KHQpOworfQorCisjaWYgZGVmaW5lZCBOREVCVUcKKyMgZGVmaW5lIFRSMl9P
UFRJT05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKENIRUNLLCBFWFBSKSAoRVhQUikKKyNlbHNlCisj
IGRlZmluZSBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihDSEVDSywgRVhQUikgKChD
SEVDSykgPyAoRVhQUikgOiAoW117YXNzZXJ0KCEjQ0hFQ0spO30oKSwgKEVYUFIpKSkKKyNlbmRp
ZgorCisKKy8vIHN0YXRpY19hZGRyZXNzb2Y6IGEgY29uc3RleHByIHZlcnNpb24gb2YgYWRkcmVz
c29mCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBoYXNfb3ZlcmxvYWRlZF9hZGRyZXNz
b2YKK3sKKyAgdGVtcGxhdGUgPGNsYXNzIFg+CisgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBoYXNf
b3ZlcmxvYWQoLi4uKSB7IHJldHVybiBmYWxzZTsgfQorCisgIHRlbXBsYXRlIDxjbGFzcyBYLCBz
aXplX3QgUyA9IHNpemVvZihzdGQ6OmRlY2x2YWw8WCY+KCkub3BlcmF0b3ImKCkpID4KKyAgY29u
c3RleHByIHN0YXRpYyBib29sIGhhc19vdmVybG9hZChib29sKSB7IHJldHVybiB0cnVlOyB9CisK
KyAgY29uc3RleHByIHN0YXRpYyBib29sIHZhbHVlID0gaGFzX292ZXJsb2FkPFQ+KHRydWUpOwor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyghaGFzX292
ZXJsb2FkZWRfYWRkcmVzc29mPFQ+KT4KK2NvbnN0ZXhwciBUKiBzdGF0aWNfYWRkcmVzc29mKFQm
IHJlZikKK3sKKyAgcmV0dXJuICZyZWY7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBUUjJf
T1BUSU9OQUxfUkVRVUlSRVMoaGFzX292ZXJsb2FkZWRfYWRkcmVzc29mPFQ+KT4KK1QqIHN0YXRp
Y19hZGRyZXNzb2YoVCYgcmVmKQoreworICByZXR1cm4gc3RkOjphZGRyZXNzb2YocmVmKTsKK30K
KworCisvLyB0aGUgY2FsbCB0byBjb252ZXJ0PEE+KGIpIGhhcyByZXR1cm4gdHlwZSBBIGFuZCBj
b252ZXJ0cyBiIHRvIHR5cGUgQSBpZmYgYiBkZWNsdHlwZShiKSBpcyBpbXBsaWNpdGx5IGNvbnZl
cnRpYmxlIHRvIEEKK3RlbXBsYXRlIDxjbGFzcyBVPgorY29uc3RleHByIFUgY29udmVydChVIHYp
IHsgcmV0dXJuIHY7IH0KKworfSAvLyBuYW1lc3BhY2UgZGV0YWlsCisKKworY29uc3RleHByIHN0
cnVjdCB0cml2aWFsX2luaXRfdHt9IHRyaXZpYWxfaW5pdHt9OworCisKKy8vIDIwLjUuNiwgSW4t
cGxhY2UgY29uc3RydWN0aW9uCitjb25zdGV4cHIgc3RydWN0IGluX3BsYWNlX3R7fSBpbl9wbGFj
ZXt9OwogCi1zdHJ1Y3QgTnVsbG9wdFRhZyB7IGV4cGxpY2l0IGNvbnN0ZXhwciBOdWxsb3B0VGFn
KGludCkgeyB9IH07Ci1jb25zdGV4cHIgTnVsbG9wdFRhZyBOdWxsb3B0IHsgMCB9OwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgT3B0aW9uYWwgeworLy8gMjAuNS43LCBEaXNlbmdhZ2Vk
IHN0YXRlIGluZGljYXRvcgorc3RydWN0IG51bGxvcHRfdAoreworICBzdHJ1Y3QgaW5pdHt9Owor
ICBjb25zdGV4cHIgZXhwbGljaXQgbnVsbG9wdF90KGluaXQpe30KK307Citjb25zdGV4cHIgbnVs
bG9wdF90IG51bGxvcHR7bnVsbG9wdF90Ojppbml0KCl9OworCisKKy8vIDIwLjUuOCwgY2xhc3Mg
YmFkX29wdGlvbmFsX2FjY2VzcworY2xhc3MgYmFkX29wdGlvbmFsX2FjY2VzcyA6IHB1YmxpYyBz
dGQ6OmxvZ2ljX2Vycm9yIHsKIHB1YmxpYzoKLSAgICBPcHRpb25hbCgpCi0gICAgICAgIDogbV9p
c0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAgIH0KKyAgZXhwbGljaXQgYmFkX29wdGlvbmFsX2Fj
Y2Vzcyhjb25zdCBzdGQ6OnN0cmluZyYgd2hhdF9hcmcpIDogc3RkOjpsb2dpY19lcnJvcnt3aGF0
X2FyZ30ge30KKyAgZXhwbGljaXQgYmFkX29wdGlvbmFsX2FjY2Vzcyhjb25zdCBjaGFyKiB3aGF0
X2FyZykgOiBzdGQ6OmxvZ2ljX2Vycm9ye3doYXRfYXJnfSB7fQorfTsKIAotICAgIE9wdGlvbmFs
KE51bGxvcHRUYWcpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQoZmFsc2UpCi0gICAgewotICAgIH0K
IAotICAgIE9wdGlvbmFsKGNvbnN0IFQmIHZhbHVlKQotICAgICAgICA6IG1faXNFbmdhZ2VkKHRy
dWUpCi0gICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKHZhbHVlKTsKLSAg
ICB9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK3VuaW9uIHN0b3JhZ2VfdAoreworICB1bnNpZ25lZCBj
aGFyIGR1bW15XzsKKyAgVCB2YWx1ZV87CiAKLSAgICBPcHRpb25hbChjb25zdCBPcHRpb25hbCYg
b3RoZXIpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQob3RoZXIubV9pc0VuZ2FnZWQpCi0gICAgewot
ICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICBuZXcgKE5vdE51bGwsICZtX3Zh
bHVlKSBUKCpvdGhlci5hc1B0cigpKTsKLSAgICB9CisgIGNvbnN0ZXhwciBzdG9yYWdlX3QoIHRy
aXZpYWxfaW5pdF90ICkgX19OT0VYQ0VQVCA6IGR1bW15XygpIHt9OwogCi0gICAgT3B0aW9uYWwo
T3B0aW9uYWwmJiBvdGhlcikKLSAgICAgICAgOiBtX2lzRW5nYWdlZChvdGhlci5tX2lzRW5nYWdl
ZCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzRW5nYWdlZCkKLSAgICAgICAgICAgIG5ldyAoTm90
TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSgqb3RoZXIuYXNQdHIoKSkpOwotICAgIH0KKyAgdGVt
cGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIGNvbnN0ZXhwciBzdG9yYWdlX3QoIEFyZ3MmJi4uLiBh
cmdzICkgOiB2YWx1ZV8oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4p
IHt9CiAKLSAgICBPcHRpb25hbChUJiYgdmFsdWUpCi0gICAgICAgIDogbV9pc0VuZ2FnZWQodHJ1
ZSkKLSAgICB7Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQoV1RGTW92ZSh2YWx1
ZSkpOwotICAgIH0KKyAgfnN0b3JhZ2VfdCgpe30KK307CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIE9wdGlvbmFsKEluUGxhY2VUYWcsIEFyZ3MmJi4uLiBhcmdzKQotICAg
ICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCi0gICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZt
X3ZhbHVlKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgfQogCi0gICAgfk9w
dGlvbmFsKCkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICB9Cit0ZW1wbGF0ZSA8Y2xh
c3MgVD4KK3VuaW9uIGNvbnN0ZXhwcl9zdG9yYWdlX3QKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGR1
bW15XzsKKyAgICBUIHZhbHVlXzsKIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oTnVsbG9wdFRh
ZykKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2VfdCggdHJpdmlhbF9pbml0X3QgKSBf
X05PRVhDRVBUIDogZHVtbXlfKCkge307CiAKLSAgICBPcHRpb25hbCYgb3BlcmF0b3I9KGNvbnN0
IE9wdGlvbmFsJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAg
ICAgICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIGlm
IChvdGhlci5tX2lzRW5nYWdlZCkgewotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1
ZSkgVCgqb3RoZXIuYXNQdHIoKSk7Ci0gICAgICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MuLi4gQXJncz4KKyAgICBjb25zdGV4cHIgY29uc3RleHByX3N0b3JhZ2VfdCggQXJncyYmLi4u
IGFyZ3MgKSA6IHZhbHVlXyhkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxBcmdzPihhcmdzKS4u
Likge30KIAotICAgIE9wdGlvbmFsJiBvcGVyYXRvcj0oT3B0aW9uYWwmJiBvdGhlcikKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzID09ICZvdGhlcikKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsK
LQotICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIGlmIChvdGhlci5tX2lzRW5nYWdlZCkgewot
ICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0
cigpKSk7Ci0gICAgICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuICp0aGlzOwotICAgIH0KKyAgICB+Y29uc3RleHByX3N0b3JhZ2VfdCgpID0gZGVm
YXVsdDsKK307CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBjbGFzcyA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8
VT46OnR5cGUsIFQ+Ojp2YWx1ZT46OnR5cGU+Ci0gICAgT3B0aW9uYWwmIG9wZXJhdG9yPShVJiYg
dSkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92
YWx1ZSkgVChzdGQ6OmZvcndhcmQ8VT4odSkpOwotICAgICAgICBtX2lzRW5nYWdlZCA9IHRydWU7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9CiAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gbV9pc0VuZ2FnZWQ7IH0KK3RlbXBsYXRlIDxjbGFzcyBUPgor
c3RydWN0IG9wdGlvbmFsX2Jhc2UKK3sKKyAgICBib29sIGluaXRfOworICAgIHN0b3JhZ2VfdDxU
PiBzdG9yYWdlXzsKIAotICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRyKCk7Ci0gICAg
fQorICAgIGNvbnN0ZXhwciBvcHRpb25hbF9iYXNlKCkgX19OT0VYQ0VQVCA6IGluaXRfKGZhbHNl
KSwgc3RvcmFnZV8odHJpdmlhbF9pbml0KSB7fTsKIAotICAgIFQqIG9wZXJhdG9yLT4oKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuIGFzUHRyKCk7
Ci0gICAgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcHRpb25hbF9iYXNlKGNvbnN0IFQmIHYp
IDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKHYpIHt9CiAKLSAgICBjb25zdCBUJiBvcGVyYXRvcioo
KSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9Ci0gICAgVCYgb3BlcmF0b3IqKCkgeyByZXR1cm4g
dmFsdWUoKTsgfQorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcHRpb25hbF9iYXNlKFQmJiB2KSA6
IGluaXRfKHRydWUpLCBzdG9yYWdlXyhkZXRhaWxfOjpjb25zdGV4cHJfbW92ZSh2KSkge30KIAot
ICAgIFQmIHZhbHVlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2lzRW5nYWdlZCk7Ci0gICAg
ICAgIHJldHVybiAqYXNQdHIoKTsKLSAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+
IGV4cGxpY2l0IG9wdGlvbmFsX2Jhc2UoaW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAg
ICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSB7fQogCi0gICAgY29uc3QgVCYgdmFsdWUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1faXNFbmdhZ2VkKTsKLSAgICAgICAgcmV0dXJuICphc1B0cigpOwotICAg
IH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncywgVFIyX09QVElPTkFMX1JF
UVVJUkVTKHN0ZDo6aXNfY29uc3RydWN0aWJsZTxULCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VT4+
KT4KKyAgICBleHBsaWNpdCBvcHRpb25hbF9iYXNlKGluX3BsYWNlX3QsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxVPiBpbCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogaW5pdF8odHJ1ZSksIHN0
b3JhZ2VfKGlsLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgotICAgIFQgdmFsdWVPcihVJiYgdmFsdWUpIGNvbnN0Ci0gICAgewotICAg
ICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gKmFzUHRyKCk7CisgICAg
fm9wdGlvbmFsX2Jhc2UoKSB7IGlmIChpbml0Xykgc3RvcmFnZV8udmFsdWVfLlQ6On5UKCk7IH0K
K307CisKKwordGVtcGxhdGUgPGNsYXNzIFQ+CitzdHJ1Y3QgY29uc3RleHByX29wdGlvbmFsX2Jh
c2UKK3sKKyAgICBib29sIGluaXRfOworICAgIGNvbnN0ZXhwcl9zdG9yYWdlX3Q8VD4gc3RvcmFn
ZV87CisKKyAgICBjb25zdGV4cHIgY29uc3RleHByX29wdGlvbmFsX2Jhc2UoKSBfX05PRVhDRVBU
IDogaW5pdF8oZmFsc2UpLCBzdG9yYWdlXyh0cml2aWFsX2luaXQpIHt9OworCisgICAgZXhwbGlj
aXQgY29uc3RleHByIGNvbnN0ZXhwcl9vcHRpb25hbF9iYXNlKGNvbnN0IFQmIHYpIDogaW5pdF8o
dHJ1ZSksIHN0b3JhZ2VfKHYpIHt9CisKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgY29uc3RleHBy
X29wdGlvbmFsX2Jhc2UoVCYmIHYpIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGRldGFpbF86OmNv
bnN0ZXhwcl9tb3ZlKHYpKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+IGV4cGxp
Y2l0IGNvbnN0ZXhwciBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZShpbl9wbGFjZV90LCBBcmdzJiYu
Li4gYXJncykKKyAgICAgIDogaW5pdF8odHJ1ZSksIHN0b3JhZ2VfKGRldGFpbF86OmNvbnN0ZXhw
cl9mb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFUsIGNs
YXNzLi4uIEFyZ3MsIFRSMl9PUFRJT05BTF9SRVFVSVJFUyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8
VCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+Pik+CisgICAgT1BUSU9OQUxfQ09OU1RFWFBSX0lO
SVRfTElTVCBleHBsaWNpdCBjb25zdGV4cHJfb3B0aW9uYWxfYmFzZShpbl9wbGFjZV90LCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgOiBpbml0Xyh0
cnVlKSwgc3RvcmFnZV8oaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikge30KKworICAg
IH5jb25zdGV4cHJfb3B0aW9uYWxfYmFzZSgpID0gZGVmYXVsdDsKK307CisKK3RlbXBsYXRlIDxj
bGFzcyBUPgordXNpbmcgT3B0aW9uYWxCYXNlID0gdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwK
KyAgICBzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgcG9zc2libGUKKyAgICBjb25zdGV4cHJfb3B0aW9uYWxfYmFz
ZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZT4sIC8vIHVzZSBiYXNlIHdpdGgg
dHJpdmlhbCBkZXN0cnVjdG9yCisgICAgb3B0aW9uYWxfYmFzZTx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jb25zdDxUPjo6dHlwZT4KKz46OnR5cGU7CisKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2Ns
YXNzIG9wdGlvbmFsIDogcHJpdmF0ZSBPcHRpb25hbEJhc2U8VD4KK3sKKyAgc3RhdGljX2Fzc2Vy
dCggIXN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlLCBudWxsb3B0X3Q+
Ojp2YWx1ZSwgImJhZCBUIiApOworICBzdGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPHR5cGVu
YW1lIHN0ZDo6ZGVjYXk8VD46OnR5cGUsIGluX3BsYWNlX3Q+Ojp2YWx1ZSwgImJhZCBUIiApOwog
Ci0gICAgICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpOwotICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgVCB2YWx1ZU9yQ29tcHV0ZShVIGNhbGxiYWNrKSBjb25z
dAotICAgIHsKLSAgICAgICAgaWYgKG1faXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuICph
c1B0cigpOworICBjb25zdGV4cHIgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IF9fTk9FWENFUFQg
eyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+Ojppbml0XzsgfQorICB0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jb25zdDxUPjo6dHlwZSogZGF0YXB0cigpIHsgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihPcHRp
b25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXyk7IH0KKyAgY29uc3RleHByIGNvbnN0IFQqIGRh
dGFwdHIoKSBjb25zdCB7IHJldHVybiBkZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKE9wdGlvbmFs
QmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfKTsgfQogCi0gICAgICAgIHJldHVybiBjYWxsYmFjaygp
OworIyBpZiBPUFRJT05BTF9IQVNfVEhJU19SVkFMVUVfUkVGUyA9PSAxCisgIGNvbnN0ZXhwciBj
b25zdCBUJiBjb250YWluZWRfdmFsKCkgY29uc3QmIHsgcmV0dXJuIE9wdGlvbmFsQmFzZTxUPjo6
c3RvcmFnZV8udmFsdWVfOyB9CisjICAgaWYgT1BUSU9OQUxfSEFTX01PVkVfQUNDRVNTT1JTID09
IDEKKyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCYmIGNvbnRhaW5lZF92YWwoKSAmJiB7
IHJldHVybiBzdGQ6Om1vdmUoT3B0aW9uYWxCYXNlPFQ+OjpzdG9yYWdlXy52YWx1ZV8pOyB9Cisg
IE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQmIGNvbnRhaW5lZF92YWwoKSAmIHsgcmV0dXJu
IE9wdGlvbmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisjICAgZWxzZQorICBUJiBjb250
YWluZWRfdmFsKCkgJiB7IHJldHVybiBPcHRpb25hbEJhc2U8VD46OnN0b3JhZ2VfLnZhbHVlXzsg
fQorICBUJiYgY29udGFpbmVkX3ZhbCgpICYmIHsgcmV0dXJuIHN0ZDo6bW92ZShPcHRpb25hbEJh
c2U8VD46OnN0b3JhZ2VfLnZhbHVlXyk7IH0KKyMgICBlbmRpZgorIyBlbHNlCisgIGNvbnN0ZXhw
ciBjb25zdCBUJiBjb250YWluZWRfdmFsKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWxCYXNlPFQ+
OjpzdG9yYWdlXy52YWx1ZV87IH0KKyAgVCYgY29udGFpbmVkX3ZhbCgpIHsgcmV0dXJuIE9wdGlv
bmFsQmFzZTxUPjo6c3RvcmFnZV8udmFsdWVfOyB9CisjIGVuZGlmCisKKyAgdm9pZCBjbGVhcigp
IF9fTk9FWENFUFQgeworICAgIGlmIChpbml0aWFsaXplZCgpKSBkYXRhcHRyKCktPlQ6On5UKCk7
CisgICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IGZhbHNlOworICB9CisKKyAgdGVtcGxhdGUg
PGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgaW5pdGlhbGl6ZShBcmdzJiYuLi4gYXJncykgX19OT0VY
Q0VQVF8oX19OT0VYQ0VQVF8oVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSkKKyAgewor
ICAgIEFTU0VSVCghT3B0aW9uYWxCYXNlPFQ+Ojppbml0Xyk7CisgICAgOjpuZXcgKHN0YXRpY19j
YXN0PHZvaWQqPihkYXRhcHRyKCkpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisg
ICAgT3B0aW9uYWxCYXNlPFQ+Ojppbml0XyA9IHRydWU7CisgIH0KKworICB0ZW1wbGF0ZSA8Y2xh
c3MgVSwgY2xhc3MuLi4gQXJncz4KKyAgdm9pZCBpbml0aWFsaXplKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxVPiBpbCwgQXJncyYmLi4uIGFyZ3MpIF9fTk9FWENFUFRfKF9fTk9FWENFUFRfKFQoaWws
IHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpKQorICB7CisgICAgQVNTRVJUKCFPcHRpb25h
bEJhc2U8VD46OmluaXRfKTsKKyAgICA6Om5ldyAoc3RhdGljX2Nhc3Q8dm9pZCo+KGRhdGFwdHIo
KSkpIFQoaWwsIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgT3B0aW9uYWxCYXNl
PFQ+Ojppbml0XyA9IHRydWU7CisgIH0KKworcHVibGljOgorICB0eXBlZGVmIFQgdmFsdWVfdHlw
ZTsKKworICAvLyAyMC41LjUuMSwgY29uc3RydWN0b3JzCisgIGNvbnN0ZXhwciBvcHRpb25hbCgp
IF9fTk9FWENFUFQgOiBPcHRpb25hbEJhc2U8VD4oKSAge307CisgIGNvbnN0ZXhwciBvcHRpb25h
bChudWxsb3B0X3QpIF9fTk9FWENFUFQgOiBPcHRpb25hbEJhc2U8VD4oKSB7fTsKKworICBvcHRp
b25hbChjb25zdCBvcHRpb25hbCYgcmhzKQorICA6IE9wdGlvbmFsQmFzZTxUPigpCisgIHsKKyAg
ICBpZiAocmhzLmluaXRpYWxpemVkKCkpIHsKKyAgICAgICAgOjpuZXcgKHN0YXRpY19jYXN0PHZv
aWQqPihkYXRhcHRyKCkpKSBUKCpyaHMpOworICAgICAgICBPcHRpb25hbEJhc2U8VD46OmluaXRf
ID0gdHJ1ZTsKICAgICB9CisgIH0KIAotcHJpdmF0ZToKLSAgICBjb25zdCBUKiBhc1B0cigpIGNv
bnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KCZtX3ZhbHVlKTsgfQotICAg
IFQqIGFzUHRyKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oJm1fdmFsdWUpOyB9Ci0g
ICAgdm9pZCBkZXN0cm95KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lzRW5nYWdlZCkgewotICAg
ICAgICAgICAgYXNQdHIoKS0+flQoKTsKLSAgICAgICAgICAgIG1faXNFbmdhZ2VkID0gZmFsc2U7
Ci0gICAgICAgIH0KKyAgb3B0aW9uYWwob3B0aW9uYWwmJiByaHMpIF9fTk9FWENFUFRfKGRldGFp
bF86OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKKyAgOiBPcHRpb25h
bEJhc2U8VD4oKQorICB7CisgICAgaWYgKHJocy5pbml0aWFsaXplZCgpKSB7CisgICAgICAgIDo6
bmV3IChzdGF0aWNfY2FzdDx2b2lkKj4oZGF0YXB0cigpKSkgVChzdGQ6Om1vdmUoKnJocykpOwor
ICAgICAgICBPcHRpb25hbEJhc2U8VD46OmluaXRfID0gdHJ1ZTsKICAgICB9CisgIH0KKworICBj
b25zdGV4cHIgb3B0aW9uYWwoY29uc3QgVCYgdikgOiBPcHRpb25hbEJhc2U8VD4odikge30KKwor
ICBjb25zdGV4cHIgb3B0aW9uYWwoVCYmIHYpIDogT3B0aW9uYWxCYXNlPFQ+KGRldGFpbF86OmNv
bnN0ZXhwcl9tb3ZlKHYpKSB7fQorCisgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgorICBleHBs
aWNpdCBjb25zdGV4cHIgb3B0aW9uYWwoaW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgIDog
T3B0aW9uYWxCYXNlPFQ+KGluX3BsYWNlX3R7fSwgZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8
QXJncz4oYXJncykuLi4pIHt9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3Ms
IFRSMl9PUFRJT05BTF9SRVFVSVJFUyhzdGQ6OmlzX2NvbnN0cnVjdGlibGU8VCwgc3RkOjppbml0
aWFsaXplcl9saXN0PFU+Pik+CisgIE9QVElPTkFMX0NPTlNURVhQUl9JTklUX0xJU1QgZXhwbGlj
aXQgb3B0aW9uYWwoaW5fcGxhY2VfdCwgc3RkOjppbml0aWFsaXplcl9saXN0PFU+IGlsLCBBcmdz
JiYuLi4gYXJncykKKyAgOiBPcHRpb25hbEJhc2U8VD4oaW5fcGxhY2VfdHt9LCBpbCwgZGV0YWls
Xzo6Y29uc3RleHByX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9CisKKyAgLy8gMjAuNS40LjIs
IERlc3RydWN0b3IKKyAgfm9wdGlvbmFsKCkgPSBkZWZhdWx0OworCisgIC8vIDIwLjUuNC4zLCBh
c3NpZ25tZW50CisgIG9wdGlvbmFsJiBvcGVyYXRvcj0obnVsbG9wdF90KSBfX05PRVhDRVBUCisg
IHsKKyAgICBjbGVhcigpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIG9wdGlvbmFsJiBv
cGVyYXRvcj0oY29uc3Qgb3B0aW9uYWwmIHJocykKKyAgeworICAgIGlmICAgICAgKGluaXRpYWxp
emVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gZmFsc2UpIGNsZWFyKCk7Cisg
ICAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQoKSA9PSBmYWxzZSAmJiByaHMuaW5pdGlhbGl6ZWQoKSA9
PSB0cnVlKSAgaW5pdGlhbGl6ZSgqcmhzKTsKKyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09
IHRydWUgICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICBjb250YWluZWRfdmFsKCkgPSAq
cmhzOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIG9wdGlvbmFsJiBvcGVyYXRvcj0ob3B0
aW9uYWwmJiByaHMpCisgIF9fTk9FWENFUFRfKGRldGFpbF86OmlzX25vdGhyb3dfbW92ZV9hc3Np
Z25hYmxlPFQ+Ojp2YWx1ZSAmJiBkZXRhaWxfOjppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJs
ZTxUPjo6dmFsdWUpCisgIHsKKyAgICBpZiAgICAgIChpbml0aWFsaXplZCgpID09IHRydWUgICYm
IHJocy5pbml0aWFsaXplZCgpID09IGZhbHNlKSBjbGVhcigpOworICAgIGVsc2UgaWYgKGluaXRp
YWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRpYWxpemVkKCkgPT0gdHJ1ZSkgIGluaXRpYWxp
emUoc3RkOjptb3ZlKCpyaHMpKTsKKyAgICBlbHNlIGlmIChpbml0aWFsaXplZCgpID09IHRydWUg
ICYmIHJocy5pbml0aWFsaXplZCgpID09IHRydWUpICBjb250YWluZWRfdmFsKCkgPSBzdGQ6Om1v
dmUoKnJocyk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFU+
CisgIGF1dG8gb3BlcmF0b3I9KFUmJiB2KQorICAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZgor
ICA8CisgICAgc3RkOjppc19zYW1lPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8VT46OnR5cGUsIFQ+Ojp2
YWx1ZSwKKyAgICBvcHRpb25hbCYKKyAgPjo6dHlwZQorICB7CisgICAgaWYgKGluaXRpYWxpemVk
KCkpIHsgY29udGFpbmVkX3ZhbCgpID0gc3RkOjpmb3J3YXJkPFU+KHYpOyB9CisgICAgZWxzZSAg
ICAgICAgICAgICAgIHsgaW5pdGlhbGl6ZShzdGQ6OmZvcndhcmQ8VT4odikpOyAgfQorICAgIHJl
dHVybiAqdGhpczsKKyAgfQorCisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQg
ZW1wbGFjZShBcmdzJiYuLi4gYXJncykKKyAgeworICAgIGNsZWFyKCk7CisgICAgaW5pdGlhbGl6
ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNz
IFUsIGNsYXNzLi4uIEFyZ3M+CisgIHZvaWQgZW1wbGFjZShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
VT4gaWwsIEFyZ3MmJi4uLiBhcmdzKQorICB7CisgICAgY2xlYXIoKTsKKyAgICBpbml0aWFsaXpl
PFUsIEFyZ3MuLi4+KGlsLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICB9CisKKyAg
Ly8gMjAuNS40LjQsIFN3YXAKKyAgdm9pZCBzd2FwKG9wdGlvbmFsPFQ+JiByaHMpIF9fTk9FWENF
UFRfKGRldGFpbF86OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSAmJiBf
X05PRVhDRVBUXyhzd2FwKHN0ZDo6ZGVjbHZhbDxUJj4oKSwgc3RkOjpkZWNsdmFsPFQmPigpKSkp
CisgIHsKKyAgICBpZiAgICAgIChpbml0aWFsaXplZCgpID09IHRydWUgICYmIHJocy5pbml0aWFs
aXplZCgpID09IGZhbHNlKSB7IHJocy5pbml0aWFsaXplKHN0ZDo6bW92ZSgqKnRoaXMpKTsgY2xl
YXIoKTsgfQorICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gZmFsc2UgJiYgcmhzLmluaXRp
YWxpemVkKCkgPT0gdHJ1ZSkgIHsgaW5pdGlhbGl6ZShzdGQ6Om1vdmUoKnJocykpOyByaHMuY2xl
YXIoKTsgfQorICAgIGVsc2UgaWYgKGluaXRpYWxpemVkKCkgPT0gdHJ1ZSAgJiYgcmhzLmluaXRp
YWxpemVkKCkgPT0gdHJ1ZSkgIHsgdXNpbmcgc3RkOjpzd2FwOyBzd2FwKCoqdGhpcywgKnJocyk7
IH0KKyAgfQorCisgIC8vIDIwLjUuNC41LCBPYnNlcnZlcnMKKworICBleHBsaWNpdCBjb25zdGV4
cHIgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IF9fTk9FWENFUFQgeyByZXR1cm4gaW5pdGlhbGl6ZWQo
KTsgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0KiBvcGVyYXRvciAtPigpIGNvbnN0IHsKKyAgICBy
ZXR1cm4gVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04oaW5pdGlhbGl6ZWQoKSwgZGF0
YXB0cigpKTsKKyAgfQorCisjIGlmIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisK
KyAgT1BUSU9OQUxfTVVUQUJMRV9DT05TVEVYUFIgVCogb3BlcmF0b3IgLT4oKSB7CisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4g
YmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05TVEVYUFJfQVNT
RVJUKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBkYXRhcHRyKCk7CisgIH0KKworICBjb25z
dGV4cHIgVCBjb25zdCYgb3BlcmF0b3IgKigpIGNvbnN0JiB7CisgICAgcmV0dXJuIFRSMl9PUFRJ
T05BTF9BU1NFUlRFRF9FWFBSRVNTSU9OKGluaXRpYWxpemVkKCksIGNvbnRhaW5lZF92YWwoKSk7
CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiBvcGVyYXRvciAqKCkgJiB7
CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24g
dGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBDT05T
VEVYUFJfQVNTRVJUKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7
CisgIH0KKworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiYgb3BlcmF0b3IgKigpICYm
IHsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBvZmZlciBzcGVjaWFsIGFzc2VydCBmdW5jdGlv
biB0aGF0IGNhbiBiZSB1c2VkIHVuZGVyIHRoZSBjb250ZXhwciBjb250ZXh0LgorICAgIC8vIENP
TlNURVhQUl9BU1NFUlQoaW5pdGlhbGl6ZWQoKSk7CisgICAgcmV0dXJuIGRldGFpbF86OmNvbnN0
ZXhwcl9tb3ZlKGNvbnRhaW5lZF92YWwoKSk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYg
dmFsdWUoKSBjb25zdCYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwg
YXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRl
eHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhy
b3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRf
dmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0KKworICBPUFRJT05BTF9N
VVRBQkxFX0NPTlNURVhQUiBUJiB2YWx1ZSgpICYgeworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRv
IG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdW5kZXIgdGhl
IGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxpemVkKCkgPyBjb250YWlu
ZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2Vz
cyIpLCBjb250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWluZWRfdmFsKCk7CisgIH0K
KworICBPUFRJT05BTF9NVVRBQkxFX0NPTlNURVhQUiBUJiYgdmFsdWUoKSAmJiB7CisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rpb24gdGhhdCBjYW4g
YmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBpZiAoIWluaXRpYWxp
emVkKCkpIF9fVEhST1dfRVhDRVBUSU9OKGJhZF9vcHRpb25hbF9hY2Nlc3MoImJhZCBvcHRpb25h
bCBhY2Nlc3MiKSk7CisgICAgcmV0dXJuIHN0ZDo6bW92ZShjb250YWluZWRfdmFsKCkpOworICB9
CisKKyMgZWxzZQorCisgIFQqIG9wZXJhdG9yIC0+KCkgeworICAgIGFzc2VydCAoaW5pdGlhbGl6
ZWQoKSk7CisgICAgcmV0dXJuIGRhdGFwdHIoKTsKKyAgfQorCisgIGNvbnN0ZXhwciBUIGNvbnN0
JiBvcGVyYXRvciAqKCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURf
RVhQUkVTU0lPTihpbml0aWFsaXplZCgpLCBjb250YWluZWRfdmFsKCkpOworICB9CisKKyAgVCYg
b3BlcmF0b3IgKigpIHsKKyAgICBhc3NlcnQgKGluaXRpYWxpemVkKCkpOworICAgIHJldHVybiBj
b250YWluZWRfdmFsKCk7CisgIH0KKworICBjb25zdGV4cHIgVCBjb25zdCYgdmFsdWUoKSBjb25z
dCB7CisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gb2ZmZXIgc3BlY2lhbCBhc3NlcnQgZnVuY3Rp
b24gdGhhdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgY29udGV4cHIgY29udGV4dC4KKyAgICAvLyBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IGNvbnRhaW5lZF92YWwoKSA6ICh0aHJvdyBiYWRfb3B0aW9u
YWxfYWNjZXNzKCJiYWQgb3B0aW9uYWwgYWNjZXNzIiksIGNvbnRhaW5lZF92YWwoKSk7CisgICAg
cmV0dXJuIGNvbnRhaW5lZF92YWwoKTsKKyAgfQorCisgIFQmIHZhbHVlKCkgeworICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2FuIGJl
IHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBjb250YWluZWRfdmFsKCkgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFk
IG9wdGlvbmFsIGFjY2VzcyIpLCBjb250YWluZWRfdmFsKCkpOworICAgIHJldHVybiBjb250YWlu
ZWRfdmFsKCk7CisgIH0KKworIyBlbmRpZgorCisjIGlmIE9QVElPTkFMX0hBU19USElTX1JWQUxV
RV9SRUZTID09IDEKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVj4KKyAgY29uc3RleHByIFQgdmFsdWVf
b3IoViYmIHYpIGNvbnN0JgorICB7CisgICAgcmV0dXJuICp0aGlzID8gKip0aGlzIDogZGV0YWls
Xzo6Y29udmVydDxUPihkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKwor
IyAgIGlmIE9QVElPTkFMX0hBU19NT1ZFX0FDQ0VTU09SUyA9PSAxCisKKyAgdGVtcGxhdGUgPGNs
YXNzIFY+CisgIE9QVElPTkFMX01VVEFCTEVfQ09OU1RFWFBSIFQgdmFsdWVfb3IoViYmIHYpICYm
CisgIHsKKyAgICByZXR1cm4gKnRoaXMgPyBkZXRhaWxfOjpjb25zdGV4cHJfbW92ZShjb25zdF9j
YXN0PG9wdGlvbmFsPFQ+Jj4oKnRoaXMpLmNvbnRhaW5lZF92YWwoKSkgOiBkZXRhaWxfOjpjb252
ZXJ0PFQ+KGRldGFpbF86OmNvbnN0ZXhwcl9mb3J3YXJkPFY+KHYpKTsKKyAgfQorCisjICAgZWxz
ZQorCisgIHRlbXBsYXRlIDxjbGFzcyBWPgorICBUIHZhbHVlX29yKFYmJiB2KSAmJgorICB7Cisg
ICAgcmV0dXJuICp0aGlzID8gZGV0YWlsXzo6Y29uc3RleHByX21vdmUoY29uc3RfY2FzdDxvcHRp
b25hbDxUPiY+KCp0aGlzKS5jb250YWluZWRfdmFsKCkpIDogZGV0YWlsXzo6Y29udmVydDxUPihk
ZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KKworIyAgIGVuZGlmCisKKyMg
ZWxzZQorCisgIHRlbXBsYXRlIDxjbGFzcyBWPgorICBjb25zdGV4cHIgVCB2YWx1ZV9vcihWJiYg
dikgY29uc3QKKyAgeworICAgIHJldHVybiAqdGhpcyA/ICoqdGhpcyA6IGRldGFpbF86OmNvbnZl
cnQ8VD4oZGV0YWlsXzo6Y29uc3RleHByX2ZvcndhcmQ8Vj4odikpOworICB9CisKKyMgZW5kaWYK
KworfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIG9wdGlvbmFsPFQmPgoreworICBz
dGF0aWNfYXNzZXJ0KCAhc3RkOjppc19zYW1lPFQsIG51bGxvcHRfdD46OnZhbHVlLCAiYmFkIFQi
ICk7CisgIHN0YXRpY19hc3NlcnQoICFzdGQ6OmlzX3NhbWU8VCwgaW5fcGxhY2VfdD46OnZhbHVl
LCAiYmFkIFQiICk7CisgIFQqIHJlZjsKKworcHVibGljOgorCisgIC8vIDIwLjUuNS4xLCBjb25z
dHJ1Y3Rpb24vZGVzdHJ1Y3Rpb24KKyAgY29uc3RleHByIG9wdGlvbmFsKCkgX19OT0VYQ0VQVCA6
IHJlZihudWxscHRyKSB7fQorCisgIGNvbnN0ZXhwciBvcHRpb25hbChudWxsb3B0X3QpIF9fTk9F
WENFUFQgOiByZWYobnVsbHB0cikge30KKworICBjb25zdGV4cHIgb3B0aW9uYWwoVCYgdikgX19O
T0VYQ0VQVCA6IHJlZihkZXRhaWxfOjpzdGF0aWNfYWRkcmVzc29mKHYpKSB7fQorCisgIG9wdGlv
bmFsKFQmJikgPSBkZWxldGU7CisKKyAgY29uc3RleHByIG9wdGlvbmFsKGNvbnN0IG9wdGlvbmFs
JiByaHMpIF9fTk9FWENFUFQgOiByZWYocmhzLnJlZikge30KKworICBleHBsaWNpdCBjb25zdGV4
cHIgb3B0aW9uYWwoaW5fcGxhY2VfdCwgVCYgdikgX19OT0VYQ0VQVCA6IHJlZihkZXRhaWxfOjpz
dGF0aWNfYWRkcmVzc29mKHYpKSB7fQorCisgIGV4cGxpY2l0IG9wdGlvbmFsKGluX3BsYWNlX3Qs
IFQmJikgPSBkZWxldGU7CisKKyAgfm9wdGlvbmFsKCkgPSBkZWZhdWx0OworCisgIC8vIDIwLjUu
NS4yLCBtdXRhdGlvbgorICBvcHRpb25hbCYgb3BlcmF0b3I9KG51bGxvcHRfdCkgX19OT0VYQ0VQ
VCB7CisgICAgcmVmID0gbnVsbHB0cjsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KIAotICAgIGJv
b2wgbV9pc0VuZ2FnZWQ7Ci0gICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9m
KFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1fdmFsdWU7CisgIC8vIG9w
dGlvbmFsJiBvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWwmIHJocykgX19OT0VYQ0VQVCB7CisgICAg
Ly8gcmVmID0gcmhzLnJlZjsKKyAgICAvLyByZXR1cm4gKnRoaXM7CisgIC8vIH0KKworICAvLyBv
cHRpb25hbCYgb3BlcmF0b3I9KG9wdGlvbmFsJiYgcmhzKSBfX05PRVhDRVBUIHsKKyAgICAvLyBy
ZWYgPSByaHMucmVmOworICAgIC8vIHJldHVybiAqdGhpczsKKyAgLy8gfQorCisgIHRlbXBsYXRl
IDx0eXBlbmFtZSBVPgorICBhdXRvIG9wZXJhdG9yPShVJiYgcmhzKSBfX05PRVhDRVBUCisgIC0+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCisgIDwKKyAgICBzdGQ6OmlzX3NhbWU8dHlwZW5hbWUg
c3RkOjpkZWNheTxVPjo6dHlwZSwgb3B0aW9uYWw8VCY+Pjo6dmFsdWUsCisgICAgb3B0aW9uYWwm
CisgID46OnR5cGUKKyAgeworICAgIHJlZiA9IHJocy5yZWY7CisgICAgcmV0dXJuICp0aGlzOwor
ICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIGF1dG8gb3BlcmF0b3I9KFUmJiByaHMp
IF9fTk9FWENFUFQKKyAgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWYKKyAgPAorICAgICFzdGQ6
OmlzX3NhbWU8dHlwZW5hbWUgc3RkOjpkZWNheTxVPjo6dHlwZSwgb3B0aW9uYWw8VCY+Pjo6dmFs
dWUsCisgICAgb3B0aW9uYWwmCisgID46OnR5cGUKKyAgPSBkZWxldGU7CisKKyAgdm9pZCBlbXBs
YWNlKFQmIHYpIF9fTk9FWENFUFQgeworICAgIHJlZiA9IGRldGFpbF86OnN0YXRpY19hZGRyZXNz
b2Yodik7CisgIH0KKworICB2b2lkIGVtcGxhY2UoVCYmKSA9IGRlbGV0ZTsKKworCisgIHZvaWQg
c3dhcChvcHRpb25hbDxUJj4mIHJocykgX19OT0VYQ0VQVAorICB7CisgICAgc3RkOjpzd2FwKHJl
ZiwgcmhzLnJlZik7CisgIH0KKworICAvLyAyMC41LjUuMywgb2JzZXJ2ZXJzCisgIGNvbnN0ZXhw
ciBUKiBvcGVyYXRvci0+KCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJU
RURfRVhQUkVTU0lPTihyZWYsIHJlZik7CisgIH0KKworICBjb25zdGV4cHIgVCYgb3BlcmF0b3Iq
KCkgY29uc3QgeworICAgIHJldHVybiBUUjJfT1BUSU9OQUxfQVNTRVJURURfRVhQUkVTU0lPTihy
ZWYsICpyZWYpOworICB9CisKKyAgY29uc3RleHByIFQmIHZhbHVlKCkgY29uc3QgeworICAgIC8v
IEZJWE1FOiBXZSBuZWVkIHRvIG9mZmVyIHNwZWNpYWwgYXNzZXJ0IGZ1bmN0aW9uIHRoYXQgY2Fu
IGJlIHVzZWQgdW5kZXIgdGhlIGNvbnRleHByIGNvbnRleHQuCisgICAgLy8gcmV0dXJuIHJlZiA/
ICpyZWYgOiAodGhyb3cgYmFkX29wdGlvbmFsX2FjY2VzcygiYmFkIG9wdGlvbmFsIGFjY2VzcyIp
LCAqcmVmKTsKKyAgICByZXR1cm4gKnJlZjsKKyAgfQorCisgIGV4cGxpY2l0IGNvbnN0ZXhwciBv
cGVyYXRvciBib29sKCkgY29uc3QgX19OT0VYQ0VQVCB7CisgICAgcmV0dXJuIHJlZiAhPSBudWxs
cHRyOworICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIFY+CisgIGNvbnN0ZXhwciB0eXBlbmFtZSBz
dGQ6OmRlY2F5PFQ+Ojp0eXBlIHZhbHVlX29yKFYmJiB2KSBjb25zdAorICB7CisgICAgcmV0dXJu
ICp0aGlzID8gKip0aGlzIDogZGV0YWlsXzo6Y29udmVydDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+
Ojp0eXBlPihkZXRhaWxfOjpjb25zdGV4cHJfZm9yd2FyZDxWPih2KSk7CisgIH0KK307CisKKwor
dGVtcGxhdGUgPGNsYXNzIFQ+CitjbGFzcyBvcHRpb25hbDxUJiY+Cit7CisgIHN0YXRpY19hc3Nl
cnQoIHNpemVvZihUKSA9PSAwLCAib3B0aW9uYWwgcnZhbHVlIHJlZmVyZW5jZXMgZGlzYWxsb3dl
ZCIgKTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNvbnN0IE9wdGlvbmFsPFQ+JiByaHMpCisKKy8v
IDIwLjUuOCwgUmVsYXRpb25hbCBvcGVyYXRvcnMKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBvcHRpb25hbDxU
PiYgeSkKK3sKKyAgcmV0dXJuIGJvb2woeCkgIT0gYm9vbCh5KSA/IGZhbHNlIDogYm9vbCh4KSA9
PSBmYWxzZSA/IHRydWUgOiAqeCA9PSAqeTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIGNvbnN0IG9wdGlvbmFs
PFQ+JiB5KQoreworICByZXR1cm4gISh4ID09IHkpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBvcHRp
b25hbDxUPiYgeSkKK3sKKyAgcmV0dXJuICgheSkgPyBmYWxzZSA6ICgheCkgPyB0cnVlIDogKngg
PCAqeTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihj
b25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3Qgb3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVybiAo
eSA8IHgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBvcHRpb25hbDxUPiYgeCwgY29uc3Qgb3B0aW9uYWw8VD4mIHkpCit7CisgIHJldHVy
biAhKHkgPCB4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPj0oY29uc3Qgb3B0aW9uYWw8VD4mIHgsIGNvbnN0IG9wdGlvbmFsPFQ+JiB5KQoreworICBy
ZXR1cm4gISh4IDwgeSk7Cit9CisKKworLy8gMjAuNS45LCBDb21wYXJpc29uIHdpdGggbnVsbG9w
dAordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qgb3B0
aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0obnVsbG9wdF90
LCBjb25zdCBvcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4KTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3Qgb3B0
aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4KTsK
K30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0obnVsbG9w
dF90LCBjb25zdCBvcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25z
dCBvcHRpb25hbDxUPiYsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gZmFsc2U7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwobnVsbG9w
dF90LCBjb25zdCBvcHRpb25hbDxUPiYgeCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oY29u
c3Qgb3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gKCF4
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0obnVs
bG9wdF90LCBjb25zdCBvcHRpb25hbDxUPiYpIF9fTk9FWENFUFQKK3sKKyAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oY29uc3Qg
b3B0aW9uYWw8VD4mIHgsIG51bGxvcHRfdCkgX19OT0VYQ0VQVAoreworICByZXR1cm4gYm9vbCh4
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihudWxs
b3B0X3QsIGNvbnN0IG9wdGlvbmFsPFQ+JikgX19OT0VYQ0VQVAoreworICByZXR1cm4gZmFsc2U7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IG9wdGlvbmFsPFQ+JiwgbnVsbG9wdF90KSBfX05PRVhDRVBUCit7CisgIHJldHVybiB0cnVlOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShudWxsb3B0
X3QsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KSBfX05PRVhDRVBUCit7CisgIHJldHVybiAoIXgpOwor
fQorCisKKworLy8gMjAuNS4xMCwgQ29tcGFyaXNvbiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBU
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBU
JiB2KQoreworICByZXR1cm4gYm9vbCh4KSA/ICp4ID09IHYgOiBmYWxzZTsKK30KKwordGVtcGxh
dGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3Qg
b3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA9PSAqeCA6IGZhbHNlOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBv
cHRpb25hbDxUPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2
IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VD4mIHgpCit7CisgIHJldHVybiBib29sKHgp
ID8gdiAhPSAqeCA6IHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjwoY29uc3Qgb3B0aW9uYWw8VD4mIHgsIGNvbnN0IFQmIHYpCiB7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KGxocykgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4ocmhzKSAmJiAo
IXN0YXRpY19jYXN0PGJvb2w+KGxocykgfHwgbGhzLnZhbHVlKCkgPT0gcmhzLnZhbHVlKCkpOwor
ICByZXR1cm4gYm9vbCh4KSA/ICp4IDwgdiA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wdGlvbmFsPFQ+JiBsaHMsIGNv
bnN0IE9wdGlvbmFsPFQ+JiByaHMpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wg
b3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KQogewotICAgIHJldHVy
biAhKGxocyA9PSByaHMpOworICByZXR1cm4gYm9vbCh4KSA/IHYgPiAqeCA6IHRydWU7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9w
dGlvbmFsPFQ+JiBvcHQsIE51bGxvcHRUYWcpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25zdCBUJiB2KQogewotICAg
IHJldHVybiAhb3B0OworICByZXR1cm4gYm9vbCh4KSA/ICp4ID4gdiA6IGZhbHNlOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRp
b25hbDxUPiYgb3B0LCBOdWxsb3B0VGFnKQordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPChjb25zdCBUJiB2LCBjb25zdCBvcHRpb25hbDxUPiYgeCkKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0KTsKKyAgcmV0dXJuIGJvb2woeCkgPyB2IDwgKngg
OiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oTnVsbG9wdFRhZywgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9wdGlvbmFsPFQ+JiB4LCBjb25z
dCBUJiB2KQogewotICAgIHJldHVybiAhb3B0OworICByZXR1cm4gYm9vbCh4KSA/ICp4ID49IHYg
OiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNvbnN0ZXhwciBib29sIG9wZXJh
dG9yIT0oTnVsbG9wdFRhZywgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFs
PFQ+JiB4KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihvcHQpOworICByZXR1cm4g
Ym9vbCh4KSA/IHYgPD0gKnggOiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgT3B0aW9uYWw8VD4mIG9wdCwgY29uc3QgVCYg
dmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25z
dCBvcHRpb25hbDxUPiYgeCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gb3B0ICYmIG9wdC52
YWx1ZSgpID09IHZhbHVlOworICByZXR1cm4gYm9vbCh4KSA/ICp4IDw9IHYgOiB0cnVlOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBP
cHRpb25hbDxUPiYgb3B0LCBjb25zdCBUJiB2YWx1ZSkKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQ+JiB4KQog
ewotICAgIHJldHVybiAhKG9wdCA9PSB2YWx1ZSk7CisgIHJldHVybiBib29sKHgpID8gdiA+PSAq
eCA6IHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFQmIHZhbHVlLCBjb25zdCBPcHRpb25hbDxUPiYgb3B0KQorCisvLyBDb21w
YXJpc29uIG9mIG9wdGlvbmFsPFQmPiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sK
KyAgcmV0dXJuIGJvb2woeCkgPyAqeCA9PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFs
PFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID09ICp4IDogZmFsc2U7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9wdGlvbmFs
PFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCAhPSB2IDogdHJ1
ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYg
IT0gKnggOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IG9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJv
b2woeCkgPyAqeCA8IHYgOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQmPiYgeCkKK3sKKyAg
cmV0dXJuIGJvb2woeCkgPyB2ID4gKnggOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYg
dikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBUJiB2LCBjb25zdCBvcHRp
b25hbDxUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA8ICp4IDogZmFsc2U7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0IG9wdGlv
bmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+PSB2IDog
ZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkg
PyB2IDw9ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0
dXJuIGJvb2woeCkgPyAqeCA8PSB2IDogdHJ1ZTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+IGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgdiwgY29uc3Qgb3B0aW9uYWw8VCY+JiB4
KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYgPj0gKnggOiB0cnVlOworfQorCisvLyBDb21wYXJp
c29uIG9mIG9wdGlvbmFsPFQgY29uc3QmPiB3aXRoIFQKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3Qg
VCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA9PSB2IDogZmFsc2U7Cit9CisKK3RlbXBs
YXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHYsIGNvbnN0
IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyB2ID09ICp4IDog
ZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4g
b3B0ICYmIG9wdC52YWx1ZSgpID09IHZhbHVlOworICByZXR1cm4gYm9vbCh4KSA/ICp4ICE9IHYg
OiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY29uc3RleHByIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBUJiB2YWx1ZSwgY29uc3QgT3B0aW9uYWw8VD4mIG9wdCkKK3RlbXBsYXRlIDxj
bGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlv
bmFsPGNvbnN0IFQmPiYgeCkKIHsKLSAgICByZXR1cm4gISh2YWx1ZSA9PSBvcHQpOworICByZXR1
cm4gYm9vbCh4KSA/IHYgIT0gKnggOiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
T3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4KLW1ha2VPcHRpb25hbChUJiYg
dmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKIHsKLSAgICByZXR1cm4gT3B0aW9u
YWw8dHlwZW5hbWUgc3RkOjpkZWNheTxUPjo6dHlwZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7
CisgIHJldHVybiBib29sKHgpID8gKnggPCB2IDogdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBPcHRpb25h
bDxUPiYgb3B0aW9uYWwpCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I+KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sKKyAgcmV0dXJu
IGJvb2woeCkgPyB2ID4gKnggOiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYg
dikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA+IHYgOiBmYWxzZTsKK30KKwordGVtcGxhdGUg
PGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChjb25zdCBUJiB2LCBjb25zdCBvcHRp
b25hbDxjb25zdCBUJj4mIHgpCit7CisgIHJldHVybiBib29sKHgpID8gdiA8ICp4IDogZmFsc2U7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkg
PyAqeCA+PSB2IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcjw9KGNvbnN0IFQmIHYsIGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYgeCkKK3sK
KyAgcmV0dXJuIGJvb2woeCkgPyB2IDw9ICp4IDogZmFsc2U7Cit9CisKK3RlbXBsYXRlIDxjbGFz
cyBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IG9wdGlvbmFsPGNvbnN0IFQmPiYg
eCwgY29uc3QgVCYgdikKK3sKKyAgcmV0dXJuIGJvb2woeCkgPyAqeCA8PSB2IDogdHJ1ZTsKK30K
KwordGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYg
diwgY29uc3Qgb3B0aW9uYWw8Y29uc3QgVCY+JiB4KQoreworICByZXR1cm4gYm9vbCh4KSA/IHYg
Pj0gKnggOiB0cnVlOworfQorCisKKy8vIDIwLjUuMTIsIFNwZWNpYWxpemVkIGFsZ29yaXRobXMK
K3RlbXBsYXRlIDxjbGFzcyBUPgordm9pZCBzd2FwKG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxU
PiYgeSkgX19OT0VYQ0VQVF8oX19OT0VYQ0VQVF8oeC5zd2FwKHkpKSkKK3sKKyAgeC5zd2FwKHkp
OworfQorCisKK3RlbXBsYXRlIDxjbGFzcyBUPgorY29uc3RleHByIG9wdGlvbmFsPHR5cGVuYW1l
IHN0ZDo6ZGVjYXk8VD46OnR5cGU+IG1ha2Vfb3B0aW9uYWwoVCYmIHYpCit7CisgIHJldHVybiBv
cHRpb25hbDx0eXBlbmFtZSBzdGQ6OmRlY2F5PFQ+Ojp0eXBlPihkZXRhaWxfOjpjb25zdGV4cHJf
Zm9yd2FyZDxUPih2KSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBYPgorY29uc3RleHByIG9wdGlv
bmFsPFgmPiBtYWtlX29wdGlvbmFsKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8WD4gdikKK3sKKyAg
cmV0dXJuIG9wdGlvbmFsPFgmPih2LmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ugc3RkCisK
K25hbWVzcGFjZSBXVEYgeworCisvLyAtLSBXZWJLaXQgQWRkaXRpb25zIC0tCit0ZW1wbGF0ZSA8
Y2xhc3MgT3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFjaz4KK0FMV0FZU19JTkxJTkUKK2F1dG8g
dmFsdWVPckNvbXB1dGUoT3B0aW9uYWxUeXBlIG9wdGlvbmFsLCBDYWxsYmFjayBjYWxsYmFjaykg
LT4gdHlwZW5hbWUgT3B0aW9uYWxUeXBlOjp2YWx1ZV90eXBlCiB7CiAgICAgaWYgKG9wdGlvbmFs
KQotICAgICAgICBvdXQucHJpbnQoKm9wdGlvbmFsKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5w
cmludCgiTnVsbG9wdCIpOworICAgICAgICByZXR1cm4gKm9wdGlvbmFsOworICAgIHJldHVybiBj
YWxsYmFjaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJblBsYWNl
OwotdXNpbmcgV1RGOjpOdWxsb3B0OwotdXNpbmcgV1RGOjpPcHRpb25hbDsKLXVzaW5nIFdURjo6
bWFrZU9wdGlvbmFsOworbmFtZXNwYWNlIHN0ZAoreworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgc3RydWN0IGhhc2g8c3RkOjpvcHRpb25hbDxUPj4KKyAgeworICAgIHR5cGVkZWYgdHlwZW5h
bWUgaGFzaDxUPjo6cmVzdWx0X3R5cGUgcmVzdWx0X3R5cGU7CisgICAgdHlwZWRlZiBzdGQ6Om9w
dGlvbmFsPFQ+IGFyZ3VtZW50X3R5cGU7CisKKyAgICBjb25zdGV4cHIgcmVzdWx0X3R5cGUgb3Bl
cmF0b3IoKShhcmd1bWVudF90eXBlIGNvbnN0JiBhcmcpIGNvbnN0IHsKKyAgICAgIHJldHVybiBh
cmcgPyBzdGQ6Omhhc2g8VD57fSgqYXJnKSA6IHJlc3VsdF90eXBle307CisgICAgfQorICB9Owor
CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICBzdHJ1Y3QgaGFzaDxzdGQ6Om9wdGlvbmFsPFQm
Pj4KKyAgeworICAgIHR5cGVkZWYgdHlwZW5hbWUgaGFzaDxUPjo6cmVzdWx0X3R5cGUgcmVzdWx0
X3R5cGU7CisgICAgdHlwZWRlZiBzdGQ6Om9wdGlvbmFsPFQmPiBhcmd1bWVudF90eXBlOworCisg
ICAgY29uc3RleHByIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoYXJndW1lbnRfdHlwZSBjb25zdCYg
YXJnKSBjb25zdCB7CisgICAgICByZXR1cm4gYXJnID8gc3RkOjpoYXNoPFQ+e30oKmFyZykgOiBy
ZXN1bHRfdHlwZXt9OworICAgIH0KKyAgfTsKK30KKworIyB1bmRlZiBUUjJfT1BUSU9OQUxfUkVR
VUlSRVMKKyMgdW5kZWYgVFIyX09QVElPTkFMX0FTU0VSVEVEX0VYUFJFU1NJT04KIAotI2VuZGlm
IC8vIE9wdGlvbmFsX2gKK3VzaW5nIFdURjo6dmFsdWVPckNvbXB1dGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdWaWV3LmNwcAppbmRleCBjZmQyYWEzMzU0ZDE3ZmUwZjhkNzQwNWVkYzJmZWFlZTY0ODIz
ZTBmLi41OTY1ZDY5YjgwMjAxOTVlMmQxNDljODIzMTE3ZmJiMTZkZjU5NTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgc2l6ZV90IFN0cmluZ1ZpZXc6
OmZpbmQoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNvbnN0CiAKIGNs
YXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKIHB1Ymxp
YzoKLSAgICBJbXBsKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIE9wdGlvbmFsPE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQor
ICAgIEltcGwoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgc3RkOjpvcHRpb25hbDxOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiYmIGl0ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCkK
ICAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKICAgICAgICAgLCBtX2l0ZXJhdG9y
KFdURk1vdmUoaXRlcmF0b3IpKQogICAgICAgICAsIG1faW5kZXgoaW5kZXgpCkBAIC0xMzYsNyAr
MTM2LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Oklt
cGwgewogCiBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZ1ZpZXcmIG1fc3RyaW5nVmlldzsKLSAg
ICBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiBtX2l0ZXJhdG9yOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4gbV9pdGVy
YXRvcjsKICAgICB1bnNpZ25lZCBtX2luZGV4OwogICAgIHVuc2lnbmVkIG1faW5kZXhFbmQ7CiB9
OwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFZlY3RvcjxTdHJpbmdWaWV3PiBTdHJpbmdWaWV3OjpzcGxp
dChVQ2hhciBzZXBhcmF0b3IpCiB9CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0
ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBp
bmRleCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0
cmluZ1ZpZXcuaXNOdWxsKCkgPyBOdWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3
KSksIGluZGV4KSkKKyAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1Zp
ZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPE5v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmgKaW5kZXggYjU0NWU5Njk4MjIwZGM0Njg2YThkMmY5YWNhY2FhM2JjY2M0NWM3MS4uYTY5NDVh
NTAzMjAwODZjZWI1ZGExNjk0ZmI5NTg5YzgxYzM4OGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKQEAgLTY3Myw3ICs2NzMsNyBAQCBjbGFzcyBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJ
dGVyYXRvciB7CiAKIHByaXZhdGU6CiAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBT
dHJpbmdWaWV3PiBtX3N0cmluZ1ZpZXc7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fbmV4dENv
ZGVQb2ludE9mZnNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX25leHRDb2RlUG9p
bnRPZmZzZXQ7CiAgICAgVUNoYXIzMiBtX2NvZGVQb2ludDsKIH07CiAKQEAgLTczOCw3ICs3Mzgs
NyBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvcjo6b3BlcmF0
b3IrKygpIC0+IEl0ZXJhdG9yJgogewogICAgIEFTU0VSVChtX25leHRDb2RlUG9pbnRPZmZzZXQp
OwogICAgIGlmIChtX25leHRDb2RlUG9pbnRPZmZzZXQudmFsdWUoKSA9PSBtX3N0cmluZ1ZpZXcu
Z2V0KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgbV9uZXh0Q29kZVBvaW50T2Zmc2V0ID0gTnVsbG9w
dDsKKyAgICAgICAgbV9uZXh0Q29kZVBvaW50T2Zmc2V0ID0gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIGlmIChtX3N0cmluZ1ZpZXcuZ2V0KCkuaXM4Qml0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vz
c2lvbi5jcHAKaW5kZXggY2MxZGE5YWU0MWZhZDYxMWZhZTlmMzQxNWIzMDI5NmE4OThmNjg4OC4u
NmZjNDVmYmMzZmQxMDkwYWMxZGQzYzg2YTMyNGJkYTQ2NmYwZjJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZURpZ2l0KFVDaGFyIGRpZ2l0LCBib29sIGlzTmVn
YXRpdmUsIGludDY0X3QmIGFtb3VudCkKIH0KIAogLy8gVGhlIGFtb3VudCBmb2xsb3dzIHRoZSBy
ZWd1bGFyIGV4cHJlc3Npb24gLT9bMC05XSsoXC5bMC05XVswLTldKT8uCi1zdGF0aWMgT3B0aW9u
YWw8aW50NjRfdD4gcGFyc2VBbW91bnQoY29uc3QgU3RyaW5nJiBhbW91bnRTdHJpbmcpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZUFtb3VudChjb25zdCBTdHJpbmcmIGFtb3Vu
dFN0cmluZykKIHsKICAgICBpbnQ2NF90IGFtb3VudCA9IDA7CiAKQEAgLTEwNSwxMyArMTA1LDEz
IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ2NF90PiBwYXJzZUFtb3VudChjb25zdCBTdHJpbmcmIGFt
b3VudFN0cmluZykKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFwYXJzZURpZ2l0
KGMsIGlzTmVnYXRpdmUsIGFtb3VudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHN0YXRl
ID0gU3RhdGU6OkRpZ2l0OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTdGF0
ZTo6U2lnbjoKICAgICAgICAgICAgIGlmICghcGFyc2VEaWdpdChjLCBpc05lZ2F0aXZlLCBhbW91
bnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpEaWdpdDsKICAg
ICAgICAgICAgIGJyZWFrOwogCkBAIC0xMjIsMzAgKzEyMiwzMCBAQCBzdGF0aWMgT3B0aW9uYWw8
aW50NjRfdD4gcGFyc2VBbW91bnQoY29uc3QgU3RyaW5nJiBhbW91bnRTdHJpbmcpCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmICghcGFyc2VEaWdpdChjLCBpc05lZ2F0aXZlLCBhbW91
bnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFN0
YXRlOjpEb3Q6CiAgICAgICAgICAgICBpZiAoIXBhcnNlRGlnaXQoYywgaXNOZWdhdGl2ZSwgYW1v
dW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpEb3REaWdp
dDsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU3RhdGU6OkRvdERpZ2l0Ogog
ICAgICAgICAgICAgaWYgKCFwYXJzZURpZ2l0KGMsIGlzTmVnYXRpdmUsIGFtb3VudCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBTdGF0ZTo6RW5kOgotICAgICAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9CiAgICAgfQogICAgIAogICAgIGlmIChzdGF0ZSAhPSBTdGF0ZTo6RGlnaXQgJiYgc3Rh
dGUgIT0gU3RhdGU6OkRvdERpZ2l0ICYmIHN0YXRlICE9IFN0YXRlOjpFbmQpCi0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHN0
YXRlID09IFN0YXRlOjpEb3REaWdpdCkgewogICAgICAgICAvLyBUaGVyZSB3YXMgYSBzaW5nbGUg
ZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuCkBAIC0xNjMsMTggKzE2MywxOCBAQCBzdGF0
aWMgT3B0aW9uYWw8aW50NjRfdD4gcGFyc2VBbW91bnQoY29uc3QgU3RyaW5nJiBhbW91bnRTdHJp
bmcpCiAgICAgcmV0dXJuIGFtb3VudDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1
ZXN0OjpDb250YWN0RmllbGRzPiBjcmVhdGVDb250YWN0RmllbGRzKERPTVdpbmRvdyYgd2luZG93
LCBjb25zdCBBcnJheVZhbHVlJiBjb250YWN0RmllbGRzQXJyYXkpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxQYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxkcz4gY3JlYXRlQ29udGFjdEZpZWxkcyhE
T01XaW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgY29udGFjdEZpZWxkc0FycmF5KQog
ewogICAgIFBheW1lbnRSZXF1ZXN0OjpDb250YWN0RmllbGRzIHJlc3VsdDsKIAogICAgIHNpemVf
dCBjb250YWN0RmllbGRzQ291bnQ7CiAgICAgaWYgKCFjb250YWN0RmllbGRzQXJyYXkubGVuZ3Ro
KGNvbnRhY3RGaWVsZHNDb3VudCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250YWN0
RmllbGRzQ291bnQ7ICsraSkgewogICAgICAgICBTdHJpbmcgY29udGFjdEZpZWxkOwogICAgICAg
ICBpZiAoIWNvbnRhY3RGaWVsZHNBcnJheS5nZXQoaSwgY29udGFjdEZpZWxkKSkKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBpZiAoY29udGFjdEZpZWxkID09ICJwb3N0YWxBZGRyZXNzIikKICAgICAgICAgICAg
IHJlc3VsdC5wb3N0YWxBZGRyZXNzID0gdHJ1ZTsKQEAgLTE4NywyMSArMTg3LDIxIEBAIHN0YXRp
YyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6Q29udGFjdEZpZWxkcz4gY3JlYXRlQ29udGFjdEZp
ZWxkcyhET01XaW5kb3cmIHdpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBtZXNz
YWdlID0gbWFrZVN0cmluZygiXCIiICsgY29udGFjdEZpZWxkLCAiXCIgaXMgbm90IGEgdmFsaWQg
Y29udGFjdCBmaWVsZC4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZSht
ZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU+IHRvTGlu
ZUl0ZW1UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBheW1l
bnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZT4gdG9MaW5lSXRlbVR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGlmICh0eXBlID09ICJwZW5kaW5nIikKICAgICAgICAgcmV0dXJuIFBheW1l
bnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6UGVuZGluZzsKICAgICBpZiAodHlwZSA9PSAiZmlu
YWwiKQogICAgICAgICByZXR1cm4gUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5h
bDsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyBib29sIGlzVmFsaWRMaW5lSXRlbVByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkTGluZUl0
ZW1Qcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjcmVh
dGVMaW5lSXRlbShET01XaW5kb3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFyeSYgdG90YWwpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGNyZWF0ZUxpbmVJ
dGVtKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBEaWN0aW9uYXJ5JiB0b3RhbCkKIHsKICAgICBW
ZWN0b3I8U3RyaW5nPiBwcm9wZXJ0eU5hbWVzOwogICAgIHRvdGFsLmdldE93blByb3BlcnR5TmFt
ZXMocHJvcGVydHlOYW1lcyk7CkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4gY3JlYXRlTGluZUl0ZW0oRE9NV2luZG93JiB3aW5kb3cs
IGNvbnMKICAgICAgICAgaWYgKCFpc1ZhbGlkTGluZUl0ZW1Qcm9wZXJ0eU5hbWUocHJvcGVydHlO
YW1lKSkgewogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgcHJv
cGVydHlOYW1lLCAiXCIgaXMgbm90IGEgdmFsaWQgbGluZSBpdGVtIHByb3BlcnR5IG5hbWUuIik7
CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5
bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiBjcmVhdGVMaW5lSXRlbShET01XaW5kb3cmIHdpbmRvdywg
Y29ucwogICAgICAgICBpZiAoIXR5cGUpIHsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1h
a2VTdHJpbmcoIlwiIiArICp0eXBlU3RyaW5nLCAiXCIgaXMgbm90IGEgdmFsaWQgbGluZSBpdGVt
IHR5cGUuIik7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7
Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXN1bHQudHlwZSA9ICp0eXBlOwpAQCAtMjU1
LDI1ICsyNTUsMjUgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4g
Y3JlYXRlTGluZUl0ZW0oRE9NV2luZG93JiB3aW5kb3csIGNvbnMKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyAqYW1vdW50U3RyaW5n
LCAiXCIgaXMgbm90IGEgdmFsaWQgYW1vdW50LiIpOwogICAgICAgICAgICAgd2luZG93LnByaW50
RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxQYXltZW50UmVxdWVzdDo6
TGluZUl0ZW0+PiBjcmVhdGVMaW5lSXRlbXMoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5
VmFsdWUmIGxpbmVJdGVtc0FycmF5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBheW1l
bnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGNyZWF0ZUxpbmVJdGVtcyhET01XaW5kb3cmIHdpbmRvdywg
Y29uc3QgQXJyYXlWYWx1ZSYgbGluZUl0ZW1zQXJyYXkpCiB7CiAgICAgVmVjdG9yPFBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbT4gcmVzdWx0OwogCiAgICAgc2l6ZV90IGxpbmVJdGVtQ291bnQ7CiAg
ICAgaWYgKCFsaW5lSXRlbXNBcnJheS5sZW5ndGgobGluZUl0ZW1Db3VudCkpCi0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsaW5lSXRlbUNvdW50OyArK2kpIHsKICAgICAgICAgRGljdGlvbmFy
eSBsaW5lSXRlbURpY3Rpb25hcnk7CiAgICAgICAgIGlmICghbGluZUl0ZW1zQXJyYXkuZ2V0KGks
IGxpbmVJdGVtRGljdGlvbmFyeSkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGF1dG8gbGluZUl0ZW0g
PSBjcmVhdGVMaW5lSXRlbSh3aW5kb3csIGxpbmVJdGVtRGljdGlvbmFyeSkpCiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCpsaW5lSXRlbSk7CkBAIC0yODIsMTggKzI4MiwxOCBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbT4+IGNyZWF0ZUxpbmVJdGVt
cyhET01XaW5kb3cmIHdpbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXM+IGNyZWF0ZU1lcmNoYW50Q2Fw
YWJpbGl0aWVzKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBcnJheVZhbHVlJiBtZXJjaGFudENh
cGFiaWxpdGllc0FycmF5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6Ok1l
cmNoYW50Q2FwYWJpbGl0aWVzPiBjcmVhdGVNZXJjaGFudENhcGFiaWxpdGllcyhET01XaW5kb3cm
IHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgbWVyY2hhbnRDYXBhYmlsaXRpZXNBcnJheSkKIHsK
ICAgICBQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMgcmVzdWx0OwogCiAgICAg
c2l6ZV90IG1lcmNoYW50Q2FwYWJpbGl0aWVzQ291bnQ7CiAgICAgaWYgKCFtZXJjaGFudENhcGFi
aWxpdGllc0FycmF5Lmxlbmd0aChtZXJjaGFudENhcGFiaWxpdGllc0NvdW50KSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1lcmNoYW50Q2FwYWJpbGl0aWVzQ291bnQ7ICsraSkgewogICAg
ICAgICBTdHJpbmcgbWVyY2hhbnRDYXBhYmlsaXR5OwogICAgICAgICBpZiAoIW1lcmNoYW50Q2Fw
YWJpbGl0aWVzQXJyYXkuZ2V0KGksIG1lcmNoYW50Q2FwYWJpbGl0eSkpCi0gICAgICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgaWYgKG1lcmNoYW50Q2FwYWJpbGl0eSA9PSAic3VwcG9ydHMzRFMiKQogICAgICAgICAgICAg
cmVzdWx0LnN1cHBvcnRzM0RTID0gdHJ1ZTsKQEAgLTMwNiwzMCArMzA2LDMwIEBAIHN0YXRpYyBP
cHRpb25hbDxQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXM+IGNyZWF0ZU1lcmNo
YW50Q2FwYWJpbGl0aWVzCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBtZXNzYWdl
ID0gbWFrZVN0cmluZygiXCIiICsgbWVyY2hhbnRDYXBhYmlsaXR5LCAiXCIgaXMgbm90IGEgdmFs
aWQgbWVyY2hhbnQgY2FwYWJpbGl0eS4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9y
TWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlU3VwcG9y
dGVkTmV0d29ya3ModW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFy
cmF5VmFsdWUmIHN1cHBvcnRlZE5ldHdvcmtzQXJyYXkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gY3JlYXRlU3VwcG9ydGVkTmV0d29ya3ModW5zaWduZWQgdmVyc2lvbiwg
RE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIHN1cHBvcnRlZE5ldHdvcmtzQXJy
YXkpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogCiAgICAgc2l6ZV90IHN1cHBvcnRl
ZE5ldHdvcmtzQ291bnQ7CiAgICAgaWYgKCFzdXBwb3J0ZWROZXR3b3Jrc0FycmF5Lmxlbmd0aChz
dXBwb3J0ZWROZXR3b3Jrc0NvdW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1cHBv
cnRlZE5ldHdvcmtzQ291bnQ7ICsraSkgewogICAgICAgICBTdHJpbmcgc3VwcG9ydGVkTmV0d29y
azsKICAgICAgICAgaWYgKCFzdXBwb3J0ZWROZXR3b3Jrc0FycmF5LmdldChpLCBzdXBwb3J0ZWRO
ZXR3b3JrKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIVBheW1lbnRSZXF1ZXN0Ojppc1ZhbGlkU3Vw
cG9ydGVkTmV0d29yayh2ZXJzaW9uLCBzdXBwb3J0ZWROZXR3b3JrKSkgewogICAgICAgICAgICAg
YXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgc3VwcG9ydGVkTmV0d29yaywgIlwiIGlz
IG5vdCBhIHZhbGlkIHBheW1lbnQgbmV0d29yay4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmlu
dEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoV1RGTW92ZShzdXBwb3J0ZWROZXR3b3JrKSk7CkBAIC0zMzgsNyArMzM4LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVTdXBwb3J0ZWROZXR3b3Jrcyh1
bnNpZ25lZCB2ZXJzaW9uLCBET01XaW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMg
T3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZT4gdG9TaGlwcGluZ1R5cGUoY29u
c3QgU3RyaW5nJiBzaGlwcGluZ1R5cGVTdHJpbmcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlPiB0b1NoaXBwaW5nVHlwZShjb25zdCBTdHJpbmcmIHNo
aXBwaW5nVHlwZVN0cmluZykKIHsKICAgICBpZiAoc2hpcHBpbmdUeXBlU3RyaW5nID09ICJzaGlw
cGluZyIpCiAgICAgICAgIHJldHVybiBQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdUeXBlOjpTaGlw
cGluZzsKQEAgLTM0OSw3ICszNDksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6
OlNoaXBwaW5nVHlwZT4gdG9TaGlwcGluZ1R5cGUoY29uc3QgU3RyaW5nJiBzaGlwcAogICAgIGlm
IChzaGlwcGluZ1R5cGVTdHJpbmcgPT0gInNlcnZpY2VQaWNrdXAiKQogICAgICAgICByZXR1cm4g
UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZTo6U2VydmljZVBpY2t1cDsKIAotICAgIHJldHVy
biBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGlz
VmFsaWRTaGlwcGluZ01ldGhvZFByb3BlcnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkU2hpcHBpbmdNZXRob2RQ
cm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBj
cmVhdGVTaGlwcGluZ01ldGhvZChET01XaW5kb3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFyeSYg
c2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJl
cXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiBjcmVhdGVTaGlwcGluZ01ldGhvZChET01XaW5kb3cmIHdp
bmRvdywgY29uc3QgRGljdGlvbmFyeSYgc2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5KQogewogICAg
IFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5TmFtZXM7CiAgICAgc2hpcHBpbmdNZXRob2REaWN0aW9u
YXJ5LmdldE93blByb3BlcnR5TmFtZXMocHJvcGVydHlOYW1lcyk7CkBAIC0zNzgsNyArMzc4LDcg
QEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY3JlYXRl
U2hpcHBpbmdNZXRob2QoRE9NV2luZG93JgogICAgICAgICBpZiAoIWlzVmFsaWRTaGlwcGluZ01l
dGhvZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBhdXRvIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJcIiIgKyBwcm9wZXJ0eU5hbWUsICJcIiBpcyBub3QgYSB2YWxpZCBz
aGlwcGluZyBtZXRob2QgcHJvcGVydHkgbmFtZS4iKTsKICAgICAgICAgICAgIHdpbmRvdy5wcmlu
dEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzg3
LDIxICszODcsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01l
dGhvZD4gY3JlYXRlU2hpcHBpbmdNZXRob2QoRE9NV2luZG93JgogICAgIGF1dG8gbGFiZWwgPSBz
aGlwcGluZ01ldGhvZERpY3Rpb25hcnkuZ2V0PFN0cmluZz4oImxhYmVsIik7CiAgICAgaWYgKCFs
YWJlbCkgewogICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIk1pc3Npbmcgc2hpcHBp
bmcgbWV0aG9kIGxhYmVsLiIpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmVzdWx0LmxhYmVsID0gKmxhYmVsOwogCiAg
ICAgYXV0byBkZXRhaWwgPSBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnkuZ2V0PFN0cmluZz4oImRl
dGFpbCIpOwogICAgIGlmICghZGV0YWlsKSB7CiAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVz
c2FnZSgiTWlzc2luZyBzaGlwcGluZyBtZXRob2QgZGV0YWlsLiIpOwotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmVzdWx0
LmRldGFpbCA9ICpkZXRhaWw7CiAKICAgICBhdXRvIGFtb3VudFN0cmluZyA9IHNoaXBwaW5nTWV0
aG9kRGljdGlvbmFyeS5nZXQ8U3RyaW5nPigiYW1vdW50Iik7CiAgICAgaWYgKCFhbW91bnRTdHJp
bmcpIHsKICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKCJNaXNzaW5nIHNoaXBwaW5n
IG1ldGhvZCBhbW91bnQuIik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChhdXRvIGFtb3VudCA9IHBhcnNlQW1v
dW50KCphbW91bnRTdHJpbmcpKQpAQCAtNDA5LDM2ICs0MDksMzYgQEAgc3RhdGljIE9wdGlvbmFs
PFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gY3JlYXRlU2hpcHBpbmdNZXRob2QoRE9N
V2luZG93JgogICAgIGVsc2UgewogICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJc
IiIgKyAqYW1vdW50U3RyaW5nLCAiXCIgaXMgbm90IGEgdmFsaWQgYW1vdW50LiIpOwogICAgICAg
ICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaWRl
bnRpZmllciA9IHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeS5nZXQ8U3RyaW5nPigiaWRlbnRpZmll
ciIpOwogICAgIGlmICghaWRlbnRpZmllcikgewogICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1l
c3NhZ2UoIk1pc3Npbmcgc2hpcHBpbmcgbWV0aG9kIGlkZW50aWZpZXIuIik7Ci0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBy
ZXN1bHQuaWRlbnRpZmllciA9ICppZGVudGlmaWVyOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+
PiBjcmVhdGVTaGlwcGluZ01ldGhvZHMoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFs
dWUmIHNoaXBwaW5nTWV0aG9kc0FycmF5KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBh
eW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4+IGNyZWF0ZVNoaXBwaW5nTWV0aG9kcyhET01X
aW5kb3cmIHdpbmRvdywgY29uc3QgQXJyYXlWYWx1ZSYgc2hpcHBpbmdNZXRob2RzQXJyYXkpCiB7
CiAgICAgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4gcmVzdWx0OwogCiAg
ICAgc2l6ZV90IHNoaXBwaW5nTWV0aG9kQ291bnQ7CiAgICAgaWYgKCFzaGlwcGluZ01ldGhvZHNB
cnJheS5sZW5ndGgoc2hpcHBpbmdNZXRob2RDb3VudCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaGlwcGluZ01ldGhvZENvdW50OyArK2kpIHsKICAgICAgICAgRGljdGlvbmFyeSBzaGlw
cGluZ01ldGhvZERpY3Rpb25hcnk7CiAgICAgICAgIGlmICghc2hpcHBpbmdNZXRob2RzQXJyYXku
Z2V0KGksIHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeSkpCi0gICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGF1
dG8gc2hpcHBpbmdNZXRob2QgPSBjcmVhdGVTaGlwcGluZ01ldGhvZCh3aW5kb3csIHNoaXBwaW5n
TWV0aG9kRGljdGlvbmFyeSkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpzaGlwcGluZ01l
dGhvZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtNDcwLDcgKzQ3MCw3IEBAIHN0YXRpYyBib29sIGlzVmFsaWRQYXltZW50UmVxdWVzdFByb3Bl
cnR5TmFtZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3Qo
dW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IERpY3Rpb25hcnkmIGRp
Y3Rpb25hcnkpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5
bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IERp
Y3Rpb25hcnkmIGRpY3Rpb25hcnkpCiB7CiAgICAgUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVl
c3Q7CiAKQEAgLTQ4MCwyNSArNDgwLDI1IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVz
dD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiBwcm9wZXJ0eU5hbWVzKSB7CiAgICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gInJlcXVpcmVkU2hpcHBpbmdBZGRyZXNzRmllbGRzIikgewogICAgICAg
ICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKCJcInJlcXVpcmVkU2hpcHBpbmdBZGRyZXNz
RmllbGRzXCIgaGFzIGJlZW4gZGVwcmVjYXRlZC4gUGxlYXNlIHN3aXRjaCB0byBcInJlcXVpcmVk
U2hpcHBpbmdDb250YWN0RmllbGRzXCIgaW5zdGVhZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gInJlcXVpcmVkQmlsbGluZ0FkZHJlc3NGaWVsZHMi
KSB7CiAgICAgICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIlwicmVxdWlyZWRCaWxs
aW5nQWRkcmVzc0ZpZWxkc1wiIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFBsZWFzZSBzd2l0Y2ggdG8g
XCJyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzXCIgaW5zdGVhZC4iKTsKLSAgICAgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghaXNWYWxpZFBheW1lbnRSZXF1ZXN0UHJvcGVydHlOYW1lKHBy
b3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwi
IiArIHByb3BlcnR5TmFtZSwgIlwiIGlzIG5vdCBhIHZhbGlkIHBheW1lbnQgcmVxdWVzdCBwcm9w
ZXJ0eSBuYW1lLiIpOwogICAgICAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3Nh
Z2UpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbWVyY2hhbnRDYXBh
YmlsaXRpZXNBcnJheSA9IGRpY3Rpb25hcnkuZ2V0PEFycmF5VmFsdWU+KCJtZXJjaGFudENhcGFi
aWxpdGllcyIpKSB7CiAgICAgICAgIGF1dG8gbWVyY2hhbnRDYXBhYmlsaXRpZXMgPSBjcmVhdGVN
ZXJjaGFudENhcGFiaWxpdGllcyh3aW5kb3csICptZXJjaGFudENhcGFiaWxpdGllc0FycmF5KTsK
ICAgICAgICAgaWYgKCFtZXJjaGFudENhcGFiaWxpdGllcykKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwYXlt
ZW50UmVxdWVzdC5zZXRNZXJjaGFudENhcGFiaWxpdGllcygqbWVyY2hhbnRDYXBhYmlsaXRpZXMp
OwogICAgIH0KQEAgLTUwNiw3ICs1MDYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVl
c3Q+IGNyZWF0ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAg
IGlmIChhdXRvIHN1cHBvcnRlZE5ldHdvcmtzQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZh
bHVlPigic3VwcG9ydGVkTmV0d29ya3MiKSkgewogICAgICAgICBhdXRvIHN1cHBvcnRlZE5ldHdv
cmtzID0gY3JlYXRlU3VwcG9ydGVkTmV0d29ya3ModmVyc2lvbiwgd2luZG93LCAqc3VwcG9ydGVk
TmV0d29ya3NBcnJheSk7CiAgICAgICAgIGlmICghc3VwcG9ydGVkTmV0d29ya3MpCi0gICAgICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0U3VwcG9ydGVkTmV0d29ya3MoKnN1cHBvcnRlZE5l
dHdvcmtzKTsKICAgICB9CkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1l
bnRSZXF1ZXN0PiBjcmVhdGVQYXltZW50UmVxdWVzdCh1bnNpZ25lZCB2ZXJzaW9uLCBET01XaW5k
b3cKICAgICBpZiAoYXV0byByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzQXJyYXkgPSBkaWN0
aW9uYXJ5LmdldDxBcnJheVZhbHVlPigicmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyIpKSB7
CiAgICAgICAgIGF1dG8gcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkcyA9IGNyZWF0ZUNvbnRh
Y3RGaWVsZHMod2luZG93LCAqcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkc0FycmF5KTsKICAg
ICAgICAgaWYgKCFyZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzKQotICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IHBheW1lbnRSZXF1ZXN0LnNldFJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHMoKnJlcXVpcmVk
QmlsbGluZ0NvbnRhY3RGaWVsZHMpOwogICAgIH0KQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMg
T3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZl
cnNpb24sIERPTVdpbmRvdwogICAgICAgICBhdXRvIGJpbGxpbmdDb250YWN0ID0gUGF5bWVudENv
bnRhY3Q6OmZyb21KUygqSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgKmJp
bGxpbmdDb250YWN0VmFsdWUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIGlmICghYmlsbGluZ0Nv
bnRhY3QpIHsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3Nh
Z2UpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0QmlsbGlu
Z0NvbnRhY3QoKmJpbGxpbmdDb250YWN0KTsKQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRSZXF1ZXN0KHVuc2lnbmVkIHZlcnNp
b24sIERPTVdpbmRvdwogICAgIGlmIChhdXRvIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRz
QXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigicmVxdWlyZWRTaGlwcGluZ0NvbnRh
Y3RGaWVsZHMiKSkgewogICAgICAgICBhdXRvIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRz
ID0gY3JlYXRlQ29udGFjdEZpZWxkcyh3aW5kb3csICpyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZp
ZWxkc0FycmF5KTsKICAgICAgICAgaWYgKCFyZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcykK
LSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRSZXF1aXJlZFNoaXBwaW5nQ29udGFj
dEZpZWxkcygqcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHMpOwogICAgIH0KQEAgLTU0OCw3
ICs1NDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q+IGNyZWF0ZVBheW1lbnRS
ZXF1ZXN0KHVuc2lnbmVkIHZlcnNpb24sIERPTVdpbmRvdwogICAgICAgICBhdXRvIHNoaXBwaW5n
Q29udGFjdCA9IFBheW1lbnRDb250YWN0Ojpmcm9tSlMoKkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6
Y3VycmVudFN0YXRlKCksICpzaGlwcGluZ0NvbnRhY3RWYWx1ZSwgZXJyb3JNZXNzYWdlKTsKICAg
ICAgICAgaWYgKCFzaGlwcGluZ0NvbnRhY3QpIHsKICAgICAgICAgICAgIHdpbmRvdy5wcmludEVy
cm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcGF5
bWVudFJlcXVlc3Quc2V0U2hpcHBpbmdDb250YWN0KCpzaGlwcGluZ0NvbnRhY3QpOwpAQCAtNTYw
LDcgKzU2MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5bWVu
dFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAgICAgIGlmICghc2hpcHBp
bmdUeXBlKSB7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyAq
c2hpcHBpbmdUeXBlU3RyaW5nLCAiXCIgaXMgbm90IGEgdmFsaWQgc2hpcHBpbmcgdHlwZS4iKTsK
ICAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRTaGlwcGluZ1R5cGUoKnNoaXBwaW5n
VHlwZSk7CiAgICAgfQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50
UmVxdWVzdD4gY3JlYXRlUGF5bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93
CiAgICAgaWYgKGF1dG8gc2hpcHBpbmdNZXRob2RzQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJh
eVZhbHVlPigic2hpcHBpbmdNZXRob2RzIikpIHsKICAgICAgICAgYXV0byBzaGlwcGluZ01ldGhv
ZHMgPSBjcmVhdGVTaGlwcGluZ01ldGhvZHMod2luZG93LCAqc2hpcHBpbmdNZXRob2RzQXJyYXkp
OwogICAgICAgICBpZiAoIXNoaXBwaW5nTWV0aG9kcykKLSAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwYXltZW50
UmVxdWVzdC5zZXRTaGlwcGluZ01ldGhvZHMoKnNoaXBwaW5nTWV0aG9kcyk7CiAgICAgfQpAQCAt
NTc2LDcgKzU3Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdD4gY3JlYXRlUGF5
bWVudFJlcXVlc3QodW5zaWduZWQgdmVyc2lvbiwgRE9NV2luZG93CiAgICAgaWYgKGF1dG8gdG90
YWxEaWN0aW9uYXJ5ID0gZGljdGlvbmFyeS5nZXQ8RGljdGlvbmFyeT4oInRvdGFsIikpIHsKICAg
ICAgICAgYXV0byB0b3RhbCA9IGNyZWF0ZUxpbmVJdGVtKHdpbmRvdywgKnRvdGFsRGljdGlvbmFy
eSk7CiAgICAgICAgIGlmICghdG90YWwpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcGF5bWVudFJlcXVlc3Qu
c2V0VG90YWwoKnRvdGFsKTsKICAgICB9CkBAIC04NDIsNyArODQyLDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBE
aWN0aW9uYXJ5JgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cz4gdG9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyh1bnNpZ25l
ZCBzaG9ydCBzdGF0dXMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cz4gdG9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyh1bnNpZ25lZCBzaG9ydCBzdGF0
dXMpCiB7CiAgICAgc3dpdGNoIChzdGF0dXMpIHsKICAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6
U1RBVFVTX1NVQ0NFU1M6CkBAIC04NzAsNyArODcwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzPiB0b1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVuc2ln
bmUKICAgICAgICAgcmV0dXJuIFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0
OwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb250YWN0LmgKaW5kZXggNTBhYTgwNTZhYjAxZDI3NzkyOTQ2M2Yy
MzZlZjY2ZmI3ZjdjNDRhMy4uN2NhOWYwNTQyMGY2NzJjYmI5ZmE5ZmZiNzYyY2Q1NjU1YzI3MzY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29u
dGFjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvbnRh
Y3QuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBQYXltZW50Q29udGFjdCB7CiAgICAgewogICAg
IH0KIAotICAgIHN0YXRpYyBPcHRpb25hbDxQYXltZW50Q29udGFjdD4gZnJvbUpTKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IGZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogICAgIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CiAKICAgICBQS0NvbnRhY3QgKnBrQ29udGFjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGtDb250YWN0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggMGQ0YmRi
ZTcyZjNhYTM1ZDU0NDcwY2EzMzBhODAxMDdlNTliNWM4OS4uMTU0YTZkMDVjODJlYzdhZGFiZmJm
MmZlN2M3M2NhZDFkMDAyMzRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtODMsMjEgKzgzLDIxIEBAIHZv
aWQgUGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBQ
YXltZW50TWVyY2hhbnRTZXNzaW9uCiAgICAgbV9jbGllbnQuY29tcGxldGVNZXJjaGFudFZhbGlk
YXRpb24ocGF5bWVudE1lcmNoYW50U2Vzc2lvbik7CiB9CiAKLXZvaWQgUGF5bWVudENvb3JkaW5h
dG9yOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzIHN0YXR1cywgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
PiBuZXdUb3RhbEFuZEl0ZW1zKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBz
dGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxB
bmRJdGVtcykKIHsKICAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9uKTsKIAogICAgIG1fY2xpZW50
LmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oc3RhdHVzLCBXVEZNb3ZlKG5ld1RvdGFs
QW5kSXRlbXMpKTsKIH0KIAotdm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBp
bmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgY29u
c3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0
aG9kcywgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3Rh
bEFuZEl0ZW1zKQordm9pZCBQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgY29uc3QgVmVj
dG9yPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywg
c3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFs
QW5kSXRlbXMpCiB7CiAgICAgQVNTRVJUKG1fYWN0aXZlU2Vzc2lvbik7CiAKICAgICBtX2NsaWVu
dC5jb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGF0dXMsIG5ld1NoaXBwaW5nTWV0
aG9kcywgV1RGTW92ZShuZXdUb3RhbEFuZEl0ZW1zKSk7CiB9CiAKLXZvaWQgUGF5bWVudENvb3Jk
aW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8UGF5bWVudFJl
cXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQordm9pZCBQYXltZW50
Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFs
PFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKIHsK
ICAgICBBU1NFUlQobV9hY3RpdmVTZXNzaW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggN2M4YjIzNGM1N2Jl
Yzc5MTk1OTNmYzNmZDk4ZDUxMzllNTgyNGRhNi4uNTAwYWUxNmQxOWZkM2NjMGJiY2EwYmVkYWU3
NDU2ZjU1MzU3MjljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC01NSw5ICs1NSw5IEBAIGNsYXNzIFBheW1lbnRD
b29yZGluYXRvciB7CiAKICAgICBib29sIGJlZ2luUGF5bWVudFNlc3Npb24oQXBwbGVQYXlTZXNz
aW9uJiwgY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJ
Y29uVVJMcywgY29uc3QgUGF5bWVudFJlcXVlc3QmKTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hh
bnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKLSAgICB2b2lkIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMs
IE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMpOwot
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+
JiBuZXdTaGlwcGluZ01ldGhvZHMsIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcz4gbmV3SXRlbXMpOwotICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMp
OworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cywgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5l
SXRlbXM+IG5ld0l0ZW1zKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8UGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBzdGQ6Om9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3SXRlbXMpOworICAgIHZvaWQgY29t
cGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6
OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdJdGVtcyk7CiAgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKTsKICAgICB2b2lkIGFib3J0UGF5bWVu
dFNlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggZmNmN2UxOTE3Y2FmZjBiMGEx
Y2VjYzI2NWM1OGU0MmY2MmZiYmVjOC4uM2Q2ZWNjMDczMDk0MWZlYmFmMDRiY2Q0OGE0OTUyOWRl
Mzc1ODJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC00Niw5ICs0Niw5IEBAIGNsYXNzIFBh
eW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvd1BheW1lbnRV
SShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25V
UkxzLCBjb25zdCBQYXltZW50UmVxdWVzdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGxl
dGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cywgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGlu
ZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25z
dCBWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRo
b2RzLCBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFs
QW5kSXRlbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4gbmV3VG90YWxBbmRJdGVtcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBzdGQ6Om9wdGlv
bmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZD4mIG5ld1NoaXBwaW5nTWV0aG9kcywgc3RkOjpvcHRpb25hbDxQYXltZW50
UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0
ZW1zKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnRQYXltZW50
U2Vzc2lvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yRGVzdHJv
eWVkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50TWVyY2hhbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRNZXJjaGFudFNlc3Npb24uaAppbmRleCA4ZTZjOGQ4NWVmNDk3YTk1OGQxZTM4ZDc0
NGUxOTdjYjU4YTdmZjg0Li5hNWM2ZGRkY2VjMDE1ZWEyYTk3YTg0MjdmNmM4Y2M4MzBjZDZkMWJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJj
aGFudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRNZXJjaGFudFNlc3Npb24uaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBQYXltZW50TWVyY2hh
bnRTZXNzaW9uIHsKICAgICB7CiAgICAgfQogCi0gICAgc3RhdGljIE9wdGlvbmFsPFBheW1lbnRN
ZXJjaGFudFNlc3Npb24+IGZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBheW1lbnRNZXJj
aGFudFNlc3Npb24+IGZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOwogCiAgICAgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICpwa1BheW1l
bnRNZXJjaGFudFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3BrUGF5bWVudE1lcmNoYW50U2Vz
c2lvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1Bh
eW1lbnRSZXF1ZXN0LmgKaW5kZXggNmFmOTJkMzA1Yjg3NDJjZWU1MmI2N2U1MzRkZTg2MjYwYjNk
MGU5Mi4uZWMzZWUxZmFmM2IyNjUzODgxYWNjOTQzYTIzNmFmNzZmZjQ3M2IzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVlc3QuaApAQCAtODgs
NyArODgsNyBAQCBjbGFzcyBQYXltZW50UmVxdWVzdCB7CiAgICAgICAgIC8vIFN0b3JlZCBhcyBh
IGZpeGVkIHBvaW50IGRlY2ltYWwgbnVtYmVyIHdpdGggdHdvIGRlY2ltYWxzOgogICAgICAgICAv
LyAxLjIzIC0+IDEyMy4KICAgICAgICAgLy8gMC4wMSAtPiAxLgotICAgICAgICBPcHRpb25hbDxp
bnQ2NF90PiBhbW91bnQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gYW1vdW50Owog
ICAgICAgICBTdHJpbmcgbGFiZWw7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCmlu
ZGV4IGE0YzA1M2JkNTUwY2E5MjI4OTY2MmJhNzc5NTBhYjhkNGVlYjE0YmEuLjE3YzI1Yzc5NDlk
OGFlODFlNWMzZTJjZjMyZTAyYzkzMDM5ODI3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0K
QEAgLTEwNCwyMCArMTA0LDIwIEBAIHN0YXRpYyBSZXRhaW5QdHI8UEtDb250YWN0PiBmcm9tRGlj
dGlvbmFyeShOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIFN0cmluZyYgZXJyCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotT3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IFBheW1lbnRDb250YWN0Ojpm
cm9tSlMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQorc3RkOjpvcHRpb25hbDxQYXltZW50Q29udGFjdD4gUGF5bWVudENvbnRh
Y3Q6OmZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IERvbid0IHJvdW5kLXRyaXAgdXNp
bmcgTlNTdHJpbmcuCiAgICAgYXV0byBqc29uU3RyaW5nID0gSlNPTlN0cmluZ2lmeSgmc3RhdGUs
IHZhbHVlLCAwKTsKICAgICBpZiAoIWpzb25TdHJpbmcpCi0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBkaWN0aW9uYXJ5ID0g
ZHluYW1pY19vYmpjX2Nhc3Q8TlNEaWN0aW9uYXJ5PihbTlNKU09OU2VyaWFsaXphdGlvbiBKU09O
T2JqZWN0V2l0aERhdGE6WyhOU1N0cmluZyAqKWpzb25TdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddIG9wdGlvbnM6MCBlcnJvcjpuaWxdKTsKICAgICBpZiAoIWRp
Y3Rpb25hcnkgfHwgIVtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFz
c11dKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gcGtDb250YWN0ID0gZnJvbURpY3Rpb25hcnkoZGljdGlvbmFyeSwgZXJy
b3JNZXNzYWdlKTsKICAgICBpZiAoIXBrQ29udGFjdCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gUGF5bWVudENvbnRh
Y3QocGtDb250YWN0LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29j
b2EubW0KaW5kZXggMzQ5MTJmMDk4NDFkMzdkYzc4ZDJhODgwOWY5ODM4OTcwNDk2YTkwMy4uMmZi
YzQxODUzMDQyMzZkMjg0OWM5MDY4NzYxZTIwN2Y0OTI0ZWYzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KQEAgLTQyLDE2ICs0MiwxNiBAQCBTT0ZUX0xJTktfQ0xB
U1MoUGFzc0tpdCwgUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uKQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU9wdGlvbmFsPFBheW1lbnRNZXJjaGFudFNlc3Npb24+IFBheW1lbnRNZXJjaGFudFNl
c3Npb246OmZyb21KUyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
U3RyaW5nJikKK3N0ZDo6b3B0aW9uYWw8UGF5bWVudE1lcmNoYW50U2Vzc2lvbj4gUGF5bWVudE1l
cmNoYW50U2Vzc2lvbjo6ZnJvbUpTKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBEb24ndCByb3VuZC10cmlwIHVzaW5n
IE5TU3RyaW5nLgogICAgIGF1dG8ganNvblN0cmluZyA9IEpTT05TdHJpbmdpZnkoJnN0YXRlLCB2
YWx1ZSwgMCk7CiAgICAgaWYgKCFqc29uU3RyaW5nKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZGljdGlvbmFyeSA9IGR5
bmFtaWNfb2JqY19jYXN0PE5TRGljdGlvbmFyeT4oW05TSlNPTlNlcmlhbGl6YXRpb24gSlNPTk9i
amVjdFdpdGhEYXRhOlsoTlNTdHJpbmcgKilqc29uU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSBvcHRpb25zOjAgZXJyb3I6bmlsXSk7CiAgICAgaWYgKCFkaWN0
aW9uYXJ5IHx8ICFbZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jUEtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uSW5zdGFuY2UoKSBpbml0V2l0aERpY3Rpb25hcnk6ZGljdGlv
bmFyeV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDM5ZTJhOWUwYmEwNmY4YjAxMzBl
MzRhNGI4MjUyYmE1Nzk0ODdjMGQuLjNlYjZiNDM3OWE2NmZkN2VjYmZkMDIyMzcwYjk1ODczMDQz
YTQ0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC02MSw5ICs2MSw5IEBAIE1lZGlhS2V5
U3RhdHVzTWFwOjpJdGVyYXRvcjo6SXRlcmF0b3IoTWVkaWFLZXlTdGF0dXNNYXAmKQogewogfQog
Ci1PcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBN
ZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCgpCitzdGQ6
Om9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1l
ZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKLSAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggZTkyZDA3ZTNiZDBjNTVkMDI5
MDU3YjE2ZWU5ODhiOWVjZjVmZDIxOS4uNmZkNDNiYzhjYWM5ZGRmYjZjNmZiNDRkNGZhZjMzOWFk
ZTlkMjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBNZWRp
YUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiAg
ICAgY2xhc3MgSXRlcmF0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSXRlcmF0
b3IoTWVkaWFLZXlTdGF0dXNNYXAmKTsKLSAgICAgICAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBh
aXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBuZXh0KCk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJp
YW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBuZXh0KCk7CiAgICAgfTsKICAgICBJdGVyYXRvciBj
cmVhdGVJdGVyYXRvcigpIHsgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggOGQwMmIxMjMwN2E0MjA2Nzc0
NjVhMzIyNDliZmJlMzhlMWU1YzQ1ZS4uMDEzNDBjYjJkYzg0MGMyNzhhNTg3MjgwODQ2NzQ3YTkx
ZWE4ZDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApA
QCAtNDgsNyArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEZldGNo
Qm9keT4gRmV0Y2hCb2R5OjpleHRyYWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmIGNvbnRl
bnRUeXBlKQorc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAodmFsdWUuaW5o
ZXJpdHMoSlNCbG9iOjppbmZvKCkpKSB7CiAgICAgICAgIGF1dG8mIGJsb2IgPSAqSlNCbG9iOjp0
b1dyYXBwZWQodmFsdWUpOwpAQCAtODAsNyArODAsNyBAQCBPcHRpb25hbDxGZXRjaEJvZHk+IEZl
dGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OkV4
ZQogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjppbmZvKCkp
KQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KHRvVW5zaGFyZWRBcnJheUJ1ZmZlclZpZXcodmFs
dWUpLnJlbGVhc2VDb25zdE5vbk51bGwoKSk7CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0
Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCA4NzE5YjNlMWI1YmVjZjBh
Y2I4OTlkMzZhYTE4MDY2ZTRhNzU5NmQ1Li41MjcxMmZkMWYxMzQ0NTI2NjczYjRhODE2NTkzODMy
NzI1MWVmYzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAg
LTcxLDcgKzcxLDcgQEAgY2xhc3MgRmV0Y2hCb2R5IHsKICAgICBib29sIGlzVVJMU2VhcmNoUGFy
YW1zKCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgVVJM
U2VhcmNoUGFyYW1zPj4obV9kYXRhKTsgfQogICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1
cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSk7IH0KIAotICAgIHN0YXRp
YyBPcHRpb25hbDxGZXRjaEJvZHk+IGV4dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxGZXRjaEJvZHk+IGV4dHJhY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTdHJpbmcmKTsKICAgICBzdGF0aWMgRmV0Y2hCb2R5
IGxvYWRpbmdCb2R5KCkgeyByZXR1cm4geyB9OyB9CiAKICAgICB2b2lkIGxvYWRpbmdGYWlsZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAK
aW5kZXggOWYyYTNjN2VlMGQ5OWU1MTBhNDFkZWY4YTgyNWE5ZGVkMWI2MWZmYi4uZWU0ZWFhMjc1
N2NjNmI3MGY4MTViOTQ3ZjIzNzRmZjE2YTNhYzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1GZXRjaEJvZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJl
ZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycykKK0ZldGNoQm9keU93bmVyOjpGZXRjaEJvZHlPd25l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAsIG1faGVh
ZGVycyhXVEZNb3ZlKGhlYWRlcnMpKQpAQCAtMTkwLDEzICsxOTAsMTMgQEAgdm9pZCBGZXRjaEJv
ZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNv
bnN1bWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9ibG9iTG9hZGVyID0geyAq
dGhpcyB9OworICAgIG1fYmxvYkxvYWRlci5lbXBsYWNlKCp0aGlzKTsKICAgICBtX2Jsb2JMb2Fk
ZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIs
IGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5p
c1N0YXJ0ZWQoKSkgewogICAgICAgICBtX2JvZHktPmxvYWRpbmdGYWlsZWQoKTsKLSAgICAgICAg
bV9ibG9iTG9hZGVyID0gTnVsbG9wdDsKKyAgICAgICAgbV9ibG9iTG9hZGVyID0gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlz
KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9iTG9h
ZGluZygpCiB7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAKLSAgICBtX2Jsb2JMb2FkZXIg
PSBOdWxsb3B0OworICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6bnVsbG9wdDsKICAgICB1bnNldFBl
bmRpbmdBY3Rpdml0eSh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDg1ZWRlNzhlMTAwN2IxMDU3YmNlZDJjMzRkOGVjNGEy
OGIwYTg2N2IuLjNhNzVkNGJmZjQzYTIzNmU3M2JlMDVjMTc1NjhiNmJlZDYxYjQ0MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGZXRjaEJvZHlPd25lciA6IHB1
YmxpYyBSZWZDb3VudGVkPEZldGNoQm9keU93bmVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7
CiBwdWJsaWM6Ci0gICAgRmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE9w
dGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJik7CisgICAgRmV0Y2hCb2R5
T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYm
LCBSZWY8RmV0Y2hIZWFkZXJzPiYmKTsKIAogICAgIC8vIEV4cG9zZWQgQm9keSBBUEkKICAgICBi
b29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rpc3R1cmJlZDsgfTsKQEAgLTk0
LDcgKzk0LDcgQEAgY2xhc3MgRmV0Y2hCb2R5T3duZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRj
aEJvZHlPd25lcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QKICAgICB9OwogCiBwcm90ZWN0ZWQ6
Ci0gICAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBtX2JvZHk7CisgICAgc3RkOjpvcHRpb25hbDxGZXRj
aEJvZHk+IG1fYm9keTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBib29sIG1faXNE
aXN0dXJiZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShSRUFEQUJMRV9TVFJFQU1fQVBJKQpAQCAt
MTAzLDcgKzEwMyw3IEBAIGNsYXNzIEZldGNoQm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8
RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAgICAgUmVmPEZldGNoSGVh
ZGVycz4gbV9oZWFkZXJzOwogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEJsb2JMb2FkZXI+IG1f
YmxvYkxvYWRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAppbmRleCA1ZmMwM2U2OGM1NGUwMzljYTExM2E3NGRlM2Zm
YzUyMjNjMWFkOGFlLi42ZTA3Njc0YTlhMzM4YzVlNGM5MzI5OTZjYTU3ZGEyMTY0YWZiNmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgdm9pZCBGZXRjaEhlYWRlcnM6OmZpbHRlckFuZEZpbGwoY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycywgR3VhcmQgZ3VhcmQpCiAgICAgfQogfQogCi1PcHRpb25hbDxX
VEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6
Om5leHQoKQorc3RkOjpvcHRpb25hbDxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+
IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Om5leHQoKQogewogICAgIHdoaWxlIChtX2N1cnJlbnRJ
bmRleCA8IG1fa2V5cy5zaXplKCkpIHsKICAgICAgICAgYXV0byBrZXkgPSBtX2tleXNbbV9jdXJy
ZW50SW5kZXgrK107CkBAIC0xMzEsNyArMTMxLDcgQEAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBGZXRjaEhlYWRlcnM6Okl0ZXJhdG9yOjpuZXh0KCkKICAgICAg
ICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6OktleVZhbHVl
UGFpcjxTdHJpbmcsIFN0cmluZz4geyBXVEZNb3ZlKGtleSksIFdURk1vdmUodmFsdWUpIH07CiAg
ICAgfQotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IEZldGNoSGVhZGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKEZldGNoSGVhZGVycyYgaGVhZGVycykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5oCmluZGV4IGMzZTA2
YjdmNmU3MjZiMGVhZjEzNWIyZTdhZDI0YzE1MDRjODIzYWUuLjdmNjRlZDExYTIzMTQ1YmFkYjI4
MWEzODJlOThmNGI1YmFjZDI0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEhlYWRlcnMuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBGZXRjaEhlYWRlcnMgOiBwdWJs
aWMgUmVmQ291bnRlZDxGZXRjaEhlYWRlcnM+IHsKICAgICBjbGFzcyBJdGVyYXRvciB7CiAgICAg
cHVibGljOgogICAgICAgICBleHBsaWNpdCBJdGVyYXRvcihGZXRjaEhlYWRlcnMmKTsKLSAgICAg
ICAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBuZXh0KCk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBu
ZXh0KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWY8RmV0Y2hIZWFkZXJzPiBtX2hlYWRl
cnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKaW5k
ZXggNTE5MDAxNzI2ZmVmOGViMjQ5YTk0ZTJlYTA3YTNlZjA4YzVhMmYyZS4uYWQxOTgwNWRjYjk5
OGQzOWRhNDhmZTU3YmZiZTYzOTA0OTlmZjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZmVycmVyUG9saWN5
KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkKK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0UmVmZXJyZXJQb2xpY3koRmV0Y2hPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KQogewogICAgIGlmIChy
ZWZlcnJlclBvbGljeS5pc0VtcHR5KCkpCiAgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kg
PSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKQEAgLTU1LDEwICs1
NSwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWZlcnJlclBvbGljeShGZXRj
aE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZwogICAgICAgICBvcHRpb25zLnJlZmVycmVy
UG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6VW5zYWZlVXJsOwogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJC
YWQgcmVmZXJyZXIgcG9saWN5IHZhbHVlLiIpIH07Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0
TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSAibmF2aWdhdGUiKQogICAgICAg
ICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwpAQCAtNzAsMTAg
KzcwLDEwIEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldE1vZGUoRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG1vZGUpCiAgICAgICAgIG9wdGlvbnMubW9kZSA9IEZl
dGNoT3B0aW9uczo6TW9kZTo6Q29yczsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQmFkIGZldGNoIG1vZGUgdmFsdWUuIikgfTsK
LSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0
aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbHMpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+IHNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFscykKIHsKICAgICBpZiAoY3JlZGVudGlhbHMgPT0gIm9taXQiKQogICAgICAg
ICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdDsK
QEAgLTgzLDEwICs4MywxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRDcmVkZW50
aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgYwogICAgICAgICBvcHRp
b25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZTsKICAg
ICBlbHNlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiQmFkIGNyZWRlbnRpYWxzIG1vZGUgdmFsdWUuIikgfTsKLSAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9u
PiBzZXRDYWNoZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY2FjaGUpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHNldENhY2hlKEZldGNoT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKIHsKICAgICBpZiAoY2FjaGUgPT0gImRlZmF1bHQi
KQogICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdDsK
QEAgLTEwMiwxMCArMTAyLDEwIEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldENhY2hl
KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKICAgICAgICAgb3B0
aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok9ubHlJZkNhY2hlZDsKICAgICBlbHNl
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQmFk
IGNhY2hlIG1vZGUgdmFsdWUuIikgfTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWRpcmVj
dChGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3QpCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IHNldFJlZGlyZWN0KEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgU3RyaW5nJiByZWRpcmVjdCkKIHsKICAgICBpZiAocmVkaXJlY3QgPT0gImZvbGxv
dyIpCiAgICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpG
b2xsb3c7CkBAIC0xMTUsMTAgKzExNSwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBz
ZXRSZWRpcmVjdChGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVkaQogICAg
ICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6TWFudWFsOwog
ICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRl
cmFsKCJCYWQgcmVkaXJlY3QgbW9kZSB2YWx1ZS4iKSB9OwotICAgIHJldHVybiBOdWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+
IHNldE1ldGhvZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgaW5pdE1l
dGhvZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TWV0aG9kKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbml0TWV0aG9kKQogewogICAgIGlmICgh
aXNWYWxpZEhUVFBUb2tlbihpbml0TWV0aG9kKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJNZXRob2QgaXMgbm90IGEgdmFsaWQgSFRUUCB0b2tl
bi4iKSB9OwpAQCAtMTI5LDE3ICsxMjksMTcgQEAgc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4g
c2V0TWV0aG9kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbmkKIAog
ICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgobWV0aG9kID09ICJERUxFVEUiIHx8IG1ldGhvZCA9
PSAiR0VUIiB8fCBtZXRob2QgPT0gIkhFQUQiIHx8IG1ldGhvZCA9PSAiT1BUSU9OUyIgfHwgbWV0
aG9kID09ICJQT1NUIiB8fCBtZXRob2QgPT0gIlBVVCIpID8gbWV0aG9kIDogaW5pdE1ldGhvZCk7
CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBzZXRSZWZlcnJlcihGZXRjaFJlcXVlc3Q6OkludGVy
bmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRGljdGlvbmFyeSYgaW5pdCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0
UmVmZXJyZXIoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQpCiB7CiAgICAg
U3RyaW5nIHJlZmVycmVyOwogICAgIGlmICghaW5pdC5nZXQoInJlZmVycmVyIiwgcmVmZXJyZXIp
KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJlcXVlc3QucmVmZXJyZXIg
PSBBU0NJSUxpdGVyYWwoIm5vLXJlZmVycmVyIik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAvLyBGSVhNRTogVGlnaHRl
biB0aGUgVVJMIHBhcnNpbmcgYWxnb3JpdGhtIGFjY29yZGluZyBodHRwczovL3VybC5zcGVjLndo
YXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXBhcnNlci4KICAgICBVUkwgcmVmZXJyZXJVUkwgPSBjb250
ZXh0LmNvbXBsZXRlVVJMKHJlZmVycmVyKTsKQEAgLTE0OCwxNyArMTQ4LDE3IEBAIHN0YXRpYyBP
cHRpb25hbDxFeGNlcHRpb24+IHNldFJlZmVycmVyKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1
ZXN0JiByZXF1ZXN0LCBTCiAKICAgICBpZiAocmVmZXJyZXJVUkwucHJvdG9jb2xJcygiYWJvdXQi
KSAmJiByZWZlcnJlclVSTC5wYXRoKCkgPT0gImNsaWVudCIpIHsKICAgICAgICAgcmVxdWVzdC5y
ZWZlcnJlciA9IEFTQ0lJTGl0ZXJhbCgiY2xpZW50Iik7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghKGNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSAmJiBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVl
c3QocmVmZXJyZXJVUkwpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
QVNDSUlMaXRlcmFsKCJSZWZlcnJlciBpcyBub3Qgc2FtZS1vcmlnaW4uIikgfTsKIAogICAgIHJl
cXVlc3QucmVmZXJyZXIgPSByZWZlcnJlclVSTC5zdHJpbmcoKTsKLSAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8RXhjZXB0
aW9uPiBidWlsZE9wdGlvbnMoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3Qs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQp
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVl
c3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRGljdGlvbmFyeSYgaW5pdCkKIHsKICAgICBKU0M6OkpTVmFsdWUgd2luZG93
OwogICAgIGlmIChpbml0LmdldCgid2luZG93Iiwgd2luZG93KSkgewpAQCAtMjEzLDcgKzIxMyw3
IEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVlc3Q6
OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAg
ICAgICAgIHJldHVybiBleGNlcHRpb247CiAgICAgfQotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIG1ldGhvZENhbkhhdmVCb2R5
KGNvbnN0IEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiBpbnRlcm5hbFJlcXVlc3QpCkBA
IC0zMjAsNyArMzIwLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+IEZldGNoUmVx
dWVzdDo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGUKICAgICBpZiAoaXNEaXN0
dXJiZWRPckxvY2tlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07
CiAKLSAgICBhdXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwg
TnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFkZXJzLmdldCgpKSwgRmV0Y2hSZXF1
ZXN0OjpJbnRlcm5hbFJlcXVlc3QobV9pbnRlcm5hbFJlcXVlc3QpKSk7CisgICAgYXV0byBjbG9u
ZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0
Y2hIZWFkZXJzOjpjcmVhdGUobV9oZWFkZXJzLmdldCgpKSwgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5h
bFJlcXVlc3QobV9pbnRlcm5hbFJlcXVlc3QpKSk7CiAgICAgY2xvbmUtPmNsb25lQm9keSgqdGhp
cyk7CiAgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggYjc2MjY1YTY0MWYzMTBmNDc1MzQ4NDczN2Yy
NDRhODYxZDFlZDZkZi4uOTZmYTk1MWYyM2VmODQwNjJiNTg1NGY3OGM5ZThjNDlmZDExNjRkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCkBAIC00Myw3
ICs0Myw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZldGNoUmVx
dWVzdCBmaW5hbCA6IHB1YmxpYyBGZXRjaEJvZHlPd25lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGZXRjaFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBOdWxsb3B0LCBG
ZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXF1ZXN0KSwgeyB9KSk7
IH0KKyAgICBzdGF0aWMgUmVmPEZldGNoUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRl
eHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFy
ZDo6UmVxdWVzdCksIHsgfSkpOyB9CiAKICAgICBFeGNlcHRpb25PcjxGZXRjaEhlYWRlcnMmPiBp
bml0aWFsaXplV2l0aChGZXRjaFJlcXVlc3QmLCBjb25zdCBEaWN0aW9uYXJ5Jik7CiAgICAgRXhj
ZXB0aW9uT3I8RmV0Y2hIZWFkZXJzJj4gaW5pdGlhbGl6ZVdpdGgoY29uc3QgU3RyaW5nJiwgY29u
c3QgRGljdGlvbmFyeSYpOwpAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBGZXRjaFJlcXVlc3QgZmlu
YWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3duZXIgewogICAgIGNvbnN0IFN0cmluZyYgaW50ZXJuYWxS
ZXF1ZXN0UmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5yZWZlcnJl
cjsgfQogCiBwcml2YXRlOgotICAgIEZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBJbnRlcm5hbFJl
cXVlc3QmJik7CisgICAgRmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6
Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgSW50ZXJuYWxSZXF1
ZXN0JiYpOwogCiAgICAgRXhjZXB0aW9uT3I8RmV0Y2hIZWFkZXJzJj4gaW5pdGlhbGl6ZU9wdGlv
bnMoY29uc3QgRGljdGlvbmFyeSYpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgRmV0Y2hS
ZXF1ZXN0IGZpbmFsIDogcHVibGljIEZldGNoQm9keU93bmVyIHsKICAgICBtdXRhYmxlIFN0cmlu
ZyBtX3JlcXVlc3RVUkw7CiB9OwogCi1pbmxpbmUgRmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJv
ZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYgaW50ZXJu
YWxSZXF1ZXN0KQoraW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6b3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJl
ZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgSW50ZXJuYWxSZXF1ZXN0JiYgaW50ZXJuYWxSZXF1
ZXN0KQogICAgIDogRmV0Y2hCb2R5T3duZXIoY29udGV4dCwgV1RGTW92ZShib2R5KSwgV1RGTW92
ZShoZWFkZXJzKSkKICAgICAsIG1faW50ZXJuYWxSZXF1ZXN0KFdURk1vdmUoaW50ZXJuYWxSZXF1
ZXN0KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCmluZGV4IDAyZTMxMzUwZjI2ZTBjOWIxODUyNGNkNDI0OWRiYjg2NzI0Mjc2OTcuLjM1ZmIw
OGJjM2MwYTAxNTE1YTVmNjgzNTVlYTU4OWFmN2E2MTVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OmluaXRpYWxpemVXaXRoKEpTQzo6RXhlY1N0YXRlJiBleGVjU3RhdGUs
IEpTQzo6SlNWYWx1ZSBib2R5KQogICAgIHVwZGF0ZUNvbnRlbnRUeXBlKCk7CiB9CiAKLUZldGNo
UmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
T3B0aW9uYWw8RmV0Y2hCb2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25z
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9k
eT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSkKICAgICA6IEZldGNoQm9keU93bmVyKGNvbnRleHQsIFdURk1vdmUoYm9keSks
IFdURk1vdmUoaGVhZGVycykpCiAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQog
ewpAQCAtOTMsNyArOTMsNyBAQCBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xv
bmVGb3JKUygpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNT
RVJUKCFpc0Rpc3R1cmJlZE9yTG9ja2VkKCkpOwogCi0gICAgYXV0byBjbG9uZSA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXNwb25zZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBOdWxsb3B0LCBG
ZXRjaEhlYWRlcnM6OmNyZWF0ZShoZWFkZXJzKCkpLCBSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9u
c2UpKSk7CisgICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBzdGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRl
KGhlYWRlcnMoKSksIFJlc291cmNlUmVzcG9uc2UobV9yZXNwb25zZSkpKTsKICAgICBjbG9uZS0+
Y2xvbmVCb2R5KCp0aGlzKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CkBAIC0xMDUsOSArMTA1LDkg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QKICAgICAvLyBTZXR0aW5nIHBlbmRpbmcgYWN0aXZp
dHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJhY2sgaXMgY2Fs
bGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2UucHRyKCkpOwog
Ci0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IEJvZHlMb2FkZXIocmVzcG9uc2UuZ2V0KCks
IFdURk1vdmUocHJvbWlzZSkpOworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIuZW1wbGFjZShy
ZXNwb25zZS5nZXQoKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9i
b2R5TG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1ZXN0KSkKLSAgICAgICAgcmVzcG9uc2UtPm1f
Ym9keUxvYWRlciA9IE51bGxvcHQ7CisgICAgICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IFN0cmluZyYgRmV0Y2hSZXNwb25zZTo6dXJsKCkgY29u
c3QKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRp
ZFN1Y2NlZWQoKQogI2VuZGlmCiAKICAgICBpZiAobV9sb2FkZXItPmlzU3RhcnRlZCgpKQotICAg
ICAgICBtX3Jlc3BvbnNlLm1fYm9keUxvYWRlciA9IE51bGxvcHQ7CisgICAgICAgIG1fcmVzcG9u
c2UubV9ib2R5TG9hZGVyID0gc3RkOjpudWxsb3B0OwogICAgIG1fcmVzcG9uc2UudW5zZXRQZW5k
aW5nQWN0aXZpdHkoJm1fcmVzcG9uc2UpOwogfQogCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRGYWlsKCkKIHsKICAgICBBU1NFUlQobV9yZXNw
b25zZS5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgaWYgKG1fcHJvbWlzZSkKLSAgICAgICAg
c3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5yZWplY3QoVHlwZUVycm9yKTsKKyAg
ICAgICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIHN0ZDo6bnVsbG9wdCktPnJlamVjdChUeXBl
RXJyb3IpOwogCiAjaWYgRU5BQkxFKFJFQURBQkxFX1NUUkVBTV9BUEkpCiAgICAgaWYgKG1fcmVz
cG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkgewpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkRmFpbCgpCiAKICAgICAvLyBDaGVjayB3aGV0
aGVyIGRpZEZhaWwgaXMgY2FsbGVkIGFzIHBhcnQgb2YgRmV0Y2hMb2FkZXI6OnN0YXJ0LgogICAg
IGlmIChtX2xvYWRlci0+aXNTdGFydGVkKCkpCi0gICAgICAgIG1fcmVzcG9uc2UubV9ib2R5TG9h
ZGVyID0gTnVsbG9wdDsKKyAgICAgICAgbV9yZXNwb25zZS5tX2JvZHlMb2FkZXIgPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICBtX3Jlc3BvbnNlLnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jlc3BvbnNl
KTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdQogICAgIG1f
cmVzcG9uc2UubV9yZXNwb25zZSA9IHJlc291cmNlUmVzcG9uc2U7CiAgICAgbV9yZXNwb25zZS5t
X2hlYWRlcnMtPmZpbHRlckFuZEZpbGwocmVzb3VyY2VSZXNwb25zZS5odHRwSGVhZGVyRmllbGRz
KCksIEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKTsKIAotICAgIHN0ZDo6ZXhjaGFuZ2Uo
bV9wcm9taXNlLCBOdWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKKyAgICBzdGQ6OmV4Y2hh
bmdlKG1fcHJvbWlzZSwgc3RkOjpudWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKIH0KIAog
dm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEZldGNoUmVzcG9u
c2U6OkJvZHlMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZldAogCiB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0b3AoKQogewotICAg
IG1fcHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9wcm9taXNlID0gc3RkOjpudWxsb3B0OwogICAg
IGlmIChtX2xvYWRlcikKICAgICAgICAgbV9sb2FkZXItPnN0b3AoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggYWUxZTc0NGU1NGQwYjk0
Y2VhOGE0ZDQwMTljYzA0NTg3OGRjZTk0Ny4uNmE2ZTY3YTJiNTZlMGQ2ZWVmNTc1YzI2YjdiZjAy
ZGU5OWU4ZTY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6IHB1Ymxp
YyBGZXRjaEJvZHlPd25lciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgVHlwZSA9IFJlc291cmNlUmVz
cG9uc2U6OlR5cGU7CiAKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNo
UmVzcG9uc2UoY29udGV4dCwgTnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFk
ZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsgfQorICAgIHN0YXRp
YyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBzdGQ6Om51
bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNl
KSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+
IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEZldGNoUmVzcG9uc2U+PiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgU3RyaW5nJiB1cmwsIGludCBzdGF0dXMpOwogCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEZl
dGNoUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3duZXIgewogICAgIGJvb2wgaXNM
b2FkaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2JvZHlMb2FkZXI7IH0KIAogcHJpdmF0ZToKLSAg
ICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRjaEJv
ZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CisgICAgRmV0
Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwgc3RkOjpvcHRpb25hbDxGZXRjaEJv
ZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICBz
dGF0aWMgdm9pZCBzdGFydEZldGNoaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBG
ZXRjaFJlcXVlc3QmLCBGZXRjaFByb21pc2UmJik7CiAKQEAgLTExNywxMiArMTE3LDEyIEBAIGNs
YXNzIEZldGNoUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3duZXIgewogICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIGZpbmFsOwogCiAgICAg
ICAgIEZldGNoUmVzcG9uc2UmIG1fcmVzcG9uc2U7Ci0gICAgICAgIE9wdGlvbmFsPEZldGNoUHJv
bWlzZT4gbV9wcm9taXNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEZldGNoUHJvbWlzZT4gbV9w
cm9taXNlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IG1fbG9hZGVyOwog
ICAgIH07CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgT3B0aW9uYWw8
Qm9keUxvYWRlcj4gbV9ib2R5TG9hZGVyOworICAgIHN0ZDo6b3B0aW9uYWw8Qm9keUxvYWRlcj4g
bV9ib2R5TG9hZGVyOwogICAgIG11dGFibGUgU3RyaW5nIG1fcmVzcG9uc2VVUkw7CiAKICAgICBG
ZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFy
cmF5QnVmZmVyICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Db29yZGluYXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L0Nvb3JkaW5hdGVzLmNwcAppbmRleCBiYmM3NmM3ZGQzZDlkMjcwYzQ1ZjBkZTQ4YWRmMDFiNDZl
MWViZmZiLi44OTgxZmI1NWUxNTczZGRiZGUwNWY4ZTNhYTBlZTAyMzVkMWI5ZTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3JkaW5hdGVzLmNwcApA
QCAtMjgsMzEgKzI4LDMxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT3B0aW9uYWw8ZG91
YmxlPiBDb29yZGluYXRlczo6YWx0aXR1ZGUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+
IENvb3JkaW5hdGVzOjphbHRpdHVkZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhblByb3ZpZGVB
bHRpdHVkZSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIG1fYWx0aXR1ZGU7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ29v
cmRpbmF0ZXM6OmFsdGl0dWRlQWNjdXJhY3koKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+
IENvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2Fu
UHJvdmlkZUFsdGl0dWRlQWNjdXJhY3kpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7CiB9
CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ29vcmRpbmF0ZXM6OmhlYWRpbmcoKSBjb25zdAorc3RkOjpv
cHRpb25hbDxkb3VibGU+IENvb3JkaW5hdGVzOjpoZWFkaW5nKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY2FuUHJvdmlkZUhlYWRpbmcpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX2hlYWRpbmc7CiB9CiAKLU9wdGlvbmFs
PGRvdWJsZT4gQ29vcmRpbmF0ZXM6OnNwZWVkKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBDb29yZGluYXRlczo6c3BlZWQoKSBjb25zdAogewogICAgIGlmICghbV9jYW5Qcm92aWRlU3Bl
ZWQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBtX3NwZWVkOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9Db29yZGluYXRlcy5oCmluZGV4IDgzYmFhYzllN2FhYmJlZGE2NDk5
YjFlNjYzN2NhZDk0ZjM0MGM4MmUuLjA4YzMxM2IxOGE3OTJhNjUzY2Q0N2ZhN2U2YmQ5YWYyNzMw
NDY4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vQ29v
cmRpbmF0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0Nvb3Jk
aW5hdGVzLmgKQEAgLTQyLDExICs0MiwxMSBAQCBjbGFzcyBDb29yZGluYXRlcyA6IHB1YmxpYyBS
ZWZDb3VudGVkPENvb3JkaW5hdGVzPiB7CiAKICAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7
IHJldHVybiBtX2xhdGl0dWRlOyB9CiAgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9uZ2l0dWRlOyB9Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZSgpIGNvbnN0OwogICAgIGRvdWJs
ZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KLSAgICBPcHRpb25hbDxk
b3VibGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IGhl
YWRpbmcoKSBjb25zdDsKLSAgICBPcHRpb25hbDxkb3VibGU+IHNwZWVkKCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gaGVhZGluZygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBzcGVlZCgpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBDb29yZGluYXRlcyhkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3Vy
YWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJs
ZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGUzYTVhYmRkNDYw
ZmFhM2QwMWVjMmU0MzY1YTI1ZGM4ZjZkYzc4ZGQuLmZmMmMyMTk4ZjdkNmE4NDcxODRlMjQ3M2Mz
YWMyNmJlNTgyMDljODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcApAQCAtNzIsNyArNzIsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQkN1
cnNvcjo6ZGlyZWN0aW9uUHJldlVuaXF1ZSgpCiAgICAgcmV0dXJuIHByZXZ1bmlxdWU7CiB9CiAK
LU9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPiBJREJDdXJzb3I6OnN0cmluZ1Rv
RGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKQorc3RkOjpvcHRpb25hbDxJ
bmRleGVkREI6OkN1cnNvckRpcmVjdGlvbj4gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZykKIHsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5n
ID09IGRpcmVjdGlvbk5leHQoKSkKICAgICAgICAgcmV0dXJuIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uOjpOZXh0OwpAQCAtODMsNyArODMsNyBAQCBPcHRpb25hbDxJbmRleGVkREI6OkN1cnNv
ckRpcmVjdGlvbj4gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmCiAg
ICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSBkaXJlY3Rpb25QcmV2VW5pcXVlKCkpCiAgICAgICAg
IHJldHVybiBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbjo6UHJldk5vRHVwbGljYXRlOwogCi0g
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlvblRvU3RyaW5nKEluZGV4ZWREQjo6Q3Vy
c29yRGlyZWN0aW9uIGRpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmgKaW5kZXggZDAxNzZkZWI1MTkyMzNmMTY5ZmMwMzRhMDcwYzEwMGY3MDk0
ZjNjOS4uY2YyMDI3NGU5ZjcyNzdkMjVlYjhjMDczOWU1MDBjMzE1OWFjZjUwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTUwLDcgKzUwLDcg
QEAgY2xhc3MgSURCQ3Vyc29yIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNv
dW50ZWQ8SURCQ3Vyc29yPiwgcHVibGljIEEKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBkaXJlY3Rpb25QcmV2KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0
aW9uUHJldlVuaXF1ZSgpOwogCi0gICAgc3RhdGljIE9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uPiBzdHJpbmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPiBzdHJp
bmdUb0RpcmVjdGlvbihjb25zdCBTdHJpbmcmIG1vZGVTdHJpbmcpOwogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvblRvU3RyaW5nKEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIG1vZGUpOwogICAgIAogICAgIHZpcnR1YWwgfklEQkN1cnNvcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggYzA0NGQ0ZTk5ODk3
MzU1NzlhMTZiMzVhNmU3MmRiZWU0NzJjOTVhMi4uNDI0NTQ3ZDAxNzlhMTc4MzFjZDVhYjI4ZjA5
ZTJlNzQ0MGI0ZDYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIElEQkRhdGFiYXNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0CiAg
ICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAg
IHN0cnVjdCBPYmplY3RTdG9yZVBhcmFtZXRlcnMgewotICAgICAgICBPcHRpb25hbDxJREJLZXlQ
YXRoPiBrZXlQYXRoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGtleVBhdGg7
CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmlu
ZGV4IDljZmY3YTJjZWRkN2E2ZDc4OTg0OWFjZTJiMThiN2Q0NmRlMzE5MDYuLmRkOWYxNGZmYTE0
OTM2MTFkMDE2NjFiY2E3YTdmODg5Mjk3YWJkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC01OSw3
ICs1OSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlSWRlbnRpZmllciB7CiAgICAgICAgIHVuc2lnbmVk
IG1haW5GcmFtZVByb3RvY29sSGFzaCA9IFN0cmluZ0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmln
aW4ucHJvdG9jb2wpOwogICAgICAgICB1bnNpZ25lZCBtYWluRnJhbWVIb3N0SGFzaCA9IFN0cmlu
Z0hhc2g6Omhhc2gobV9tYWluRnJhbWVPcmlnaW4uaG9zdCk7CiAgICAgICAgIAotICAgICAgICB1
bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5hbWVIYXNoLCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBv
cGVuaW5nSG9zdEhhc2gsIG1fb3BlbmluZ09yaWdpbi5wb3J0LnZhbHVlT3IoMCksIG1haW5GcmFt
ZVByb3RvY29sSGFzaCwgbWFpbkZyYW1lSG9zdEhhc2gsIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQu
dmFsdWVPcigwKSB9OworICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbN10gPSB7IG5hbWVIYXNo
LCBvcGVuaW5nUHJvdG9jb2xIYXNoLCBvcGVuaW5nSG9zdEhhc2gsIG1fb3BlbmluZ09yaWdpbi5w
b3J0LnZhbHVlX29yKDApLCBtYWluRnJhbWVQcm90b2NvbEhhc2gsIG1haW5GcmFtZUhvc3RIYXNo
LCBtX21haW5GcmFtZU9yaWdpbi5wb3J0LnZhbHVlX29yKDApIH07CiAgICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCmluZGV4IDFjNDQwYjhhNjZjYTZkYzA1MGQxMmNjMTE5NjVhNjgxMDYyNjhlOTkuLjc4YzE4
OGI1MjAxMDdiODFmYzAwNTQ1ZTIyZGQ3ZTI1MjE0Njc1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC03NiwxNCArNzYsMTQgQEAg
SURCRmFjdG9yeTo6fklEQkZhY3RvcnkoKQogewogfQogCi1FeGNlcHRpb25PcjxSZWY8SURCT3Bl
bkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbikKK0V4
Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHZlcnNpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkZhY3Rvcnk6
Om9wZW4iKTsKICAgICAKICAgICBpZiAodmVyc2lvbiAmJiAhdmVyc2lvbi52YWx1ZSgpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIklEQkZhY3Rv
cnkub3BlbigpIGNhbGxlZCB3aXRoIGEgdmVyc2lvbiBvZiAwIikgfTsKIAotICAgIHJldHVybiBv
cGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZU9yKDApKTsKKyAgICByZXR1
cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVfb3IoMCkpOwogfQog
CiBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDI3MjY3NDM3NjY5ZWIwNTBlMGI0MDU3NTJkMGM4
NzIzMDQ4ODBiMzAuLjczNGYyMGMwZWIyNGEwYWRlODQ2MjVhMTk3OTQ3ZmFhMmMzZDkyZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTU0
LDcgKzU0LDcgQEAgY2xhc3MgSURCRmFjdG9yeSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxJREJGYWN0b3J5PiB7CiAgICAgc3RhdGljIFJlZjxJREJGYWN0b3J5PiBjcmVhdGUoSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkmKTsKICAgICB+SURCRmFjdG9yeSgpOwogCi0gICAgRXhj
ZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIE9wdGlvbmFsPHVpbnQ2NF90PiB2ZXJzaW9uKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IG9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdmVy
c2lvbik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBkZWxldGVEYXRh
YmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAg
IEV4Y2VwdGlvbk9yPHNob3J0PiBjbXAoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZmly
c3QsIEpTQzo6SlNWYWx1ZSBzZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguY3BwCmluZGV4IDUyN2JiYTlmMmIwMzY4ZWZiZDQ5OTMyNzgwM2NjNjk4
ODZmNzRkZTAuLjZhMDhjZDk0NGY5YmYyZmMxZWE3NTljOTEzNjlhNzM1MWU4YTVhYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTMyMSw3
ICszMjEsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4Ojpkb0dldEtl
eShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgY29uc3QgSURCSwogICAgIHJldHVybiB0cmFuc2FjdGlv
bi5yZXF1ZXN0R2V0S2V5KGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlKTsKIH0KIAotRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRl
LCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBl
eGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0QWxsIik7CiAg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTMzNSw3ICszMzUsNyBAQCBFeGNlcHRp
b25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3Rh
dGUsIFJlZlB0cjxJREJLZQogICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCku
cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCByYW5nZS5nZXQoKSwg
SW5kZXhlZERCOjpHZXRBbGxUeXBlOjpWYWx1ZXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8
UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBK
U1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVl
IGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgYXV0byBvbmx5UmVz
dWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChvbmx5UmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzQ0LDcgKzM0NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1
ZSBrZXksCiAgICAgcmV0dXJuIGdldEFsbChleGVjU3RhdGUsIG9ubHlSZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCksIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJ
REJJbmRleDo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJh
bmdlPiByYW5nZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVm
UHRyPElEQktleVJhbmdlPiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRBbGxLZXlzIik7CiAgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2Uo
KS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTM1OCw3ICszNTgsNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBS
ZWZQdHI8SQogICAgIHJldHVybiBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkucmVxdWVzdEdl
dEFsbEluZGV4UmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCByYW5nZS5nZXQoKSwgSW5kZXhlZERC
OjpHZXRBbGxUeXBlOjpLZXlzLCBjb3VudCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1
ZXN0Pj4gSURCSW5kZXg6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUg
a2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtl
eSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgYXV0byBvbmx5UmVzdWx0
ID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChvbmx5UmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmgKaW5kZXggMGViMWI5ZTRjMDJiNzkxMGI5NTIyOTRkMGJlZWFmNWZmMmVlYWVkNy4uZWQ4
Y2Q2NWM5YjVhODc5Y2E2OTljOWQ2MDMyMTdhOTU4NjNiNWUxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC03MCwxMCArNzAsMTAgQEAgY2xhc3Mg
SURCSW5kZXggZmluYWwgOiBwcml2YXRlIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpFeGVjU3RhdGUmLCBJREJLZXlSYW5nZSop
OwogICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0S2V5KEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIE9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGwo
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkV4
ZWNTdGF0ZSYsIFJlZlB0cjxJREJLZXlSYW5nZT4sIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7
Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0
cjxJREJLZXlSYW5nZT4sIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSBrZXksIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBSZWZQdHI8SURC
S2V5UmFuZ2U+LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOwogCiAgICAgY29uc3QgSURC
SW5kZXhJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguaAppbmRleCBlNmZhYTE5NTZjOTM2
MzdiZmM2YzEyMmUwMDhiYjkxYzc1OTllMGM3Li43YzNmMDIxNmUwNGNkNzI5YjVhYjZjODVhYzQy
YWI1NWExZjkyNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5UGF0aC5oCkBAIC00NSw3ICs0NSw3IEBAIGVudW0gY2xhc3MgSURCS2V5UGF0aFBhcnNlRXJy
b3IgewogCiB2b2lkIElEQlBhcnNlS2V5UGF0aChjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5n
PiYsIElEQktleVBhdGhQYXJzZUVycm9yJik7CiBJREJLZXlQYXRoIGlzb2xhdGVkQ29weShjb25z
dCBJREJLZXlQYXRoJik7Ci1pbmxpbmUgT3B0aW9uYWw8SURCS2V5UGF0aD4gaXNvbGF0ZWRDb3B5
KGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiB2YXJpYW50KQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4gaXNvbGF0ZWRDb3B5KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0
aD4mIHZhcmlhbnQpCiB7CiAgICAgaWYgKCF2YXJpYW50KQogICAgICAgICByZXR1cm4geyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCmluZGV4IDRmOWM0OTU2YmZmYmVkYjM0N2EyOGI2ODIzYmFlZjI4YTcwMDk1MDMuLmY1Njg0
ZThmMTIxMGI1ZmM0OGM5NmY5MzhlMzIxYjZjNjdjN2RmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJREJPYmplY3RTdG9yZTo6c2V0TmFtZShjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotY29uc3QgT3B0aW9uYWw8SURCS2V5
UGF0aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKK2NvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5vcmlnaW5U
aHJlYWRJRCgpKTsKICAgICByZXR1cm4gbV9pbmZvLmtleVBhdGgoKTsKQEAgLTU0MSw3ICs1NDEs
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQk9iamVjdFN0b3JlOjpkb0NvdW50
KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdAogICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLnJl
cXVlc3RDb3VudChleGVjU3RhdGUsICp0aGlzLCByYW5nZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQor
RXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNT
dGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6
OmdldEFsbCIpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi5k
YXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgUmVmUHRyCiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24ucmVxdWVzdEdldEFsbE9i
amVjdFN0b3JlUmVjb3JkcyhleGVjU3RhdGUsICp0aGlzLCByYW5nZS5nZXQoKSwgSW5kZXhlZERC
OjpHZXRBbGxUeXBlOjpWYWx1ZXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1Zh
bHVlIGtleSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9uT3I8UmVmPElEQlJl
cXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1Zh
bHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAgICAgYXV0byBvbmx5
UmVzdWx0ID0gSURCS2V5UmFuZ2U6Om9ubHkoZXhlY1N0YXRlLCBrZXkpOwogICAgIGlmIChvbmx5
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNTY0LDcgKzU2NCw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxJREJSZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSlNWYWx1CiAgICAgcmV0dXJuIGdldEFsbChleGVjU3RhdGUsIG9ubHlSZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCksIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+
PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRy
PElEQktleVJhbmdlPiByYW5nZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQorRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSwgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gY291bnQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpnZXRB
bGxLZXlzIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5zYWN0aW9uLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CkBAIC01NzgsNyArNTc4LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSwgUmUKICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5yZXF1ZXN0R2V0QWxsT2Jq
ZWN0U3RvcmVSZWNvcmRzKGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlLmdldCgpLCBJbmRleGVkREI6
OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVl
c3Q+PiBJREJPYmplY3RTdG9yZTo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK0V4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gSURCT2JqZWN0U3RvcmU6OmdldEFsbEtleXMoRXhlY1N0YXRlJiBleGVjU3RhdGUs
IEpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBhdXRv
IG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYg
KG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA2NDA2OTNkMDk3ZGE1MjhiZDZiZTkw
ZTg1ZWUzNzQ3ZmFiODMxMWU0Li4wODE3MDBiMTI3ODc2YjBlNDhhNjlmYTA2MjNlYTQ4NzUwZDVj
MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSURCT2JqZWN0U3RvcmUgZmluYWwgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgY29u
c3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKCkgY29uc3Q7CiAgICAgUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKICAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24oKTsKICAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKQEAgLTg3LDEwICs4Nywx
MCBAQCBjbGFzcyBJREJPYmplY3RTdG9yZSBmaW5hbCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBjb3VudChKU0M6OkV4ZWNTdGF0ZSYs
IElEQktleVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBjb3VudChK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXkpOwotICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwg
T3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVp
bnQzMl90PiBjb3VudCk7Ci0gICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxL
ZXlzKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgT3B0aW9uYWw8dWludDMy
X3Q+IGNvdW50KTsKLSAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMo
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0
YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQp
OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlIGtleSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsS2V5cyhKU0M6OkV4ZWNTdGF0ZSYs
IFJlZlB0cjxJREJLZXlSYW5nZT4sIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUga2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CiAKICAg
ICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IHB1dEZvckN1cnNvclVwZGF0ZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAz
OGRlY2Q1M2I5YWIwODEyZWI4MDlmNWZiYjNiNmJkYTFlYzhiMDFhLi5iODMyNmFmZDMyMzA0NjEy
NmE0MzUzZTU0NDk3YWIwYmUxOTU3NzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC03NTYsNyArNzU2LDcgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IElEQlJlc3UKICAgICByZXF1ZXN0LmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3Io
cmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVj
dFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291
bnQpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxPYmplY3RT
dG9yZVJlY29yZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0
U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6Okdl
dEFsbFR5cGUgZ2V0QWxsVHlwZSwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3Rv
cmVSZWNvcmRzIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwpAQCAtNzc0LDcgKzc3NCw3IEBA
IFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEFsbE9iamVjdFN0b3Jl
UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUmVmPElE
QlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIGdldEFsbFR5cGUsIE9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudCkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRl
eCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWREQjo6R2V0QWxs
VHlwZSBnZXRBbGxUeXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMi
KTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA1NmEyYWU4MDgxNjU1YzE4NDY4OTE1
MzFkYmU4NjM4ODdhNzVhNjg2Li5mZjE4ZDg5MTU2NDQyNWEyZmZlZmQ2OGVhODRlZThiNzBkNTUx
ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmgKQEAgLTExNSw4ICsxMTUsOCBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbiA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudAogCiAg
ICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RQdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYsIElEQk9i
amVjdFN0b3JlJiwgSURCS2V5KiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSW5kZXhlZERCOjpP
YmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0
UmVjb3JkKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJHZXRSZWNv
cmREYXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJl
Y29yZHMoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
LSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNT
dGF0ZSYsIElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRB
bGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIFJlZjxJREJSZXF1ZXN0PiBy
ZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0
U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVz
dEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYsIElEQkluZGV4JiwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCk7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3REZWxldGVSZWNvcmQoSlND
OjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwog
ICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShKU0M6OkV4ZWNTdGF0
ZSYsIElEQk9iamVjdFN0b3JlJik7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChK
U0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmNwcAppbmRleCAzMDc0MjAwZTc2ZDI1ZjY5MjJjYjNlZmVmNDU0YmUw
NmY4NDg4NGI4Li5lODRhNzMzYzJlNWY3YjJhOGYyMzc2NTY5MmUyMjVhNjk5MDZhZGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdl
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgSURCVmVyc2lvbkNoYW5nZUV2ZW50
OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXMKICAgICBpZiAobmV3VmVyc2lvbikKICAgICAgICAgbV9uZXdWZXJzaW9uID0gbmV3VmVyc2lv
bjsKICAgICBlbHNlCi0gICAgICAgIG1fbmV3VmVyc2lvbiA9IE51bGxvcHQ7CisgICAgICAgIG1f
bmV3VmVyc2lvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBJbml0
JiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAppbmRleCBlOTIxOGVi
YTE2MjYwOTIxOTQwMDhkZTAyMTg1YzBiMzgwNjM0MGNmLi4wODAxNzIwYmMyYjhiZDdkYmVmOWQ1
NjViZGNiNzRiMTRlZGFkNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaApAQCAtNDcsNyArNDcsNyBAQCBj
bGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogCiAgICAg
c3RydWN0IEluaXQgOiBFdmVudEluaXQgewogICAgICAgICB1aW50NjRfdCBvbGRWZXJzaW9uIHsg
MCB9OwotICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbmV3VmVyc2lvbjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gbmV3VmVyc2lvbjsKICAgICB9OwogCiAgICAgc3RhdGljIFJl
ZjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IEluaXQmIGluaXRpYWxpemVyLCBJc1RydXN0ZWQgaXNUcnVzdGVkID0gSXNUcnVzdGVk
OjpObykKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgSURCVmVyc2lvbkNoYW5nZUV2ZW50IGZpbmFs
IDogcHVibGljIEV2ZW50IHsKICAgICBib29sIGlzVmVyc2lvbkNoYW5nZUV2ZW50KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdWludDY0X3Qgb2xkVmVyc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb2xkVmVyc2lvbjsgfQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gbmV3VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV3VmVyc2lvbjsgfQogCiBw
cml2YXRlOgogICAgIElEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBu
ZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CkBAIC03MCw3ICs3MCw3
IEBAIGNsYXNzIElEQlZlcnNpb25DaGFuZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAK
ICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9yZXF1ZXN0SWRlbnRpZmllcjsKICAgICB1aW50
NjRfdCBtX29sZFZlcnNpb247Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbmV3VmVyc2lvbjsK
KyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtX25ld1ZlcnNpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMWEzMTBiOTNiYjhl
ODBhNGUyNzczMTAzMWNmNDg3YzBmYmRhYmU5NS4uODJkOTBlY2FkMTZmNTI0N2ExOTU3NDA2Mzk1
OThlZmZmNTkwODQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBT
dHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBh
dGgoY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
IGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7
CiAKQEAgLTU2LDcgKzU2LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
UGF0aChjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKICAgICByZXR1cm4gZW5j
b2Rlci0+ZmluaXNoRW5jb2RpbmcoKTsKIH0KIAotYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIE9wdGlvbmFsPElEQktleVBhdGg+JiBy
ZXN1bHQpCitib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgcmVzdWx0KQogewogICAgIGlm
ICghZGF0YSB8fCAhc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmgKaW5kZXggNTk3MjAzZWJiNjBmMjBmZGM5NjkzMmY1N2UyNTI0YmZmNzMyMWIyYy4uMDk0ZmJj
NmVjZTVjMDIzZjRkODI2N2FkMzA0MTI4ZmRhNWI4M2Y2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5o
CkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5RGF0
YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBPcHRp
b25hbDxJREJLZXlQYXRoPiYpOwotYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgT3B0aW9uYWw8SURCS2V5UGF0aD4mKTsK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOworYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOwogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElE
QktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCmluZGV4
IDMwN2M3YTEyMTcyOWM3YjRiZGU1ZThlNTFhNWZmZGZkYzdkZjY2MjYuLmU5MmQyNjgwMTBkNTQy
MGRhNTMyNmZmZGVlYmM4NTcxMjQxNmYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcApAQCAtMTU4LDcgKzE1
OCw3IEBAIHVpbnQ2NF90IE1lbW9yeUluZGV4Ojpjb3VudEZvcktleVJhbmdlKGNvbnN0IElEQktl
eVJhbmdlRGF0YSYgaW5SYW5nZSkKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLXZvaWQgTWVtb3J5
SW5kZXg6OmdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEs
IE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIElE
QkdldEFsbFJlc3VsdCYgcmVzdWx0KSBjb25zdAordm9pZCBNZW1vcnlJbmRleDo6Z2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSB0eXBlLCBJREJHZXRBbGxSZXN1
bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SW5kZXg6Omdl
dEFsbFJlY29yZHMiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaAppbmRleCA4NDc1OTg0NzUyOWY2YzViNzAzZGRlMjdm
NzA3MDNlNGYwNTg1OTJiLi41YmY5Y2JhODkzYTQ3Y2IyZjBjMThhZGFkYjEzMzY4NDBlN2RhMDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXguaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBNZW1vcnlJbmRleCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lbW9yeUluZGV4PiB7CiAKICAgICBJREJHZXRSZXN1bHQgZ2V0UmVzdWx0
Rm9yS2V5UmFuZ2UoSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpIGNvbnN0OwogICAgIHVpbnQ2NF90IGNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5
UmFuZ2VEYXRhJik7Ci0gICAgdm9pZCBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0
YSYsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBJREJH
ZXRBbGxSZXN1bHQmKSBjb25zdDsKKyAgICB2b2lkIGdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiwgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0
QWxsVHlwZSwgSURCR2V0QWxsUmVzdWx0JikgY29uc3Q7CiAKICAgICBJREJFcnJvciBwdXRJbmRl
eEtleShjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSW5kZXhLZXkmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggZmE0NGI3YmFhYjQ2YTNiNjY1YzQzMTZmZmUyZDAzMDJmM2VkZDRi
NS4uMzRiNGUxMjlhZDY2YWE1MDIwMmFiZGZlOThlZGViMjkwYzc1NTdjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCkBAIC00MDgsNyArNDA4LDcgQEAgVGhyZWFkU2FmZURhdGFCdWZmZXIg
TWVtb3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRh
JgogICAgIHJldHVybiBtX2tleVZhbHVlU3RvcmUtPmdldChrZXkpOwogfQogCi12b2lkIE1lbW9y
eU9iamVjdFN0b3JlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFu
Z2VEYXRhLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSB0
eXBlLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkgY29uc3QKK3ZvaWQgTWVtb3J5T2JqZWN0U3Rv
cmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwg
SURCR2V0QWxsUmVzdWx0JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgcmVzdWx0ID0geyB0eXBlIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5kZXggNjIwOTg2MTlmOWIwZGU5ZjJmNmY1MmRjN2M5
YTE2NzQ4YTNlYWFhYy4uZTYxYTBlZTk4MjBjMTM3NGZmNWIxNTg5Y2I0NDIwNjliMmIzYzgxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgTWVtb3J5T2Jq
ZWN0U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnlPYmplY3RTdG9yZT4gewogICAgIElE
QkdldFJlc3VsdCBpbmRleFZhbHVlRm9yS2V5UmFuZ2UodWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29u
c3Q7CiAgICAgdWludDY0X3QgY291bnRGb3JLZXlSYW5nZSh1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGNvbnN0OwogCi0gICAgdm9pZCBnZXRBbGxSZWNv
cmRzKGNvbnN0IElEQktleVJhbmdlRGF0YSYsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCwgSW5k
ZXhlZERCOjpHZXRBbGxUeXBlLCBJREJHZXRBbGxSZXN1bHQmKSBjb25zdDsKKyAgICB2b2lkIGdl
dEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgSURCR2V0QWxsUmVzdWx0JikgY29uc3Q7
CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBt
X2luZm87IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5jcHAKaW5kZXggOGFi
Nzc0M2I0MDQ2ZjJhNzQ1ZjdkYzU5MDhhMmFjYmY4NTQwNTQwMS4uZDk1ZWZlNmE5OTJjM2E0MGEy
MTQ1NTJkNzU3YTNjOWRkM2U0NGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpNZW1vcnlP
YmplY3RTdG9yZUN1cnNvcihNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsCiAKIHZvaWQg
TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9iamVjdFN0b3JlQ2xlYXJlZCgpCiB7Ci0gICAgbV9p
dGVyYXRvciA9IE51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5RGVsZXRlZChjb25zdCBJREJLZXlEYXRh
JiBrZXkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Omtl
eURlbGV0ZWQoY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIGlmIChtX2N1cnJlbnRQb3NpdGlv
bktleSAhPSBrZXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0
OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTWVtb3J5T2JqZWN0
U3RvcmVDdXJzb3I6OmtleUFkZGVkKHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVyYXRvciBpdGVy
YXRvcikKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5
QWRkZWQoc3RkOjpzZXQ8SURCS2V5RGF0YT46Oml0ZXJhdG9yIGl0ZXJhdG9yKQogCiB2b2lkIE1l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGaXJzdEluUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8
SURCS2V5RGF0YT4mIHNldCkKIHsKLSAgICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICBtX2l0
ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1faW5mby5pc0RpcmVjdGlvbkZvcndh
cmQoKSkgewogICAgICAgICBzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2Uoc2V0
KTsKQEAgLTk1LDE5ICs5NSwxOSBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRG
aXJzdEluUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAogdm9pZCBNZW1v
cnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rm9yd2FyZEl0ZXJhdG9yRnJvbVJlbWFpbmluZ1Jhbmdl
KHN0ZDo6c2V0PElEQktleURhdGE+JiBzZXQpCiB7CiAgICAgaWYgKCFzZXQuc2l6ZSgpKSB7Ci0g
ICAgICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFu
Z2UuaXNFeGFjdGx5T25lS2V5KCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1f
cmVtYWluaW5nUmFuZ2UubG93ZXJLZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0
LmVuZCgpKQotICAgICAgICAgICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBt
X2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2l0ZXJhdG9yID0gTnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byBsb3dlc3QgPSBzZXQubG93ZXJfYm91bmQobV9yZW1haW5pbmdSYW5nZS5sb3dl
cktleSk7CiAgICAgaWYgKGxvd2VzdCA9PSBzZXQuZW5kKCkpCkBAIC0xMzMsMTQgKzEzMywxNCBA
QCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVt
YWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCSwogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6
c2V0UmV2ZXJzZUl0ZXJhdG9yRnJvbVJlbWFpbmluZ1JhbmdlKHN0ZDo6c2V0PElEQktleURhdGE+
JiBzZXQpCiB7CiAgICAgaWYgKCFzZXQuc2l6ZSgpKSB7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBO
dWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFuZ2UuaXNFeGFjdGx5T25lS2V5KCkp
IHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1fcmVtYWluaW5nUmFuZ2UubG93ZXJL
ZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmVuZCgpKQotICAgICAgICAgICAg
bV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDgsMTIgKzE0OCwxMiBAQCB2b2lk
IE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRSZXZlcnNlSXRlcmF0b3JGcm9tUmVtYWluaW5n
UmFuZ2Uoc3RkOjpzZXQ8SURCSwogICAgIGlmICghbV9yZW1haW5pbmdSYW5nZS51cHBlcktleS5p
c1ZhbGlkKCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IC0tc2V0LmVuZCgpOwogICAgICAgICBp
ZiAoIW1fcmVtYWluaW5nUmFuZ2UuY29udGFpbnNLZXkoKiptX2l0ZXJhdG9yKSkKLSAgICAgICAg
ICAgIG1faXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAgICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pdGVyYXRvciA9IE51
bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgaXMg
b25lIHJlY29yZCBwYXN0IHRoZSBhY3R1YWwga2V5IHdlJ3JlIGxvb2tpbmcgZm9yLgogICAgIGF1
dG8gaGlnaGVzdCA9IHNldC51cHBlcl9ib3VuZChtX3JlbWFpbmluZ1JhbmdlLnVwcGVyS2V5KTsK
QEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1l
bnRGb3J3YXJkSXRlcmF0b3Ioc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAogICAgICAgICArKypt
X2l0ZXJhdG9yOwogCiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQuZW5kKCkgfHwgIW1f
aW5mby5yYW5nZSgpLmNvbnRhaW5zS2V5KCoqbV9pdGVyYXRvcikpIHsKLSAgICAgICAgICAgIG1f
aXRlcmF0b3IgPSBOdWxsb3B0OworICAgICAgICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTMwMCw3ICszMDAs
NyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRSZXZlcnNlSXRlcmF0
b3Ioc3RkOjpzZXQ8SURCS2V5RGF0YT4mIHNldAogCiAgICAgd2hpbGUgKGNvdW50KSB7CiAgICAg
ICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQuYmVnaW4oKSkgewotICAgICAgICAgICAgbV9pdGVy
YXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lk
IE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRSZXZlcnNlSXRlcmF0b3Ioc3RkOjpz
ZXQ8SURCS2V5RGF0YT4mIHNldAogICAgICAgICAtLSptX2l0ZXJhdG9yOwogCiAgICAgICAgIGlm
ICghbV9pbmZvLnJhbmdlKCkuY29udGFpbnNLZXkoKiptX2l0ZXJhdG9yKSkgewotICAgICAgICAg
ICAgbV9pdGVyYXRvciA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmVDdXJzb3IuaAppbmRleCBlMzQ1NTU3N2NhNTczODAwNmUwZTBkOTkxNDcz
NGU0NWFiMTFkYzcxLi42MzNmMWU2NmNmZjdlYzg1NWU5MDllOWYzMjJiMGYyZmJmMDRhZTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmVDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaApAQCAtNjMsNyArNjMsNyBAQCBjbGFz
cyBNZW1vcnlPYmplY3RTdG9yZUN1cnNvciA6IHB1YmxpYyBNZW1vcnlDdXJzb3IgewogCiAgICAg
SURCS2V5UmFuZ2VEYXRhIG1fcmVtYWluaW5nUmFuZ2U7CiAKLSAgICBXVEY6Ok9wdGlvbmFsPHN0
ZDo6c2V0PElEQktleURhdGE+OjppdGVyYXRvcj4gbV9pdGVyYXRvcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6c2V0PElEQktleURhdGE+OjppdGVyYXRvcj4gbV9pdGVyYXRvcjsKIAogICAgIElE
QktleURhdGEgbV9jdXJyZW50UG9zaXRpb25LZXk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCBhMmNjY2FkYzc5ZDllNTA1MmM5MTU1MjYwNDhmY2UwZDA2ZDQ0N2Vh
Li40NjFiOWM5ZjhjMWU0ZWU5YzY2ODY5MjUzMGNiOGQ4ZDk1NjAwMDBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjAyLDcgKzYwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5n
RGF0YWJhc2VJCiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4ga2V5UGF0aEJ1ZmZlcjsKICAgICAg
ICAgICAgIHNxbC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMiwga2V5UGF0aEJ1ZmZlcik7CiAKLSAg
ICAgICAgICAgIE9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0b3JlS2V5UGF0aDsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gb2JqZWN0U3RvcmVLZXlQYXRoOwogICAg
ICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oa2V5UGF0aEJ1ZmZlci5kYXRhKCkpLCBrZXlQYXRoQnVmZmVyLnNpemUoKSwg
b2JqZWN0U3RvcmVLZXlQYXRoKSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGV4dHJhY3Qga2V5IHBhdGggZnJvbSBkYXRhYmFzZSIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJ
CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4ga2V5UGF0aEJ1ZmZlcjsKICAgICAgICAgICAgIHNx
bC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMywga2V5UGF0aEJ1ZmZlcik7CiAKLSAgICAgICAgICAg
IE9wdGlvbmFsPElEQktleVBhdGg+IGluZGV4S2V5UGF0aDsKKyAgICAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQYXRoOwogICAgICAgICAgICAgaWYgKCFkZXNlcmlh
bGl6ZUlEQktleVBhdGgocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oa2V5UGF0aEJ1
ZmZlci5kYXRhKCkpLCBrZXlQYXRoQnVmZmVyLnNpemUoKSwgaW5kZXhLZXlQYXRoKSkgewogICAg
ICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4dHJhY3Qga2V5IHBhdGggZnJvbSBk
YXRhYmFzZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJ
bmZvLmNwcAppbmRleCBmOTg1NzE3MjlmZDY2YzZhNDM3NGFkMmE5OTZkZjZjNGY2NzEzN2M3Li5l
NWRmMTVjNDRhYmJlMjQ2NGY0ZmVlZWZkOThkYWI3OGQ5YjNhZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJ
bmZvLmNwcApAQCAtNjYsNyArNjYsNyBAQCBib29sIElEQkRhdGFiYXNlSW5mbzo6aGFzT2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
SURCT2JqZWN0U3RvcmVJbmZvIElEQkRhdGFiYXNlSW5mbzo6Y3JlYXRlTmV3T2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlSW5mbyBJREJEYXRhYmFzZUluZm86OmNyZWF0
ZU5ld09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQ
YXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKIHsKICAgICBJREJPYmplY3RTdG9y
ZUluZm8gaW5mbygrK21fbWF4T2JqZWN0U3RvcmVJRCwgbmFtZSwgV1RGTW92ZShrZXlQYXRoKSwg
YXV0b0luY3JlbWVudCk7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQoaW5mby5pZGVudGlmaWVy
KCksIGluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmluZGV4IDUzZGYwNWE0Zjg0MzNjZjRiMDg2MGEx
NGUzMzVjYTVlZTljOWUwMjMuLmRiOGZmMmM3Nzk4YjQ1MGNjYmI2NmFjNmIwZmMzOGVlNWM5YTBl
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJEYXRhYmFzZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSURCRGF0YWJh
c2VJbmZvIHsKICAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9u
OyB9CiAKICAgICBib29sIGhhc09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7
Ci0gICAgSURCT2JqZWN0U3RvcmVJbmZvIGNyZWF0ZU5ld09iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgT3B0aW9uYWw8SURCS2V5UGF0aD4mJiwgYm9vbCBhdXRvSW5jcmVtZW50KTsKKyAg
ICBJREJPYmplY3RTdG9yZUluZm8gY3JlYXRlTmV3T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiYsIGJvb2wgYXV0b0luY3JlbWVudCk7CiAg
ICAgdm9pZCBhZGRFeGlzdGluZ09iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYp
OwogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUodWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBJREJPYmplY3RTdG9yZUluZm8qIGlu
Zm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJH
ZXRBbGxSZWNvcmRzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKaW5kZXggZjk3ZjMzMmZlNWE2YjUwNzBlMThkODA2
MjgxNzc0NGUwMmE0OTQ0Ni4uMTE2MzQ4MzVjYTJmMmUwZTg5NDVjYmM5YWE5MzJlNTQ2Yjc3NDc2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkdldEFsbFJlY29yZHNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkdldEFsbFJlY29yZHNEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBj
bGFzcyBHZXRBbGxUeXBlOwogc3RydWN0IElEQkdldEFsbFJlY29yZHNEYXRhIHsKICAgICBJREJL
ZXlSYW5nZURhdGEga2V5UmFuZ2VEYXRhOwogICAgIEluZGV4ZWREQjo6R2V0QWxsVHlwZSBnZXRB
bGxUeXBlOwotICAgIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBjb3VudDsKICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXI7CiAg
ICAgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3Bw
CmluZGV4IDY4MjBhOWZmYWJiN2NhMWRlMGQ0ZWYxZDU0MWYxZTY5NjUyNjBkYmQuLmFjZGVhMWUz
M2E1YTFlNzI4YjlmODZkYzZjZGI0MjdiOTAxNjhhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUlu
Zm8uY3BwCkBAIC0zNSw3ICszNSw3IEBAIElEQk9iamVjdFN0b3JlSW5mbzo6SURCT2JqZWN0U3Rv
cmVJbmZvKCkKIHsKIH0KIAotSURCT2JqZWN0U3RvcmVJbmZvOjpJREJPYmplY3RTdG9yZUluZm8o
dWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQ
YXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlSW5mbzo6
SURCT2JqZWN0U3RvcmVJbmZvKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9uYW1lKG5hbWUpCiAg
ICAgLCBtX2tleVBhdGgoV1RGTW92ZShrZXlQYXRoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJPYmplY3RTdG9yZUluZm8uaApp
bmRleCA1NmUyNGMwMWMyMmQ5MTIyMDg4NDRkNmNkMmYzYTViNDg0ZDVkYjM1Li5kNzIwNWYyYTBj
NDNhZjJiMzUyZmZmODVmMGVjMjU4Yzk4ODA5ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCT2JqZWN0U3RvcmVJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQk9iamVjdFN0b3JlSW5mby5o
CkBAIC0zNywxMSArMzcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURCT2JqZWN0
U3RvcmVJbmZvIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJREJPYmplY3RTdG9yZUlu
Zm8oKTsKLSAgICBJREJPYmplY3RTdG9yZUluZm8odWludDY0X3QgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBPcHRpb25hbDxJREJLZXlQYXRoPiYmLCBib29sIGF1dG9JbmNyZW1lbnQp
OworICAgIElEQk9iamVjdFN0b3JlSW5mbyh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mJiwgYm9vbCBhdXRvSW5jcmVtZW50
KTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
LSAgICBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fa2V5UGF0aDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICBib29sIGF1dG9JbmNyZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2F1dG9JbmNyZW1lbnQ7IH0KICAgICB1aW50NjRfdCBtYXhJbmRl
eElEKCkgY29uc3QgeyByZXR1cm4gbV9tYXhJbmRleElEOyB9CiAKQEAgLTcyLDcgKzcyLDcgQEAg
Y2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvIHsKIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyIHsgMCB9OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgT3B0aW9uYWw8SURCS2V5UGF0
aD4gbV9rZXlQYXRoOworICAgIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4gbV9rZXlQYXRoOwog
ICAgIGJvb2wgbV9hdXRvSW5jcmVtZW50IHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX21heElu
ZGV4SUQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFj
b250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCmluZGV4IDA0MjBkNzIzOThkMTE0MmM1
YmI1YWZiYTk1NmYxOWVkODhmZjdlZTYuLmU4NDc0MjVjZWY2MzQ3Y2ZiNzgzY2E1NGFkNzA0Y2Nm
MjM4NGJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFjaz4+IE1lZGlhQ29udHJvbHNIb3N0Ojpzb3J0ZWRUcmFja0xpc3RG
b3JNZW51KEF1ZGlvVHJhY2tMCiAgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZl
cmVuY2VzKCkuc29ydGVkVHJhY2tMaXN0Rm9yTWVudSgmdHJhY2tMaXN0KTsKIH0KIAotU3RyaW5n
IE1lZGlhQ29udHJvbHNIb3N0OjpkaXNwbGF5TmFtZUZvclRyYWNrKGNvbnN0IE9wdGlvbmFsPFRl
eHRPckF1ZGlvVHJhY2s+JiB0cmFjaykKK1N0cmluZyBNZWRpYUNvbnRyb2xzSG9zdDo6ZGlzcGxh
eU5hbWVGb3JUcmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+JiB0cmFj
aykKIHsKICAgICBpZiAoIXRyYWNrKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmgKaW5kZXggNTA1MzgyMjE5MDhlNGJhYWYyNTVlM2JkYWIzZjNkYmY0MTVkNjJj
Yi4uNDRkZGRkNGU0NDI0ZmQ1ZWI2NGQzYzI4ODc4NmNjMjU5NGJkOWYxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTWVkaWFDb250cm9sc0hvc3QgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZWRpYUNvbnRyb2xzSG9zdD4gewogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9U
cmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QmKTsKIAogICAgIHVz
aW5nIFRleHRPckF1ZGlvVHJhY2sgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPFRleHRUcmFjaz4sIFJl
ZlB0cjxBdWRpb1RyYWNrPj47Ci0gICAgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soY29uc3Qg
T3B0aW9uYWw8VGV4dE9yQXVkaW9UcmFjaz4mKTsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWVGb3JU
cmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHRPckF1ZGlvVHJhY2s+Jik7CiAKICAgICBUZXh0
VHJhY2sqIGNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAgIFRleHRUcmFjayogY2FwdGlvbk1lbnVB
dXRvbWF0aWNJdGVtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDhmMTQ1ODczY2E1ZTVhZDdlNjlhNmMwODkxYjI2YjVm
ODg4Y2QyY2YuLjU5NTJiZDkzZTU3OTI5YjA0NDgwZWZmOGQ2MGFhZTk5OWY3MDNmMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3Bw
CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIHN0YXRlKQogICAgIG9uUmVhZHlTdGF0ZUNoYW5nZShvbGRTdGF0ZSwg
c3RhdGUpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0o
T3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRp
YVNvdXJjZTo6ZW5kT2ZTdHJlYW0oc3RkOjpvcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJv
cikKIHsKICAgICAvLyAyLjIgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1m
aWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjd2lkbC1NZWRpYVNvdXJjZS1l
bmRPZlN0cmVhbS12b2lkLUVuZE9mU3RyZWFtRXJyb3ItZXJyb3IKICAgICAvLyAxLiBJZiB0aGUg
cmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUgdGhlbiB0aHJv
dyBhbgpAQCAtNTYxLDcgKzU2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpl
bmRPZlN0cmVhbShPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICByZXR1cm4g
eyB9OwogfQogCi12b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKK3ZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVk
V2l0aEVycm9yKHN0ZDo6b3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiB7CiAgICAg
TE9HKE1lZGlhU291cmNlLCAiTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKCVwKSIs
IHRoaXMpOwogICAgIGlmIChpc0Nsb3NlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDVhNTMyMGIzNWY1YWEyNjA4NjE4Nzcy
NTA1MzQ1ZWI4MGU3ZDRhYTcuLjU0OTMxOWYxMjlkZDA4ZTYxM2E3ZjllOWU2M2IzNDY4YjFmNzJk
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgTWVkaWFTb3VyY2UgZmluYWwgOiBwdWJsaWMg
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWMKICAgICB2b2lk
IHNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlciYsIGJvb2wpOwog
CiAgICAgZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2RlIH07Ci0g
ICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPik7
CisgICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihzdGQ6Om9wdGlvbmFsPEVuZE9mU3RyZWFt
RXJyb3I+KTsKIAogICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwpAQCAtODMsNyArODMs
NyBAQCBjbGFzcyBNZWRpYVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplYwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldER1
cmF0aW9uSW50ZXJuYWwoY29uc3QgTWVkaWFUaW1lJik7CiAgICAgTWVkaWFUaW1lIGN1cnJlbnRU
aW1lKCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWFkeVN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5kT2ZTdHJl
YW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4pOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGVu
ZE9mU3RyZWFtKHN0ZDo6b3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4pOwogCiAgICAgSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaAppbmRleCA5OGNlOTAyYTgzYmE2MmIxZjU4N2VlM2Q2ODQxNGI0NTY0YTYz
M2U3Li43MWUwZDk3YjkyMTQzMzFhZmMyNTcyZjMwMmMyYWYyMjhkMGY3ZjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aApAQCAtMTI3LDcgKzEyNyw3IEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2sgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVibGljIEFjdGl2CiAgICAgUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CiAKICAgICBSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAgICBPcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+PiBt
X3Byb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxET01Qcm9taXNlPHZvaWQ+PiBtX3Byb21pc2U7
CiAgICAgV2Vha1B0ckZhY3Rvcnk8TWVkaWFTdHJlYW1UcmFjaz4gbV93ZWFrUHRyRmFjdG9yeTsK
IAogICAgIGJvb2wgbV9lbmRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5k
ZXggYjY2YmE2ZTVhNTFjMWFlMWUzZDNlZGIwN2QwYjEyODg3ODVjMDNlNy4uMTQ0Njg3OTg2M2Zk
NGIwNzhhYzY0YzA5MGE2YzBiM2M3ZWI1MGIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApA
QCAtNjAsNyArNjAsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJT
dWNjZWVkZWQoU3RyaW5nJiYgc2RwKQogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNl
KTsKICAgICBtX29mZmVyQW5zd2VyUHJvbWlzZS0+cmVzb2x2ZShSVENTZXNzaW9uRGVzY3JpcHRp
b246OmNyZWF0ZShSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6Ok9mZmVyLCBXVEZNb3Zl
KHNkcCkpKTsKLSAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9vZmZl
ckFuc3dlclByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjpjcmVhdGVPZmZlckZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCkBAIC03Miw3
ICs3Miw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVPZmZlckZhaWxlZChF
eGNlcHRpb24mJiBleGNlcHRpb24pCiAKICAgICBBU1NFUlQobV9vZmZlckFuc3dlclByb21pc2Up
OwogICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsK
LSAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9vZmZlckFuc3dlclBy
b21pc2UgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpj
cmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmIG9wdGlvbnMsIFBlZXJDb25uZWN0aW9uOjpT
ZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYgcHJvbWlzZSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcmJiBz
ZHApCiAKICAgICBBU1NFUlQobV9vZmZlckFuc3dlclByb21pc2UpOwogICAgIG1fb2ZmZXJBbnN3
ZXJQcm9taXNlLT5yZXNvbHZlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6QW5zd2VyLCBXVEZNb3ZlKHNkcCkpKTsKLSAgICBtX29m
ZmVyQW5zd2VyUHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9vZmZlckFuc3dlclByb21pc2UgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3
ZXJGYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uJiYgZXhj
ZXB0aW9uKQogCiAgICAgQVNTRVJUKG1fb2ZmZXJBbnN3ZXJQcm9taXNlKTsKICAgICBtX29mZmVy
QW5zd2VyUHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgbV9vZmZlckFu
c3dlclByb21pc2UgPSBOdWxsb3B0OworICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlID0gc3RkOjpu
dWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNMb2NhbERlc2NyaXB0aW9uVHlwZVZh
bGlkRm9yU3RhdGUoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUsIFBlZXJDb25u
ZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSBzdGF0ZSkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2
b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvblN1Y2NlZWRlZCgp
CiAgICAgQVNTRVJUKG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlKTsKIAogICAgIG1fc2V0RGVzY3Jp
cHRpb25Qcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UgPSBO
dWxsb3B0OworICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQog
CiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6c2V0TG9jYWxEZXNjcmlwdGlvbkZhaWxlZChF
eGNlcHRpb24mJiBleGNlcHRpb24pCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OnNldExvY2FsRGVzY3JpcHRpb25GYWlsZWQoRXhjZXB0aW9uJiYgZXhjZXB0
aW9uKQogICAgIEFTU0VSVChtX3NldERlc2NyaXB0aW9uUHJvbWlzZSk7CiAKICAgICBtX3NldERl
c2NyaXB0aW9uUHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgbV9zZXRE
ZXNjcmlwdGlvblByb21pc2UgPSBOdWxsb3B0OworICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNl
ID0gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW1vdGVEZXNjcmlw
dGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZSB0eXBl
LCBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGUgc3RhdGUpCkBAIC0yMDgsNyAr
MjA4LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9u
U3VjY2VlZGVkKCkKICAgICBBU1NFUlQobV9zZXREZXNjcmlwdGlvblByb21pc2UpOwogCiAgICAg
bV9zZXREZXNjcmlwdGlvblByb21pc2UtPnJlc29sdmUoKTsKLSAgICBtX3NldERlc2NyaXB0aW9u
UHJvbWlzZSA9IE51bGxvcHQ7CisgICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UgPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpzZXRSZW1vdGVEZXNjcmlw
dGlvbkZhaWxlZChFeGNlcHRpb24mJiBleGNlcHRpb24pCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9p
ZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnNldFJlbW90ZURlc2NyaXB0aW9uRmFpbGVkKEV4Y2Vw
dGlvbiYmIGV4Y2VwdGlvbikKICAgICBBU1NFUlQobV9zZXREZXNjcmlwdGlvblByb21pc2UpOwog
CiAgICAgbV9zZXREZXNjcmlwdGlvblByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikp
OwotICAgIG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlID0gTnVsbG9wdDsKKyAgICBtX3NldERlc2Ny
aXB0aW9uUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmFkZEljZUNhbmRpZGF0ZShSVENJY2VDYW5kaWRhdGUmIGljZUNhbmRpZGF0ZSwgUGVl
ckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2
b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlU3VjY2VlZGVkKCkKICAg
ICBBU1NFUlQobV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlKTsKIAogICAgIG1fYWRkSWNlQ2FuZGlk
YXRlUHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgIG1fYWRkSWNlQ2FuZGlkYXRlUHJvbWlzZSA9IE51
bGxvcHQ7CisgICAgbV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQog
CiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2Vw
dGlvbiYmIGV4Y2VwdGlvbikKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6YWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKICAg
ICBBU1NFUlQobV9hZGRJY2VDYW5kaWRhdGVQcm9taXNlKTsKIAogICAgIG1fYWRkSWNlQ2FuZGlk
YXRlUHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgbV9hZGRJY2VDYW5k
aWRhdGVQcm9taXNlID0gTnVsbG9wdDsKKyAgICBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2UgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpmaXJlSUNFQ2Fu
ZGlkYXRlRXZlbnQoUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4mJiBjYW5kaWRhdGUpCkBAIC0yODks
OSArMjg5LDkgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnVwZGF0ZVNpZ25hbGluZ1N0
YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmcKIAogdm9pZCBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OnN0b3AoKQogewotICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlID0gTnVsbG9wdDsK
LSAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZSA9IE51bGxvcHQ7Ci0gICAgbV9hZGRJY2VDYW5k
aWRhdGVQcm9taXNlID0gTnVsbG9wdDsKKyAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBtX3NldERlc2NyaXB0aW9uUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKKyAg
ICBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb1N0b3Ao
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IGM4NGI4MTY2M2NkZTVmYWRkN2Y5YWFkZWUx
YTg5N2E1NzI0N2VkOTcuLmNhODYxOTFlNWJlOTA0ZGE3NjgyMTZiNDdiMTZmOGE2MWViNGY2NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMTM5LDkgKzEzOSw5IEBAIGNsYXNzIFBlZXJDb25u
ZWN0aW9uQmFja2VuZCB7CiAgICAgUlRDUGVlckNvbm5lY3Rpb24mIG1fcGVlckNvbm5lY3Rpb247
CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8UGVlckNvbm5lY3Rpb246OlNlc3Npb25EZXNjcmlw
dGlvblByb21pc2U+IG1fb2ZmZXJBbnN3ZXJQcm9taXNlOwotICAgIE9wdGlvbmFsPFBlZXJDb25u
ZWN0aW9uOjpWb2lkUHJvbWlzZT4gbV9zZXREZXNjcmlwdGlvblByb21pc2U7Ci0gICAgT3B0aW9u
YWw8UGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlPiBtX2FkZEljZUNhbmRpZGF0ZVByb21pc2U7
CisgICAgc3RkOjpvcHRpb25hbDxQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJv
bWlzZT4gbV9vZmZlckFuc3dlclByb21pc2U7CisgICAgc3RkOjpvcHRpb25hbDxQZWVyQ29ubmVj
dGlvbjo6Vm9pZFByb21pc2U+IG1fc2V0RGVzY3JpcHRpb25Qcm9taXNlOworICAgIHN0ZDo6b3B0
aW9uYWw8UGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlPiBtX2FkZEljZUNhbmRpZGF0ZVByb21p
c2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAppbmRleCA4MzMwYzg3OGMx
N2MwOWU3ODI2OWJjNTVhZDc4ZmUxN2IxNGI4MGRiLi41ZGQyZjFlNDFjZjUxMjI5NmQ3NGQyMGMx
YmQ3YzQ4YmIyYjIyZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgU3RyaW5nIFJUQ0RU
TUZTZW5kZXI6OnRvbmVCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBtX2hhbmRsZXItPmN1cnJl
bnRUb25lQnVmZmVyKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omlu
c2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgT3B0aW9uYWw8aW50PiBkdXJhdGlvbiwgT3B0
aW9uYWw8aW50PiBpbnRlclRvbmVHYXApCitFeGNlcHRpb25Pcjx2b2lkPiBSVENEVE1GU2VuZGVy
OjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIHN0ZDo6b3B0aW9uYWw8aW50PiBkdXJh
dGlvbiwgc3RkOjpvcHRpb25hbDxpbnQ+IGludGVyVG9uZUdhcCkKIHsKICAgICBpZiAoIWNhbklu
c2VydERUTUYoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJS
IH07CkBAIC05Niw4ICs5Niw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ0RUTUZTZW5kZXI6Omlu
c2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgT3B0aW9uYWw8aW50PiBkCiAgICAgaWYgKGlu
dGVyVG9uZUdhcCAmJiBpbnRlclRvbmVHYXAudmFsdWUoKSA8IG1pbkludGVyVG9uZUdhcE1zKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCi0gICAgbV9kdXJhdGlv
biA9IGR1cmF0aW9uLnZhbHVlT3IoZGVmYXVsdFRvbmVEdXJhdGlvbk1zKTsKLSAgICBtX2ludGVy
VG9uZUdhcCA9IGludGVyVG9uZUdhcC52YWx1ZU9yKGRlZmF1bHRJbnRlclRvbmVHYXBNcyk7Cisg
ICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uLnZhbHVlX29yKGRlZmF1bHRUb25lRHVyYXRpb25Ncyk7
CisgICAgbV9pbnRlclRvbmVHYXAgPSBpbnRlclRvbmVHYXAudmFsdWVfb3IoZGVmYXVsdEludGVy
VG9uZUdhcE1zKTsKIAogICAgIGlmICghbV9oYW5kbGVyLT5pbnNlcnREVE1GKHRvbmVzLCBtX2R1
cmF0aW9uLCBtX2ludGVyVG9uZUdhcCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5U
QVhfRVJSIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5oCmluZGV4IGZjYTQyNTNkZDMwNWFiNzFmNmJiYTIzYTEzYmM4MzA0NzEyMDM5
NmIuLmM3MjI4NzE5MTBmOTZmODZiMjA3YWIzYTgxZDUxY2MzMDhhYzc4OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCkBAIC01
MSw3ICs1MSw3IEBAIGNsYXNzIFJUQ0RUTUZTZW5kZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSVENEVE1GU2VuZGVyPiwgcHVibGljIEV2ZW50VGFyZ2V0CiAgICAgbG9uZyBkdXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICBsb25nIGludGVyVG9uZUdhcCgpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJUb25lR2FwOyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBp
bnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIE9wdGlvbmFsPGludD4gZHVyYXRpb24sIE9w
dGlvbmFsPGludD4gaW50ZXJUb25lR2FwKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbnNlcnRE
VE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIHN0ZDo6b3B0aW9uYWw8aW50PiBkdXJhdGlvbiwgc3Rk
OjpvcHRpb25hbDxpbnQ+IGludGVyVG9uZUdhcCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkOjpy
ZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKaW5kZXggMTE4NjU0
YzRkYTVlZjAxNmM4MzE2YjNjZDUyNjk3OTNhMDNiYzI0Zi4uODVlZTdjMTI0YWUxYTJjZTExMWRm
ZTU1MzQ0MWYzNzQ3MjBkNmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApAQCAtNDksNyArNDksNyBAQCBFeGNl
cHRpb25PcjxSZWY8UlRDSWNlQ2FuZGlkYXRlPj4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29u
c3QgRGljdGlvbmFyeSYgZGljdAogICAgIFN0cmluZyBzZHBNaWQ7CiAgICAgZGljdGlvbmFyeS5n
ZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soInNkcE1pZCIsIHNkcE1pZCk7CiAKLSAgICBPcHRp
b25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4OwogICAgIFN0cmluZyBzZHBNTGluZUluZGV4U3Ry
aW5nOwogCiAgICAgaWYgKGRpY3Rpb25hcnkuZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKCJz
ZHBNTGluZUluZGV4Iiwgc2RwTUxpbmVJbmRleFN0cmluZykpIHsKQEAgLTY2LDEyICs2NiwxMiBA
QCBFeGNlcHRpb25PcjxSZWY8UlRDSWNlQ2FuZGlkYXRlPj4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVh
dGUoY29uc3QgRGljdGlvbmFyeSYgZGljdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0lj
ZUNhbmRpZGF0ZShjYW5kaWRhdGUsIHNkcE1pZCwgc2RwTUxpbmVJbmRleCkpOwogfQogCi1SZWY8
UlRDSWNlQ2FuZGlkYXRlPiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNh
bmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBz
ZHBNTGluZUluZGV4KQorUmVmPFJUQ0ljZUNhbmRpZGF0ZT4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4KQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ0ljZUNhbmRpZGF0ZShjYW5kaWRhdGUsIHNkcE1pZCwgc2RwTUxpbmVJbmRl
eCkpOwogfQogCi1SVENJY2VDYW5kaWRhdGU6OlJUQ0ljZUNhbmRpZGF0ZShjb25zdCBTdHJpbmcm
IGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0
PiBzZHBNTGluZUluZGV4KQorUlRDSWNlQ2FuZGlkYXRlOjpSVENJY2VDYW5kaWRhdGUoY29uc3Qg
U3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkIHNob3J0PiBzZHBNTGluZUluZGV4KQogICAgIDogbV9jYW5kaWRhdGUoY2FuZGlkYXRl
KQogICAgICwgbV9zZHBNaWQoc2RwTWlkKQogICAgICwgbV9zZHBNTGluZUluZGV4KHNkcE1MaW5l
SW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0ljZUNhbmRpZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJ
Y2VDYW5kaWRhdGUuaAppbmRleCBkNzg5ZjNkZDJlYTc0ZTdmZmY1N2I2ZDI1MWE5OTVlOWIxMWNi
YTQ3Li45YTg3MGZmMWQ3ZTE1MmYyNGQyZDFhMzBkMjc2OWM0MDVkNzBhMjkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmgK
QEAgLTQ0LDE4ICs0NCwxOCBAQCBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogY2xh
c3MgUlRDSWNlQ2FuZGlkYXRlIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDSWNlQ2FuZGlkYXRlPiwg
cHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxSVENJY2VDYW5kaWRhdGU+PiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYpOwotICAgIHN0
YXRpYyBSZWY8UlRDSWNlQ2FuZGlkYXRlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUs
IGNvbnN0IFN0cmluZyYgc2RwTWlkLCBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJ
bmRleCk7CisgICAgc3RhdGljIFJlZjxSVENJY2VDYW5kaWRhdGU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIGNhbmRpZGF0ZSwgY29uc3QgU3RyaW5nJiBzZHBNaWQsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUo
KSBjb25zdCB7IHJldHVybiBtX2NhbmRpZGF0ZTsgfQogICAgIGNvbnN0IFN0cmluZyYgc2RwTWlk
KCkgY29uc3QgeyByZXR1cm4gbV9zZHBNaWQ7IH0KLSAgICBPcHRpb25hbDx1bnNpZ25lZCBzaG9y
dD4gc2RwTUxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fc2RwTUxpbmVJbmRleDsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IHNkcE1MaW5lSW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX3NkcE1MaW5lSW5kZXg7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSVENJY2VD
YW5kaWRhdGUoY29uc3QgU3RyaW5nJiBjYW5kaWRhdGUsIGNvbnN0IFN0cmluZyYgc2RwTWlkLCBP
cHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCk7CisgICAgZXhwbGljaXQgUlRD
SWNlQ2FuZGlkYXRlKGNvbnN0IFN0cmluZyYgY2FuZGlkYXRlLCBjb25zdCBTdHJpbmcmIHNkcE1p
ZCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gc2RwTUxpbmVJbmRleCk7CiAKICAgICBT
dHJpbmcgbV9jYW5kaWRhdGU7CiAgICAgU3RyaW5nIG1fc2RwTWlkOwotICAgIE9wdGlvbmFsPHVu
c2lnbmVkIHNob3J0PiBtX3NkcE1MaW5lSW5kZXg7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZCBzaG9ydD4gbV9zZHBNTGluZUluZGV4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3Iu
Y3BwCmluZGV4IDlhMTFjYWIyODNiYjVjMmUwNjZmY2I3ZjU0N2QxMjJlNWRkNmRkNGUuLjE0NWQ0
MTE3Y2UzNmQxYjc4NzkwNjMyNzAwMTdmN2E1YmNlZTBkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0RQUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAKQEAgLTMyNywxNSAr
MzI3LDE1IEBAIHN0YXRpYyBSZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9u
PiBjb25maWd1cmF0aW9uRnJvbUpTT04oY29uc3QgU3RyCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRp
b247CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxJY2VDYW5kaWRhdGU+IGljZUNhbmRpZGF0ZUZyb21K
U09OKGNvbnN0IFN0cmluZyYganNvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEljZUNhbmRpZGF0
ZT4gaWNlQ2FuZGlkYXRlRnJvbUpTT04oY29uc3QgU3RyaW5nJiBqc29uKQogewogICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWU7CiAgICAgaWYgKCFJbnNwZWN0b3JWYWx1ZTo6cGFyc2VK
U09OKGpzb24sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjYW5kaWRhdGVP
YmplY3Q7CiAgICAgaWYgKCF2YWx1ZS0+YXNPYmplY3QoY2FuZGlkYXRlT2JqZWN0KSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gY3JlYXRlQ2FuZGlkYXRlKCpjYW5kaWRhdGVPYmplY3QpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wcm94aW1pdHkvRGV2aWNlUHJveGltaXR5RXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHJveGltaXR5L0RldmljZVByb3hpbWl0eUV2ZW50LmgK
aW5kZXggNzcyMmZjZmQxOTllZTY3NTIzZDY3OGZhYzUzNWQwNTdiNWU4ODNkYS4uMzczYWM0NTFl
YjgzZmRhMWQ2YzA0NmUwZDI5M2EwYWFjNWVhNjJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wcm94aW1pdHkvRGV2aWNlUHJveGltaXR5RXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3Byb3hpbWl0eS9EZXZpY2VQcm94aW1pdHlFdmVudC5oCkBAIC00MCw5
ICs0MCw5IEBAIGNsYXNzIERldmljZVByb3hpbWl0eUV2ZW50IDogcHVibGljIEV2ZW50IHsKICAg
ICB9CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7Ci0gICAgICAgIE9wdGlvbmFsPGRv
dWJsZT4gdmFsdWU7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluOwotICAgICAgICBPcHRp
b25hbDxkb3VibGU+IG1heDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHZhbHVlOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWluOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gbWF4OwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPERldmljZVByb3hpbWl0eUV2
ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0JiBpbml0aWFs
aXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oCmluZGV4
IDkzMWM1MDA0ODRkYTExYzk3NzkyNzE5OWE4MmE0ZTdhZWUzODcxMDEuLjY1OTE5ZjI5NGY2NDU4
ZTk1Y2RmYzAyNjhiNTAyNmMxZTY1ZDcxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oCkBAIC02Myw4ICs2Myw4IEBA
IGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVT
dHJlYW1Tb3VyY2U+IHsKICAgICB2aXJ0dWFsIHZvaWQgZG9DYW5jZWwoKSA9IDA7CiAKIHByaXZh
dGU6Ci0gICAgT3B0aW9uYWw8RE9NUHJvbWlzZTx2b2lkPj4gbV9wcm9taXNlOwotICAgIE9wdGlv
bmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBz
dGQ6Om9wdGlvbmFsPERPTVByb21pc2U8dm9pZD4+IG1fcHJvbWlzZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKIH07CiAK
IGlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydChSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyJiYgY29udHJvbGxlciwgRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2Up
CkBAIC05MSwxNCArOTEsMTQgQEAgaW5saW5lIHZvaWQgUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnB1
bGwoRE9NUHJvbWlzZTx2b2lkPiYmIHByb21pc2UpCiBpbmxpbmUgdm9pZCBSZWFkYWJsZVN0cmVh
bVNvdXJjZTo6c3RhcnRGaW5pc2hlZCgpCiB7CiAgICAgQVNTRVJUKG1fcHJvbWlzZSk7Ci0gICAg
c3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLnZhbHVlKCkucmVzb2x2ZSgpOworICAg
IHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLnZhbHVlKCkucmVzb2x2ZSgp
OwogICAgIHNldEluYWN0aXZlKCk7CiB9CiAKIGlubGluZSB2b2lkIFJlYWRhYmxlU3RyZWFtU291
cmNlOjpwdWxsRmluaXNoZWQoKQogewogICAgIEFTU0VSVChtX3Byb21pc2UpOwotICAgIHN0ZDo6
ZXhjaGFuZ2UobV9wcm9taXNlLCBOdWxsb3B0KS52YWx1ZSgpLnJlc29sdmUoKTsKKyAgICBzdGQ6
OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3RkOjpudWxsb3B0KS52YWx1ZSgpLnJlc29sdmUoKTsKICAg
ICBzZXRJbmFjdGl2ZSgpOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgaW5saW5lIHZvaWQgUmVh
ZGFibGVTdHJlYW1Tb3VyY2U6OmNhbmNlbChKU0M6OkpTVmFsdWUpCiBpbmxpbmUgdm9pZCBSZWFk
YWJsZVN0cmVhbVNvdXJjZTo6Y2xlYW4oKQogewogICAgIGlmIChtX3Byb21pc2UpIHsKLSAgICAg
ICAgbV9wcm9taXNlID0gTnVsbG9wdDsKKyAgICAgICAgbV9wcm9taXNlID0gc3RkOjpudWxsb3B0
OwogICAgICAgICBzZXRJbmFjdGl2ZSgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRl
eCBhMTlmNjNmNjNkNTRkMzExZDFhNDI2ZWIwNzg0YzRhNGZkMzg4NmM2Li4xMTMxOWE4NWNlOTky
MGYxY2UyZjdhOThiODBjM2M3MWIwYTc4MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00Mzcs
NyArNDM3LDcgQEAgdW5zaWduZWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpudW1iZXJPZkNoYW5u
ZWxzKCkKICAgICByZXR1cm4gb3V0cHV0KDApLT5udW1iZXJPZkNoYW5uZWxzKCk7CiB9CiAKLUV4
Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnQoZG91YmxlIHdoZW4s
IGRvdWJsZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBvcHRpb25hbEdyYWluRHVyYXRp
b24pCitFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0KGRvdWJs
ZSB3aGVuLCBkb3VibGUgZ3JhaW5PZmZzZXQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBvcHRpb25h
bEdyYWluRHVyYXRpb24pCiB7CiAgICAgZG91YmxlIGdyYWluRHVyYXRpb24gPSAwOwogICAgIGlm
IChvcHRpb25hbEdyYWluRHVyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBhMDkyNjBhZGY5ODJm
ZWMzNjdjOTc0NTI0ZTA0MzhhNTY0YjQ0ZWJjLi5mNGU2M2E4NTljMDFiNDE1ZTFjZjM0N2YyNzg4
ZGRkOGI3YjczYmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZSB7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpOwogCiAgICAgLy8gUGxheS1zdGF0
ZQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0KGRvdWJsZSB3aGVuLCBkb3VibGUgZ3JhaW5P
ZmZzZXQsIE9wdGlvbmFsPGRvdWJsZT4gZ3JhaW5EdXJhdGlvbik7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc3RhcnQoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGdyYWluRHVyYXRpb24pOwogCiAgICAgLy8gTm90ZTogdGhlIGF0dHJpYnV0ZSB3
YXMgb3JpZ2luYWxseSBleHBvc2VkIGFzIC5sb29waW5nLCBidXQgdG8gYmUgbW9yZSBjb25zaXN0
ZW50IGluIG5hbWluZyB3aXRoIDxhdWRpbz4KICAgICAvLyBhbmQgd2l0aCBob3cgaXQncyBkZXNj
cmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24sIHRoZSBwcm9wZXIgYXR0cmlidXRlIG5hbWUgaXMg
Lmxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
UmVzdWx0U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFJlc3Vs
dFNldC5oCmluZGV4IGQ3MTZmYmYwMTU3ZWZmOGUxOGRjZDZjZmJiYWJmNjJiYmFmZThiZWUuLmUy
MjgzOTk5ZmE4OWEzYzZmZjcxNmMxNGM1ODk0ZjUzOGZkODQ1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMUmVzdWx0U2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXQuaApAQCAtNTAsNyArNTAs
NyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1FM
UmVzdWx0U2V0PiB7CiAgICAgU1FMUmVzdWx0U2V0KCk7CiAKICAgICBSZWY8U1FMUmVzdWx0U2V0
Um93TGlzdD4gbV9yb3dzOwotICAgIE9wdGlvbmFsPGludDY0X3Q+IG1faW5zZXJ0SWQ7CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ2NF90PiBtX2luc2VydElkOwogICAgIGludCBtX3Jvd3NBZmZlY3Rl
ZCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKaW5kZXggNjQzMjE2NTliYjFjMjI5NGQyMjJhZmRlYmYzNDQ1Y2E2Yjc0YzE1
Yy4uYmVkOTM2MjY3ZDU2ODRmYzc4ODE3MDkxZjExZjA3YzQ1ZWFiM2I3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTM3OCw3ICsz
NzgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OnNlbmQoQmxvYiYgYmluYXJ5RGF0
YSkKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNs
b3NlKE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBvcHRpb25hbENvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0OjpjbG9zZShzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkIHNob3J0PiBvcHRpb25hbENvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewog
ICAgIGludCBjb2RlID0gb3B0aW9uYWxDb2RlID8gb3B0aW9uYWxDb2RlLnZhbHVlKCkgOiBzdGF0
aWNfY2FzdDxpbnQ+KFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVk
KTsKICAgICBpZiAoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNw
ZWNpZmllZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aAppbmRleCA0MTU0ZWVlYzYzMjEyZWJjZGZhMWJmODAxYmY1ZTEyMjY0ZjEwNTc5Li43ZDQzZjA0
MzYwZmMzYjlhY2MwYmJmYjVhNTkyNDVkNjliODA5YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIFdl
YlNvY2tldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZChKU0M6OkFycmF5QnVm
ZmVyVmlldyYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNlbmQoQmxvYiYpOwogCi0gICAgRXhj
ZXB0aW9uT3I8dm9pZD4gY2xvc2UoT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbG9zZShzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0OwogICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcAppbmRleCA0ZTRhYTdjM2E5YmIyNTI1OTVhNzI5MjMwODcwNjFiYjdiMzQyMzk5Li44
MGRiYjRiYTBlZTNiMmM0NzMzYzgxZDJlMWI4NTk3ZDhiYmU3OGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0zMDcsNyArMzA3LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0
cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAgICBkZXJlZigpOwogfQogCi12b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVh
bUhhbmRsZSYgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBPcHRpb25hbDxzaXplX3Q+IGxlbikK
K3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0
U3RyZWFtSGFuZGxlJiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBsZW4pCiB7CiAgICAgaWYgKGxlbikKICAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCkgUmVjZWl2ZWQgJXp1IGJ5
dGVzIiwgdGhpcywgbGVuLnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggN2M3NThkNjQ0MGE4ZmYzNGQ0
NmQ1Mjc2NjU4MzMxNTIwMDQzZWFkMS4uYjNhNTJjY2M3OTBmZTFhN2E3YTEyM2JkMzg3MDgxOTY5
NzY5ZTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIFdlYlNvY2tldENoYW5u
ZWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0
cmVhCiAgICAgLy8gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGZ1bmN0aW9ucy4KICAgICB2b2lk
IGRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0
IGNoYXIqLCBPcHRpb25hbDxzaXplX3Q+KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTb2Nr
ZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYsIGNvbnN0IGNoYXIqLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4pIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU29j
a2V0U3RyZWFtSGFuZGxlJiwgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgU29ja2V0U3Ry
ZWFtRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExU
eXBlcy5oCmluZGV4IDBhMzI3ZWU2MWM5YTY1NGQ5NmJlZWU5NjUzMWExZDg4ODBhMzY4YjMuLjk3
NzQ2ZWZmODM4YTc0MWE0ZmRiODBkMzU2Njk5N2I0YjRiNDcwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmgKQEAgLTQ0LDggKzQ0LDggQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHN0cnVjdCBJRExUeXBlIHsKICAgICB1c2luZyBJbXBsZW1lbnRhdGlvblR5
cGUgPSBUOwogCi0gICAgdXNpbmcgTnVsbGFibGVUeXBlID0gT3B0aW9uYWw8SW1wbGVtZW50YXRp
b25UeXBlPjsKLSAgICBzdGF0aWMgTnVsbGFibGVUeXBlIG51bGxWYWx1ZSgpIHsgcmV0dXJuIE51
bGxvcHQ7IH0KKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPEltcGxlbWVu
dGF0aW9uVHlwZT47CisgICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxsVmFsdWUoKSB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgYm9vbCBpc051bGxWYWx1ZShjb25zdCBOdWxs
YWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICBzdGF0aWMgSW1wbGVtZW50
YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShjb25zdCBOdWxsYWJsZVR5cGUmIHZh
bHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHQuaAppbmRleCA5ODg4OWQ1ZWYzMDJkZDA2ZGU0
ODQwYmQzNDU3ZGQ0NzYxMjhjMTI4Li45ZWFhNzZiNGVkZWFjYzM4NzAwZWRjMDU1ZDlkNDA4ZjJk
MDQzYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1
bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVT
Y3JpcHQuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHQgOiBwdWJs
aWMgUmVmQ291bnRlZDxDYWNoZWRNb2R1bGVTY3JpcHQ+IHsKICAgICB2b2lkIG5vdGlmeUxvYWRG
YWlsZWQoTG9hZGFibGVTY3JpcHQ6OkVycm9yJiYpOwogICAgIHZvaWQgbm90aWZ5TG9hZFdhc0Nh
bmNlbGVkKCk7CiAKLSAgICBjb25zdCBPcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+JiBl
cnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PExvYWRhYmxlU2NyaXB0OjpFcnJvcj4mIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsg
fQogICAgIGJvb2wgd2FzQ2FuY2VsZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc0NhbmNlbGVkOyB9
CiAgICAgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMb2FkZWQ7IH0KIApAQCAt
NjksNyArNjksNyBAQCBjbGFzcyBDYWNoZWRNb2R1bGVTY3JpcHQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxDYWNoZWRNb2R1bGVTY3JpcHQ+IHsKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRNb2R1bGVT
Y3JpcHRDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgU3RyaW5nIG1fbm9uY2U7CiAgICAgU3RyaW5n
IG1fY3Jvc3NPcmlnaW5Nb2RlOwotICAgIE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4g
bV9lcnJvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gbV9lcnJv
cjsKICAgICBib29sIG1fd2FzQ2FuY2VsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0xvYWRl
ZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmlu
ZGV4IGI4ODMzNTMwMWE0NDAxM2Q1ZjRmNTg5ZWRiODgxZWI3YjdkY2I2MzQuLjJlN2RkMWYyNzRk
MzVjMGVlNTllMGUxMGIzZWIxMDExYzQ2N2NlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgRGljdGlvbmFyeSB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBib29sIGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIFJlc3VsdCYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBn
ZXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsdCYpIGNvbnN0OwogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgUmVzdWx0PiBPcHRpb25hbDxSZXN1bHQ+IGdldChjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gc3RkOjpv
cHRpb25hbDxSZXN1bHQ+IGdldChjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlz
dGVuZXIoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0OwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IFJlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVy
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBUKiB0YXJnZXQpIGNvbnN0OwpAQCAtNzksMTEg
Kzc5LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdD4gYm9vbCBEaWN0aW9uYXJ5OjpnZXQo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIFJlc3VsCiAgICAgcmV0dXJuIGdldChwcm9wZXJ0
eU5hbWUudXRmOCgpLmRhdGEoKSwgcmVzdWx0KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUmVz
dWx0PiBPcHRpb25hbDxSZXN1bHQ+IERpY3Rpb25hcnk6OmdldChjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHQ+IHN0ZDo6b3B0aW9uYWw8UmVz
dWx0PiBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgY2hhciogcHJvcGVydHlOYW1lKSBjb25zdAogewog
ICAgIFJlc3VsdCByZXN1bHQ7CiAgICAgaWYgKCFnZXQocHJvcGVydHlOYW1lLCByZXN1bHQpKQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGYxMTc1YjhlNGUyODEzZjFiOWI3ZWVjZWNj
NmI1NmJmMmQ4OWU4Y2EuLmE3NGRkMTgzMmZlNzljYmU1N2U5NmMyMWI1MGIzMDZjZmViZmYwMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUo
RXhlY1N0YXRlJiBleGVjLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8sIEpTVmFsdWUKICAgICBv
dXRLZXkgPSBJbmRleEtleShXVEZNb3ZlKGtleURhdGFzKSk7CiB9CiAKLUpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBP
cHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK0pTVmFsdWUgdG9KUyhFeGVjU3RhdGUmIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGlmICgha2V5UGF0aCkKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURC
QmluZGluZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5oCmluZGV4IDM2YzZlMThlNzI4M2VjMmNmMzIyMzFiNDMwNzJhZjQ4ZjI3YjYw
ODAuLmE4NmMxMGMwN2Q4YzI2ZWNjZGEyZTU3MjI4ZGYyZjkzNTI5MDY0MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CiBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1
ZmZlcjsKIAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2Ugc3VwcG9ydCByZXR1cm5pbmcg
dW5pb24gdHlwZXMuCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xv
YmFsT2JqZWN0JiwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKK0pTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPElEQktleVBhdGg+Jik7CiAKIFJlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJv
bVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IEpTQzo6SlNWYWx1
ZSYsIGNvbnN0IElEQktleVBhdGgmKTsKIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZh
bHVlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSlNDOjpKU1ZhbHVlJiwgY29uc3QgSURCS2V5UGF0
aCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKaW5kZXggNmUwMGM5ZjUxMDExNDdmNDc4ZTc0MzU3OTZj
YWMyMTY1MDFkZmUzNC4uNTRhOGQxZjU2NGE0YTcyMWQ1MTEwYTA3ZDhkZmViNWY0ZGY1ODE1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tl
eVNlcmlhbGl6YXRpb25KV0suY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIFJlZjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZD4gY3JlYXRlUlNBS2V5UGFyYW1ldGVyc1dp
dGhIYXNoKEMKICAgICByZXR1cm4gV1RGTW92ZShyc2FLZXlQYXJhbWV0ZXJzKTsKIH0KIAotT3B0
aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpy
ZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiBzdWdnZXN0ZWRBbGdvcml0aG0sIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKiBzdWdnZXN0ZWRQYXJhbWV0ZXJzKSBj
b25zdAorc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBKU0NyeXB0b0tleVNlcmlh
bGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0qIHN1Z2dlc3Rl
ZEFsZ29yaXRobSwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQqIHN1Z2dlc3Rl
ZFBhcmFtZXRlcnMpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBP
cHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OnJlY29uY2lsZUFsZ29yaXRobShDcgogICAgICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5l
dyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIlVuc3VwcG9ydGVkIEpXSyBhbGdv
cml0aG0gIiArIG1fandrQWxnb3JpdGhtTmFtZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghc3VnZ2VzdGVk
QWxnb3JpdGhtKQpAQCAtMjQ0LDExICsyNDQsMTEgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGht
UGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3IK
ICAgICAgICAgcmV0dXJuIENyeXB0b0FsZ29yaXRobVBhaXIgeyBzdWdnZXN0ZWRBbGdvcml0aG0s
IHN1Z2dlc3RlZFBhcmFtZXRlcnMgfTsKIAogICAgIGlmIChhbGdvcml0aG0tPmlkZW50aWZpZXIo
KSAhPSBzdWdnZXN0ZWRBbGdvcml0aG0tPmlkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYWxnb3JpdGht
LT5pZGVudGlmaWVyKCkgPT0gQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQykgewogICAg
ICAgICBpZiAoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQ+KCpw
YXJhbWV0ZXJzKS5oYXNoICE9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXBy
ZWNhdGVkPigqc3VnZ2VzdGVkUGFyYW1ldGVycykuaGFzaCkKLSAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJu
IENyeXB0b0FsZ29yaXRobVBhaXIgeyBzdWdnZXN0ZWRBbGdvcml0aG0sIHN1Z2dlc3RlZFBhcmFt
ZXRlcnMgfTsKICAgICB9CiAgICAgaWYgKGFsZ29yaXRobS0+aWRlbnRpZmllcigpID09IENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81CkBAIC0yNTgsNyArMjU4LDcg
QEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9u
SldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3IKICAgICAgICAgQVNTRVJUKHJzYUtleVBhcmFtZXRl
cnMuaGFzSGFzaCk7CiAgICAgICAgIGlmIChzdWdnZXN0ZWRSU0FLZXlQYXJhbWV0ZXJzLmhhc0hh
c2gpIHsKICAgICAgICAgICAgIGlmIChzdWdnZXN0ZWRSU0FLZXlQYXJhbWV0ZXJzLmhhc2ggIT0g
cnNhS2V5UGFyYW1ldGVycy5oYXNoKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4g
Q3J5cHRvQWxnb3JpdGhtUGFpciB7IHN1Z2dlc3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1l
dGVycyB9OwogICAgICAgICB9CiAgICAgICAgIHN1Z2dlc3RlZFJTQUtleVBhcmFtZXRlcnMuaGFz
SGFzaCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5oCmluZGV4IDFhNzhhMzE0ZWExNDVjNzNhNjkwM2Y1
Y2MzNzE1MDEyZmI2NjViOGYuLjQ3YTVhMDNiZTQyYjQ2YzU1YjRjMTE2MTU1ZTkwOGJmMjIwN2Vl
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSy5oCkBAIC01MSw3ICs1MSw3IEBAIFdURl9NQUtFX05PTkNPUFlB
QkxFKEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyk7CiAgICAgc3RhdGljIFN0cmluZyBzZXJp
YWxpemUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleSYpOwogCiBwcml2YXRl
OgotICAgIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShD
cnlwdG9BbGdvcml0aG0qLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVj
b25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSosIENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnNEZXByZWNhdGVkKikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlY29uY2lsZVVzYWdl
cyhDcnlwdG9LZXlVc2FnZUJpdG1hcCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVjb25j
aWxlRXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnQuaAppbmRleCA5ZDlmMTA5YmVhZjYwZDBmNGIyMjQzMzNkNzRi
YjNkYmQ0ZjQwOGVkLi43NjdmOTU0NzkwMDYyN2ExNTE4NWFhMDM1ZDY4OWJlM2U2NjdiZWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaApAQCAtNTMsNyArNTMs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyPiB0eXBl
bmFtZSBDb252ZXJ0ZXI8VD46OlJldHVyblR5cAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252
ZXJ0RGljdGlvbmFyeShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiAKIC8vIFNwZWNp
YWxpemVkIGJ5IGdlbmVyYXRlZCBjb2RlIGZvciBJREwgZW51bWVyYXRpb24gY29udmVyc2lvbi4K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IE9wdGlvbmFsPFQ+IHBhcnNlRW51bWVyYXRpb24oSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RkOjpvcHRp
b25hbDxUPiBwYXJzZUVudW1lcmF0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVydEVudW1lcmF0aW9uKEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IGNoYXIqIGV4cGVj
dGVkRW51bWVyYXRpb25WYWx1ZXMoKTsKIApAQCAtMTAyNiw3ICsxMDI2LDcgQEAgc3RydWN0IENv
bmRpdGlvbmFsQ29udmVydGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBl
bmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFsQ29udmVydGVyPFJldHVyblR5cGUsIFQsIHRydWU+
IHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4gY29udmVydChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZh
bHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIFJldHVyblR5cGUoQ29udmVydGVyPFQ+Ojpjb252
ZXJ0KHN0YXRlLCB2YWx1ZSkpOwogICAgIH0KQEAgLTEwMzQsOSArMTAzNCw5IEBAIHN0cnVjdCBD
b25kaXRpb25hbENvbnZlcnRlcjxSZXR1cm5UeXBlLCBULCB0cnVlPiB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0
ZXI8UmV0dXJuVHlwZSwgVCwgZmFsc2U+IHsKLSAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlw
ZT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSkKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogfTsKIApAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gVD4gc3RydWN0IENvbnZlcnRlcjxJRExVbmlvbjxULi4uPj4gOiBEZWZhdWx0Q29u
dmVydGVyPElETFUKICAgICAgICAgLy8gICAgIDIuIElmIHR5cGVzIGluY2x1ZGVzIG9iamVjdCwg
dGhlbiByZXR1cm4gdGhlIElETCB2YWx1ZSB0aGF0IGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmpl
Y3QgVi4KICAgICAgICAgLy8gICAgICAgICAoRklYTUU6IEFkZCBzdXBwb3J0IGZvciBvYmplY3Qg
YW5kIHN0ZXAgNC4yKQogICAgICAgICBpZiAoYnJpZ2FuZDo6YW55PFR5cGVMaXN0LCBJc0lETElu
dGVyZmFjZTxicmlnYW5kOjpfMT4+Ojp2YWx1ZSkgewotICAgICAgICAgICAgT3B0aW9uYWw8UmV0
dXJuVHlwZT4gcmV0dXJuVmFsdWU7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldHVyblR5
cGU+IHJldHVyblZhbHVlOwogICAgICAgICAgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8SW50ZXJmYWNl
VHlwZUxpc3Q+KFsmXShhdXRvJiYgdHlwZSkgewogICAgICAgICAgICAgICAgIGlmIChyZXR1cm5W
YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gVD4gc3RydWN0IEpTQ29udmVydGVyPElETFVuaW9uPFQuLi4+
PiB7CiAgICAgewogICAgICAgICBhdXRvIGluZGV4ID0gdmFyaWFudC5pbmRleCgpOwogCi0gICAg
ICAgIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcmV0dXJuVmFsdWU7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SlNDOjpKU1ZhbHVlPiByZXR1cm5WYWx1ZTsKICAgICAgICAgYnJpZ2FuZDo6Zm9yX2Vh
Y2g8U2VxdWVuY2U+KFsmXShhdXRvJiYgdHlwZSkgewogICAgICAgICAgICAgdXNpbmcgSSA9IHR5
cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0
eXBlOwogICAgICAgICAgICAgaWYgKEk6OnZhbHVlID09IGluZGV4KSB7CkBAIC0xMzAyLDEzICsx
MzAyLDEzIEBAIG5hbWVzcGFjZSBEZXRhaWwgewogICAgIHN0cnVjdCBWYXJpYWRpY0NvbnZlcnRl
ckJhc2UgewogICAgICAgICB1c2luZyBJdGVtID0gdHlwZW5hbWUgSURMVHlwZTo6SW1wbGVtZW50
YXRpb25UeXBlOwogCi0gICAgICAgIHN0YXRpYyBPcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvJiB2bSA9IHN0YXRlLnZtKCk7
CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29udmVydGVyPElETFR5cGU+Ojpjb252ZXJ0KHN0YXRl
LCB2YWx1ZSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBOdWxsb3B0
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHN0ZDo6bnVsbG9wdCk7
CiAKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgICAgIH0KQEAgLTEz
MTgsMTIgKzEzMTgsMTIgQEAgbmFtZXNwYWNlIERldGFpbCB7CiAgICAgc3RydWN0IFZhcmlhZGlj
Q29udmVydGVyQmFzZTxJRExJbnRlcmZhY2U8VD4+IHsKICAgICAgICAgdXNpbmcgSXRlbSA9IHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VD47CiAKLSAgICAgICAgc3RhdGljIE9wdGlvbmFsPEl0ZW0+
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAg
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEl0ZW0+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8qIHJl
c3VsdCA9IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+Ojpjb252ZXJ0KHN0YXRlLCB2YWx1ZSk7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9w
dDsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxJdGVtPigqcmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8SXRlbT4oKnJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xMzM0LDcgKzEz
MzQsNyBAQCBuYW1lc3BhY2UgRGV0YWlsIHsKIAogICAgICAgICBzdHJ1Y3QgUmVzdWx0IHsKICAg
ICAgICAgICAgIHNpemVfdCBhcmd1bWVudEluZGV4OwotICAgICAgICAgICAgT3B0aW9uYWw8Q29u
dGFpbmVyPiBhcmd1bWVudHM7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnRhaW5lcj4g
YXJndW1lbnRzOwogICAgICAgICB9OwogICAgIH07CiB9CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiB0eXBlbmFtZSBEZXRhaWw6OlZhcmlhZGljQ29udmVy
dGVyPElETFR5cGU+OjpSZXN1bHQgYwogewogICAgIHNpemVfdCBsZW5ndGggPSBzdGF0ZS5hcmd1
bWVudENvdW50KCk7CiAgICAgaWYgKHN0YXJ0SW5kZXggPiBsZW5ndGgpCi0gICAgICAgIHJldHVy
biB7IDAsIE51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgMCwgc3RkOjpudWxsb3B0IH07CiAK
ICAgICB0eXBlbmFtZSBEZXRhaWw6OlZhcmlhZGljQ29udmVydGVyPElETFR5cGU+OjpDb250YWlu
ZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCAtIHN0
YXJ0SW5kZXgpOwpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4gdHlwZW5hbWUgRGV0YWlsOjpWYXJpYWRpY0NvbnZlcnRlcjxJRExUeXBlPjo6UmVzdWx0IGMK
ICAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAg
ICAgIGF1dG8gdmFsdWUgPSBEZXRhaWw6OlZhcmlhZGljQ29udmVydGVyPElETFR5cGU+Ojpjb252
ZXJ0KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIGlmICghdmFs
dWUpCi0gICAgICAgICAgICByZXR1cm4geyBpLCBOdWxsb3B0IH07CisgICAgICAgICAgICByZXR1
cm4geyBpLCBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChX
VEZNb3ZlKCp2YWx1ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JdGVyYXRvci5oCmluZGV4IGI1ODJkYjBmNTZkNzIzMjg5NTIwY2U2NmMwZTMwZWYxNTI3MTIx
ODMuLjNjNWZlMGUzZjE3ZTA3NzMyMTZiMTVmZDVjZmU1ZmU1OTBhYjAyNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTExOSw3ICsxMTksNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXIsIHR5cGVuYW1lIEl0ZXJhdG9yVHJhaXRzPiBjbGFz
cyBKU0RPTUl0ZXJhdG9yIDogcHVibAogCiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwogCi0gICAgT3B0aW9uYWw8dHlwZW5hbWUgRE9NV3JhcHBlZDo6SXRlcmF0b3I+IG1f
aXRlcmF0b3I7CisgICAgc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBET01XcmFwcGVkOjpJdGVyYXRv
cj4gbV9pdGVyYXRvcjsKICAgICBJdGVyYXRpb25LaW5kIG1fa2luZDsKIH07CiAKQEAgLTIzNiw3
ICsyMzYsNyBAQCBKU0M6OkpTVmFsdWUgSlNET01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9y
VHJhaXRzPjo6bmV4dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdAogICAgICAgICBhdXRvIGl0ZXJhdG9y
VmFsdWUgPSBtX2l0ZXJhdG9yLT5uZXh0KCk7CiAgICAgICAgIGlmIChpdGVyYXRvclZhbHVlKQog
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KCZzdGF0ZSwgYXNK
UyhzdGF0ZSwgaXRlcmF0b3JWYWx1ZSksIGZhbHNlKTsKLSAgICAgICAgbV9pdGVyYXRvciA9IE51
bGxvcHQ7CisgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJl
dHVybiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCgmc3RhdGUsIEpTQzo6anNVbmRlZmluZWQo
KSwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmlu
ZGV4IDNhZmY1YzgyZThkMTEzZDUwZDU2MGM0MzI4MDk1NzQyMTEyN2RkODIuLmNiMWMzMjkxZDA2
Mzk3OTU3ZWIwZTQzMDlmNzNlMzRiY2VhYzA5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oCkBAIC0yMDYsMTEgKzIwNiwyMCBAQCBpbmxpbmUgSlNDOjpKU1Zh
bHVlIGNhbGxQcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogdGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWU+IGNsYXNzIERPTVByb21pc2UgewogcHVibGljOgogICAgIERPTVByb21p
c2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBnZW5lcmljUHJvbWlzZSkgOiBtX3Byb21pc2VEZWZl
cnJlZChXVEZNb3ZlKGdlbmVyaWNQcm9taXNlKSkgeyB9Ci0KICAgICBET01Qcm9taXNlKERPTVBy
b21pc2UmJiBwcm9taXNlKSA6IG1fcHJvbWlzZURlZmVycmVkKFdURk1vdmUocHJvbWlzZS5tX3By
b21pc2VEZWZlcnJlZCkpIHsgfQorICAgIERPTVByb21pc2UoY29uc3QgRE9NUHJvbWlzZSYgb3Ro
ZXIpIDogbV9wcm9taXNlRGVmZXJyZWQob3RoZXIubV9wcm9taXNlRGVmZXJyZWQuY29weVJlZigp
KSB7IH0KKworICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShjb25zdCBET01Qcm9taXNlJiBvdGhl
cikKKyAgICB7CisgICAgICAgIG1fcHJvbWlzZURlZmVycmVkID0gb3RoZXIuY29weVJlZigpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCi0gICAgRE9NUHJvbWlzZShjb25zdCBET01Q
cm9taXNlJikgPSBkZWZhdWx0OwotICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNl
IGNvbnN0JikgPSBkZWZhdWx0OworICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9taXNl
JiYgb3RoZXIpCisgICAgeworICAgICAgICBtX3Byb21pc2VEZWZlcnJlZCA9IFdURk1vdmUob3Ro
ZXIubV9wcm9taXNlRGVmZXJyZWQpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IFZhbHVlPgogICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPCFzdGQ6OmlzX3ZvaWQ8VD46OnZhbHVlLCB2b2lkPjo6dHlwZSByZXNvbHZlKHR5cGVuYW1l
IFByb21pc2VSZXN1bHRJbnNwZWN0b3I8VmFsdWU+OjpUeXBlIHZhbHVlKSB7IG1fcHJvbWlzZURl
ZmVycmVkLT5yZXNvbHZlKHZhbHVlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDQyODc2OTM5NDRiZmFmOTRlYmI5NmZmNzY2
OTA1N2ZlYzQ0NTllYjQuLjQ1YTM2NTM1ZDBhNGNmMDU2NDA1ZGM5YjM0MjYwZjNlZWZlNWVhMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydAogewogICAgIC8v
ICgxKSBGaXJzdCwgaW5kZXhlZCBwcm9wZXJ0aWVzLgogICAgIC8vIEhhbmQgb2ZmIGFsbCBpbmRl
eGVkIGFjY2VzcyB0byBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCB3aGljaCBzdXBwb3J0cyB0
aGUgaW5kZXhlZCBnZXR0ZXIuCi0gICAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
aW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVybiBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgc3RhdGUsIGluZGV4LnZhbHVlKCksIHNsb3QpOwog
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KG9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4IDA4YzE0OWE1ODE3
NGIzYmE0YzMyYjNhODg3M2NjYTdlOThhOWY2NjguLmY2NTc4ODMyMjI1NmJjODcxODcwZDBiMGZm
YWY1ZGY4Y2YzM2Q4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5oCkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBjbGFzcyBKU0RpY3Rpb25hcnkgewogICAgIEdldFBy
b3BlcnR5UmVzdWx0IHRyeUdldFByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0
aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBPcHRpb25hbDxUPiYgcmVzdWx0KQorICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIHN0ZDo6
b3B0aW9uYWw8VD4mIHJlc3VsdCkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBOdWxsb3B0OworICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCmluZGV4IDQzZmY4
MmUzZDZkYWZmYzRlZDk5MmRiNThjN2QwMTJmNTlmMjE1ODkuLjY5ZDg3MjdiNzQwOTgyNzYyNWU1
MGZhMjM5ZmFlMWFlOWQ1YmNmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmlsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNG
aWxlQ3VzdG9tLmNwcApAQCAtNzEsNyArNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTRmlsZShFeGVjU3RhdGUmIGV4ZWMpCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBTdHJpbmcgbm9ybWFsaXplZFR5
cGU7Ci0gICAgT3B0aW9uYWw8aW50NjRfdD4gbGFzdE1vZGlmaWVkOworICAgIHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gbGFzdE1vZGlmaWVkOwogCiAgICAgYXJnID0gZXhlYy5hcmd1bWVudCgyKTsK
ICAgICBpZiAoIWFyZy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4
IDZkNzNmMThiNjgyZGMwNDdhN2FjYmNhOWZkNWYxOWNhYjczZjNmOTguLmY5NDI2NmJlMjE3MzA1
NTgyYTBiOGM5NGQxNWI5MTU2MjE0NmMyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC02OSw3ICs2
OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIVE1MQWxsQ29s
bGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50
LmFsbCg8aW5kZXg+KSBldGMuCiAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBpZiAoT3B0aW9uYWw8dWlu
dDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleCgqc3RyaW5nLmltcGwoKSkpCisgICAgICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKnN0cmluZy5pbXBsKCkp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVj
dGlvbi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24uaXRlbShpbmRleC52YWx1ZSgpKSkpOwog
CiAgICAgICAgIC8vIFN1cHBvcnQgZm9yIGRvY3VtZW50LmltYWdlcygnPG5hbWU+JykgZXRjLgpA
QCAtNzksNyArNzksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SFRNTEFsbENvbGxlY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIFRoZSBzZWNvbmQgYXJn
LCBpZiBzZXQsIGlzIHRoZSBpbmRleCBvZiB0aGUgaXRlbSB3ZSB3YW50CiAgICAgU3RyaW5nIHN0
cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAo
T3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleCgqZXhlYy0+YXJndW1lbnQoMSku
dG9XVEZTdHJpbmcoZXhlYykuaW1wbCgpKSkgeworICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmV4ZWMtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGV4
ZWMpLmltcGwoKSkpIHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBjb2xsZWN0aW9uLm5hbWVk
SXRlbVdpdGhJbmRleChzdHJpbmcsIGluZGV4LnZhbHVlKCkpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29sbGVjdGlvbi0+Z2xvYmFsT2JqZWN0KCks
ICppdGVtKSk7CiAgICAgfQpAQCAtMTEyLDcgKzExMiw3IEBAIEpTVmFsdWUgSlNIVE1MQWxsQ29s
bGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAKICAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZygmc3RhdGUpOwotICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KCphcmd1bWVudC5pbXBsKCkpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50LmltcGwoKSkpCiAgICAgICAgIHJldHVy
biB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5pdGVtKGluZGV4LnZhbHVl
KCkpKTsKICAgICByZXR1cm4gbmFtZWRJdGVtcyhzdGF0ZSwgdGhpcywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsIGFyZ3VtZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDc0ZTNl
YjNkNjRlODI2Njk0ZjM2YzNjNTRkM2I4NjUzMGRjZDgyZGEuLmQxY2ZiNzllYzM3ZDM2MjVhNGE2
MzI1MjAwYmIxODlhZmVkYzE5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC0xMTAsNyArMTEwLDcg
QEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkwoRXhlY1N0YXRlJiBzdGF0
ZSkKICAgICBhdXRvIHR5cGUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETERPTVN0cmluZz4+KHN0
YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
SlNDOjpKU1ZhbHVlKCkpOwogCi0gICAgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5OworICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5OwogICAgIGF1dG8gcXVhbGl0eVZhbHVlID0gc3Rh
dGUuYXJndW1lbnQoMSk7CiAgICAgaWYgKHF1YWxpdHlWYWx1ZS5pc051bWJlcigpKQogICAgICAg
ICBxdWFsaXR5ID0gcXVhbGl0eVZhbHVlLnRvTnVtYmVyKCZzdGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0MDgyYjFm
YWQyYmZmMDdmZjliMjk3NzY0YzQ4ZWQzODY3MThlZDk4Li5kNjllZDc2ZjgxOWZlZTUwM2Q2ZTJk
MTlmMzYxMDI5YjQ0YTkzYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTU4LDggKzU4LDggQEAgdGVtcGxhdGU8PiBFbmNv
ZGVkSlNWYWx1ZSBKU0ltYWdlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRl
KQogICAgIC8vIGFkZGVkIHRvIHRoZSB3aW5kb3cgb2JqZWN0LiBUaGlzIGlzIGRvbmUgdG8gZW5z
dXJlIHRoYXQgSlNEb2N1bWVudDo6dmlzaXQKICAgICAvLyB3aWxsIGJlIGNhbGxlZCwgd2hpY2gg
d2lsbCBjYXVzZSB0aGUgaW1hZ2UgZWxlbWVudCB0byBiZSBtYXJrZWQgaWYgbmVjZXNzYXJ5Lgog
ICAgIHRvSlMoc3RhdGUsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCAqZG9jdW1lbnQp
OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4g
aGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHdpZHRoOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGhlaWdodDsKICAgICBpZiAoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA+
IDApIHsKICAgICAgICAgd2lkdGggPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50
MzIoc3RhdGUpOwogICAgICAgICBpZiAoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA+IDEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAK
aW5kZXggZGY3ZTE4NDNkYmJkYjE0YjcyNTk4Yjc2ZTE1YmE4MzMyNGFmNGQ2Yy4uMzUyOTY5ZmU4
OTNhNDg2MGQwNjM5OTZjNmNhNDVhODY5NzdhMDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtNTgsNyArNTgsNyBA
QCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3RyaW5nQ29uc3RyYWludFdpdGhMaXN0KFN0cmluZ0Nv
bnN0cmFpbnQmIGNvbnN0cmFpbnQsIHZvaQogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPFN0
cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYg
bWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYgbmFtZSwgTWVkaWFDb25zdHJh
aW50VHlwZSB0eXBlLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQo
Y29uc3QgRGljdGlvbmFyeSYgbWVkaWFUcmFja0NvbnN0cmFpbnRTZXQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlLCBDb25zdHJhaW50U2V0VHlwZSBjb25zdHJh
aW50U2V0VHlwZSkKIHsKICAgICBhdXRvIGNvbnN0cmFpbnQgPSBTdHJpbmdDb25zdHJhaW50KG5h
bWUsIHR5cGUpOwogCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmdDb25z
dHJhaW50PiBjcmVhdGVTdHJpbmdDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhCiAK
ICAgICAgICAgaWYgKGNvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBMT0coTWVk
aWEsICJjcmVhdGVTdHJpbmdDb25zdHJhaW50KCkgLSBpZ25vcmluZyBzdHJpbmcgY29uc3RyYWlu
dCAnJXMnIHdpdGggZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3Vw
cG9ydGVkIGtleS92YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gV1RGTW92ZShjb25zdHJhaW50KTsKQEAg
LTk4LDcgKzk4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IGNyZWF0ZVN0
cmluZ0NvbnN0cmFpbnQoY29uc3QgRGljdGlvbmFyeSYgbWVkaWEKIAogICAgICAgICBpZiAoY29u
c3RyYWludC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmlu
Z0NvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgd2l0aCBhcnJh
eSB2YWx1ZSBzaW5jZSBpdCBpcyBlbXB0eS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CkBAIC0xMTcs
MTAgKzExNywxMCBAQCBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gY3JlYXRlU3Ry
aW5nQ29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYQogCiAgICAgLy8gSW52YWxpZCBj
b25zdHJhaW50IHZhbHVlLgogICAgIExPRyhNZWRpYSwgImNyZWF0ZVN0cmluZ0NvbnN0cmFpbnQo
KSAtIGlnbm9yaW5nIHN0cmluZyBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIg
YSBkaWN0aW9uYXJ5IG5vciBzZXF1ZW5jZSBub3Igc2NhbGFyIHZhbHVlLiIsIG5hbWUudXRmOCgp
LmRhdGEoKSk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAotc3RhdGljIE9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGVCb29sZWFuQ29u
c3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUsIENvbnN0cmFpbnRTZXRUeXBl
IGNvbnN0cmFpbnRTZXRUeXBlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFp
bnQ+IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tD
b25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlw
ZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCiB7CiAgICAgYXV0byBjb25z
dHJhaW50ID0gQm9vbGVhbkNvbnN0cmFpbnQobmFtZSwgdHlwZSk7CiAKQEAgLTEzNyw3ICsxMzcs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNyZWF0ZUJvb2xlYW5Db25z
dHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZAogCiAgICAgICAgIGlmIChjb25zdHJhaW50Lmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlQm9vbGVhbkNvbnN0cmFp
bnQoKSAtIGlnbm9yaW5nIGJvb2xlYW4gY29uc3RyYWludCAnJXMnIHdpdGggZGljdGlvbmFyeSB2
YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92YWx1ZSBwYWlycy4i
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJu
IFdURk1vdmUoY29uc3RyYWludCk7CkBAIC0xNTYsMTAgKzE1NiwxMCBAQCBzdGF0aWMgT3B0aW9u
YWw8Qm9vbGVhbkNvbnN0cmFpbnQ+IGNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KGNvbnN0IERpY3Rp
b25hcnkmIG1lZAogCiAgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgogICAgIExPRyhN
ZWRpYSwgImNyZWF0ZUJvb2xlYW5Db25zdHJhaW50KCkgLSBpZ25vcmluZyBib29sZWFuIGNvbnN0
cmFpbnQgJyVzJyBzaW5jZSBpdCBoYXMgbmVpdGhlciBhIGRpY3Rpb25hcnkgbm9yIHNjYWxhciB2
YWx1ZS4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50
PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhVHJhY2tDb25z
dHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSwg
Q29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxEb3VibGVDb25zdHJhaW50PiBjcmVhdGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25h
cnkmIG1lZGlhVHJhY2tDb25zdHJhaW50U2V0LCBjb25zdCBTdHJpbmcmIG5hbWUsIE1lZGlhQ29u
c3RyYWludFR5cGUgdHlwZSwgQ29uc3RyYWludFNldFR5cGUgY29uc3RyYWludFNldFR5cGUpCiB7
CiAgICAgYXV0byBjb25zdHJhaW50ID0gRG91YmxlQ29uc3RyYWludChuYW1lLCB0eXBlKTsKIApA
QCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBjcmVh
dGVEb3VibGVDb25zdHJhaW50KGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhCiAKICAgICAgICAgaWYg
KGNvbnN0cmFpbnQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBMT0coTWVkaWEsICJjcmVhdGVE
b3VibGVDb25zdHJhaW50KCkgLSBpZ25vcmluZyBkb3VibGUgY29uc3RyYWludCAnJXMnIHdpdGgg
ZGljdGlvbmFyeSB2YWx1ZSBzaW5jZSBpdCBoYXMgbm8gdmFsaWQgb3Igc3VwcG9ydGVkIGtleS92
YWx1ZSBwYWlycy4iLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIFdURk1vdmUoY29uc3RyYWludCk7CkBAIC0yMDMsMTAgKzIwMywxMCBAQCBz
dGF0aWMgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlRG91YmxlQ29uc3RyYWludChj
b25zdCBEaWN0aW9uYXJ5JiBtZWRpYQogCiAgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVl
LgogICAgIExPRyhNZWRpYSwgImNyZWF0ZURvdWJsZUNvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGRv
dWJsZSBjb25zdHJhaW50ICclcycgc2luY2UgaXQgaGFzIG5laXRoZXIgYSBkaWN0aW9uYXJ5IG5v
ciBzY2FsYXIgdmFsdWUuIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgT3B0aW9uYWw8SW50Q29u
c3RyYWludD4gY3JlYXRlSW50Q29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNr
Q29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0cmFpbnRUeXBlIHR5
cGUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SW50Q29uc3RyYWludD4gY3JlYXRlSW50Q29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5
JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3QgU3RyaW5nJiBuYW1lLCBNZWRpYUNvbnN0
cmFpbnRUeXBlIHR5cGUsIENvbnN0cmFpbnRTZXRUeXBlIGNvbnN0cmFpbnRTZXRUeXBlKQogewog
ICAgIGF1dG8gY29uc3RyYWludCA9IEludENvbnN0cmFpbnQobmFtZSwgdHlwZSk7CiAKQEAgLTIz
MSw3ICsyMzEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gY3JlYXRlSW50Q29u
c3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQwogCiAgICAgICAgIGlmIChjb25z
dHJhaW50LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiY3JlYXRlSW50Q29u
c3RyYWludCgpIC0gaWdub3JpbmcgbG9uZyBjb25zdHJhaW50ICclcycgd2l0aCBkaWN0aW9uYXJ5
IHZhbHVlIHNpbmNlIGl0IGhhcyBubyB2YWxpZCBvciBzdXBwb3J0ZWQga2V5L3ZhbHVlIHBhaXJz
LiIsIG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gV1RGTW92ZShjb25zdHJhaW50KTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8SW50Q29uc3RyYWludD4gY3JlYXRlSW50Q29uc3RyYWludChjb25zdCBEaWN0aW9uYXJ5JiBt
ZWRpYVRyYWNrQwogCiAgICAgLy8gSW52YWxpZCBjb25zdHJhaW50IHZhbHVlLgogICAgIExPRyhN
ZWRpYSwgImNyZWF0ZUludENvbnN0cmFpbnQoKSAtIGlnbm9yaW5nIGxvbmcgY29uc3RyYWludCAn
JXMnIHNpbmNlIGl0IGhhcyBuZWl0aGVyIGEgZGljdGlvbmFyeSBub3Igc2NhbGFyIHZhbHVlLiIs
IG5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIHZvaWQgcGFyc2VNZWRpYVRyYWNrQ29uc3RyYWludFNl
dEZvcktleShjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYVRyYWNrQ29uc3RyYWludFNldCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCYgbWFwLCBDb25zdHJhaW50
U2V0VHlwZSBjb25zdHJhaW50U2V0VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAppbmRleCBhYzliNWQz
MDQ3NTNmYjBkMTcyNzhiMjgyZTVjOGZhNGEwNjRmNTMzLi5iM2NhYTJjODAyYTA3ZGZlMDQ4MDli
M2M3MmI4ODY4NzM1MjRlMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC00NzYsNyArNDc2LDcg
QEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1h
dCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGkKIAogICAgIEFTU0VSVChrZXlTZXJpYWxpemF0aW9u
KTsKIAotICAgIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZWRSZXN1bHQg
PSBrZXlTZXJpYWxpemF0aW9uLT5yZWNvbmNpbGVBbGdvcml0aG0oYWxnb3JpdGhtLmdldCgpLCBw
YXJhbWV0ZXJzLmdldCgpKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+
IHJlY29uY2lsZWRSZXN1bHQgPSBrZXlTZXJpYWxpemF0aW9uLT5yZWNvbmNpbGVBbGdvcml0aG0o
YWxnb3JpdGhtLmdldCgpLCBwYXJhbWV0ZXJzLmdldCgpKTsKICAgICBpZiAoIXJlY29uY2lsZWRS
ZXN1bHQpIHsKICAgICAgICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNp
ZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtl
eSBhcyBhcmd1bWVudCIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggMjA4N2E4NmY3M2Y2YjI2YjQ3Nzg1MzRkYTZkZDFiYWY3YTRh
OTA3My4uMmYzZjIwYzBiYTFjYjcyNTA0ZjE2NDg4YjQ2NDM0ZjEzMDBlMDU3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM4Myw3
ICszODMsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxl
cnMoQ2FjaGVkTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3JpcAogICAgICAgICAgICAgaWYgKHN5bWJv
bC0+cHJpdmF0ZU5hbWUoKSA9PSBtb2R1bGVMb2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJv
bCkgewogICAgICAgICAgICAgICAgIG1vZHVsZVNjcmlwdC0+bm90aWZ5TG9hZEZhaWxlZChMb2Fk
YWJsZVNjcmlwdDo6RXJyb3IgewogICAgICAgICAgICAgICAgICAgICBMb2FkYWJsZVNjcmlwdDo6
RXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgIE51bGxvcHQKKyAg
ICAgICAgICAgICAgICAgICAgc3RkOjpudWxsb3B0CiAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAg
ICAgICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFy
U2NyaXB0T2JqZWN0cygpCiAKIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJl
SW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1
cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IE51bGxvcHQpOworICAgIFVzZXJHZXN0
dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IHN0ZDo6b3B0
aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkg
OiBzdGQ6Om51bGxvcHQpOwogICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQs
IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpOwogCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0
cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKQEAgLTY2Myw3ICs2NjMsNyBA
QCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxp
bmdDYW5FeGVjdXRlU2NyaXB0cyByZWFzbwogCiBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwg
RXhjZXB0aW9uRGV0YWlscyogZXhjZXB0aW9uRGV0YWlscykKIHsKLSAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGZvcmNlVXNlckdlc3R1cmUgPyBPcHRpb25hbDxQcm9j
ZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IE51bGxvcHQp
OworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2Vz
dHVyZSA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3Np
bmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiBleGVjdXRlU2NyaXB0
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKSwgZXhj
ZXB0aW9uRGV0YWlscyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNTJjYjYxNWNjOGEyNzNkZDg2NTgwZWJkNGI2
MGJmMDczNTk2YmZjOS4uMjRmNGJlZmRhN2E2ZTBjYjNmNWNiMGI5MmUyZTQzZTM3M2YzNzcxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KQEAgLTQwNyw3ICs0MDcsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
b2R5CiAgICAgfTsKIAogICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uKSB7Ci0gICAgICAg
IHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgT3B0aW9uYWw8dWludDMyX3Q+IG9w
dGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVz
aChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBv
cHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpO1xuIik7CiAKICAgICAgICAg
IyBJZiB0aGUgaXRlbSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nIHRoZW4gd2UgbGV0IHRoZSBU
cmVhdFJldHVybmVkTnVsbFN0cmluZ0FzIGhhbmRsZSB0aGUgY2FzZXMKICAgICAgICAgIyB3aGVy
ZSB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLgpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgc3ViIEdl
bmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAjIEZJWE1FOiBDaGFu
Z2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBFeGVjU3RhdGUmLgogICAgICMgRklYTUU6IENvbnNp
ZGVyIHVzaW5nIHRvU3RyaW5nT3JOdWxsIHRvIG1ha2UgZXhjZXB0aW9uIGNoZWNraW5nIGZhc3Rl
ci4KICAgICAjIEZJWE1FOiBDb25zaWRlciBmaW5kaW5nIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRv
IG1hdGNoIGFnYWluc3QgYWxsIHRoZSBzdHJpbmdzIHF1aWNrbHkuCi0gICAgJHJlc3VsdCAuPSAi
dGVtcGxhdGU8PiBPcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05h
bWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOworICAgICRyZXN1bHQgLj0g
InRlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZUVudW1lcmF0aW9uPCRj
bGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAgICRyZXN1
bHQgLj0gIntcbiI7CiAgICAgJHJlc3VsdCAuPSAiICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1
ZS50b1dURlN0cmluZygmc3RhdGUpO1xuIjsKICAgICBmb3JlYWNoIG15ICR2YWx1ZSAoQHskZW51
bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTEwMTIsNyArMTAxMiw3IEBAIHN1YiBHZW5lcmF0ZUVu
dW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgIH0KICAgICAgICAgJHJlc3Vs
dCAuPSAiICAgICAgICByZXR1cm4gJHtjbGFzc05hbWV9Ojoke2VudW1lcmF0aW9uVmFsdWVOYW1l
fTtcbiI7CiAgICAgfQotICAgICRyZXN1bHQgLj0gIiAgICByZXR1cm4gTnVsbG9wdDtcbiI7Cisg
ICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7XG4iOwogICAgICRyZXN1bHQg
Lj0gIn1cblxuIjsKIAogICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gJGNsYXNzTmFtZSBjb252
ZXJ0RW51bWVyYXRpb248JGNsYXNzTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSlcbiI7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdWIgR2VuZXJhdGVFbnVtZXJhdGlvbkhlYWRl
ckNvbnRlbnQKICAgICBteSAkcmVzdWx0ID0gIiI7CiAgICAgJHJlc3VsdCAuPSAiI2lmICR7Y29u
ZGl0aW9uYWxTdHJpbmd9XG5cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICRyZXN1bHQg
Lj0gInRlbXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6
OkV4ZWNTdGF0ZSYsICRjbGFzc05hbWUpO1xuXG4iOwotICAgICRyZXN1bHQgLj0gInRlbXBsYXRl
PD4gT3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjwkY2xhc3NOYW1lPihKU0M6
OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7XG4iOworICAgICRyZXN1bHQgLj0gInRlbXBsYXRl
PD4gc3RkOjpvcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZUVudW1lcmF0aW9uPCRjbGFzc05hbWU+
KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTtcbiI7CiAgICAgJHJlc3VsdCAuPSAidGVt
cGxhdGU8PiAkY2xhc3NOYW1lIGNvbnZlcnRFbnVtZXJhdGlvbjwkY2xhc3NOYW1lPihKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7XG4iOwogICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4g
Y29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczwkY2xhc3NOYW1lPigpO1xuXG4i
OwogICAgICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAg
LTExMTgsNyArMTExOCw3IEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgIH0KICAgICBp
ZiAoJGRlZmF1bHRWYWx1ZSBlcSAibnVsbCIpIHsKICAgICAgICAgaWYgKCR0eXBlLT5pc1VuaW9u
KSB7Ci0gICAgICAgICAgICByZXR1cm4gIk51bGxvcHQiIGlmICR0eXBlLT5pc051bGxhYmxlOwor
ICAgICAgICAgICAgcmV0dXJuICJzdGQ6Om51bGxvcHQiIGlmICR0eXBlLT5pc051bGxhYmxlOwog
CiAgICAgICAgICAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUp
OwogICAgICAgICAgICAgcmV0dXJuICJjb252ZXJ0PCR7SURMVHlwZX0+KHN0YXRlLCBqc051bGwo
KSk7IjsKQEAgLTExMjYsNyArMTEyNiw3IEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAg
ICAgICByZXR1cm4gImpzTnVsbCgpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKICAgICAgICAg
cmV0dXJuICJudWxscHRyIiBpZiAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkg
fHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwogICAgICAgICByZXR1
cm4gIlN0cmluZygpIiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKLSAg
ICAgICAgcmV0dXJuICJOdWxsb3B0IjsKKyAgICAgICAgcmV0dXJuICJzdGQ6Om51bGxvcHQiOwog
ICAgIH0KICAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAiW10iKSB7CiAgICAgICAgIG15ICRuYXRp
dmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CkBAIC0zNDIzLDcgKzM0
MjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihj
ZWxsKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tSW5kZXhlZFNldHRlcn0p
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRl
cihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CkBAIC00NDE4LDcgKzQ0MTgsNyBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIG15ICRhcmd1bWVudExvb2t1
cE1ldGhvZCA9ICRhcmd1bWVudC0+aXNPcHRpb25hbCA/ICJhcmd1bWVudCIgOiAidW5jaGVja2Vk
QXJndW1lbnQiOwogCiAgICAgICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICFk
ZWZpbmVkKCRhcmd1bWVudC0+ZGVmYXVsdCkpIHsKLSAgICAgICAgICAgICAgICAkbmF0aXZlVHlw
ZSA9ICJPcHRpb25hbDwkY2xhc3NOYW1lPiI7CisgICAgICAgICAgICAgICAgJG5hdGl2ZVR5cGUg
PSAic3RkOjpvcHRpb25hbDwkY2xhc3NOYW1lPiI7CiAgICAgICAgICAgICAgICAgJG9wdGlvbmFs
VmFsdWUgPSAkbmFtZTsKICAgICAgICAgICAgICAgICAkZGVmaW5lT3B0aW9uYWxWYWx1ZSA9ICRu
YW1lOwogICAgICAgICAgICAgfQpAQCAtNDQ3Myw4ICs0NDczLDggQEAgc3ViIEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgJG91dGVyID0gInN0YXRlLT4kYXJndW1lbnRM
b29rdXBNZXRob2QoJGFyZ3VtZW50SW5kZXgpLmlzVW5kZWZpbmVkKCkgPyAkZGVmYXVsdFZhbHVl
IDogIjsKICAgICAgICAgICAgICAgICAkaW5uZXIgPSAic3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KCRhcmd1bWVudEluZGV4KSI7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXJndW1lbnQtPmlzT3B0
aW9uYWwgJiYgIWRlZmluZWQoJGFyZ3VtZW50LT5kZWZhdWx0KSkgewotICAgICAgICAgICAgICAg
ICMgVXNlIFdURjo6T3B0aW9uYWw8PigpIGZvciBvcHRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUg
bWlzc2luZyBvciB1bmRlZmluZWQgYW5kIHRoYXQgZG8gbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVl
IGluIHRoZSBJREwuCi0gICAgICAgICAgICAgICAgJG91dGVyID0gInN0YXRlLT4kYXJndW1lbnRM
b29rdXBNZXRob2QoJGFyZ3VtZW50SW5kZXgpLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDwkbmF0
aXZlVHlwZT4oKSA6ICI7CisgICAgICAgICAgICAgICAgIyBVc2Ugc3RkOjpvcHRpb25hbDw+KCkg
Zm9yIG9wdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGFyZSBtaXNzaW5nIG9yIHVuZGVmaW5lZCBhbmQg
dGhhdCBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgaW4gdGhlIElETC4KKyAgICAgICAgICAg
ICAgICAkb3V0ZXIgPSAic3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJbmRl
eCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8JG5hdGl2ZVR5cGU+KCkgOiAiOwogICAg
ICAgICAgICAgICAgICRpbm5lciA9ICJzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50
SW5kZXgpIjsKICAgICAgICAgICAgIH0gZWxzaWYgKCgkYXJndW1lbnQtPnR5cGUtPm5hbWUgZXEg
IkV2ZW50TGlzdGVuZXIiIHx8ICRhcmd1bWVudC0+dHlwZS0+bmFtZSBlcSAiWFBhdGhOU1Jlc29s
dmVyIikgJiYgKCRhcmd1bWVudC0+aXNPcHRpb25hbCB8fCAkdHlwZS0+aXNOdWxsYWJsZSkpIHsK
ICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDI0
NTBkZDk1YTA0MzNiNWNlNDkzMWRkNGMxMDIyMWFjMzc4YWJjM2IuLmJjMzZjNDIwNmIxNGViNWUx
ZGE2OTUxNWFiMTY1NmYxNTBiOTEyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtMTc0LDcg
KzE3NCw3IEBAIGJvb2wgSlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlCiB7CiAgICAgSlNGbG9hdDY0QXJyYXkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpvcHRp
b25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAgaWYg
KGluZGV4ICYmIGluZGV4LnZhbHVlKCkgPCBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPih0aGlz
T2JqZWN0LT5pbXBsKCkpLT5sZW5ndGgoKSkgewogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIHRoaXNPYmplY3QtPmdldEJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIEpTRmxvYXQ2NEFycmF5
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLAogewogICAgIEpTRmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2
NEFycmF5Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpbmRleCAmJiBpbmRleC52YWx1ZSgpIDwgc3Rh
dGljX2Nhc3Q8RmxvYXQ2NEFycmF5Kj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCkpIHsK
ICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHRoaXNPYmplY3QtPmdldEJ5SW5kZXgo
ZXhlYywgaW5kZXgudmFsdWUoKSksIERvbnREZWxldGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEpTRmxvYXQ2NEFycmF5OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbQogewogICAgIEpTRmxv
YXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
KyAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgdGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoZXhlYywgaW5kZXgu
dmFsdWUoKSwgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKaW5kZXggZTYxM2NhY2QyNDAzYmZhYWQ4NjI4OTBjMzBkZTViZmVhMzYyMzIzYS4u
N2E1YzAwMTQ5NjYzODdkZWM5MjQzOWFmNTRkNjAzZDE5NGY1MWExMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6
Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFAK
IHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2Jq
ZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7
Ci0gICAgT3B0aW9uYWw8dWludDMyX3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5TmFtZSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKTsKICAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25h
bEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKICAgICAg
ICAgdW5zaWduZWQgaW5kZXggPSBvcHRpb25hbEluZGV4LnZhbHVlKCk7CiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXMgPSBSZWFkT25seTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMTVlZjRlZDdjOTI0ZDRj
MzllYmE2ZDgwMThmODk0Mjg3NjU1M2FlZC4uYWVlMDllZjVjMmY0MzdhNzBiMzQ2NzlhYmQzOTBh
ODJkZDQwOGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB0ZW1wbGF0ZTw+IEpT
U3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RPYmo6
OkVudW1UeXBlCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0
YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBP
cHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVt
VHlwZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpv
cHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVt
VHlwZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmlu
Z1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUu
aXNFbXB0eSgpKQpAQCAtMTE2LDcgKzExNiw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEV4ZWNTCiAg
ICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMjsKICAgICBpZiAoc3Ry
aW5nVmFsdWUgPT0gIkVudW1WYWx1ZTMiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5
cGU6OkVudW1WYWx1ZTM7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtVHlwZSBjb252ZXJ0RW51bWVyYXRp
b248VGVzdE9iajo6RW51bVR5cGU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBA
IC0xNTIsNyArMTUyLDcgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9u
VG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0T2JqOjpPcHRpb25hbAogICAgIHJldHVybiBqc1N0
cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+
IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+
IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5n
KCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlLmlzRW1wdHkoKSkKQEAgLTE2Myw3ICsxNjMs
NyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RPYmo6Ok9wdGlvbmFsPihFeGVjUwogICAgICAgICByZXR1cm4gVGVzdE9iajo6T3B0
aW9uYWw6Ok9wdGlvbmFsVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiT3B0aW9uYWxW
YWx1ZTMiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUz
OwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRl
bXBsYXRlPD4gVGVzdE9iajo6T3B0aW9uYWwgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6Ok9w
dGlvbmFsPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMTk1LDE0ICsxOTUs
MTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3Rh
dGUmIHN0YXRlLCBBbHRlcm5hdGVFbnVtTmFtZQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZSgmc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7
CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVy
YXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVy
YXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUxIikKICAgICAgICAgcmV0dXJuIEFsdGVy
bmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUxOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZh
bHVlMiIpCiAgICAgICAgIHJldHVybiBBbHRlcm5hdGVFbnVtTmFtZTo6RW51bVZhbHVlMjsKLSAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0
ZTw+IEFsdGVybmF0ZUVudW1OYW1lIGNvbnZlcnRFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFt
ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTIzNCwxMiArMjM0LDEyIEBA
IHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoRXhlY1N0YXRlJiBz
dGF0ZSwgVGVzdE9iajo6RW51bUEgZW51CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZz
dGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0K
IAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxU
ZXN0T2JqOjpFbnVtQT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRl
PD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpFbnVtQT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0
cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFs
dWUgPT0gIkEiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bUE6OkE7Ci0gICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0
T2JqOjpFbnVtQSBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCkBAIC0yNzMsMTIgKzI3MywxMiBAQCB0ZW1wbGF0ZTw+IEpT
U3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIFRlc3RPYmo6
OkVudW1CIGVudQogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4g
T3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9u
YWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZh
bHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKICAg
ICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1COjpCOwotICAgIHJldHVybiBOdWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUIgY29u
dmVydEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1CPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQpAQCAtMzEyLDEyICszMTIsMTIgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVy
dEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0T2JqOjpFbnVtQyBlbnUKICAg
ICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RP
Ymo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVu
dW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
Zygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQyIpCiAgICAgICAgIHJldHVybiBU
ZXN0T2JqOjpFbnVtQzo6QzsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1DIGNvbnZlcnRFbnVtZXJhdGlv
bjxUZXN0T2JqOjpFbnVtQz4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTM1
MSwxNCArMzUxLDE0IEBAIHRlbXBsYXRlPD4gSlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRv
SlMoRXhlY1N0YXRlJiBzdGF0ZSwgVGVzdE9iajo6S2luZCBlbnVtCiAgICAgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKCZzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJz
ZUVudW1lcmF0aW9uPFRlc3RPYmo6OktpbmQ+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VFbnVtZXJh
dGlvbjxUZXN0T2JqOjpLaW5kPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewog
ICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlm
IChzdHJpbmdWYWx1ZSA9PSAicXVpY2siKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6
UXVpY2s7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJkZWFkIikKICAgICAgICAgcmV0dXJuIFRl
c3RPYmo6OktpbmQ6OkRlYWQ7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpLaW5kIGNvbnZlcnRFbnVtZXJhdGlv
bjxUZXN0T2JqOjpLaW5kPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMzkw
LDE0ICszOTAsMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9K
UyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0T2JqOjpTaXplIGVudW0KICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlv
blZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNl
RW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0
aW9uPFRlc3RPYmo6OlNpemU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYg
KHN0cmluZ1ZhbHVlID09ICJzbWFsbCIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpTaXplOjpT
bWFsbDsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIm11Y2gtbXVjaC1sYXJnZXIiKQogICAgICAg
ICByZXR1cm4gVGVzdE9iajo6U2l6ZTo6TXVjaE11Y2hMYXJnZXI7Ci0gICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpT
aXplIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQpAQCAtNDI5LDE0ICs0MjksMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyog
Y29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0T2JqOjpDb25maWRl
bmMKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFs
PFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5j
ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRp
b25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZp
ZGVuY2U+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJoaWdoIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7CiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJraW5kYS1sb3ciKQogICAgICAgICByZXR1cm4gVGVzdE9i
ajo6Q29uZmlkZW5jZTo6S2luZGFMb3c7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpDb25maWRlbmNlIGNvbnZl
cnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQpAQCAtNTU0LDcgKzU1NCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlv
bmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmCiAg
ICAgICAgIHJlc3VsdC5udWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMTG9uZz4+KHN0YXRlLCBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxz
ZQotICAgICAgICByZXN1bHQubnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQgPSBOdWxsb3B0Owor
ICAgICAgICByZXN1bHQubnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgSlNWYWx1ZSBudWxsYWJsZU5vZGVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNV
bmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUsICJudWxsYWJsZU5vZGUiKSk7CiAgICAgaWYgKCFudWxsYWJsZU5vZGVWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5udWxsYWJsZU5vZGUgPSBjb252ZXJ0PElETE51
bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+KHN0YXRlLCBudWxsYWJsZU5vZGVWYWx1ZSk7CkBA
IC01NzIsNyArNTcyLDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYKICAgICAgICAgcmVzdWx0
Lm51bGxhYmxlVW5pb25NZW1iZXIgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVuaW9uPElETExv
bmcsIElETEludGVyZmFjZTxOb2RlPj4+PihzdGF0ZSwgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVl
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0g
ZWxzZQotICAgICAgICByZXN1bHQubnVsbGFibGVVbmlvbk1lbWJlciA9IE51bGxvcHQ7CisgICAg
ICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uTWVtYmVyID0gc3RkOjpudWxsb3B0OwogICAgIEpTVmFs
dWUgcmVzdHJpY3RlZERvdWJsZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5l
ZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
InJlc3RyaWN0ZWREb3VibGUiKSk7CiAgICAgaWYgKCFyZXN0cmljdGVkRG91YmxlVmFsdWUuaXNV
bmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQucmVzdHJpY3RlZERvdWJsZSA9IGNvbnZlcnQ8
SURMRG91YmxlPihzdGF0ZSwgcmVzdHJpY3RlZERvdWJsZVZhbHVlKTsKQEAgLTE4MTYsNyArMTgx
Niw3IEBAIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJ
bmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChv
cHRpb25hbEluZGV4KSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gb3B0aW9uYWxJbmRleC52
YWx1ZSgpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gUmVhZE9ubHk7CkBAIC01MzY5
LDcgKzUzNjksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbgogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gZW51bUFyZ1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIE9wdGlvbmFsPFRl
c3RPYmo6OkVudW1UeXBlPiBlbnVtQXJnOworICAgIHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6RW51
bVR5cGU+IGVudW1Bcmc7CiAgICAgaWYgKCFlbnVtQXJnVmFsdWUuaXNVbmRlZmluZWQoKSkgewog
ICAgICAgICBlbnVtQXJnID0gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oKnN0
YXRlLCBlbnVtQXJnVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNTk5MSw3ICs1OTkxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXIKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IGF1dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxp
bnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1
dG8gb3B0ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhXVEZNb3ZlKG9wdCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MDMxLDcgKzYwMzEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uT3B0aW9uYQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
bm9uT3B0ID0gY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBv
cHQgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+
KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
LCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBvcHQg
PSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8aW50MzJf
dD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MSksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0
aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoV1RGTW92ZShub25PcHQpLCBXVEZN
b3ZlKG9wdCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC02MDUzLDkgKzYwNTMsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbm9uT3B0ID0gY29udmVydDxJRExMb25nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBvcHQxID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5k
ZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0MSA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVm
aW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBvcHQyID0gc3RhdGUtPmFyZ3VtZW50KDIpLmlzVW5k
ZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uOjpOb3JtYWwpOworICAgIGF1dG8gb3B0MiA9IHN0YXRlLT5hcmd1bWVudCgyKS5pc1VuZGVm
aW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgyKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29P
cHRpb25hbEFyZ3MoV1RGTW92ZShub25PcHQpLCBXVEZNb3ZlKG9wdDEpLCBXVEZNb3ZlKG9wdDIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjMwNyw3
ICs2MzA3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG8KICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQ2NF90PigpIDogY29udmVydDxJRExMb25nTG9u
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9u
Q29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKKyAgICBhdXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQ2NF90PigpIDogY29udmVydDxJ
RExMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJD
b252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsTG9uZ0xvbmcoV1RGTW92ZShudW1iZXIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNjM0Myw3ICs2MzQzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsVW4KICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8g
bnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDx1aW50
NjRfdD4oKSA6IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Tm9ybWFs
KTsKKyAgICBhdXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4oKSA6IGNvbnZlcnQ8SURMVW5zaWduZWRMb25nTG9uZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29u
ZmlndXJhdGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRM
b25nTG9uZyhXVEZNb3ZlKG51bWJlcikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC02Mzc5LDcgKzYzNzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
ZQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJh
eSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+KCkgOiBjb252ZXJ0PElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KCpzdGF0ZSwgc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBhdXRvIGFycmF5ID0gc3RhdGUtPmFyZ3Vt
ZW50KDApLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PigpIDog
Y29udmVydDxJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1v
dmUoYXJyYXkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNjQxNSw3ICs2NDE1LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm8KICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8Ym9vbD4oKSA6IGNvbnZlcnQ8SURMQm9vbGVh
bj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIGF1dG8gYiA9IHN0
YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxib29sPigpIDog
Y29udmVydDxJRExCb29sZWFuPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oV1RGTW92ZShiKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY1MjgsNyArNjUyOCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICBhdXRvIHJlY29yZCA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gTnVsbG9wdCA6IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMUmVjb3JkPElETERPTVN0cmlu
ZywgSURMTG9uZz4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
YXV0byByZWNvcmQgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6bnVs
bG9wdCA6IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMUmVjb3JkPElETERPTVN0cmluZywgSURMTG9u
Zz4+Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbFJlY29yZChXVEZNb3ZlKHJlY29yZCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02Nzg5LDcgKzY3ODksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMkNhbAogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gb2Jq
QXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8VGVzdE9iaj4+Pigqc3RhdGUs
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgW10oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0
T2JqIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgYXV0byBsb25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZp
bmVkKCkgPyBPcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3RhdGUsIHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9u
OjpOb3JtYWwpOworICAgIGF1dG8gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVm
aW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigqc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1
cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUob2JqQXJn
KSwgV1RGTW92ZShsb25nQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTcwOTgsNyArNzA5OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBvYmpBcmcgPSBjb252ZXJ0PElE
TE51bGxhYmxlPElETEludGVyZmFjZTxUZXN0T2JqPj4+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJvYmpBcmci
LCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwg
IlRlc3RPYmoiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb246Ok5vcm1hbCk7CisgICAgYXV0byBsb25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlz
VW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+
KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBJbnRlZ2VyQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb246Ok5vcm1hbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9u
YWxQYXJhbWV0ZXIoV1RGTW92ZShvYmpBcmcpLCBXVEZNb3ZlKGxvbmdBcmcpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzUwNSw3ICs3NTA1LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoT3B0aW9uYWwKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7Ci0gICAgYXV0byBhcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRl
ZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRp
b246Ok5vcm1hbCk7CisgICAgYXV0byBhcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWQoKSA/IHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJh
dGlvbjo6Tm9ybWFsKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihU
ZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFyZykpKSk7CiB9CkBAIC04
MDYwLDcgKzgwNjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uVwogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25m
aWd1cmF0aW9uOjpOb3JtYWwpOworICAgIGF1dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZCgpID8gc3RkOjpvcHRpb25hbDxpbnQzMl90PigpIDogY29udmVydDxJRExMb25nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25m
aWd1cmF0aW9uOjpOb3JtYWwpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC50ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlv
bmFsSW50QXJndW1lbnQoV1RGTW92ZShhKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBjNDRiMWU0ZjcxYmY5
MzMzMjQ4MDY4ZDdiZDcxYmU0NGJmYzMxYjJjLi4yZjFkZjc1MjVmZjhlYmU0NTRlMTZjYWIyMDYz
ZDE3NzNmYjg1ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0xMDMsMTkgKzEwMywxOSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE9iaj4gewogfTsKIHRlbXBsYXRl
PD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYs
IFRlc3RPYmo6OkVudW1UeXBlKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVt
VHlwZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1U
eXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1UeXBlIGNvbnZlcnRFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUp
OwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RP
Ymo6OkVudW1UeXBlPigpOwogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVt
ZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBUZXN0T2JqOjpPcHRpb25hbCk7CiAKLXRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9i
ajo6T3B0aW9uYWw+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4g
c3RkOjpvcHRpb25hbDxUZXN0T2JqOjpPcHRpb25hbD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpPcHRpb25hbD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBU
ZXN0T2JqOjpPcHRpb25hbCBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpPcHRpb25hbD4oKTsKIAogdGVtcGxhdGU8
PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwg
QWx0ZXJuYXRlRW51bU5hbWUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVudW1O
YW1lPiBwYXJzZUVudW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8QWx0ZXJuYXRlRW51bU5h
bWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+KEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gQWx0ZXJuYXRlRW51bU5hbWUgY29udmVydEVudW1l
cmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJu
YXRlRW51bU5hbWU+KCk7CiAKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IGNo
YXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCk7CiAKIHRl
bXBsYXRlPD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNT
dGF0ZSYsIFRlc3RPYmo6OkVudW1BKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpF
bnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1BPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1BIGNvbnZlcnRFbnVtZXJhdGlvbjxUZXN0
T2JqOjpFbnVtQT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBj
b25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1BPigpOwog
CkBAIC0xMzMsNyArMTMzLDcgQEAgdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1BPigpOwogCiB0ZW1wbGF0ZTw+IEpTQzo6SlNTdHJp
bmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBUZXN0T2JqOjpFbnVt
Qik7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRp
b248VGVzdE9iajo6RW51bUI+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBs
YXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpFbnVtQj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0
T2JqOjpFbnVtQj4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBU
ZXN0T2JqOjpFbnVtQiBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRF
bnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQj4oKTsKIApAQCAtMTQzLDcgKzE0Myw3IEBA
IHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2Jq
OjpFbnVtQj4oKTsKIAogdGVtcGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRp
b25Ub0pTKEpTQzo6RXhlY1N0YXRlJiwgVGVzdE9iajo6RW51bUMpOwogCi10ZW1wbGF0ZTw+IE9w
dGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8
VGVzdE9iajo6RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUMgY29udmVy
dEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1DPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVz
dE9iajo6RW51bUM+KCk7CiAKQEAgLTE1MSwxOSArMTUxLDE5IEBAIHRlbXBsYXRlPD4gY29uc3Qg
Y2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQz4oKTsKIAogdGVt
cGxhdGU8PiBKU0M6OkpTU3RyaW5nKiBjb252ZXJ0RW51bWVyYXRpb25Ub0pTKEpTQzo6RXhlY1N0
YXRlJiwgVGVzdE9iajo6S2luZCk7CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2lu
ZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IHN0ZDo6b3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VF
bnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OktpbmQgY29udmVydEVudW1lcmF0aW9uPFRlc3RPYmo6Oktp
bmQ+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRlbXBsYXRlPD4gY29uc3QgY2hh
ciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpLaW5kPigpOwogCiB0ZW1wbGF0
ZTw+IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUm
LCBUZXN0T2JqOjpTaXplKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpTaXplPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRl
bXBsYXRlPD4gVGVzdE9iajo6U2l6ZSBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6U2l6ZT4o
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OlNpemU+KCk7CiAKIHRlbXBsYXRlPD4g
SlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYsIFRl
c3RPYmo6OkNvbmZpZGVuY2UpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZp
ZGVuY2U+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4oSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RPYmo6OkNv
bmZpZGVuY2U+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4oSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBUZXN0T2JqOjpDb25maWRlbmNlIGNv
bnZlcnRFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25maWRlbmNlPihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdE9iajo6Q29uZmlkZW5jZT4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFs
b25lRGljdGlvbmFyeS5jcHAKaW5kZXggMWEyM2U5M2EwNGMwODViNTI3ZmVkM2ZmODRkNGYxY2Fh
NGU5N2Q4My4uNjhhZmJkNjlhNGJkYWQ3MWM5Y2MwZDQ5NGYzYTY3MTgzN2IyMmU4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5k
YWxvbmVEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCkBAIC00MywxNCArNDMsMTQg
QEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhFeGVjU3RhdGUm
IHN0YXRlLCBUZXN0U3RhbmRhbG9uZURpY3QKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
JnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwog
fQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUlu
U3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25l
RGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RTdGFuZGFs
b25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25h
cnlGaWxlPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3Ry
aW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1
ZSA9PSAiZW51bVZhbHVlMSIpCiAgICAgICAgIHJldHVybiBUZXN0U3RhbmRhbG9uZURpY3Rpb25h
cnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZTo6RW51bVZhbHVlMTsKICAgICBpZiAo
c3RyaW5nVmFsdWUgPT0gImVudW1WYWx1ZTIiKQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU6OkVudW1WYWx1ZTI7
Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVt
cGxhdGU8PiBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9u
YXJ5RmlsZSBjb252ZXJ0RW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVt
SW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5oCmluZGV4IGZhZjExMDg1
ODljYjNmNjA5ZjIwMTdmZGFkMTc5MDU0MDg0MTUzNDEuLjMyYTgxYjY2MjI3ZDY2NmEyOGMwYWQ2
NmIzZTRmM2M0YTcwYTUxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFy
eS5oCkBAIC0zMSw3ICszMSw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1lIGNvbnZl
cnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNDOjpFeGVjU3RhCiAKIHRlbXBsYXRl
PD4gSlNDOjpKU1N0cmluZyogY29udmVydEVudW1lcmF0aW9uVG9KUyhKU0M6OkV4ZWNTdGF0ZSYs
IFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxl
KTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1J
blN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9u
ZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4oSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTVmFsdWUpOwordGVtcGxhdGU8PiBzdGQ6Om9wdGlvbmFsPFRlc3RTdGFuZGFs
b25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25h
cnlGaWxlPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTw+IFRlc3RT
dGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlIGNvbnZl
cnRFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVE
aWN0aW9uYXJ5RmlsZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8
PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRGlj
dGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9u
ZUVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCmluZGV4IGQ0Mzc0NjIwMmYyOTBlODQx
YTc1MzNhYjBkYWQxODUwZGM2YzI4MTEuLmExODg2YTdkMTkzNWM2OTVkNzc0OWU1MTcyZjlkMjlj
M2MyODFiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3Bw
CkBAIC00MywxNCArNDMsMTQgQEAgdGVtcGxhdGU8PiBKU1N0cmluZyogY29udmVydEVudW1lcmF0
aW9uVG9KUyhFeGVjU3RhdGUmIHN0YXRlLCBUZXN0U3RhbmRhbG9uZUVudW0KICAgICByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVt
ZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25l
RW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPD4gc3RkOjpvcHRpb25h
bDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFs
b25lRW51bWVyYXRpb24+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
YXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0
cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUxIikKICAgICAgICAgcmV0dXJuIFRlc3RTdGFuZGFsb25l
RW51bWVyYXRpb246OkVudW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJlbnVtVmFs
dWUyIikKICAgICAgICAgcmV0dXJuIFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb246OkVudW1WYWx1
ZTI7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dGVtcGxhdGU8PiBUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uIGNvbnZlcnRFbnVtZXJhdGlvbjxU
ZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5oCmluZGV4IDhhYWI4OWI5
NDNlNzdiOTYxYjMyYTE3ZDY4ZWMwOTMyNGMzYjhjNTIuLjgwNjIyYWQzMDNkZmQ0YzdhNDJkOTFl
Y2MzYWE2MDM1ZDk3MmIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0
aW9uLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTw+
IEpTQzo6SlNTdHJpbmcqIGNvbnZlcnRFbnVtZXJhdGlvblRvSlMoSlNDOjpFeGVjU3RhdGUmLCBU
ZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0U3Rh
bmRhbG9uZUVudW1lcmF0aW9uPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gc3RkOjpv
cHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RT
dGFuZGFsb25lRW51bWVyYXRpb24+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIHRl
bXBsYXRlPD4gVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbiBjb252ZXJ0RW51bWVyYXRpb248VGVz
dFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwog
dGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFu
ZGFsb25lRW51bWVyYXRpb24+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDliNDVlZjA4
ZjVkNDE3ZGM0ZjljN2E2YmZmMzcxNWQyMzczODJjOTcuLmQwZTNkY2Q1MzU5Y2M1MTdhNTJjYmFl
YTI4ZGZmMjE4OGI3OGE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNTI4LDcgKzUyOCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uU2V0U2hhZG93Q2FsbGVyCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIGNvbG9yID0gc3RhdGUtPmFyZ3Vt
ZW50KDMpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgzKSwgU3RyaW5nQ29udmVyc2lvbkNvbmZp
Z3VyYXRpb246Ok5vcm1hbCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIGFscGhhID0gc3RhdGUtPmFyZ3VtZW50KDQpLmlz
VW5kZWZpbmVkKCkgPyBPcHRpb25hbDxmbG9hdD4oKSA6IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVk
RmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKKyAgICBhdXRvIGFs
cGhhID0gc3RhdGUtPmFyZ3VtZW50KDQpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPGZs
b2F0PigpIDogY29udmVydDxJRExVbnJlc3RyaWN0ZWRGbG9hdD4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoNCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaW1wbC5zZXRTaGFkb3coV1RGTW92ZSh3aWR0aCksIFdU
Rk1vdmUoaGVpZ2h0KSwgV1RGTW92ZShibHVyKSwgV1RGTW92ZShjb2xvciksIFdURk1vdmUoYWxw
aGEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjY5
LDcgKzY2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcENhCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBhcmcxID0gY29udmVydDxJRExVbnNpZ25lZExvbmdMb25nPigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgSW50ZWdlckNvbnZlcnNpb25Db25m
aWd1cmF0aW9uOjpDbGFtcCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBhdXRvIGFyZzIgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPHVpbnQ2NF90PigpIDogY29udmVydDxJRExVbnNpZ25lZExv
bmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSwgSW50ZWdlckNvbnZl
cnNpb25Db25maWd1cmF0aW9uOjpDbGFtcCk7CisgICAgYXV0byBhcmcyID0gc3RhdGUtPmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PigpIDogY29udmVy
dDxJRExVbnNpZ25lZExvbmdMb25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgx
KSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpDbGFtcCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpbXBsLmZ1bmNX
aXRoQ2xhbXAoV1RGTW92ZShhcmcxKSwgV1RGTW92ZShhcmcyKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcAppbmRleCBkMzBhNTg1YmIzMzU0ZWM4ZTQyZDRlOGZhZTE4ZmRlYzUzNTU5ZDJkLi5i
ODc4ODcxOGM1ODEzYTFhY2QyYzY2Y2RjZjczYzdhY2U0MjhjN2EwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgUnVudGltZUFy
cmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSk7CiAgICAg
aWYgKGluZGV4ICYmIGluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewog
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnREZWxldGUgfCBEb250RW51bSwK
ICAgICAgICAgICAgIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+dmFsdWVBdChleGVj
LCBpbmRleC52YWx1ZSgpKSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAoT3B0aW9u
YWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkK
ICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENvbmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVB
dChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAgICAgCiAgICAgcmV0dXJuIEpTT2JqZWN0
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcAppbmRl
eCAyZmNjMzExOTljYTg1YWJiODUwYTg0ZDEzMzBkZGVjZTRkNDc4ZTAzLi4yMmRjZmNiY2RhZTk1
YmIxMWM4ZmI3YmY2OTljZTlkZTNlMjI4MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKQEAgLTQ3LDE3ICs0NywxNyBAQCBDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkoKQogICAgIHBsYXRm
b3JtUmVnaXN0ZXJBbGdvcml0aG1zKCk7CiB9CiAKLU9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3N0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTG9jaz4gbG9j
ayhyZWdpc3RyeU11dGV4KTsKIAogICAgIC8vIEZJWE1FOiBIb3cgaXMgaXQgaGVscGZ1bCB0byBj
YWxsIGlzb2xhdGVkQ29weSBvbiB0aGUgYXJndW1lbnQgdG8gZmluZD8KICAgICBhdXRvIGlkZW50
aWZpZXIgPSBtX2lkZW50aWZpZXJzLmZpbmQobmFtZS5pc29sYXRlZENvcHkoKSk7CiAgICAgaWYg
KGlkZW50aWZpZXIgPT0gbV9pZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaWRlbnRpZmll
ci0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1S
ZWdpc3RyeS5oCmluZGV4IDNkMTU0NDU3MjBkNDUyYmZiYmJjMjMzNTlhN2Y2ZWIzNWRlOTNhZDEu
Ljc1YTljMmVhYmZkMjZiYmNhZjcyZjkyMjhjZTM0YWI3NTczOWNjYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkmIHNpbmdsZXRvbigpOwogCi0gICAgT3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IGlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJik7CiAgICAgU3RyaW5nIG5hbWUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7CiAK
ICAgICBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleVNlcmlhbGl6YXRpb24u
aAppbmRleCBjMzYzNjJiYTEyYzBmMGQyNDg0NDg5NzA5NDUyOTk3M2YzMTI4NDlmLi45MjYzODhm
YmVkOWY5ODljYmFlODIzYjhkMzg1YTJmN2E5Y2RiNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvS2V5U2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9DcnlwdG9LZXlTZXJpYWxpemF0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3Mg
Q3J5cHRvS2V5U2VyaWFsaXphdGlvbiB7CiAgICAgdmlydHVhbCB+Q3J5cHRvS2V5U2VyaWFsaXph
dGlvbigpIHsgfQogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBzdWdnZXN0ZWQgYWxnb3JpdGht
IHdhcyBub3QgY29tcGF0aWJsZSB3aXRoIG9uZSBzdG9yZWQgaW4gdGhlIHNlcmlhbGl6YXRpb24u
Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVBbGdv
cml0aG0oQ3J5cHRvQWxnb3JpdGhtKiwgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bVBhaXI+IHJlY29uY2lsZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0qLCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCopIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZWNvbmNpbGVVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAmKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlY29uY2lsZUV4dHJhY3RhYmxlKGJvb2wmKSBjb25zdCA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vSnNvbldlYktleS5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0pzb25XZWJLZXkuaAppbmRleCAyMjNlZTQ4ZDk3Mzg5YjlhMGUzMDM2Mzg4YmRmMTk5
Mjk1Mjg0MmIxLi5hNTM1ODkxNjcxN2E3ZDdiMTJjNjkyYmRiM2UxMGUyYWZiNGQxYjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vSnNvbldlYktleS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9Kc29uV2ViS2V5LmgKQEAgLTM1LDI3ICszNSwyNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBKc29uV2ViS2V5IHsKICAgICBTdHJpbmcga3R5OwotICAgIE9w
dGlvbmFsPFN0cmluZz4gdXNlOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1c2U7CiAgICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1lcmdpbmcga2V5X29wcyBhbmQgdXNhZ2VzLgotICAgIE9wdGlv
bmFsPFZlY3RvcjxDcnlwdG9LZXlVc2FnZT4+IGtleV9vcHM7CisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8Q3J5cHRvS2V5VXNhZ2U+PiBrZXlfb3BzOwogICAgIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlczsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGFsZzsKLQotICAgIE9wdGlvbmFsPGJvb2w+
IGV4dDsKLQotICAgIE9wdGlvbmFsPFN0cmluZz4gY3J2OwotICAgIE9wdGlvbmFsPFN0cmluZz4g
eDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHk7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBkOwotICAg
IE9wdGlvbmFsPFN0cmluZz4gbjsKLSAgICBPcHRpb25hbDxTdHJpbmc+IGU7Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiBwOwotICAgIE9wdGlvbmFsPFN0cmluZz4gcTsKLSAgICBPcHRpb25hbDxTdHJp
bmc+IGRwOwotICAgIE9wdGlvbmFsPFN0cmluZz4gZHE7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBx
aTsKLSAgICBPcHRpb25hbDxWZWN0b3I8UnNhT3RoZXJQcmltZXNJbmZvPj4gb3RoOwotICAgIE9w
dGlvbmFsPFN0cmluZz4gazsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYWxnOworCisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBleHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3J2
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB4OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiB5OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkOworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBuOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlOworICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBwOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBxOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBkcDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZHE7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHFpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJzYU90aGVyUHJp
bWVzSW5mbz4+IG90aDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gazsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKaW5kZXggNmI4ZmVmZDcyNmU3
ODExNGE1NjhlMDhjNzIyOGEzN2ExN2YwZTFlZS4uNWQ5YjBlN2I4MDQwODE5NTA3YjQ3ZDcxOGU5
YzE5NjcyNTc5Y2I5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86Oktl
eUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJgogICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6
OmltcG9ydFJhdyhwYXJhbWV0ZXJzLT5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rv
cjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6SndrOiB7Ci0gICAgICAgIGF1dG8g
Y2hlY2tBbGdDYWxsYmFjayA9IFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIGFsZykgLT4gYm9vbCB7CisgICAgICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKHNp
emVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsK
ICAgICAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0b0tl
eUFFUzo6c19sZW5ndGgxMjg6CiAgICAgICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxnLnZh
bHVlKCkgPT0gQUxHMTI4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAKaW5kZXggYjY3NWUwNWEyMDE2YjEy
MTM0MzhjMDkwNDlkYjk5YTNhZDBjYzdhOS4uMzVjN2E3YjY2MzRkZDc0NjI2NjRjNTlmNzEyMmRh
NzcwNmMxMGViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtQUVTX0tXOjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQg
Zm9ybWF0LCBLZXlEYXRhJiYKICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRS
YXcocGFyYW1ldGVycy0+aWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhf
dD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6Okp3azogewotICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJzLT5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6
Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgW10oc2l6ZV90IGxl
bmd0aCwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29sIHsKKyAgICAgICAgcmVz
dWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRKd2socGFyYW1ldGVycy0+aWRlbnRpZmllciwgV1RG
TW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFtd
KHNpemVfdCBsZW5ndGgsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYgYWxnKSAtPiBib29s
IHsKICAgICAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAgICAgICBjYXNlIENyeXB0
b0tleUFFUzo6c19sZW5ndGgxMjg6CiAgICAgICAgICAgICAgICAgcmV0dXJuICFhbGcgfHwgYWxn
LnZhbHVlKCkgPT0gQUxHMTI4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCBiYzQ4NmQ5N2Y0ODI4MGZk
NTUwNGRlZGJiODZkZTM5MTAzNjY1NTAwLi5lNDZiZGRmZTM4MDMwMGNkMzFkMTlmZDAyZjIyOGRi
YWY4Mzc2MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQg
PSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVPcigw
KSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMu
bGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0xMDYsMTAgKzEwNiwx
MCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86Oktl
eUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYQogICAgIFJlZlB0cjxDcnlwdG9LZXlITUFDPiBy
ZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5
Rm9ybWF0OjpSYXc6Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydFJhdyho
bWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVPcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50
aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRSYXco
aG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRl
bnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpL
ZXlGb3JtYXQ6Okp3azogewotICAgICAgICBhdXRvIGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGFsZykg
LT4gYm9vbCB7CisgICAgICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBhbGcpIC0+
IGJvb2wgewogICAgICAgICAgICAgc3dpdGNoIChoYXNoKSB7CiAgICAgICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgogICAgICAgICAgICAgICAgIHJldHVybiAh
YWxnIHx8IGFsZy52YWx1ZSgpID09IEFMRzE7CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0
LCBLZXlEYXRhJiYgZGEKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfTsKLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0SndrKGht
YWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOworICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlITUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBo
bWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5
PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3Yx
XzUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5jcHAKaW5kZXggNWFmNTVlOTcxZmM1ZWE2MjU5OTRkZDNjNGUxYWM4
NzM2YzE0ODZlNS4uM2Q5OGVlNTJhZDkyNmNhNGQ0NmMzYjg5NDYyZjBjODcyNDBiZDg5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKQEAgLTExOCw3ICsxMTgsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmltcG9ydEtleShTdWJ0bGVD
cnlwdG86OktleUZvcm1hdCBmb3JtYXQsCiAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhE
YXRhRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3Vs
dCA9IENyeXB0b0tleVJTQTo6aW1wb3J0SndrKHBhcmFtZXRlcnMtPmlkZW50aWZpZXIsIE51bGxv
cHQsIFdURk1vdmUoa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9
IENyeXB0b0tleVJTQTo6aW1wb3J0SndrKHBhcmFtZXRlcnMtPmlkZW50aWZpZXIsIHN0ZDo6bnVs
bG9wdCwgV1RGTW92ZShrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcAppbmRleCBlZGRhODFlYTE3
YmE3Mzk3ZGJmZDU5NjgzNDE5NmQ2YzU4ZWMyOWZlLi42NmFhZjM0NzE0NGQ4YmQ5MDYwMDc1YmJi
ZmM0ZmIwZTdkMDZhOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
c3RhdGljIGludCBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBoYXNoRnVuY3Rpb24pCiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3Jp
dGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSkKIHsKICAgICBzaXplX3QgZGlnZXN0TGVuZ3RoID0gZ2NyeV9tYWNfZ2V0X2FsZ29f
bWFjbGVuKGFsZ29yaXRobSk7CiAgICAgY29uc3Qgdm9pZCoga2V5RGF0YSA9IGtleS5kYXRhKCkg
PyBrZXkuZGF0YSgpIDogcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oIiIpOwpAQCAt
OTEsNyArOTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVT
aWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPAogICAgICAgICBnY3J5X21hY19j
bG9zZShoZCk7CiAKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV1RGTW92ZShzaWduYXR1
cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
QUVTLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAppbmRleCAw
ZDdlYmQ5ZmFmYjUxOWI2NTcyMTdmY2ZiMTgzNWIzNWVhODA4MjdhLi5jMDI3NjVkNzUyNDAxMjMy
YmRiZTYwMjUwM2NmMDJmYTA0N2ZiNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8va2V5cy9DcnlwdG9LZXlBRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlBRVMuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBDcnlwdG9LZXlBRVMgZmluYWwg
OiBwdWJsaWMgQ3J5cHRvS2V5IHsKIAogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5QUVTPiBn
ZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzaXplX3QgbGVuZ3RoQml0cywgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogICAgIHN0YXRpYyBSZWZQdHI8
Q3J5cHRvS2V5QUVTPiBpbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgVmVjdG9y
PHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXApOwotICAgIHVzaW5nIENoZWNrQWxnQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPGJvb2woc2l6
ZV90LCBjb25zdCBPcHRpb25hbDxTdHJpbmc+Jik+OworICAgIHVzaW5nIENoZWNrQWxnQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPGJvb2woc2l6ZV90LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4mKT47CiAgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlBRVM+IGltcG9ydEp3ayhDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyLCBKc29uV2ViS2V5JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwLCBDaGVja0FsZ0NhbGxiYWNrJiYpOwogCiAgICAgQ3J5cHRvS2V5Q2xh
c3Mga2V5Q2xhc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDcnlwdG9LZXlDbGFzczo6QUVTOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgKaW5kZXggNzFhZDMw
NTA1OGQyMTExNjdkYTUwZjUzODllNzg0ZjgzM2ZlYTg3OC4uY2FjYmNkN2YzYjY2YjNiNGY5NThl
YTAzMGI5MmNjOGE5M2VkNWQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5SE1BQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleUhNQUMuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBDcnlwdG9LZXlITUFDIGZpbmFsIDog
cHVibGljIENyeXB0b0tleSB7CiAKICAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleUhNQUM+IGdl
bmVyYXRlKHNpemVfdCBsZW5ndGhCaXRzLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAgICBzdGF0aWMgUmVm
UHRyPENyeXB0b0tleUhNQUM+IGltcG9ydFJhdyhzaXplX3QgbGVuZ3RoQml0cywgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7Ci0gICAgdXNpbmcgQ2hlY2tBbGdDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248Ym9vbChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBjb25z
dCBPcHRpb25hbDxTdHJpbmc+Jik+OworICAgIHVzaW5nIENoZWNrQWxnQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPGJvb2woQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTdHJpbmc+Jik+OwogICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4gaW1wb3J0
SndrKHNpemVfdCBsZW5ndGhCaXRzLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIEpz
b25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIENoZWNr
QWxnQ2FsbGJhY2smJik7CiAKICAgICBDcnlwdG9LZXlDbGFzcyBrZXlDbGFzcygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIENyeXB0b0tleUNsYXNzOjpITUFDOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcAppbmRleCA1OTRjNmFmOTBlMmNhODNhMWZmZmQ1MDJl
ODM3YTc3ZDczMDRhMzhkLi4yZDMyZWU4YjAwNmU0NzI5MDg5M2IxZWY0ZmRiMjQ4NjEyN2FmZWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29y
aXRobSwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgSnNvbldlYktl
eSYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
cykKK1JlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0SndrKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+IGhhc2gsIEpzb25XZWJLZXkmJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgaWYgKGtleURhdGEua3R5ICE9
ICJSU0EiKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU3LDggKzU3LDggQEAgUmVmUHRy
PENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBhbGdvcml0aG0KICAgICBpZiAoIWtleURhdGEuZCkgewogICAgICAgICAvLyBpbXBv
cnQgcHVibGljIGtleQogICAgICAgICBhdXRvIHB1YmxpY0tleUNvbXBvbmVudHMgPSBDcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKFdURk1vdmUobW9kdWx1cyksIFdURk1v
dmUoZXhwb25lbnQpKTsKLSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkg
ZWZmZWN0IGlmIGhhc2ggaXMgTnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6
Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xKSwgISFoYXNoLCAqcHVibGljS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CisgICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEg
aXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBo
YXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRl
KGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MSksICEhaGFzaCwgKnB1YmxpY0tleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwog
ICAgIH0KIAogICAgIC8vIGltcG9ydCBwcml2YXRlIGtleQpAQCAtNjcsOCArNjcsOCBAQCBSZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGFsZ29yaXRobQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWtl
eURhdGEucCAmJiAha2V5RGF0YS5xICYmICFrZXlEYXRhLmRwICYmICFrZXlEYXRhLmRwICYmICFr
ZXlEYXRhLnFpKSB7CiAgICAgICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZShXVEZNb3ZlKG1vZHVsdXMpLCBXVEZN
b3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpKTsKLSAgICAgICAgLy8gTm90
aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xk
ZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgTnVsbG9wdC4KLSAg
ICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9y
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNv
bXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICAvLyBOb3RpY2U6IENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hv
dWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCisgICAgICAg
IHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9u
ZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgfQogCiAgICAgaWYgKCFrZXlEYXRhLnAg
fHwgIWtleURhdGEucSB8fCAha2V5RGF0YS5kcCB8fCAha2V5RGF0YS5kcSB8fCAha2V5RGF0YS5x
aSkKQEAgLTg3LDggKzg3LDggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0KICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKCFrZXlEYXRhLm90aCkgewogICAgICAgICBhdXRvIHByaXZh
dGVLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZh
dGVXaXRoQWRkaXRpb25hbERhdGEoV1RGTW92ZShtb2R1bHVzKSwgV1RGTW92ZShleHBvbmVudCks
IFdURk1vdmUocHJpdmF0ZUV4cG9uZW50KSwgV1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1v
dmUoc2Vjb25kUHJpbWVJbmZvKSwgeyB9KTsKLSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBu
b3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgTnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENy
eXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpOworICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFu
eSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCisgICAgICAgIHJldHVybiBDcnlwdG9L
ZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CiAgICAgfQogCiAgICAgVmVjdG9yPENyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzOjpQcmltZUluZm8+IG90aGVyUHJpbWVJbmZvczsKQEAgLTEwNCw4ICsxMDQsOCBAQCBSZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGFsZ29yaXRobQogICAgIH0KIAogICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVu
dHMgPSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlv
bmFsRGF0YShXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2
YXRlRXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmlt
ZUluZm8pLCBXVEZNb3ZlKG90aGVyUHJpbWVJbmZvcykpOwotICAgIC8vIE5vdGljZTogQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91
bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIE51bGxvcHQuCi0gICAgcmV0dXJuIENy
eXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpOworICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVm
ZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpj
cmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMpOwogfQogCiBKc29uV2ViS2V5IENyeXB0b0tleVJTQTo6ZXhwb3J0SndrKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKaW5kZXggODA2MjEwMTQ3Y2Ew
YmVhOWFhYWI2MDdhZGZiZGIzMTY5N2Y4MzkwNy4uNmFlZTczNTAwYTZkMjE0NDdiNjQ0M2RiYjk3
YjYyYzgzNzYyOWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5UlNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNB
LmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBjbGFzcyBDcnlwdG9LZXlSU0EgZmluYWwgOiBwdWJsaWMg
Q3J5cHRvS2V5IHsKICAgICB1c2luZyBLZXlQYWlyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoQ3J5cHRvS2V5UGFpciYpPjsKICAgICB1c2luZyBWb2lkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT47CiAgICAgc3RhdGljIHZvaWQgZ2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNo
LCB1bnNpZ25lZCBtb2R1bHVzTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4
cG9uZW50LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5UGFpckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwotICAgIHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBpbXBvcnRKd2soQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cj4gaGFzaCwgSnNvbldlYktleSYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCk7CisgICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlSU0E+IGltcG9ydEp3ayhDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI+IGhhc2gsIEpzb25XZWJLZXkmJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXApOwogCiAgICAgUGxhdGZvcm1SU0FLZXkgcGxhdGZvcm1LZXkoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtS2V5OyB9CiAgICAgSnNvbldlYktleSBleHBvcnRKd2soKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRp
b25SYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXph
dGlvblJhdy5jcHAKaW5kZXggZGIyNzRmM2Y0MjM3MThhM2JhMWM1NGMxZjA5ZTQzMmQ0OTY3YWQz
MS4uNzY1ZTFlZTc1ZThjYmZiOGE3MjJmMjJiNTViNjViOGY2OGY2ZDc0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJh
dy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdzo6fkNyeXB0
b0tleVNlcmlhbGl6YXRpb25SYXcoKQogewogfQogCi1PcHRpb25hbDxDcnlwdG9BbGdvcml0aG1Q
YWlyPiBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpyZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtKiBhbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
KiBwYXJhbWV0ZXJzKSBjb25zdAorc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBD
cnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3OjpyZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3Jp
dGhtKiBhbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKiBwYXJh
bWV0ZXJzKSBjb25zdAogewogICAgIHJldHVybiBDcnlwdG9BbGdvcml0aG1QYWlyIHsgYWxnb3Jp
dGhtLCBwYXJhbWV0ZXJzIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmgKaW5kZXggOTdjMDhkMjZiYjlkOTJiYzUy
YjM5MWUzZDJkZmExMDJjNjgyZWYwMS4uNzVkZDRlNTc4ZDMyMWQ2Y2QzYTIyYjRiNzNkMTljMDNk
MGM4ZjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
U2VyaWFsaXphdGlvblJhdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleVNlcmlhbGl6YXRpb25SYXcuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uUmF3IGZpbmFsIDogcHVibGljIENyeXB0b0tleVNlcmlhbGl6YXRpb24gewog
cHJpdmF0ZToKICAgICBDcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3KGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmKTsKIAotICAgIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2ls
ZUFsZ29yaXRobShDcnlwdG9BbGdvcml0aG0qLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCopIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3Jp
dGhtUGFpcj4gcmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSosIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnNEZXByZWNhdGVkKikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJl
Y29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZUJpdG1hcCYpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgcmVjb25jaWxlRXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAK
aW5kZXggY2QzYjBjYzM2ZGE1MzA1ZTc3MGU0MWEwNzhkYTQ1MDI4ZGJmMjZiMy4uZmI0YzFiM2Rh
N2MxYjQ0NzdmNGM5YTg4YTg5YWQxYjMxNDY5YmZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCkBAIC0zNiw3ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29y
aXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGhhc2hGdW5jdGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4gY29t
bW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5j
dGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBPcHRpb25h
bDxDQ0htYWNBbGdvcml0aG0+IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgog
ICAgICAgICByZXR1cm4ga0NDSG1hY0FsZ1NIQTUxMjsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggYTM0NjIyN2FjMTIzZjFlYjU3
MDYyNDRmYTdiODhjZjVlODhhYTQ1MC4uMmU5NWM4NGQyMDhmM2ZlMTk5OTc4ZGE5ZDkxYTE2OGUw
NzRlM2JkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgT3B0aW9uYWw8Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBoYXNoRnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChoYXNoRnVuY3Rpb24pIHsKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgpAQCAtNTAsNyArNTAsNyBAQCBpbmxp
bmUgT3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRo
bShDcnlwdG9BbGdvcml0aG1JZAogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzUxMjoKICAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEy
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oCmlu
ZGV4IDA5OTc0NzJkNDNiOGE3ZjJjYjgzNDI3YTIzODk5MmU5MWEyZWUwMDUuLmU0YmZmNjUwMGU0
MTkxYmNlNDU1ZDZlYWMxYmFkNzE3MzQ1YjM1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFy
YW1zLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIHsKICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgbWVyZ2luZyBoYXNoIGFuZCBoYXNoSWRlbnRpZmllci4KICAgICBKU0M6OkpT
VmFsdWUgaGFzaDsKICAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hJZGVudGlmaWVy
OwotICAgIE9wdGlvbmFsPHVuc2lnbmVkIGxvbmc+IGxlbmd0aDsKKyAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkIGxvbmc+IGxlbmd0aDsKIAogICAgIENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIENsYXNzOjpIbWFjS2V5UGFyYW1zOyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtcy5oCmluZGV4IGU2ODk5MzY1MzY1OGE0YjUxYjEyYjQ4NWMyYTVjNGUx
ODdhMDVkYWMuLmM1NmU2NTNhYjI1NGRhYjg2Y2VmMGFkYjc0YWI1MmM0OWNlNmRlZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJz
YU9hZXBQYXJhbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9Dcnlw
dG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyBmaW5hbCA6IHB1Ymxp
YyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIHsKIHB1YmxpYzoKICAgICAvLyBVc2UgbGFiZWxW
ZWN0b3IoKSBpbnN0ZWFkIG9mIGxhYmVsLiBUaGUgbGFiZWwgd2lsbCBiZSBnb25lIG9uY2UgbGFi
ZWxWZWN0b3IoKSBpcyBjYWxsZWQuCi0gICAgT3B0aW9uYWw8QnVmZmVyU291cmNlOjpWYXJpYW50
VHlwZT4gbGFiZWw7CisgICAgc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
PiBsYWJlbDsKIAogICAgIENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIENsYXNzOjpSc2FPYWVwUGFyYW1zOyB9CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgQ3J5
cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcyBmaW5hbCA6IHB1YmxpYyBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzIHsKICAgICAgICAgICAgIHJldHVybiBtX2xhYmVsVmVjdG9yOwogCiAgICAgICAg
IG1fbGFiZWxCdWZmZXIgPSBXVEZNb3ZlKCpsYWJlbCk7Ci0gICAgICAgIGxhYmVsID0gTnVsbG9w
dDsKKyAgICAgICAgbGFiZWwgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghbV9sYWJlbEJ1
ZmZlci5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBtX2xhYmVsVmVjdG9yOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA1ZWFiNTViNTQzMzMzYmQxN2Y2N2IxMWViYWQ2
NjE3NzI4MjUwMWYxLi4yNTY3MWMxZGUwOWI1NTBiZDcxOWM5Y2Y1Yjk1OGU1ZmIyMjU1NjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTEyNCwxMCArMTI0LDEwIEBAIGJvb2wg
Q1NTRm9udEZhY2U6OnNldEZhbWlsaWVzKENTU1ZhbHVlJiBmYW1pbHkpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLU9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRl
U3R5bGVNYXNrKENTU1ZhbHVlJiBzdHlsZSkKK3N0ZDo6b3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+
IENTU0ZvbnRGYWNlOjpjYWxjdWxhdGVTdHlsZU1hc2soQ1NTVmFsdWUmIHN0eWxlKQogewogICAg
IGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0eWxlKSkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihzdHlsZSkudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1
ZU5vcm1hbDoKQEAgLTE1OSwxMCArMTU5LDEwIEBAIGJvb2wgQ1NTRm9udEZhY2U6OnNldFN0eWxl
KENTU1ZhbHVlJiBzdHlsZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvbmFsPEZvbnRU
cmFpdHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayhDU1NWYWx1ZSYgd2Vp
Z2h0KQorc3RkOjpvcHRpb25hbDxGb250VHJhaXRzTWFzaz4gQ1NTRm9udEZhY2U6OmNhbGN1bGF0
ZVdlaWdodE1hc2soQ1NTVmFsdWUmIHdlaWdodCkKIHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPih3ZWlnaHQpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHdlaWdodCkudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oCmluZGV4IDhiMTNhMWI3Y2M0YTc3YTFjN2RmNzgzNDRmMzFmNzQ2Nzc0ZTA0
NzYuLmIxMWRmZDAxNTBiOGQ1ZWZkNTk0MTVhZjE0ODFkNzVhMmJhZTc3M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5oCkBAIC04Nyw4ICs4Nyw4IEBAIGNsYXNzIENTU0ZvbnRGYWNlIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTRm9udEZhY2U+IHsKICAgICBTdGF0dXMgc3RhdHVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KICAgICBTdHlsZVJ1bGVGb250RmFjZSogY3NzQ29u
bmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY3NzQ29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAg
c3RhdGljIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjYWxjdWxhdGVTdHlsZU1hc2soQ1NTVmFs
dWUmIHN0eWxlKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNhbGN1bGF0
ZVdlaWdodE1hc2soQ1NTVmFsdWUmIHdlaWdodCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Rm9udFRyYWl0c01hc2s+IGNhbGN1bGF0ZVN0eWxlTWFzayhDU1NWYWx1ZSYgc3R5bGUpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBjYWxjdWxhdGVXZWlnaHRNYXNr
KENTU1ZhbHVlJiB3ZWlnaHQpOwogCiAgICAgY2xhc3MgQ2xpZW50OwogICAgIHZvaWQgYWRkQ2xp
ZW50KENsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggNTIy
YWM4NmE5NGU5YmJiYjNiOGQzZTIxMTVjZjY2OTAwZjczNTMxZS4uYjYwNjhjYzZmODJmMjM4Yzdi
ZjExNmFkNDcyYTJiZDYxMzA3NDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQu
Y3BwCkBAIC0yODQsNyArMjg0LDcgQEAgQ1NTRm9udEZhY2UmIENTU0ZvbnRGYWNlU2V0OjpvcGVy
YXRvcltdKHNpemVfdCBpKQogICAgIHJldHVybiBtX2ZhY2VzW2ldOwogfQogCi1zdGF0aWMgT3B0
aW9uYWw8Rm9udFRyYWl0c01hc2s+IGNvbXB1dGVGb250VHJhaXRzTWFzayhNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBj
b21wdXRlRm9udFRyYWl0c01hc2soTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgc3R5bGUpCiB7CiAg
ICAgUmVmUHRyPENTU1ZhbHVlPiBzdHlsZVZhbHVlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkuZ2V0KCk7CiAgICAgaWYgKCFzdHlsZVZhbHVlKQpAQCAt
Mjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gY29tcHV0ZUZv
bnRUcmFpdHNNYXNrKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0CiAgICAgaWYgKGF1dG8gc3R5
bGVNYXNrT3B0aW9uYWwgPSBDU1NGb250RmFjZTo6Y2FsY3VsYXRlU3R5bGVNYXNrKCpzdHlsZVZh
bHVlKSkKICAgICAgICAgc3R5bGVNYXNrID0gc3R5bGVNYXNrT3B0aW9uYWwudmFsdWUoKTsKICAg
ICBlbHNlCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB3ZWlnaHRWYWx1ZSA9IHN0eWxlLmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250V2VpZ2h0KS5nZXQoKTsKICAgICBpZiAoIXdlaWdo
dFZhbHVlKQpAQCAtMzA0LDcgKzMwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxGb250VHJhaXRzTWFz
az4gY29tcHV0ZUZvbnRUcmFpdHNNYXNrKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0CiAgICAg
aWYgKGF1dG8gd2VpZ2h0TWFza09wdGlvbmFsID0gQ1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdlaWdo
dE1hc2soKndlaWdodFZhbHVlKSkKICAgICAgICAgd2VpZ2h0TWFzayA9IHdlaWdodE1hc2tPcHRp
b25hbC52YWx1ZSgpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFRyYWl0
c01hc2s+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHlsZU1hc2spIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHdlaWdodE1hc2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCmluZGV4IDYyMWZjZTgyZTViZTYzZTUyMGNmY2ExMTQ2ZmZhZWVjYTBiMDUxNGMuLjVi
MGQxZmI5YTc4MzY1ZjZiNTE3Mjg4ZjhmZTIxM2Q2YmE4NzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIEV4Y2VwdGlvbk9y
PGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1
bml0VHlwZSkgY29uCiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoVW5p
dFR5cGVzIHVuaXRUeXBlKSBjb25zdAogewotICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFs
KHVuaXRUeXBlKS52YWx1ZU9yKDApOworICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVu
aXRUeXBlKS52YWx1ZV9vcigwKTsKIH0KIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3Vi
bGVWYWx1ZSgpIGNvbnN0CkBAIC04NzEsMTAgKzg3MSwxMCBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzIENTU1ByaW1pdGl2ZVZhbHVlOjpjYW5vbmljYWxVbml0VHlwZUZvckNhdGVnb3J5
KFVuaQogICAgIH0KIH0KIAotT3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91
YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwo
VW5pdFR5cGVzIHJlcXVlc3RlZFVuaXRUeXBlKSBjb25zdAogewogICAgIGlmICghaXNWYWxpZENT
U1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJp
bWl0aXZlVW5pdFR5cGUpKSB8fCAhaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lv
bihyZXF1ZXN0ZWRVbml0VHlwZSkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVW5pdFR5cGVzIHNvdXJjZVVuaXRUeXBlID0gc3Rh
dGljX2Nhc3Q8VW5pdFR5cGVzPihwcmltaXRpdmVUeXBlKCkpOwogICAgIGlmIChyZXF1ZXN0ZWRV
bml0VHlwZSA9PSBzb3VyY2VVbml0VHlwZSB8fCByZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NfRElN
RU5TSU9OKQpAQCAtODg5LDIwICs4ODksMjAgQEAgT3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRp
dmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFQKIAog
ICAgIC8vIENhbm5vdCBjb252ZXJ0IGJldHdlZW4gdW5yZWxhdGVkIHVuaXQgY2F0ZWdvcmllcyBp
ZiBvbmUgb2YgdGhlbSBpcyBub3QgVU51bWJlci4KICAgICBpZiAoc291cmNlQ2F0ZWdvcnkgIT0g
dGFyZ2V0Q2F0ZWdvcnkgJiYgc291cmNlQ2F0ZWdvcnkgIT0gVU51bWJlciAmJiB0YXJnZXRDYXRl
Z29yeSAhPSBVTnVtYmVyKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0YXJnZXRDYXRlZ29yeSA9PSBVTnVtYmVyKSB7CiAg
ICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIHRvIENTU19OVU1CRVIgYXMgY29udmVy
c2lvbiB0byBhIGNhbm9uaWNhbCB1bml0IGluIHRoaXMgdmFsdWUncyBjYXRlZ29yeS4KICAgICAg
ICAgdGFyZ2V0VW5pdFR5cGUgPSBjYW5vbmljYWxVbml0VHlwZUZvckNhdGVnb3J5KHNvdXJjZUNh
dGVnb3J5KTsKICAgICAgICAgaWYgKHRhcmdldFVuaXRUeXBlID09IENTU19VTktOT1dOKQotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIGlmIChzb3VyY2VVbml0VHlwZSA9PSBDU1NfTlVNQkVSKSB7CiAgICAg
ICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTX05VTUJFUiBpbiB0aGUgc2Ft
ZSB3YXkgYXMgQ1NTUGFyc2VyOjp2YWxpZFVuaXQoKSB3aGlsZSB1c2luZyBub24tc3RyaWN0IG1v
ZGUuCiAgICAgICAgIHNvdXJjZVVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29y
eSh0YXJnZXRDYXRlZ29yeSk7CiAgICAgICAgIGlmIChzb3VyY2VVbml0VHlwZSA9PSBDU1NfVU5L
Tk9XTikKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBkb3VibGUgY29udmVydGVkVmFsdWUgPSBkb3VibGVW
YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBiZDc2YTBi
MzhiM2ZmYzU0YzA0MzMxNGM2ZDFjNjdjOWNkNDZkNjZjLi5iYmU4MTdlZGExYzk0ODdkNDhjMTI1
ZjM4NWM2YzdkMzRlNGU4Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aApAQCAtMzYwLDcgKzM2MCw3IEBAIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVi
bGljIENTU1ZhbHVlIHsKICAgICB2b2lkIGluaXQoUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4mJik7
IC8vIEZJWE1FOiBEYXNoYm9hcmQgcmVnaW9uIHNob3VsZCBub3QgYmUgYSBwcmltaXRpdmUgdmFs
dWUuCiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPGRvdWJsZT4gZG91YmxlVmFsdWVJbnRlcm5hbChV
bml0VHlwZXMgdGFyZ2V0VW5pdFR5cGUpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBkb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBlcyB0YXJnZXRVbml0VHlwZSkgY29uc3Q7CiAK
ICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5k
ZXggMDYyM2I4OGVlZTI2YjgwNmNkYWUyOTFlNjc0OTIxODY4ZGQ0NzAxZC4uMWQ3NmM2NjdjMzIw
ZWM5ZjQ5NTQ4Yjk1MjFjZjMzNTJjYWE1YjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW4KQEAgLTM1LDcgKzM1LDcgQEAKIC8vIGZ1bmN0aW9uIGluIGNzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaCBzaG91bGQgYmUgdXNlZC4KIC8vCiAvLyAqIENvbmRpdGlvbmFsQ29u
dmVydGVyPVhYWDoKLS8vIFNpbWlsYXIgdG8gQ29udmVydGVyPVhYWCBidXQgdGhlIGNvbnZlcnRl
ciBmdW5jdGlvbiByZXR1cm5zIGEgV1RGOjpPcHRpb25hbDw+CisvLyBTaW1pbGFyIHRvIENvbnZl
cnRlcj1YWFggYnV0IHRoZSBjb252ZXJ0ZXIgZnVuY3Rpb24gcmV0dXJucyBhIHN0ZDo6b3B0aW9u
YWw8PgogLy8gdG8gaW5kaWNhdGUgaWYgdGhlIHByb3BlcnR5IHNldHRlciBzaG91bGQgYmUgY2Fs
bGVkIG9yIG5vdC4KIC8vCiAvLyAqIEN1c3RvbT1bSW5pdGlhbHxWYWx1ZXxJbmhlcml0fEFsbF06
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAppbmRleCA3Nzhl
NjQ5OTEyYzllODIwODJjY2E0ZDY0ZDE5ZTg3MDdhNWUyNjIxLi44NTAxODViNzhhZDI1Y2U3YTk0
MWM0YTk2ZDJlMjMxNWRmMGEzM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VnbWVudGVkRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50
ZWRGb250RmFjZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgQ1NTRm9udEFjY2Vzc29yIGZp
bmFsIDogcHVibGljIEZvbnRBY2Nlc3NvciB7CiAgICAgICAgIHJldHVybiBtX3Jlc3VsdCAmJiBt
X3Jlc3VsdC52YWx1ZSgpICYmIG1fcmVzdWx0LnZhbHVlKCktPmlzTG9hZGluZygpOwogICAgIH0K
IAotICAgIG11dGFibGUgT3B0aW9uYWw8UmVmUHRyPEZvbnQ+PiBtX3Jlc3VsdDsgLy8gQ2FjaGVz
IG51bGxwdHIgdG9vCisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGb250Pj4gbV9y
ZXN1bHQ7IC8vIENhY2hlcyBudWxscHRyIHRvbwogICAgIG11dGFibGUgUmVmPENTU0ZvbnRGYWNl
PiBtX2ZvbnRGYWNlOwogICAgIEZvbnREZXNjcmlwdGlvbiBtX2ZvbnREZXNjcmlwdGlvbjsKICAg
ICBib29sIG1fc3ludGhldGljQm9sZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCBhZmEzNjY2NGIyNDY0MWE3NjNlNDhmMmQyODdjYzFmNWFkMThjNWNlLi43NzVhNmI1NzA4
Yzc0MGE3NTNmYWIyYzE2Y2VhYWM3OGQ2NTFjMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgQ1NTSW1wCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJS
dWxlKSk7CiB9CiAKLVJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVm
PFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBPcHRp
b25hbDxib29sPiYgaXNDbGVhbk9yaWdpbikKK1JlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgTm9kZSYgb3duZXJO
b2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpc0NsZWFuT3JpZ2luKQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyTm9k
ZSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgZmFsc2UsIGlzQ2xlYW5PcmlnaW4p
KTsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJl
ZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIENTU0ltcG9ydFJ1bGUqCiAgICAgbV9j
b250ZW50cy0+cmVnaXN0ZXJDbGllbnQodGhpcyk7CiB9CiAKLUNTU1N0eWxlU2hlZXQ6OkNTU1N0
eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgTm9kZSYgb3duZXJO
b2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHls
ZXNoZWV0LCBjb25zdCBPcHRpb25hbDxib29sPiYgaXNPcmlnaW5DbGVhbikKK0NTU1N0eWxlU2hl
ZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50cywgTm9k
ZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJ
bmxpbmVTdHlsZXNoZWV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFu
KQogICAgIDogbV9jb250ZW50cyhXVEZNb3ZlKGNvbnRlbnRzKSkKICAgICAsIG1faXNJbmxpbmVT
dHlsZXNoZWV0KGlzSW5saW5lU3R5bGVzaGVldCkKICAgICAsIG1faXNEaXNhYmxlZChmYWxzZSkK
QEAgLTMyNSw3ICszMjUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxl
dGVSdWxlKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9y
PGludD4gQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25z
dCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCitFeGNlcHRpb25Pcjxp
bnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3Qg
U3RyaW5nJiBzdHlsZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgU3Ry
aW5nQnVpbGRlciB0ZXh0OwogICAgIHRleHQuYXBwZW5kKHNlbGVjdG9yKTsKQEAgLTMzNCw3ICsz
MzQsNyBAQCBFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdAogICAgIGlmICghc3R5bGUuaXNFbXB0eSgp
KQogICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwogICAgIHRleHQuYXBwZW5kKCd9Jyk7Ci0gICAg
YXV0byBpbnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGluZGV4
LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRS
dWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVfb3IobGVuZ3RoKCkpKTsKICAgICBpZiAo
aW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGluc2VydFJ1
bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKaW5kZXggMjkxZTllNzkxMDdmODViMTIyNDczNmUzMTE1ZTcyY2I0OTJmZTY3ZC4uYzRh
ZTM5NWRlZDk2OTZhYTcwY2U4MzY0YjYzYzA2OWJjNWY4OWI1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFNjb3BlOwogY2xhc3MgQ1NTU3R5
bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJ
bXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKLSAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+
IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0
IE9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuID0gTnVsbG9wdCk7CisgICAgc3RhdGljIFJl
ZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYg
b3duZXJOb2RlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiBpc09yaWdpbkNsZWFuID0gc3Rk
OjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBFbGVtZW50JiBvd25lciwgY29uc3QgVGV4dFBvc2l0
aW9uJiBzdGFydFBvc2l0aW9uKTsKIAogICAgIHZpcnR1YWwgfkNTU1N0eWxlU2hlZXQoKTsKQEAg
LTcxLDcgKzcxLDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNo
ZWV0IHsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBkZWxldGVSdWxlKHVu
c2lnbmVkIGluZGV4KTsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q1NTUnVsZUxp
c3Q+IHJ1bGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8aW50PiBhZGRSdWxl
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVu
c2lnbmVkPiBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8aW50PiBhZGRS
dWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVSdWxl
KHVuc2lnbmVkIGluZGV4KSB7IHJldHVybiBkZWxldGVSdWxlKGluZGV4KTsgfQogICAgIAogICAg
IC8vIEZvciBDU1NSdWxlTGlzdC4KQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBDU1NTdHlsZVNo
ZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hlZXQgewogcHJpdmF0ZToKICAgICBDU1NTdHlsZVNo
ZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSk7
CiAgICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25l
ck5vZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0
eWxlc2hlZXQpOwotICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwg
Tm9kZSYgb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wg
aXNJbmxpbmVTdHlsZXNoZWV0LCBjb25zdCBPcHRpb25hbDxib29sPiYpOworICAgIENTU1N0eWxl
U2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAKICAgICBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9jc3MiKTsgfQpAQCAtMTQzLDcgKzE0Myw3IEBA
IGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVTaGVldCB7CiAgICAgYm9v
bCBtX2lzSW5saW5lU3R5bGVzaGVldDsKICAgICBib29sIG1faXNEaXNhYmxlZDsKICAgICBib29s
IG1fbXV0YXRlZFJ1bGVzOwotICAgIE9wdGlvbmFsPGJvb2w+IG1faXNPcmlnaW5DbGVhbjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXNPcmlnaW5DbGVhbjsKICAgICBTdHJpbmcgbV90aXRs
ZTsKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYVF1ZXJpZXM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCmluZGV4IDYwMWI5MmQ5NmEwZTQ1NzJmYzk0YjJmYjk5OGVhMDUzNDU1NWVi
NDYuLmU2ZTBmNzAzYzE5YWVjZjZiZDI5YjY2YWFhYTc0ZmVmMzQwOTkyMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlLmNwcApAQCAtMzc0LDEyICszNzQsMTIgQEAgdm9pZCBGb250RmFjZTo6Zm9udFN0
YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NTRm9u
dEYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpTdWNjZXNz
OgogICAgICAgICBpZiAobV9wcm9taXNlKQotICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3By
b21pc2UsIE51bGxvcHQpLT5yZXNvbHZlKCp0aGlzKTsKKyAgICAgICAgICAgIHN0ZDo6ZXhjaGFu
Z2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5yZXNvbHZlKCp0aGlzKTsKICAgICAgICAgZGVy
ZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFp
bHVyZToKICAgICAgICAgaWYgKG1fcHJvbWlzZSkKLSAgICAgICAgICAgIHN0ZDo6ZXhjaGFuZ2Uo
bV9wcm9taXNlLCBOdWxsb3B0KS0+cmVqZWN0KE5FVFdPUktfRVJSKTsKKyAgICAgICAgICAgIHN0
ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5yZWplY3QoTkVUV09SS19FUlIp
OwogICAgICAgICBkZXJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NGb250RmFj
ZTo6U3RhdHVzOjpQZW5kaW5nOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCBmYThmMzEzZGNlZDhm
YjVkZDI4ZTJjMjk0ODUxNWU0NmQ3ZWFjZTA2Li4yM2NlZjdkNDJhMzdiMzM4OGM5NTIzN2Y2OTBj
OTdlNjA4NzBmYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFz
cyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlPiwgcHJpdmF0ZSBD
U1NGb250RmFjZTo6Q2xpZW50CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAogICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZSY+IFByb21pc2U7Ci0gICAgT3B0aW9uYWw8UHJv
bWlzZT4mIHByb21pc2UoKSB7IHJldHVybiBtX3Byb21pc2U7IH0KKyAgICBzdGQ6Om9wdGlvbmFs
PFByb21pc2U+JiBwcm9taXNlKCkgeyByZXR1cm4gbV9wcm9taXNlOyB9CiAgICAgdm9pZCByZWdp
c3RlckxvYWRlZChQcm9taXNlJiYpOwogCiAgICAgdm9pZCBhZG9wdChDU1NGb250RmFjZSYpOwpA
QCAtOTAsNyArOTAsNyBAQCBjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PEZvbnRGYWNlPiwgcHJpdmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50CiAKICAgICBXZWFrUHRyRmFj
dG9yeTxGb250RmFjZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZWY8Q1NTRm9udEZhY2U+IG1f
YmFja2luZzsKLSAgICBPcHRpb25hbDxQcm9taXNlPiBtX3Byb21pc2U7CisgICAgc3RkOjpvcHRp
b25hbDxQcm9taXNlPiBtX3Byb21pc2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmNwcAppbmRleCA5NGMxYzU1ZmVhNTYzZjQyYWJhMDQxNWMyMjAwNjI4MmVhYTAwNzcxLi43Mzhi
MDhlNjgzYjg4NGY3Y2QxNGIzNGQ3YTMwNDMyNWY5MTU5MzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEZvbnRGYWNlU2V0OjpzdGFydGVk
TG9hZGluZygpCiB2b2lkIEZvbnRGYWNlU2V0Ojpjb21wbGV0ZWRMb2FkaW5nKCkKIHsKICAgICBp
ZiAobV9wcm9taXNlKQotICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgTnVsbG9wdCkt
PnJlc29sdmUoKnRoaXMpOworICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgc3RkOjpu
dWxsb3B0KS0+cmVzb2x2ZSgqdGhpcyk7CiAgICAgbV9pc1JlYWR5ID0gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBmZTJhNmU3NTIxMWZlOGM0Zjg4MmJhNDY0MzdmZGVm
NmZhNjgxYzczLi4wM2Y0ZjQyZTFiOGRhYzNiZmNlZDA3ZTUzYjhlZTRkZjIwZTlkMTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIEZvbnRGYWNl
U2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRlIENTU0Zv
bnRGYWNlU2V0CiAKICAgICBSZWY8Q1NTRm9udEZhY2VTZXQ+IG1fYmFja2luZzsKICAgICBIYXNo
TWFwPFJlZlB0cjxGb250RmFjZT4sIFZlY3RvcjxSZWY8UGVuZGluZ1Byb21pc2U+Pj4gbV9wZW5k
aW5nUHJvbWlzZXM7Ci0gICAgT3B0aW9uYWw8UmVhZHlQcm9taXNlPiBtX3Byb21pc2U7CisgICAg
c3RkOjpvcHRpb25hbDxSZWFkeVByb21pc2U+IG1fcHJvbWlzZTsKICAgICBib29sIG1faXNSZWFk
eSB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9y
LmNwcAppbmRleCBhODYwMTE3ZTM2ODVhOWE1MmJjODM3MmUyZTI3NmY2OWQ2ZWMyYTU2Li42NTYy
OWFjNzcyYzEyYTEyZjQwYWVhNzI3ZWM5YmY3YTc1ZWQ4OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0yMTQsMTAgKzIxNCwxMCBAQCBzdGF0aWMg
Ym9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwg
aW50IGhlaWdodCwgTWVkaQogICAgIHJldHVybiBjb21wYXJlVmFsdWUod2lkdGggKiBhc3BlY3RS
YXRpby5kZW5vbWluYXRvclZhbHVlKCksIGhlaWdodCAqIGFzcGVjdFJhdGlvLm51bWVyYXRvclZh
bHVlKCksIG9wKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gZG91YmxlVmFsdWUoQ1NT
VmFsdWUqIHZhbHVlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZShD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
IHx8ICFkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5pc051bWJlcigpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggYWNlNWQ4NmViMmFhNjY0NTVkOWJmYzhhZTUzOGJk
ODVlMWU4YWJiNS4uNGUwZWFhMzYxZTM4YTYwYjI5ZmUzNTBiNTE1M2E2M2E1YzMwMzI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMTAxLDEzICsx
MDEsMTMgQEAgY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyIHsKICNpZiBFTkFCTEUoQ1NTX0dS
SURfTEFZT1VUKQogICAgIHN0YXRpYyBHcmlkVHJhY2tTaXplIGNvbnZlcnRHcmlkVHJhY2tTaXpl
KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBWZWN0b3I8R3Jp
ZFRyYWNrU2l6ZT4gY29udmVydEdyaWRUcmFja1NpemVMaXN0KFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxHcmlkUG9zaXRpb24+IGNvbnZlcnRH
cmlkUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBjb252ZXJ0R3JpZFBvc2l0aW9uKFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBHcmlkQXV0b0Zsb3cgY29udmVy
dEdyaWRBdXRvRmxvdyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICNlbmRpZiAv
LyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIHN0YXRpYyBPcHRpb25hbDxMZW5ndGg+IGNv
bnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBz
dGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVuZ3RoPiBjb252ZXJ0TWFy
cXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gY29udmVydEZpbHRlck9wZXJhdGlvbnMoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
TGVuZ3RoPiBjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNvbnZlcnRQZXJzcGVjdGl2ZShT
dHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxMZW5ndGg+IGNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBD
U1NWYWx1ZSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IGNv
bnZlcnRGaWx0ZXJPcGVyYXRpb25zKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBjb252ZXJ0VG91Y2hDYWxsb3V0KFN0
eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogI2VuZGlmCkBAIC0xMzIsNyArMTMyLDcg
QEAgY2xhc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyIHsKICAgICBzdGF0aWMgU3R5bGVDb250ZW50
QWxpZ25tZW50RGF0YSBjb252ZXJ0Q29udGVudEFsaWdubWVudERhdGEoU3R5bGVSZXNvbHZlciYs
IGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEVHbHlwaE9yaWVudGF0aW9uIGNvbnZlcnRH
bHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBFR2x5cGhPcmllbnRhdGlvbiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHls
ZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8TGVuZ3Ro
PiBjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmLCBmbG9h
dCBtdWx0aXBsaWVyID0gMS5mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGNv
bnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYsIGZsb2F0IG11
bHRpcGxpZXIgPSAxLmYpOwogICAgIHN0YXRpYyBGb250U3ludGhlc2lzIGNvbnZlcnRGb250U3lu
dGhlc2lzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIAogICAgIHN0YXRp
YyBCcmVha0JldHdlZW4gY29udmVydFBhZ2VCcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIGNv
bnN0IENTU1ZhbHVlJik7CkBAIC0xMDg0LDEyICsxMDg0LDEyIEBAIGlubGluZSBHcmlkVHJhY2tT
aXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRUcmFja1NpemUoU3R5bGVSZXNv
bHZlciYKICAgICByZXR1cm4gY3JlYXRlR3JpZFRyYWNrU2l6ZSh2YWx1ZSwgc3R5bGVSZXNvbHZl
cik7CiB9CiAKLWlubGluZSBPcHRpb25hbDxHcmlkUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEdyaWRQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRHcmlkUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBHcmlkUG9zaXRpb24gZ3JpZFBvc2l0aW9uOwogICAgIGlmIChj
cmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGdyaWRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBn
cmlkUG9zaXRpb247Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogaW5saW5lIEdyaWRBdXRvRmxvdyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAg
LTExMzcsOSArMTEzNyw5IEBAIGlubGluZSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0CiAgICAgcmV0dXJuIHN0
eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCk7CiB9CiAKLWlu
bGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRT
cGFjaW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogewotICAgIE9wdGlvbmFsPExlbmd0aD4gd29yZFNwYWNpbmc7CisgICAg
c3RkOjpvcHRpb25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0
aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICB3b3JkU3BhY2lu
ZyA9IFJlbmRlclN0eWxlOjppbml0aWFsV29yZFNwYWNpbmcoKTsKQEAgLTExNTMsNyArMTE1Myw3
IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImCiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQog
Ci1pbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBl
cnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lKQpAQCAtMTE2NywxMiArMTE2NywxMiBAQCBpbmxpbmUgT3B0aW9u
YWw8ZmxvYXQ+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxl
UmVzb2x2ZXImCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAg
IHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBPcHRpb25hbDxmbG9hdD4oTnVsbG9wdCkgOiBPcHRp
b25hbDxmbG9hdD4ocGVyc3BlY3RpdmUpOworICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBz
dGQ6Om9wdGlvbmFsPGZsb2F0PihzdGQ6Om51bGxvcHQpIDogc3RkOjpvcHRpb25hbDxmbG9hdD4o
cGVyc3BlY3RpdmUpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPExlbmd0
aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgT3B0
aW9uYWw8TGVuZ3RoPiBtYXJxdWVlTGVuZ3RoOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBt
YXJxdWVlTGVuZ3RoOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSkgewogICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoKQEAgLTExOTYsMTIgKzExOTYsMTIgQEAgaW5s
aW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVl
ZUluY3JlbWVudChTdHlsZVJlc28KICAgICByZXR1cm4gbWFycXVlZUxlbmd0aDsKIH0KIAotaW5s
aW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEZpbHRlck9wZXJhdGlvbnMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0aW9ucyhTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgRmlsdGVy
T3BlcmF0aW9ucyBvcGVyYXRpb25zOwogICAgIGlmIChzdHlsZVJlc29sdmVyLmNyZWF0ZUZpbHRl
ck9wZXJhdGlvbnModmFsdWUsIG9wZXJhdGlvbnMpKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9u
czsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBp
bmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRG
b250RmVhdHVyZVNldHRpbmdzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdAogICAgIHJldHVy
biBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CiAKLWlu
bGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVI
ZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
LCBmbG9hdCBtdWx0aXBsaWVyKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7
CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKQEAg
LTE0MjQsNyArMTQyNCw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYKICAgICAgICAgLy8gRklY
TUU6IG51bWJlciBhbmQgcGVyY2VudGFnZSB2YWx1ZXMgc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUg
dHlwZSBvZiBMZW5ndGggKGllLiBGaXhlZCBvciBQZXJjZW50KS4KICAgICAgICAgcmV0dXJuIExl
bmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpICogbXVsdGlwbGllciAqIDEwMC4wLCBQ
ZXJjZW50KTsKICAgICB9Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogaW5saW5lIEZvbnRTeW50aGVzaXMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDcxMWU1ODk0ZTgz
NTlmM2VkZmZjNzFkNjA2NWNlNmYwNzQ4MTQ0ODUuLjRmMWEwNzNjMDg5ODA1YzMzM2MyMzA0NjE1
ZmY2YzU2NDA1YmZhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
QEAgLTYzMCw3ICs2MzAsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbAogaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlTGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgZmxvYXQgbXVsdGlwbGllciA9
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKS5pc1BlcmNlbnRhZ2UoKSA/
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKS5tdWx0aXBsaWVyKCkgOiAx
LmY7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBsaW5lSGVpZ2h0ID0gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TGluZUhlaWdodChzdHlsZVJlc29sdmVyLCB2YWx1ZSwgbXVsdGlwbGllcik7
CisgICAgc3RkOjpvcHRpb25hbDxMZW5ndGg+IGxpbmVIZWlnaHQgPSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KHN0eWxlUmVzb2x2ZXIsIHZhbHVlLCBtdWx0aXBsaWVy
KTsKICAgICBpZiAoIWxpbmVIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlSW1wb3J0LmNwcAppbmRleCBmZjdiYzM1MGVhOTg4YmY4ODBkYzBjZGMwNDQz
YzJhZmZkODZlMGE5Li4wZWE3Y2FjNDdmMmFkMTkwMTYwOTNmZWJiYTY2NmVmODY4ZmRmNGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcApAQCAtMTE1LDcgKzExNSw3IEBA
IHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVTaGVldCgpCiAKICAgICAvLyBGSVhN
RTogU2tpcCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjaGVjayB3aGVuIHN0eWxlc2hlZXQgaXMg
aW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0cmVlLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjY2Mz4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QoYWJzVVJMLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJl
c291cmNlT3B0aW9ucygpLCBOdWxsb3B0LCBTdHJpbmcobV9wYXJlbnRTdHlsZVNoZWV0LT5jaGFy
c2V0KCkpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChhYnNVUkwsIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6bnVs
bG9wdCwgU3RyaW5nKG1fcGFyZW50U3R5bGVTaGVldC0+Y2hhcnNldCgpKSk7CiAgICAgcmVxdWVz
dC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAg
ICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVu
dChtX3N0eWxlU2hlZXRDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIu
Y3BwCmluZGV4IDBkOGJiYmViNWJiMTVhODVjYzFiNTE4MzExZWMzNDM2OWFhMWE0N2IuLmE1YmY1
Yzg4ZjliNDljYjMyMGRkN2JmNWY4NWJmMDVjM2RmNjhiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQ5ODUsMjkgKzQ5ODUsMjkgQEAgYm9vbCBDU1NQYXJz
ZXI6OmlzU3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9j
b250ZXh0LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZDsKIH0KIAotT3B0aW9uYWw8ZG91Ymxl
PiBDU1NQYXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNl
clZhbHVlTGlzdCYgYXJncykKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBDU1NQYXJzZXI6OnBhcnNl
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYgYXJncykK
IHsKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVudFdpdGhDYWxjdWxhdGlvbigqYXJn
cy5jdXJyZW50KCkpOwogICAgIGlmICghdmFsaWRhdGVVbml0KGFyZ3VtZW50V2l0aENhbGN1bGF0
aW9uLCBGTnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8ZG91
YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24pOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXN1
bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRXaXRoQ2FsY3VsYXRpb24pOwogICAgIENTU1BhcnNl
clZhbHVlKiBuZXh0VmFsdWUgPSBhcmdzLm5leHQoKTsKICAgICBpZiAoIW5leHRWYWx1ZSkgewog
ICAgICAgICAvLyBUaGUgbGFzdCBudW1iZXIgaW4gdGhlIGZ1bmN0aW9uIGhhcyBubyBjb21tYSBh
ZnRlciBpdCwgc28gd2UncmUgZG9uZS4KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgaWYgKCFpc0NvbW1hKG5leHRWYWx1ZSkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGFyZ3MubmV4dCgpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLU9wdGlvbmFsPGRvdWJsZT4gQ1NTUGFyc2VyOjpwYXJzZVNwcmluZ1RpbWlu
Z0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0JiBhcmdzKQorc3RkOjpvcHRpb25hbDxk
b3VibGU+IENTU1BhcnNlcjo6cGFyc2VTcHJpbmdUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNl
clZhbHVlTGlzdCYgYXJncykKIHsKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVudFdp
dGhDYWxjdWxhdGlvbigqYXJncy5jdXJyZW50KCkpOwogICAgIGlmICghdmFsaWRhdGVVbml0KGFy
Z3VtZW50V2l0aENhbGN1bGF0aW9uLCBGTnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRXaXRo
Q2FsY3VsYXRpb24pOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiByZXN1bHQgPSBwYXJzZWREb3VibGUoYXJndW1lbnRXaXRoQ2FsY3VsYXRp
b24pOwogICAgIGFyZ3MubmV4dCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NjcxLDEx
ICs3NjcxLDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2Vy
VmFsdWUmIHZhbHVlLCBpbnQqIGNvbG9yQXJyYXksIGJvb2wKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotT3B0aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+
IENTU1BhcnNlcjo6cGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYg
dmFsdWUpCitzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENv
bG9yU3BhY2U+PiBDU1NQYXJzZXI6OnBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcnMoQ1NTUGFy
c2VyVmFsdWUmIHZhbHVlKQogewogICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZhbHVl
LmZ1bmN0aW9uLT5hcmdzLmdldCgpOwogICAgIGlmICghYXJncy0+c2l6ZSgpKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENvbG9y
U3BhY2UgY29sb3JTcGFjZTsKICAgICBzd2l0Y2ggKGFyZ3MtPmN1cnJlbnQoKS0+aWQpIHsKQEAg
LTc2ODYsNyArNzY4Niw3IEBAIE9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwg
ND4sIENvbG9yU3BhY2U+PiBDU1NQYXJzZXI6OnBhcnNlQ29sb3JGdW5jCiAgICAgICAgIGNvbG9y
U3BhY2UgPSBDb2xvclNwYWNlRGlzcGxheVAzOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBzdGQ6OmFycmF5PGRvdWJsZSwgND4gY29sb3JWYWx1ZXMgPSB7IHsgMCwg
MCwgMCwgMSB9IH07CkBAIC03Njk2LDcgKzc2OTYsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8c3Rk
OjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNwYWNlPj4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnVu
YwogICAgICAgICBpZiAodmFsdWVPck51bGwpIHsKICAgICAgICAgICAgIFZhbHVlV2l0aENhbGN1
bGF0aW9uIGFyZ3VtZW50V2l0aENhbGN1bGF0aW9uKCp2YWx1ZU9yTnVsbCk7CiAgICAgICAgICAg
ICBpZiAoIXZhbGlkYXRlVW5pdChhcmd1bWVudFdpdGhDYWxjdWxhdGlvbiwgRk51bWJlcikpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGNvbG9yVmFsdWVzW2ldID0gc3RkOjptYXgoMC4wLCBz
dGQ6Om1pbigxLjAsIHBhcnNlZERvdWJsZShhcmd1bWVudFdpdGhDYWxjdWxhdGlvbikpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTc3MDYsMTMgKzc3MDYsMTMgQEAgT3B0aW9uYWw8c3RkOjpwYWly
PHN0ZDo6YXJyYXk8ZG91YmxlLCA0PiwgQ29sb3JTcGFjZT4+IENTU1BhcnNlcjo6cGFyc2VDb2xv
ckZ1bmMKICAgICAgICAgcmV0dXJuIHsgeyBjb2xvclZhbHVlcywgY29sb3JTcGFjZSB9IH07CiAK
ICAgICBpZiAoIWlzRm9yd2FyZFNsYXNoT3BlcmF0b3IoKnNsYXNoT3JOdWxsKSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBI
YW5kbGUgYWxwaGEuCiAKICAgICBWYWx1ZVdpdGhDYWxjdWxhdGlvbiBhcmd1bWVudFdpdGhDYWxj
dWxhdGlvbigqYXJncy0+bmV4dCgpKTsKICAgICBpZiAoIXZhbGlkYXRlVW5pdChhcmd1bWVudFdp
dGhDYWxjdWxhdGlvbiwgRk51bWJlciB8IEZQZXJjZW50KSkKLSAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29sb3JWYWx1ZXNbM10gPSBz
dGQ6Om1heCgwLjAsIHN0ZDo6bWluKDEuMCwgcGFyc2VDb2xvckRvdWJsZShhcmd1bWVudFdpdGhD
YWxjdWxhdGlvbikpKTsKIAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHRoZSBjb21tYS1zZXBhcmF0
ZWQgbGlzdCBvZiBmYWxsYmFjayBjb2xvciB2YWx1ZXMuCkBAIC03NzIwLDcgKzc3MjAsNyBAQCBP
cHRpb25hbDxzdGQ6OnBhaXI8c3RkOjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNwYWNlPj4gQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yRnVuYwogCiAgICAgYXV0byBjb21tYU9yTnVsbCA9IGFyZ3MtPm5l
eHQoKTsKICAgICBpZiAoY29tbWFPck51bGwgJiYgIWlzQ29tbWEoY29tbWFPck51bGwpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7IHsgY29sb3JWYWx1ZXMsIGNvbG9yU3BhY2UgfSB9OwogfQpAQCAtNzgxNCw3ICs3
ODE0LDcgQEAgQ29sb3IgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZh
bHVlJiB2YWx1ZSkKICAgICB9IGVsc2UgaWYgKHZhbHVlLnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6
OkZ1bmN0aW9uCiAgICAgICAgICYmIHZhbHVlLmZ1bmN0aW9uLT5hcmdzCiAgICAgICAgICYmIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLmZ1bmN0aW9uLT5uYW1lLCAiY29sb3Io
IikpIHsKLSAgICAgICAgT3B0aW9uYWw8c3RkOjpwYWlyPHN0ZDo6YXJyYXk8ZG91YmxlLCA0Piwg
Q29sb3JTcGFjZT4+IGNvbG9yRGF0YSA9IHBhcnNlQ29sb3JGdW5jdGlvblBhcmFtZXRlcnModmFs
dWUpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwg
ND4sIENvbG9yU3BhY2U+PiBjb2xvckRhdGEgPSBwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0ZXJz
KHZhbHVlKTsKICAgICAgICAgaWYgKCFjb2xvckRhdGEpCiAgICAgICAgICAgICByZXR1cm4gQ29s
b3IoKTsKICAgICAgICAgcmV0dXJuIENvbG9yKGNvbG9yRGF0YS52YWx1ZSgpLmZpcnN0WzBdLCBj
b2xvckRhdGEudmFsdWUoKS5maXJzdFsxXSwgY29sb3JEYXRhLnZhbHVlKCkuZmlyc3RbMl0sIGNv
bG9yRGF0YS52YWx1ZSgpLmZpcnN0WzNdLCBjb2xvckRhdGEudmFsdWUoKS5zZWNvbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKaW5kZXggMGZiZjY1OTFmNGRlZGIyYTJiMGEx
YjJjZjZlNmJjZTU3ZmM4OTkxYS4uZDlkMmUxZmZjNTNmNzVjMjUxMDMwZjJiYWMzNDdlYTE4OTQ2
YzJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCkBAIC0xNzUsNyArMTc1
LDcgQEAgY2xhc3MgQ1NTUGFyc2VyIHsKICAgICAgICAgU291cmNlU2l6ZShNZWRpYVF1ZXJ5RXhw
cmVzc2lvbiYmLCBSZWY8Q1NTVmFsdWU+JiYpOwogICAgIH07CiAgICAgVmVjdG9yPFNvdXJjZVNp
emU+IHBhcnNlU2l6ZXNBdHRyaWJ1dGUoU3RyaW5nVmlldyk7Ci0gICAgT3B0aW9uYWw8U291cmNl
U2l6ZT4gc291cmNlU2l6ZShNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYmLCBDU1NQYXJzZXJWYWx1ZSYp
OworICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlU2l6ZT4gc291cmNlU2l6ZShNZWRpYVF1ZXJ5RXhw
cmVzc2lvbiYmLCBDU1NQYXJzZXJWYWx1ZSYpOwogCiAgICAgYm9vbCBwYXJzZUZpbGxJbWFnZShD
U1NQYXJzZXJWYWx1ZUxpc3QmLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKQEAgLTIxNCw4ICsyMTQs
OCBAQCBjbGFzcyBDU1NQYXJzZXIgewogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PGRvdWJsZT4+IHBhcnNlS2V5ZnJhbWVLZXlMaXN0KGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9v
bCBwYXJzZVRyYW5zZm9ybU9yaWdpblNob3J0aGFuZChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
JiwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICBP
cHRpb25hbDxkb3VibGU+IHBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1Bh
cnNlclZhbHVlTGlzdCYpOwotICAgIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VTcHJpbmdUaW1pbmdG
dW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPiBwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxp
c3QmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VTcHJpbmdUaW1pbmdGdW5jdGlv
blZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCYpOwogICAgIGJvb2wgcGFyc2VBbmltYXRpb25Qcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+JiwgQW5pbWF0aW9uUGFyc2VDb250
ZXh0Jik7CiAgICAgYm9vbCBwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwg
Ym9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VBbmltYXRpb25TaG9ydGhhbmQoQ1NTUHJv
cGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwpAQCAtMjgwLDcgKzI4MCw3IEBAIGNsYXNzIENTU1Bh
cnNlciB7CiAKICAgICBib29sIHBhcnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYsIGlu
dCogY29sb3JWYWx1ZXMsIGJvb2wgcGFyc2VBbHBoYSk7CiAgICAgYm9vbCBwYXJzZUhTTFBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVmFsdWUmLCBkb3VibGUqIGNvbG9yVmFsdWVzLCBib29sIHBhcnNlQWxw
aGEpOwotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxzdGQ6OmFycmF5PGRvdWJsZSwgND4sIENvbG9y
U3BhY2U+PiBwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8c3RkOjphcnJheTxkb3VibGUsIDQ+LCBDb2xvclNw
YWNlPj4gcGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSYpOwogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VDb2xvcihDU1NQYXJzZXJWYWx1ZSogPSBu
dWxscHRyKTsKICAgICBDb2xvciBwYXJzZUNvbG9yRnJvbVZhbHVlKENTU1BhcnNlclZhbHVlJik7
CiAgICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYsIENTU1NlbGVjdG9yTGlzdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IGU0ODQ4
NDliOTJmOWQ2Y2NjNjNkYWE4OTMwODRlMWZlNDQ3NjIzMGUuLmUzZGZjZDAyYjQ3ZmI5NjFlYTA5
OTM2ZDFmMGJiNWQwYjg2NjViMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9T
ZWxlY3RvckNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JD
b21waWxlci5jcHAKQEAgLTMyNiw4ICszMjYsOCBAQCBjbGFzcyBTZWxlY3RvckNvZGVHZW5lcmF0
b3IgewogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzRm9jdXNXaXRoaW4oQXNzZW1ibGVyOjpK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzKTsKIAogICAgIC8vIEhlbHBlcnMuCi0gICAgdm9pZCBnZW5l
cmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRD4gdmFsdWUgPSB7IH0pOwotICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9u
KEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIE9wdGlvbmFsPEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRD4gdmFsdWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0
aW9uSWZSZXNvbHZpbmdTdHlsZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5bGU6
OlJlbGF0aW9uOjpUeXBlLCBzdGQ6Om9wdGlvbmFsPEFzc2VtYmxlcjo6UmVnaXN0ZXJJRD4gdmFs
dWUgPSB7IH0pOworICAgIHZvaWQgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uKEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50
LCBTdHlsZTo6UmVsYXRpb246OlR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3Rl
cklEPiB2YWx1ZSA9IHsgfSk7CiAgICAgQXNzZW1ibGVyOjpKdW1wIGJyYW5jaE9uUmVzb2x2aW5n
TW9kZVdpdGhDaGVja2luZ0NvbnRleHQoQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBT
ZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRl
eHQpOwogICAgIEFzc2VtYmxlcjo6SnVtcCBicmFuY2hPblJlc29sdmluZ01vZGUoQXNzZW1ibGVy
OjpSZWxhdGlvbmFsQ29uZGl0aW9uLCBTZWxlY3RvckNoZWNrZXI6Ok1vZGUsIEFzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBjaGVja2luZ0NvbnRleHQpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNG
aXJzdExpbmsoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgZWxlbWVudCk7CkBAIC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVJbmRpcmVjdEFkamFjZW50VHJlZVdhbGtlcihBc3NlbWJsZXI6
Okp1bXBMaQogICAgIGxvY2FsRmFpbHVyZUNhc2VzLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2Vt
Ymxlcik7CiB9CiAKLXZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxl
UmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50LCBT
dHlsZTo6UmVsYXRpb246OlR5cGUgcmVsYXRpb25UeXBlLCBPcHRpb25hbDxBc3NlbWJsZXI6OlJl
Z2lzdGVySUQ+IHZhbHVlKQordm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQWRk
U3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1l
bnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxhdGlvblR5cGUsIHN0ZDo6b3B0aW9uYWw8QXNz
ZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkKIHsKICAgICBpZiAobV9zZWxlY3RvckNvbnRleHQg
PT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKQogICAgICAgICByZXR1cm47CkBAIC0y
MTg4LDcgKzIxODgsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHlsZVJlbGF0aW9uRnVuY3Rpb24oU2Vs
ZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqIGNoZWNraW5nQwogICAgIGNoZWNraW5nQ29u
dGV4dC0+c3R5bGVSZWxhdGlvbnMuYXBwZW5kKHsgKmVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6
QWZmZWN0ZWRCeUFjdGl2ZSwgMSB9KTsKIH0KIAotdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbihBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2hlY2tpbmdD
b250ZXh0LCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudCwgU3R5bGU6OlJlbGF0aW9uOjpU
eXBlIHJlbGF0aW9uVHlwZSwgT3B0aW9uYWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkK
K3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb24oQXNz
ZW1ibGVyOjpSZWdpc3RlcklEIGNoZWNraW5nQ29udGV4dCwgQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6VHlwZSByZWxhdGlvblR5cGUsIHN0ZDo6b3B0aW9u
YWw8QXNzZW1ibGVyOjpSZWdpc3RlcklEPiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9zZWxlY3Rv
ckNvbnRleHQgIT0gU2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKaW5kZXggMDZh
MmYyZTQ5ZmZlYWI4NzcxNGVmNzU4MWJiZjEwN2VjNjhiY2NmZS4uYWM1ZmVlOGQ2MWIyN2I3OGYz
YjVjZWUyYjdhN2U2MzgwZWEyNWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlSXRlbSB7CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgUmVmUHRy
PERvY3VtZW50PiBtX29sZERvY3VtZW50OwogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9uZXdEb2N1
bWVudDsKLSAgICBPcHRpb25hbDxRdWFsaWZpZWROYW1lPiBtX2F0dHJpYnV0ZU5hbWU7CisgICAg
c3RkOjpvcHRpb25hbDxRdWFsaWZpZWROYW1lPiBtX2F0dHJpYnV0ZU5hbWU7CiAgICAgQXRvbWlj
U3RyaW5nIG1fb2xkVmFsdWU7CiAgICAgQXRvbWljU3RyaW5nIG1fbmV3VmFsdWU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzYxOGE5ZGQ2ZmNhY2I5N2ZlMzBiYmNmMjE5OGY4YWY5
ZTI3NDQ4NC4uZWQxNmQxOWQxZDhhODYwMTcwMGY5YjY0OTZhZDQzYjljZDc1YTk3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MzQ1LDcgKzQzNDUsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBEb2N1bWVudDo6c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogU3RyaW5nIERv
Y3VtZW50OjpsYXN0TW9kaWZpZWQoKQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9u
bzsKLSAgICBPcHRpb25hbDxzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGRhdGVUaW1lOworICAg
IHN0ZDo6b3B0aW9uYWw8c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBkYXRlVGltZTsKICAgICBp
ZiAobV9mcmFtZSAmJiBsb2FkZXIoKSkKICAgICAgICAgZGF0ZVRpbWUgPSBsb2FkZXIoKS0+cmVz
cG9uc2UoKS5sYXN0TW9kaWZpZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDk1NTYx
ZGNhZjA3ZjJlMWVhNTcwMjczYmExMGM5OTIzY2E0M2M1NDYuLmQ4ZWFhMjI5NTc4N2Y5ZWQxY2I5
Yjc0ZmZjNDdlZmI3MTdiOGM3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTY4Nyw3ICs2
ODcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2Vu
dGVySWZOb3RWaXNpYmxlKQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRv
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZh
bHVlT3IoMCksIG9wdGlvbnMudG9wLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBzY3JvbGxCeShv
cHRpb25zLmxlZnQudmFsdWVfb3IoMCksIG9wdGlvbnMudG9wLnZhbHVlX29yKDApKTsKIH0KIAog
c3RhdGljIGlubGluZSBkb3VibGUgbm9ybWFsaXplTm9uRmluaXRlVmFsdWUoZG91YmxlIGYpCkBA
IC0zMDAwLDcgKzMwMDAsNyBAQCBVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIAogaW50IEVsZW1lbnQ6OmdldEludGVn
cmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
KS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKSkudmFsdWVfb3IoMCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0SW50ZWdy
YWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgaW50IHZhbHVl
KQpAQCAtMzAxMCw3ICszMDEwLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJbnRlZ3JhbEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBpbnQgdmFsdWUKIAogdW5zaWdu
ZWQgRWxlbWVudDo6Z2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAogewotICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKS52YWx1ZU9yKDApOworICAg
IHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoZ2V0QXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRVbnNpZ25lZEludGVn
cmFsQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIHVuc2lnbmVk
IHZhbHVlKQpAQCAtMzQ5OCwxMCArMzQ5OCwxMCBAQCB2b2lkIEVsZW1lbnQ6OmRpZERldGFjaFJl
bmRlcmVycygpCiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsK
IH0KIAotT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopCitzdGQ6Om9wdGlvbmFsPEVs
ZW1lbnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgUmVuZGVyU3R5bGUqKQogewogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29s
dmVDYWxsYmFja3MoKSk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25z
dCBFbGVtZW50JiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDhkYzE1ODMzOTIxYWU2M2Jj
NGZkZjU1NGRhMTQxMWQzODQyMWRmMDMuLjc2ZjQ1ZjFlNzM4MjI5ODlkZWYwMjdmNDMxYzRhMTMx
MDUyMzJmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTE5LDcgKzUxOSw3IEBAIGNsYXNzIEVs
ZW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFj
aFJlbmRlcmVycygpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZERldGFjaFJlbmRlcmVycygpOwotICAgIHZpcnR1YWwgT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKTsKKyAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKTsKIAogICAgIExheW91dFJlY3QgYWJzb2x1dGVFdmVudEhhbmRsZXJCb3VuZHMoYm9vbCYg
aW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxlbWVudHMpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaAppbmRleCBhNzY0YTlhMDRjYzZl
MjM3MWI4MTk3MjdiNWQ5YmY5ZDc1MWViN2ZiLi5kZjM3MDNhY2EyNDg3NzI1ZWYyMGM2NDA4NzZm
MTQyODY0YjJkM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJh
dG9yQXNzZXJ0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JB
c3NlcnRpb25zLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0
aW9ucyB7CiBwcml2YXRlOgogICAgIGNvbnN0IERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIHVp
bnQ2NF90IG1faW5pdGlhbERPTVRyZWVWZXJzaW9uOwotICAgIE9wdGlvbmFsPE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbj4gbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uOworICAgIHN0ZDo6b3B0aW9u
YWw8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uPiBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb247CiB9
OwogCiAvLyBGSVhNRTogTm8gcmVhbCBwb2ludCBpbiBkb2luZyB0aGVzZSBhcyBpbmxpbmVzOyB0
aGV5IGFyZSBmb3IgZGVidWdnaW5nIGFuZCB3ZSB1c3VhbGx5IHR1cm4gb2ZmIGlubGluaW5nIGlu
IGRlYnVnIGJ1aWxkcy4KQEAgLTYwLDE0ICs2MCwxNCBAQCBpbmxpbmUgYm9vbCBFbGVtZW50SXRl
cmF0b3JBc3NlcnRpb25zOjpkb21UcmVlSGFzTXV0YXRlZCgpIGNvbnN0CiAKIGlubGluZSB2b2lk
IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCkK
IHsKLSAgICBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gPSBOdWxsb3B0OworICAgIG1fZXZlbnRE
aXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIHZvaWQgRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9uczo6Y2xlYXIoKQogewogICAgIG1fZG9jdW1lbnQgPSBudWxscHRy
OwogICAgIG1faW5pdGlhbERPTVRyZWVWZXJzaW9uID0gMDsKLSAgICBtX2V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24gPSBOdWxsb3B0OworICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V4Y2VwdGlvbk9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0aW9u
T3IuaAppbmRleCAyYmQwNzlkMGI5NzdkMjE1MmYyYjk5ZDQwNmQwZTNkZTc2M2RlZDVhLi5kMWQy
OGMxMGMyMjc0MDJlMTI4MTA0MzlhNGYzMjQ3NzkzNTAwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXhjZXB0aW9uT3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhjZXB0
aW9uT3IuaApAQCAtNjgsNyArNjgsNyBAQCB0ZW1wbGF0ZTw+IGNsYXNzIEV4Y2VwdGlvbk9yPHZv
aWQ+IHsKICAgICBFeGNlcHRpb24mJiByZWxlYXNlRXhjZXB0aW9uKCk7CiAKIHByaXZhdGU6Ci0g
ICAgT3B0aW9uYWw8RXhjZXB0aW9uPiBtX2V4Y2VwdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbj4gbV9leGNlcHRpb247CiB9OwogCiBFeGNlcHRpb25Pcjx2b2lkPiBpc29sYXRlZENv
cHkoRXhjZXB0aW9uT3I8dm9pZD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCmluZGV4IGY1NTBkZDI0Yzc2MWMyMWNhMmRmZmQ0YWRiODE2MjMzNDVk
ZDdhODMuLjU3MjI4OWQ4MjUwYzA1ZWQwYWFlNzQ1ZmUwOGY4OTA4NWQyY2Q4MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHN0YXRpYyBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHRGb3JFbGVtZW50KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIE9wdGlv
bmFsPElubGluZVN0eWxlU2hlZXRDYWNoZUtleT4gbWFrZUlubGluZVN0eWxlU2hlZXRDYWNoZUtl
eShjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxJbmxpbmVTdHlsZVNoZWV0Q2FjaGVLZXk+IG1ha2VJbmxpbmVTdHlsZVNoZWV0
Q2FjaGVLZXkoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIC8vIE9ubHkgY2FjaGUgZm9yIHNoYWRvdyB0cmVlcy4gTWFpbiBkb2N1bWVudCBpbmxpbmUg
c3R5bGVzaGVldHMgYXJlIGdlbmVyYWxseSB1bmlxdWUgYW5kIGNhbid0IGJlIHNoYXJlZCBiZXR3
ZWVuIGRvY3VtZW50cy4KICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSByZWxheGVkIHdoZW4g
YSBzdHlsZXNoZWV0IGRvZXMgbm90IGNvbnRhaW4gZG9jdW1lbnQtcmVsYXRpdmUgVVJMcyAob3Ig
I3VybHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKaW5kZXggZWM3ZGU5NmI4ZDM3NzM3
YmYxMTAxMzZiNTIyMjk1YjdlOThhMTZhYi4uYjZkZGRlM2MzYjFmMDgyYjliM2NmYzMzNzg0MGVh
MzJmMjQyNmM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCkBAIC02Miw3ICs2Miw3
IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQgZmluYWwgOiBwdWJsaWMgVUlFdmVudFdpdGhLZXlTdGF0
ZSB7CiAKICAgICAgICAgLy8gTGVnYWN5LgogICAgICAgICBTdHJpbmcga2V5SWRlbnRpZmllcjsK
LSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGtleUxvY2F0aW9uOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBrZXlMb2NhdGlvbjsKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxL
ZXlib2FyZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBJbml0
JiBpbml0aWFsaXplciwgSXNUcnVzdGVkIGlzVHJ1c3RlZCA9IElzVHJ1c3RlZDo6Tm8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCmluZGV4IDY1NWNkMWZj
NDJiYzY2MjlkYjAzMjJmNWVjMmVjOGY3MzQ0MGUwNDAuLjkwOTYxYjhlY2I4MjMzYWNlNjc2NTk2
NThhNTQ3ZjFiMzVkNzM0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNz
aWNTY3JpcHQuY3BwCkBAIC01MSwxNSArNTEsMTUgQEAgYm9vbCBMb2FkYWJsZUNsYXNzaWNTY3Jp
cHQ6OmlzTG9hZGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9jYWNoZWRTY3JpcHQtPmlzTG9hZGVk
KCk7CiB9CiAKLU9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2lj
U2NyaXB0OjplcnJvcigpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJv
cj4gTG9hZGFibGVDbGFzc2ljU2NyaXB0OjplcnJvcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fZXJy
b3IpCiAgICAgICAgIHJldHVybiBtX2Vycm9yOwogCiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0LT5l
cnJvck9jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBFcnJvciB7IEVycm9yVHlwZTo6Q2FjaGVk
U2NyaXB0LCBOdWxsb3B0IH07CisgICAgICAgIHJldHVybiBFcnJvciB7IEVycm9yVHlwZTo6Q2Fj
aGVkU2NyaXB0LCBzdGQ6Om51bGxvcHQgfTsKIAotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXND
YW5jZWxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVD
bGFzc2ljU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmgKaW5kZXggZmUyNTk1MDIzNDNkMmUzZjk3ZmMxNGRhZmZiZmVkOWE4ZmVkMWQzOC4uYWQ0MWRj
MmFiN2Q0MWQwZjE1YThkYjIyYTBkMDU0NjYzOTRkY2FhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBMb2FkYWJs
ZUNsYXNzaWNTY3JpcHQgZmluYWwgOiBwdWJsaWMgTG9hZGFibGVTY3JpcHQsIHByaXZhdGUgQ2Fj
aGVkUmVzb3VyYwogCiAgICAgc3RhdGljIFJlZjxMb2FkYWJsZUNsYXNzaWNTY3JpcHQ+IGNyZWF0
ZShDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+JiYpOwogICAgIGJvb2wgaXNMb2Fk
ZWQoKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCBmaW5h
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgd2FzQ2FuY2VsZWQoKSBjb25zdCBmaW5hbDsKIAogICAgIENhY2hlZFNjcmlwdCYgY2FjaGVk
U2NyaXB0KCkgeyByZXR1cm4gKm1fY2FjaGVkU2NyaXB0OyB9CkBAIC01OCw3ICs1OCw3IEBAIGNs
YXNzIExvYWRhYmxlQ2xhc3NpY1NjcmlwdCBmaW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCwg
cHJpdmF0ZSBDYWNoZWRSZXNvdXJjCiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYpIGZpbmFsOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBt
X2NhY2hlZFNjcmlwdDsKLSAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7IE51bGxvcHQgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgc3RkOjpudWxsb3B0IH07CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlTW9kdWxlU2NyaXB0LmNwcAppbmRleCBj
YTE4ZTY4ZGI0MzA0ZTBmNjRhYjg3ZTgxNTc2NjMxMTA1NzFhNDgyLi44NDI4N2VlN2IxYTNlNzI0
MWZhN2UxZjA3Y2U5OGE1NGUwOWFmZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVNb2R1bGVTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJs
ZU1vZHVsZVNjcmlwdC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBMb2FkYWJsZU1vZHVsZVNj
cmlwdDo6aXNMb2FkZWQoKSBjb25zdAogICAgIHJldHVybiBtX21vZHVsZVNjcmlwdC0+aXNMb2Fk
ZWQoKTsKIH0KIAotT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBMb2FkYWJsZU1vZHVs
ZVNjcmlwdDo6ZXJyb3IoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJy
b3I+IExvYWRhYmxlTW9kdWxlU2NyaXB0OjplcnJvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
bW9kdWxlU2NyaXB0LT5lcnJvcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0xvYWRhYmxlTW9kdWxlU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1
bGVTY3JpcHQuaAppbmRleCAwY2ZkMGQ2N2FjYjc5ZTA3NGEzNWQxNDEzNmUyNWYyYjk1ZjZjMWZi
Li5kZGVhOWY4Y2IwNTBhYWJiYmMxZGRiZDM3OTgxNjAyYjUwNmU2YjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTG9hZGFibGVNb2R1bGVTY3JpcHQuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBM
b2FkYWJsZU1vZHVsZVNjcmlwdCBmaW5hbCA6IHB1YmxpYyBMb2FkYWJsZVNjcmlwdCwgcHJpdmF0
ZSBDYWNoZWRNb2R1bGVTYwogICAgIHN0YXRpYyBSZWY8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IGNy
ZWF0ZShDYWNoZWRNb2R1bGVTY3JpcHQmKTsKIAogICAgIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBm
aW5hbDsKLSAgICBPcHRpb25hbDxFcnJvcj4gZXJyb3IoKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgd2FzQ2FuY2Vs
ZWQoKSBjb25zdCBmaW5hbDsKIAogICAgIENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0
KCkgeyByZXR1cm4gbV9tb2R1bGVTY3JpcHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Mb2FkYWJsZVNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
U2NyaXB0LmgKaW5kZXggM2FkMTdjNTU5YjQ3MzM3MGJmNzZjNGRhN2VkNTQ4MGIxZTQ3MTI4ZC4u
YmEyMmZiMTViODE0ZDcxN2Q4ZDI3NGM4MDQ2ZmE5NTBlMjEzOTgxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0xvYWRhYmxlU2NyaXB0LmgKQEAgLTUxLDEzICs1MSwxMyBAQCBjbGFzcyBMb2FkYWJsZVNjcmlw
dCA6IHB1YmxpYyBSZWZDb3VudGVkPExvYWRhYmxlU2NyaXB0PiB7CiAKICAgICBzdHJ1Y3QgRXJy
b3IgewogICAgICAgICBFcnJvclR5cGUgdHlwZTsKLSAgICAgICAgT3B0aW9uYWw8Q29uc29sZU1l
c3NhZ2U+IGNvbnNvbGVNZXNzYWdlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnNvbGVNZXNz
YWdlPiBjb25zb2xlTWVzc2FnZTsKICAgICB9OwogCiAgICAgdmlydHVhbCB+TG9hZGFibGVTY3Jp
cHQoKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIE9wdGlvbmFsPEVycm9yPiBlcnJvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB3
YXNDYW5jZWxlZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFNjcmlw
dEVsZW1lbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IDcxM2Q3
M2Q0NTE0ODYwZjQ1MmFiMGE1MDAzZTVkMjQyNWM0M2IwY2IuLmZlOWMyYzU5MWQ4ZGI2ZDcyYzJi
NDc2ZjNlNjY0MmM2ZmMzYjQ2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIGlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChFeGVjU3Rh
dGUmIHN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIEluCiB7CiB9CiAKLWlubGluZSBN
ZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBP
cHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0Pj4mJiBwb3J0cykKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJj
ZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogICAgIDog
RXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV9k
YXRhVHlwZShEYXRhVHlwZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKICAgICAsIG1fZGF0YUFzU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoZGF0YSkpCkBAIC05Niw3ICs5Niw3IEBAIGlubGlu
ZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4pCiB7CiB9CiAKLVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzLCBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNl
KQorUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiYgcG9ydHMsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6
b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJ
ZCwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBvcnRzKSkpOwogfQpAQCAtMTM1LDcgKzEzNSw3
IEBAIE1lc3NhZ2VFdmVudDo6fk1lc3NhZ2VFdmVudCgpCiB7CiB9CiAKLXZvaWQgTWVzc2FnZUV2
ZW50Ojppbml0TWVzc2FnZUV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgSlNWYWx1ZSBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9uYWw8
TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+
JiYgcG9ydHMpCit2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIEpTVmFsdWUgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJj
ZSwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgcG9ydHMpCiB7CiAgICAgaWYgKGRpc3Bh
dGNoZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTWVzc2Fn
ZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwKICAgICBtX3BvcnRzID0gV1RGTW92ZShwb3J0cyk7CiB9CiAKLXZvaWQgTWVz
c2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKK3ZvaWQgTWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2Vs
YWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3Nh
Z2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBv
cnRzKQogewogICAgIGlmIChkaXNwYXRjaGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaAppbmRleCA0ZTY5NGQ0MTRhNDhlMGFmZWU4YjZiZjAwNTQ3ODU1NTJi
MThkMmUzLi43MTBhYWNmODQxZWQzNjMwZDY3Y2RiMTI4MTBiZmRjYjIxNjBhMzkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+
OwogCiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYg
b3JpZ2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxN
ZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlID0gTnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxN
ZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNv
bnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50
U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkKTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0pOwogICAgIHN0YXRpYyBSZWY8TWVz
c2FnZUV2ZW50PiBjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
OwpAQCAtNTMsMTUgKzUzLDE1IEBAIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBF
dmVudCB7CiAgICAgICAgIEpTQzo6SlNWYWx1ZSBkYXRhOwogICAgICAgICBTdHJpbmcgb3JpZ2lu
OwogICAgICAgICBTdHJpbmcgbGFzdEV2ZW50SWQ7Ci0gICAgICAgIE9wdGlvbmFsPE1lc3NhZ2VF
dmVudFNvdXJjZT4gc291cmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4gc291cmNlOwogICAgICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7
CiAgICAgfTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCA9IElzVHJ1
c3RlZDo6Tm8pOwogCiAgICAgdmlydHVhbCB+TWVzc2FnZUV2ZW50KCk7CiAKLSAgICB2b2lkIGlu
aXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIEpTQzo6SlNWYWx1ZSBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgT3B0aW9uYWw8TWVz
c2FnZUV2ZW50U291cmNlPiYmLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7Ci0gICAg
dm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5C
dWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBP
cHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYmKTsKKyAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIEpTQzo6
SlNWYWx1ZSBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZl
bnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYsIFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgbGFzdEV2ZW50SWQsIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYm
LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIG9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYXN0
RXZlbnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV2ZW50SWQ7IH0KQEAgLTkyLDcgKzkyLDcg
QEAgY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKIHByaXZhdGU6CiAg
ICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgTWVzc2FnZUV2ZW50KEpTQzo6RXhlY1N0YXRlJiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgSW5pdCYmLCBJc1RydXN0ZWQpOwotICAgIE1lc3NhZ2VFdmVudChS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+
JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKKyAgICBNZXNzYWdlRXZlbnQoUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3Vy
Y2U+JiYsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmKTsKICAgICBNZXNzYWdlRXZlbnQo
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsK
ICAgICBNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
bik7CiAgICAgTWVzc2FnZUV2ZW50KFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJs
aWMgRXZlbnQgewogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9kYXRhQXNBcnJheUJ1ZmZlcjsK
ICAgICBTdHJpbmcgbV9vcmlnaW47CiAgICAgU3RyaW5nIG1fbGFzdEV2ZW50SWQ7Ci0gICAgT3B0
aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiBtX3NvdXJjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPE1l
c3NhZ2VFdmVudFNvdXJjZT4gbV9zb3VyY2U7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IG1fcG9ydHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAK
aW5kZXggZjE3MDAxZmIyNjliYmMxOWJjODYyNzRlNTdmMmQ1NWFmMWM2ZGY0ZC4uMzI1NTc5ZGNj
NDMwZjdmYWZkNzAxOThjMmRlOGM3ZTcxMGM2ZGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVyLmNwcApAQCAtODAsOSArODAsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNdXRh
dGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IEluaXQmIGluaXQpCiAgICAg
ICAgIG9wdGlvbnMgfD0gQ2hpbGRMaXN0OwogICAgIGlmIChpbml0LnN1YnRyZWUpCiAgICAgICAg
IG9wdGlvbnMgfD0gU3VidHJlZTsKLSAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1
ZU9yKGZhbHNlKSkKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1ZV9vcihmYWxz
ZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlT2xkVmFsdWU7Ci0gICAgaWYgKGluaXQu
Y2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQorICAgIGlmIChpbml0LmNoYXJh
Y3RlckRhdGFPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQ2hh
cmFjdGVyRGF0YU9sZFZhbHVlOwogCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGF0dHJpYnV0
ZUZpbHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5oCmluZGV4IDAzNWRiNjRm
NDM2ZjU5YmY2OTQ4YTVhNDliZmZlNDQ3Mjg3ZTYwMDAuLmI3YzcxYmQ1MTEyODk2Mzg5N2Y2M2Q4
MjllZGNjMTEzOWU4NDMyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaApA
QCAtNzMsMTIgKzczLDEyIEBAIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxNdXRhdGlvbk9ic2VydmVyPiB7CiAKICAgICBzdHJ1Y3QgSW5pdCB7CiAgICAgICAgIGJv
b2wgY2hpbGRMaXN0OwotICAgICAgICBPcHRpb25hbDxib29sPiBhdHRyaWJ1dGVzOwotICAgICAg
ICBPcHRpb25hbDxib29sPiBjaGFyYWN0ZXJEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IGF0dHJpYnV0ZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0
YTsKICAgICAgICAgYm9vbCBzdWJ0cmVlOwotICAgICAgICBPcHRpb25hbDxib29sPiBhdHRyaWJ1
dGVPbGRWYWx1ZTsKLSAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY2hhcmFjdGVyRGF0YU9sZFZhbHVl
OwotICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYXR0cmlidXRlRmlsdGVyOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGF0dHJpYnV0ZU9sZFZhbHVlOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGNoYXJhY3RlckRhdGFPbGRWYWx1ZTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8U3RyaW5nPj4gYXR0cmlidXRlRmlsdGVyOwogICAgIH07CiAKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBvYnNlcnZlKE5vZGUmLCBjb25zdCBJbml0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDdkMWZlNjQ4OThiMGIyODcz
ZmE0NDRlZDI4ZWJmY2VhY2MxYWNmMjIuLjlhZDllN2IzNTJhZThmYzYzOTk2NThiZjI5NGQzZTUw
OTg3NmRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNr
U3R5bGVTaGVldCgpCiAjZW5kaWYKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTdHJp
bmcgY2hhcnNldCA9IGF0dHJzLmdldCgiY2hhcnNldCIpOwotICAgICAgICAgICAgICAgIENhY2hl
ZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIE51bGxv
cHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNo
YXJzZXQpKTsKKyAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVs
dENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBzdGQ6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgp
ID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKIAogICAgICAgICAg
ICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCku
cmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggM2NiYTk0YmQwYzA1NjBiNmE4YWE5
MmJiOWE5YWU2MzJlMTE4OGE4Ni4uNGRhZGZiYWE0YmRlNDJkYzI3ZTI3MjVmNGI4YTM1NjM3MDNh
NjUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNzcsMTEgKzc3LDEx
IEBAIHZvaWQgUHNldWRvRWxlbWVudDo6Y2xlYXJIb3N0RWxlbWVudCgpCiAgICAgbV9ob3N0RWxl
bWVudCA9IG51bGxwdHI7CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gUHNldWRvRWxlbWVu
dDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqKQorc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFBzZXVkb0VsZW1l
bnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKikKIHsKICAgICBhdXRvKiBzdHlsZSA9IG1faG9zdEVsZW1lbnQtPnJl
bmRlcmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKG1fcHNldWRvSWQsICZwYXJlbnRTdHlsZSk7
CiAgICAgaWYgKCFzdHlsZSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIoKnN0eWxlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCmluZGV4IDUy
NjllZGIxOGJlNjAzMzY1M2YzZWU1YmI5YmUwZjk2OTA4ZDYzNGEuLjM2N2FkYTU3NmIyODcyYjk3
NjczYTQyNDkyZjEwOTE3NWRhMDk1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
c2V1ZG9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBQc2V1ZG9FbGVtZW50IGZpbmFsIDogcHVibGljIEVsZW1l
bnQgewogICAgIEVsZW1lbnQqIGhvc3RFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0RWxl
bWVudDsgfQogICAgIHZvaWQgY2xlYXJIb3N0RWxlbWVudCgpOwogCi0gICAgT3B0aW9uYWw8RWxl
bWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCmluZGV4IDU5N2M5MmY1N2NlZTM2ZmQwNzY2NDk1ZWRj
ZDYxZmIxOTBhN2U2Y2YuLjcxYzkyY2RmYzllMWE0NmUzYzZlMTE5YjIyYmMzYmRmNmFlZjUyM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKQEAgLTU4LDcgKzU4LDcg
QEAgY2xhc3MgUmFuZ2VCb3VuZGFyeVBvaW50IHsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9k
ZT4gbV9jb250YWluZXJOb2RlOwotICAgIG11dGFibGUgT3B0aW9uYWw8dW5zaWduZWQ+IG1fb2Zm
c2V0SW5Db250YWluZXIgeyAwIH07CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBtX29mZnNldEluQ29udGFpbmVyIHsgMCB9OwogICAgIFJlZlB0cjxOb2RlPiBtX2NoaWxkQmVm
b3JlQm91bmRhcnk7CiB9OwogCkBAIC0xMzUsNyArMTM1LDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VC
b3VuZGFyeVBvaW50OjpzZXRUb0JlZm9yZUNoaWxkKE5vZGUmIGNoaWxkKQogICAgIEFTU0VSVChj
aGlsZC5wYXJlbnROb2RlKCkpOwogICAgIG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA9IGNoaWxkLnBy
ZXZpb3VzU2libGluZygpOwogICAgIG1fY29udGFpbmVyTm9kZSA9IGNoaWxkLnBhcmVudE5vZGUo
KTsKLSAgICBtX29mZnNldEluQ29udGFpbmVyID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gTnVs
bG9wdCA6IE9wdGlvbmFsPHVuc2lnbmVkPigwKTsKKyAgICBtX29mZnNldEluQ29udGFpbmVyID0g
bV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4oMCk7CiB9CiAKIGlubGluZSB2b2lkIFJhbmdlQm91bmRhcnlQb2ludDo6c2V0VG9BZnRl
ckNoaWxkKE5vZGUmIGNoaWxkKQpAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSB2b2lkIFJhbmdl
Qm91bmRhcnlQb2ludDo6c2V0VG9BZnRlckNoaWxkKE5vZGUmIGNoaWxkKQogICAgIEFTU0VSVChj
aGlsZC5wYXJlbnROb2RlKCkpOwogICAgIG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA9ICZjaGlsZDsK
ICAgICBtX2NvbnRhaW5lck5vZGUgPSBjaGlsZC5wYXJlbnROb2RlKCk7Ci0gICAgbV9vZmZzZXRJ
bkNvbnRhaW5lciA9IG1fY2hpbGRCZWZvcmVCb3VuZGFyeSA/IE51bGxvcHQgOiBPcHRpb25hbDx1
bnNpZ25lZD4oMCk7CisgICAgbV9vZmZzZXRJbkNvbnRhaW5lciA9IG1fY2hpbGRCZWZvcmVCb3Vu
ZGFyeSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KDApOwogfQogCiBp
bmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnNldFRvU3RhcnRPZk5vZGUoUmVmPE5vZGU+
JiYgY29udGFpbmVyKQpAQCAtMTYxLDcgKzE2MSw3IEBAIGlubGluZSB2b2lkIFJhbmdlQm91bmRh
cnlQb2ludDo6c2V0VG9FbmRPZk5vZGUoUmVmPE5vZGU+JiYgY29udGFpbmVyKQogICAgICAgICBt
X2NoaWxkQmVmb3JlQm91bmRhcnkgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
Y2hpbGRCZWZvcmVCb3VuZGFyeSA9IG1fY29udGFpbmVyTm9kZS0+bGFzdENoaWxkKCk7Ci0gICAg
ICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVmb3JlQm91bmRhcnkgPyBOdWxsb3B0
IDogT3B0aW9uYWw8dW5zaWduZWQ+KDApOworICAgICAgICBtX29mZnNldEluQ29udGFpbmVyID0g
bV9jaGlsZEJlZm9yZUJvdW5kYXJ5ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4oMCk7CiAgICAgfQogfQogCkBAIC0xNzcsNyArMTc3LDcgQEAgaW5saW5lIHZvaWQgUmFu
Z2VCb3VuZGFyeVBvaW50OjpjaGlsZEJlZm9yZVdpbGxCZVJlbW92ZWQoKQogCiBpbmxpbmUgdm9p
ZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OmludmFsaWRhdGVPZmZzZXQoKSBjb25zdAogewotICAgIG1f
b2Zmc2V0SW5Db250YWluZXIgPSBOdWxsb3B0OworICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmFuZ2VCb3Vu
ZGFyeVBvaW50JiBhLCBjb25zdCBSYW5nZUJvdW5kYXJ5UG9pbnQmIGIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggNmJlMGZhN2FhNjYzMDA2NGM2NjBmZTVmNWVmMjNlNTIz
M2E0MjZhMS4uMzUwODczODBlNzUzYjdhOWJiNjAzMjZlZmNiYmY2ZjcxYWVkYWExMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgU2Ny
aXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAgICBtX2VsZW1lbnQuZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKIH0KIAotT3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVu
dDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXBlU3VwcG9ydCBzdXBwb3J0TGVnYWN5VHlw
ZXMpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlw
dEVsZW1lbnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBvcnQgc3VwcG9ydExl
Z2FjeVR5cGVzKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBpc0xlZ2FjeVN1cHBvcnRlZEphdmFT
Y3JpcHRMYW5ndWFnZSgpIGlzIG5vdCB2YWxpZCBIVE1MNS4gSXQgaXMgdXNlZCBoZXJlIHRvIG1h
aW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgbGF5b3V0IHRlc3Rz
LiBUaGUgc3BlY2lmaWMgdmlvbGF0aW9ucyBhcmU6CiAgICAgLy8gLSBBbGxvd2luZyB0eXBlPWph
dmFzY3JpcHQuIHR5cGU9IHNob3VsZCBvbmx5IHN1cHBvcnQgTUlNRSB0eXBlcywgc3VjaCBhcyB0
ZXh0L2phdmFzY3JpcHQuCkBAIC0xNTYsNyArMTU2LDcgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVu
dDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lU
eXAKICAgICAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwogICAgICAgICBpZiAo
aXNMZWdhY3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UobGFuZ3VhZ2UpKQogICAgICAgICAg
ICAgcmV0dXJuIFNjcmlwdFR5cGU6OkNsYXNzaWM7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBpZiAoTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUodHlwZS5zdHJpcFdoaXRlU3BhY2Uo
KSkpCiAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwpAQCAtMTY4LDE2ICsxNjgs
MTYgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6
ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXAKICAgICAvLyBPbmNlICJkZWZlciIgaXMgaW1w
bGVtZW50ZWQsIHdlIGNhbiByZWNvbnNpZGVyIGVuYWJsaW5nIG1vZHVsZXMgaW4gWEhUTUwuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzM4NwogICAg
IGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBz
ZXR0aW5ncyA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0
aW5ncyB8fCAhc2V0dGluZ3MtPmVzNk1vZHVsZXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2F0dHItc2NyaXB0LXR5
cGUKICAgICAvLyBTZXR0aW5nIHRoZSBhdHRyaWJ1dGUgdG8gYW4gQVNDSUkgY2FzZS1pbnNlbnNp
dGl2ZSBtYXRjaCBmb3IgdGhlIHN0cmluZyAibW9kdWxlIiBtZWFucyB0aGF0IHRoZSBzY3JpcHQg
aXMgYSBtb2R1bGUgc2NyaXB0LgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0eXBlLCAibW9kdWxlIikpCiAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpNb2R1bGU7Ci0g
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gaHR0
cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI3ByZXBhcmUtYS1zY3JpcHQK
QEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQoY29u
c3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uLCBMZWdhYwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBTY3JpcHRUeXBlIHNjcmlwdFR5cGUgPSBTY3JpcHRUeXBlOjpDbGFz
c2ljOwotICAgIGlmIChPcHRpb25hbDxTY3JpcHRUeXBlPiByZXN1bHQgPSBkZXRlcm1pbmVTY3Jp
cHRUeXBlKHN1cHBvcnRMZWdhY3lUeXBlcykpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8U2NyaXB0
VHlwZT4gcmVzdWx0ID0gZGV0ZXJtaW5lU2NyaXB0VHlwZShzdXBwb3J0TGVnYWN5VHlwZXMpKQog
ICAgICAgICBzY3JpcHRUeXBlID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00MzgsOCArNDM4LDggQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVj
dXRlTW9kdWxlU2NyaXB0KENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0KQogCiB2b2lk
IFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KExvYWRhYmxlU2Ny
aXB0JiBsb2FkYWJsZVNjcmlwdCkKIHsKLSAgICBpZiAoT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6
OkVycm9yPiBlcnJvciA9IGxvYWRhYmxlU2NyaXB0LmVycm9yKCkpIHsKLSAgICAgICAgaWYgKE9w
dGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5j
b25zb2xlTWVzc2FnZSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6RXJy
b3I+IGVycm9yID0gbG9hZGFibGVTY3JpcHQuZXJyb3IoKSkgeworICAgICAgICBpZiAoc3RkOjpv
cHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UgPSBlcnJvci0+
Y29uc29sZU1lc3NhZ2UpCiAgICAgICAgICAgICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5hZGRDb25z
b2xlTWVzc2FnZShtZXNzYWdlLT5zb3VyY2UsIG1lc3NhZ2UtPmxldmVsLCBtZXNzYWdlLT5tZXNz
YWdlKTsKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgfSBlbHNlIGlmICghbG9h
ZGFibGVTY3JpcHQud2FzQ2FuY2VsZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgK
aW5kZXggZjQxNGI0YjhiYjM1MTIwNjBmZDY5YTVmYTU4OWM3MDA4YWE2YTY2NC4uNmMwODY4ODJm
ZjMzODQwMmI1Yzk4OTE4YzVlNTkzZTFlNmZjNmJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5oCkBAIC05MSw3ICs5MSw3IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQgewogcHJpdmF0ZToK
ICAgICB2b2lkIGV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KExvYWRhYmxlU2NyaXB0Jik7
CiAKLSAgICBPcHRpb25hbDxTY3JpcHRUeXBlPiBkZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5
cGVTdXBwb3J0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdFR5cGU+IGRldGVybWlu
ZVNjcmlwdFR5cGUoTGVnYWN5VHlwZVN1cHBvcnQpIGNvbnN0OwogICAgIGJvb2wgaWdub3Jlc0xv
YWRSZXF1ZXN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc1NjcmlwdEZvckV2ZW50U3VwcG9ydGVkKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuY3BwCmluZGV4IGI4YjQxNmYwNjcwY2Iz
MWMxYjMxNTk3NGIzM2IyY2Y3ODQ5NGI3MzEuLjk2Y2M3MzlmYzYyYjljNTUzYmE5ODE1NDNmNzJl
ZWQwMTE1MDYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNvZGVyLmNwcApAQCAtOTUsOSArOTUs
OSBAQCBzdGF0aWMgc2l6ZV90IGNvZGVVbml0Qnl0ZVNpemUoY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZykKICAgICByZXR1cm4gMjsKIH0KIAotRXhjZXB0aW9uT3I8U3RyaW5nPiBUZXh0RGVj
b2Rlcjo6ZGVjb2RlKE9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+IGlucHV0LCBE
ZWNvZGVPcHRpb25zIG9wdGlvbnMpCitFeGNlcHRpb25PcjxTdHJpbmc+IFRleHREZWNvZGVyOjpk
ZWNvZGUoc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlPiBpbnB1dCwgRGVj
b2RlT3B0aW9ucyBvcHRpb25zKQogewotICAgIE9wdGlvbmFsPEJ1ZmZlclNvdXJjZT4gaW5wdXRC
dWZmZXI7CisgICAgc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U+IGlucHV0QnVmZmVyOwogICAg
IGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBudWxscHRyOwogICAgIHNpemVfdCBsZW5ndGggPSAwOwog
ICAgIGlmIChpbnB1dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHREZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaAppbmRleCBhYzNkZDFlMDU1
YmRmZjMxYzJmOGZjNzIwMzNjOTY0MjVkZGEzZTNlLi5lNDIwMTI0M2E1NTRjZGFiODAxMzc0Mzdm
MzgwYzlmZTQwNWRkNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dERlY29kZXIuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBUZXh0RGVjb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHREZWNvZGVyPiB7
CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBmYXRhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fb3B0aW9ucy5mYXRhbDsgfQogICAgIGJvb2wgaWdub3JlQk9NKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcHRpb25zLmlnbm9yZUJPTTsgfQotICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gZGVj
b2RlKE9wdGlvbmFsPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGU+LCBEZWNvZGVPcHRpb25zKTsK
KyAgICBFeGNlcHRpb25PcjxTdHJpbmc+IGRlY29kZShzdGQ6Om9wdGlvbmFsPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGU+LCBEZWNvZGVPcHRpb25zKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcg
cHJlcGVuZEJPTUlmTmVjZXNzYXJ5KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKaW5kZXggY2IyOGQxZjBmMWY4MDAwY2I3Yzk0NDQ2
MjdiMWMzZjU2NzI1ZWE0MC4uZWNlNjhmMWQ1OGJmNzk4NDE1ZGVjNTEyZTMxMDliOGNkMjM4MGVk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCkBAIC00
NCw3ICs0NCw3IEBAIFVzZXJHZXN0dXJlVG9rZW46On5Vc2VyR2VzdHVyZVRva2VuKCkKICAgICAg
ICAgb2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1Vc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1
cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+IHN0YXRlLCBE
b2N1bWVudCogZG9jdW1lbnQpCitVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRp
Y2F0b3Ioc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4gc3RhdGUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fcHJldmlvdXNUb2tlbihjdXJyZW50VG9rZW4oKSkK
IHsKICAgICAvLyBTaWxlbnRseSBpZ25vcmUgVXNlckdlc3R1cmVJbmRpY2F0b3JzIG9uIG5vbiBt
YWluIHRocmVhZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCmlu
ZGV4IDBhYjA3ODQ1NmYzYzE3MGQ5OWZjYzdlN2YwZWQ2ZjU0ZmRmYmM1NjIuLmYwNDRmNjVhYTE2
ZDFlYTZkMzZhOWJiZWQ1NzMwMjM1Yjg0MTdiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIHsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwcm9jZXNzaW5nVXNlckdl
c3R1cmVGb3JNZWRpYSgpOwogCiAgICAgLy8gSWYgYSBkb2N1bWVudCBpcyBwcm92aWRlZCwgaXRz
IGxhc3Qga25vd24gdXNlciBnZXN0dXJlIHRpbWVzdGFtcCBpcyB1cGRhdGVkLgotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3Np
bmdVc2VyR2VzdHVyZVN0YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgVXNlckdlc3R1cmVJbmRpY2F0b3Ioc3RkOjpvcHRpb25hbDxQcm9jZXNz
aW5nVXNlckdlc3R1cmVTdGF0ZT4sIERvY3VtZW50KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRv
a2VuPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflVzZXJHZXN0dXJlSW5kaWNhdG9yKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXgg
Y2Y1OTgwNDRhNDNlYjYyOThlOWExZmFjYTY4OWFmM2NkNTU3ZmE3NC4uZDIwODAwMDA0YjM3ZWYw
MTA5YTE5MGMyYjA5YzA0MWJmNDgwMzJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE1MzUsMTEgKzE1MzUsMTEgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBzdGFydE9mUGFyYWdyYXAKICAgICB9CiB9CiAKLU9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+
IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzaG91bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpzaG91bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpIGNvbnN0CiB7CiAgICAgYXV0byBlbXB0
eUxpc3RJdGVtID0gZW5jbG9zaW5nRW1wdHlMaXN0SXRlbShlbmRpbmdTZWxlY3Rpb24oKS52aXNp
YmxlU3RhcnQoKSk7CiAgICAgaWYgKCFlbXB0eUxpc3RJdGVtKQotICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbGlzdE5vZGUg
PSBlbXB0eUxpc3RJdGVtLT5wYXJlbnROb2RlKCk7CiAgICAgLy8gRklYTUU6IENhbid0IHdlIGRv
IHNvbWV0aGluZyBiZXR0ZXIgd2hlbiB0aGUgaW1tZWRpYXRlIHBhcmVudCB3YXNuJ3QgYSBsaXN0
IG5vZGU/CkBAIC0xNTQ3LDcgKzE1NDcsNyBAQCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKQogICAg
ICAgICB8fCAoIWxpc3ROb2RlLT5oYXNUYWdOYW1lKHVsVGFnKSAmJiAhbGlzdE5vZGUtPmhhc1Rh
Z05hbWUob2xUYWcpKQogICAgICAgICB8fCAhbGlzdE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKQog
ICAgICAgICB8fCBsaXN0Tm9kZSA9PSBlbXB0eUxpc3RJdGVtLT5yb290RWRpdGFibGVFbGVtZW50
KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQo
KS5wcmV2aW91cyhCYWNrd2FyZERlbGV0aW9uKSwgZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4
IGUxODQyZjlhNTUwZGI0YTM3MjZiMzZhYzMxM2QwZmJhMmRkZjJmOTguLjg1ZjQxOGY3ZGI5MTdj
Y2YwMTQ4YTZmNzRlYmMzOGJlYjA1MDM5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTIwMCw3ICsyMDAsNyBAQCBjbGFzcyBDb21wb3Np
dGVFZGl0Q29tbWFuZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CiAgICAgdm9pZCBjbG9uZVBhcmFn
cmFwaFVuZGVyTmV3RWxlbWVudChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9u
JiBlbmQsIE5vZGUqIG91dGVyTm9kZSwgRWxlbWVudCogYmxvY2tFbGVtZW50KTsKICAgICB2b2lk
IGNsZWFudXBBZnRlckRlbGV0aW9uKFZpc2libGVQb3NpdGlvbiBkZXN0aW5hdGlvbiA9IFZpc2li
bGVQb3NpdGlvbigpKTsKICAgICAKLSAgICBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBzaG91
bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8Vmlz
aWJsZVNlbGVjdGlvbj4gc2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKSBjb25zdDsKICAg
ICBib29sIGJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCk7CiAgICAgYm9vbCBicmVha091dE9mRW1w
dHlNYWlsQmxvY2txdW90ZWRQYXJhZ3JhcGgoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5k
ZXggYWQxMzQzNWFhZDk5NjFhMzhkM2Y5ZmRhMDBhZjc3Y2M4YTU4NjNkYi4uZDUzNDQ3YTViYmZk
ZDJiODZjNzI1Y2U0ODEwZGI0OTNiNzhkN2NjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTg4
LDcgKzg4LDcgQEAgY2xhc3MgRmlsZSBmaW5hbCA6IHB1YmxpYyBCbG9iIHsKICAgICBTdHJpbmcg
bV9wYXRoOwogICAgIFN0cmluZyBtX25hbWU7CiAKLSAgICBPcHRpb25hbDxpbnQ2NF90PiBtX292
ZXJyaWRlTGFzdE1vZGlmaWVkRGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1fb3Zl
cnJpZGVMYXN0TW9kaWZpZWREYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCmluZGV4IGFmYzk3NjdjYTJkNTU3Mzc1ZDU4ZTkz
ZTA5OWY0YTVkZTUyMGQwNWIuLmI0ZDU4MzZlZGVlNjg3YTQ4ZGE5ZTcyMWM1YjQ3ZWU2NjA3ZmEx
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKQEAgLTYxLDcgKzYxLDcgQEAg
Y2xhc3MgQ2FjaGVkRnJhbWVCYXNlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGE+IG1fY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE7CiAgICAgYm9vbCBtX2lzTWFp
bkZyYW1lOwogICAgIGJvb2wgbV9pc0NvbXBvc2l0ZWQ7Ci0gICAgT3B0aW9uYWw8SGFzSW5zZWN1
cmVDb250ZW50PiBtX2hhc0luc2VjdXJlQ29udGVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc0lu
c2VjdXJlQ29udGVudD4gbV9oYXNJbnNlY3VyZUNvbnRlbnQ7CiAKICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPENhY2hlZEZyYW1lPj4gbV9jaGlsZEZyYW1lczsKIH07CkBAIC03OSw3ICs3OSw3
IEBAIGNsYXNzIENhY2hlZEZyYW1lIDogcHJpdmF0ZSBDYWNoZWRGcmFtZUJhc2UgewogICAgIFdF
QkNPUkVfRVhQT1JUIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKiBjYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRIYXNJbnNlY3VyZUNvbnRlbnQo
SGFzSW5zZWN1cmVDb250ZW50KTsKLSAgICBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhh
c0luc2VjdXJlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW5zZWN1cmVDb250ZW50OyB9
CisgICAgc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW5zZWN1cmVDb250ZW50OyB9CiAKICAgICB1c2luZyBD
YWNoZWRGcmFtZUJhc2U6OmRvY3VtZW50OwogICAgIHVzaW5nIENhY2hlZEZyYW1lQmFzZTo6dmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAppbmRleCBiMWE1NWNjMjk1ZWVhY2Vi
NDM4ODYwODM5ZDlmYzJlYTViMTRlYzc1Li4wMzk1YTJlMGYxYTY1NTI2MTEzNDQ2Y2RmN2JjNGEx
ZDVhZDk3OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCkBAIC0xMzMsNyAr
MTMzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NVG9rZW5MaXN0OjpyZW1vdmUoY29uc3QgQXRv
bWljU3RyaW5nJiB0b2tlbikKICAgICByZXR1cm4gcmVtb3ZlSW50ZXJuYWwoJnRva2VuLnN0cmlu
ZygpLCAxKTsKIH0KIAotRXhjZXB0aW9uT3I8Ym9vbD4gRE9NVG9rZW5MaXN0Ojp0b2dnbGUoY29u
c3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgT3B0aW9uYWw8Ym9vbD4gZm9yY2UpCitFeGNlcHRpb25P
cjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9taWNTdHJpbmcmIHRva2VuLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGZvcmNlKQogewogICAgIGF1dG8gcmVzdWx0ID0gdmFsaWRhdGVU
b2tlbih0b2tlbik7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTE0Miw3ICsx
NDIsNyBAQCBFeGNlcHRpb25Pcjxib29sPiBET01Ub2tlbkxpc3Q6OnRvZ2dsZShjb25zdCBBdG9t
aWNTdHJpbmcmIHRva2VuLCBPcHRpb25hbDxib29sPgogICAgIGF1dG8mIHRva2VucyA9IHRoaXMt
PnRva2VucygpOwogCiAgICAgaWYgKHRva2Vucy5jb250YWlucyh0b2tlbikpIHsKLSAgICAgICAg
aWYgKCFmb3JjZS52YWx1ZU9yKGZhbHNlKSkgeworICAgICAgICBpZiAoIWZvcmNlLnZhbHVlX29y
KGZhbHNlKSkgewogICAgICAgICAgICAgdG9rZW5zLnJlbW92ZUZpcnN0KHRva2VuKTsKICAgICAg
ICAgICAgIHVwZGF0ZUFzc29jaWF0ZWRBdHRyaWJ1dGVGcm9tVG9rZW5zKCk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaAppbmRleCA5Yjk4N2Q5
Yzk0NzZjZDg1MDA0YTFjNjQxOTY5YzBjMzI2NzYxNTk2Li41M2FjNWUyZjRjYmUyYmMzZTk1NjQ1
OWE2N2VmNjU1ZGE2YjVmZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgY2xhc3MgRE9NVG9rZW5MaXN0IHsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBh
ZGQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0
IEF0b21pY1N0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGJvb2w+IHRv
Z2dsZShjb25zdCBBdG9taWNTdHJpbmcmLCBPcHRpb25hbDxib29sPiBmb3JjZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8Ym9vbD4gdG9nZ2xlKGNvbnN0IEF0b21pY1N0cmluZyYs
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZm9yY2UpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxh
Y2UoY29uc3QgQXRvbWljU3RyaW5nJiB0b2tlbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdUb2tl
bik7CiAgICAgRXhjZXB0aW9uT3I8Ym9vbD4gc3VwcG9ydHMoU3RyaW5nVmlldyB0b2tlbik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggNDZiZDM1OWFj
MmFhMGUwMjg5YjAwY2ZhYTFkZWY0Y2Y5N2JhYTAzYi4uYzQ4NTM2N2UwNTQ3MDFjODAyNWJjZTZk
ZGYyMDU4OWQ5ZjZlNTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVD
bGljayhFdmVudCYgZXZlbnQpCiAjZW5kaWYKIAogICAgIFNob3VsZFNlbmRSZWZlcnJlciBzaG91
bGRTZW5kUmVmZXJyZXIgPSBoYXNSZWwoUmVsYXRpb246Ok5vUmVmZXJyZXIpID8gTmV2ZXJTZW5k
UmVmZXJyZXIgOiBNYXliZVNlbmRSZWZlcnJlcjsKLSAgICBhdXRvIG5ld0ZyYW1lT3BlbmVyUG9s
aWN5ID0gaGFzUmVsKFJlbGF0aW9uOjpOb09wZW5lcikgPyBtYWtlT3B0aW9uYWwoTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OlN1cHByZXNzKSA6IE51bGxvcHQ7CisgICAgYXV0byBuZXdGcmFtZU9wZW5l
clBvbGljeSA9IGhhc1JlbChSZWxhdGlvbjo6Tm9PcGVuZXIpID8gc3RkOjptYWtlX29wdGlvbmFs
KE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcykgOiBzdGQ6Om51bGxvcHQ7CiAgICAgZnJh
bWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKGNvbXBsZXRlZFVSTCwgdGFyZ2V0KCksICZldmVudCwg
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgc2hvdWxkU2VuZFJlZmVy
cmVyLCBkb2N1bWVudCgpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgp
LCBuZXdGcmFtZU9wZW5lclBvbGljeSwgZG93bmxvYWRBdHRyaWJ1dGUpOwogCiAgICAgc2VuZFBp
bmdzKGNvbXBsZXRlZFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGQxZDNmMjc1YjYyN2ZmNDI5ZWJjNWU5YmE5MWY0Y2QyNTliZDEwY2UuLjY3M2E1
NzRiYTIxNWRiNGYzMTBiODYwZTllN2M1MzFjMDkwNWE5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC00NTgsNyArNDU4LDcgQEAgU3RyaW5nIEhUTUxD
YW52YXNFbGVtZW50Ojp0b0VuY29kaW5nTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
ICAgICByZXR1cm4gbWltZVR5cGUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAotRXhj
ZXB0aW9uT3I8U3RyaW5nPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK0V4Y2VwdGlvbk9yPFN0cmlu
Zz4gSFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICBpZiAoIW1fb3JpZ2luQ2xlYW4p
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTRUNVUklUWV9FUlIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAyZjU3NDA1ZTQ0MDg3Mjc0MGQxYTgwM2Uz
NDAyZDNmMWI3NDM1OGM0Li41NmM0ZmFhOTI3NzIwMWJlOTkwYWVmMGU5OWU5MmQxMjg4YTdmMmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC05Miw4ICs5Miw4
IEBAIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsK
ICNlbmRpZgogCiAgICAgc3RhdGljIFN0cmluZyB0b0VuY29kaW5nTWltZVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiB0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KTsKLSAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKSB7IHJldHVybiB0b0RhdGFVUkwobWltZVR5cGUsIE51bGxvcHQpOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOworICAgIEV4Y2VwdGlvbk9yPFN0
cmluZz4gdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIHsgcmV0dXJuIHRvRGF0YVVS
TChtaW1lVHlwZSwgc3RkOjpudWxsb3B0KTsgfQogCiAgICAgLy8gVXNlZCBmb3IgcmVuZGVyaW5n
CiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCBlMDA5ODAxMjk4OWY0Y2JlNDRkZTk2NjIyMDEwNTdmMTI1MmM2NGJh
Li41ODljYTg5NWQxYmVjNzNkMjQwNTc4YWY1YTExMTY4YjA1Y2VkYjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBpbmxpbmUgQ1NT
VmFsdWVJRCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8oSFRNTEVsZW1lbnQmIGVsZW1l
bnQpCiAKIHVuc2lnbmVkIEhUTUxFbGVtZW50OjpwYXJzZUJvcmRlcldpZHRoQXR0cmlidXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlvbmFsPHVuc2ln
bmVkPiBib3JkZXJXaWR0aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcih2YWx1ZSkpCisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJvcmRlcldpZHRoID0gcGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGJvcmRlcldpZHRoLnZhbHVl
KCk7CiAKICAgICByZXR1cm4gaGFzVGFnTmFtZSh0YWJsZVRhZykgPyAxIDogMDsKQEAgLTQyNCw3
ICs0MjQsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmCiAgICAgaWYgKG5hbWUgPT0gdGFiaW5k
ZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjbGVh
clRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7Ci0gICAgICAgIGVsc2UgaWYgKE9wdGlvbmFs
PGludD4gdGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKKyAgICAgICAgZWxzZSBp
ZiAoc3RkOjpvcHRpb25hbDxpbnQ+IHRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkp
CiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkodGFiSW5kZXgudmFsdWUoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAppbmRleCA3YjZmNmY5OGQyMGViNzZkYzE2ZTRjZTEyODRiZWVmNDNkMTQyNDM2Li4wMTQ0
NGJhNjA5YWU4MmU0YWY5MWZlZjY4Zjg0OGM4YWI2ODExOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgSFRNTEltYWdlRWxlbWVu
dDo6fkhUTUxJbWFnZUVsZW1lbnQoKQogICAgIHNldFBpY3R1cmVFbGVtZW50KG51bGxwdHIpOwog
fQogCi1SZWY8SFRNTEltYWdlRWxlbWVudD4gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlND
b25zdHJ1Y3RvcihEb2N1bWVudCYgZG9jdW1lbnQsIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwg
T3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCkKK1JlZjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1h
Z2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50JiBkb2N1bWVudCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdo
dCkKIHsKICAgICBhdXRvIGltYWdlID0gYWRvcHRSZWYoKm5ldyBIVE1MSW1hZ2VFbGVtZW50KGlt
Z1RhZywgZG9jdW1lbnQpKTsKICAgICBpZiAod2lkdGgpCkBAIC0zODAsNyArMzgwLDcgQEAgdW5z
aWduZWQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMpCiB7CiAgICAgaWYgKCFyZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIGNoZWNrIHRoZSBhdHRy
aWJ1dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlCi0gICAgICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiB3aWR0aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cikpOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiB3aWR0aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cikpOwogICAgICAgICBpZiAod2lkdGgpCiAg
ICAgICAgICAgICByZXR1cm4gd2lkdGgudmFsdWUoKTsKIApAQCAtNDA1LDcgKzQwNSw3IEBAIHVu
c2lnbmVkIEhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodChib29sIGlnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cykKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gY2hlY2sgdGhlIGF0
dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGljaXQgcGl4ZWwgdmFsdWUKLSAgICAgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IGhlaWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0dHIpKTsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gaGVpZ2h0ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0cikpOwogICAgICAgICBpZiAoaGVp
Z2h0KQogICAgICAgICAgICAgcmV0dXJuIGhlaWdodC52YWx1ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDE0OTJhNDNlNjY3MjZjZGNjZWUzYmRjOGY0Zjli
YmZjZjQ4ZDE5YTcuLjUyZjk4YmFmN2I1NmZjNzM4MDRmOTRkNzYwZjNiYzBkZTg2OGFhMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIEhUTUxJbWFnZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBGb3JtTmFt
ZWRJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxJbWFnZUVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwotICAgIHN0
YXRpYyBSZWY8SFRNTEltYWdlRWxlbWVudD4gY3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVu
dCYsIE9wdGlvbmFsPHVuc2lnbmVkPiB3aWR0aCwgT3B0aW9uYWw8dW5zaWduZWQ+IGhlaWdodCk7
CisgICAgc3RhdGljIFJlZjxIVE1MSW1hZ2VFbGVtZW50PiBjcmVhdGVGb3JKU0NvbnN0cnVjdG9y
KERvY3VtZW50Jiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGhlaWdodCk7CiAKICAgICB2aXJ0dWFsIH5IVE1MSW1hZ2VFbGVtZW50KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDE1ZWE1NjcwMjE2
YzNjMDE4Yjk4OGVlZTFlNTcxY2E3MWUxNTJmODguLmNkM2E2MTI5YzFjMDc5ZmNlOTBiMTRjY2Zm
NjgwNTU4Y2JmMDA1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cApAQCAtMzgxLDcgKzM4MSw3IEBAIFN0ZXBSYW5nZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uCiB9CiAKICNpZiBF
TkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLU9wdGlvbmFsPERlY2ltYWw+IEhUTUxJbnB1dEVsZW1l
bnQ6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKK3N0ZDo6
b3B0aW9uYWw8RGVjaW1hbD4gSFRNTElucHV0RWxlbWVudDo6ZmluZENsb3Nlc3RUaWNrTWFya1Zh
bHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+Zmlu
ZENsb3Nlc3RUaWNrTWFya1ZhbHVlKHZhbHVlKTsKIH0KQEAgLTE3NzUsNyArMTc3NSw3IEBAIGJv
b2wgSFRNTElucHV0RWxlbWVudDo6aXNFbXB0eVZhbHVlKCkgY29uc3QKIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1ZhbHVlKQogewogICAgIHVuc2lnbmVkIG9sZEVmZmVjdGl2ZU1heExlbmd0aCA9IGVmZmVjdGl2
ZU1heExlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWF4TGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0
aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVybmFsU2V0TWF4TGVu
Z3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVfb3IoLTEpKTsK
ICAgICBpZiAob2xkRWZmZWN0aXZlTWF4TGVuZ3RoICE9IGVmZmVjdGl2ZU1heExlbmd0aCgpKQog
ICAgICAgICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKQEAgLTE3ODcsNyArMTc4Nyw3IEBAIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6bWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld1ZhbHVlKQogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjptaW5MZW5ndGhBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CiAgICAgaW50IG9s
ZE1pbkxlbmd0aCA9IG1pbkxlbmd0aCgpOwotICAgIGludGVybmFsU2V0TWluTGVuZ3RoKHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFsdWVPcigtMSkpOworICAgIGludGVy
bmFsU2V0TWluTGVuZ3RoKHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihuZXdWYWx1ZSkudmFs
dWVfb3IoLTEpKTsKICAgICBpZiAob2xkTWluTGVuZ3RoICE9IG1pbkxlbmd0aCgpKQogICAgICAg
ICB1cGRhdGVWYWx1ZUlmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggZDA0NWIwYWZkZjM4ZDM1OTEyNzVkYzQwNDZkMmVmY2RmMmY1YTM4ZS4uOGFm
ZmQ5ODExNzU0ZDllNDkyMzYyNTZlNjU1ZDZkYTU1ODNmNTZkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgSFRNTElucHV0RWxl
bWVudCA6IHB1YmxpYyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB7CiAgICAgU3RlcFJhbmdl
IGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0OwogCiAjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCi0gICAgT3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFy
a1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IGZpbmRD
bG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJik7CiAjZW5kaWYKIAogICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0ZXBVcChpbnQgPSAxKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCAzZTQ2ZTRlMzNjYWRkODk5N2UxZGE2NzFj
OWMyMzYyOThkZDE5Y2M4Li4wNDg5ZTg5NjU5MjU1ODU1MmQyZTQ4MDJiODM2ZGJiYzcwODZjZDMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0yNTEsNyArMjUx
LDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgICAgIGJvb2wgbWVk
aWFRdWVyeU1hdGNoZXMgPSB0cnVlOwogICAgICAgICBpZiAoIW1fbWVkaWEuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBPcHRpb25hbDxSZW5kZXJTdHlsZT4gZG9jdW1lbnRTdHlsZTsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7CiAgICAgICAg
ICAgICBpZiAoZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAgICAgICAgICAgICAg
ICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7
CiAgICAgICAgICAgICBhdXRvIG1lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEp
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAg
ICAgICAgYWRkUGVuZGluZ1NoZWV0KGlzQWN0aXZlID8gQWN0aXZlU2hlZXQgOiBJbmFjdGl2ZVNo
ZWV0KTsKIAogICAgICAgICAvLyBMb2FkIHN0eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBuZWVkZWQg
Zm9yIHRoZSByZW5kZXJpbmcgaW1tZWRpYXRlbHkgd2l0aCBsb3cgcHJpb3JpdHkuCi0gICAgICAg
IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgICAgIGlmICghaXNB
Y3RpdmUpCiAgICAgICAgICAgICBwcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5
TG93OwogICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwsIENhY2hlZFJl
c291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHByaW9yaXR5LCBX
VEZNb3ZlKGNoYXJzZXQpKTsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHZvaWQgSFRNTExpbmtFbGVtZW50Ojppbml0aWFs
aXplU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHN0eWxlU2hlZXQsIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQmIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgLy8gRklYTUU6
IG9yaWdpbkNsZWFuIHNob3VsZCBiZSB0dXJuZWQgdG8gZmFsc2UgZXhjZXB0IGlmIGZldGNoIG1v
ZGUgaXMgQ09SUy4KLSAgICBPcHRpb25hbDxib29sPiBvcmlnaW5DbGVhbjsKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG9yaWdpbkNsZWFuOwogICAgIGlmIChjYWNoZWRTdHlsZVNoZWV0Lm9wdGlv
bnMoKS5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykKICAgICAgICAgb3JpZ2luQ2xl
YW4gPSBjYWNoZWRTdHlsZVNoZWV0LmlzQ09SU1NhbWVPcmlnaW4oKTsKIApAQCAtNTEzLDcgKzUx
Myw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTExpbmtFbGVtZW50Ojp0eXBlKCkgY29uc3QK
ICAgICByZXR1cm4gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0cik7CiB9
CiAKLU9wdGlvbmFsPExpbmtJY29uVHlwZT4gSFRNTExpbmtFbGVtZW50OjppY29uVHlwZSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPExpbmtJY29uVHlwZT4gSFRNTExpbmtFbGVtZW50OjppY29uVHlw
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVsQXR0cmlidXRlLmljb25UeXBlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggODQ3MWVjZTc0ZWFhMTMxNDQ2MmI1
YWUzYTY0NmEwZjc1ZDA0NmFmNy4uMGRiMzYwNTM3Y2NiNDA1OTFkYWZjZmQwNTNjMjVjZDI1MzM3
MTllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC01Myw3ICs1Myw3
IEBAIGNsYXNzIEhUTUxMaW5rRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVi
bGljIENhY2hlZFN0eWxlU2hlZXRDbGllbnQsCiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUoKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPExpbmtJY29uVHlwZT4gaWNvblR5cGUoKSBjb25z
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPExpbmtJY29uVHlwZT4gaWNvblR5cGUoKSBjb25zdDsKIAog
ICAgIENTU1N0eWxlU2hlZXQqIHNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9zaGVldC5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IGE4MzViZDBhZGJi
YjU0NzBjNDI1MGFlZDZiZDIzMjE0ODJiOWIxMmUuLmMzZmUyNDY3NWMwNTg5NTEyYmUwNDg5NTE5
MGNjY2ZiZmZjMDM3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBA
IC01OCw3ICs1OCw3IEBAIGNsYXNzIEhUTUxPTGlzdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRN
TEVsZW1lbnQgewogICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgZmluYWw7CiAKLSAgICBPcHRpb25hbDxpbnQ+IG1fc3Rh
cnQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fc3RhcnQ7CiAgICAgdW5zaWduZWQgbV9pdGVt
Q291bnQ7CiAKICAgICBib29sIG1faXNSZXZlcnNlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKaW5kZXggMjE2YmYwZTBmMmI5YmEwZjJmZDdm
YjJjNmFhODkzODYwNmZjNzRhMi4uMmY4ODVkZTQ4NDMxNDhjZGE0OWMzZThmMWZiYTVmMmFiM2Qz
NTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OmNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYgc2VsZQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhUTUxPcHRpb25zQ29sbGVjdGlvbihzZWxlY3QpKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoY29uc3QgT3B0aW9uT3JPcHRH
cm91cEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IE9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBi
ZWZvcmUpCitFeGNlcHRpb25Pcjx2b2lkPiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChjb25z
dCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYgZWxlbWVudCwgY29uc3Qgc3RkOjpvcHRpb25hbDxI
VE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQogewogICAgIHJldHVybiBzZWxlY3RFbGVtZW50KCku
YWRkKGVsZW1lbnQsIGJlZm9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaAppbmRleCA3MGQxNGVjNGFhZWVjZTcyYmE2OTcwNDg3NDk0NzhjYWZiZDA3
NTgyLi4zZjdkZDVhN2ExZGFlMDM4YmQ1NGY1MGRkZGI4N2I3ZjhjMjY0MGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAg
Y2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xs
ZWN0aW9uPEhUTUxPcHRpb25zQ29sbGUKIAogICAgIHVzaW5nIE9wdGlvbk9yT3B0R3JvdXBFbGVt
ZW50ID0gVmFyaWFudDxSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+LCBSZWZQdHI8SFRNTE9wdEdy
b3VwRWxlbWVudD4+OwogICAgIHVzaW5nIEhUTUxFbGVtZW50T3JJbnQgPSBWYXJpYW50PFJlZlB0
cjxIVE1MRWxlbWVudD4sIGludD47Ci0gICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9p
ZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50JiwgY29uc3QgT3B0aW9uYWw8SFRN
TEVsZW1lbnRPckludD4mIGJlZm9yZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
dm9pZD4gYWRkKGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50JiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZShpbnQgaW5kZXgpOwogICAgIHZvaWQgcmVtb3ZlKEhUTUxPcHRpb25FbGVtZW50Jik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNjQ2NDMx
ZWU4OGVhZjBmOWRhNTQ3ZDVmZjBhZThkNDJjMzg0NjM5OS4uNmMzN2U3NjFkZDIxNDI5MjhiZjUw
MmZiZTZiNzA3ZmFmOWExMjU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbnQgSFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2
ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIGxhc3RTZWxlY3RlZExp
c3RJbmRleCgpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6YWRk
KGNvbnN0IE9wdGlvbk9yT3B0R3JvdXBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBPcHRpb25hbDxI
VE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQorRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVs
ZW1lbnQ6OmFkZChjb25zdCBPcHRpb25Pck9wdEdyb3VwRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKQogewogICAgIEhUTUxFbGVt
ZW50KiBiZWZvcmVFbGVtZW50ID0gbnVsbHB0cjsKICAgICBpZiAoYmVmb3JlKSB7CkBAIC00NTgs
NyArNDU4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0
aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAKICAgICBpZiAoZGlmZiA8IDApIHsgLy8gQWRkIGR1bW15
IGVsZW1lbnRzLgogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFkZChI
VE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLnB0cigpLCBOdWxsb3B0KTsKKyAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRkKEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQoKSkucHRyKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0g
d2hpbGUgKCsrZGlmZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5k
ZXggN2I5Nzk5Y2M4MTRjOGE5ODM2MTlkMGQ1NzBhN2U0MjY5ZjMyOTI4NS4uNjNjNDg4ZDQzNmQx
NDdhMWM0OTJhZWEyMjcxMGRhNmNiMGJkODQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudCA6
IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLCBwcml2YXRlIFR5cGVBaAog
CiAgICAgdXNpbmcgT3B0aW9uT3JPcHRHcm91cEVsZW1lbnQgPSBWYXJpYW50PFJlZlB0cjxIVE1M
T3B0aW9uRWxlbWVudD4sIFJlZlB0cjxIVE1MT3B0R3JvdXBFbGVtZW50Pj47CiAgICAgdXNpbmcg
SFRNTEVsZW1lbnRPckludCA9IFZhcmlhbnQ8UmVmUHRyPEhUTUxFbGVtZW50PiwgaW50PjsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgT3B0aW9uT3JPcHRH
cm91cEVsZW1lbnQmLCBjb25zdCBPcHRpb25hbDxIVE1MRWxlbWVudE9ySW50PiYgYmVmb3JlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBhZGQoY29uc3QgT3B0aW9uT3JP
cHRHcm91cEVsZW1lbnQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEhUTUxFbGVtZW50T3JJbnQ+JiBi
ZWZvcmUpOwogCiAgICAgdXNpbmcgTm9kZTo6cmVtb3ZlOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlbW92ZShIVE1MT3B0aW9uRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNjYxNzc4YjhjYjYxMzI1OGE0NWEyM2NmZTgzMmE1OGUw
ODcxMWM3NC4uNzkyOTU0MmQzZDdiY2Y0MDUxYzA2ZjNiNWQ1NTRlZDE1YTI4MDk4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yMDMsMTMgKzIw
MywxMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6Om1heExlbmd0aEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKIHsKLSAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVn
ZXIobmV3VmFsdWUpLnZhbHVlT3IoLTEpKTsKKyAgICBpbnRlcm5hbFNldE1heExlbmd0aChwYXJz
ZUhUTUxOb25OZWdhdGl2ZUludGVnZXIobmV3VmFsdWUpLnZhbHVlX29yKC0xKSk7CiAgICAgdXBk
YXRlVmFsaWRpdHkoKTsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjptaW5MZW5ndGhB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7Ci0gICAgaW50
ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKG5ld1ZhbHVlKS52
YWx1ZU9yKC0xKSk7CisgICAgaW50ZXJuYWxTZXRNaW5MZW5ndGgocGFyc2VIVE1MTm9uTmVnYXRp
dmVJbnRlZ2VyKG5ld1ZhbHVlKS52YWx1ZV9vcigtMSkpOwogICAgIHVwZGF0ZVZhbGlkaXR5KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKaW5kZXggYzNjZTI4NTcy
YjY5YmYxOWNlODNlNGNhODJmZDhlZGMzOTE5MjRhNC4uZjM5NmEzZTMxNWUyYTgzYTRjYjE0Yjhi
MmVhOTdjNjJhZTE5ZWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAK
QEAgLTE3OSw3ICsxNzksNyBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6aGVpZ2h0KCkgY29u
c3QKIAogICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAvLyBDaGVjayB0
aGUgYXR0cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2YWx1ZS4KLSAgICAgICAg
aWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVn
ZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSkp
CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBoZWlnaHQgPSBwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihoZWlnaHRBdHRyKSkpCiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0LnZhbHVlKCk7CiAKICAg
ICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyBoZWlnaHQuCkBAIC0y
MDAsNyArMjAwLDcgQEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6OndpZHRoKCkgY29uc3QKIAog
ICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAvLyBDaGVjayB0aGUgYXR0
cmlidXRlIGZpcnN0IGZvciBhbiBleHBsaWNpdCBwaXhlbCB2YWx1ZS4KLSAgICAgICAgaWYgKE9w
dGlvbmFsPHVuc2lnbmVkPiB3aWR0aCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihlbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdpZHRoQXR0cikpKQorICAgICAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gd2lkdGggPSBwYXJzZUhUTUxOb25OZWdhdGl2
ZUludGVnZXIoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0
dHIpKSkKICAgICAgICAgICAgIHJldHVybiB3aWR0aC52YWx1ZSgpOwogCiAgICAgICAgIC8vIElm
IHRoZSBpbWFnZSBpcyBhdmFpbGFibGUsIHVzZSBpdHMgd2lkdGguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAKaW5kZXggNzU3OGNlMDVkNzlmZDMwMDFiNjRlMjgyMDBiNzdlODBhNzEwMDVkNi4u
M2Q0N2U0NjAyNTFmMzI5ZDIyNmJlMzRhY2Q4MGJmYTA0ZDBkOTY2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcApAQCAtOTU1LDEwICs5NTUsMTAgQEAgdm9pZCBJbnB1dFR5cGU6Omxpc3RB
dHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKIHsKIH0KIAotT3B0aW9uYWw8RGVjaW1hbD4gSW5wdXRU
eXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpCitzdGQ6Om9wdGlv
bmFsPERlY2ltYWw+IElucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERl
Y2ltYWwmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKaW5kZXggZmMzMDUxOTc2YWMxYmQ0NjY2YTBiM2JjYWVhMTZkODRlYmRkNGUyMS4uYzRi
ZTczZDQwMDRkNjhkOTEzMGI5YWI5NDZhMTcwMGU3MDMzZGUyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oCkBAIC0yOTUsNyArMjk1LDcgQEAgY2xhc3MgSW5wdXRUeXBlIHsKIAogI2lmIEVOQUJM
RShEQVRBTElTVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCBsaXN0QXR0cmlidXRlVGFyZ2V0
Q2hhbmdlZCgpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNr
TWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8RGVj
aW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTGlua0ljb25Db2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNv
bGxlY3Rvci5jcHAKaW5kZXggZDAwZTA2YjVkNzNhMWE4NzUzNDlmNTliOWZkNjkxY2JiMWI0MzQz
YS4uNGQyYjZlMWExNWI0ZTYyODFkNGQ5OGYyMjFhMGNlYzFkMjNhNjAwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9MaW5rSWNvbkNvbGxlY3Rvci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgYXV0byBM
aW5rSWNvbkNvbGxlY3Rvcjo6aWNvbnNPZlR5cGVzKE9wdGlvblNldDxMaW5rSWNvblR5cGU+IGlj
b25UeXBlcykgLT4gVmVjdG8KICAgICAgICAgLy8gVGhpcyBpY29uIHNpemUgcGFyc2luZyBpcyBh
IGxpdHRsZSB3b25reSAtIGl0IG9ubHkgcGFyc2VzIHRoZSBmaXJzdAogICAgICAgICAvLyBwYXJ0
IG9mIHRoZSBzaXplLCAiNjB4NzAiIGJlY29tZXMgIjYwIi4gVGhpcyBpcyBmb3IgY29tcGF0aWJp
bGl0eSByZWFzb25zCiAgICAgICAgIC8vIGFuZCBpcyBwcm9iYWJseSBnb29kIGVub3VnaCBmb3Ig
bm93LgotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gaWNvblNpemU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IGljb25TaXplOwogCiAgICAgICAgIGlmIChsaW5rRWxlbWVudC5z
aXplcygpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBib29sIG9rOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9MaW5rUmVsQXR0cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xpbmtSZWxBdHRyaWJ1dGUuaAppbmRleCA2YjAwOWEyYTQ1MmZjY2MyMTY0ZDM2ZjFlNzZmNjdi
NjQ4ZDY5OGI0Li44ZTI2NjkyN2VkZGIxM2RiOWUwYjhiMWNjYTk2ODUyNTY1ZmJiZDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xpbmtSZWxBdHRyaWJ1dGUuaApAQCAtNDEsNyArNDEsNyBAQCBlbnVt
IGNsYXNzIExpbmtJY29uVHlwZTsKIAogc3RydWN0IExpbmtSZWxBdHRyaWJ1dGUgewogICAgIGJv
b2wgaXNTdHlsZVNoZWV0IHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxMaW5rSWNvblR5cGU+IGlj
b25UeXBlOworICAgIHN0ZDo6b3B0aW9uYWw8TGlua0ljb25UeXBlPiBpY29uVHlwZTsKICAgICBi
b29sIGlzQWx0ZXJuYXRlIHsgZmFsc2UgfTsKICAgICBib29sIGlzRE5TUHJlZmV0Y2ggeyBmYWxz
ZSB9OwogICAgIGJvb2wgaXNMaW5rUHJlbG9hZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGE1YThlYWVkYzlkMjUyYjFiYzJmNzM2YmY5MTYzYjRh
OTI2ZjBkYmEuLmRiYWJmY2Q0MzdkYWE0YzY1OTFlYjY3MDYyOTExOWEyYjNiMDY5ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0zODEsMTEgKzM4MSwxMSBAQCB2
b2lkIFJhbmdlSW5wdXRUeXBlOjp1cGRhdGVUaWNrTWFya1ZhbHVlcygpCiAgICAgc3RkOjpzb3J0
KG1fdGlja01hcmtWYWx1ZXMuYmVnaW4oKSwgbV90aWNrTWFya1ZhbHVlcy5lbmQoKSk7CiB9CiAK
LU9wdGlvbmFsPERlY2ltYWw+IFJhbmdlSW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFs
dWUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCitzdGQ6Om9wdGlvbmFsPERlY2ltYWw+IFJhbmdlSW5w
dXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCiB7
CiAgICAgdXBkYXRlVGlja01hcmtWYWx1ZXMoKTsKICAgICBpZiAoIW1fdGlja01hcmtWYWx1ZXMu
c2l6ZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHNpemVfdCBsZWZ0ID0gMDsKICAgICBzaXplX3QgcmlnaHQgPSBtX3RpY2tN
YXJrVmFsdWVzLnNpemUoKTsKQEAgLTQwOCw4ICs0MDgsOCBAQCBPcHRpb25hbDxEZWNpbWFsPiBS
YW5nZUlucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZh
bHVlKQogICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8
RGVjaW1hbD4gY2xvc2VzdExlZnQgPSBtaWRkbGUgPyBtYWtlT3B0aW9uYWwobV90aWNrTWFya1Zh
bHVlc1ttaWRkbGUgLSAxXSkgOiBOdWxsb3B0OwotICAgIE9wdGlvbmFsPERlY2ltYWw+IGNsb3Nl
c3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tNYXJrVmFsdWVzLnNpemUoKSA/IG1ha2VPcHRpb25h
bChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0pIDogTnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PERlY2ltYWw+IGNsb3Nlc3RMZWZ0ID0gbWlkZGxlID8gc3RkOjptYWtlX29wdGlvbmFsKG1fdGlj
a01hcmtWYWx1ZXNbbWlkZGxlIC0gMV0pIDogc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9u
YWw8RGVjaW1hbD4gY2xvc2VzdFJpZ2h0ID0gbWlkZGxlICE9IG1fdGlja01hcmtWYWx1ZXMuc2l6
ZSgpID8gc3RkOjptYWtlX29wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlXSkgOiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWNsb3Nlc3RMZWZ0KQogICAgICAgICByZXR1cm4gY2xvc2Vz
dFJpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IGE1Nzg0ZjVkMjI3
NjUwNTc3ODdkNjNkODI2MDdlYWYyN2Q3N2VmMWIuLmM2ZjYyZDg0NjVlZTg4MjcyZjhjNjFmZjI5
NmQ2Yjk4ZDgwNDgzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTcx
LDcgKzcxLDcgQEAgY2xhc3MgUmFuZ2VJbnB1dFR5cGUgZmluYWwgOiBwdWJsaWMgSW5wdXRUeXBl
IHsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2b2lkIGxpc3RBdHRyaWJ1dGVU
YXJnZXRDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVUaWNrTWFya1ZhbHVlcygpOwot
ICAgIE9wdGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNp
bWFsJikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBmaW5kQ2xvc2VzdFRpY2tN
YXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpIGZpbmFsOwogCiAgICAgYm9vbCBtX3RpY2tNYXJrVmFs
dWVzRGlydHkgeyB0cnVlIH07CiAgICAgVmVjdG9yPERlY2ltYWw+IG1fdGlja01hcmtWYWx1ZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAppbmRleCAwYjJiM2Y0NmNmYTA4MGY2OWY4YjRiMTgwYWNjMjAyM2E5Y2U0
ZWRlLi43MTEzNTI3YjIyOWFjZjk5NGQ5NTA0OTEyZmY2YjY4MWQ1ZjM5MTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
cmVzdG9yZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX3BhdGgudHJhbnNmb3JtKHN0YXRlKCku
dHJhbnNmb3JtKTsKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIGlmIChPcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNl
KCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gc3Rh
dGUoKS50cmFuc2Zvcm0uaW52ZXJzZSgpKQogICAgICAgICBtX3BhdGgudHJhbnNmb3JtKGludmVy
c2UudmFsdWUoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsK
ICAgICBpZiAoIWMpCkBAIC04MzIsNyArODMyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnJlc2V0VHJhbnNmb3JtKCkKICAgICBtb2RpZmlhYmxlU3RhdGUoKS5oYXNJbnZlcnRp
YmxlVHJhbnNmb3JtID0gdHJ1ZTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBo
YSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcihjb25zdCBT
dHJpbmcmIGNvbG9yLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSkKIHsKICAgICBpZiAoYWxw
aGEpIHsKICAgICAgICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJp
bmdXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgYWxwaGEudmFsdWUoKSkpOwpAQCAtODY4LDcgKzg2
OCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcihmbG9h
dCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrCiAgICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFz
U3R5bGUoYywgbSwgeSwgaywgYSkpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBo
YSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3Ry
aW5nJiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEpCiB7CiAgICAgaWYgKGFscGhh
KSB7CiAgICAgICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZ1dp
dGhPdmVycmlkZUFscGhhKGNvbG9yLCBhbHBoYS52YWx1ZSgpKSk7CkBAIC0xMTE0LDcgKzExMTQs
NyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aEludGVybmFs
KGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgsCiAgICAgaWYgKCFzdGF0ZSgpLmhhc0ludmVydGli
bGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgdHJh
bnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBGbG9hdFBvaW50
IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogCiAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0
cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMzAsNyAr
MTEzMCw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2VJ
bnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4CiAgICAgaWYgKCFzdGF0ZSgpLmhhc0lu
dmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9p
bnQgdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlKCkudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBGbG9h
dFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZSgpLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogICAg
IGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5p
dGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEy
NDksNyArMTI0OSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VSZWN0
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoCiAgICAgfQogfQogCi12b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIE9wdGlvbmFsPGZs
b2F0PiBhbHBoYSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxv
YXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvclN0
cmluZywgc3RkOjpvcHRpb25hbDxmbG9hdD4gYWxwaGEpCiB7CiAgICAgQ29sb3IgY29sb3IgPSBw
YXJzZUNvbG9yT3JDdXJyZW50Q29sb3IoY29sb3JTdHJpbmcsICZjYW52YXMoKSk7CiAgICAgaWYg
KCFjb2xvclN0cmluZy5pc051bGwoKSAmJiAhY29sb3IuaXNWYWxpZCgpKQpAQCAtMjI1NywxMiAr
MjI1NywxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RGlyZWN0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKQogICAgIG1vZGlmaWFibGVTdGF0ZSgpLmRpcmVj
dGlvbiA9IGRpcmVjdGlvbjsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8Zmxv
YXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgc3RkOjpvcHRpb25hbDxmbG9hdD4g
bWF4V2lkdGgpCiB7CiAgICAgZHJhd1RleHRJbnRlcm5hbCh0ZXh0LCB4LCB5LCB0cnVlLCBtYXhX
aWR0aCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdp
ZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0
aCkKIHsKICAgICBkcmF3VGV4dEludGVybmFsKHRleHQsIHgsIHksIGZhbHNlLCBtYXhXaWR0aCk7
CiB9CkBAIC0yMzEwLDcgKzIzMTAsNyBAQCBSZWY8VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6bWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiBt
ZXRyaWNzOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRl
cm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0
aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRy
YXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29s
IGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoKQogewogICAgIGNvbnN0IGF1dG8m
IGZvbnRQcm94eSA9IHRoaXMtPmZvbnRQcm94eSgpOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcyA9IGZvbnRQcm94eS5mb250TWV0cmljcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA0NWEx
M2IxYzdkZjcyYzc5OTVlYjMxZmE5NDdkZWI2N2E1YzUzOTAwLi4yYTg3ZjI2NzE1MTc5MzUxZjY1
N2I2M2IxMWYwYzlmMWIxNjA1YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMTE3LDEyICsxMTcsMTIgQEAg
Y2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQsIHB1YmxpYyBDYW4KICAgICB2b2lkIHNldFRyYW5zZm9ybShmbG9hdCBtMTEs
IGZsb2F0IG0xMiwgZmxvYXQgbTIxLCBmbG9hdCBtMjIsIGZsb2F0IGR4LCBmbG9hdCBkeSk7CiAg
ICAgdm9pZCByZXNldFRyYW5zZm9ybSgpOwogCi0gICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25z
dCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBOdWxsb3B0KTsKKyAgICB2
b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0
IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEgPSAxLjApOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3Io
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRTdHJva2VD
b2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKTsKIAotICAg
IHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBh
bHBoYSA9IE51bGxvcHQpOworICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29s
b3IsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lk
IHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhID0gMS4wZik7CiAgICAg
dm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAg
ICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywg
ZmxvYXQgYSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW4KICAg
ICB2b2lkIGZpbGxSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWln
aHQpOwogICAgIHZvaWQgc3Ryb2tlUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KTsKIAotICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IgPSBTdHJpbmcoKSwgT3B0aW9u
YWw8ZmxvYXQ+IGFscGhhID0gTnVsbG9wdCk7CisgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmlu
ZygpLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9p
ZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQg
Z3JheUxldmVsLCBmbG9hdCBhbHBoYSA9IDEuMCk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywgZmxvYXQg
YiwgZmxvYXQgYSk7CiAgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQg
YSk7CkBAIC0yMTQsOCArMjE0LDggQEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGZp
bmFsIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW4KICAgICBTdHJp
bmcgZGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREaXJlY3Rpb24oY29uc3QgU3RyaW5n
Jik7CiAKLSAgICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxv
YXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gTnVsbG9wdCk7Ci0gICAgdm9pZCBzdHJv
a2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8Zmxv
YXQ+IG1heFdpZHRoID0gTnVsbG9wdCk7CisgICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0g
c3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHN0cm9rZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBm
bG9hdCB4LCBmbG9hdCB5LCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgUmVmPFRleHRNZXRyaWNzPiBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpOwogCiAgICAgTGluZUNhcCBnZXRMaW5lQ2FwKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5s
aW5lQ2FwOyB9CkBAIC0zMzEsNyArMzMxLDcgQEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEIGZpbmFsIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW4KICAg
ICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgIHZvaWQgYXBwbHlGaWxsUGF0dGVybigp
OwogCi0gICAgdm9pZCBkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBOdWxsb3B0
KTsKKyAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4
LCBmbG9hdCB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3Rk
OjpudWxsb3B0KTsKIAogICAgIC8vIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBGb250Q2FzY2Fk
ZSBhbmQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpGb250UHJveHkgbXVzdCBob2xkIGNlcnRh
aW4gaW52YXJpYW50cy4KICAgICAvLyBUaGVyZWZvcmUsIGFsbCBmb250IG9wZXJhdGlvbnMgbXVz
dCBwYXNzIHRocm91Z2ggdGhlIFN0YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0ZWNlMzc3MGJjYzg5MDBl
OTRlNTA2NDI4MWZjZDc0MmIyOWE5YjVjLi4yMzJmMGJiYjU0ZDE2MjNhYWFkMGU4ZDU1YjcwNmE0
OTk3Nzg4NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtODgsMTIgKzg4LDEyIEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMoKQogICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7CiB9
CiAKLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1l
bnRTaXplKGNvbnN0IEFycmF5QnVmZmVyVmlldyYgZGF0YSkKK2lubGluZSBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gYXJyYXlCdWZmZXJWaWV3RWxlbWVudFNpemUoY29uc3QgQXJyYXlC
dWZmZXJWaWV3JiBkYXRhKQogewogICAgIHN3aXRjaCAoZGF0YS5nZXRUeXBlKCkpIHsKICAgICBj
YXNlIEpTQzo6Tm90VHlwZWRBcnJheToKICAgICBjYXNlIEpTQzo6VHlwZURhdGFWaWV3OgotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBj
YXNlIEpTQzo6VHlwZUludDg6CiAgICAgY2FzZSBKU0M6OlR5cGVVaW50ODoKICAgICBjYXNlIEpT
Qzo6VHlwZVVpbnQ4Q2xhbXBlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggM2U5ZGNjYWM1MWNmMjNk
Y2M4NGU4NGEzYWJmMTdhY2U3MGMyMTMwMy4uMmMwZDgwNzU2MDU1ZTU5Njk3ZDg5MTZhZDM0OTRh
NjI0YTU5YWJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTExMDksNyArMTEwOSw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIGxv
bmcgbG9uZyBzaXplLCBHQzNECiAgICAgfQogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBPcHRpb25hbDxCdWZmZXJEYXRhU291
cmNlPiYmIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgc3RkOjpvcHRpb25hbDxCdWZmZXJEYXRh
U291cmNlPiYmIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMzYsNyArMTEzNiw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIE9w
dGlvbmFsPEJ1ZmZlckRhdGFTCiAgICAgfSwgZGF0YS52YWx1ZSgpKTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgbG9u
ZyBsb25nIG9mZnNldCwgT3B0aW9uYWw8QnVmZmVyRGF0YVNvdXJjZT4mJiBkYXRhKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwg
bG9uZyBsb25nIG9mZnNldCwgc3RkOjpvcHRpb25hbDxCdWZmZXJEYXRhU291cmNlPiYmIGRhdGEp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MKICAgICAgICAgbV9j
b250ZXh0LT5waXhlbFN0b3JlaShHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwg
bV91bnBhY2tBbGlnbm1lbnQpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1hZ2VTb3VyY2U+JiYgc291cmNlKQorRXhjZXB0aW9u
T3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHN0ZDo6b3B0aW9uYWw8VGV4SW1hZ2VT
b3VyY2U+JiYgc291cmNlKQogewogICAgIGlmICghc291cmNlKSB7CiAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAidGV4U3ViSW1hZ2Uy
RCIsICJzb3VyY2UgaXMgbnVsbCIpOwpAQCAtMzU3NSw3ICszNTc1LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0QKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBzb3VyY2UudmFsdWUo
KSk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVBcnJheUJ1
ZmZlclR5cGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0eXBlLCBPcHRpb25h
bDxKU0M6OlR5cGVkQXJyYXlUeXBlPiBhcnJheVR5cGUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0MzRGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPiBhcnJh
eVR5cGUpCiB7CiAjZGVmaW5lIFRZUEVfVkFMSURBVElPTl9DQVNFKGFycmF5VHlwZU1hY3JvKSBp
ZiAoYXJyYXlUeXBlICYmIGFycmF5VHlwZS52YWx1ZSgpICE9IEpTQzo6YXJyYXlUeXBlTWFjcm8p
IHsgXAogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJBcnJheUJ1ZmZlclZpZXcgbm90ICIgI2Fy
cmF5VHlwZU1hY3JvKTsgXApAQCAtMzYzNiw3ICszNjM2LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRl
eEludGVybmFsRm9ybWF0KGZ1bmN0aW9uTmFtZSwgaW50ZXJuYWxGb3JtYXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShmdW5jdGlvbk5h
bWUsIHR5cGUsIHBpeGVscyA/IE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVscy0+
Z2V0VHlwZSgpKSA6IE51bGxvcHQpKQorICAgIGlmICghdmFsaWRhdGVBcnJheUJ1ZmZlclR5cGUo
ZnVuY3Rpb25OYW1lLCB0eXBlLCBwaXhlbHMgPyBzdGQ6Om9wdGlvbmFsPEpTQzo6VHlwZWRBcnJh
eVR5cGU+KHBpeGVscy0+Z2V0VHlwZSgpKSA6IHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzUmVxdWlyZWQ7CkBAIC0zOTgy
LDcgKzM5ODIsNyBAQCBzdGF0aWMgYm9vbCBpc1JHQkZvcm1hdChHQzNEZW51bSBpbnRlcm5hbEZv
cm1hdCkKICAgICAgICAgfHwgaW50ZXJuYWxGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkE4OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgT3B0aW9uYWw8VGV4SW1h
Z2VTb3VyY2U+IHNvdXJjZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBzdGQ6Om9w
dGlvbmFsPFRleEltYWdlU291cmNlPiBzb3VyY2UpCiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUs
ICJ0ZXhJbWFnZTJEIiwgInNvdXJjZSBpcyBudWxsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMmIzMTZi
ZGIxZGZhODIxMWY5NTExNWRmNGUzMTRhOTg2M2U4MGE5Yy4uNTQ3OGE1ZDgxNjc2YzA2ODZmMWZl
YzY3MTFiMmJhNTdkZDQ4YTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTM2LDggKzEzNiw4IEBAIGNs
YXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCwgcHVibGljIEFjdGl2ZURPCiAKICAgICB1c2luZyBCdWZmZXJEYXRhU291cmNlID0gV1RG
OjpWYXJpYW50PFJlZlB0cjxBcnJheUJ1ZmZlcj4sIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+PjsK
ICAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc2l6ZSwgR0Mz
RGVudW0gdXNhZ2UpOwotICAgIHZvaWQgYnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIE9wdGlv
bmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYsIEdDM0RlbnVtIHVzYWdlKTsKLSAgICB2b2lkIGJ1ZmZl
clN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBPcHRpb25hbDxCdWZm
ZXJEYXRhU291cmNlPiYmKTsKKyAgICB2b2lkIGJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBz
dGQ6Om9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYsIEdDM0RlbnVtIHVzYWdlKTsKKyAgICB2
b2lkIGJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgb2Zmc2V0LCBzdGQ6
Om9wdGlvbmFsPEJ1ZmZlckRhdGFTb3VyY2U+JiYpOwogCiAgICAgR0MzRGVudW0gY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihH
QzNEYml0ZmllbGQgbWFzaykgPSAwOwpAQCAtMjQxLDEzICsyNDEsMTMgQEAgY2xhc3MgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJs
aWMgQWN0aXZlRE8KICAgICB2b2lkIHRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYmKTsKIAogICAgIHVzaW5nIFRleEltYWdlU291cmNl
ID0gV1RGOjpWYXJpYW50PFJlZlB0cjxJbWFnZURhdGE+LCBSZWZQdHI8SFRNTEltYWdlRWxlbWVu
dD4sIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4sIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50Pj47
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291cmNlPik7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gdGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIHN0ZDo6b3B0aW9u
YWw8VGV4SW1hZ2VTb3VyY2U+KTsKIAogICAgIHZvaWQgdGV4UGFyYW1ldGVyZihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgcGFyYW0pOwogICAgIHZvaWQgdGV4UGFy
YW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsK
IAogICAgIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4mJik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gdGV4U3ViSW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zm
c2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIE9wdGlvbmFsPFRleEltYWdlU291
cmNlPiYmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdD
M0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxUZXhJbWFnZVNvdXJj
ZT4mJik7CiAKICAgICB2b2lkIHVuaWZvcm0xZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbios
IEdDM0RmbG9hdCB4KTsKICAgICB2b2lkIHVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBGbG9hdDMyQXJyYXkmIHYpOwpAQCAtODAwLDcgKzgwMCw3IEBAIGNsYXNzIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVi
bGljIEFjdGl2ZURPCiAgICAgYm9vbCBzdXBwb3J0c0RyYXdCdWZmZXJzKCk7CiAKIHByaXZhdGU6
Ci0gICAgYm9vbCB2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIEdDM0RlbnVtIHR5cGUsIE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KTsKKyAgICBi
b29sIHZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0Mz
RGVudW0gdHlwZSwgc3RkOjpvcHRpb25hbDxKU0M6OlR5cGVkQXJyYXlUeXBlPik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggZmMzOTA0MGE4ZTNlODRlZGEzNzlhNDJh
YTI4NDNmN2E2YWZlZjBkYS4uMmZkZGE2ZWE1OThjMDgyZTZmYWJiOTNiMjM5NjE5ZWJlMzdmZTcz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rp
b25TaXRlLmNwcApAQCAtNzAxLDE3ICs3MDEsMTcgQEAgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVFbGVtZW50RnJvbVNhdmVkVG9rZW4oSFRNTFN0YWNrSXQK
ICAgICByZXR1cm4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGNyZWF0ZUhUTUxFbGVtZW50KGZha2VU
b2tlbiksIFdURk1vdmUoZmFrZVRva2VuKSwgaXRlbS5uYW1lc3BhY2VVUkkoKSk7CiB9CiAKLU9w
dGlvbmFsPHVuc2lnbmVkPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5kZXhPZkZpcnN0VW5vcGVu
Rm9ybWF0dGluZ0VsZW1lbnQoKSBjb25zdAorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gSFRNTENv
bnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29u
c3QKIHsKICAgICBpZiAobV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB1
bnNpZ25lZCBpbmRleCA9IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnNpemUoKTsKICAgICBk
byB7CiAgICAgICAgIC0taW5kZXg7CiAgICAgICAgIGNvbnN0IGF1dG8mIGVudHJ5ID0gbV9hY3Rp
dmVGb3JtYXR0aW5nRWxlbWVudHMuYXQoaW5kZXgpOwogICAgICAgICBpZiAoZW50cnkuaXNNYXJr
ZXIoKSB8fCBtX29wZW5FbGVtZW50cy5jb250YWlucyhlbnRyeS5lbGVtZW50KCkpKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA9IGluZGV4ICsgMTsKLSAg
ICAgICAgICAgIHJldHVybiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA8IG1fYWN0aXZlRm9ybWF0
dGluZ0VsZW1lbnRzLnNpemUoKSA/IGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDogT3B0aW9uYWw8
dW5zaWduZWQ+KE51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5vcGVuRWxlbWVu
dEluZGV4IDwgbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpID8gZmlyc3RVbm9wZW5F
bGVtZW50SW5kZXggOiBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPihzdGQ6Om51bGxvcHQpOwogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoaW5kZXgpOwogCkBAIC03MjAsNyArNzIwLDcgQEAgT3B0aW9u
YWw8dW5zaWduZWQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbmRleE9mRmlyc3RVbm9wZW5Gb3Jt
YXR0aW5nRWxlbWVudCgpIGMKIAogdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6cmVjb25zdHJ1
Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA9IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdF
bGVtZW50KCk7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZmlyc3RVbm9wZW5FbGVtZW50
SW5kZXggPSBpbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCgpOwogICAgIGlmICgh
Zmlyc3RVbm9wZW5FbGVtZW50SW5kZXgpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggMzNlMWJi
ODU2NjJkYWUxMzQ1YjU2Zjg4MGU0NTQ5MTBiYjdjMGU5ZC4uNzU0OWVkNTg0YzZlZmU4MWI4OGY3
NzkwMWM2Y2JmOTQxNWYwZTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCkBAIC0xMzEsNyArMTMxLDcgQEAgY2xhc3MgSFRNTENv
bnN0cnVjdGlvblNpdGUgewogICAgIGJvb2wgc2hvdWxkRm9zdGVyUGFyZW50KCkgY29uc3Q7CiAg
ICAgdm9pZCBmb3N0ZXJQYXJlbnQoUmVmPE5vZGU+JiYpOwogCi0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gaW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQo
KSBjb25zdDsKICAgICB2b2lkIHJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRz
KCk7CiAKICAgICB2b2lkIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggM2I4Y2M0ZDIyNTBj
YmQ2YjhhNzc1NWM3ZmFlOGJjZjZkZDUxMjM1Yi4uMzk5MGNiZGE2MDYzYjlkYTQzYmJmM2E4Y2I1
ZDNiNGNjNzg0Nzc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKQEAgLTE1NCwxMyArMTU0LDEzIEBAIGRvdWJsZSBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2Vy
SW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5
cGUqIGVuZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlckludGVy
bmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBl
bmQpCiB7CiAgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYmIGlzSFRNTFNwYWNlKCpwb3NpdGlv
bikpCiAgICAgICAgICsrcG9zaXRpb247CiAKICAgICBpZiAocG9zaXRpb24gPT0gZW5kKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGJvb2wgaXNOZWdhdGl2ZSA9IGZhbHNlOwogICAgIGlmICgqcG9zaXRpb24gPT0gJy0nKSB7CkBA
IC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcklu
dGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb24KICAgICAgICAgKytwb3Np
dGlvbjsKIAogICAgIGlmIChwb3NpdGlvbiA9PSBlbmQgfHwgIWlzQVNDSUlEaWdpdCgqcG9zaXRp
b24pKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGNvbnN0ZXhwciBpbnQgaW50TWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptYXgoKTsKICAgICBjb25zdGV4cHIgaW50IGJhc2UgPSAxMDsKQEAgLTE4MSw3ICsxODEsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hh
cmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbgogICAgICAgICBpbnQgZGlnaXRWYWx1ZSA9ICpwb3Np
dGlvbiAtICcwJzsKIAogICAgICAgICBpZiAocmVzdWx0ID4gbWF4TXVsdGlwbGllciB8fCAocmVz
dWx0ID09IG1heE11bHRpcGxpZXIgJiYgZGlnaXRWYWx1ZSA+IChpbnRNYXggJSBiYXNlKSArIGlz
TmVnYXRpdmUpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJlc3VsdCA9IGJhc2UgKiByZXN1bHQgKyBkaWdp
dFZhbHVlOwogICAgICAgICArK3Bvc2l0aW9uOwpAQCAtMTkxLDExICsxOTEsMTEgQEAgc3RhdGlj
IE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5
cGUqIHBvc2l0aW9uLCBjb24KIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2Vycwot
T3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9w
dGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQogewogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
IChMSUtFTFkoaW5wdXQuaXM4Qml0KCkpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQu
Y2hhcmFjdGVyczgoKTsKQEAgLTIwNywzNiArMjA3LDM2IEBAIE9wdGlvbmFsPGludD4gcGFyc2VI
VE1MSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53
aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3J1bGVzLWZvci1wYXJzaW5n
LW5vbi1uZWdhdGl2ZS1pbnRlZ2VycwotT3B0aW9uYWw8dW5zaWduZWQ+IHBhcnNlSFRNTE5vbk5l
Z2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQorc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
cGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7Ci0gICAgT3B0
aW9uYWw8aW50PiBzaWduZWRWYWx1ZSA9IHBhcnNlSFRNTEludGVnZXIoaW5wdXQpOworICAgIHN0
ZDo6b3B0aW9uYWw8aW50PiBzaWduZWRWYWx1ZSA9IHBhcnNlSFRNTEludGVnZXIoaW5wdXQpOwog
ICAgIGlmICghc2lnbmVkVmFsdWUgfHwgc2lnbmVkVmFsdWUudmFsdWUoKSA8IDApCi0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaWduZWRWYWx1ZS52YWx1ZSgpKTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJz
ZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUq
IHBvc2l0aW9uLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBlbmQpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hh
cmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhY3RlclR5cGUqIGVuZCkKIHsKICAgICAv
LyBBIHN0cmluZyBpcyBhIHZhbGlkIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIGlmIGl0IGNvbnNpc3Rz
IG9mIG9uZSBvciBtb3JlIEFTQ0lJIGRpZ2l0cy4KICAgICBmb3IgKGF1dG8qIGMgPSBwb3NpdGlv
bjsgYyA8IGVuZDsgKytjKSB7CiAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpjKSkKLSAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IHNpZ25lZFZhbHVlID0gcGFyc2VIVE1MSW50ZWdl
ckludGVybmFsKHBvc2l0aW9uLCBlbmQpOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBzaWduZWRW
YWx1ZSA9IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChwb3NpdGlvbiwgZW5kKTsKICAgICBpZiAo
IXNpZ25lZFZhbHVlIHx8IHNpZ25lZFZhbHVlLnZhbHVlKCkgPCAwKQotICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzaWdu
ZWRWYWx1ZTsKIH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQtbm9u
LW5lZ2F0aXZlLWludGVnZXIKLU9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2
ZUludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZVZhbGlk
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3IGlucHV0KQogewogICAgIGlmIChpbnB1
dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKExJS0VMWShpbnB1dC5pczhCaXQoKSkpIHsKICAgICAgICAg
YXV0byogc3RhcnQgPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOwpAQCAtMjQ4LDI1ICsyNDgsMjUgQEAg
T3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihTdHJpbmdWaWV3
IGlucHV0KQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBP
cHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlckludGVybmFs
KGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXJJbnRl
cm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBBU1NFUlQobGVuZ3RoID4gMCk7CiAKICAgICAvLyBwYXJzZURvdWJsZSgpIGFsbG93cyB0aGUg
c3RyaW5nIHRvIHN0YXJ0IHdpdGggYSAnKycgb3IgdG8gZW5kIHdpdGggYSAnLicgYnV0IHRob3Nl
CiAgICAgLy8gYXJlIG5vdCB2YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFzIHBlciBIVE1M
LgogICAgIGlmICgqcG9zaXRpb24gPT0gJysnIHx8ICoocG9zaXRpb24gKyBsZW5ndGggLSAxKSA9
PSAnLicpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgc2l6ZV90IHBhcnNlZExlbmd0aCA9IDA7CiAgICAgZG91YmxlIG51bWJlciA9
IHBhcnNlRG91YmxlKHBvc2l0aW9uLCBsZW5ndGgsIHBhcnNlZExlbmd0aCk7Ci0gICAgcmV0dXJu
IHBhcnNlZExlbmd0aCA9PSBsZW5ndGggJiYgc3RkOjppc2Zpbml0ZShudW1iZXIpID8gbnVtYmVy
IDogT3B0aW9uYWw8ZG91YmxlPigpOworICAgIHJldHVybiBwYXJzZWRMZW5ndGggPT0gbGVuZ3Ro
ICYmIHN0ZDo6aXNmaW5pdGUobnVtYmVyKSA/IG51bWJlciA6IHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PigpOwogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1mbG9hdGlu
Zy1wb2ludC1udW1iZXIKLU9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1Bv
aW50TnVtYmVyKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VW
YWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgaWYg
KGlucHV0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoTElLRUxZKGlucHV0LmlzOEJpdCgpKSkgewogICAg
ICAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CkBAIC0zNjMsNyArMzYzLDcg
QEAgc3RhdGljIGJvb2wgcGFyc2VIVFRQUmVmcmVzaEludGVybmFsKGNvbnN0IENoYXJhY3RlclR5
cGUqIHBvc2l0aW9uLCBjb25zdCBDaGFyYWMKICAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQgJiYg
aXNBU0NJSURpZ2l0KCpwb3NpdGlvbikpCiAgICAgICAgICsrcG9zaXRpb247CiAKLSAgICBPcHRp
b25hbDx1bnNpZ25lZD4gbnVtYmVyID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmlu
Z1ZpZXcobnVtYmVyU3RhcnQsIHBvc2l0aW9uIC0gbnVtYmVyU3RhcnQpKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBudW1iZXIgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3Ry
aW5nVmlldyhudW1iZXJTdGFydCwgcG9zaXRpb24gLSBudW1iZXJTdGFydCkpOwogICAgIGlmICgh
bnVtYmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCAyYjM0NzNjNmJlOWJiZDhhMmYwMTM5MTZk
YjcwNGM1NTQwMmI0Yzk2Li4yZjQxYzYxOWE4MTEyYjc3MmExYzY4ZDA1NTFhYzA1MGQ2OWM0OWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBA
IC02MiwxNiArNjIsMTYgQEAgZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0
IFN0cmluZyYpOwogZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSBmYWxsYmFja1ZhbHVlKTsKIAogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKLVdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPGludD4gcGFyc2VIVE1MSW50ZWdlcihTdHJpbmdWaWV3KTsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZUhUTUxJbnRlZ2VyKFN0cmlu
Z1ZpZXcpOwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1ub24tbmVnYXRpdmUtaW50ZWdlcnMKLVdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3Ry
aW5nVmlldyk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwYXJzZUhU
TUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvI3ZhbGlkLW5vbi1uZWdhdGl2ZS1pbnRlZ2VyCi1PcHRpb25hbDxpbnQ+IHBh
cnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcpOworc3RkOjpvcHRpb25h
bDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcpOwogCiAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN2YWxpZC1mbG9hdGluZy1wb2ludC1udW1i
ZXIKLU9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0
cmluZ1ZpZXcpOworc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQ
b2ludE51bWJlcihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvaW5mcmFzdHJ1Y3R1cmUuaHRtbCNydWxlcy1mb3ItcGFyc2luZy1mbG9hdGlu
Zy1wb2ludC1udW1iZXItdmFsdWVzCiBWZWN0b3I8ZG91YmxlPiBwYXJzZUhUTUxMaXN0T2ZPZkZs
b2F0aW5nUG9pbnROdW1iZXJWYWx1ZXMoU3RyaW5nVmlldyk7CkBAIC0xNTMsNyArMTUzLDcgQEAg
aW5saW5lIHVuc2lnbmVkIGxpbWl0VG9Pbmx5SFRNTE5vbk5lZ2F0aXZlKHVuc2lnbmVkIHZhbHVl
LCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUKIGlubGluZSB1bnNpZ25lZCBsaW1pdFRvT25seUhUTUxO
b25OZWdhdGl2ZShTdHJpbmdWaWV3IHN0cmluZ1ZhbHVlLCB1bnNpZ25lZCBkZWZhdWx0VmFsdWUg
PSAwKQogewogICAgIEFTU0VSVChkZWZhdWx0VmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50
ZWdlcik7Ci0gICAgdW5zaWduZWQgdmFsdWUgPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
c3RyaW5nVmFsdWUpLnZhbHVlT3IoZGVmYXVsdFZhbHVlKTsKKyAgICB1bnNpZ25lZCB2YWx1ZSA9
IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihzdHJpbmdWYWx1ZSkudmFsdWVfb3IoZGVmYXVs
dFZhbHVlKTsKICAgICBBU1NFUlQodmFsdWUgPD0gbWF4SFRNTE5vbk5lZ2F0aXZlSW50ZWdlcik7
CiAgICAgcmV0dXJuIHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MU3Jjc2V0UGFyc2VyLmNwcAppbmRleCAzMGIwZjcyMjlkMmNlYjBkOGFjOGRiNTgyYzQyMmU1
NjBmNGI0NjM5Li42NmE5ODY0YzJiNjZiNjhmMTE3NmZiN2RhMzM0ZGU1MGIwZjM0ZmFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcApAQCAt
MTM0LDE0ICsxMzQsMTQgQEAgc3RhdGljIGJvb2wgcGFyc2VEZXNjcmlwdG9ycyhWZWN0b3I8U3Ry
aW5nVmlldz4mIGRlc2NyaXB0b3JzLCBEZXNjcmlwdG9yUGFyc2luZ1IKICAgICAgICAgaWYgKGRl
c2NyaXB0b3JDaGFyID09ICd4JykgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5
KCkgfHwgcmVzdWx0Lmhhc0hlaWdodCgpIHx8IHJlc3VsdC5oYXNXaWR0aCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZGVuc2l0
eSA9IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihkZXNjcmlwdG9yKTsKKyAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkZW5zaXR5ID0gcGFyc2VWYWxpZEhUTUxGbG9h
dGluZ1BvaW50TnVtYmVyKGRlc2NyaXB0b3IpOwogICAgICAgICAgICAgaWYgKCFkZW5zaXR5IHx8
IGRlbnNpdHkudmFsdWUoKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgcmVzdWx0LnNldERlbnNpdHkoZGVuc2l0eS52YWx1ZSgpKTsKICAgICAgICAgfSBl
bHNlIGlmIChkZXNjcmlwdG9yQ2hhciA9PSAndycpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRGVuc2l0eSgpIHx8IHJlc3VsdC5oYXNXaWR0aCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIE9wdGlvbmFsPGludD4gcmVzb3VyY2VXaWR0aCA9IHBhcnNl
VmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOworICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IHJlc291cmNlV2lkdGggPSBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihkZXNjcmlwdG9yKTsKICAgICAgICAgICAgIGlmICghcmVzb3VyY2VXaWR0aCB8fCBy
ZXNvdXJjZVdpZHRoLnZhbHVlKCkgPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICByZXN1bHQuc2V0UmVzb3VyY2VXaWR0aChyZXNvdXJjZVdpZHRoLnZhbHVl
KCkpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBib29sIHBhcnNlRGVzY3JpcHRvcnMoVmVj
dG9yPFN0cmluZ1ZpZXc+JiBkZXNjcmlwdG9ycywgRGVzY3JpcHRvclBhcnNpbmdSCiAgICAgICAg
ICAgICAvLyBUaGUgdmFsdWUgb2YgdGhlICdoJyBkZXNjcmlwdG9yIGlzIG5vdCB1c2VkLgogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhhc0hlaWdodCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIE9wdGlvbmFsPGludD4g
cmVzb3VyY2VIZWlnaHQgPSBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihkZXNjcmlw
dG9yKTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiByZXNvdXJjZUhlaWdodCA9IHBh
cnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGRlc2NyaXB0b3IpOwogICAgICAgICAgICAg
aWYgKCFyZXNvdXJjZUhlaWdodCB8fCByZXNvdXJjZUhlaWdodC52YWx1ZSgpIDw9IDApCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgcmVzdWx0LnNldFJlc291cmNl
SGVpZ2h0KHJlc291cmNlSGVpZ2h0LnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggZDExMWMyZDk2NGU5ODU3MTUz
M2EwMzk0ZjE1YTc3MDRiZjhlMTEwNi4uOWFmNzM1MjA3MzcyYzYwMTAwZTg4ODMyMTE2YWEyYWI0
OTRlNjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6
OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBhYnNvbHV0ZVBvaW50KQog
I2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIGNvbnN0IExheW91dFVuaXQgc25hcHBp
bmdUaHJlc2hvbGQgPSByZW5kZXJlcigpLT50aGVtZSgpLnNsaWRlclRpY2tTbmFwcGluZ1RocmVz
aG9sZCgpOwogICAgIGlmIChzbmFwcGluZ1RocmVzaG9sZCA+IDApIHsKLSAgICAgICAgaWYgKE9w
dGlvbmFsPERlY2ltYWw+IGNsb3Nlc3QgPSBpbnB1dC0+ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVl
KHZhbHVlKSkgeworICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxEZWNpbWFsPiBjbG9zZXN0ID0g
aW5wdXQtPmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZSh2YWx1ZSkpIHsKICAgICAgICAgICAgIGRv
dWJsZSBjbG9zZXN0RnJhY3Rpb24gPSBzdGVwUmFuZ2UucHJvcG9ydGlvbkZyb21WYWx1ZSgqY2xv
c2VzdCkudG9Eb3VibGUoKTsKICAgICAgICAgICAgIGRvdWJsZSBjbG9zZXN0UmF0aW8gPSBpc1Zl
cnRpY2FsIHx8ICFpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID8gMS4wIC0gY2xvc2VzdEZyYWN0aW9u
IDogY2xvc2VzdEZyYWN0aW9uOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBjbG9zZXN0UG9zaXRp
b24gPSB0cmFja0xlbmd0aCAqIGNsb3Nlc3RSYXRpbzsKQEAgLTU4Miw3ICs1ODIsNyBAQCBIVE1M
SW5wdXRFbGVtZW50KiBTbGlkZXJUaHVtYkVsZW1lbnQ6Omhvc3RJbnB1dCgpIGNvbnN0CiAgICAg
cmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRvd0hvc3QoKSk7CiB9CiAKLU9w
dGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogaG9zdFN0eWxlKQorc3Rk
OjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3Rv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhvc3RTdHlsZSkK
IHsKICAgICAvLyBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgY29tcHV0ZSBzdHlsZS4gVGhpcyBpcyBq
dXN0IGEgaGFjayB0byBwaWNrIHNoYWRvdyBwc2V1ZG8gaWQgd2hlbiBob3N0IHN0eWxlIGlzIGtu
b3duLgogCkBAIC01OTAsNyArNTkwLDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJU
aHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBtZWRpYVNsaWRlclRodW1i
U2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtc2xpZGVyLXRodW1iIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIWhvc3RTdHlsZSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0
Y2ggKGhvc3RTdHlsZS0+YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6
CkBAIC02MDUsNyArNjA1LDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVs
ZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYKICAgICAgICAgbV9z
aGFkb3dQc2V1ZG9JZCA9IHNsaWRlclRodW1iU2hhZG93UHNldWRvSWQ7CiAgICAgfQogCi0gICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAg
LTYzNiw3ICs2MzYsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2xpZGVyQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eQogICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTbGlkZXJDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CiAKLU9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6cmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIGhv
c3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJT
dHlsZSogaG9zdFN0eWxlKQogewogICAgIC8vIFRoaXMgZG9lc24ndCBhY3R1YWxseSBjb21wdXRl
IHN0eWxlLiBUaGlzIGlzIGp1c3QgYSBoYWNrIHRvIHBpY2sgc2hhZG93IHBzZXVkbyBpZCB3aGVu
IGhvc3Qgc3R5bGUgaXMga25vd24uCiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBPcHRpb25hbDxFbGVt
ZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25z
dCBSZW5kZXJTdAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+
IHNsaWRlckNvbnRhaW5lcigiLXdlYmtpdC1zbGlkZXItY29udGFpbmVyIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIWhvc3RTdHlsZSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0
Y2ggKGhvc3RTdHlsZS0+YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6
CkBAIC02NTksNyArNjU5LDcgQEAgT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWlu
ZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3QKICAgICAgICAgbV9z
aGFkb3dQc2V1ZG9JZCA9IHNsaWRlckNvbnRhaW5lcjsKICAgICB9CiAKLSAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggMTViNzRh
ZjZjMjQ5NjI4N2JmOGY5ZDIxODc4YjZiZWZmMTcxMTcyYi4uODA1ZWNiNmNjM2Y5NGZjN2Q1MDky
MTBmZmZjNTJkODAzYjA1YWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgU2xpZGVyVGh1bWJF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKICNlbmRpZgogICAgIHZvaWQg
d2lsbERldGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RWxlbWVudFN0
eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJT
dHlsZSopIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJy
aWRlOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc3RhcnREcmFnZ2luZygpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGNs
YXNzIFNsaWRlckNvbnRhaW5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
ewogcHJpdmF0ZToKICAgICBTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7CiAgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxF
bGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+
IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxl
Kikgb3ZlcnJpZGU7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgQXRvbWljU3RyaW5nIG1fc2hhZG93UHNldWRvSWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAppbmRleCBlMGQ3ZjJlMWQyOGIzZjkzNWIyYmI3NDgyOWRlMTUxY2ZiOTNhZTFhLi43
OTAxYzZhM2Q0MDY2NDY4Zjk5N2ZmYjI5MzMxNjdkN2EzNWY5NmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAK
QEAgLTc1LDcgKzc1LDcgQEAgUmVmPFRleHRDb250cm9sSW5uZXJFbGVtZW50PiBUZXh0Q29udHJv
bElubmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVudChkb2N1bWVudCkpOwogfQogCi1PcHRp
b25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0
eWxlKQorc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHls
ZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gaW5uZXJDb250YWluZXJTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICBpbm5lckNvbnRhaW5lclN0eWxlLT5pbmhlcml0
RnJvbShzaGFkb3dIb3N0U3R5bGUpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIFJlbmRlclRleHRDb250
cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigpIGNv
bnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jaz4oSFRN
TERpdkVsZW1lbnQ6OnJlbmRlcmVyKCkpOwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9u
YWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0
eWxlKTsKICAgICByZXR1cm4gRWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5
bGU+KFdURk1vdmUoc3R5bGUpKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgVGV4dENvbnRyb2xQbGFj
ZWhvbGRlckVsZW1lbnQ6OlRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBk
b2N1bWVudCkKICAgICBzZXRIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKIH0KIAot
T3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKK3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBU
ZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHls
ZSkKIHsKICAgICBhdXRvIHN0eWxlID0gcmVzb2x2ZVN0eWxlKCZwYXJlbnRTdHlsZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmgKaW5kZXggZWVkYTA5NGYwMWQzMDQ3ZGEzNDVkZGNhOGUyYWVmYzI5MjJjNTBmYi4uYjE2
ZTFlNzM2NDZiZTNlOGM0OGJlYjk0Y2IzZmQ0ZjZiZGQ0ODE3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTERpdkVsZW1lbnQgewogCiBwcm90ZWN0ZWQ6CiAgICAgVGV4dENvbnRyb2xJbm5lckVsZW1l
bnQoRG9jdW1lbnQmKTsKLSAgICBPcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBz
aGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxl
PiByZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQgZmlu
YWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHJpdmF0ZToKICAgICBUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3Rv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5
bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNN
b3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIH07CkBAIC03Niw3ICs3Niw3IEBAIGNsYXNzIFRleHRDb250cm9sUGxhY2Vob2xk
ZXJFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHByaXZhdGU6CiAgICAg
VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICAKLSAgICBPcHRp
b25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiByZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9z
dFN0eWxlKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrRXZlbnQuaAppbmRleCBlNmYwNmU4MzZkOGMyNjU3NGZlZjNmODMzNzlmOWEwMzA1
MzQzNWVkLi41ZTk0NDliZmNlYmY3ZGU5M2IzZTIxZDYwOTdhMjlmMTM2Y2NhNTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBU
cmFja0V2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKICAgICB1c2luZyBUcmFja0V2ZW50VHJh
Y2sgPSBWYXJpYW50PFJlZlB0cjxWaWRlb1RyYWNrPiwgUmVmUHRyPEF1ZGlvVHJhY2s+LCBSZWZQ
dHI8VGV4dFRyYWNrPj47CiAKICAgICBzdHJ1Y3QgSW5pdCA6IHB1YmxpYyBFdmVudEluaXQgewot
ICAgICAgICBPcHRpb25hbDxUcmFja0V2ZW50VHJhY2s+IHRyYWNrOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFRyYWNrRXZlbnRUcmFjaz4gdHJhY2s7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8
VHJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgSW5pdCYg
aW5pdGlhbGl6ZXIsIElzVHJ1c3RlZCBpc1RydXN0ZWQgPSBJc1RydXN0ZWQ6Ok5vKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
aW5kZXggMGRmMzZkZmZlNTZhNzgwOWM4MjFjNjNjN2VmOTEzODZhZDg5MDlhZS4uMDcwYWFhMWRk
YmQwYTA2NjUwMzBmNjFhMzYwOTFkYjBkOWFjM2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNTAsNyArMTUw
LDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5KiBpZGJG
YWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFzZU5h
bWUsIE51bGxvcHQpOworICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4
dCgpLCBkYXRhYmFzZU5hbWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkgewogICAgICAgICByZXF1ZXN0Q2FsbGJhY2soKS5zZW5kRmFpbHVyZSgiQ291bGQg
bm90IG9wZW4gZGF0YWJhc2UuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTE2MCw3ICsxNjAsNyBA
QCB2b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElEQkZhY3RvcnkqIGlkYkZhY3Rv
cnksIFNlY3VyaXR5T3JpZ2luKiwgY29ucwogfQogCiAKLXN0YXRpYyBSZWZQdHI8S2V5UGF0aD4g
a2V5UGF0aEZyb21JREJLZXlQYXRoKGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiBpZGJLZXlQ
YXRoKQorc3RhdGljIFJlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3Qg
c3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYgaWRiS2V5UGF0aCkKIHsKICAgICBpZiAoIWlkYktl
eVBhdGgpCiAgICAgICAgIHJldHVybiBLZXlQYXRoOjpjcmVhdGUoKS5zZXRUeXBlKEtleVBhdGg6
OlR5cGU6Ok51bGwpLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYmMzYTU2NjRlZDc2MGQ5ZDQz
NTM0YzJmNzI1ZTIyN2E5ZDlmNTcyMi4uZjAzZTZhMDE2ZTZmMTc1MTM1ZmEwYjNhMGEyZjlmZWU3
YjZkYmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbgogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIs
IGVycm9yKTsgLy8gVGhpcyBzaG91bGQgY29tZSBBRlRFUiByZXNvdXJjZSBub3RpZmljYXRpb24s
IGZyb250LWVuZCByZWxpZXMgb24gdGhpcy4KIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBPcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwg
dW5zaWduZWQgc2VuZENvbHVtbk51bWJlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwg
dW5zaWduZWQgc2VuZENvbHVtbk51bWJlcikKIHsKICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBj
b25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAg
ICAgICBjb25zb2xlQWdlbnQtPmRpZEZpbmlzaFhIUkxvYWRpbmcoaWRlbnRpZmllciwgdXJsLCBz
ZW5kVVJMLCBzZW5kTGluZU51bWJlciwgc2VuZENvbHVtbk51bWJlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZjNk
M2ZmYWRkMmM4ZGMyYzhkNzAxY2FhZjVlYWNkZjAyZTJjNGZjNy4uMzhkMDZmYzFlYTM2NDg1MjFj
YzMzY2VhMWFmMWMxYWY1ODNhZTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNz
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURh
dGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2Fk
aW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5n
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBPcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJl
ciwgdW5zaWduZWQgc2VuZENvbHVtbk51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNo
WEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY29k
ZWRUZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25l
ZCBzZW5kTGluZU51bWJlciwgdW5zaWduZWQgc2VuZENvbHVtbk51bWJlcik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkTG9h
ZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpAQCAtMzM5LDcgKzMz
OSw3IEBAIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB7CiAgICAgc3RhdGljIHZvaWQg
ZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0
YXRpYyB2b2lkIHdpbGxMb2FkWEhSSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIGJvb2wsIFJlZlB0cjxG
b3JtRGF0YT4mJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCopOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBPcHRpb25hbDxTdHJpbmc+IGRlY29kZWRUZXh0LCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlciwgdW5z
aWduZWQgc2VuZENvbHVtbk51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9h
ZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVkVGV4
dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2Vu
ZExpbmVOdW1iZXIsIHVuc2lnbmVkIHNlbmRDb2x1bW5OdW1iZXIpOwogICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFhI
UlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKQEAgLTkxNCw3ICs5MTQs
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5n
KEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZQogICAgICAgICBkaWRGYWlsTG9hZGluZ0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGxvYWRlciwgZXJyb3IpOwogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmco
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCog
Y2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIE9wdGlvbmFsPFN0cmluZz4gZGVjb2Rl
ZFRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVk
IHNlbmRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVyKQoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZGVjb2RlZFRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRM
aW5lTnVtYmVyLCB1bnNpZ25lZCBzZW5kQ29sdW1uTnVtYmVyKQogewogICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIGlkZW50aWZpZXIsIGRlY29kZWRUZXh0LCB1cmwsIHNl
bmRVUkwsIHNlbmRMaW5lTnVtYmVyLCBzZW5kQ29sdW1uTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA4ODIyOGY5NTZh
MWJjYWZmNjEyMjIwOTI0ZWU5Y2M2OGRlOTZmY2ZiLi5lMmZlY2Y1NmE1Y2RkYjBmMmU5MmI0ZTEx
YjA3YzhmOWE1ZWEyMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MjYsNyArOTI2LDcgQEAgRXhjZXB0aW9uT3I8Q1NTU3R5
bGVSdWxlKj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVj
dG9yKQogICAgIFN0cmluZ0J1aWxkZXIgc3R5bGVTaGVldFRleHQ7CiAgICAgc3R5bGVTaGVldFRl
eHQuYXBwZW5kKHRleHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCi0gICAgYXV0byBhZGRSdWxl
UmVzdWx0ID0gbV9wYWdlU3R5bGVTaGVldC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmco
KSwgTnVsbG9wdCk7CisgICAgYXV0byBhZGRSdWxlUmVzdWx0ID0gbV9wYWdlU3R5bGVTaGVldC0+
YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwgc3RkOjpudWxsb3B0KTsKICAgICBpZiAo
YWRkUnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGFkZFJ1bGVSZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIEFTU0VSVChtX3BhZ2VTdHlsZVNoZWV0LT5sZW5n
dGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKaW5kZXggZmI0MGQ5ZDY3YTgwYjRhZWIzMjQyNGYxYTMxOGIwOGY2NWVjYThk
MC4uZjE5NTJjMTZmMTdjNTljMzU1Mjg1YjA0ZjIwYzM2MmZjYzcxM2JiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0SW5zdHJ1bWVu
dHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDxQcm90b2NvbDo6VGltZWxpbmU6Oklu
c3RydW1lbnQ+IGluc3RydW1lbnRUeXBlID0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6VGltZWxpbmU6Okluc3RydW1lbnQ+KGVu
dW1WYWx1ZVN0cmluZyk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlRpbWVsaW5l
OjpJbnN0cnVtZW50PiBpbnN0cnVtZW50VHlwZSA9IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJz
OjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRpbWVsaW5lOjpJbnN0cnVtZW50
PihlbnVtVmFsdWVTdHJpbmcpOwogICAgICAgICBpZiAoIWluc3RydW1lbnRUeXBlKSB7CiAgICAg
ICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VTdHJpbmcoIlVuZXhwZWN0ZWQgZW51bSB2YWx1ZTog
IiwgZW51bVZhbHVlU3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGRiNDc5OTg0MTUyZTM1NjJmMzE5NDY4YmU5
NTk1ZWViYmU5MDg3NTAuLjJkM2NkOTUwZTMxODQzOTM3YjhiNzA1ZDMxNzU0YjM4YWEzM2I4NTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTcxNSw3ICsx
NzE1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCiAgICAgVmVj
dG9yPExpbmtJY29uPiBpY29ucyA9IExpbmtJY29uQ29sbGVjdG9yIHsgKmRvY3VtZW50IH0uaWNv
bnNPZlR5cGVzKHsgTGlua0ljb25UeXBlOjpGYXZpY29uLCBMaW5rSWNvblR5cGU6OlRvdWNoSWNv
biwgTGlua0ljb25UeXBlOjpUb3VjaFByZWNvbXBvc2VkSWNvbiB9KTsKIAogICAgIGlmIChpY29u
cy5pc0VtcHR5KCkpCi0gICAgICAgIGljb25zLmFwcGVuZCh7IG1fZnJhbWUtPmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKEFTQ0lJTGl0ZXJhbCgiL2Zhdmljb24uaWNvIikpLCBMaW5rSWNvblR5cGU6
OkZhdmljb24sIFN0cmluZygpLCBOdWxsb3B0IH0pOworICAgICAgICBpY29ucy5hcHBlbmQoeyBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChBU0NJSUxpdGVyYWwoIi9mYXZpY29uLmlj
byIpKSwgTGlua0ljb25UeXBlOjpGYXZpY29uLCBTdHJpbmcoKSwgc3RkOjpudWxsb3B0IH0pOwog
CiAgICAgZm9yIChhdXRvJiBpY29uIDogaWNvbnMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBt
X2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi5hZGQobmV4dEljb25DYWxsYmFja0lEKyssIGljb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAppbmRleCAxMWE0OGQ3M2NhMzc4ZmI1NGE4ZWVkZDg4ZTZjNzY4YTIzZjkwZTEyLi5lODc4
MWUzYmE1ZjA1ZGQ4MWUxNzcyODBkYjllZGE2Yzc1NjJlNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTU3LDcgKzE1
Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmln
aW5BY2Nlc3NSZXF1ZXN0KFJlc291cmNlUmVxdWVzCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBpZiAobV9hc3luYykgewotICAgICAgICBtX3ByZWZs
aWdodENoZWNrZXIgPSBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIoKnRoaXMsIFdURk1vdmUo
cmVxdWVzdCkpOworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIuZW1wbGFjZSgqdGhpcywgV1RG
TW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlci0+c3RhcnRQcmVmbGln
aHQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZSgpCiAgICAgICAgIHJlc291cmNl
LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIH0KICAgICBpZiAobV9wcmVmbGlnaHRDaGVja2Vy
KQotICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBOdWxsb3B0OworICAgICAgICBtX3ByZWZs
aWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXBv
cnRDb250ZW50U2VjdXJpdHlQb2xpY3lFcnJvcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFVSTCYgdXJsKQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IGFjdHVhbFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAg
ICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woYWN0dWFsUmVxdWVzdCwgc2VjdXJpdHlP
cmlnaW4oKSwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMpOwogCi0gICAgbV9wcmVmbGlnaHRD
aGVja2VyID0gTnVsbG9wdDsKKyAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBJdCBzaG91bGQgYmUgb2sgdG8gc2tpcCB0aGUgc2VjdXJpdHkgY2hlY2sgc2lu
Y2Ugd2UgYWxyZWFkeSBhc2tlZCBhYm91dCB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCiAgICAgbG9h
ZFJlcXVlc3QoV1RGTW92ZShhY3R1YWxSZXF1ZXN0KSwgU2tpcFNlY3VyaXR5Q2hlY2spOwpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRT
dWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gTnVs
bG9wdDsKKyAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKG1fZG9jdW1lbnQuZnJhbWUoKSwg
bV9kb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVy
LCBlcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuaAppbmRleCAwZmYyOTBkODI1NjM4M2EwNzFiZmRmMWY4ZGQxYmU3NjhlZmU0ZTcz
Li4zZGE4YzVlZmRiY2MwNGU3YzliNTJmZGJiMmQ1NWJjZmZiOWFmNTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC0xMTcsOCAr
MTE3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2ltcGxlUmVxdWVz
dDsKICAgICAgICAgYm9vbCBtX2FzeW5jOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICAgICAgT3B0aW9u
YWw8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyPiBtX3ByZWZsaWdodENoZWNrZXI7Ci0gICAg
ICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFkZXJzOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcj4gbV9wcmVmbGlnaHRDaGVj
a2VyOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEhUVFBIZWFkZXJNYXA+IG1fb3JpZ2luYWxIZWFk
ZXJzOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMzU2YTgwNTk2YjBiMDBjYjM1NjUxOWFiMDgyOThhMWM0
MzUzZDFjZS4uNGQ1OWMwMDljYWY2ZmNhN2ZhNTU0MjYzYzdlZDdiMTY1ODZlNTg1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgY2xhc3Mg
RW1wdHlQYXltZW50Q29vcmRpbmF0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50IHsKICAgICBib29sIHNob3dQYXltZW50VUkoY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFVSTD4mLCBjb25zdCBQYXltZW50UmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBQYXltZW50
TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGUgeyB9CiAKLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE9wdGlvbmFsPFBh
eW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlIHsgfQotICAgIHZvaWQg
Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiwgT3B0aW9u
YWw8UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9Ci0gICAg
dm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
LCBzdGQ6Om9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxQYXltZW50UmVxdWVzdDo6U2hpcHBp
bmdNZXRob2Q+Jiwgc3RkOjpvcHRpb25hbDxQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRl
bXM+KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4pIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBhYm9ydFBheW1lbnRT
ZXNzaW9uKCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95
ZWQoKSBvdmVycmlkZSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCAw
Mzk3YjBkNGM3MDY0NWIxODg0MWFhYjM2MGZhMzQxYmY5ZjAzNGJhLi44OWQyMmU3OWIxZDZkMmI5
NmNlMTI2YzdhMjk2YzI3ODk0YmNkNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCkBAIC0yOTYsNyArMjk2LDcgQEAgY2xhc3MgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1
YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29u
KCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRl
bnQ+KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBkaXNwYXRjaERp
ZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgb3ZlcnJpZGUgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBjNzg4M2FjYjFiMWZiZTUwYzI5ODE4YjZmNDY2NmQ5
Y2U5NmU0MzlmLi4xMjJhMmJkMjdmYWQ1NzI3MjZlMTcwZmVlZDU5MTMxYTU2MDM4YTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM0Miw5ICszNDIsOSBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1
ZXN0KQogICAgIHVybFNlbGVjdGVkKHJlcXVlc3QsIG51bGxwdHIpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRU
YXJnZXQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBM
b2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJl
ciBzaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+IG9w
ZW5lclBvbGljeSwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKK3ZvaWQg
RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBh
c3NlZFRhcmdldCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hpc3Rv
cnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJl
ZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVy
UG9saWN5PiBvcGVuZXJQb2xpY3ksIGNvbnN0IEF0b21pY1N0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUpCiB7Ci0gICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3kgPSBv
cGVuZXJQb2xpY3kudmFsdWVPcihzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJy
ZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGlj
eTo6QWxsb3cpOworICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5
ID0gb3BlbmVyUG9saWN5LnZhbHVlX29yKHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRS
ZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3BlbmVy
UG9saWN5OjpBbGxvdyk7CiAgICAgdXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1l
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1cmwpLCBwYXNz
ZWRUYXJnZXQsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVm
ZXJyZXIsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzLCBuZXdGcmFtZU9wZW5lclBv
bGljeSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwsIHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIGRvd25sb2FkQXR0cmlidXRlKSwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0K
IApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBu
ZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wKIAogdm9pZCBGcmFt
ZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogewotICAgIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZChOdWxsb3B0KTsKKyAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpudWxsb3B0KTsKICAg
ICBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAgICAgZGlzcGF0
Y2hHbG9iYWxPYmplY3RBdmFpbGFibGVJbkFsbFdvcmxkcygpOwogCkBAIC0xODE0LDcgKzE4MTQs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBy
ZXF1ZXN0RnJvbURlbGVnYXRlKG1haW5SZXNvdXJjZVJlcXVlc3QsIG1haW5SZXNvdXJjZUlkZW50
aWZpZXIsIG1haW5SZXNvdWNlRXJyb3IpOwogICAgICAgICBub3RpZmllcigpLmRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCksIG1haW5SZXNvdXJj
ZUlkZW50aWZpZXIsIGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkpOwog
Ci0gICAgICAgIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50
ID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPmhhc0luc2VjdXJlQ29udGVudCgpOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250
ZW50ID0gY2FjaGVkUGFnZS0+Y2FjaGVkTWFpbkZyYW1lKCktPmhhc0luc2VjdXJlQ29udGVudCgp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIEFQSSBzaG91bGQgYmUgdHVybmVkIGFyb3VuZCBz
byB0aGF0IHdlIGdyb3VuZCBDYWNoZWRQYWdlIGludG8gdGhlIFBhZ2UuCiAgICAgICAgIGNhY2hl
ZFBhZ2UtPnJlc3RvcmUoKm1fZnJhbWUucGFnZSgpKTsKQEAgLTIwOTcsNyArMjA5Nyw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBB
U1NFUlQodmlldyk7CiAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCi0g
ICAgT3B0aW9uYWw8SW50UmVjdD4gcHJldmlvdXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3
KCkgPyAgbV9mcmFtZS52aWV3KCktPmZyYW1lUmVjdCgpIDogT3B0aW9uYWw8SW50UmVjdD4oTnVs
bG9wdCk7CisgICAgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBwcmV2aW91c1ZpZXdGcmFtZVJlY3Qg
PSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2ZyYW1lLnZpZXcoKS0+ZnJhbWVSZWN0KCkgOiBzdGQ6Om9w
dGlvbmFsPEludFJlY3Q+KHN0ZDo6bnVsbG9wdCk7CiAgICAgbV9mcmFtZS5zZXRWaWV3KHZpZXcp
OwogCiAgICAgLy8gVXNlIHRoZSBwcmV2aW91cyBTY3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KQEAg
LTM1MjksNyArMzUyOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAjZW5kaWYKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0
Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0lu
c2VjdXJlQ29udGVudCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChz
dGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVu
dCkKIHsKICAgICBpZiAobV9zdGF0ZU1hY2hpbmUuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm47CkBAIC0zNTkzLDggKzM1OTMsOCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpmb3JjZVBhZ2VUcmFuc2l0aW9uSWZOZWVkZWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpj
bGVhclRlc3RpbmdPdmVycmlkZXMoKQogewotICAgIG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZvclRl
c3RpbmcgPSBOdWxsb3B0OwotICAgIG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRl
c3RpbmcgPSBOdWxsb3B0OworICAgIG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcgPSBz
dGQ6Om51bGxvcHQ7CisgICAgbV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGlu
ZyA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9s
aWN5RGlzYWJsZWRGb3JUZXN0aW5nID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKaW5kZXggMTdmMzM3ZTI5MTliMTMyOTEzMjg2YjIwMTViNWY0MWM4NDdkYzhhOC4u
MWIwMmVlZmU2Y2Y2MTg2NGEzY2YzYTQ0NzU1MGIwNmNlZTk0ODExYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBGcmFtZUxvYWRlciB7
CiAgICAgdW5zaWduZWQgbG9uZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBS
ZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBk
YXRhKTsKIAogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Qs
IFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgT3B0aW9u
YWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gTnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVy
bFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIExvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+
ID0gc3RkOjpudWxsb3B0LCBjb25zdCBBdG9taWNTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0g
bnVsbEF0b20pOwogICAgIHZvaWQgc3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9u
Pik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZChib29sIGVuZFRvRW5kUmVsb2Fk
ID0gZmFsc2UsIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWUpOwpAQCAtMzUwLDcg
KzM1MCw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyIHsKIAogICAgIGJvb2wgc2hvdWxkUmVsb2FkVG9I
YW5kbGVVbnJlYWNoYWJsZVVSTChEb2N1bWVudExvYWRlciopOwogCi0gICAgdm9pZCBkaXNwYXRj
aERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBpbml0aWFsSGFzSW5z
ZWN1cmVDb250ZW50KTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlv
bmFsPEhhc0luc2VjdXJlQ29udGVudD4gaW5pdGlhbEhhc0luc2VjdXJlQ29udGVudCk7CiAKICAg
ICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBFdmVudCopOwogCkBA
IC00NTIsOCArNDUyLDggQEAgY2xhc3MgRnJhbWVMb2FkZXIgewogCiAgICAgUmVmUHRyPEZyYW1l
TmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7CiAKLSAgICBPcHRpb25hbDxS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeT4gbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGlu
ZzsKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gbV9vdmVycmlkZVJlc291cmNl
TG9hZFByaW9yaXR5Rm9yVGVzdGluZzsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVxdWVz
dENhY2hlUG9saWN5PiBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nOworICAgIHN0ZDo6
b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+IG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlv
cml0eUZvclRlc3Rpbmc7CiAgICAgYm9vbCBtX2lzU3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9u
UG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKIAogICAgIFVSTCBtX3ByZXZpb3Vz
VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiNjUz
MGRlNWJkM2ZlNTUxM2IyN2ZhNzgwZDVkYzJmNjZlYjJlODEzLi4zMGE4YjYzZjI3ZmUwY2QzYjkw
NGYzNGM0YjkwYzEyOTRmMzc3MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMTY1LDcgKzE2NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEZyYW1l
TG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50
PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAppbmRleCA1NWE0ZDVmNjBkYjkwOTIzZGNhY2MwNDg5YmY3NDMzMTA4ZWFiZjBmLi5m
YTA3OGI2NjkyYzBiOGJmZTAwMTYyYzRkNmU3NzBjZmU5MzE1NjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgTGlua0xvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIG1fY2FjaGVkTGlua1Jl
c291cmNlID0gbnVsbHB0cjsKIH0KIAotT3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IExp
bmtMb2FkZXI6OnJlc291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFzKQor
c3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gTGlua0xvYWRlcjo6cmVzb3VyY2VU
eXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXMpCiB7CiAgICAgaWYgKGFzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZTsKQEAgLTEw
MSw3ICsxMDEsNyBAQCBPcHRpb25hbDxDYWNoZWRSZXNvdXJjZTo6VHlwZT4gTGlua0xvYWRlcjo6
cmVzb3VyY2VUeXBlRnJvbUFzQXR0cmlidXRlKGNvbnN0IFN0cgogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShhcywgInRyYWNrIikpCiAgICAgICAgIHJldHVybiBDYWNoZWRS
ZXNvdXJjZTo6VGV4dFRyYWNrUmVzb3VyY2U7CiAjZW5kaWYKLSAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExp
bmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBMaW5rTG9hZGVyJiBsb2FkZXIsIENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUpCkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBMaW5rTG9hZGVyOjpsb2Fk
TGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgaHJl
ZiwKICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG91bGRMb2FkTGluaygpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBw
cmlvcml0eTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJp
b3JpdHk7CiAgICAgICAgIENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUgPSBDYWNoZWRSZXNvdXJj
ZTo6TGlua1ByZWZldGNoOwogICAgICAgICBpZiAocmVsQXR0cmlidXRlLmlzTGlua1N1YnJlc291
cmNlKSB7CiAgICAgICAgICAgICAvLyBXZSBvbmx5IG1ha2Ugb25lIHJlcXVlc3QgdG8gdGhlIGNh
Y2hlZCByZXNvdXJjZSBsb2FkZXIgaWYgbXVsdGlwbGUgcmVsIHR5cGVzIGFyZSBzcGVjaWZpZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCAyYTQ5MjFjNDE1Y2ZhYTZkYzA0Yzc3
ZGE3ZWI4MTg3MjI1MDQ5YzNlLi5lNzczYjY0YzM5MWY1NDU2ZDViMmQ0OWEzNDM2Mzk0NzJlNTAw
ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xh
c3MgTGlua0xvYWRlciA6IHByaXZhdGUgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIHZpcnR1
YWwgfkxpbmtMb2FkZXIoKTsKIAogICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJp
YnV0ZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgYXMsIGNvbnN0IFN0cmluZyYgY3Jvc3NP
cmlnaW4sIERvY3VtZW50Jik7Ci0gICAgc3RhdGljIE9wdGlvbmFsPENhY2hlZFJlc291cmNlOjpU
eXBlPiByZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBhcyk7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5cGU+IHJlc291cmNlVHlwZUZy
b21Bc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFzKTsKIAogICAgIFdlYWtQdHI8TGlua0xvYWRl
cj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0
cigpOyB9CiAgICAgdm9pZCB0cmlnZ2VyRXZlbnRzKGNvbnN0IENhY2hlZFJlc291cmNlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA2ZDE2MDY3
Mzk5NmMyY2MyOTQ1NjZmNWU5NzNmMzVjYWUyOTY2ZmRkLi5jYTBiYzAwZDEyNWMwZDgyMGUxYTc4
ZmU1OTA1Y2ZiNWI4MTZmYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291
cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb24KICAg
ICAsIG1fcmVzb3VyY2UoJnJlc291cmNlKQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVu
dChmYWxzZSkKICAgICAsIG1fc3RhdGUoVW5pbml0aWFsaXplZCkKLSAgICAsIG1fcmVxdWVzdENv
dW50VHJhY2tlcihJblBsYWNlLCBmcmFtZS5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLCByZXNvdXJjZSkKKyAgICAsIG1fcmVxdWVzdENvdW50VHJhY2tlcihzdGQ6OmluX3BsYWNl
LCBmcmFtZS5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCByZXNvdXJjZSkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgc3VicmVzb3VyY2VMb2FkZXJDb3VudGVyLmluY3JlbWVudCgp
OwpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICAgICAgbV9sb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudCA9IHRydWU7CiAKICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQg
bXVsdGlQYXJ0cyBpbiBhIENhY2hlZFJlc291cmNlTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAotICAg
ICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBOdWxsb3B0OworICAgICAgICBtX3JlcXVlc3RD
b3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghbV9yZXNvdXJjZS0+aXNJ
bWFnZSgpKSB7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTU3Miw3ICs1NzIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25lKCkKICAg
ICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9y
ZXF1ZXN0Q291bnRUcmFja2VyID0gTnVsbG9wdDsKKyAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIg
PSBzdGQ6Om51bGxvcHQ7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1fZG9jdW1lbnRMb2FkZXIt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCkubG9hZERvbmUobV9yZXNvdXJjZSwgbV9zdGF0ZSAhPSBD
YW5jZWxsZWRXaGlsZUluaXRpYWxpemluZyk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCBhMzRlZTA2ZTZjOTNkZDc3NDgxYWQ1ZWYxMGU2MzNm
N2ExZDU4YzBlLi44NGMwYWM0ZWNjN2EzYjhiNGE4NTdmYTQzMGJlZmIxNTg3NGYzZjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtMTI4LDcgKzEyOCw3
IEBAIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyIGZpbmFsIDogcHVibGljIFJlc291cmNlTG9hZGVy
IHsKICAgICBDYWNoZWRSZXNvdXJjZSogbV9yZXNvdXJjZTsKICAgICBib29sIG1fbG9hZGluZ011
bHRpcGFydENvbnRlbnQ7CiAgICAgU3VicmVzb3VyY2VMb2FkZXJTdGF0ZSBtX3N0YXRlOwotICAg
IE9wdGlvbmFsPFJlcXVlc3RDb3VudFRyYWNrZXI+IG1fcmVxdWVzdENvdW50VHJhY2tlcjsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlcXVlc3RDb3VudFRyYWNrZXI+IG1fcmVxdWVzdENvdW50VHJhY2tl
cjsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAgIHVuc2lnbmVkIG1f
cmVkaXJlY3RDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBlMDc5MzhjOWY3NTAxNzk1Mjc5MTBhNDk2Y2U2ZjRj
YWRkMmU2MDA0Li5hZmIwYjY1NDczMmQ2ZWJiNTZhNTY0ZmE2ODA0Nzc5OWU1NjIyMDBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTgw
Miw3ICs4MDIsNyBAQCBib29sIENhY2hlZFJlc291cmNlOjphcmVBbGxDbGllbnRzWE1MSHR0cFJl
cXVlc3RzKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6c2V0TG9hZFByaW9yaXR5KGNvbnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYg
bG9hZFByaW9yaXR5KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0TG9hZFByaW9yaXR5KGNvbnN0
IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+JiBsb2FkUHJpb3JpdHkpCiB7CiAg
ICAgaWYgKGxvYWRQcmlvcml0eSkKICAgICAgICAgbV9sb2FkUHJpb3JpdHkgPSBsb2FkUHJpb3Jp
dHkudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggODQ2ODk1MzM4NWYxOWZlYjk2MGI4MThhMmQ3OWEyZmZlZTY0Mzk4Zi4uYzhiYzBk
ZjYzNTI2NTc3NWU2NWJlNTViNDU4OTAyMjc1YjNiNWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBD
YWNoZWRSZXNvdXJjZSB7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAKICAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRQcmlvcml0eTsgfQotICAgIHZvaWQgc2V0TG9hZFByaW9yaXR5KGNvbnN0IE9wdGlv
bmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiYpOworICAgIHZvaWQgc2V0TG9hZFByaW9yaXR5KGNv
bnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+Jik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
Y3BwCmluZGV4IGIyMjBjNDUyZTRkZjVkOWIyOWQxMGI3NDRlZWIyYWIyYmUyYjRmNWQuLjQ3M2Fj
ZDU5ZjAzNGExMTJiZWU2NDM1MTVkNmNiMjliNWI1MDE1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIE9wdGlvbmFsPFJlc291cmNl
TG9hZFByaW9yaXR5PiBwcmlvcml0eSwgU3RyaW5nJiYgY2hhcnNldCkKK0NhY2hlZFJlc291cmNl
UmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlc291cmNl
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBzdGQ6Om9wdGlv
bmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eSwgU3RyaW5nJiYgY2hhcnNldCkKICAg
ICA6IG1fcmVzb3VyY2VSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSkKICAgICAsIG1f
Y2hhcnNldChXVEZNb3ZlKGNoYXJzZXQpKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgK
aW5kZXggYWU0Yjk2NzcwNDExOTI2Njg3NzdmNTRkOGEwYjllNDE1ZTc3NTE0NC4uMGU4YTRjM2Zi
OTNiZTUxMzI5NGQ0ZjA0NWU5OWVmOWFlNzEwNzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaApAQCAtNDksNyArNDksNyBA
QCBib29sIGlzUmVxdWVzdENyb3NzT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBSZXNvdXJjZQogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
ewogcHVibGljOgotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3Jp
dHk+ID0gTnVsbG9wdCwgU3RyaW5nJiYgY2hhcnNldCA9IFN0cmluZygpKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYsIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+ID0gc3RkOjpudWxsb3B0
LCBTdHJpbmcmJiBjaGFyc2V0ID0gU3RyaW5nKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVsZWFzZVJlc291cmNlUmVxdWVzdCgpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNvdXJjZVJlcXVl
c3QpOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQpAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgewogICAgIHZvaWQgc2V0Q2hhcnNldChjb25zdCBTdHJpbmcm
IGNoYXJzZXQpIHsgbV9jaGFyc2V0ID0gY2hhcnNldDsgfQogICAgIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQogICAgIHZv
aWQgc2V0T3B0aW9ucyhjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpIHsgbV9v
cHRpb25zID0gb3B0aW9uczsgfQotICAgIGNvbnN0IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9y
aXR5PiYgcHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX3ByaW9yaXR5OyB9CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4mIHByaW9yaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmlvcml0eTsgfQogICAgIHZvaWQgc2V0SW5pdGlhdG9yKFBhc3NSZWZQdHI8RWxl
bWVudD4pOwogICAgIHZvaWQgc2V0SW5pdGlhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lKCkgY29uc3Q7CkBAIC05Miw3
ICs5Miw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlUmVxdWVzdCB7CiAgICAgUmVzb3VyY2VSZXF1
ZXN0IG1fcmVzb3VyY2VSZXF1ZXN0OwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CiAgICAgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zIG1fb3B0aW9uczsKLSAgICBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlv
cml0eT4gbV9wcmlvcml0eTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5
PiBtX3ByaW9yaXR5OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2luaXRpYXRvckVsZW1lbnQ7CiAg
ICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1fb3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggY2Vi
MzRmMTIxOGVlNWFmMTQwMDI4OTgzYWUwYjZhY2FkOTc0OGM3Ny4uOWRlMTNkOWQ2Njc5YmVmNDhm
MmU0NjdlNTA3YzVjMzU1NDdjZjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVu
dC5oCkBAIC04NCw4ICs4NCw4IEBAIGNsYXNzIE1hdGhNTEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVk
RWxlbWVudCB7CiAgICAgICAgIFN0cmV0Y2hlZCA9IDE4CiAgICAgfTsKIAotICAgIHZpcnR1YWwg
T3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxlKCkgeyByZXR1cm4gTnVsbG9wdDsg
fQotICAgIHZpcnR1YWwgT3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50
KCkgeyByZXR1cm4gTnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxib29sPiBz
cGVjaWZpZWREaXNwbGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRD
aGlsZCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJh
Y3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVs
ZW1lbnQuY3BwCmluZGV4IDFhN2U0YWI3YjRiYzgxMTVkNTlmZTdiZDg2YWJhZmFmM2Q1YTgwYjcu
LmVlMjE4MWUzNjQ5ZjIyZjcyNDZlNmJjNWNkZjJkMjFiMTUzNDE3YzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRnJhY3Rpb25FbGVtZW50Ojps
aW5lVGhpY2tuZXNzKCkKICAgICByZXR1cm4gbV9saW5lVGhpY2tuZXNzLnZhbHVlKCk7CiB9CiAK
LU1hdGhNTEZyYWN0aW9uRWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25F
bGVtZW50OjpjYWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBPcHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4mIGFsaWdubWVudCkKK01hdGhNTEZyYWN0aW9u
RWxlbWVudDo6RnJhY3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpjYWNoZWRG
cmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBzdGQ6Om9wdGlvbmFs
PEZyYWN0aW9uQWxpZ25tZW50PiYgYWxpZ25tZW50KQogewogICAgIGlmIChhbGlnbm1lbnQpCiAg
ICAgICAgIHJldHVybiBhbGlnbm1lbnQudmFsdWUoKTsKQEAgLTk3LDExICs5NywxMSBAQCBNYXRo
TUxGcmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVu
dDo6ZGVub21pbmF0b3JBbGlnbgogdm9pZCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gbGluZXRoaWNrbmVzc0F0dHIpCi0gICAgICAgIG1fbGlu
ZVRoaWNrbmVzcyA9IE51bGxvcHQ7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IHN0ZDo6bnVs
bG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IG51bWFsaWduQXR0cikKLSAgICAgICAgbV9udW1l
cmF0b3JBbGlnbm1lbnQgPSBOdWxsb3B0OworICAgICAgICBtX251bWVyYXRvckFsaWdubWVudCA9
IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlbm9tYWxpZ25BdHRyKQotICAg
ICAgICBtX2Rlbm9taW5hdG9yQWxpZ25tZW50ID0gTnVsbG9wdDsKKyAgICAgICAgbV9kZW5vbWlu
YXRvckFsaWdubWVudCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxGcmFjdGlvbkVsZW1lbnQuaAppbmRleCAzYmY2M2ExOGQ0NmYwOGI4OGFjOGYxOGJiNjgwMDMy
OTI1MTM2MDc0Li5jZmZmNWI2YjM5MmVmZmU4ODQzZGVmNDIyYjYzZTkyZjdlZjQ4M2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5oCkBAIC00OCwx
MSArNDgsMTEgQEAgY2xhc3MgTWF0aE1MRnJhY3Rpb25FbGVtZW50IGZpbmFsIDogcHVibGljIE1h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQgewogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgZmluYWw7CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAKLSAgICBGcmFjdGlvbkFsaWdubWVudCBj
YWNoZWRGcmFjdGlvbkFsaWdubWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgT3B0aW9uYWw8RnJh
Y3Rpb25BbGlnbm1lbnQ+Jik7CisgICAgRnJhY3Rpb25BbGlnbm1lbnQgY2FjaGVkRnJhY3Rpb25B
bGlnbm1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIHN0ZDo6b3B0aW9uYWw8RnJhY3Rpb25BbGln
bm1lbnQ+Jik7CiAKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fbGluZVRoaWNrbmVzczsKLSAgICBP
cHRpb25hbDxGcmFjdGlvbkFsaWdubWVudD4gbV9udW1lcmF0b3JBbGlnbm1lbnQ7Ci0gICAgT3B0
aW9uYWw8RnJhY3Rpb25BbGlnbm1lbnQ+IG1fZGVub21pbmF0b3JBbGlnbm1lbnQ7CisgICAgc3Rk
OjpvcHRpb25hbDxMZW5ndGg+IG1fbGluZVRoaWNrbmVzczsKKyAgICBzdGQ6Om9wdGlvbmFsPEZy
YWN0aW9uQWxpZ25tZW50PiBtX251bWVyYXRvckFsaWdubWVudDsKKyAgICBzdGQ6Om9wdGlvbmFs
PEZyYWN0aW9uQWxpZ25tZW50PiBtX2Rlbm9taW5hdG9yQWxpZ25tZW50OwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKaW5kZXggZjYyNjk0Mjcy
NzgzMTc5ODYzMjQ1ZTEyODhiMzBhZTFiOTViOTUxNi4uNzgzZTlmZjk1Njk5NDhmYThjOWZlYzBl
ZWI0Y2EwZTViYTU4N2FjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TE1hdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVs
ZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRo
TUxNYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MTWF0aD4oKnRoaXMsIFdURk1vdmUoc3R5
bGUpKTsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gTWF0aE1MTWF0aEVsZW1lbnQ6OnNwZWNpZmllZERp
c3BsYXlTdHlsZSgpCitzdGQ6Om9wdGlvbmFsPGJvb2w+IE1hdGhNTE1hdGhFbGVtZW50OjpzcGVj
aWZpZWREaXNwbGF5U3R5bGUoKQogewogICAgIGlmIChjYWNoZWRCb29sZWFuQXR0cmlidXRlKGRp
c3BsYXlzdHlsZUF0dHIsIG1fZGlzcGxheVN0eWxlKSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQp
IHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlzcGxheXN0eWxlIHZhbHVlIG9mIHRoZSA8bWF0
aD4gZGVwZW5kcyBvbiB0aGUgZGlzcGxheSBhdHRyaWJ1dGUsIHNvIHdlIHBhcnNlIGl0IGhlcmUu
CkBAIC03MSw5ICs3MSw5IEBAIHZvaWQgTWF0aE1MTWF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAgICAgYm9vbCBkaXNw
bGF5U3R5bGVBdHRyaWJ1dGUgPSAobmFtZSA9PSBkaXNwbGF5c3R5bGVBdHRyIHx8IG5hbWUgPT0g
ZGlzcGxheUF0dHIpOwogICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRyaWJ1dGUgPSBuYW1lID09IG1h
dGh2YXJpYW50QXR0cjsKICAgICBpZiAoZGlzcGxheVN0eWxlQXR0cmlidXRlKQotICAgICAgICBt
X2Rpc3BsYXlTdHlsZSA9IE51bGxvcHQ7CisgICAgICAgIG1fZGlzcGxheVN0eWxlID0gc3RkOjpu
dWxsb3B0OwogICAgIGlmIChtYXRoVmFyaWFudEF0dHJpYnV0ZSkKLSAgICAgICAgbV9tYXRoVmFy
aWFudCA9IE51bGxvcHQ7CisgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUgfHwgbWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYm
IHJlbmRlcmVyKCkpCiAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVl
KHJlbmRlcmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5o
CmluZGV4IGZhNmM2ZTliNTI3NTE3NmIxODM3YmNjZTA5ZThiYjA2NTlhODY0MzIuLmExZTM3N2Uz
OTAxZWJhZmE0MmFhZjNlZmJlZDc3ODQ5NzAxOTc0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxNYXRoRWxlbWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE1hdGhNTE1hdGhF
bGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTFJvd0VsZW1lbnQgewogCiAgICAgYm9vbCBhY2Nl
cHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJv
b2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRlKCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIE9wdGlvbmFsPGJvb2w+IHNwZWNpZmllZERpc3BsYXlTdHlsZSgpIGZpbmFsOworICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxlKCkgZmluYWw7CiAKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKaW5kZXggMTMzMDkxOTJjZTE0
NGJkZTRlZGU5OTgzZTJmMmE5MDZkYzllMDQ3Ni4uNzQzYzQ2MTFkMzY5NWJhZGJlYTM0NzY2NDYx
YmQzMGMxY2JmMmI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1l
bmNsb3NlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBib29sIE1hdGhNTE1lbmNsb3NlRWxl
bWVudDo6aGFzTm90YXRpb24oTWVuY2xvc2VOb3RhdGlvbkZsYWcgbm90YXRpb25GbGFnKQogdm9p
ZCBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
bm90YXRpb25BdHRyKQotICAgICAgICBtX25vdGF0aW9uRmxhZ3MgPSBOdWxsb3B0OworICAgICAg
ICBtX25vdGF0aW9uRmxhZ3MgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxSb3dFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmgKaW5kZXggZWU3NDVjYmFkZjlmOTcyNGY0MzJmYWRj
Zjc4OGZlNWJiMDFiNGQ2YS4uZGExZDJhNzQ2Mjc2Mzg3OGIyNDQ0NzBhNjc5MmViYWY3YjA0ZWIz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaApA
QCAtNjMsNyArNjMsNyBAQCBjbGFzcyBNYXRoTUxNZW5jbG9zZUVsZW1lbnQgZmluYWw6IHB1Ymxp
YyBNYXRoTUxSb3dFbGVtZW50IHsKICAgICB2b2lkIGNsZWFyTm90YXRpb25zKCkgeyBtX25vdGF0
aW9uRmxhZ3MgPSAwOyB9CiAgICAgdm9pZCBhZGROb3RhdGlvbihNZW5jbG9zZU5vdGF0aW9uRmxh
ZyBub3RhdGlvbkZsYWcpIHsgbV9ub3RhdGlvbkZsYWdzLnZhbHVlKCkgfD0gbm90YXRpb25GbGFn
OyB9CiAgICAgdm9pZCBhZGROb3RhdGlvbkZsYWdzKFN0cmluZ1ZpZXcgbm90YXRpb24pOwotICAg
IE9wdGlvbmFsPHVpbnQxNl90PiBtX25vdGF0aW9uRmxhZ3M7CisgICAgc3RkOjpvcHRpb25hbDx1
aW50MTZfdD4gbV9ub3RhdGlvbkZsYWdzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcAppbmRleCA3YThhMDU0ZDU4MGMw
YjExYWFlODBjYWVkZmU5NGM4YjVhMzk0NjI1Li42ODU0ZjBkYWQ3ZDlmNzc5YmY0OWE2Zjk0OTg3
Mzc4ZjQ4MDM0YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmNwcApAQCAtMTEwNywxNyArMTEwNywxNyBAQCBzdGF0aWMgY29uc3Qg
VUNoYXIzMiBob3Jpem9udGFsT3BlcmF0b3JzW10gPSB7CiAgICAgMHgwMDNELCAweDAwNUUsIDB4
MDA1RiwgMHgwMDdFLCAweDAwQUYsIDB4MDJDNiwgMHgwMkM3LCAweDAyQzksIDB4MDJDRCwgMHgw
MkRDLCAweDAyRjcsIDB4MDMwMiwgMHgwMzMyLCAweDIwM0UsIDB4MjBEMCwgMHgyMEQxLCAweDIw
RDYsIDB4MjBENywgMHgyMEUxLCAweDIxOTAsIDB4MjE5MiwgMHgyMTk0LCAweDIxOTgsIDB4MjE5
OSwgMHgyMTlDLCAweDIxOUQsIDB4MjE5RSwgMHgyMUEwLCAweDIxQTIsIDB4MjFBMywgMHgyMUE0
LCAweDIxQTYsIDB4MjFBOSwgMHgyMUFBLCAweDIxQUIsIDB4MjFBQywgMHgyMUFELCAweDIxQjQs
IDB4MjFCOSwgMHgyMUJDLCAweDIxQkQsIDB4MjFDMCwgMHgyMUMxLCAweDIxQzQsIDB4MjFDNiwg
MHgyMUM3LCAweDIxQzksIDB4MjFDQiwgMHgyMUNDLCAweDIxRDAsIDB4MjFEMiwgMHgyMUQ0LCAw
eDIxREEsIDB4MjFEQiwgMHgyMURDLCAweDIxREQsIDB4MjFFMCwgMHgyMUUyLCAweDIxRTQsIDB4
MjFFNSwgMHgyMUU2LCAweDIxRTgsIDB4MjFGMCwgMHgyMUY2LCAweDIxRkQsIDB4MjFGRSwgMHgy
MUZGLCAweDIzQjQsIDB4MjNCNSwgMHgyM0RDLCAweDIzREQsIDB4MjNERSwgMHgyM0RGLCAweDIz
RTAsIDB4MjNFMSwgMHgyNTAwLCAweDI3RjUsIDB4MjdGNiwgMHgyN0Y3LCAweDI3RjgsIDB4MjdG
OSwgMHgyN0ZBLCAweDI3RkIsIDB4MjdGQywgMHgyN0ZELCAweDI3RkUsIDB4MjdGRiwgMHgyOTBD
LCAweDI5MEQsIDB4MjkwRSwgMHgyOTBGLCAweDI5MTAsIDB4Mjk0RSwgMHgyOTUwLCAweDI5NTIs
IDB4Mjk1MywgMHgyOTU2LCAweDI5NTcsIDB4Mjk1QSwgMHgyOTVCLCAweDI5NUUsIDB4Mjk1Riwg
MHgyQjQ1LCAweDJCNDYsIDB4RkUzNSwgMHhGRTM2LCAweEZFMzcsIDB4RkUzOCwgMHgxRUVGMCwg
MHgxRUVGMQogfTsKIAotT3B0aW9uYWw8UHJvcGVydHk+IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eTo6c2VhcmNoKFVDaGFyMzIgY2hhcmFjdGVyLCBGb3JtIGZvcm0sIGJvb2wgZXhwbGljaXRGb3Jt
KQorc3RkOjpvcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFy
Y2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCiB7CiAg
ICAgaWYgKCFjaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gV2UgdHJ5IGFuZCBmaW5kIHRoZSBkZWZhdWx0IHZh
bHVlcyBmcm9tIHRoZSBvcGVyYXRvciBkaWN0aW9uYXJ5LgogICAgIGlmIChhdXRvKiBlbnRyeSA9
IHRyeUJpbmFyeVNlYXJjaDxjb25zdCBFbnRyeSwgS2V5PihkaWN0aW9uYXJ5LCBkaWN0aW9uYXJ5
U2l6ZSwgS2V5KGNoYXJhY3RlciwgZm9ybSksIEV4dHJhY3RLZXkpKQogICAgICAgICByZXR1cm4g
RXh0cmFjdFByb3BlcnR5KCplbnRyeSk7CiAKICAgICBpZiAoZXhwbGljaXRGb3JtKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IElmIHdlIGRpZCBub3QgZmluZCB0aGUgZGVzaXJlZCBvcGVyYXRvciBmb3JtIGFuZCBpZiBpdCB3
YXMgbm90IHNldCBleHBsaWNpdGVseSwgd2UgdXNlIHRoZSBmaXJzdCBvbmUgaW4gdGhlIGZvbGxv
d2luZyBvcmRlcjogSW5maXgsIFByZWZpeCwgUG9zdGZpeC4KICAgICAvLyBUaGlzIGlzIHRvIGhh
bmRsZSBiYWQgTWF0aE1MIG1hcmt1cCB3aXRob3V0IGV4cGxpY2l0IDxtcm93PiBkZWxpbWl0ZXJz
IGxpa2UgIjxtbz4oPC9tbz48bWk+YTwvbWk+PG1vPik8L21vPjxtbz4oPC9tbz48bWk+YjwvbWk+
PG1vPik8L21vPiIgd2hlcmUgaW5uZXJmZW5jZXMgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGlu
Zml4LgpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgT3B0aW9uYWw8UHJvcGVydHk+IE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeTo6c2VhcmNoKFVDaGFyMzIgY2hhcmFjdGVyLCBGb3JtIGZvcm0KICAgICAg
ICAgcmV0dXJuIEV4dHJhY3RQcm9wZXJ0eSgqZW50cnkpOwogICAgIH0KIAotICAgIHJldHVybiBO
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5Ojppc1ZlcnRpY2FsKFVDaGFyMzIgdGV4dENvbnRlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmgKaW5kZXggMDBlZjUw
ZDY4YzdlZDM0YzMyMTI2MzI3YWI2OWY5ZmFjOWY0ZGUxYi4uZTAzMTZkNzE0NTBmMmIyNzdhYjJm
NzQ0MGQyN2Q4MjNjYmEwOTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnkuaApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgUHJvcGVydHkg
ewogICAgIC8vIERlZmF1bHQgb3BlcmF0b3IgcHJvcGVydGllcyBhcmUgYWxsIHNldCB0byAiZmFs
c2UiLgogICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzIHsgMCB9OwogfTsKLU9wdGlvbmFsPFByb3Bl
cnR5PiBzZWFyY2goVUNoYXIzMiwgRm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pOworc3RkOjpvcHRp
b25hbDxQcm9wZXJ0eT4gc2VhcmNoKFVDaGFyMzIsIEZvcm0sIGJvb2wgZXhwbGljaXRGb3JtKTsK
IGJvb2wgaXNWZXJ0aWNhbChVQ2hhcjMyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAppbmRleCA5NjhhZmUxZWRlMzYzZmNlOTM4ZWE0
NzRjYzRmMWQ3ODJhNDE0MmMzLi44ZDM1YmUzMDAzOWYyNDE0NTM0MTlmY2Q4MDFlODY4NzQ5MTll
M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50
LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50Ojpjb21w
dXRlT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyBmCiB7CiAgICAg
QVNTRVJUKG1fcHJvcGVydGllcy5kaXJ0eUZsYWdzICYgZmxhZyk7CiAKLSAgICBPcHRpb25hbDxC
b29sZWFuVmFsdWU+IHByb3BlcnR5OworICAgIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBw
cm9wZXJ0eTsKICAgICBjb25zdCBhdXRvJiBuYW1lID0gcHJvcGVydHlGbGFnVG9BdHRyaWJ1dGVO
YW1lKGZsYWcpOwogICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUgPSBjYWNoZWRCb29sZWFu
QXR0cmlidXRlKG5hbWUsIHByb3BlcnR5KTsKICAgICBzd2l0Y2ggKHZhbHVlKSB7CkBAIC0yMTEs
MTMgKzIxMSwxMyBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTE9wZXJhdG9y
RWxlbWVudDo6bWF4U2l6ZSgpCiAKIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBtX29wZXJhdG9yQ2hh
ciA9IE51bGxvcHQ7Ci0gICAgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBOdWxsb3B0OworICAgIG1f
b3BlcmF0b3JDaGFyID0gc3RkOjpudWxsb3B0OworICAgIG1fZGljdGlvbmFyeVByb3BlcnR5ID0g
c3RkOjpudWxsb3B0OwogICAgIG1fcHJvcGVydGllcy5kaXJ0eUZsYWdzID0gTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5OjphbGxGbGFnczsKICAgICBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2UpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8TWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5OjpGbGFnPiBhdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eUZsYWcoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eTo6RmxhZz4gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gYWNjZW50QXR0cikKICAgICAgICAgcmV0dXJuIEFj
Y2VudDsKQEAgLTIzMywyNCArMjMzLDI0IEBAIHN0YXRpYyBPcHRpb25hbDxNYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnk6OkZsYWc+IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyhjb25zCiAgICAg
ICAgIHJldHVybiBTdHJldGNoeTsKICAgICBpZiAobmFtZSA9PSBzeW1tZXRyaWNBdHRyKQogICAg
ICAgICByZXR1cm4gU3ltbWV0cmljOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogewogICAgIGlmIChuYW1lID09IGZvcm1BdHRyKSB7Ci0gICAgICAgIG1fZGljdGlvbmFyeVBy
b3BlcnR5ID0gTnVsbG9wdDsKKyAgICAgICAgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIG1fcHJvcGVydGllcy5kaXJ0eUZsYWdzID0gTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5OjphbGxGbGFnczsKICAgICB9IGVsc2UgaWYgKGF1dG8gZmxhZyA9IGF0dHJpYnV0
ZU5hbWVUb1Byb3BlcnR5RmxhZyhuYW1lKSkKICAgICAgICAgbV9wcm9wZXJ0aWVzLmRpcnR5Rmxh
Z3MgfD0gZmxhZy52YWx1ZSgpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gbHNwYWNlQXR0cikKLSAg
ICAgICAgbV9sZWFkaW5nU3BhY2UgPSBOdWxsb3B0OworICAgICAgICBtX2xlYWRpbmdTcGFjZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IHJzcGFjZUF0dHIpCi0gICAgICAg
IG1fdHJhaWxpbmdTcGFjZSA9IE51bGxvcHQ7CisgICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IHN0
ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IG1pbnNpemVBdHRyKQotICAgICAgICBt
X21pblNpemUgPSBOdWxsb3B0OworICAgICAgICBtX21pblNpemUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSBtYXhzaXplQXR0cikKLSAgICAgICAgbV9tYXhTaXplID0gTnVs
bG9wdDsKKyAgICAgICAgbV9tYXhTaXplID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKChuYW1l
ID09IHN0cmV0Y2h5QXR0ciB8fCBuYW1lID09IGxzcGFjZUF0dHIgfHwgbmFtZSA9PSByc3BhY2VB
dHRyIHx8IG5hbWUgPT0gbW92YWJsZWxpbWl0c0F0dHIpICYmIHJlbmRlcmVyKCkpIHsKICAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCpyZW5kZXJlcigpKS51cGRhdGVGcm9t
RWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJh
dG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVu
dC5oCmluZGV4IDM4MDk2NTcwZTllNDU2ZDgxZjkzOTE3NWQxZDQyMGIzNDg4OTI4MjEuLjVkZWZk
NzdmZWUxYWU4ZTAyMmJkZGQ0MTQyODA2MjQxMTJkODljZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
TWF0aE1MT3BlcmF0b3JFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTFRva2VuRWxlbWVudCB7
CiAgICAgfTsKICAgICBzdGF0aWMgT3BlcmF0b3JDaGFyIHBhcnNlT3BlcmF0b3JDaGFyKGNvbnN0
IFN0cmluZyYpOwogICAgIGNvbnN0IE9wZXJhdG9yQ2hhciYgb3BlcmF0b3JDaGFyKCk7Ci0gICAg
dm9pZCBzZXRPcGVyYXRvckZvcm1EaXJ0eSgpIHsgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBOdWxs
b3B0OyB9CisgICAgdm9pZCBzZXRPcGVyYXRvckZvcm1EaXJ0eSgpIHsgbV9kaWN0aW9uYXJ5UHJv
cGVydHkgPSBzdGQ6Om51bGxvcHQ7IH0KICAgICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZv
cm0gZm9ybSgpIHsgcmV0dXJuIGRpY3Rpb25hcnlQcm9wZXJ0eSgpLmZvcm07IH0KICAgICBib29s
IGhhc1Byb3BlcnR5KE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyk7CiAgICAgTGVuZ3Ro
IGRlZmF1bHRMZWFkaW5nU3BhY2UoKTsKQEAgLTU3LDkgKzU3LDkgQEAgY2xhc3MgTWF0aE1MT3Bl
cmF0b3JFbGVtZW50IGZpbmFsIDogcHVibGljIE1hdGhNTFRva2VuRWxlbWVudCB7CiAgICAgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKICAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBm
aW5hbDsKIAotICAgIE9wdGlvbmFsPE9wZXJhdG9yQ2hhcj4gbV9vcGVyYXRvckNoYXI7CisgICAg
c3RkOjpvcHRpb25hbDxPcGVyYXRvckNoYXI+IG1fb3BlcmF0b3JDaGFyOwogCi0gICAgT3B0aW9u
YWw8TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpQcm9wZXJ0eT4gbV9kaWN0aW9uYXJ5UHJvcGVy
dHk7CisgICAgc3RkOjpvcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlByb3BlcnR5
PiBtX2RpY3Rpb25hcnlQcm9wZXJ0eTsKICAgICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OlBy
b3BlcnR5IGNvbXB1dGVEaWN0aW9uYXJ5UHJvcGVydHkoKTsKICAgICBjb25zdCBNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnk6OlByb3BlcnR5JiBkaWN0aW9uYXJ5UHJvcGVydHkoKTsKIApAQCAtNzAs
MTAgKzcwLDEwIEBAIGNsYXNzIE1hdGhNTE9wZXJhdG9yRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBN
YXRoTUxUb2tlbkVsZW1lbnQgewogICAgIE9wZXJhdG9yUHJvcGVydGllcyBtX3Byb3BlcnRpZXM7
CiAgICAgdm9pZCBjb21wdXRlT3BlcmF0b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6
RmxhZyk7CiAKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fbGVhZGluZ1NwYWNlOwotICAgIE9wdGlv
bmFsPExlbmd0aD4gbV90cmFpbGluZ1NwYWNlOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9taW5T
aXplOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9tYXhTaXplOworICAgIHN0ZDo6b3B0aW9uYWw8
TGVuZ3RoPiBtX2xlYWRpbmdTcGFjZTsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV90cmFp
bGluZ1NwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX21pblNpemU7CisgICAgc3Rk
OjpvcHRpb25hbDxMZW5ndGg+IG1fbWF4U2l6ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcAppbmRleCA0OWMwNmVkMjU3Nzc0MDBmYTcw
ZGYyYzcyMzgzYjBiODcxMDQ5Y2ExLi5iMmY0NDZkODNjZTMwM2JiNmYyNzJhMjExOGJmNmUzZTVk
OGJkOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQu
Y3BwCkBAIC03MywxNSArNzMsMTUgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRo
TUxQYWRkZWRFbGVtZW50Ojp2b2Zmc2V0KCkKIHZvaWQgTWF0aE1MUGFkZGVkRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgg
PSBOdWxsb3B0OworICAgICAgICBtX3dpZHRoID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQgPSBOdWxsb3B0OworICAgICAg
ICBtX2hlaWdodCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0
cikKLSAgICAgICAgbV9kZXB0aCA9IE51bGxvcHQ7CisgICAgICAgIG1fZGVwdGggPSBzdGQ6Om51
bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBsc3BhY2VBdHRyKQotICAgICAgICBtX2xzcGFj
ZSA9IE51bGxvcHQ7CisgICAgICAgIG1fbHNwYWNlID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gdm9mZnNldEF0dHIpCi0gICAgICAgIG1fdm9mZnNldCA9IE51bGxvcHQ7Cisg
ICAgICAgIG1fdm9mZnNldCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MUGFkZGVkRWxlbWVudC5oCmluZGV4IDExNmJiMjVlOTEwZDdlYTdjZmMxYzJjNWIyZDJiN2U0
NDc4NjllOWQuLjdjYTM3M2U0NWExYTJkNWQ2MjdlMWYyNzkxMTg0YjYzNjdlNzkxOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuaApAQCAtNDUsMTEgKzQ1
LDExIEBAIGNsYXNzIE1hdGhNTFBhZGRlZEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MUm93
RWxlbWVudCB7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBmaW5hbDsKIAotICAgIE9wdGlvbmFsPExlbmd0aD4gbV93aWR0aDsKLSAgICBPcHRp
b25hbDxMZW5ndGg+IG1faGVpZ2h0OwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsKLSAg
ICBPcHRpb25hbDxMZW5ndGg+IG1fbHNwYWNlOwotICAgIE9wdGlvbmFsPExlbmd0aD4gbV92b2Zm
c2V0OworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9u
YWw8TGVuZ3RoPiBtX2hlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsK
KyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9sc3BhY2U7CisgICAgc3RkOjpvcHRpb25hbDxM
ZW5ndGg+IG1fdm9mZnNldDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCA5MzU1ZDM4MzBiZmQ0MDAzMWRj
NDY2YjA2YWEzMTU2Mjk2NTI5NGRlLi5kZTliZDVkMWE3NDg0M2ZjMTgzOTgzZDkwMTczYTY3NDNk
ZjJkYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBNYXRoTUxQcmVzZW50YXRp
b25FbGVtZW50Ojppc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgICAgIHx8IGh0
bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9CiAKLWNvbnN0IE1hdGhN
TEVsZW1lbnQ6OkJvb2xlYW5WYWx1ZSYgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6Y2FjaGVk
Qm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBPcHRpb25hbDxCb29s
ZWFuVmFsdWU+JiBhdHRyaWJ1dGUpCitjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUm
IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OmNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgc3RkOjpvcHRpb25hbDxCb29sZWFuVmFsdWU+JiBhdHRyaWJ1
dGUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS52YWx1
ZSgpOwpAQCAtMzA2LDcgKzMwNiw3IEBAIE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVz
ZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhNTExlbmd0aChjb25zdCBTdHJpbmcmCiAgICAgcmV0
dXJuIHBhcnNlTmFtZWRTcGFjZShzdHJpbmdWaWV3KTsKIH0KIAotY29uc3QgTWF0aE1MRWxlbWVu
dDo6TGVuZ3RoJiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpjYWNoZWRNYXRoTUxMZW5ndGgo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgT3B0aW9uYWw8TGVuZ3RoPiYgbGVuZ3RoKQorY29u
c3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpjYWNo
ZWRNYXRoTUxMZW5ndGgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgc3RkOjpvcHRpb25hbDxM
ZW5ndGg+JiBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aCkKICAgICAgICAgcmV0dXJuIGxlbmd0
aC52YWx1ZSgpOwpAQCAtMzE5LDEwICszMTksMTAgQEAgYm9vbCBNYXRoTUxQcmVzZW50YXRpb25F
bGVtZW50OjphY2NlcHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCkKICAgICByZXR1cm4gaGFzVGFn
TmFtZShtdGFibGVUYWcpOwogfQogCi1PcHRpb25hbDxib29sPiBNYXRoTUxQcmVzZW50YXRpb25F
bGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUoKQorc3RkOjpvcHRpb25hbDxib29sPiBNYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZpZWREaXNwbGF5U3R5bGUoKQogewogICAgIGlm
ICghYWNjZXB0c0Rpc3BsYXlTdHlsZUF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25zdCBNYXRoTUxFbGVtZW50
OjpCb29sZWFuVmFsdWUmIHNwZWNpZmllZERpc3BsYXlTdHlsZSA9IGNhY2hlZEJvb2xlYW5BdHRy
aWJ1dGUoZGlzcGxheXN0eWxlQXR0ciwgbV9kaXNwbGF5U3R5bGUpOwogICAgIHJldHVybiB0b09w
dGlvbmFsQm9vbChzcGVjaWZpZWREaXNwbGF5U3R5bGUpOwogfQpAQCAtMzY5LDEzICszNjksMTMg
QEAgTWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6
cGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZSgKICAgICByZXR1cm4gTWF0aFZhcmlhbnQ6Ok5vbmU7
CiB9CiAKLU9wdGlvbmFsPE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBNYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50OjpzcGVjaWZpZWRNYXRoVmFyaWFudCgpCitzdGQ6Om9wdGlvbmFsPE1hdGhN
TEVsZW1lbnQ6Ok1hdGhWYXJpYW50PiBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpzcGVjaWZp
ZWRNYXRoVmFyaWFudCgpCiB7CiAgICAgaWYgKCFhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1dGUo
KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFtX21hdGhWYXJpYW50KQogICAgICAgICBtX21hdGhWYXJpYW50ID0gcGFyc2VN
YXRoVmFyaWFudEF0dHJpYnV0ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1hdGh2
YXJpYW50QXR0cikpOwotICAgIHJldHVybiBtX21hdGhWYXJpYW50LnZhbHVlKCkgPT0gTWF0aFZh
cmlhbnQ6Ok5vbmUgPyBOdWxsb3B0IDogbV9tYXRoVmFyaWFudDsKKyAgICByZXR1cm4gbV9tYXRo
VmFyaWFudC52YWx1ZSgpID09IE1hdGhWYXJpYW50OjpOb25lID8gc3RkOjpudWxsb3B0IDogbV9t
YXRoVmFyaWFudDsKIH0KIAogdm9pZCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQpAQCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QKICAgICBib29s
IGRpc3BsYXlTdHlsZUF0dHJpYnV0ZSA9IG5hbWUgPT0gZGlzcGxheXN0eWxlQXR0ciAmJiBhY2Nl
cHRzRGlzcGxheVN0eWxlQXR0cmlidXRlKCk7CiAgICAgYm9vbCBtYXRoVmFyaWFudEF0dHJpYnV0
ZSA9IG5hbWUgPT0gbWF0aHZhcmlhbnRBdHRyICYmIGFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0
ZSgpOwogICAgIGlmIChkaXNwbGF5U3R5bGVBdHRyaWJ1dGUpCi0gICAgICAgIG1fZGlzcGxheVN0
eWxlID0gTnVsbG9wdDsKKyAgICAgICAgbV9kaXNwbGF5U3R5bGUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQotICAgICAgICBtX21hdGhWYXJpYW50ID0gTnVs
bG9wdDsKKyAgICAgICAgbV9tYXRoVmFyaWFudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoKGRp
c3BsYXlTdHlsZUF0dHJpYnV0ZSB8fCBtYXRoVmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVuZGVyZXIo
KSkKICAgICAgICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRp
b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudC5oCmluZGV4IDFhZjhiODFkMWRiMzBmM2YwYjVmNTc3MzBmNGM5YTI0YzFlODM5YzEuLjIz
NzA1NTdiNGNjMmVkYTAxM2I2MmQ0MDA1MGVjMzZlNGIyNWZlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaApAQCAtNDQsMjAgKzQ0
LDIwIEBAIGNsYXNzIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQgOiBwdWJsaWMgTWF0aE1MRWxl
bWVudCB7CiAgICAgc3RhdGljIGJvb2wgaXNQaHJhc2luZ0NvbnRlbnQoY29uc3QgTm9kZSYpOwog
ICAgIHN0YXRpYyBib29sIGlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYpOwogCi0gICAgc3RhdGlj
IE9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IE51bGxvcHQgOiBPcHRp
b25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9Ci0gICAgY29uc3QgQm9v
bGVhblZhbHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBP
cHRpb25hbDxCb29sZWFuVmFsdWU+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
dG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
PT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxi
b29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9CisgICAgY29uc3QgQm9vbGVhblZh
bHVlJiBjYWNoZWRCb29sZWFuQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBzdGQ6Om9w
dGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxM
ZW5ndGgoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5n
dGgoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFsPExlbmd0aD4mKTsKKyAgICBjb25zdCBM
ZW5ndGgmIGNhY2hlZE1hdGhNTExlbmd0aChjb25zdCBRdWFsaWZpZWROYW1lJiwgc3RkOjpvcHRp
b25hbDxMZW5ndGg+Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0c0Rpc3BsYXlTdHlsZUF0
dHJpYnV0ZSgpOwotICAgIE9wdGlvbmFsPGJvb2w+IHNwZWNpZmllZERpc3BsYXlTdHlsZSgpIG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3BlY2lmaWVkRGlzcGxheVN0eWxlKCkg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0c01hdGhWYXJpYW50QXR0cmlidXRl
KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gc3BlY2lmaWVk
TWF0aFZhcmlhbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVj
aWZpZWRNYXRoVmFyaWFudCgpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiBt
X2Rpc3BsYXlTdHlsZTsKLSAgICBPcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsK
KyAgICBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4gbV9kaXNwbGF5U3R5bGU7CisgICAgc3Rk
OjpvcHRpb25hbDxNYXRoVmFyaWFudD4gbV9tYXRoVmFyaWFudDsKIAogcHJpdmF0ZToKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAKaW5kZXggYzhiOTFmMDM1NmNkNjc5
NDUyMzc2MmEyMGM2YjRjMDgzYTYzM2M0MS4uMzkzZWRjMTEyOTMwMDllYWM1ZDA0NDk4NTFjZDNj
MmQ3NmM5ODQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlw
dHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQuY3BwCkBAIC01OCw5ICs1OCw5IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYg
TWF0aE1MU2NyaXB0c0VsZW1lbnQ6OnN1cGVyc2NyaXB0U2hpZnQoKQogdm9pZCBNYXRoTUxTY3Jp
cHRzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzdWJzY3JpcHRzaGlm
dEF0dHIpCi0gICAgICAgIG1fc3Vic2NyaXB0U2hpZnQgPSBOdWxsb3B0OworICAgICAgICBtX3N1
YnNjcmlwdFNoaWZ0ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gc3VwZXJz
Y3JpcHRzaGlmdEF0dHIpCi0gICAgICAgIG1fc3VwZXJzY3JpcHRTaGlmdCA9IE51bGxvcHQ7Cisg
ICAgICAgIG1fc3VwZXJzY3JpcHRTaGlmdCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgKaW5kZXggNjNjOWQ4ODBmZGJlZDc5OWNkZTdh
NDlhN2I1NTA5OGJjZjJlMzEyYS4uYjRhNjA4OWYwZDgyOTAwYjBmMzRhNWM1NWVkY2Y0NWQ3YjU1
ODMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmgK
QEAgLTQ0LDggKzQ0LDggQEAgY2xhc3MgTWF0aE1MU2NyaXB0c0VsZW1lbnQgOiBwdWJsaWMgTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudCB7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPExlbmd0
aD4gbV9zdWJzY3JpcHRTaGlmdDsKLSAgICBPcHRpb25hbDxMZW5ndGg+IG1fc3VwZXJzY3JpcHRT
aGlmdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9zdWJzY3JpcHRTaGlmdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9zdXBlcnNjcmlwdFNoaWZ0OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcAppbmRleCBmODkyNTk1ZTc0
NDc4NGZhZDczZmQyYmVlODc3NTc4ZmUzZTAzZWU1Li45NmU5YjkwNzQ3YmU5NTg2Njc0NWY2MGE5
N2FhMGE0N2NjNzIxNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
U3BhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VF
bGVtZW50LmNwcApAQCAtNjMsMTEgKzYzLDExIEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0
aCYgTWF0aE1MU3BhY2VFbGVtZW50OjpkZXB0aCgpCiB2b2lkIE1hdGhNTFNwYWNlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lk
dGggPSBOdWxsb3B0OworICAgICAgICBtX3dpZHRoID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQgPSBOdWxsb3B0OworICAg
ICAgICBtX2hlaWdodCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRo
QXR0cikKLSAgICAgICAgbV9kZXB0aCA9IE51bGxvcHQ7CisgICAgICAgIG1fZGVwdGggPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU3BhY2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVt
ZW50LmgKaW5kZXggMDI3ODdhNzBkMzBiZjdiODE4ODk0ZGNiM2NmMzEzMDljMWZiYzI4Yy4uM2Yx
NmY3ODUxNzI5ZGI3MmZlZmVmNTcyOWQ4MjA1MmUzZWQ1OWIxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuaApAQCAtNDQsOSArNDQsOSBAQCBjbGFzcyBNYXRo
TUxTcGFjZUVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudCB7
CiAKICAgICBib29sIGFjY2VwdHNEaXNwbGF5U3R5bGVBdHRyaWJ1dGUoKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOwotICAgIE9wdGlvbmFs
PExlbmd0aD4gbV9oZWlnaHQ7Ci0gICAgT3B0aW9uYWw8TGVuZ3RoPiBtX2RlcHRoOworICAgIHN0
ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBt
X2hlaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPExlbmd0aD4gbV9kZXB0aDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAKaW5kZXggNDM1YWYx
MzYwMzYyNDY5MjZjYWVhOGM1NmU1MjllYTAyOTNiMzczMy4uY2UxY2NhNmE4ZTNhYTc0MjFiYjg5
Y2ViZGY0NWY4NDU2ZWM2MGU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFRva2VuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRv
a2VuRWxlbWVudC5jcHAKQEAgLTc3LDE1ICs3NywxNSBAQCBib29sIE1hdGhNTFRva2VuRWxlbWVu
dDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAg
ICByZXR1cm4gaXNQaHJhc2luZ0NvbnRlbnQoY2hpbGQpICYmIFN0eWxlZEVsZW1lbnQ6OmNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQogCi1PcHRpb25hbDxVQ2hhcjMyPiBNYXRo
TUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2ludChTdHJpbmdWaWV3IHN0cmlu
ZykKK3N0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9T
aW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgYXV0byBjb2RlUG9pbnRz
ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdXaGl0ZXNwYWNlKHN0cmluZykuY29kZVBvaW50cygp
OwogICAgIGF1dG8gaXRlcmF0b3IgPSBjb2RlUG9pbnRzLmJlZ2luKCk7CiAgICAgaWYgKGl0ZXJh
dG9yID09IGNvZGVQb2ludHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgIE9w
dGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVyYXRvcjsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVy
YXRvcjsKICAgICArK2l0ZXJhdG9yOwotICAgIHJldHVybiBpdGVyYXRvciA9PSBjb2RlUG9pbnRz
LmVuZCgpID8gY2hhcmFjdGVyIDogTnVsbG9wdDsKKyAgICByZXR1cm4gaXRlcmF0b3IgPT0gY29k
ZVBvaW50cy5lbmQoKSA/IGNoYXJhY3RlciA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5oCmluZGV4IDRkNDJjMDcwM2Q2NTky
Yjc2ZGQzZWYxYTdjNjI0MWIzZmFiN2MwZjguLmJlZDQwZjNjZmZiNzhmMjk0NTE0NTMxMzUyMDM1
M2JhOTFiNGQ3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tl
bkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50
LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgTWF0aE1MVG9rZW5FbGVtZW50IDogcHVibGljIE1h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWF0aE1M
VG9rZW5FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmKTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBjb252ZXJ0VG9TaW5nbGVDb2Rl
UG9pbnQoU3RyaW5nVmlldyk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gY29u
dmVydFRvU2luZ2xlQ29kZVBvaW50KFN0cmluZ1ZpZXcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWF0
aE1MVG9rZW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAK
aW5kZXggNWNjYzBjNTJkYWJiZDU0YzM1YTZiMGZkODk1MGI1MzMzMTJmZmZkYS4uMTQxM2FhZDYx
N2Q0NjRjNTUwYjM4NGYyMjRhOWI5Y2U1MzU0OGYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcApAQCAtNTgsOSArNTgsOSBAQCBjb25z
dCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmFj
Y2VudFVuZGVyKCkKIHZvaWQgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAobmFtZSA9PSBhY2NlbnRBdHRyKQotICAgICAgICBtX2FjY2VudCA9IE51bGxvcHQ7
CisgICAgICAgIG1fYWNjZW50ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
YWNjZW50dW5kZXJBdHRyKQotICAgICAgICBtX2FjY2VudFVuZGVyID0gTnVsbG9wdDsKKyAgICAg
ICAgbV9hY2NlbnRVbmRlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oCmluZGV4IDllYzZkYjcwMDJjNTAwYzQ0NmZlZDQ2Yzdm
OTQxMjgwNGJlOTNmMmIuLjA3ZjRkOTZmODYwN2ZmOWYyMTk5MzJkZWI2YjI3MmY2ZDQ1ODljZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaApA
QCAtNDIsOCArNDIsOCBAQCBjbGFzcyBNYXRoTUxVbmRlck92ZXJFbGVtZW50IGZpbmFsIDogcHVi
bGljIE1hdGhNTFNjcmlwdHNFbGVtZW50IHsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIGZpbmFsOwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCi0gICAgT3B0aW9uYWw8Qm9vbGVhblZh
bHVlPiBtX2FjY2VudDsKLSAgICBPcHRpb25hbDxCb29sZWFuVmFsdWU+IG1fYWNjZW50VW5kZXI7
CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuVmFsdWU+IG1fYWNjZW50OworICAgIHN0ZDo6b3B0
aW9uYWw8Qm9vbGVhblZhbHVlPiBtX2FjY2VudFVuZGVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKaW5kZXggNTE3YjFhODhmZTI3NGY0ZDkzNWFhMWQ5MGZhNGM1Yjk5YTk2
NzBjNS4uOWM1NWVjNzI1ODNhYWMzZjQxOTdjOTkxZTZkZTdhYzcyZTM4Y2Y0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zOTAsNyArMzkwLDcgQEAgY2xhc3MgV0VCQ09SRV9F
WFBPUlQgQ2hyb21lQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVt
YklzVmlzaWJsZUluUmVjdChjb25zdCBJbnRSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUpIHsgfQogCi0g
ICAgdmlydHVhbCBXVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVycmVk
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgeyByZXR1cm4gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVm
YXVsdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+
IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIFNjcm9sbGJhck92ZXJs
YXlTdHlsZURlZmF1bHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnND
aGFuZ2VkKGJvb2wgaGFzSGFuZGxlcnMpID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGlt
ZXIuY3BwCmluZGV4IGQwM2MxYjAyZmU2MDIzYjYyMzE3YzMxMWQzNmMzZGE1ZmFkYzRmZDUuLmE5
NjlkOTQ4ZTdlMzljMDI2OWM1YTMwZmY5Y2QwMTdjOTJkZDk1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
VGltZXIuY3BwCkBAIC00MjYsMTEgKzQyNiwxMSBAQCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IERPTVRpbWVyOjppbnRlcnZhbENsYW1wZWRUb01pbmltdW0oKSBjb25zdAogICAgIHJldHVybiBp
bnRlcnZhbDsKIH0KIAotT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4gRE9NVGlt
ZXI6OmFsaWduZWRGaXJlVGltZShzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGZpcmVUaW1lKSBj
b25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBET01UaW1lcjo6
YWxpZ25lZEZpcmVUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZmlyZVRpbWUpIGNvbnN0
CiB7CiAgICAgYXV0byBhbGlnbm1lbnRJbnRlcnZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+dGltZXJBbGlnbm1lbnRJbnRlcnZhbChtX25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3Rp
bmdMZXZlbCk7CiAgICAgaWYgKGFsaWdubWVudEludGVydmFsID09IDBtcykKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc3Rh
dGljIGNvbnN0IGRvdWJsZSByYW5kb21pemVkUHJvcG9ydGlvbiA9IHJhbmRvbU51bWJlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVRpbWVyLmgKaW5kZXggOTZjOGIzYmI2NWE3ZmNmMjY3ZThlMGFkZTZjZmNl
MGZiOWFkYTdkNC4uMzlhMDQ2MWRhZWVlZTI1ZWFiYTMzOTk2ZTdhMGRjOGRkOTFhNjc4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NVGltZXIuaApAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBET01UaW1lciBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVRpbWVyPiwgcHVibGljIFN1c3BlbmRhYmxlVGltZXIg
ewogICAgIC8vIFN1c3BlbmRhYmxlVGltZXIKICAgICB2b2lkIGZpcmVkKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRTdG9wKCkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcz4gYWxpZ25lZEZpcmVUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMpIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cz4gYWxpZ25lZEZpcmVUaW1lKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICBjb25zdCBjaGFyKiBhY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggMmE5MzkzYWY4YjY4YmZlYmFhMWQ2ZjBhYzRiNmNhZjhkZTY5Mjk3Yi4uZTQ1NzBl
MTRmYWZkOWVmYjE5MzM2OTNmYTNlYmJkYzJjNzRlNDM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtMTUyMiw3ICsxNTIyLDcgQEAgZG91YmxlIERPTVdpbmRvdzo6ZGV2aWNlUGl4
ZWxSYXRpbygpIGNvbnN0CiAKIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShjb25zdCBTY3JvbGxU
b09wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMu
bGVmdC52YWx1ZU9yKDApLCBvcHRpb25zLnRvcC52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gc2Ny
b2xsQnkob3B0aW9ucy5sZWZ0LnZhbHVlX29yKDApLCBvcHRpb25zLnRvcC52YWx1ZV9vcigwKSk7
CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShkb3VibGUgeCwgZG91YmxlIHkpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBjOWY5YmJjOTNhZDAzZTdhODVmZGZhMmMxYjZk
NTdlYWZjYTczNGZhLi41OTViM2NlMjMxNTBhZTM3NjMyMWFmOWFlNzI1MmM0ZDE0MmY0YzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTM3MCw3ICszNzAsNyBAQCBjbGFzcyBET01XaW5k
b3cgZmluYWwKIAogICAgIGJvb2wgbV9zaG91bGRQcmludFdoZW5GaW5pc2hlZExvYWRpbmcgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9zdXNwZW5kZWRGb3JEb2N1bWVudFN1c3BlbnNpb24geyBmYWxz
ZSB9OwotICAgIE9wdGlvbmFsPGJvb2w+IG1fY2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGU7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2NhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlOwogCiAg
ICAgSGFzaFNldDxET01XaW5kb3dQcm9wZXJ0eSo+IG1fcHJvcGVydGllczsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA0NzQyMjg4MDcyY2U1YTVhMWViN2E5MDRmNTIxNTMz
ZjVlNTI0NWM3Li5kNTU1NWVkMmMwZmI1N2I5NjNiN2I2MDAyMTk4NzE3MTI2ZjY1ZmQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtMjgwLDggKzI4MCw4IEBAIHZvaWQgRXZl
bnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW0oKQogICAgICAgICAgICAgbV9kaXNjYXJkVHJhaWxp
bmdOZXdsaW5lID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbGluZUxlbmd0aDsKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpZWxkTGVuZ3RoOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsaW5lTGVuZ3RoOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBmaWVsZExlbmd0aDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gcG9zaXRpb247ICFsaW5lTGVuZ3RoICYmIGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgICAg
IHN3aXRjaCAobV9yZWNlaXZlQnVmZmVyW2ldKSB7CiAgICAgICAgICAgICBjYXNlICc6JzoKQEAg
LTMxNyw3ICszMTcsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtKCkKICAg
ICAgICAgbV9yZWNlaXZlQnVmZmVyLnJlbW92ZSgwLCBwb3NpdGlvbik7CiB9CiAKLXZvaWQgRXZl
bnRTb3VyY2U6OnBhcnNlRXZlbnRTdHJlYW1MaW5lKHVuc2lnbmVkIHBvc2l0aW9uLCBPcHRpb25h
bDx1bnNpZ25lZD4gZmllbGRMZW5ndGgsIHVuc2lnbmVkIGxpbmVMZW5ndGgpCit2b2lkIEV2ZW50
U291cmNlOjpwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gZmllbGRMZW5ndGgsIHVuc2lnbmVkIGxpbmVMZW5ndGgpCiB7CiAgICAg
aWYgKCFsaW5lTGVuZ3RoKSB7CiAgICAgICAgIGlmICghbV9kYXRhLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCAwM2FlYzJiYjMxYjhhYWU1Mjk0YjZmNzk5ODQ2OGRk
YjkxNmE5OGRkLi4yYmUzZjlmMWI3NWQzOWQ1M2IyZmUzOTEyOTNmNThjYzBmMTgyNzgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIEV2ZW50U291
cmNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RXZlbnRTb3VyY2U+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoCiAgICAgdm9pZCBzY2hlZHVsZVJlY29ubmVjdCgpOwogICAgIHZvaWQgYWJvcnRD
b25uZWN0aW9uQXR0ZW1wdCgpOwogICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbSgpOwotICAgIHZv
aWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zaXRpb24sIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaWVsZExlbmd0aCwgdW5zaWduZWQgbGluZUxlbmd0aCk7CisgICAgdm9pZCBwYXJzZUV2
ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3NpdGlvbiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
ZmllbGRMZW5ndGgsIHVuc2lnbmVkIGxpbmVMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNz
YWdlRXZlbnQoKTsKIAogICAgIGJvb2wgcmVzcG9uc2VJc1ZhbGlkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhNjE5YTBiMjY1
YTc2NzU0MDBmZDJlMjg5ZDYzMGZiZWQ5NTRmNjIxLi42MWI4OGM5ZTcwZTFkZTUyZGMzMTY3ZmJi
NjU0MmY3MWMxMjgxYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00NDksNyAr
NDQ5LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmRldGFjaEN1c3RvbVNjcm9sbGJhcnMoKQogdm9pZCBG
cmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkKIHsKICAgICBTY3Jv
bGxiYXJPdmVybGF5U3R5bGUgb2xkT3ZlcmxheVN0eWxlID0gc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KCk7Ci0gICAgV1RGOjpPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IGNsaWVudE92ZXJs
YXlTdHlsZSA9IGZyYW1lKCkucGFnZSgpID8gZnJhbWUoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVu
dCgpLnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIDogU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlRGVmYXVsdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gY2xp
ZW50T3ZlcmxheVN0eWxlID0gZnJhbWUoKS5wYWdlKCkgPyBmcmFtZSgpLnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkucHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgOiBTY3JvbGxiYXJP
dmVybGF5U3R5bGVEZWZhdWx0OwogICAgIGlmIChjbGllbnRPdmVybGF5U3R5bGUpIHsKICAgICAg
ICAgaWYgKGNsaWVudE92ZXJsYXlTdHlsZS52YWx1ZSgpICE9IG9sZE92ZXJsYXlTdHlsZSkKICAg
ICAgICAgICAgIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShjbGllbnRPdmVybGF5U3R5bGUudmFs
dWUoKSk7CkBAIC0xODMxLDcgKzE4MzEsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0QmFzZUxheW91
dFZpZXdwb3J0T3JpZ2luKExheW91dFBvaW50IG9yaWdpbiwgVHJpZ2dlckxheW91dE9yTgogICAg
IH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KE9w
dGlvbmFsPExheW91dFJlY3Q+IHJlY3QpCit2b2lkIEZyYW1lVmlldzo6c2V0TGF5b3V0Vmlld3Bv
cnRPdmVycmlkZVJlY3Qoc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiByZWN0KQogewogICAgIGlm
IChyZWN0ID09IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpCiAgICAgICAgIHJldHVybjsK
QEAgLTUxNTUsNyArNTE1NSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzKFdpZGdl
dE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiAgICAgICAgIHdpZGdldC0+bm90aWZ5V2lkZ2V0
KG5vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJlY3Qo
T3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCit2b2lkIEZyYW1lVmlldzo6c2V0
Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3Qp
CiB7CiAgICAgaWYgKG1fdmlld0V4cG9zZWRSZWN0ID09IHZpZXdFeHBvc2VkUmVjdCkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggODkzNDUxMDRhNjY5OWY3ZTUw
YWM1ZTU4NzI5MmQxN2FjOGYzODBiNy4uZjg5Nzg0MjdkYTg0NDY4NjA0YmMxNGU2MTMwZjM5MDg4
OWZmNDYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yNjMsNyArMjYzLDcgQEAgY2xh
c3MgRnJhbWVWaWV3IGZpbmFsIDogcHVibGljIFNjcm9sbFZpZXcgewogICAgIAogICAgIC8vIElm
IHNldCwgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0ICJtX2xheW91dFZpZXdwb3J0T3JpZ2luLCBzaXpl
IG9mIGluaXRpYWwgY29udGFpbmluZyBibG9jayIgcmVjdC4KICAgICAvLyBVc2VkIHdpdGggZGVs
ZWdhdGVkIHNjcm9sbGluZyAoaS5lLiBpT1MpLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoT3B0aW9uYWw8TGF5b3V0UmVjdD4pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qoc3RkOjpvcHRp
b25hbDxMYXlvdXRSZWN0Pik7CiAKICAgICAvLyBUaGVzZSBhcmUgaW4gZG9jdW1lbnQgY29vcmRp
bmF0ZXMsIHVuYWZmZWN0ZWQgYnkgem9vbWluZy4KICAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRS
ZWN0IGxheW91dFZpZXdwb3J0UmVjdCgpIGNvbnN0OwpAQCAtNTY5LDggKzU2OSw4IEBAIGNsYXNz
IEZyYW1lVmlldyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxWaWV3IHsKICAgICAvLyBvZiB0aGUgdmll
dyBpcyBhY3R1YWxseSBleHBvc2VkIG9uIHNjcmVlbiAodGFraW5nIGludG8gYWNjb3VudAogICAg
IC8vIGNsaXBwaW5nIGJ5IG90aGVyIFVJIGVsZW1lbnRzKSwgd2hlcmVhcyB2aXNpYmxlQ29udGVu
dFJlY3QgaXMKICAgICAvLyBpbnRlcm5hbCB0byBXZWJDb3JlIGFuZCBkb2Vzbid0IHJlc3BlY3Qg
dGhvc2UgdGhpbmdzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0
KE9wdGlvbmFsPEZsb2F0UmVjdD4pOwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4cG9z
ZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4p
OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3ZpZXdFeHBvc2VkUmVjdDsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKICAgICB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzKCkgb3ZlcnJpZGU7CkBAIC03ODYsMTAgKzc4
NiwxMCBAQCBjbGFzcyBGcmFtZVZpZXcgZmluYWwgOiBwdWJsaWMgU2Nyb2xsVmlldyB7CiAKICAg
ICBib29sIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW47CiAKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBt
X3ZpZXdFeHBvc2VkUmVjdDsKICAgICAKICAgICBMYXlvdXRQb2ludCBtX2xheW91dFZpZXdwb3J0
T3JpZ2luOwotICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlk
ZVJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBtX2xheW91dFZpZXdwb3J0T3Zl
cnJpZGVSZWN0OwogCiAgICAgdW5zaWduZWQgbV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQ7CiAg
ICAgYm9vbCBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRl
eCBhZTk2NjA4MTFiNDM5MGVjN2RkYmI1NjhiZmM2NWRmNDFjNWU5YzFkLi41ZmUyMWU3MmQ0NGNh
NjIyODJmNzg1MmFjMThmOWI3ZjY0NTc2ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU1Myw3
ICs1NTMsNyBAQCBib29sIFBhZ2U6OnNob3dBbGxQbHVnaW5zKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWlubGluZSBPcHRpb25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFydExpc3Rl
bmVyJiwgRG9jdW1lbnQmPj4gIFBhZ2U6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKQor
aW5saW5lIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciYsIERv
Y3VtZW50Jj4+ICBQYWdlOjp0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCkKIHsKICAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQpA
QCAtNTYxLDcgKzU2MSw3IEBAIGlubGluZSBPcHRpb25hbDxzdGQ6OnBhaXI8TWVkaWFDYW5TdGFy
dExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gIFBhZ2U6OnRha2VBbnlNZWRpCiAgICAgICAgIGlmIChN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIqIGxpc3RlbmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnRha2VB
bnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKSkKICAgICAgICAgICAgIHJldHVybiB7IHsgKmxpc3Rl
bmVyLCAqZnJhbWUtPmRvY3VtZW50KCkgfSB9OwogICAgIH0KLSAgICByZXR1cm4gTnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFBhZ2U6OnNldENhblN0YXJ0TWVk
aWEoYm9vbCBjYW5TdGFydE1lZGlhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyMDBhYjM5NmUzN2Y3OTY4
NjRkMGU0NjAyNGFjMWU4NWZiZjk4MGY2Li4yMjgzNGZmNzAzYmY4ODFkNmMyODdjOWRkYjM2ZWQ2
ZGVlMTI0YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTQxLDggKzU0MSw4IEBAIGNsYXNzIFBhZ2Ug
OiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewogICAgIGJvb2wgaXNSZXNvdXJjZUNhY2hp
bmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQ7IH0K
ICAgICB2b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpIHsgbV9y
ZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCA9IGRpc2FibGVkOyB9CiAKLSAgICBPcHRpb25hbDxFdmVu
dFRocm90dGxpbmdCZWhhdmlvcj4gZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZTsgfQotICAgIHZv
aWQgc2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShPcHRpb25hbDxFdmVudFRocm90
dGxpbmdCZWhhdmlvcj4gdGhyb3R0bGluZykgeyBtX2V2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3Zl
cnJpZGUgPSB0aHJvdHRsaW5nOyB9CisgICAgc3RkOjpvcHRpb25hbDxFdmVudFRocm90dGxpbmdC
ZWhhdmlvcj4gZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZTsgfQorICAgIHZvaWQgc2V0RXZlbnRU
aHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShzdGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0Jl
aGF2aW9yPiB0aHJvdHRsaW5nKSB7IG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSA9
IHRocm90dGxpbmc7IH0KIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRH
cm91cCgpOwpAQCAtNTYyLDcgKzU2Miw3IEBAIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVu
dGFibGU8UGFnZT4gewogCiAgICAgdW5zaWduZWQgZmluZE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBTaG91bGRIaWdobGln
aHRNYXRjaGVzLCBTaG91bGRNYXJrTWF0Y2hlcyk7CiAKLSAgICBPcHRpb25hbDxzdGQ6OnBhaXI8
TWVkaWFDYW5TdGFydExpc3RlbmVyJiwgRG9jdW1lbnQmPj4gdGFrZUFueU1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcigpOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lciYsIERvY3VtZW50Jj4+IHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAogICAg
IFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiBwbHVnaW5WaWV3cygpOwogCkBAIC03MzcsNyAr
NzM3LDcgQEAgY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiB7CiAgICAg
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24geyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgfTsKICAgICAKICAgICAvLyBG
b3IgdGVzdGluZy4KLSAgICBPcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gbV9ldmVu
dFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3I+IG1fZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZTsKIH07CiAK
IGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2Nyb2xsVG9PcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Njcm9sbFRv
T3B0aW9ucy5oCmluZGV4IGM5ODk5ZDc5NWFhNWY0NjU0M2QzMzY3MzA3NTQyNzNkZjk5ZTIxZGYu
Ljg0YTlkOWRkYjI4MDVkN2YyYjM5NDM3NjRhMzE5MGE5Y2NmNWQwZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2Nyb2xsVG9PcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TY3JvbGxUb09wdGlvbnMuaApAQCAtMzMsOCArMzMsOCBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgU2Nyb2xsVG9PcHRpb25zIHsKLSAgICBPcHRpb25hbDxkb3VibGU+IGxl
ZnQ7Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiB0b3A7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGxlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvcDsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggN2EyMWQ1YmIyMTk2ZTc4Y2RlODU2Mjhm
ZGJmYmFlNDBlNDliMTM0Yy4uYjI1OWZmYWY2NzY1ZDQ1NWRlNDU0YjRkMzk0ODBiMDhhNjIxOGI2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTEwOCw3ICsxMDgs
NyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAg
bV9kb21haW4gPSBtX2hvc3Q7CiAKICAgICBpZiAobV9wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQ
cm90b2NvbChtX3BvcnQudmFsdWUoKSwgbV9wcm90b2NvbCkpCi0gICAgICAgIG1fcG9ydCA9IE51
bGxvcHQ7CisgICAgICAgIG1fcG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1
bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4K
ICAgICBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyA9IGlzTG9jYWwoKTsKQEAgLTQ4Niw3ICs0ODYs
NyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKFVSTChVUkwoKSwgb3JpZ2luU3RyaW5nKSk7CiB9CiAKLVJlZjxTZWN1cml0eU9yaWdp
bj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGhvc3QsIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorUmVmPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKIHsKICAgICBTdHJpbmcg
ZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7CiAgICAgYXV0byBv
cmlnaW4gPSBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDg1Y2YzMzIxM2UzMTEyODVl
Nzc0MTY4YmUxYTJmOTcwMmM2Y2ZjZmUuLjE4Y2IxODhkYTcwZDMxYWQ2ODFmMzM4N2YxNDI4Mzg1
YzY5OGE2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTUzLDcgKzUz
LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U2VjdXJpdHlPcmlnaW4+IHsKICAgICBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVV
bmlxdWUoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+
IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNv
bnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQp
OwogCiAgICAgLy8gU29tZSBVUkwgc2NoZW1lcyB1c2UgbmVzdGVkIFVSTHMgZm9yIHRoZWlyIHNl
Y3VyaXR5IGNvbnRleHQuIEZvciBleGFtcGxlLAogICAgIC8vIGZpbGVzeXN0ZW0gVVJMcyBsb29r
IGxpa2UgdGhlIGZvbGxvd2luZzoKQEAgLTgxLDcgKzgxLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmln
aW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKICAgICBj
b25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b2NvbDsgfQogICAg
IGNvbnN0IFN0cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQogICAgIGNvbnN0
IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9kb21haW47IH0KLSAgICBPcHRpb25h
bDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsgfQorICAgIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQ7IH0KIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBhIGdpdmVuIFVSTCBpcyBzZWN1cmUsIGJhc2VkIGVpdGhlciBkaXJl
Y3RseSBvbiBpdHMKICAgICAvLyBvd24gcHJvdG9jb2wsIG9yLCB3aGVuIHJlbGV2YW50LCBvbiB0
aGUgcHJvdG9jb2wgb2YgaXRzICJpbm5lciBVUkwiCkBAIC0yMTgsNyArMjE4LDcgQEAgY2xhc3Mg
U2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmln
aW4+IHsKICAgICBTdHJpbmcgbV9ob3N0OwogICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICBTdHJp
bmcgbV9maWxlUGF0aDsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gbV9wb3J0OworICAgIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+IG1fcG9ydDsKICAgICBib29sIG1faXNVbmlxdWUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV91bml2ZXJzYWxBY2Nlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kb21h
aW5XYXNTZXRJbkRPTSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKaW5kZXggNzQzNjkwZWE4NGFlMmRhNjIxMDkzMzYxNmRmODg0YmNjZjAwYTRj
Yy4uMjRhOWQ0M2ZmNzdlMTVhZDczNzEwYTg0ZWExNWJiMWYwOThiZmJmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtNTAsNyArNTAsNyBAQCBTZWN1
cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mCiAjaWYgIUxPR19ESVNBQkxFRAogU3RyaW5nIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZGVidWdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKHBy
b3RvY29sLCAiOi8vIiwgaG9zdCwgIjoiLCBTdHJpbmc6Om51bWJlcihwb3J0LnZhbHVlT3IoMCkp
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3Ry
aW5nOjpudW1iZXIocG9ydC52YWx1ZV9vcigwKSkpOwogfQogI2VuZGlmCiAKQEAgLTkyLDM3ICs5
MiwzNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIoKSBj
b25zdAogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmROdW1iZXIocG9ydC52YWx1ZU9yKDApKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51
bWJlcihwb3J0LnZhbHVlX29yKDApKTsKICAgICAKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOwogfQogCi1PcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRl
bnRpZmllcikKK3N0ZDo6b3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBmaXJzdCBzZXBhcmF0b3IKICAg
ICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFiYXNlSWRlbnRpZmllci5maW5kKHNlcGFyYXRvckNo
YXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGVyZSdzIGEgc2Vjb25kIHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3Iy
ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJldmVyc2VGaW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAg
ICAgaWYgKHNlcGFyYXRvcjIgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIC8vIEVuc3VyZSB0aGVyZSB3
ZXJlIGF0IGxlYXN0IDIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuIFNvbWUgaG9zdG5hbWVzIG9uIGlu
dHJhbmV0cyBoYXZlCiAgICAgLy8gdW5kZXJzY29yZXMgaW4gdGhlbSwgc28gd2UnbGwgYXNzdW1l
IHRoYXQgYW55IGFkZGl0aW9uYWwgdW5kZXJzY29yZXMgYXJlIHBhcnQgb2YgdGhlIGhvc3QuCiAg
ICAgaWYgKHNlcGFyYXRvcjEgPT0gc2VwYXJhdG9yMikKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBwb3J0IHNlY3Rpb24gaXMgYSB2YWxpZCBwb3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0CiAg
ICAgYm9vbCBwb3J0T2theTsKICAgICBpbnQgcG9ydCA9IGRhdGFiYXNlSWRlbnRpZmllci5yaWdo
dChkYXRhYmFzZUlkZW50aWZpZXIubGVuZ3RoKCkgLSBzZXBhcmF0b3IyIC0gMSkudG9JbnQoJnBv
cnRPa2F5KTsKICAgICBib29sIHBvcnRBYnNlbnQgPSAoc2VwYXJhdG9yMiA9PSBkYXRhYmFzZUlk
ZW50aWZpZXIubGVuZ3RoKCkgLSAxKTsKICAgICBpZiAoIShwb3J0T2theSB8fCBwb3J0QWJzZW50
KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQxNl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEge2RhdGFi
YXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSksIGRhdGFiYXNlSWRlbnRpZmll
ci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSks
IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaAppbmRleCA5NzliNDJmZjkwNDRlMmQ1YWM0NmNhNmEwZGY0NDk2ZjNk
Y2QyZWM5Li4yMTBhNDllYTRkM2QzNWQ1N2ViZmIyZTUzMzRlYjU3MjE3ODU0YTVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiAKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSgpID0gZGVmYXVsdDsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEoY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZf
dD4gcG9ydCkKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
Y29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogICAgICAg
ICA6IHByb3RvY29sKHByb3RvY29sKQogICAgICAgICAsIGhvc3QoaG9zdCkKICAgICAgICAgLCBw
b3J0KHBvcnQpCkBAIC01NSwyMSArNTUsMjEgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7
CiAKICAgICBTdHJpbmcgcHJvdG9jb2w7CiAgICAgU3RyaW5nIGhvc3Q7Ci0gICAgT3B0aW9uYWw8
dWludDE2X3Q+IHBvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFNlY3VyaXR5T3JpZ2luRGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsK
IAogICAgIC8vIFNlcmlhbGl6ZSB0aGUgc2VjdXJpdHkgb3JpZ2luIHRvIGEgc3RyaW5nIHRoYXQg
Y291bGQgYmUgdXNlZCBhcyBwYXJ0IG9mCiAgICAgLy8gZmlsZSBuYW1lcy4gVGhpcyBmb3JtYXQg
c2hvdWxkIGJlIHVzZWQgaW4gc3RvcmFnZSBBUElzIG9ubHkuCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGZyb21EYXRhYmFzZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U2VjdXJpdHlPcmlnaW5EYXRhPiBmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYp
OwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFNlY3VyaXR5T3JpZ2luRGF0YSYpOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm90b2NvbC5pc051bGwoKSAmJiBob3N0LmlzTnVs
bCgpICYmIHBvcnQgPT0gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHByb3RvY29sLmlzTnVsbCgp
ICYmIGhvc3QuaXNOdWxsKCkgJiYgcG9ydCA9PSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApAQCAtMTE3LDcgKzExNyw3
IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGFIYXNoIHsKICAgICAgICAgdW5zaWduZWQgaGFz
aENvZGVzWzNdID0gewogICAgICAgICAgICAgZGF0YS5wcm90b2NvbC5pbXBsKCkgPyBkYXRhLnBy
b3RvY29sLmltcGwoKS0+aGFzaCgpIDogMCwKICAgICAgICAgICAgIGRhdGEuaG9zdC5pbXBsKCkg
PyBkYXRhLmhvc3QuaW1wbCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgZGF0YS5wb3J0LnZh
bHVlT3IoMCkKKyAgICAgICAgICAgIGRhdGEucG9ydC52YWx1ZV9vcigwKQogICAgICAgICB9Owog
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMp
PihoYXNoQ29kZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFz
aC5oCmluZGV4IDUwZWIyOTU2ZjIzYjdjZjEyZWNiOTBjZjc2ZmQ4Yjk4MWVhM2I1NWEuLmI3YTVh
ZWZlZGExYjZkZWZkNzJhOWJlN2M2YmEyMDYyZTFiZDJkOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkhhc2guaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5IYXNoIHsKICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewogICAgICAgICAg
ICAgb3JpZ2luLT5wcm90b2NvbCgpLmltcGwoKSA/IG9yaWdpbi0+cHJvdG9jb2woKS5pbXBsKCkt
Pmhhc2goKSA6IDAsCiAgICAgICAgICAgICBvcmlnaW4tPmhvc3QoKS5pbXBsKCkgPyBvcmlnaW4t
Pmhvc3QoKS5pbXBsKCktPmhhc2goKSA6IDAsCi0gICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52
YWx1ZU9yKDApCisgICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKQogICAgICAg
ICB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNo
Q29kZXMpPihoYXNoQ29kZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJl
cy5jcHAKaW5kZXggN2M3NmFlMTI4MjA4Zjg0M2NlNzI3ZDRjNmUxYjRhNmUzNmI5NWY1My4uYjhh
ZGNiNDQ5NDJmYTVlYmJlNWFiNWQ3MTU0MTkyODI3MDBmMTJkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTM2LDggKzM2LDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IERpYWxvZ0ZlYXR1cmVzTWFw
Owogc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYsIFN0cmluZ1Zp
ZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlKTsKIAogc3RhdGljIERpYWxvZ0ZlYXR1cmVzTWFwIHBh
cnNlRGlhbG9nRmVhdHVyZXNNYXAoY29uc3QgU3RyaW5nJik7Ci1zdGF0aWMgT3B0aW9uYWw8Ym9v
bD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXkp
Owotc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVy
ZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwgZmxvYXQgbWF4KTsKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiwg
Y29uc3QgY2hhcioga2V5KTsKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBmbG9hdEZlYXR1
cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmLCBjb25zdCBjaGFyKiBrZXksIGZsb2F0IG1pbiwg
ZmxvYXQgbWF4KTsKIAogc3RhdGljIGJvb2wgaXNTZXBhcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQog
ewpAQCAtMTU4LDggKzE1OCw4IEBAIFdpbmRvd0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVyZXMo
Y29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJlc1N0cmluZywgY29uc3QgRmxvCiAgICAgZmVhdHVy
ZXMubG9jYXRpb25CYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgZmVhdHVyZXMuZGlhbG9nID0gdHJ1
ZTsKIAotICAgIGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9n
d2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSkudmFsdWVPcig2MjApOyAv
LyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCi0g
ICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0
IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKS52YWx1ZU9yKDQ1MCk7IC8vIGRl
ZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBm
bG9hdCB3aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRoIiwgMTAw
LCBzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlX29yKDYyMCk7IC8vIGRlZmF1bHQg
aGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKKyAgICBmbG9hdCBo
ZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNj
cmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlX29yKDQ1MCk7IC8vIGRlZmF1bHQgaGVy
ZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKIAogICAgIGZlYXR1cmVz
LndpZHRoID0gd2lkdGg7CiAgICAgZmVhdHVyZXMuaGVpZ2h0ID0gaGVpZ2h0OwpAQCAtMTY3LDI1
ICsxNjcsMjUgQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJp
bmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJlcy54ID0gZmxv
YXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nbGVmdCIsIHNjcmVlbkF2YWlsYWJsZVJlY3Qu
eCgpLCBzY3JlZW5BdmFpbGFibGVSZWN0Lm1heFgoKSAtIHdpZHRoKTsKICAgICBmZWF0dXJlcy55
ID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9ndG9wIiwgc2NyZWVuQXZhaWxhYmxl
UmVjdC55KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WSgpIC0gaGVpZ2h0KTsKIAotICAgIGlm
IChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRlciIpLnZhbHVlT3IodHJ1ZSkpIHsKKyAg
ICBpZiAoYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZV9vcih0cnVlKSkg
ewogICAgICAgICBpZiAoIWZlYXR1cmVzLngpCiAgICAgICAgICAgICBmZWF0dXJlcy54ID0gc2Ny
ZWVuQXZhaWxhYmxlUmVjdC54KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpIC0gd2lk
dGgpIC8gMjsKICAgICAgICAgaWYgKCFmZWF0dXJlcy55KQogICAgICAgICAgICAgZmVhdHVyZXMu
eSA9IHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgKHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0
KCkgLSBoZWlnaHQpIC8gMjsKICAgICB9CiAKLSAgICBmZWF0dXJlcy5yZXNpemFibGUgPSBib29s
RmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIpLnZhbHVlT3IoZmFsc2UpOwotICAgIGZl
YXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzY3Jv
bGwiKS52YWx1ZU9yKHRydWUpOwotICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUgPSBib29s
RmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlT3IoZmFsc2UpOworICAgIGZlYXR1
cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVzaXphYmxlIikudmFs
dWVfb3IoZmFsc2UpOworICAgIGZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlID0gYm9vbEZlYXR1
cmUoZmVhdHVyZXNNYXAsICJzY3JvbGwiKS52YWx1ZV9vcih0cnVlKTsKKyAgICBmZWF0dXJlcy5z
dGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJzdGF0dXMiKS52YWx1
ZV9vcihmYWxzZSk7CiAKICAgICByZXR1cm4gZmVhdHVyZXM7CiB9CiAKLXN0YXRpYyBPcHRpb25h
bDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNv
bnN0IGNoYXIqIGtleSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0dXJlKGNv
bnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioga2V5KQogewogICAg
IGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGZlYXR1cmVzLmVu
ZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8mIHZhbHVlID0gaXQtPnZhbHVlOwogICAgIHJldHVybiB2YWx1ZS5pc051
bGwoKQpAQCAtMTk0LDE4ICsxOTQsMTggQEAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGJvb2xGZWF0
dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioKICAgICAg
ICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJvbiIpOwogfQogCi1z
dGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01h
cCYgZmVhdHVyZXMsIGNvbnN0IGNoYXIqIGtleSwgZmxvYXQgbWluLCBmbG9hdCBtYXgpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVz
TWFwJiBmZWF0dXJlcywgY29uc3QgY2hhcioga2V5LCBmbG9hdCBtaW4sIGZsb2F0IG1heCkKIHsK
ICAgICBhdXRvIGl0ID0gZmVhdHVyZXMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBmZWF0dXJl
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogVGhlIHRvRG91YmxlIGZ1bmN0aW9uIGRvZXMgbm90IG9m
ZmVyIGEgd2F5IHRvIHRlbGwgIjBxIiBmcm9tIHN0cmluZyB3aXRoIG5vIGRpZ2l0cyBpbiBpdDog
Qm90aAogICAgIC8vIHJldHVybiB0aGUgbnVtYmVyIDAgYW5kIGZhbHNlIGZvciBvay4gQnV0ICIw
cSIgc2hvdWxkIHlpZWxkIHRoZSBtaW5pbXVtIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0LgogICAg
IGJvb2wgb2s7CiAgICAgZG91YmxlIHBhcnNlZE51bWJlciA9IGl0LT52YWx1ZS50b0RvdWJsZSgm
b2spOwogICAgIGlmICgoIXBhcnNlZE51bWJlciAmJiAhb2spIHx8IHN0ZDo6aXNuYW4ocGFyc2Vk
TnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKHBhcnNlZE51bWJlciA8IG1pbiB8fCBtYXggPD0gbWluKQogICAgICAg
ICByZXR1cm4gbWluOwogICAgIGlmIChwYXJzZWROdW1iZXIgPiBtYXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd0ZlYXR1cmVzLmgKaW5kZXggZTAwNTQ1ZTJlYjg5ZWE0Y2YyOWVhZDQ0ZGMzMjc0ODQx
NDBhMjk4Yi4uZDQ2YTc1YTAyMDY1MzJmNmJhODAwMjY5Njk0NDZjOGEyYmZiNmQ4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UmVjdDsKIAogc3RydWN0IFdpbmRvd0ZlYXR1cmVzIHsK
LSAgICBPcHRpb25hbDxmbG9hdD4geDsKLSAgICBPcHRpb25hbDxmbG9hdD4geTsKLSAgICBPcHRp
b25hbDxmbG9hdD4gd2lkdGg7Ci0gICAgT3B0aW9uYWw8ZmxvYXQ+IGhlaWdodDsKKyAgICBzdGQ6
Om9wdGlvbmFsPGZsb2F0PiB4OworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHk7CisgICAgc3Rk
OjpvcHRpb25hbDxmbG9hdD4gd2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gaGVpZ2h0
OwogCiAgICAgYm9vbCBtZW51QmFyVmlzaWJsZSB7IHRydWUgfTsKICAgICBib29sIHN0YXR1c0Jh
clZpc2libGUgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcAppbmRleCBlYTZmZjkyZDI0MWE1MGY3NTdj
NTc4OTY4YzUyMmE2OTEwMzM2ZjdiLi5jODMyNmRmZjQ1NDI1OWQ1YmJjM2QzZjgzMTk3MDcwZGZh
YmM5NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3Ry
aW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dp
bGRjYXJkKQorQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmlu
ZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhh
c1dpbGRjYXJkKQogICAgIDogbV9wb2xpY3kocG9saWN5KQogICAgICwgbV9zY2hlbWUoc2NoZW1l
KQogICAgICwgbV9ob3N0KGhvc3QpCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlOjpwb3J0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBp
ZiAobV9wb3J0SGFzV2lsZGNhcmQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgT3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQgPSB1cmwucG9ydCgpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQgPSB1cmwucG9ydCgpOwogCiAgICAgaWYgKHBvcnQgPT0gbV9wb3J0KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlLmgKaW5kZXggYWJhYWU5NjM0ODYzZjNlMGU4ODBmMzI0NWUw
MTgwZGNlNDIxYTVlNi4uMjhhMWE2ODMwZmU5OTliYTEwMmIyZDUxNWJjNDEwYTYwMzQxYjU0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVVJMOwogY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5JiwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgT3B0aW9u
YWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNh
cmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJkKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNv
bnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQpOwog
CiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UgPSBmYWxzZSkgY29uc3Q7CiAKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlIHsKICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIG1f
cG9saWN5OwogICAgIFN0cmluZyBtX3NjaGVtZTsKICAgICBTdHJpbmcgbV9ob3N0OwotICAgIE9w
dGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gbV9w
b3J0OwogICAgIFN0cmluZyBtX3BhdGg7CiAKICAgICBib29sIG1faG9zdEhhc1dpbGRjYXJkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCAwOTYzZjQyOTMxOTBjNDRhZGE4YTkzZTA1NDA0NzBh
MDI4ZGNjY2NkLi41ZDUxZjY4ZTA4MDljYjg0NWZmMzc1MTU5YTYwMTRhMjViNDkxNzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hh
ciogZW5kCiAgICAgICAgIHNraXBXaGlsZTxVQ2hhciwgaXNTb3VyY2VDaGFyYWN0ZXI+KHBvc2l0
aW9uLCBlbmQpOwogCiAgICAgICAgIFN0cmluZyBzY2hlbWUsIGhvc3QsIHBhdGg7Ci0gICAgICAg
IE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBwb3J0OwogICAgICAgICBib29sIGhvc3RIYXNXaWxkY2FyZCA9IGZhbHNlOwogICAgICAgICBi
b29sIHBvcnRIYXNXaWxkY2FyZCA9IGZhbHNlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZShjb25zdCBVQ2hhciogYmVnaW4s
IGNvbnN0IFVDaGFyKiBlbmQKIC8vICAgICAgICAgICAgICAgICAgIC8gKCBbIHNjaGVtZSAiOi8v
IiBdIGhvc3QgWyBwb3J0IF0gWyBwYXRoIF0gKQogLy8gICAgICAgICAgICAgICAgICAgLyAiJ3Nl
bGYnIgogLy8KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3Vy
Y2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcmIHNjaGVtZSwg
U3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4mIHBvcnQsIFN0cmluZyYgcGF0aCwgYm9v
bCYgaG9zdEhhc1dpbGRjYXJkLCBib29sJiBwb3J0SGFzV2lsZGNhcmQpCitib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlU291cmNlKGNvbnN0IFVDaGFyKiBiZWdpbiwg
Y29uc3QgVUNoYXIqIGVuZCwgU3RyaW5nJiBzY2hlbWUsIFN0cmluZyYgaG9zdCwgc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4mIHBvcnQsIFN0cmluZyYgcGF0aCwgYm9vbCYgaG9zdEhhc1dpbGRjYXJk
LCBib29sJiBwb3J0SGFzV2lsZGNhcmQpCiB7CiAgICAgaWYgKGJlZ2luID09IGVuZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBV
Q2hhCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYmVnaW5Qb3J0KQotICAgICAg
ICBwb3J0ID0gTnVsbG9wdDsKKyAgICAgICAgcG9ydCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNl
IHsKICAgICAgICAgaWYgKCFwYXJzZVBvcnQoYmVnaW5Qb3J0LCBiZWdpblBhdGgsIHBvcnQsIHBv
cnRIYXNXaWxkY2FyZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTQsNyArMzk0
LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZVBhdGgoY29u
c3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhcioKIAogLy8gcG9ydCAgICAgICAgICAgICAgPSAi
OiIgKCAxKkRJR0lUIC8gIioiICkKIC8vCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3Q6OnBhcnNlUG9ydChjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIE9w
dGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKQorYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZVBvcnQoY29uc3QgVUNoYXIqIGJlZ2lu
LCBjb25zdCBVQ2hhciogZW5kLCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgYm9vbCYg
cG9ydEhhc1dpbGRjYXJkKQogewogICAgIEFTU0VSVChiZWdpbiA8PSBlbmQpOwogICAgIEFTU0VS
VCghcG9ydCk7CkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0OjpwYXJzZVBvcnQoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhcioKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChlbmQgLSBiZWdpbiA9PSAxICYmICpi
ZWdpbiA9PSAnKicpIHsKLSAgICAgICAgcG9ydCA9IE51bGxvcHQ7CisgICAgICAgIHBvcnQgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHBvcnRIYXNXaWxkY2FyZCA9IHRydWU7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaAppbmRleCBiZmViODU0NWRkOTkyYjMx
YmE1YTg5OWZmYWE2MDI1OTg4MWE3ZTExLi4wNGRjMjljMzNmNGNhYzEwYTkxODc5MDJhMjI2NWE5
N2E5Mzg1OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCkBAIC01OCwxMCArNTgsMTAgQEAgY2xhc3Mg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdCB7CiBwcml2YXRlOgogICAgIHZvaWQgcGFy
c2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kKTsKIAotICAgIGJvb2wgcGFy
c2VTb3VyY2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJpbmcmIHNj
aGVtZSwgU3RyaW5nJiBob3N0LCBPcHRpb25hbDx1aW50MTZfdD4mIHBvcnQsIFN0cmluZyYgcGF0
aCwgYm9vbCYgaG9zdEhhc1dpbGRjYXJkLCBib29sJiBwb3J0SGFzV2lsZGNhcmQpOworICAgIGJv
b2wgcGFyc2VTb3VyY2UoY29uc3QgVUNoYXIqIGJlZ2luLCBjb25zdCBVQ2hhciogZW5kLCBTdHJp
bmcmIHNjaGVtZSwgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiYgcG9ydCwg
U3RyaW5nJiBwYXRoLCBib29sJiBob3N0SGFzV2lsZGNhcmQsIGJvb2wmIHBvcnRIYXNXaWxkY2Fy
ZCk7CiAgICAgYm9vbCBwYXJzZVNjaGVtZShjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFy
KiBlbmQsIFN0cmluZyYgc2NoZW1lKTsKICAgICBib29sIHBhcnNlSG9zdChjb25zdCBVQ2hhciog
YmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQsIFN0cmluZyYgaG9zdCwgYm9vbCYgaG9zdEhhc1dpbGRj
YXJkKTsKLSAgICBib29sIHBhcnNlUG9ydChjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFy
KiBlbmQsIE9wdGlvbmFsPHVpbnQxNl90PiYgcG9ydCwgYm9vbCYgcG9ydEhhc1dpbGRjYXJkKTsK
KyAgICBib29sIHBhcnNlUG9ydChjb25zdCBVQ2hhciogYmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQs
IHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+JiBwb3J0LCBib29sJiBwb3J0SGFzV2lsZGNhcmQpOwog
ICAgIGJvb2wgcGFyc2VQYXRoKGNvbnN0IFVDaGFyKiBiZWdpbiwgY29uc3QgVUNoYXIqIGVuZCwg
U3RyaW5nJiBwYXRoKTsKIAogICAgIGJvb2wgcGFyc2VOb25jZVNvdXJjZShjb25zdCBVQ2hhciog
YmVnaW4sIGNvbnN0IFVDaGFyKiBlbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA4NWE2
NDcyZWNlMjExZmYyMDA4MGQzN2E1MmVhZTE5MGE5MTA5NzQwLi4yMmFiMGVjNzY2YTJhNmRmMzVj
Y2NkOGQ3MzIzNzRlMDU3YmQwZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMjIwLDcg
KzIyMCw3IEBAIGJvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVxdWVzdFNjcm9sbFBv
c2l0aW9uVXBkYXRlKEZyYW1lVmlldyYgZnJhbWVWaWV3CiAKICAgICBib29sIGlzUHJvZ3JhbW1h
dGljU2Nyb2xsID0gZnJhbWVWaWV3LmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7CiAgICAgaWYgKGlz
UHJvZ3JhbW1hdGljU2Nyb2xsIHx8IGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCktPnBhZ2VD
YWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKQotICAgICAgICB1cGRhdGVT
Y3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSwg
c2Nyb2xsUG9zaXRpb24sIE51bGxvcHQsIGlzUHJvZ3JhbW1hdGljU2Nyb2xsLCBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uOjpTZXQpOworICAgICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFm
dGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSwgc2Nyb2xsUG9zaXRpb24s
IHN0ZDo6bnVsbG9wdCwgaXNQcm9ncmFtbWF0aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb246OlNldCk7CiAKICAgICAvLyBJZiB0aGlzIGZyYW1lIHZpZXcncyBkb2N1bWVudCBp
cyBiZWluZyBwdXQgaW50byB0aGUgcGFnZSBjYWNoZSwgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUg
b3VyCiAgICAgLy8gbWFpbiBmcmFtZSBzY3JvbGwgcG9zaXRpb24uIEp1c3QgbGV0IHRoZSBGcmFt
ZVZpZXcgdGhpbmsgdGhhdCB3ZSBkaWQuCkBAIC0yMzUsNyArMjM1LDcgQEAgYm9vbCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3
JiBmcmFtZVZpZXcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChT
Y3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwg
Y29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHBy
b2dyYW1tYXRpY1Njcm9sbCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hl
ZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQg
bm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGlj
U2Nyb2xsLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24pCiB7CiAgICAgU2NoZWR1bGVkU2Nyb2xsVXBkYXRlIHNjcm9sbFVwZGF0ZShub2Rl
SUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgcHJvZ3JhbW1hdGljU2Ny
b2xsLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKICAgICAKQEAgLTI5Nyw3ICsyOTcs
NyBAQCBGcmFtZVZpZXcqIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZvclNj
cm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlECiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFz
eW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9p
bnQmIHNjcm9sbFBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9y
aWdpbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05v
ZGVJRCBzY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBz
dGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBib29sIHByb2dy
YW1tYXRpY1Njcm9sbCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTM0
OSwxMyArMzQ5LDEzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb25jaWxl
U2Nyb2xsaW5nU3RhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvCiAgICAgYm9vbCBvbGRQcm9n
cmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXcuaW5Qcm9ncmFtbWF0aWNTY3JvbGwoKTsKICAgICBm
cmFtZVZpZXcuc2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwocHJvZ3JhbW1hdGljU2Nyb2xsKTsKIAot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0Vmlld3BvcnRSZWN0OworICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsYXlvdXRWaWV3cG9ydFJlY3Q7CiAKICAgICBXVEY6OnN3aXRjaE9u
KGxheW91dFZpZXdwb3J0T3JpZ2luT3JPdmVycmlkZVJlY3QsCi0gICAgICAgIFsmZnJhbWVWaWV3
XShPcHRpb25hbDxGbG9hdFBvaW50PiBvcmlnaW4pIHsKKyAgICAgICAgWyZmcmFtZVZpZXddKHN0
ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gb3JpZ2luKSB7CiAgICAgICAgICAgICBpZiAob3JpZ2lu
KQogICAgICAgICAgICAgICAgIGZyYW1lVmlldy5zZXRCYXNlTGF5b3V0Vmlld3BvcnRPcmlnaW4o
TGF5b3V0UG9pbnQob3JpZ2luLnZhbHVlKCkpLCBGcmFtZVZpZXc6OlRyaWdnZXJMYXlvdXRPck5v
dDo6Tm8pOwotICAgICAgICB9LCBbJmZyYW1lVmlldywgJmxheW91dFZpZXdwb3J0UmVjdCwgaW5T
dGFibGVTdGF0ZSwgdmlzdWFsVmlld3BvcnRFbmFibGVkID0gdmlzdWFsVmlld3BvcnRFbmFibGVk
KCldKE9wdGlvbmFsPEZsb2F0UmVjdD4gb3ZlcnJpZGVSZWN0KSB7CisgICAgICAgIH0sIFsmZnJh
bWVWaWV3LCAmbGF5b3V0Vmlld3BvcnRSZWN0LCBpblN0YWJsZVN0YXRlLCB2aXN1YWxWaWV3cG9y
dEVuYWJsZWQgPSB2aXN1YWxWaWV3cG9ydEVuYWJsZWQoKV0oc3RkOjpvcHRpb25hbDxGbG9hdFJl
Y3Q+IG92ZXJyaWRlUmVjdCkgewogICAgICAgICAgICAgbGF5b3V0Vmlld3BvcnRSZWN0ID0gb3Zl
cnJpZGVSZWN0OwogICAgICAgICAgICAgaWYgKG92ZXJyaWRlUmVjdCAmJiBpblN0YWJsZVN0YXRl
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHZpc3VhbFZpZXdwb3J0RW5hYmxlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaAppbmRleCA2ZDMwOGE1OTRmZjQ5NDY2ODJlMTMyYWMxOWEzMzJjMzI1MDI2Mjk4Li4x
ZDIyYWY2ZDMxMDI2ODNkM2ViYmM2MmE5OTlmOWFkZmEzMTU5NGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IgOiBw
dWJsaWMgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgewogCiAgICAgdm9pZCBzY3JvbGxpbmdTdGF0ZVRy
ZWVQcm9wZXJ0aWVzQ2hhbmdlZCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVs
ZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNv
bnN0IEZsb2F0UG9pbnQmLCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3Bv
cnRPcmlnaW4sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9z
aXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBi
b29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFjdGl2ZVNj
cm9sbFNuYXBJbmRpY2VzKFNjcm9sbGluZ05vZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbEluZGV4
LCB1bnNpZ25lZCB2ZXJ0aWNhbEluZGV4KTsKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvciA6IHB1YmxpYyBTY3JvbGxpbmdDb29yZGluYXRvciB7CiAKICAg
ICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWU+IHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkgeyByZXR1
cm4gV1RGTW92ZShtX3Njcm9sbGluZ1RyZWUpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFBv
c2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQm
LCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgYm9vbCBwcm9ncmFt
bWF0aWNTY3JvbGwsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOworICAgIHZvaWQgdXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3Qg
RmxvYXRQb2ludCYsIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmln
aW4sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQo
KSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxDb21taXRUcmVl
KCkgb3ZlcnJpZGU7CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvciA6IHB1YmxpYyBTY3JvbGxpbmdDb29yZGluYXRvciB7CiAKICAgICBzdHJ1Y3QgU2No
ZWR1bGVkU2Nyb2xsVXBkYXRlIHsKICAgICAgICAgU2NoZWR1bGVkU2Nyb2xsVXBkYXRlKCkgPSBk
ZWZhdWx0OwotICAgICAgICBTY2hlZHVsZWRTY3JvbGxVcGRhdGUoU2Nyb2xsaW5nTm9kZUlEIHNj
cm9sbGluZ05vZGVJRCwgRmxvYXRQb2ludCBwb2ludCwgT3B0aW9uYWw8RmxvYXRQb2ludD4gdmll
d3BvcnRPcmlnaW4sIGJvb2wgaXNQcm9ncmFtbWF0aWMsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb24gdWRwYXRlQWN0aW9uKQorICAgICAgICBTY2hlZHVsZWRTY3JvbGxVcGRhdGUoU2Nyb2xs
aW5nTm9kZUlEIHNjcm9sbGluZ05vZGVJRCwgRmxvYXRQb2ludCBwb2ludCwgc3RkOjpvcHRpb25h
bDxGbG9hdFBvaW50PiB2aWV3cG9ydE9yaWdpbiwgYm9vbCBpc1Byb2dyYW1tYXRpYywgU2Nyb2xs
aW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiB1ZHBhdGVBY3Rpb24pCiAgICAgICAgICAgICA6IG5vZGVJ
RChzY3JvbGxpbmdOb2RlSUQpCiAgICAgICAgICAgICAsIHNjcm9sbFBvc2l0aW9uKHBvaW50KQog
ICAgICAgICAgICAgLCBsYXlvdXRWaWV3cG9ydE9yaWdpbih2aWV3cG9ydE9yaWdpbikKQEAgLTE0
Miw3ICsxNDIsNyBAQCBjbGFzcyBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVibGljIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yIHsKIAogICAgICAgICBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEIHsg
MCB9OwogICAgICAgICBGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uOwotICAgICAgICBPcHRpb25h
bDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICAgICAgYm9vbCBpc1Byb2dy
YW1tYXRpY1Njcm9sbCB7IGZhbHNlIH07CiAgICAgICAgIFNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb24gdXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlvbiB7IFNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb246OlN5bmMgfTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA1OTVkNTVlMmZjMTdmNmI0MmMw
M2NjOGIxOTgyMDJhNGEyMzA2Yjg1Li4zNWNjZDY1NmZhZjM3NzBmYWY0NTIxMWZhNjFlNjBhMDMw
OWM0MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBTY3JvbGxpbmdDb29y
ZGluYXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTY3JvbGxpbmdDb29yZGluYXRv
cj4gewogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGdpdmVuIGZyYW1lIHZp
ZXcgaGFzIGJlZW4gbGFpZCBvdXQuCiAgICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVw
ZGF0ZWQoRnJhbWVWaWV3JikgeyB9CiAKLSAgICB1c2luZyBMYXlvdXRWaWV3cG9ydE9yaWdpbk9y
T3ZlcnJpZGVSZWN0ID0gV1RGOjpWYXJpYW50PE9wdGlvbmFsPEZsb2F0UG9pbnQ+LCBPcHRpb25h
bDxGbG9hdFJlY3Q+PjsKKyAgICB1c2luZyBMYXlvdXRWaWV3cG9ydE9yaWdpbk9yT3ZlcnJpZGVS
ZWN0ID0gV1RGOjpWYXJpYW50PHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4sIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0Pj47CiAgICAgdmlydHVhbCB2b2lkIHJlY29uY2lsZVNjcm9sbGluZ1N0YXRl
KEZyYW1lVmlldyYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBMYXlvdXRWaWV3cG9ydE9yaWdp
bk9yT3ZlcnJpZGVSZWN0JiwgYm9vbCAvKiBwcm9ncmFtbWF0aWNTY3JvbGwgKi8sIGJvb2wgLyog
aW5TdGFibGVTdGF0ZSovLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKSB7IH0KIAogICAg
IC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHNsb3cgcmVwYWludCBvYmplY3RzIGNv
dW50ZXIgY2hhbmdlcyBiZXR3ZWVuIHplcm8gYW5kIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggYjQyMGZmNjIzNDU5NTIwZjRi
MDdlM2M4ODhlNTI4ODA0MDkwNDk5Mi4uZDAwZWM1ZGQ5YjFiN2Q0YTZkNjFiZjVkMTM5YjQ5OTJl
NjM3ZDhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OnNjcm9sbFBv
c2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhTY3JvbGxpbmdOb2RlSUQgbgogICAg
IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpub2RlKS51cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiAKICAgICAvLyBV
cGRhdGUgR3JhcGhpY3NMYXllcnMgYW5kIHNjcm9sbCBzdGF0ZS4KLSAgICBzY3JvbGxpbmdUcmVl
Tm9kZURpZFNjcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBOdWxsb3B0LCBpblVzZXJJbnRl
cmF0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb246OlNldCk7CisgICAgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwo
bm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgc3RkOjpudWxsb3B0LCBpblVzZXJJbnRlcmF0aW9uID8g
U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb246OlNldCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJlZVN0YXRl
KHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHNjcm9sbGluZ1N0YXRlVHJlZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCA3
NmNhN2Y2ZGEzNGU5ZDQ5YWE3ZTRkY2EzZjBiYzgzYmE1NTQxYmY3Li42NzM0YjUzYWRhYjVjMzk5
YjkzM2FjMzc3ZWRlNzRiOGMyYTA1YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIFNjcm9sbGluZ1Ry
ZWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2Nyb2xsaW5nVHJlZT4gewogCiAgICAg
Ly8gQ2FsbGVkIGFmdGVyIGEgc2Nyb2xsaW5nIHRyZWUgbm9kZSBoYXMgaGFuZGxlZCBhIHNjcm9s
bCBhbmQgdXBkYXRlZCBpdHMgbGF5ZXJzLgogICAgIC8vIFVwZGF0ZXMgRnJhbWVWaWV3L1JlbmRl
ckxheWVyIHNjcm9sbGluZyBzdGF0ZSBhbmQgR3JhcGhpY3NMYXllcnMuCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPEZsb2F0UG9pbnQ+JiBsYXlv
dXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9IFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
aW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBz
Y3JvbGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmll
d3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gPSBTY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uOjpTeW5jKSA9IDA7CiAKICAgICAvLyBDYWxsZWQgZm9yIHJlcXVlc3Rl
ZCBzY3JvbGwgcG9zaXRpb24gdXBkYXRlcy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJl
ZU5vZGVSZXF1ZXN0c1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIC8q
c2Nyb2xsUG9zaXRpb24qLywgYm9vbCAvKnJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwqLykg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggY2M3ZThlY2VmODFiMDNkOWY5NzQzMTcx
ZGQ5Y2QwYjllZmRmNzYzOC4uODQwMjlmYmRmODVmNjU4MWQwZmNkMTUzOGQ5YzdiZmVlY2NiODhk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHNjcm9sbFBvc2l0CiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzZXRTY3Jv
bGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQogewogICAgIHNldFNjcm9sbExheWVyUG9zaXRpb24oc2Nyb2xsUG9z
aXRpb24sIHsgfSk7Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Ny
b2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgTnVsbG9wdCk7CisgICAgc2Ny
b2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgp
LCBzY3JvbGxQb3NpdGlvbiwgc3RkOjpudWxsb3B0KTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZTo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IGFiMDZkYWI1ZTljOWY2OWNhODRhZTkyOThlOTkwYjhmY2I1ZGRmYzcuLmJj
YjQ4ZTQ5NWMxYjBiODllNzVhN2FhMzNlODVlNTk0ZDdjNWU2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y29tbWl0VHJlZVN0
YXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+CiAgICAgU2Nyb2xsaW5nVHJl
ZTo6Y29tbWl0VHJlZVN0YXRlKFdURk1vdmUoc2Nyb2xsaW5nU3RhdGVUcmVlKSk7CiB9CiAKLXZv
aWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3Jv
bGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29u
c3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIFRo
cmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAgICAg
aWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCmlu
ZGV4IDcxODJkYTZjYWYzYmE5NDM2MGZhMWViMjZiN2FhYjE3M2MyMjAxMWUuLjczMjU0MDU5YzJk
NzcwMjA1Y2VmZGJkMTUzMGFiMjc5MDRhYTczNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCkBAIC01Nyw3ICs1Nyw3
IEBAIGNsYXNzIFRocmVhZGVkU2Nyb2xsaW5nVHJlZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlIHsK
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBUaHJlYWRlZFNjcm9sbGluZ1RyZWUoQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvciopOwogCi0gICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9s
bChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25z
dCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb24gPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05v
ZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2Rl
SUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2UpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUy5tbQppbmRleCA1NGJkYWY5ZTljZjEzMmVkNTA3ZGViNDg4MzdjNzRjMDQzYzY5
YThlLi43ODExMzE3N2Y4ZWRmODBjNzA2ZTdhYjVjZjVhNmQ4ZjQwMzllNTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbQpAQCAtMTA5LDEzICsxMDksMTMg
QEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxQb3Np
dGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnMKIHsKICAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSkgewogICAgICAgICBtX3Byb2JhYmxlTWFpblRo
cmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247Ci0gICAgICAgIHNjcm9sbGluZ1Ry
ZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xs
UG9zaXRpb24sIE51bGxvcHQsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7Cisg
ICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChzY3JvbGxp
bmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIHN0ZDo6bnVsbG9wdCwgU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbjo6U2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEZsb2F0
UmVjdCBsYXlvdXRWaWV3cG9ydDsgLy8gRklYTUU6IGltcGxlbWVudCBmb3IgaU9TIFdLMS4KICAg
ICBzZXRTY3JvbGxMYXllclBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydCk7
Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKHNjcm9sbGlu
Z05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgTnVsbG9wdCk7CisgICAgc2Nyb2xsaW5nVHJlZSgp
LnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3Np
dGlvbiwgc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlSU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBjb25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwCmluZGV4IDhiMTBmYjNiZTM2
OTMzZjc1NDI3OTE4OTBhY2Y5ZDUyZDRjNDI2MDQuLjEwYjNmODczNDVmZGE0M2NjZGZlOWMxNWZl
NDE3ZjQ2YWY1NTQ1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlSU9TOjppbnZhbGlkYXRlKCkKICAgICB9KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdU
cmVlSU9TOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
LCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8RmxvYXRQ
b2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
IHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIFNjcm9sbGluZ1RyZWVJT1M6OnNj
cm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZs
b2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+
JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQogewogICAgIGlmICghbV9zY3JvbGxpbmdDb29yZGlu
YXRvcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmgKaW5kZXggMmVlMzE3MTAxODFkYzViNTE5NDE5
NmY3NTI3M2M5MTNhOGI5NzMxNC4uMWE5YWFlMWI0MGM4MTI2ODM0NDg0MWNlN2IzMDc1ZWY3MGE3
ZTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUlPUy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFNjcm9sbGluZ1RyZWVJT1Mg
OiBwdWJsaWMgU2Nyb2xsaW5nVHJlZSB7CiAKICAgICBQYXNzUmVmUHRyPFNjcm9sbGluZ1RyZWVO
b2RlPiBjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5n
Tm9kZUlEKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwo
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3Qg
T3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uID0gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykgb3Zl
cnJpZGU7CisgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2Rl
SUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PEZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlv
bkFjdGlvbiA9IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3Jv
bGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRl
eCBiZDM3NjUzYzYzMDFkMmNjOTcwY2Y5MjFhOWMxNDk2ZDU2MWI3MjkxLi5kOTQxMWI0NGZlNTdh
ZDY4Y2U1Y2Q2MWNhN2U5YmFjOTI2Mzc0ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0Q29udGVudEVk
Z2VDb25zCiB7CiAgICAgdXBkYXRlTWFpbkZyYW1lUGluU3RhdGUoc2Nyb2xsUG9zaXRpb24pOwog
Ci0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgc3Rk
OjpvcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbjsKICAgICBpZiAoc2Ny
b2xsaW5nVHJlZSgpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKSB7CiAgICAgICAgIEZsb2F0UG9p
bnQgdmlzaWJsZUNvbnRlbnRPcmlnaW4gPSBzY3JvbGxQb3NpdGlvbjsKICAgICAgICAgZmxvYXQg
Y291bnRlclNjYWxlID0gMSAvIGZyYW1lU2NhbGVGYWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuY3BwCmluZGV4IGQxMjFkMjNkNzFjN2Y2OGMwNmZjM2YyNTkwNjc3ZmE5ZGNh
ZDI2MWUuLmFhNTY2YWYzMzg0ZmFlMGMxMzAzMmNkM2NiMWMwNTNlMmQzN2MyZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMTQzLDggKzE0Myw4IEBAIHN0cnVjdCBT
Y29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHsKICAgICBjb25zdCBGcmFtZSYgZnJhbWU7CiAgICAg
UmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyOwogICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVy
ZXI7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OwotICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBlbmRPZmZzZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZz
ZXQ7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZW5kT2Zmc2V0OwogfTsKIAogRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdl
LCBib29sIGZvcmNlQmxhY2tUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGlua0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtJY29uLmgKaW5kZXgg
ZmU4MjNjNDI0NTE5ZWJmNzljN2E1Mzk2MGQ1NTliOTY4NTVlMzZkZi4uMDMyY2NkYWIyY2RiMGIx
ZDRiMDkyOTYwNWFlNzU1ZjE0ZmFjY2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGlua0ljb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSWNvbi5o
CkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBMaW5rSWNvbiB7CiAgICAgVVJMIHVybDsKICAgICBM
aW5rSWNvblR5cGUgdHlwZTsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgT3B0aW9uYWw8dW5z
aWduZWQ+IHNpemU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2l6ZTsKIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIExpbmtJ
Y29uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oCmluZGV4IGFiMTUzMWJjMWU4YTQ5ZGRjMDYyMjRhNDlkNmEzNGE0NWYxZDViMTkuLmZhZDU0
NDUzMzQ1MjM1NTRjZmM3M2E1N2Y0MDE1YzVlMjNmMTFlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0xMzksNyArMTM5LDcgQEAg
Y2xhc3MgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lk
IHJlYWRBbmROb3RpZnkoKSBjb25zdDsKIAotICAgICAgICBPcHRpb25hbDxpbnQ+IG1fZmQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2ZkOwogICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+IG1fbm90aWZ5SGFuZGxlcjsKICNpZiBVU0UoR0xJQikKICAgICAgICAgR1JlZlB0cjxH
U291cmNlPiBtX3NvdXJjZTsKQEAgLTE2NCw4ICsxNjQsOCBAQCBjbGFzcyBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIgewogICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIG1fb2JzZXJ2ZXIgeyBudWxscHRy
IH07CiAgICAgTG9jayBtX29ic2VydmVyTXV0ZXg7CiAjZWxpZiBPUyhMSU5VWCkKLSAgICBPcHRp
b25hbDxpbnQ+IG1fZXZlbnRGRDsKLSAgICBPcHRpb25hbDxpbnQ+IG1fcHJlc3N1cmVMZXZlbEZE
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2V2ZW50RkQ7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IG1fcHJlc3N1cmVMZXZlbEZEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVudEZEUG9sbGVy
PiBtX2V2ZW50RkRQb2xsZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5k
bGVyPiBtX2hvbGRPZmZUaW1lcjsKICAgICB2b2lkIGhvbGRPZmZUaW1lckZpcmVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGI0YWFmOTcxZTMzYWM3NjMyM2Q5
ZGZjNzJjZWU4MWFjYjJjMmVjZTAuLmNiZmZlNmUxYzgxMmI0ZGRkMTRlNDcwMDNhODc4NDhiNGVm
MWFkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC00NTQsOCAr
NDU0LDggQEAgdm9pZCBTY3JvbGxWaWV3OjpoYW5kbGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFmdGVy
Q29udGVudFNpemVDaGFuZ2UoKQogICAgIGVsc2UgaWYgKG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRz
KQogICAgICAgICBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKG1fZGVm
ZXJyZWRTY3JvbGxPZmZzZXRzLnZhbHVlKCkuZmlyc3QsIG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRz
LnZhbHVlKCkuc2Vjb25kKTsKICAgICAKLSAgICBtX2RlZmVycmVkU2Nyb2xsRGVsdGEgPSBOdWxs
b3B0OwotICAgIG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzID0gTnVsbG9wdDsKKyAgICBtX2RlZmVy
cmVkU2Nyb2xsRGVsdGEgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9kZWZlcnJlZFNjcm9sbE9mZnNl
dHMgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3Qg
U2Nyb2xsUG9zaXRpb24mIG5ld1Bvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCmluZGV4IGU1YzE4MjE4NjlkYWVkNmZmZjQ4Mzg4NTY4ZjEzMDg4NmIyYTNiMTQuLmRiNTcw
ZGQ5ODViMTc3MjQwOWE1MTUwYWZkNzYzYzMwYzI0NzE0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKQEAgLTQ2Miw4ICs0NjIsOCBAQCBjbGFzcyBTY3JvbGxWaWV3IDogcHVi
bGljIFdpZGdldCwgcHVibGljIFNjcm9sbGFibGVBcmVhIHsKICAgICBJbnRTaXplIG1fZml4ZWRM
YXlvdXRTaXplOwogICAgIEludFNpemUgbV9jb250ZW50c1NpemU7CiAKLSAgICBPcHRpb25hbDxJ
bnRTaXplPiBtX2RlZmVycmVkU2Nyb2xsRGVsdGE7IC8vIE5lZWRlZCBmb3IgV2ViS2l0IHNjcm9s
bGluZwotICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxTY3JvbGxPZmZzZXQsIFNjcm9sbE9mZnNldD4+
IG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzOyAvLyBOZWVkZWQgZm9yIHBsYXRmb3JtIHdpZGdldCBz
Y3JvbGxpbmcKKyAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IG1fZGVmZXJyZWRTY3JvbGxEZWx0
YTsgLy8gTmVlZGVkIGZvciBXZWJLaXQgc2Nyb2xsaW5nCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8U2Nyb2xsT2Zmc2V0LCBTY3JvbGxPZmZzZXQ+PiBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0
czsgLy8gTmVlZGVkIGZvciBwbGF0Zm9ybSB3aWRnZXQgc2Nyb2xsaW5nCiAKICAgICBib29sIG1f
c2Nyb2xsYmFyc1N1cHByZXNzZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCmluZGV4IDM1ODYz
YmM4MjAxNGMzOTc3YzNjNjk0ZmE0Mjc2YzA1NDExZWYxYjEuLjU5MTE5NzhhZWVjMThmMDgzZmRi
Zjg1ZjFhZjNlZDI0MTc5MDExNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApAQCAtODQsNyAr
ODQsNyBAQCBjbGFzcyBUaGVtZSB7CiAgICAgLy8gTWV0aG9kcyB1c2VkIHRvIGFkanVzdCB0aGUg
UmVuZGVyU3R5bGVzIG9mIGNvbnRyb2xzLgogICAgIAogICAgIC8vIFRoZSBmb250IGRlc2NyaXB0
aW9uIHJlc3VsdCBzaG91bGQgaGF2ZSBhIHpvb21lZCBmb250IHNpemUuCi0gICAgdmlydHVhbCBP
cHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwg
Y29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4g
TnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0
aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCAv
Knpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgCiAgICAg
Ly8gVGhlIHNpemUgaGVyZSBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMgYWxyZWFkeS4gSWYgYSBu
ZXcgc2l6ZSBpcyByZXR1cm5lZCwgaXQgYWxzbyBuZWVkcyB0byBiZSBpbiB6b29tZWQgY29vcmRp
bmF0ZXMuCiAgICAgdmlydHVhbCBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0IC8q
em9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiB6b29tZWRTaXplOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaAppbmRleCBhMzVjOGM2N2VlMjJiNmVkNWRjODUzYmRlMmUxOWYzY2VkY2U4ZjFlLi41
MmExNjZlYmEyZDIzMTlkMTVhMWI3ZWQ5MDgyYjZiMTQzM2YzYjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgVGltZXJCYXNlIHsKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBhbGlnbmVkRmlyZVRpbWUoc3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcykgY29uc3QgeyByZXR1cm4gTnVsbG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPiBhbGlnbmVkRmlyZVRpbWUoc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcykgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKICAgICB2b2lkIGNoZWNrSGVhcEluZGV4KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAppbmRleCBmMjYxYjg0Njg2Y2ZkMTJhYTAxMjU1
MjcwYjQ2MjgwNmM0NjFlNmQ1Li43MjY5NzVhYTgxMTk1NzhiOGM0ZTk5YzE4ZGMwMDJjZjdlNjZl
YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKQEAgLTcxNCwxMCArNzE0LDEwIEBAIFN0cmlu
ZyBVUkw6Omhvc3QoKSBjb25zdAogICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcoc3RhcnQs
IG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0KIAotT3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zdAogewogICAg
IGlmICghbV9wb3J0RW5kIHx8IG1faG9zdEVuZCA+PSBtX3BvcnRFbmQgLSAxKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wg
b2sgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBudW1iZXI7CkBAIC03MjYsNyArNzI2LDcgQEAgT3B0
aW9uYWw8dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiAgICAgZWxzZQogICAgICAgICBudW1i
ZXIgPSBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgbV9o
b3N0RW5kICsgMSwgbV9wb3J0RW5kIC0gbV9ob3N0RW5kIC0gMSwgJm9rKTsKICAgICBpZiAoIW9r
IHx8IG51bWJlciA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgoKSkKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIG51bWJlcjsKIH0KIApAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgY2xlYXJEZWZhdWx0UG9y
dEZvclByb3RvY29sTWFwRm9yVGVzdGluZygpCiAgICAgZGVmYXVsdFBvcnRGb3JQcm90b2NvbE1h
cEZvclRlc3RpbmcoKS5jbGVhcigpOwogfQogCi1PcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBv
cnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKQorc3RkOjpvcHRpb25hbDx1aW50MTZf
dD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKQogewogICAgIGNv
bnN0IGF1dG8mIGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2xNYXAgPSBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sTWFwRm9yVGVzdGluZygpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBkZWZhdWx0UG9ydEZvclBy
b3RvY29sTWFwLmZpbmQocHJvdG9jb2wudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKQEAgLTIy
ODgsNyArMjI4OCw3IEBAIGJvb2wgVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKIAogYm9vbCBwb3J0
QWxsb3dlZChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9
IHVybC5wb3J0KCk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0
KCk7CiAKICAgICAvLyBTaW5jZSBtb3N0IFVSTHMgZG9uJ3QgaGF2ZSBhIHBvcnQsIHJldHVybiBl
YXJseSBmb3IgdGhlICJubyBwb3J0IiBjYXNlLgogICAgIGlmICghcG9ydCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmgKaW5kZXggMGMxYjc0YmFiYjM2ZGE3NDc3MzI4ZGJjNTVhMDEyZGQwYzA1MTYyMC4uMGMz
MGI2YWUwYjhjMGZlMmRiYWUwMWMwNmMwYmQ3OTI0ZmFiYjEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBVUkwgewogCiAgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBo
b3N0KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8dWludDE2X3Q+IHBvcnQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGhvc3RBbmRQb3J0KCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHVzZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgcGFzcygpIGNvbnN0OwpAQCAtMzEyLDcgKzMxMiw3IEBAIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9j
b2wpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJp
bmcmIHVybCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoY29u
c3QgU3RyaW5nJiB1cmwpOwogCi1PcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyBwcm90b2NvbCk7CiBXRUJDT1JFX0VYUE9SVCBi
b29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1aW50MTZfdCBwb3J0LCBTdHJpbmdWaWV3IHBy
b3RvY29sKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8v
IEJsYWNrbGlzdCBwb3J0cyB0aGF0IHNob3VsZCBuZXZlciBiZSB1c2VkIGZvciBXZWIgcmVzb3Vy
Y2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAppbmRleCBlMTA3Y2FmZWRl
ZmM2MjAyN2VkYWUxMzhkZWEyOWE2Mzk5NmIzNjI0Li5kN2Y1ZmFiNzk3YmVmNGY0Y2FhNzQxN2Iy
ZjI5OTFkNGI5MGI5MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKQEAg
LTYyMyw3ICs2MjMsNyBAQCB2b2lkIFVSTFBhcnNlcjo6ZW5jb2RlUXVlcnkoY29uc3QgVmVjdG9y
PFVDaGFyPiYgc291cmNlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuYwogICAgIH0KIH0KIAotT3B0
aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdW
aWV3IHNjaGVtZSkKK3N0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBv
cnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKIHsKICAgICBzdGF0aWMgY29uc3QgdWlu
dDE2X3QgZnRwUG9ydCA9IDIxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBnb3BoZXJQb3J0
ID0gNzA7CkBAIC02MzQsMTkgKzYzNCwxOSBAQCBPcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2Vy
OjpkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQogICAgIAogICAgIGF1
dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzd2l0Y2gg
KHNjaGVtZVswXSkgewogICAgIGNhc2UgJ3cnOgogICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewog
ICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKICAgICAg
ICAgICAgICAgICByZXR1cm4gd3NQb3J0OwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjYXNlIDM6CiAgICAgICAg
ICAgICBpZiAoc2NoZW1lWzFdID09ICdzJwogICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9
PSAncycpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdzc1BvcnQ7Ci0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTY1NywxNiAr
NjU3LDE2IEBAIE9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJv
dG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09
ICd0JwogICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGh0dHBQb3J0OwotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICBp
ZiAoc2NoZW1lWzFdID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcK
ICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCiAgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzRdID09ICdzJykKICAgICAgICAgICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgY2FzZSAnZyc6CiAgICAg
ICAgIGlmIChsZW5ndGggPT0gNgpAQCAtNjc2LDE1ICs2NzYsMTUgQEAgT3B0aW9uYWw8dWludDE2
X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkK
ICAgICAgICAgICAgICYmIHNjaGVtZVs0XSA9PSAnZScKICAgICAgICAgICAgICYmIHNjaGVtZVs1
XSA9PSAncicpCiAgICAgICAgICAgICByZXR1cm4gZ29waGVyUG9ydDsKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSAnZic6CiAg
ICAgICAgIGlmIChsZW5ndGggPT0gMwogICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0Jwog
ICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKICAgICAgICAgICAgIHJldHVybiBmdHBQ
b3J0OwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTIwNTUsOSArMjA1NSw5IEBAIHN0YXRpYyBz
aXplX3QgemVyb1NlcXVlbmNlTGVuZ3RoKGNvbnN0IHN0ZDo6YXJyYXk8dWludDE2X3QsIDg+JiBh
ZGRyZXNzLCBzaXplX3QKICAgICByZXR1cm4gZW5kIC0gYmVnaW47CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxzaXplX3Q+IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGNvbnN0IHN0ZDo6YXJyYXk8dWlu
dDE2X3QsIDg+JiBhZGRyZXNzKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaW5kTG9u
Z2VzdFplcm9TZXF1ZW5jZShjb25zdCBzdGQ6OmFycmF5PHVpbnQxNl90LCA4PiYgYWRkcmVzcykK
IHsKLSAgICBPcHRpb25hbDxzaXplX3Q+IGxvbmdlc3Q7CisgICAgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGxvbmdlc3Q7CiAgICAgc2l6ZV90IGxvbmdlc3RMZW5ndGggPSAwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSB6ZXJvU2Vx
dWVuY2VMZW5ndGgoYWRkcmVzcywgaSk7CkBAIC0yMTE0LDcgKzIxMTQsNyBAQCB2b2lkIFVSTFBh
cnNlcjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6OklQdjZBZGRyZXNzIGFkZHJlc3MpCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1PcHRpb25hbDx1aW50MzJfdD4gVVJM
UGFyc2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYg
aXRlcmF0b3IsIGJvb2wmIGRpZFNlZVN5bnRheFZpb2xhdGlvbikKK3N0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mIGl0ZXJhdG9yLCBib29sJiBkaWRTZWVTeW50YXhWaW9sYXRpb24pCiB7CiAgICAg
ZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgewogICAgICAgICBVbmtub3duQmFzZSwKQEAgLTIx
MjYsNyArMjEyNiw3IEBAIE9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBp
ZWNlKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpCiAgICAgU3RhdGUgc3RhdGUg
PSBTdGF0ZTo6VW5rbm93bkJhc2U7CiAgICAgQ2hlY2tlZDx1aW50MzJfdCwgUmVjb3JkT3ZlcmZs
b3c+IHZhbHVlID0gMDsKICAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkgJiYgKml0ZXJhdG9yID09
ICcuJykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7CiAgICAgICAgIGlmIChpc1RhYk9y
TmV3bGluZSgqaXRlcmF0b3IpKSB7CiAgICAgICAgICAgICBkaWRTZWVTeW50YXhWaW9sYXRpb24g
PSB0cnVlOwpAQCAtMjE1NywzMSArMjE1NywzMSBAQCBPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFy
c2VyOjpwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RhdGU6OkRlY2ltYWw6CiAgICAgICAg
ICAgICBpZiAoKml0ZXJhdG9yIDwgJzAnIHx8ICppdGVyYXRvciA+ICc5JykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgdmFsdWUgKj0gMTA7CiAgICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0
b3IgLSAnMCc7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgKytpdGVyYXRvcjsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFN0YXRlOjpPY3RhbDoKICAgICAgICAgICAgIEFTU0VSVChkaWRT
ZWVTeW50YXhWaW9sYXRpb24pOwogICAgICAgICAgICAgaWYgKCppdGVyYXRvciA8ICcwJyB8fCAq
aXRlcmF0b3IgPiAnNycpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHZhbHVlICo9IDg7CiAg
ICAgICAgICAgICB2YWx1ZSArPSAqaXRlcmF0b3IgLSAnMCc7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
KytpdGVyYXRvcjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0YXRlOjpIZXg6
CiAgICAgICAgICAgICBBU1NFUlQoZGlkU2VlU3ludGF4VmlvbGF0aW9uKTsKICAgICAgICAgICAg
IGlmICghaXNBU0NJSUhleERpZ2l0KCppdGVyYXRvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIHZhbHVlICo9IDE2OwogICAgICAgICAgICAgdmFsdWUgKz0gdG9BU0NJSUhleFZhbHVlKCpp
dGVyYXRvcik7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgKytpdGVyYXRvcjsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMTk4LDcgKzIxOTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB1aW50NjRfdCBwb3cyNTYoc2l6ZV90IGV4cG9uZW50KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgotT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFy
c2VyOjpwYXJzZUlQdjRIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+IGl0ZXJh
dG9yKQorc3RkOjpvcHRpb25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBh
cnNlSVB2NEhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gaXRlcmF0b3IpCiB7
CiAgICAgYXV0byBob3N0QmVnaW4gPSBpdGVyYXRvcjsKIApAQCAtMjIxMiwzMCArMjIxMiwzMCBA
QCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGl0ZW1zLnNpemUoKSA+PSA0KQotICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYXV0
byBpdGVtID0gcGFyc2VJUHY0UGllY2UoaXRlcmF0b3IsIGRpZFNlZVN5bnRheFZpb2xhdGlvbikp
CiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoaXRlbS52YWx1ZSgpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgICAgIGlmIChp
dGVtcy5zaXplKCkgPj0gNCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaWYgKCppdGVyYXRv
ciA9PSAnLicpCiAgICAgICAgICAgICAgICAgKytpdGVyYXRvcjsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghaXRlcmF0b3IuYXRFbmQo
KSB8fCAhaXRlbXMuc2l6ZSgpIHx8IGl0ZW1zLnNpemUoKSA+IDQpCi0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpdGVtcy5zaXpl
KCkgPiAxKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpIC0g
MTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoaXRlbXNbaV0gPiAyNTUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQogICAgIH0KICAgICBpZiAoaXRlbXNbaXRlbXMuc2l6ZSgpIC0gMV0gPj0gcG93
MjU2KDUgLSBpdGVtcy5zaXplKCkpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChkaWRTZWVTeW50YXhWaW9sYXRpb24pCiAg
ICAgICAgIHN5bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwpAQCAtMjI1NCwyNyArMjI1NCwyNyBA
QCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEhv
c3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotT3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNp
ZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKK3N0ZDo6
b3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENv
ZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvcikKIHsKICAgICBpZiAoaXRl
cmF0b3IuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgdWludDMyX3QgcGllY2UgPSAwOwogICAgIGJvb2wgbGVhZGluZ1pl
cm9zID0gZmFsc2U7CiAgICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwogICAgIHdoaWxlICghaXRl
cmF0b3IuYXRFbmQoKSkgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQot
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICArK2RpZ2l0Q291bnQ7CiAgICAgICAgIGlmICghcGllY2UgJiYgKml0ZXJh
dG9yID09ICcwJykgewogICAgICAgICAgICAgaWYgKGxlYWRpbmdaZXJvcykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIXBpZWNlICYmICppdGVyYXRvciA9PSAnMCcpCiAgICAgICAgICAgICBsZWFkaW5nWmVyb3Mg
PSB0cnVlOwogICAgICAgICBwaWVjZSA9IHBpZWNlICogMTAgKyAqaXRlcmF0b3IgLSAnMCc7CiAg
ICAgICAgIGlmIChwaWVjZSA+IDI1NSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJU
eXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CiAgICAgICAgIGlmIChp
dGVyYXRvci5hdEVuZCgpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjgyLDUxICsyMjgyLDUx
IEBAIE9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgaWYgKHBpZWNlICYmIGxlYWRpbmdaZXJvcykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBpZWNlOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRk
cmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVy
YXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJ
UHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKIHsKICAgICBJUHY0QWRkcmVzcyBh
ZGRyZXNzID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQ7ICsraSkgewotICAgICAg
ICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2
KGl0ZXJhdG9yKSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0g
cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKICAgICAgICAgICAgIGFkZHJlc3Mg
PSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgaWYgKGkgPCAzKSB7CiAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0
aW9uOjpObz4oaXRlcmF0b3IpOwogICAgICAgICB9IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgp
KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICBBU1NFUlQoaXRlcmF0b3IuYXRFbmQoKSk7CiAgICAgcmV0dXJu
IGFkZHJlc3M7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1PcHRpb25h
bDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4gYykKK3N0ZDo6b3B0aW9uYWw8VVJMUGFyc2VyOjpJ
UHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+IGMpCiB7CiAgICAgQVNTRVJUKCpjID09ICdbJyk7CiAgICAgYXV0byBob3N0
QmVnaW4gPSBjOwogICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICBpZiAoYy5hdEVuZCgp
KQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIElQdjZBZGRyZXNzIGFkZHJlc3MgPSB7ezAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9fTsK
ICAgICBzaXplX3QgcGllY2VQb2ludGVyID0gMDsKLSAgICBPcHRpb25hbDxzaXplX3Q+IGNvbXBy
ZXNzUG9pbnRlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gY29tcHJlc3NQb2ludGVyOwog
CiAgICAgaWYgKCpjID09ICc6JykgewogICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAg
ICAgICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICAgICAgKytwaWVjZVBvaW50ZXI7
CiAgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKQEAgLTIzMzQsMTkgKzIz
MzQsMTkgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJz
ZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKICAgICAKICAgICB3aGlsZSAoIWMuYXRF
bmQoKSkgewogICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDgpCi0gICAgICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlm
ICgqYyA9PSAnOicpIHsKICAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICAgICAgICAgICsr
cGllY2VQb2ludGVyOwogICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVy
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBpZWNlUG9p
bnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKLSAg
ICAgICAgICAgIGlmIChPcHRpb25hbDxJUHY0QWRkcmVzcz4gaXB2NEFkZHJlc3MgPSBwYXJzZUlQ
djRBZGRyZXNzSW5zaWRlSVB2NihjKSkgeworICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8
SVB2NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykp
IHsKICAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9
PSA1KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICBzeW50YXhWaW9sYXRp
b24oaG9zdEJlZ2luKTsKICAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9
IGlwdjRBZGRyZXNzLnZhbHVlKCkgPj4gMTY7CiAgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVj
ZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpICYgMHhGRkZGOwpAQCAtMjM3NywxMiAr
MjM3NywxMiBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBh
cnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgICAgICBpZiAoYy5hdEVuZCgp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAq
YyAhPSAnOicpCi0gICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICB9CiAg
ICAgCiAgICAgaWYgKCFjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsK
ICAgICAgICAgc2l6ZV90IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZh
bHVlKCk7CkBAIC0yMzkwLDkgKzIzOTAsOSBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRy
ZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAg
ICAgICB3aGlsZSAoc3dhcHMpCiAgICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBv
aW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0p
OwogICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0gICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8c2l6ZV90
PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJl
c3MpOworICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9
IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3MpOwogICAgIGlmIChwb3NzaWJsZUNvbXBy
ZXNzUG9pbnRlcikKICAgICAgICAgcG9zc2libGVDb21wcmVzc1BvaW50ZXIudmFsdWUoKSsrOwog
ICAgIGlmIChVTkxJS0VMWShjb21wcmVzc1BvaW50ZXIgIT0gcG9zc2libGVDb21wcmVzc1BvaW50
ZXIpKQpAQCAtMjQ1Myw3ICsyNDUzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBjb250
YWluc09ubHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZykKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLU9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZh
dWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVSTFBhcnNlcjo6ZG9tYWluVG9BU0NJSShjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJh
dG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hh
ciwgVVJMUGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVSTFBhcnNlcjo6ZG9tYWlu
VG9BU0NJSShjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cmFjdGVyVHlwZT4mIGl0ZXJhdG9yRm9yU3ludGF4VmlvbGF0aW9uUG9zaXRpb24pCiB7CiAgICAg
VmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4gYXNjaWk7CiAgICAgaWYgKGNv
bnRhaW5zT25seUFTQ0lJKGRvbWFpbikpIHsKQEAgLTI0OTYsNyArMjQ5Niw3IEBAIE9wdGlvbmFs
PFZlY3RvcjxMQ2hhciwgVVJMUGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4+IFVSTFBh
cnNlcjo6ZG9tYWluVG9BCiAgICAgfQogCiAgICAgLy8gRklYTUU6IENoZWNrIGZvciBVX0JVRkZF
Ul9PVkVSRkxPV19FUlJPUiBhbmQgcmV0cnkgd2l0aCBhbiBhbGxvY2F0ZWQgYnVmZmVyLgotICAg
IHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgVVJM
UGFyc2VyOjpoYXNJbnZhbGlkRG9tYWluQ2hhcmFjdGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgVVJM
UGFyc2VyOjpkZWZhdWx0SW5saW5lQnVmZmVyU2l6ZT4mIGFzY2lpRG9tYWluKQpAQCAtMjY5MCwx
MSArMjY5MCwxMSBAQCBib29sIFVSTFBhcnNlcjo6cGFyc2VIb3N0QW5kUG9ydChDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
T3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1
dCkKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUoU3RyaW5n
VmlldyBpbnB1dCkKIHsKICAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNp
b24pOwogICAgIGlmICh1dGY4LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBlcmNlbnREZWNvZGVkID0gcGVy
Y2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1
dGY4Lmxlbmd0aCgpKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwZXJjZW50RGVjb2Rl
ZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TFBhcnNlci5oCmluZGV4IGJiNWU5MmJkYTc2ZWQ3NTNkM2UwMGVmNTQwYjE2YWMzOGRkNzRkYTAu
Ljg2NGVhY2RmNzUxZjEzYzQwMTY1OTgyZmJhZWJmNzAzYWIzOThhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5oCkBAIC01Myw4ICs1Myw4IEBAIGNsYXNzIFVSTFBhcnNlciB7CiAg
ICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIo
KTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgT3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7Ci0gICAgZnJpZW5kIE9wdGlvbmFsPHVpbnQxNl90PiBk
ZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcpOworICAgIGZy
aWVuZCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmlu
Z1ZpZXcpOwogCiAgICAgVVJMIG1fdXJsOwogICAgIFZlY3RvcjxMQ2hhcj4gbV9hc2NpaUJ1ZmZl
cjsKQEAgLTk0LDEwICs5NCwxMCBAQCBjbGFzcyBVUkxQYXJzZXIgewogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+IHZvaWQgYXBwZW5kTnVtYmVyVG9BU0NJSUJ1ZmZl
cihVbnNpZ25lZEludGVnZXJUeXBlKTsKICAgICB0ZW1wbGF0ZTxib29sKCppc0luQ29kZVNldCko
VUNoYXIzMiksIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXRmOFBlcmNlbnRFbmNvZGUo
Y29uc3QgQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHV0ZjhRdWVyeUVuY29kZShjb25zdCBDb2RlUG9p
bnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IE9wdGlvbmFsPFZlY3RvcjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+
PiBkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYsIGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENo
YXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxMQ2hh
ciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+PiBkb21haW5Ub0FTQ0lJKGNvbnN0IFN0cmluZyYs
IGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiBpdGVyYXRvckZvclN5bnRh
eFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBWZWN0b3I8TENoYXIsIGRlZmF1bHRJbmxpbmVCdWZmZXJTaXplPiBwZXJjZW50RGVjb2RlKGNv
bnN0IExDaGFyKiwgc2l6ZV90LCBjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBl
PiYgaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CiAgICAgc3RhdGljIFZlY3Rv
cjxMQ2hhciwgZGVmYXVsdElubGluZUJ1ZmZlclNpemU+IHBlcmNlbnREZWNvZGUoY29uc3QgTENo
YXIqLCBzaXplX3QpOwotICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGZvcm1VUkxEZWNvZGUo
U3RyaW5nVmlldyBpbnB1dCk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBmb3Jt
VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpOwogICAgIHN0YXRpYyBib29sIGhhc0ludmFsaWRE
b21haW5DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCBkZWZhdWx0SW5saW5lQnVmZmVyU2l6
ZT4mKTsKICAgICB2b2lkIHBlcmNlbnRFbmNvZGVCeXRlKHVpbnQ4X3QpOwogICAgIHZvaWQgYXBw
ZW5kVG9BU0NJSUJ1ZmZlcihVQ2hhcjMyKTsKQEAgLTExMCwxMiArMTEwLDEyIEBAIGNsYXNzIFVS
TFBhcnNlciB7CiAKICAgICB1c2luZyBJUHY0QWRkcmVzcyA9IHVpbnQzMl90OwogICAgIHZvaWQg
c2VyaWFsaXplSVB2NChJUHY0QWRkcmVzcyk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gT3B0aW9uYWw8SVB2NEFkZHJlc3M+IHBhcnNlSVB2NEhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZShDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyYWN0ZXJUeXBlPiYsIGJvb2wmIHN5bnRheFZpb2xhdGlvbik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0
SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGll
Y2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRp
b24pOwogICAgIHVzaW5nIElQdjZBZGRyZXNzID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SVB2NkFkZHJlc3M+
IHBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQ
djRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJUHY0QWRkcmVzcz4g
cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8
SVB2NkFkZHJlc3M+IHBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6b3B0aW9uYWw8
dWludDMyX3Q+IHBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZXJUeXBlPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0ZDo6
b3B0aW9uYWw8SVB2NEFkZHJlc3M+IHBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsKICAgICB2b2lkIHNlcmlhbGl6ZUlQdjZQaWVjZSh1
aW50MTZfdCBwaWVjZSk7CiAgICAgdm9pZCBzZXJpYWxpemVJUHY2KElQdjZBZGRyZXNzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXgg
ODkwMzJkY2E0YjFiNTI0OGQ0ZDc5NGM5ZWQzNTQ3YzU4MDYwNTJjMy4uZTAyM2NiOGYxOGRlZDk4
YmM5ZGQ5NGYyZmFhZjc4ZmI4YjYzYTY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIEJpdG1hcElt
YWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlLmZyYW1lQ291bnQoKTsgfQogICAgIFJlcGV0aXRpb25Db3VudCBy
ZXBldGl0aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS5yZXBldGl0aW9uQ291bnQo
KTsgfQogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fc291cmNlLmZpbGVuYW1lRXh0ZW5zaW9uKCk7IH0KLSAgICBPcHRpb25hbDxJbnRQb2lu
dD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc291cmNlLmhvdFNwb3QoKTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3NvdXJjZS5ob3RTcG90KCk7IH0KIAogICAgIC8vIEZsb2F0U2l6ZSBkdWUgdG8g
b3ZlcnJpZGUuCiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3NvdXJjZS5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
CmluZGV4IGU5OTRiYTk3YzJhODZjNzVlZTljY2FjNDdlOWE2YWE0ZWMyYzBlOGIuLjI5Njg3OTYx
ZWQxZTRhNzYyYzAzMWMxNTc2MWVhZGFiN2ZmZGM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtNjksNyArNjksNyBAQCBSR0JBMzIgbWFrZVByZW11bHRp
cGxpZWRSR0JBKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKTsKIFJHQkEzMiBtYWtlVW5QcmVt
dWx0aXBsaWVkUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7CiAKIFdFQkNPUkVfRVhQ
T1JUIFJHQkEzMiBjb2xvcldpdGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgZmxvYXQgb3Zl
cnJpZGVBbHBoYSk7Ci1SR0JBMzIgY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShSR0JBMzIgY29sb3Is
IE9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhKTsKK1JHQkEzMiBjb2xvcldpdGhPdmVycmlk
ZUFscGhhKFJHQkEzMiBjb2xvciwgc3RkOjpvcHRpb25hbDxmbG9hdD4gb3ZlcnJpZGVBbHBoYSk7
CiAKIFdFQkNPUkVfRVhQT1JUIFJHQkEzMiBtYWtlUkdCQTMyRnJvbUZsb2F0cyhmbG9hdCByLCBm
bG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKIFJHQkEzMiBtYWtlUkdCQUZyb21IU0xBKGRvdWJs
ZSBoLCBkb3VibGUgcywgZG91YmxlIGwsIGRvdWJsZSBhKTsKQEAgLTQwNCw3ICs0MDQsNyBAQCBp
bmxpbmUgdWludDE2X3QgZmFzdERpdmlkZUJ5MjU1KHVpbnQxNl90IHZhbHVlKQogICAgIHJldHVy
biBhcHByb3hpbWF0aW9uICsgKHJlbWFpbmRlciA+PiA4KTsKIH0KIAotaW5saW5lIFJHQkEzMiBj
b2xvcldpdGhPdmVycmlkZUFscGhhKFJHQkEzMiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IG92ZXJy
aWRlQWxwaGEpCitpbmxpbmUgUkdCQTMyIGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoUkdCQTMyIGNv
bG9yLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhhKQogewogICAgIHJldHVybiBv
dmVycmlkZUFscGhhID8gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjb2xvciwgb3ZlcnJpZGVBbHBo
YS52YWx1ZSgpKSA6IGNvbG9yOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAppbmRleCBj
NjY5ZGNiNGMwZjBlMjU1MGNkNzFmZDVjZTE4ZDc2NWE3OTQyZjdjLi44ZmExMTRjNDUxNDQ1OThm
MWU3NTRmM2UxYzYxYWFmYzJkYzg2MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaApA
QCAtNTYsNyArNTYsNyBAQCBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQgewogCiBw
cml2YXRlOgogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPFBs
YXRmb3JtRGlzcGxheUlEPiBtX2Rpc3BsYXlJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3Jt
RGlzcGxheUlEPiBtX2Rpc3BsYXlJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAppbmRleCAyYjkxNGVlOGIzMzlmZGRjMDQzODcxMmQ2OTdlYzg0N2VmNGE3
ZDJmLi41Mzc0ZTcyNzJiYzgzNzhlM2MyMWI3MDViZmNlOGY1OTA5NjliYWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0yODQsMTAgKzI4NCwxMCBAQCBjbGFz
cyBGb250IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udD4gewogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIG11dGFibGUgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gbV9ub25LZXJuZWRDRlN0cmlu
Z0F0dHJpYnV0ZXM7CiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBtX2tl
cm5lZENGU3RyaW5nQXR0cmlidXRlczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZlY3Rvcj4g
bV9nbHlwaHNTdXBwb3J0ZWRCeVNtYWxsQ2FwczsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPEJpdFZl
Y3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeUFsbFNtYWxsQ2FwczsKLSAgICBtdXRhYmxlIE9wdGlv
bmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNTdXBwb3J0ZWRCeVBldGl0ZUNhcHM7Ci0gICAgbXV0YWJs
ZSBPcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlBbGxQZXRpdGVDYXBzOwor
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxCaXRWZWN0b3I+IG1fZ2x5cGhzU3VwcG9ydGVkQnlT
bWFsbENhcHM7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPEJpdFZlY3Rvcj4gbV9nbHlwaHNT
dXBwb3J0ZWRCeUFsbFNtYWxsQ2FwczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Qml0VmVj
dG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5UGV0aXRlQ2FwczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8Qml0VmVjdG9yPiBtX2dseXBoc1N1cHBvcnRlZEJ5QWxsUGV0aXRlQ2FwczsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShIQVJGQlVaWikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBhZTk3NTE4YjE2
OWUxMDFjN2JmZWMxODMwMjg4MzEwMzBhODJlNmI4Li43ZTY4MzExMzhiOTc0MDY4OTVhMTc1Y2Nj
NmMxNTJjZDU1NGIzODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6
OmdseXBoQnVmZmVyRm9yVGV4dFJ1bihDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0
UnVuJgogICAgIHJldHVybiBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwg
ZnJvbSwgdG8sIGdseXBoQnVmZmVyKTsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAorZmxv
YXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CiB7CiAgICAgLy8gRG9uJ3QgZHJhdyBhbnl0aGluZyB3
aGlsZSB3ZSBhcmUgdXNpbmcgY3VzdG9tIGZvbnRzIHRoYXQgYXJlIGluIHRoZSBwcm9jZXNzIG9m
IGxvYWRpbmcsCiAgICAgLy8gZXhjZXB0IGlmIHRoZSAnZm9yY2UnIGFyZ3VtZW50IGlzIHNldCB0
byB0cnVlIChpbiB3aGljaCBjYXNlIGl0IHdpbGwgdXNlIGEgZmFsbGJhY2sKQEAgLTMwOSw3ICsz
MDksNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZv
bnRzKCkgJiYgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID09IERvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRv
LnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZh
bHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAKICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29k
ZVBhdGgocnVuKTsKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0
IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0
cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKQEAgLTMyNywxMiArMzI3LDEyIEBAIGZsb2F0IEZvbnRD
YXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZv
aWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNv
bnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gdG8pIGNvbnN0CiB7CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4u
bGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxl
bmd0aCgpKTsKIAogICAgIENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwog
ICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0
aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9y
Zy9iLzEwMDA1MApAQCAtNDkwLDkgKzQ5MCw5IEBAIGJvb2wgRm9udENhc2NhZGU6OmZhc3RBdmVy
YWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQmIHdpZHRoKSBjb25zdAogICAgIHJldHVybiBz
dWNjZXNzOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVk
IGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYg
c2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8p
IGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5n
dGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3Ro
KCkpOwogCiAgICAgQ29kZVBhdGggY29kZVBhdGhUb1VzZSA9IGNvZGVQYXRoKHJ1bik7CiAgICAg
Ly8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwg
cnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTAwMDUwCkBAIC0xMTc5LDI3ICsxMTc5LDI3IEBAIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5
cGhVbmRlcmxpbmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRlCiAK
IC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIG1heSBub3Qgd29yayBpZiB0aGUgZW1waGFzaXMgbWFy
ayB1c2VzIGEgY29tcGxleCBzY3JpcHQsIGJ1dCBub25lIG9mIHRoZQogLy8gc3RhbmRhcmQgZW1w
aGFzaXMgbWFya3MgZG8gc28uCi1PcHRpb25hbDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRF
bXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAorc3Rk
OjpvcHRpb25hbDxHbHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERh
dGEoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAogewogICAgIGlmIChtYXJrLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBVQ2hhcjMyIGNoYXJhY3RlcjsKICAgICBpZiAoIW1hcmsuaXM4Qml0KCkpIHsK
ICAgICAgICAgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKG1hcmsuY2hh
cmFjdGVyczE2KCksIDAsIG1hcmsubGVuZ3RoKCksIG1hcmsubGVuZ3RoKCkpOwogICAgICAgICB1
bnNpZ25lZCBjbHVzdGVyTGVuZ3RoOwogICAgICAgICBpZiAoIWl0ZXJhdG9yLmNvbnN1bWUoY2hh
cmFjdGVyLCBjbHVzdGVyTGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2UKICAgICAgICAgY2hhcmFj
dGVyID0gbWFya1swXTsKIAotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gZ2x5cGhEYXRhKGdseXBo
RGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGZhbHNlLCBFbXBoYXNpc01hcmtWYXJpYW50KSk7
Ci0gICAgcmV0dXJuIGdseXBoRGF0YS52YWx1ZSgpLmlzVmFsaWQoKSA/IGdseXBoRGF0YSA6IE51
bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IGdseXBoRGF0YShnbHlwaERhdGFG
b3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBmYWxzZSwgRW1waGFzaXNNYXJrVmFyaWFudCkpOworICAg
IHJldHVybiBnbHlwaERhdGEudmFsdWUoKS5pc1ZhbGlkKCkgPyBnbHlwaERhdGEgOiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrQXNjZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBPcHRpb25hbDxHbHlwaERhdGE+IG1hcmtH
bHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEobWFyayk7CisgICAgc3RkOjpvcHRp
b25hbDxHbHlwaERhdGE+IG1hcmtHbHlwaERhdGEgPSBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEo
bWFyayk7CiAgICAgaWYgKCFtYXJrR2x5cGhEYXRhKQogICAgICAgICByZXR1cm4gMDsKIApAQCAt
MTIxMyw3ICsxMjEzLDcgQEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtBc2NlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAogCiBpbnQgRm9udENhc2NhZGU6OmVtcGhhc2lz
TWFya0Rlc2NlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAogewotICAgIE9wdGlv
bmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YSht
YXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVt
cGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAoIW1hcmtHbHlwaERhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBpbnQgRm9udENhc2NhZGU6OmVt
cGhhc2lzTWFya0Rlc2NlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSBjb25zdAogCiBpbnQg
Rm9udENhc2NhZGU6OmVtcGhhc2lzTWFya0hlaWdodChjb25zdCBBdG9taWNTdHJpbmcmIG1hcmsp
IGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBtYXJrR2x5cGhEYXRhID0gZ2V0RW1w
aGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRhPiBt
YXJrR2x5cGhEYXRhID0gZ2V0RW1waGFzaXNNYXJrR2x5cGhEYXRhKG1hcmspOwogICAgIGlmICgh
bWFya0dseXBoRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEzMjksNyArMTMyOSw3IEBA
IGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAKIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNp
c01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBo
QnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KSBjb25zdAogewotICAgIE9wdGlvbmFsPEdseXBoRGF0YT4gbWFya0dseXBoRGF0YSA9IGdldEVt
cGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoRGF0YT4g
bWFya0dseXBoRGF0YSA9IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrKTsKICAgICBpZiAo
IW1hcmtHbHlwaERhdGEpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggYTQ2M2UzNzVjMDYyZWI2NDZmYjZi
MzNmM2JjOWNiZTBkMTFiZDRjNi4uMzJkZWMyZjNiMmU2NjI0NWM0YWViZDc0OTc2YTgzOTMxMjc4
M2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5oCkBAIC0xMzIsOSArMTMyLDkgQEAgY2xhc3MgRm9udENhc2NhZGUgewogICAgIHZvaWQgdXBk
YXRlKFJlZlB0cjxGb250U2VsZWN0b3I+JiYpIGNvbnN0OwogCiAgICAgZW51bSBDdXN0b21Gb250
Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZG
b250Tm90UmVhZHkgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBkcmF3VGV4dChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZy
b20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBOdWxsb3B0LCBDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBj
b25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gc3RkOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBh
aW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQg
ZnJvbSwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGlu
Z01vZGUpOwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBOdWxsb3B0KSBjb25z
dDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChj
b25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRS
ZWN0JiBsaW5lRXh0ZW50cykgY29uc3Q7CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFzcyBGb250
Q2FzY2FkZSB7CiAgICAgc3RhdGljIGZsb2F0IHdpZHRoKFRleHRMYXlvdXQmLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCBsZW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0g
MCk7CiAKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBv
c2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVz
dFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rp
b25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gTnVsbG9w
dCkgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0
UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIGJvb2wg
aXNTbWFsbENhcHMoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q2Fw
cygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21hbGw7IH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIGNs
YXNzIEZvbnRDYXNjYWRlIHsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0
KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25z
dCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8pIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBnZXRFbXBoYXNpc01h
cmtHbHlwaERhdGEoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxHbHlwaERhdGE+IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIGNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21w
bGV4VGV4dCgpOwogICAgIHN0YXRpYyBib29sIGNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNv
bXBsZXhUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBjNzczNDQyOTljYTExY2UzYTcyZDdmZmRmMmU2NTEz
ZWI0MDU2NGY1Li4xYmY1OWMzMGVmNTBmN2UwMWVmOTg0OTE2NzI3NTQyMGZkMzc2NGE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKQogICAgIC0tbV90cmFuc3BhcmVuY3lDb3VudDsKIH0KIAotZmxvYXQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9u
YWw8dW5zaWduZWQ+IHRvKQorZmxvYXQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC02NTksNyArNjU5
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUm
IGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb24KICAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhz
KCp0aGlzLCBmb250LCBidWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQsIGZvbnRDYXNjYWRl
LmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjkyLDcg
KzY5Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgc3VicnVuLnNldERpcmVj
dGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92
ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lk
dGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwgTnVsbG9wdCwg
Y3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRy
YXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwgc3RkOjpudWxsb3B0LCBjdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pOwogICAgICAgICBjdXJyUG9pbnQubW92ZSh3aWR0aCwgMCk7CiAK
ICAgICAgICAgYmlkaVJ1biA9IGJpZGlSdW4tPm5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggOWEzN2Q3YzlmYTYw
YjUwY2IxNGYxYTI4NDdmYzIyYTgzYmYwMGJiZS4uODJiOTYxMjZjY2IyMjU4Y2MwNzdmODc2YTc0
NzBlMjJhNmViODI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM4Nyw5ICszODcsOSBAQCBjbGFzcyBHcmFwaGljc0Nv
bnRleHQgewogICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdz
KTsKICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZTsgfQogCi0gICAgZmxvYXQgZHJhd1RleHQoY29u
c3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2ln
bmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBOdWxsb3B0KTsKKyAgICBmbG9h
dCBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9h
dFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0g
c3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmLCBj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtz
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gdG8gPSBOdWxsb3B0KTsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29u
c3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0byA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpD
dXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KTsKIAogICAgIHZvaWQgYXBwbHlTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYpOwpAQCAtNjk4LDcgKzY5OCw3IEBAIGNsYXNzIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRh
aW5lciB7CiAgICAgICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC5zZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5VG9Vc2UpOwogICAgIH0KIAotICAgIGV4cGxp
Y2l0IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgT3B0aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25R
dWFsaXR5KQorICAgIGV4cGxpY2l0IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9u
UXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHkpCiAgICAgICAgIDogSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyKGdyYXBoaWNzQ29udGV4dCwgaW50ZXJwb2xhdGlvblF1YWxpdHkgPyBp
bnRlcnBvbGF0aW9uUXVhbGl0eS52YWx1ZSgpIDogZ3JhcGhpY3NDb250ZXh0LmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoKSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDBjNTdkMjE5NTU0YTRjMWYzNjQw
YTRlMWFkOWZhNTA5MmI1ODg1MGMuLjU4MzEyNTNkZjcwNDRiYjcyYTk2NTY3ZmMyMzJlYTIxNWFi
ZjA0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKQEAgLTMwNywxMSArMzA3LDExIEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogCiAg
ICAgLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXllciAodGhlIGxvY2F0aW9uIG9mIGl0cyB0b3At
bGVmdCBjb3JuZXIgaW4gaXRzIHBhcmVudCkKICAgICBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludCYgcCkgeyBtX2FwcHJveGltYXRlUG9zaXRpb24gPSBOdWxs
b3B0OyBtX3Bvc2l0aW9uID0gcDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwKSB7IG1fYXBwcm94aW1hdGVQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsg
bV9wb3NpdGlvbiA9IHA7IH0KIAogICAgIC8vIGFwcHJveGltYXRlUG9zaXRpb24sIGlmIHNldCwg
b3ZlcnJpZGVzIHBvc2l0aW9uKCkgYW5kIGlzIHVzZWQgZHVyaW5nIGNvdmVyYWdlIHJlY3QgY29t
cHV0YXRpb24uCiAgICAgRmxvYXRQb2ludCBhcHByb3hpbWF0ZVBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcHByb3hpbWF0ZVBvc2l0aW9uID8gbV9hcHByb3hpbWF0ZVBvc2l0aW9uLnZhbHVl
KCkgOiBtX3Bvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRBcHByb3hpbWF0ZVBvc2l0aW9uKE9wdGlv
bmFsPEZsb2F0UG9pbnQ+IHApIHsgbV9hcHByb3hpbWF0ZVBvc2l0aW9uID0gcDsgfQorICAgIHZv
aWQgc2V0QXBwcm94aW1hdGVQb3NpdGlvbihzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHApIHsg
bV9hcHByb3hpbWF0ZVBvc2l0aW9uID0gcDsgfQogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0
IG1vdmUgdW5kZXJseWluZyBwbGF0Zm9ybSBsYXllcnMgb24gYSBkaWZmZXJlbnQgdGhyZWFkIGZv
ciBzY3JvbGxpbmc7IGp1c3QgdXBkYXRlIHRoZSBHcmFwaGljc0xheWVyIHN0YXRlLgogICAgIHZp
cnR1YWwgdm9pZCBzeW5jUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcCkgeyBtX3Bvc2l0aW9u
ID0gcDsgfQpAQCAtNjAyLDcgKzYwMiw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXIgewogICAgIEZs
b2F0UG9pbnQgbV9wb3NpdGlvbjsKIAogICAgIC8vIElmIHNldCwgb3ZlcnJpZGVzIG1fcG9zaXRp
b24uIE9ubHkgdXNlZCBmb3IgY292ZXJhZ2UgY29tcHV0YXRpb24uCi0gICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQ
b2ludD4gbV9hcHByb3hpbWF0ZVBvc2l0aW9uOwogCiAgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9y
UG9pbnQ7CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCmluZGV4IDdiZGFiMDc5YTMzNzJjNzgyYzA1ZTFhYTExZTg3ODI5NzU4NmU1
OWEuLjgwYjEyMmI3ZWNhMjk2OTNlNGEzODFkMjUzYTE1OGM2NDcyOTg5OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTA4LDcgKzEwOCw3IEBAIGNsYXNz
IEltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2U+IHsKICAgICBGbG9hdFJlY3QgcmVjdCgp
IGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0KICAgICBm
bG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAgZmxvYXQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBP
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIEZsb2F0
U2l6ZSBvcmlnaW5hbFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGYwZTY1Yjg3MDAx
ODk0ZDY3Nzc1ZTA1ZmM2YWFlYWIyMjczODFiMmMuLjM5N2JlZWU1YTcxMjEwNzI0MWI5ODdmMjlh
ODAyN2UwN2YxMzJmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEltYWdlQnVmZmVyIHsKICAg
ICAKICAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKICAgICAKLSAgICBTdHJpbmcg
dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSA9IE51bGxvcHQsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3Q7CisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCwgQ29vcmRpbmF0ZVN5c3Rl
bSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKICNpZiAhVVNFKENHKQogICAgIEFm
ZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gQWZmaW5lVHJhbnNm
b3JtKCk7IH0KICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmNDb2xv
clNwYWNlLCBDb2xvclNwYWNlIGRzdENvbG9yU3BhY2UpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIGNs
YXNzIEltYWdlQnVmZmVyIHsKIH07CiAKICNpZiBVU0UoQ0cpCi1TdHJpbmcgZGF0YVVSTChjb25z
dCBJbWFnZURhdGEmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHkpOworU3RyaW5nIGRhdGFVUkwoY29uc3QgSW1hZ2VEYXRhJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpOwogI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCmluZGV4IDFjNDE4ZTJlZWRlNTkxZmQ4YWRjNGY3NDZm
OTA2YzhiNDA0YWNkMDQuLmU3OGE1MzdlODE0ZjBhMGZmNjQ4Y2UwZWYxMThlZDhlOGExZGQyYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZUNhY2hlLmNwcApAQCAtMzM1LDEyICszMzUsMTIgQEAgY29uc3QgSW1hZ2VGcmFtZSYgSW1hZ2VG
cmFtZUNhY2hlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHMK
IAogdm9pZCBJbWFnZUZyYW1lQ2FjaGU6OmNsZWFyTWV0YWRhdGEoKQogewotICAgIG1fZnJhbWVD
b3VudCA9IE51bGxvcHQ7Ci0gICAgbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3IgPSBOdWxsb3B0Owor
ICAgIG1fZnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3NpbmdsZVBpeGVsU29saWRD
b2xvciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VE
ZWNvZGVyOjoqZnVuY3RvcikoKSBjb25zdD4KLVQgSW1hZ2VGcmFtZUNhY2hlOjptZXRhZGF0YShj
b25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkKK1QgSW1hZ2VG
cmFtZUNhY2hlOjptZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIHN0ZDo6b3B0aW9uYWw8
VD4qIGNhY2hlZFZhbHVlKQogewogICAgIGlmIChjYWNoZWRWYWx1ZSAmJiAqY2FjaGVkVmFsdWUp
CiAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZS0+dmFsdWUoKTsKQEAgLTM1Nyw3ICszNTcsNyBA
QCBUIEltYWdlRnJhbWVDYWNoZTo6bWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBPcHRp
b25hbDxUPiogY2FjaGVkVmFsdWUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFQgKEltYWdl
RnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0PgotVCBJbWFnZUZyYW1lQ2FjaGU6OmZyYW1lTWV0YWRh
dGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
LCBJbWFnZUZyYW1lOjpDYWNoaW5nIGNhY2hpbmcsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkK
K1QgSW1hZ2VGcmFtZUNhY2hlOjpmcmFtZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZTo6Q2FjaGluZyBjYWNo
aW5nLCBzdGQ6Om9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSkKIHsKICAgICBpZiAoY2FjaGVkVmFs
dWUgJiYgKmNhY2hlZFZhbHVlKQogICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWUtPnZhbHVlKCk7
CkBAIC00MDAsOSArNDAwLDkgQEAgU3RyaW5nIEltYWdlRnJhbWVDYWNoZTo6ZmlsZW5hbWVFeHRl
bnNpb24oKQogICAgIHJldHVybiBtZXRhZGF0YTxTdHJpbmcsICgmSW1hZ2VEZWNvZGVyOjpmaWxl
bmFtZUV4dGVuc2lvbik+KFN0cmluZygpLCAmbV9maWxlbmFtZUV4dGVuc2lvbik7CiB9CiAKLU9w
dGlvbmFsPEludFBvaW50PiBJbWFnZUZyYW1lQ2FjaGU6OmhvdFNwb3QoKQorc3RkOjpvcHRpb25h
bDxJbnRQb2ludD4gSW1hZ2VGcmFtZUNhY2hlOjpob3RTcG90KCkKIHsKLSAgICByZXR1cm4gbWV0
YWRhdGE8T3B0aW9uYWw8SW50UG9pbnQ+LCAoJkltYWdlRGVjb2Rlcjo6aG90U3BvdCk+KE51bGxv
cHQsICZtX2hvdFNwb3QpOworICAgIHJldHVybiBtZXRhZGF0YTxzdGQ6Om9wdGlvbmFsPEludFBv
aW50PiwgKCZJbWFnZURlY29kZXI6OmhvdFNwb3QpPihzdGQ6Om51bGxvcHQsICZtX2hvdFNwb3Qp
OwogfQogCiBJbnRTaXplIEltYWdlRnJhbWVDYWNoZTo6c2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCmluZGV4IDZmOTA1YTEw
YTZiYTJlMzMxNDllMjMxYzJkZDNjNzVhMjM0ZmUxMGIuLjMyZWUyMWU4Njk5NDNhZTA3ZjY1YTc5
YTgxMDE3M2U0NDc2OGVkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5oCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIEltYWdlRnJh
bWVDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRnJhbWVDYWNoZT4gewogICAgIHNpemVf
dCBmcmFtZUNvdW50KCk7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpOwog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpOwotICAgIE9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90KCk7CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpOwogICAgIAog
ICAgIC8vIEltYWdlIG1ldGFkYXRhIHdoaWNoIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZmlyc3Qg
SW1hZ2VGcmFtZS4KICAgICBJbnRTaXplIHNpemUoKTsKQEAgLTEwNiwxMCArMTA2LDEwIEBAIGNs
YXNzIEltYWdlRnJhbWVDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRnJhbWVDYWNoZT4g
ewogICAgIEltYWdlRnJhbWVDYWNoZShOYXRpdmVJbWFnZVB0ciYmKTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIFQgKEltYWdlRGVjb2Rlcjo6KmZ1bmN0b3IpKCkgY29uc3Q+Ci0gICAgVCBt
ZXRhZGF0YShjb25zdCBUJiBkZWZhdWx0VmFsdWUsIE9wdGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9
IG51bGxwdHIpOworICAgIFQgbWV0YWRhdGEoY29uc3QgVCYgZGVmYXVsdFZhbHVlLCBzdGQ6Om9w
dGlvbmFsPFQ+KiBjYWNoZWRWYWx1ZSA9IG51bGxwdHIpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3Q+Ci0gICAgVCBmcmFtZU1ldGFk
YXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpVbmRlZmluZGVkLCBJbWFnZUZyYW1lOjpDYWNoaW5nID0gSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6RW1wdHksIE9wdGlvbmFsPFQ+KiA9IG51bGxwdHIpOworICAgIFQgZnJhbWVNZXRhZGF0YUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
VW5kZWZpbmRlZCwgSW1hZ2VGcmFtZTo6Q2FjaGluZyA9IEltYWdlRnJhbWU6OkNhY2hpbmc6OkVt
cHR5LCBzdGQ6Om9wdGlvbmFsPFQ+KiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCBpc0RlY29kZXJB
dmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KICAgICB2b2lkIGRlY29kZWRT
aXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpAQCAtMTUzLDE2ICsxNTMsMTYgQEAg
Y2xhc3MgSW1hZ2VGcmFtZUNhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VGcmFtZUNhY2hl
PiB7CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9kZWNvZGluZ1F1ZXVlOwogCiAgICAgLy8gSW1h
Z2UgbWV0YWRhdGEuCi0gICAgT3B0aW9uYWw8Ym9vbD4gbV9pc1NpemVBdmFpbGFibGU7Ci0gICAg
T3B0aW9uYWw8c2l6ZV90PiBtX2ZyYW1lQ291bnQ7Ci0gICAgT3B0aW9uYWw8UmVwZXRpdGlvbkNv
dW50PiBtX3JlcGV0aXRpb25Db3VudDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG1fZmlsZW5hbWVF
eHRlbnNpb247Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8SW50UG9pbnQ+PiBtX2hvdFNwb3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2lzU2l6ZUF2YWlsYWJsZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbV9mcmFtZUNvdW50OworICAgIHN0ZDo6b3B0aW9uYWw8UmVwZXRpdGlvbkNv
dW50PiBtX3JlcGV0aXRpb25Db3VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbV9maWxl
bmFtZUV4dGVuc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+
PiBtX2hvdFNwb3Q7CiAKICAgICAvLyBJbWFnZSBtZXRhZGF0YSB3aGljaCBpcyBjYWxjdWxhdGVk
IGZyb20gdGhlIGZpcnN0IEltYWdlRnJhbWUuCi0gICAgT3B0aW9uYWw8SW50U2l6ZT4gbV9zaXpl
OwotICAgIE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKLSAg
ICBPcHRpb25hbDxDb2xvcj4gbV9zaW5nbGVQaXhlbFNvbGlkQ29sb3I7CisgICAgc3RkOjpvcHRp
b25hbDxJbnRTaXplPiBtX3NpemU7CisgICAgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBtX3NpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb247CisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gbV9zaW5nbGVQ
aXhlbFNvbGlkQ29sb3I7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggM2UyNDEyNmI0NjA0ZjA1NzA1YmU2ZTI0MDc4
ZWY1MmVjMDU4ZWUxMy4uNzM4MThkOWYwNWQ4MWViODMyYzI0YzcyZjE5YjY0MGVhMjRlNmRhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBA
IC03NCw3ICs3NCw3IEBAIGNsYXNzIEltYWdlU291cmNlIHsKICAgICBzaXplX3QgZnJhbWVDb3Vu
dCgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+ZnJhbWVDb3VudCgpOyB9CiAgICAgUmVwZXRpdGlv
bkNvdW50IHJlcGV0aXRpb25Db3VudCgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+cmVwZXRpdGlv
bkNvdW50KCk7IH0KICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSB7IHJldHVybiBtX2Zy
YW1lQ2FjaGUtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7IH0KLSAgICBPcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+aG90U3BvdCgpOyB9CisgICAgc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIHsgcmV0dXJuIG1fZnJhbWVDYWNoZS0+aG90U3Bv
dCgpOyB9CiAKICAgICAvLyBJbWFnZSBtZXRhZGF0YSB3aGljaCBpcyBjYWxjdWxhdGVkIGZyb20g
dGhlIGZpcnN0IEltYWdlRnJhbWUuCiAgICAgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4gbV9mcmFt
ZUNhY2hlLT5zaXplKCk7IH0KQEAgLTExMCw3ICsxMTAsNyBAQCBjbGFzcyBJbWFnZVNvdXJjZSB7
CiAgICAgUmVmPEltYWdlRnJhbWVDYWNoZT4gbV9mcmFtZUNhY2hlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZURlY29kZXI+IG1fZGVjb2RlcjsKIAotICAgIE9wdGlvbmFsPFN1YnNhbXBsaW5n
TGV2ZWw+IG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWw7CisgICAgc3RkOjpvcHRpb25hbDxTdWJz
YW1wbGluZ0xldmVsPiBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZXhwb3NlIGEgc2V0dGluZyB0byBlbmFibGUv
ZGlzYWJsZSBwcm9ncmVzc2l2ZSBsb2FkaW5nIHNvIHRoYXQgd2UgY2FuIHJlbW92ZSB0aGUgUExB
VEZPUk0oSU9TKS1ndWFyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggMjVmZTQzMzM2ODc0N2Q4MGE5ODU1MWI5NjU3NTFj
NDNkMTdjZWEzZi4uYTdkOTA3MTI5NGY1NzI5NjZiNThiNzQ1NGE3M2VlMjM1YzNmYjczNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5j
cHAKQEAgLTQ2MiwxMyArNDYyLDEzIEBAIHN0YXRpYyBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBh
ZGp1c3RlZHRSYWRpaUZvckh1Z2dpbmdDdXJ2ZShjb25zdCBGbG9hdFNpemUmIHRvCiAgICAgcmV0
dXJuIHJhZGlpOwogfQogICAgIAotc3RhdGljIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Q
b2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFwaDo6UG9seWdvbiYgcG9seSkKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdEZyb21Qb2x5Z29uKGNvbnN0IEZsb2F0UG9pbnRHcmFw
aDo6UG9seWdvbiYgcG9seSkKIHsKICAgICBpZiAocG9seS5zaXplKCkgIT0gNCkKLSAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPEZsb2F0UmVjdD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PigpOwogCi0gICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gdG9wTGVmdDsKLSAg
ICBPcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21SaWdodDsKKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UG9pbnQ+IHRvcExlZnQ7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBib3R0b21S
aWdodDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9seS5zaXplKCk7ICsraSkgewog
ICAgICAgICBjb25zdCBhdXRvJiB0b0VkZ2UgPSBwb2x5W2ldOwogICAgICAgICBjb25zdCBhdXRv
JiBmcm9tRWRnZSA9IChpID4gMCkgPyBwb2x5W2kgLSAxXSA6IHBvbHlbcG9seS5zaXplKCkgLSAx
XTsKQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0RnJv
bVBvbHlnb24oY29uc3QgRmxvYXRQb2ludEdyYXBoOjpQb2x5Z29uJiBwb2x5KQogICAgICAgICB9
CiAgICAgfQogICAgIGlmICghdG9wTGVmdCB8fCAhYm90dG9tUmlnaHQpCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxGbG9hdFJlY3Q+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPEZs
b2F0UmVjdD4oKTsKICAgICByZXR1cm4gRmxvYXRSZWN0KHRvcExlZnQudmFsdWUoKSwgYm90dG9t
UmlnaHQudmFsdWUoKSk7CiB9CiAKQEAgLTUxNiw3ICs1MTYsNyBAQCBQYXRoIFBhdGhVdGlsaXRp
ZXM6OnBhdGhXaXRoU2hyaW5rV3JhcHBlZFJlY3RzRm9yT3V0bGluZShjb25zdCBWZWN0b3I8Rmxv
YXRSZWN0PgogICAgICAgICByZXR1cm4gUGF0aCgpOwogICAgIGNvbnN0IGF1dG8mIHBvbHkgPSBw
b2x5cy5hdCgwKTsKICAgICAvLyBGYXN0IHBhdGggd2hlbiBwb2x5IGhhcyBvbmUgcmVjdCBvbmx5
LgotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5KTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IHJlY3RGcm9tUG9seWdvbihwb2x5
KTsKICAgICBpZiAocmVjdCkKICAgICAgICAgcmV0dXJuIHJvdW5kZWRSZWN0KHJlY3QudmFsdWUo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKaW5kZXggNTIzYjNhZjVkN2JlNzdmYTFkZTc2OWU4ZGMxMzA3NmQ1ZjNjMjEzZi4uMzI5Y2Ex
MDA5YmNhOGRhMWE4Y2UxMDExODIwMzUwZmZlOTk0YTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTQwMCw3ICs0MDAsNyBAQCBJ
bnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRgogICAgIGlmIChtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
ICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zv
cm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1YWQoc2hhZG93ZWRSZWN0KSk7
CiAgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0KTsKLSAgICAgICAgbGF5
ZXJSZWN0ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBRdWFkKHRyYW5zZm9ybWVkUG9seWdvbikuYm91bmRpbmdCb3goKTsKKyAgICAgICAgbGF5ZXJS
ZWN0ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgbGF5ZXJSZWN0ID0gc2hhZG93ZWRSZWN0OwogICAgICAgICBsYXllclJlY3QubW92ZSht
X29mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
aWxlZEJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZy5oCmluZGV4IDBkMmI0ODRiZDhmZjc4ZjM3ZTRkNWY1ZTA3MjJiMWY0OTk5MTNiNGEuLmJi
MWQzMzE1ODMyN2QwZTE5ZTNkMmJlYzgwNTBlM2I5ODQ0MWMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCkBAIC03NSw3ICs3NSw3IEBA
IGNsYXNzIFRpbGVkQmFja2luZyB7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgdmlzaWJsZVJlY3Qo
KSBjb25zdCA9IDA7CiAKICAgICAvLyBPbmx5IHVzZWQgdG8gdXBkYXRlIHRoZSB0aWxlIGNvdmVy
YWdlIG1hcC4gCi0gICAgdmlydHVhbCB2b2lkIHNldExheW91dFZpZXdwb3J0UmVjdChPcHRpb25h
bDxGbG9hdFJlY3Q+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldExheW91dFZpZXdwb3J0UmVj
dChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4pID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IGNvdmVyYWdlUmVjdCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGI3
NTljZDhiNWNkMTBjOWExMzk5ZmYxNzhlMDkzMzVkNzBlMjMxNzAuLmFjMDQ2MDlmZGQ2N2Q5MjFm
ZDg5N2IzYmExMzAxOTBjOTM4ZDlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM1
NSw3ICsyMzU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpw
YWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgRmxvYXRSZWN0IGltYWdlUmVj
dCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgobV9sYXN0SW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVp
Z2h0KG1fbGFzdEltYWdlLmdldCgpKSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtID0gW2ZpcnN0RW5hYmxlZFZpZGVvVHJhY2sgcHJlZmVycmVkVHJhbnNmb3JtXTsKLSAgICBG
bG9hdFJlY3QgdHJhbnNmb3JtZWRPdXRwdXRSZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qob3V0cHV0UmVjdCk7CisgICAgRmxv
YXRSZWN0IHRyYW5zZm9ybWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChvdXRwdXRSZWN0KTsKIAogICAgIGNv
bnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWRPdXRw
dXRSZWN0LCBpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggNTUzZGU4ZmJlYTA3ZTY2YTBhMjQyM2QwZWRh
ZjU1MGY3MGE1MmI1OC4uMDY0ZWY4ZjUwN2Y5MmM4NGRlZDExMjFiYWU3NTRjMzAzMmViNzQzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCkBAIC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CiAgICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
QyogbV9zZXNzaW9uIHsgbnVsbHB0ciB9OwogCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBtX2Nh
Y2hlZFNpemU7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKICAg
ICBGbG9hdFNpemUgbV9jdXJyZW50U2l6ZTsKICAgICBib29sIG1fcGFyc2luZ1N1Y2NlZWRlZDsK
ICAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGZj
MmViOGI2ZmY4ZGRhMDdiMGE3Njk5YzU0Njk4OWE1MTAzYWFmZDMuLjhhMDI0M2RlMmZiZmM5ZTZl
NGQxNDUyNDgyMTg3NjM0OWQ4OGMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC05MDIsNyArOTAyLDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Zmx1c2goQXRvbWljU3RyaW5nIHRyYWNrSURT
dHJpbmcpCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpmbHVzaChBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciAqcmVuZGVyZXIpCiB7CiAgICAgW3JlbmRlcmVyIGZsdXNoXTsKLSAg
ICBtX2NhY2hlZFNpemUgPSBOdWxsb3B0OworICAgIG1fY2FjaGVkU2l6ZSA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmIChtX21lZGlhU291cmNlKSB7CiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBs
YXllcigpLT5zZXRIYXNBdmFpbGFibGVWaWRlb0ZyYW1lKGZhbHNlKTsKQEAgLTEwMDEsNyArMTAw
MSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNlZWtUb1RpbWUoTWVkaWFU
aW1lIHRpbWUpCiAKIEZsb2F0U2l6ZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJh
bFNpemUoKQogewotICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVPcihGbG9hdFNpemUoKSk7
CisgICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBs
ZXMoaW50IHRyYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA1M2Q4MGUyMGQwMDVlNGNjYTdjYTUy
MWQ3NGFmNjBiZWU0NzAwMDQ1Li5mNzk0ODk4ZmZiNzNkYjJlMWFiM2ZmMzc1YjA4MGJmNjdlYWU2
MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEyNzQsNyArMTI3NCw3IEBAIEdyYXBoaWNzTGF5ZXJD
QTo6VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMgR3JhcGhpY3NMYXllckNBOjpjb21wdXRlVmlzaWJs
ZUFuZENvdmVyCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdCA9IGNsaXBSZWN0
Rm9yU2VsZjsKLSAgICBPcHRpb25hbDxGbG9hdFF1YWQ+IHF1YWQgPSBzdGF0ZS5tYXBwZWRTZWNv
bmRhcnlRdWFkKCZtYXBXYXNDbGFtcGVkKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4g
cXVhZCA9IHN0YXRlLm1hcHBlZFNlY29uZGFyeVF1YWQoJm1hcFdhc0NsYW1wZWQpOwogICAgIGlm
IChxdWFkICYmICFtYXBXYXNDbGFtcGVkICYmICFhcHBseVdhc0NsYW1wZWQpCiAgICAgICAgIGNv
dmVyYWdlUmVjdCA9ICgqcXVhZCkuYm91bmRpbmdCb3goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDQx
MzJiMDQ4NmEzYTg3ZDJlZjNhMzc4OGEyNzk5YjYxNGIzYTFlMmMuLjM4YTRkMjg1NTI2YzRmMmMy
ZGY3Njc4MzUxYWQzMTBhNzM3ODYxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTE5MCw3ICsxOTAsNyBA
QCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRWaXNpYmxlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgdXBkYXRlVGlsZUNvdmVyYWdlTWFwKCk7CiB9CiAKLXZvaWQgVGlsZUNvbnRyb2xs
ZXI6OnNldExheW91dFZpZXdwb3J0UmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QpCit2b2lk
IFRpbGVDb250cm9sbGVyOjpzZXRMYXlvdXRWaWV3cG9ydFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IHJlY3QpCiB7CiAgICAgaWYgKHJlY3QgPT0gbV9sYXlvdXRWaWV3cG9ydFJlY3QpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5oCmluZGV4IGMzZWU0MWUwNmJkODgyMDAzMWVkMjkyMTI4NjE1
ZmU3OWQ5MzNhYzguLjhjODRjN2NjOTI3NjZjNDZmOTc1OTExNzExZjg5N2JkZWJiMThkYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuaApAQCAtODIsNyArODIsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxlciBmaW5hbCA6IHB1
YmxpYyBUaWxlZEJhY2tpbmcgewogCiAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV92aXNpYmxlUmVjdDsgfQogICAgIEZsb2F0UmVjdCBjb3ZlcmFn
ZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvdmVyYWdlUmVjdDsgfQotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0Vmlld3BvcnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9s
YXlvdXRWaWV3cG9ydFJlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbGF5b3V0
Vmlld3BvcnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRWaWV3cG9ydFJlY3Q7IH0KIAog
ICAgIHVuc2lnbmVkIGJsYW5rUGl4ZWxDb3VudCgpIGNvbnN0OwogICAgIHN0YXRpYyB1bnNpZ25l
ZCBibGFua1BpeGVsQ291bnRGb3JUaWxlcyhjb25zdCBQbGF0Zm9ybUxheWVyTGlzdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEludFBvaW50Jik7CkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3Mg
VGlsZUNvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgVGlsZWRCYWNraW5nIHsKIAogICAgIC8vIFRp
bGVkQmFja2luZyBtZW1iZXIgZnVuY3Rpb25zLgogICAgIHZvaWQgc2V0VmlzaWJsZVJlY3QoY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9ydFJlY3Qo
T3B0aW9uYWw8RmxvYXRSZWN0Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRMYXlvdXRWaWV3cG9y
dFJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+KSBvdmVycmlkZTsKICAgICB2b2lkIHNldENv
dmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICBib29sIHRpbGVzV291
bGRDaGFuZ2VGb3JDb3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRUaWxlZFNjcm9sbGluZ0luZGljYXRvclBvc2l0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmKSBvdmVycmlkZTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBjbGFzcyBUaWxlQ29udHJvbGxl
ciBmaW5hbCA6IHB1YmxpYyBUaWxlZEJhY2tpbmcgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxl
R3JpZD4gbV96b29tZWRPdXRUaWxlR3JpZDsKIAogICAgIEZsb2F0UmVjdCBtX3Zpc2libGVSZWN0
OyAvLyBPbmx5IHVzZWQgZm9yIHNjcm9sbCBwZXJmb3JtYW5jZSBsb2dnaW5nLgotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbV9sYXlvdXRWaWV3cG9ydFJlY3Q7IC8vIE9ubHkgdXNlZCBieSB0aGUg
dGlsZWQgc2Nyb2xsaW5nIGluZGljYXRvci4KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
bV9sYXlvdXRWaWV3cG9ydFJlY3Q7IC8vIE9ubHkgdXNlZCBieSB0aGUgdGlsZWQgc2Nyb2xsaW5n
IGluZGljYXRvci4KICAgICBGbG9hdFJlY3QgbV9jb3ZlcmFnZVJlY3Q7CiAgICAgSW50UmVjdCBt
X2JvdW5kc0F0TGFzdFJldmFsaWRhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggY2Zj
NjZmYTA3ZjQ3MDU3NWJhMWMxZGIxNTJhNjAzMzMwNWJkOWRjNC4uMGIwZTY5NTY5YjQ1NWUwODkz
ZWQ0ZTYwOWM0M2ZkNmU1Yjc2NWRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTU0Myw3
ICs1NDMsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIGltYWdl
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBWZWN0b3I8YwogICAgIHJldHVybiBjYWlyb19zdXJm
YWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oaW1hZ2UsIHdyaXRlRnVuY3Rpb24sIG91dHB1dCkgPT0g
Q0FJUk9fU1RBVFVTX1NVQ0NFU1M7CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4sIENvb3JkaW5hdGVTeXN0
ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7
CiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZv
ckVuY29kaW5nKG1pbWVUeXBlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggNDU4NzU2MjQwNGY3ZDFhZTQy
M2Q1NjRhM2MyZjRmZTgyZTc2NThjNi4uZjZjNTQ0YzRjNjNlOGJlY2ZkNDE1YWVkMGI5YTU5NGVh
N2RiMzMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICNl
bmRpZgogfQogCi1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0
cmluZ1JlZiB1dGksIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ0ZNdXRhYmxlRGF0YVJlZiBk
YXRhKQorc3RhdGljIGJvb2wgZW5jb2RlSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSwgQ0ZTdHJpbmdS
ZWYgdXRpLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ0ZNdXRhYmxlRGF0YVJlZiBk
YXRhKQogewogICAgIGlmICghaW1hZ2UgfHwgIXV0aSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIHN0YXRpYyBib29sIGVuY29kZUltYWdlKENHSW1h
Z2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIHV0aSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsCiAgICAg
cmV0dXJuIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKIH0K
IAotc3RhdGljIFN0cmluZyBkYXRhVVJMKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkKK3N0YXRpYyBTdHJpbmcgZGF0YVVS
TChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gcXVhbGl0eSkKIHsKICAgICBhdXRvIHV0aSA9IHV0aUZyb21NSU1FVHlwZShtaW1l
VHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CkBAIC00OTgsNyArNDk4LDcgQEAgc3RhdGljIFN0cmlu
ZyBkYXRhVVJMKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlv
bmFsPGRvdWJsZT4KICAgICByZXR1cm4gImRhdGE6IiArIG1pbWVUeXBlICsgIjtiYXNlNjQsIiAr
IGJhc2U2NERhdGE7CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ29vcmRpbmF0ZVN5c3Rl
bSkgY29uc3QKK1N0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBj
b25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwogCkBAIC01MzksNyArNTM5LDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LAogICAgIHJldHVybiBkYXRhVVJMKGltYWdlLmdldCgpLCBtaW1lVHlw
ZSwgcXVhbGl0eSk7CiB9CiAKLVN0cmluZyBkYXRhVVJMKGNvbnN0IEltYWdlRGF0YSYgc291cmNl
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCitTdHJp
bmcgZGF0YVVSTChjb25zdCBJbWFnZURhdGEmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpCiB7CiAgICAgQVNTRVJUKE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKG1pbWVUeXBlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcAppbmRleCBiMjkwMzFlYmI3MGYxYWUwZDc1NTQ0MzVhNjY4ZTMzNWYzMGE2
MjNlLi5kZDI4YTRhMDBjZjVmNzdmMTNhNTcyZDU0OGNlODhlNzM1OWUzZWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCkBAIC0yMDMsMjMgKzIwMywyMyBAQCBSZXBldGl0aW9uQ291bnQgSW1hZ2VEZWNvZGVyOjpy
ZXBldGl0aW9uQ291bnQoKSBjb25zdAogICAgIHJldHVybiBSZXBldGl0aW9uQ291bnROb25lOwog
fQogCi1PcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKK3N0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0CiB7CiAg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFn
ZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIuZ2V0KCksIDAsIGlt
YWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAg
ICBpbnQgeCA9IC0xLCB5ID0gLTE7CiAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIp
KTsKICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5
cGUsICZ4KSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WSIpKTsKICAgICBpZiAoIW51bSB8fCAh
Q0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ5KSkKLSAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYg
KHggPCAwIHx8IHkgPCAwKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gSW50UG9pbnQoeCwgeSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aAppbmRleCA2YmMyMzY4MWFhNjE5OWUyMTkyNzFhYzNmNTAwZjA2NGY1MWI1YWZkLi40ZTBmNjc1
ZDNiOGRjNzMzNzZmZDI0NmExMDU2MGI1YWYxNGJiZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTUxLDcgKzUx
LDcgQEAgY2xhc3MgSW1hZ2VEZWNvZGVyIHsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0
OwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKICAgICBTdHJp
bmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90
U3BvdCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dDsKIAogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKICAgICBib29sIGZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQppbmRleCA1MTAyYzIxZDFiZDY1N2Zk
N2E0YzMwNTMzZjhmOGI4NWUyZDZjYjg4Li45YzE4NmNkMjQwYzU3NDI5ZTQ4ZWI4ODVmZDgyZGE4
ODU4OWZmMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENvY29hLm1tCkBAIC00MDQsNyArNDA0LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzVHJ1ZVR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQogICAgIHJldHVybiBD
RkRpY3Rpb25hcnlDb250YWluc0tleShmZWF0dXJlLCBrQ1RGb250RmVhdHVyZVR5cGVJZGVudGlm
aWVyS2V5KSAmJiBDRkRpY3Rpb25hcnlDb250YWluc0tleShmZWF0dXJlLCBrQ1RGb250RmVhdHVy
ZVNlbGVjdG9ySWRlbnRpZmllcktleSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q0ZT
dHJpbmdSZWY+IG9wZW5UeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKK3N0YXRp
YyBpbmxpbmUgc3RkOjpvcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVGZWF0dXJlKENGRGlj
dGlvbmFyeVJlZiBmZWF0dXJlKQogewogICAgIEFTU0VSVChpc09wZW5UeXBlRmVhdHVyZShmZWF0
dXJlKSk7CiAgICAgQ0ZTdHJpbmdSZWYgdGFnID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVUYWcpKTsK
QEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPENGU3RyaW5nUmVmPiBv
cGVuVHlwZUZlYXR1cmUoQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmUpCiAgICAgQ0ZOdW1iZXJSZWYg
dmFsdWUgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZmVh
dHVyZSwga0NURm9udE9wZW5UeXBlRmVhdHVyZVZhbHVlKSk7CiAgICAgYXV0byBzdWNjZXNzID0g
Q0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZSwga0NGTnVtYmVySW50VHlwZSwgJnJhd1ZhbHVlKTsKICAg
ICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgIHJldHVybiByYXdWYWx1ZSA/
IE9wdGlvbmFsPENGU3RyaW5nUmVmPih0YWcpIDogTnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFs
dWUgPyBzdGQ6Om9wdGlvbmFsPENGU3RyaW5nUmVmPih0YWcpIDogc3RkOjpudWxsb3B0OwogfQog
CiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxpbnQsIGludD4gdHJ1ZVR5cGVGZWF0dXJlKENGRGlj
dGlvbmFyeVJlZiBmZWF0dXJlKQpAQCAtNTkyLDExICs1OTIsMTEgQEAgRmxvYXRSZWN0IEZvbnQ6
OnBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB9CiAKICNpZiAhKChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAw
KSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDAwMDApKQotc3RhdGljIGlubGluZSBPcHRpb25hbDxDR1NpemU+IGFkdmFuY2VGb3JDb2xv
ckJpdG1hcEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBHbHlwaCBn
bHlwaCkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxDR1NpemU+IGFkdmFuY2VGb3JDb2xv
ckJpdG1hcEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBHbHlwaCBn
bHlwaCkKIHsKICAgICBDVEZvbnRSZWYgZm9udCA9IHBsYXRmb3JtRGF0YS5mb250KCk7CiAgICAg
aWYgKCFmb250IHx8ICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQ0dTaXpl
IGFkdmFuY2U7CiAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMoZm9udCwga0NURm9udE9y
aWVudGF0aW9uRGVmYXVsdCwgJmdseXBoLCAmYWR2YW5jZSwgMSk7CiAgICAgcmV0dXJuIGFkdmFu
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNGFmMTgyNjVlNDhh
ZDcxMDJkM2Y1NWNkZWQyMDA3Yjk1MTYxZjc2NS4uMGZjYTEyM2RhMGFhNWM1MDFmMjNmMDk1NTg0
OWRkM2VmY2U3NDMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAt
Mzk1LDcgKzM5NSw3IEBAIHZvaWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcygpCiAgICAgfQog
fQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdHbHlwaHM6OmxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0dseXBo
czo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBGbG9h
dFJlY3QgbG9jYWxCb3VuZHMgPSBtX2JvdW5kczsKICAgICBsb2NhbEJvdW5kcy5tb3ZlKG1fYmxv
Y2tMb2NhdGlvbi54KCksIG1fYmxvY2tMb2NhdGlvbi55KCkpOwpAQCAtNTc1LDcgKzU3NSw3IEBA
IHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
UmVjdCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gRHJh
d0xpbmU6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gRHJhd0xpbmU6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGJvdW5kczsKICAgICBib3VuZHMuZml0VG9Q
b2ludHMobV9wb2ludDEsIG1fcG9pbnQyKTsKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIERyYXdM
aW5lc0ZvclRleHQ6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBj
b250ZXh0LmRyYXdMaW5lc0ZvclRleHQocG9pbnQoKSwgbV93aWR0aHMsIG1fcHJpbnRpbmcsIG1f
ZG91YmxlTGluZXMpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5lc0ZvclRleHQ6
OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PEZsb2F0UmVjdD4gRHJhd0xpbmVzRm9yVGV4dDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBh
IHZhbHVlIGVxdWFsIHRvIG9yIGVuY2xvc2luZyB3aGF0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0
ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dCgpIHJldHVybnMuCiAKQEAgLTYz
MCw3ICs2MzAsNyBAQCB2b2lkIERyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXI6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRyYXdMaW5lRm9yRG9jdW1l
bnRNYXJrZXIobV9wb2ludCwgbV93aWR0aCwgbV9zdHlsZSk7CiB9CiAKLU9wdGlvbmFsPEZsb2F0
UmVjdD4gRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcjo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3TGluZUZvckRv
Y3VtZW50TWFya2VyOjpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAog
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8g
b3IgZW5jbG9zaW5nIHdoYXQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFy
a2VyKCkgcmV0dXJucy4KIApAQCAtNjc5LDcgKzY3OSw3IEBAIHZvaWQgRHJhd0ZvY3VzUmluZ1Bh
dGg6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmRy
YXdGb2N1c1JpbmcobV9wYXRoLCBtX3dpZHRoLCBtX29mZnNldCwgbV9jb2xvcik7CiB9CiAKLU9w
dGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gRHJhd0ZvY3Vz
UmluZ1BhdGg6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAg
ICAgRmxvYXRSZWN0IHJlc3VsdCA9IG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgcmVz
dWx0LmluZmxhdGUocGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCk7CkBAIC03MDEsNyArNzAxLDcgQEAg
dm9pZCBEcmF3Rm9jdXNSaW5nUmVjdHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKICAgICBjb250ZXh0LmRyYXdGb2N1c1JpbmcobV9yZWN0cywgbV93aWR0aCwgbV9vZmZz
ZXQsIG1fY29sb3IpOwogfQogCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdGb2N1c1JpbmdSZWN0
czo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBEcmF3Rm9jdXNSaW5nUmVjdHM6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHJlc3VsdDsKICAgICBmb3IgKGF1
dG8mIHJlY3QgOiBtX3JlY3RzKQpAQCAtODI1LDcgKzgyNSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWxsRWxsaXBzZSYgaXRlbSkKICAg
ICByZXR1cm4gdHM7CiB9CiAKLU9wdGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlUmVjdDo6bG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBTdHJva2VSZWN0Ojpsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dAogewogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBtX3JlY3Q7CiAgICAgYm91bmRzLmV4cGFuZCht
X2xpbmVXaWR0aCwgbV9saW5lV2lkdGgpOwpAQCAtODQ1LDcgKzg0NSw3IEBAIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VSZWN0JiBpdGVt
KQogICAgIHJldHVybiB0czsKIH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VQYXRoOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPEZsb2F0UmVjdD4gU3Ryb2tlUGF0aDo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHRha2Ugc3Ry
b2tlIHRoaWNrbmVzcyBpbnRvIGFjY291bnQgY29ycmVjdGx5LCB2aWEgQ0dQYXRoQnlTdHJva2lu
Z1BhdGgoKS4KICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LnN0cm9rZVRoaWNr
bmVzcygpOwpAQCAtODY3LDcgKzg2Nyw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTdHJva2VQYXRoJiBpdGVtKQogICAgIHJldHVybiB0czsK
IH0KIAotT3B0aW9uYWw8RmxvYXRSZWN0PiBTdHJva2VFbGxpcHNlOjpsb2NhbEJvdW5kcyhjb25z
dCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gU3Ryb2tlRWxsaXBzZTo6bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tl
VGhpY2tuZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGE3MWUz
MTQ5Yjg4MzY0Y2IwOWRjY2NjM2NjZGE4M2ZiMDVjOGRkZmMuLmE3MGZkNmQxZTQxZGMwN2VhMjA0
MmIxMGI1MzFmODNiOTJhMTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtMTcyLDEyICsxNzIsMTIgQEAgY2xhc3MgRHJhd2luZ0l0ZW0gOiBwdWJsaWMgSXRlbSB7CiAK
ICAgICAvLyBSZXR1cm4gYm91bmRzIG9mIHRoaXMgZHJhd2luZyBvcGVyYXRpb24gaW4gbG9jYWwg
Y29vcmRpbmF0ZXMuCiAgICAgLy8gRG9lcyBub3QgaW5jbHVkZSBlZmZldHMgb2YgdHJhbnNmb3Jt
LCBzaGFkb3cgZXRjIGluIHRoZSBzdGF0ZS4KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gTnVs
bG9wdDsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0RyYXdpbmdJdGVtKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2V4dGVudDsgLy8gSW4gYmFz
ZSBjb29yZGluYXRlcywgdGFraW5nIHNoYWRvd3MgYW5kIHRyYW5zZm9ybXMgaW50byBhY2NvdW50
LgorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2V4dGVudDsgLy8gSW4gYmFzZSBjb29y
ZGluYXRlcywgdGFraW5nIHNoYWRvd3MgYW5kIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LgogfTsK
IAogY2xhc3MgU2F2ZSA6IHB1YmxpYyBJdGVtIHsKQEAgLTU0Myw3ICs1NDMsNyBAQCBjbGFzcyBE
cmF3R2x5cGhzIDogcHVibGljIERyYXdpbmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIEdseXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIo
KSBjb25zdDsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIGNsYXNzIERyYXdJbWFnZSA6IHB1YmxpYyBE
cmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogICAgIG11
dGFibGUgUmVmPEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTogRHJhd2luZyBpbWFnZXMgY2FuIGNh
dXNlIHRoZWlyIGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxkbid0IGhhdmUgdG8g
YmUgbXV0YWJsZS4KICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKQEAgLTU5OSw3ICs1OTks
NyBAQCBjbGFzcyBEcmF3VGlsZWRJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogICAgIG11dGFibGUgUmVmPEltYWdlPiBtX2lt
YWdlOyAvLyBGSVhNRTogRHJhd2luZyBpbWFnZXMgY2FuIGNhdXNlIHRoZWlyIGFuaW1hdGlvbnMg
dG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxkbid0IGhhdmUgdG8gYmUgbXV0YWJsZS4KICAgICBGbG9h
dFJlY3QgbV9kZXN0aW5hdGlvbjsKQEAgLTYyNSw3ICs2MjUsNyBAQCBjbGFzcyBEcmF3VGlsZWRT
Y2FsZWRJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVz
dGluYXRpb247IH0KIAogICAgIG11dGFibGUgUmVmPEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTog
RHJhd2luZyBpbWFnZXMgY2FuIGNhdXNlIHRoZWlyIGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRo
aXMgc2hvdWxkbid0IGhhdmUgdG8gYmUgbXV0YWJsZS4KICAgICBGbG9hdFJlY3QgbV9kZXN0aW5h
dGlvbjsKQEAgLTY1Miw3ICs2NTIsNyBAQCBjbGFzcyBEcmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMg
RHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQor
ICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICNpZiBV
U0UoQ0cpCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1faW1hZ2U7CkBAIC02ODcsNyArNjg3
LDcgQEAgY2xhc3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICAgICBtdXRhYmxlIFJlZjxJbWFnZT4gbV9pbWFn
ZTsgLy8gRklYTUU6IERyYXdpbmcgaW1hZ2VzIGNhbiBjYXVzZSB0aGVpciBhbmltYXRpb25zIHRv
IHByb2dyZXNzLiBUaGlzIHNob3VsZG4ndCBoYXZlIHRvIGJlIG11dGFibGUuCiAgICAgQWZmaW5l
VHJhbnNmb3JtIG1fcGF0dGVyblRyYW5zZm9ybTsKQEAgLTc1Niw3ICs3NTYsNyBAQCBjbGFzcyBE
cmF3UmVjdCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVjdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0K
IAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgZmxvYXQgbV9ib3JkZXJUaGlja25lc3M7CkBA
IC03ODEsNyArNzgxLDcgQEAgY2xhc3MgRHJhd0xpbmUgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewog
ICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9h
dFBvaW50IG1fcG9pbnQxOwogICAgIEZsb2F0UG9pbnQgbV9wb2ludDI7CkBAIC04MTYsNyArODE2
LDcgQEAgY2xhc3MgRHJhd0xpbmVzRm9yVGV4dCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFBvaW50IG1f
YmxvY2tMb2NhdGlvbjsKICAgICBGbG9hdFNpemUgbV9sb2NhbEFuY2hvcjsKQEAgLTg0Nyw3ICs4
NDcsNyBAQCBjbGFzcyBEcmF3TGluZUZvckRvY3VtZW50TWFya2VyIDogcHVibGljIERyYXdpbmdJ
dGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZs
b2F0UG9pbnQgbV9wb2ludDsKICAgICBmbG9hdCBtX3dpZHRoOwpAQCAtODcxLDcgKzg3MSw3IEBA
IGNsYXNzIERyYXdFbGxpcHNlIDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CkBAIC04OTQsNyArODk0LDcg
QEAgY2xhc3MgRHJhd1BhdGggOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKICAgICBjb25zdCBQ
YXRoIG1fcGF0aDsKIH07CkBAIC05MjMsNyArOTIzLDcgQEAgY2xhc3MgRHJhd0ZvY3VzUmluZ1Bh
dGggOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3Vu
ZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgY29uc3QgUGF0aCBtX3BhdGg7CiAgICAgaW50IG1fd2lkdGg7CkBA
IC05NTUsNyArOTU1LDcgQEAgY2xhc3MgRHJhd0ZvY3VzUmluZ1JlY3RzIDogcHVibGljIERyYXdp
bmdJdGVtIHsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFZlY3RvcjxGbG9hdFJlY3Q+IG1fcmVjdHM7CiAgICAgaW50IG1fd2lkdGg7CkBAIC05ODAsNyAr
OTgwLDcgQEAgY2xhc3MgRmlsbFJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAog
ICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogfTsKQEAgLTEwMDUsNyAr
MTAwNSw3IEBAIGNsYXNzIEZpbGxSZWN0V2l0aENvbG9yIDogcHVibGljIERyYXdpbmdJdGVtIHsK
ICAgICB9CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKICAgICBD
b2xvciBtX2NvbG9yOwpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgY2xhc3MgRmlsbFJlY3RXaXRoR3Jh
ZGllbnQgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAK
ICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIG11dGFibGUgUmVmPEdyYWRpZW50PiBtX2dyYWRp
ZW50OyAvLyBGSVhNRTogTWFrZSB0aGlzIG5vdCBtdXRhYmxlCkBAIC0xMDU4LDcgKzEwNTgsNyBA
QCBjbGFzcyBGaWxsQ29tcG9zaXRlZFJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0K
IAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIENvbG9yIG1f
Y29sb3I7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCBjbGFzcyBGaWxsUm91bmRlZFJlY3QgOiBwdWJs
aWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3QucmVj
dCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdC5yZWN0KCk7IH0K
IAogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9yZWN0OwogICAgIENvbG9yIG1fY29sb3I7CkBAIC0x
MTE1LDcgKzExMTUsNyBAQCBjbGFzcyBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSA6IHB1YmxpYyBE
cmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIEZsb2F0UmVjdCBt
X3JlY3Q7CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBtX3JvdW5kZWRIb2xlUmVjdDsKQEAgLTExMzks
NyArMTEzOSw3IEBAIGNsYXNzIEZpbGxQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9
CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9
CiAKICAgICBjb25zdCBQYXRoIG1fcGF0aDsKIH07CkBAIC0xMTYyLDcgKzExNjIsNyBAQCBjbGFz
cyBGaWxsRWxsaXBzZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3JlY3Q7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9
CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogfTsKQEAgLTExODYsNyArMTE4Niw3IEBAIGNsYXNz
IFN0cm9rZVJlY3QgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogICAgIH0KIAogICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIGZs
b2F0IG1fbGluZVdpZHRoOwpAQCAtMTIwOSw3ICsxMjA5LDcgQEAgY2xhc3MgU3Ryb2tlUGF0aCA6
IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIGNvbnN0IFBhdGggbV9wYXRoOwogICAgIEZsb2F0UG9pbnQgbV9i
bG9ja0xvY2F0aW9uOwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgY2xhc3MgU3Ryb2tlRWxsaXBzZSA6
IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiB9OwpAQCAtMTI1NCw3ICsxMjU0
LDcgQEAgY2xhc3MgQ2xlYXJSZWN0IDogcHVibGljIERyYXdpbmdJdGVtIHsKICAgICB9CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYzljM2M0ZDQ5ZDE1NDIxZTBiNTk5ZmQ0
ZmU5OGJkYjZlNGNhY2I2MS4uNmQ2ODUzMzQ1MGI5MDkyMTMzYmY3MDg2MmYzZWY2MmRiZWYwMzIw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzc0LDcg
KzM3NCw3IEBAIEl0ZW0mIFJlY29yZGVyOjphcHBlbmRJdGVtKFJlZjxJdGVtPiYmIGl0ZW0pCiAK
IHZvaWQgUmVjb3JkZXI6OnVwZGF0ZUl0ZW1FeHRlbnQoRHJhd2luZ0l0ZW0mIGl0ZW0pIGNvbnN0
CiB7Ci0gICAgaWYgKE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCA9IGl0ZW0ubG9jYWxCb3VuZHMo
bV9ncmFwaGljc0NvbnRleHQpKQorICAgIGlmIChzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcmVj
dCA9IGl0ZW0ubG9jYWxCb3VuZHMobV9ncmFwaGljc0NvbnRleHQpKQogICAgICAgICBpdGVtLnNl
dEV4dGVudChleHRlbnRGcm9tTG9jYWxCb3VuZHMocmVjdC52YWx1ZSgpKSk7CiB9CiAKQEAgLTQ0
Myw3ICs0NDMsNyBAQCB2b2lkIFJlY29yZGVyOjpDb250ZXh0U3RhdGU6OnJvdGF0ZShmbG9hdCBh
bmdsZUluUmFkaWFucykKICAgICBBZmZpbmVUcmFuc2Zvcm0gcm90YXRpb247CiAgICAgcm90YXRp
b24ucm90YXRlKGFuZ2xlSW5EZWdyZWVzKTsKIAotICAgIGlmIChPcHRpb25hbDxBZmZpbmVUcmFu
c2Zvcm0+IGludmVyc2UgPSByb3RhdGlvbi5pbnZlcnNlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gcm90YXRpb24uaW52ZXJzZSgpKQogICAgICAg
ICBjbGlwQm91bmRzID0gaW52ZXJzZS52YWx1ZSgpLm1hcFJlY3QoY2xpcEJvdW5kcyk7CiB9CiAK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFJlY29yZGVyOjpDb250ZXh0U3RhdGU6OmNvbmNhdENU
TShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKIHsKICAgICBjdG0gKj0gbWF0cml4Owog
Ci0gICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IG1hdHJpeC5pbnZl
cnNlKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0g
bWF0cml4LmludmVyc2UoKSkKICAgICAgICAgY2xpcEJvdW5kcyA9IGludmVyc2UudmFsdWUoKS5t
YXBSZWN0KGNsaXBCb3VuZHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNwcAppbmRleCA4YTFjOWUyMDk3NmU4
NmFiZDIwNWEwZGQ2NzhjZTQxNzVjNTY3MWNhLi5hMTEyZGI0ZGE4NTM3ZTA0MjRkYTc0MjFiZjZk
ZWM1ZGE0YzIyMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHAKQEAgLTQ3LDEyICs0NywxMiBAQCBzdGF0aWMg
Ym9vbCBlbmNvZGVJbWFnZVBORyhjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBWZWN0b3I8Y2hhcj4q
IG91dHB1dCkKICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmdfc3RyZWFtKGlt
YWdlLCB3cml0ZUZ1bmN0aW9uLCBvdXRwdXQpID09IENBSVJPX1NUQVRVU19TVUNDRVNTOwogfQog
Ci1zdGF0aWMgYm9vbCBlbmNvZGVJbWFnZUpQRUcodW5zaWduZWQgY2hhciogZGF0YSwgSW50U2l6
ZSBzaXplLCBWZWN0b3I8Y2hhcj4qIG91dHB1dCwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQor
c3RhdGljIGJvb2wgZW5jb2RlSW1hZ2VKUEVHKHVuc2lnbmVkIGNoYXIqIGRhdGEsIEludFNpemUg
c2l6ZSwgVmVjdG9yPGNoYXI+KiBvdXRwdXQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
KQogeyAgICAKICAgICByZXR1cm4gY29tcHJlc3NSR0JBQmlnRW5kaWFuVG9KUEVHKGRhdGEsIHNp
emUsICpvdXRwdXQsIHF1YWxpdHkpOwogfQogCi1TdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIENvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0CitTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ29vcmRpbmF0
ZVN5c3RlbSkgY29uc3QKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggMjVhNWRiYjEy
NjE4MzQ3NTNkNTQ3Njg4OTA4NDA1YmZmNzAyMDk4Yy4uM2FmZmQ0MjFlMGUzZDczMTg3ZjJlMzQy
N2ZiNmQ0ZjEzZWI1ODViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbHRlciA6IHB1
YmxpYyBSZWZDb3VudGVkPEZpbHRlcj4gewogICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoZmxvYXQg
c2NhbGUpIHsgbV9maWx0ZXJTY2FsZSA9IHNjYWxlOyB9CiAKICAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5z
Zm9ybTsgfQotICAgIEZsb2F0UG9pbnQgbWFwQWJzb2x1dGVQb2ludFRvTG9jYWxQb2ludChjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOyB9Cisg
ICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOyB9CiAKICAgICBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ01vZGU7
IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCmluZGV4
IDNiZmEyNjBkZWFiMjY1NDlkYWRhZTYzNWUxYTg1NjQ3M2M4NGMwNTYuLmIyZmUyYTkwOTI5ODVi
MmVhMjQzMzU1N2RmM2FjYTBhZmEyY2YzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIGVuY29kZUltYWdlKGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5LCBHVW5pcXVlT3V0UHRyPGdjaGFyPiYgYnVmZmVyLCBnc2l6ZSYgYnVm
ZmVyU2l6ZSkKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHks
IEdVbmlxdWVPdXRQdHI8Z2NoYXI+JiBidWZmZXIsIGdzaXplJiBidWZmZXJTaXplKQogewogICAg
IC8vIExpc3Qgb2Ygc3VwcG9ydGVkIGltYWdlIGVuY29kaW5nIHR5cGVzIGNvbWVzIGZyb20gdGhl
IEdka1BpeGJ1ZiBkb2N1bWVudGF0aW9uLgogICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuZ25vbWUu
b3JnL2dkay1waXhidWYvc3RhYmxlL2dkay1waXhidWYtRmlsZS1zYXZpbmcuaHRtbCNnZGstcGl4
YnVmLXNhdmUtdG8tYnVmZmVydgpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJ
bWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbgogICAgIHJldHVybiAhZXJyb3I7CiB9CiAKLVN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgQ29v
cmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBDb29yZGlu
YXRlU3lzdGVtKSBjb25zdAogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNo
YXBlci5jcHAKaW5kZXggNGQ2ZGQxNjAzZTQ5N2UyZjljZWUwNGI0ZTM2NjYzZGI3NjRkMWE3Ny4u
OWU2ZjQ0ODY3NWMxNzE4NDJmZmE3ZjNlNzY2YjhmMjU0NDg2MDY2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6
U2hhcGVyLmNwcApAQCAtNjUyLDggKzY1Miw4IEBAIEZsb2F0UmVjdCBIYXJmQnV6elNoYXBlcjo6
c2VsZWN0aW9uUmVjdChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGhlaWdodCwgdW5zCiAg
ICAgYm9vbCBmb3VuZEZyb21YID0gZmFsc2U7CiAgICAgYm9vbCBmb3VuZFRvWCA9IGZhbHNlOwog
Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb21JbmRleCA9IGZyb207Ci0gICAgT3B0aW9uYWw8
dW5zaWduZWQ+IHRvSW5kZXggPSB0bzsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9t
SW5kZXggPSBmcm9tOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvSW5kZXggPSB0bzsK
IAogICAgIGlmIChtX3J1bi5ydGwoKSkKICAgICAgICAgY3VycmVudFggPSBtX3RvdGFsV2lkdGg7
CkBAIC02NjgsNyArNjY4LDcgQEAgRmxvYXRSZWN0IEhhcmZCdXp6U2hhcGVyOjpzZWxlY3Rpb25S
ZWN0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgaGVpZ2h0LCB1bnMKICAgICAgICAgICAg
IGlmIChmcm9tSW5kZXggJiYgZnJvbUluZGV4LnZhbHVlKCkgPj0gbnVtQ2hhcmFjdGVycykKICAg
ICAgICAgICAgICAgICBmcm9tSW5kZXgudmFsdWUoKSAtPSBudW1DaGFyYWN0ZXJzOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZyb21JbmRleCA9IE51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgZnJvbUluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFmb3VuZFRvWCAmJiB0b0luZGV4LnZhbHVlKCkgPCBudW1DaGFyYWN0ZXJzKSB7CkBAIC02
NzgsNyArNjc4LDcgQEAgRmxvYXRSZWN0IEhhcmZCdXp6U2hhcGVyOjpzZWxlY3Rpb25SZWN0KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgaGVpZ2h0LCB1bnMKICAgICAgICAgICAgIGlmICh0
b0luZGV4ICYmIHRvSW5kZXgudmFsdWUoKSA+PSBudW1DaGFyYWN0ZXJzKQogICAgICAgICAgICAg
ICAgIHRvSW5kZXgudmFsdWUoKSAtPSBudW1DaGFyYWN0ZXJzOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRvSW5kZXggPSBOdWxsb3B0OworICAgICAgICAgICAgICAgIHRvSW5k
ZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZm91bmRGcm9tWCAm
JiBmb3VuZFRvWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggYjk0MTFiNDJiNTI3
ZGQ0NDczMjU2ZGE0ODhjMzNkYmVkMzMwYTY0NS4uOGRmYWY3YjJhOTkyZmU1MzFmYzk5NGQ2M2Ex
ODlmYmQ2NDNlMTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI3NiwxOSAr
Mjc2LDE5IEBAIHN0YXRpYyBib29sIGFkdmFuY2VCeUNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNl
KGNvbnN0IFVDaGFyKiYgaXRlcmF0b3IsIGNvbnN0IFVDCiB9CiAKIC8vIEZJWE1FOiBDYXBpdGFs
aXphdGlvbiBpcyBsYW5ndWFnZS1kZXBlbmRlbnQgYW5kIGNvbnRleHQtZGVwZW5kZW50IGFuZCBz
aG91bGQgb3BlcmF0ZSBvbiBncmFwaGVtZSBjbHVzdGVycyBpbnN0ZWFkIG9mIGNvZGVwb2ludHMu
Ci1zdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFz
ZUNoYXJhY3RlcikKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFs
aXplZChVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIpCiB7CiAgICAgaWYgKFVfR0VUX0dDX01BU0soYmFz
ZUNoYXJhY3RlcikgJiBVX0dDX01fTUFTSykKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBVQ2hhcjMyIHVwcGVyY2FzZUNoYXJhY3Rl
ciA9IHVfdG91cHBlcihiYXNlQ2hhcmFjdGVyKTsKICAgICBBU1NFUlQodXBwZXJjYXNlQ2hhcmFj
dGVyID09IGJhc2VDaGFyYWN0ZXIgfHwgKFVfSVNfQk1QKGJhc2VDaGFyYWN0ZXIpID09IFVfSVNf
Qk1QKHVwcGVyY2FzZUNoYXJhY3RlcikpKTsKICAgICBpZiAodXBwZXJjYXNlQ2hhcmFjdGVyICE9
IGJhc2VDaGFyYWN0ZXIpCiAgICAgICAgIHJldHVybiB1cHBlcmNhc2VDaGFyYWN0ZXI7Ci0gICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIGJv
b2wgc2hvdWxkU3ludGhlc2l6ZShjb25zdCBGb250KiBuZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hh
cmFjdGVyLCBPcHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFsaXplZEJhc2UsIEZvbnRWYXJpYW50Q2Fw
cyBmb250VmFyaWFudENhcHMsIGJvb2wgZW5nYWdlQWxsU21hbGxDYXBzUHJvY2Vzc2luZykKK3N0
YXRpYyBib29sIHNob3VsZFN5bnRoZXNpemUoY29uc3QgRm9udCogbmV4dEZvbnQsIFVDaGFyMzIg
YmFzZUNoYXJhY3Rlciwgc3RkOjpvcHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFsaXplZEJhc2UsIEZv
bnRWYXJpYW50Q2FwcyBmb250VmFyaWFudENhcHMsIGJvb2wgZW5nYWdlQWxsU21hbGxDYXBzUHJv
Y2Vzc2luZykKIHsKICAgICBpZiAoIW5leHRGb250IHx8IG5leHRGb250ID09IEZvbnQ6OnN5c3Rl
bUZhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKaW5kZXggODk1ZDM3ZjM5Y2YwNTcyZjVkNDk2ZTBlYjYwYWJiMWYyOTA2ZmE1Yy4uNDkx
MGNmMGFjN2UyZDg3NjAwMTk4Yjg0OTVlNThkNzNmOGExNTJjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbgog
ICAgICAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zIHJlcGxpY2FPcHRpb25zKG9wdGlvbnMp
OwogICAgICAgICByZXBsaWNhT3B0aW9ucy50cmFuc2Zvcm0KICAgICAgICAgICAgIC5tdWx0aXBs
eShtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpCi0g
ICAgICAgICAgICAubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgICAgICAgICAgLm11bHRp
cGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiAgICAgICAgIHBhaW50U2VsZkFuZENoaWxkcmVuKHJlcGxp
Y2FPcHRpb25zKTsKICAgICB9CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJMYXllcjo6c2V0QW5pbWF0ZWRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiAKIFRyYW5zZm9ybWF0
aW9uTWF0cml4IFRleHR1cmVNYXBwZXJMYXllcjo6cmVwbGljYVRyYW5zZm9ybSgpCiB7Ci0gICAg
cmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fc3RhdGUucmVwbGljYUxheWVyLT5tX2N1cnJl
bnRUcmFuc2Zvcm0uY29tYmluZWQoKSkubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJp
bmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9jdXJyZW50
VHJhbnNmb3JtLmNvbWJpbmVkKCkpLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5l
ZCgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CiB9CiAKIHZv
aWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykKQEAgLTczMSw3ICs3MzEsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXIq
IFRleHR1cmVNYXBwZXJMYXllcjo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3Qg
RmxvYQogRmxvYXRTaXplIFRleHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0
IEZsb2F0U2l6ZSYgb2Zmc2V0KQogewogICAgIGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgs
IG9mZnNldFk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50
VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpOwogICAgIHRyYW5zZm9ybS5tYXAoMCwgMCwgemVyb1gsIHplcm9ZKTsKICAgICB0cmFuc2Zv
cm0ubWFwKG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIG9mZnNldFgsIG9mZnNldFkp
OwogICAgIHJldHVybiBGbG9hdFNpemUob2Zmc2V0WCAtIHplcm9YLCBvZmZzZXRZIC0gemVyb1kp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAppbmRleCA1ZDc0NGQyNTI5YzIwMDdiZGUwZTg5OTE0MDAwZjA1N2I3MWQzN2ZjLi4w
NTVlZjk5NTQ5ZTY5NDI2MjQxMDNkODg4Y2JjNzU0ZDZmYjZkM2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTQ3
LDcgKzk0Nyw3IEBAIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1l
ZFZpc2libGVSZWN0KCkKICAgICAvLyBSZXR1cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxl
IHJlY3QgKHN1cmZhY2UgY29vcmRpbmF0ZXMpIG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVy
IGNvb3JkaW5hdGVzKS4KICAgICAvLyBUaGUgcmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdl
ZCBhbmQgdGhlIHZpc2libGUgcmVjdCBpcyB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwK
ICAgICAvLyBzbyBpdCBtaWdodCBzcHJlYWQgZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUg
YXJlYSAoYW5kIHRoZW4gZXZlbiBtb3JlIGFtcGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0
aXBsaWVyKS4KLSAgICBBU1NFUlQobV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJU
cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKSk7CisgICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpKTsKICAgICBGbG9hdFJlY3QgcmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFt
cGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFkKEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxl
Q29udGVudHNSZWN0KCkpKTsKICAgICBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0
ZShyZWN0LCBzaXplKCkpOwogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAt
MTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVU
cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVu
VHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29t
YmluZVRyYW5zZm9ybXMocGFyZW50KCkgPyBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI+KCpwYXJlbnQoKSkubV9sYXllclRyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKIAotICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9
IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKTsKKyAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJh
bnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpOwogCiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGls
ZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCmluZGV4IGMxNzZmMGQxYWI2Nzg2
YTJjMTIyNmIzNDM1YjliMDlkOTAzNjUwYWIuLjhlYmRkOThmMTgxMDI3MmE2OWJmODAzZTdjY2Fh
NDUzYzJhMDcyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKQEAgLTEwNCwxMSAr
MTA0LDExIEBAIGJvb2wgQWZmaW5lVHJhbnNmb3JtOjppc0ludmVydGlibGUoKSBjb25zdAogICAg
IHJldHVybiBzdGQ6OmlzZmluaXRlKGRldGVybWluYW50KSAmJiBkZXRlcm1pbmFudCAhPSAwOwog
fQogCi1PcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gQWZmaW5lVHJhbnNmb3JtOjpp
bnZlcnNlKCkgY29uc3QKIHsKICAgICBkb3VibGUgZGV0ZXJtaW5hbnQgPSBkZXQobV90cmFuc2Zv
cm0pOwogICAgIGlmICghc3RkOjppc2Zpbml0ZShkZXRlcm1pbmFudCkgfHwgZGV0ZXJtaW5hbnQg
PT0gMCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcmVzdWx0OwogICAgIGlmIChpc0lkZW50aXR5T3JU
cmFuc2xhdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAppbmRleCA4MmQzZDZhNGIw
NjNhYmZlMTE3MGVhOTVjNzlkYmNjYzNhZDg3YWMyLi5hMGIxZjdiZDNmZTdlOGI5NTQxMTBlNGVj
MTNlYjhhNjQ4Yzk2MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKQEAgLTEyOCw3ICsx
MjgsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm0gewogICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJs
ZSB5U2NhbGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7IC8vIElm
IHlvdSBjYWxsIHRoaXMgdGhpcywgeW91J3JlIHByb2JhYmx5IGRvaW5nIGl0IHdyb25nLgotICAg
IFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZl
cnNlKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJsZW5kKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0
YXRlLmNwcAppbmRleCBlNzYzY2MxMzkzZGJjZGU2MTEzMjExOGZmYjQzMTkxYzY0OGU0NWU0Li41
ZWYwZTViZjQwYjlkZWI0ZTc4Y2U3NDM5MTdhODIyMTA4MzFlZTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybVN0YXRlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIEZsb2F0UG9pbnQgVHJhbnNmb3JtU3Rh
dGU6Om1hcHBlZFBvaW50KGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiAgICAgaWYgKG1fZGlyZWN0
aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybS0+bWFwUG9pbnQocG9pbnQpOwogCi0gICAgcmV0dXJuIG1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnBy
b2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CisgICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9q
ZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOwogfQogCiBGbG9hdFF1YWQgVHJhbnNmb3JtU3Rh
dGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKQEAgLTE4MywxMyArMTgzLDEz
IEBAIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVk
KSBjb25zdAogICAgIHJldHVybiBxdWFkOwogfQogCi1PcHRpb25hbDxGbG9hdFF1YWQ+IFRyYW5z
Zm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4gVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFNlY29uZGFyeVF1
YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKIHsKICAgICBpZiAod2FzQ2xhbXBlZCkKICAgICAg
ICAgKndhc0NsYW1wZWQgPSBmYWxzZTsKIAogICAgIGlmICghbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEZsb2F0UXVhZD4oKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPigpOwogCiAgICAgRmxvYXRRdWFkIHF1YWQgPSAq
bV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZDsKICAgICBtYXBRdWFkKHF1YWQsIG1fZGlyZWN0aW9u
LCB3YXNDbGFtcGVkKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpt
YXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9v
bAogICAgIGlmIChkaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAg
IHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYXBRdWFkKHF1YWQpOwogCi0gICAgcXVh
ZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSBt
X2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNm
b3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0LCBib29sKiB3YXNDbGFtcGVkKQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgVHJhbnNmb3Jt
U3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
LCBib29sKiB3CiAgICAgICAgIH0KIAogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJh
bnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAg
ICAgICAgIGlmIChtX21hcFBvaW50KQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBp
bnZlcnNlVHJhbnNmb3JtLnByb2plY3RQb2ludChtX2xhc3RQbGFuYXJQb2ludCk7CiAgICAgICAg
IGlmIChtX21hcFF1YWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaAppbmRleCA3Mjg3ODYyNDRk
ODMzNTc0N2ZmYjM2NjE4MTYzNzcwNzQxNTIwMjRiLi5jZDk1NWFiZjRhYjJmMjE2ZjliNTEwNWY0
YmE1YTk5NGRjYjE2Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCkBAIC04MCw3ICs4MCw3
IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IHF1
YWQ7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHdlYmtpdC5vcmcvYi8xNDQyMjYgdXNlIE9wdGlv
bmFsPEZsb2F0UXVhZD4uIAorICAgIC8vIEZJWE1FOiB3ZWJraXQub3JnL2IvMTQ0MjI2IHVzZSBz
dGQ6Om9wdGlvbmFsPEZsb2F0UXVhZD4uIAogICAgIHZvaWQgc2V0U2Vjb25kYXJ5UXVhZChjb25z
dCBGbG9hdFF1YWQqIHF1YWQpCiAgICAgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxh
dHRlbmVkIHN0YXRlIChubyBhY2N1bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNl
Y29uZGFyeSBxdWFkLgpAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAg
ICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbnVsbHB0cjsKICAgICB9CiAK
LSAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9iLzE0NDIyNiB1c2UgT3B0aW9uYWw8RmxvYXRRdWFk
Pi4KKyAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9iLzE0NDIyNiB1c2Ugc3RkOjpvcHRpb25hbDxG
bG9hdFF1YWQ+LgogICAgIHZvaWQgc2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxv
YXRRdWFkKik7CiAKICAgICB2b2lkIG1vdmUoTGF5b3V0VW5pdCB4LCBMYXlvdXRVbml0IHksIFRy
YW5zZm9ybUFjY3VtdWxhdGlvbiBhY2N1bXVsYXRlID0gRmxhdHRlblRyYW5zZm9ybSkKQEAgLTEx
Myw3ICsxMTMsNyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAgLy8gUmV0dXJuIHRoZSBw
b2ludCBvciBxdWFkIG1hcHBlZCB0aHJvdWdoIHRoZSBjdXJyZW50IHRyYW5zZm9ybQogICAgIEZs
b2F0UG9pbnQgbWFwcGVkUG9pbnQoYm9vbCogd2FzQ2xhbXBlZCA9IG51bGxwdHIpIGNvbnN0Owog
ICAgIEZsb2F0UXVhZCBtYXBwZWRRdWFkKGJvb2wqIHdhc0NsYW1wZWQgPSBudWxscHRyKSBjb25z
dDsKLSAgICBPcHRpb25hbDxGbG9hdFF1YWQ+IG1hcHBlZFNlY29uZGFyeVF1YWQoYm9vbCogd2Fz
Q2xhbXBlZCA9IG51bGxwdHIpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPiBt
YXBwZWRTZWNvbmRhcnlRdWFkKGJvb2wqIHdhc0NsYW1wZWQgPSBudWxscHRyKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICB2b2lkIHRyYW5zbGF0ZVRyYW5zZm9ybShjb25zdCBMYXlvdXRTaXplJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IDRkMWYwYmZmODgz
OWE2MDM5YzE0M2RiNTJiOWQ0ZjAwMjMwOGRkZWUuLjI0MjdiMDFjMTdhY2RmYTg4ZTE3OTIwMTg3
NGY1OTE3YjU4OWU2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
CkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojppc0ludmVy
dGlibGUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVyc2UoKSBjb25zdAorc3RkOjpv
cHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVy
c2UoKSBjb25zdAogewogICAgIGlmIChpc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CiAgICAg
ICAgIC8vIGlkZW50aXR5IG1hdHJpeApAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgT3B0aW9uYWw8VHJh
bnNmb3JtYXRpb25NYXRyaXg+IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QK
ICAgICAvLyBGSVhNRTogVXNlIExVIGRlY29tcG9zaXRpb24gdG8gYXBwbHkgdGhlIGludmVyc2Ug
aW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSBleHBsaWNpdGx5LgogICAgIC8vIENh
bGN1bGF0aW5nIHRoZSBpbnZlcnNlIG9mIGEgNHg0IG1hdHJpeCB1c2luZyBjb2ZhY3RvcnMgaXMg
bnVtZXJpY2FsbHkgdW5zdGFibGUgYW5kIHVubmVjZXNzYXJ5IHRvIGFwcGx5IHRoZSBpbnZlcnNl
IHRyYW5zZm9ybWF0aW9uIHRvIGEgcG9pbnQuCiAgICAgaWYgKCFXZWJDb3JlOjppbnZlcnNlKG1f
bWF0cml4LCBpbnZNYXQubV9tYXRyaXgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpbnZNYXQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMDY1NDdkNGM4MTM0NmUwMWVjZjBkNTk1
N2U1MGE0YTM0MjZiMWY5NS4uNWRiMGMwMDJhMmQ4ZmI0ZWVhMGZjY2Y4NGRlMGU1M2YzMTk0NjRj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjU4LDcgKzI1OCw3
IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4IHsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVjdFRvUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7IC8vIElmIHlv
dSBjYWxsIHRoaXMgdGhpcywgeW91J3JlIHByb2JhYmx5IGRvaW5nIGl0IHdyb25nLgotICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4gaW52ZXJzZSgpIGNvbnN0OwogCiAgICAgLy8gRGVjb21wb3NlIHRoZSBtYXRyaXggaW50byBp
dHMgY29tcG9uZW50IHBhcnRzLgogICAgIHN0cnVjdCBEZWNvbXBvc2VkMlR5cGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGly
ZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGlyZWN0MkQuY3BwCmluZGV4IDcxMGEwYmJmNGQ5YjNiMzVmNmYwMGFiYjI1MTAxZmNjNmUy
MzM4M2IuLjljYTE1M2I1MDA4OWRhY2IyOTI5N2RmMTg5YjI5N2M1NDAwZmI5ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyRC5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpw
dXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJj
ZSwgYwogICAgIG1fZGF0YS5wdXREYXRhKHNvdXJjZSwgc2NhbGVkU291cmNlU2l6ZSwgc2NhbGVk
U291cmNlUmVjdCwgZGVzdFBvaW50LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKIH0KIAotU3Ry
aW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8ZG91Ymxl
PiwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1N0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgQ29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
ImRhdGE6LCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggM2ZkZTgzMjY0MmIyNGM1
NTMzYTE5OTViZjNlYzQzZTJhMTcxMGFkMy4uMTI5YTIxODQxMGM0YjI1ZDUzYWUxMDY5NDVmZmRj
MjZlZDMyODQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0xMDksNyArMTA5LDcg
QEAgUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QK
ICAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+
IEltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBJ
bWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogewogICAgIHJldHVybiBJbnRQb2ludCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRleCBlNTM4MjY3MDg0NDZlMGQyOWUwMGRlOTkwYmVi
ZWJjYWM4N2NiYTJlLi5hY2IzMmE5ZjU4MTdhMTYzMTVkNTlmNGI3YWY4ZGNmNmM3YjkzZTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBJbWFnZURlY29k
ZXIgewogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CiAKICAgICBSZXBldGl0aW9uQ291
bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7
CiAgICAgCiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwogICAgIGJvb2wgZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAppbmRl
eCAxY2EzZmExZDAzNDg2ZTI3ZTI3OGJiYjVlYTkzZjdiZmVjNjY5NzAxLi42ZGEwNjJmNDBkNjAx
NzNhZGU1OGIxNzE0MTJlMzUwNDAxZTQyYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmNwcApAQCAt
OTUsNyArOTUsNyBAQCBib29sIFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNYQ29tcG9zaXRl
KCkgY29uc3QKICAgICByZXR1cm4gbV9zdXBwb3J0c1hDb21wb3NpdGUudmFsdWUoKTsKIH0KIAot
Ym9vbCBQbGF0Zm9ybURpc3BsYXlYMTE6OnN1cHBvcnRzWERhbWFnZShPcHRpb25hbDxpbnQ+JiBk
YW1hZ2VFdmVudEJhc2UpIGNvbnN0Citib29sIFBsYXRmb3JtRGlzcGxheVgxMTo6c3VwcG9ydHNY
RGFtYWdlKHN0ZDo6b3B0aW9uYWw8aW50PiYgZGFtYWdlRXZlbnRCYXNlKSBjb25zdAogewogICAg
IGlmICghbV9zdXBwb3J0c1hEYW1hZ2UpIHsKICAgICAgICAgbV9zdXBwb3J0c1hEYW1hZ2UgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gxMS9Q
bGF0Zm9ybURpc3BsYXlYMTEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3gx
MS9QbGF0Zm9ybURpc3BsYXlYMTEuaAppbmRleCAxMGJjMWUyNDYyZDk5OTdiOThiMTMzOTg2ZGQ0
NDFjMjBiZDAzZTkxLi4xZTBhZGQyOTgxMGNmMzJjZjZiY2FkMjg2NzU0YWFkYzMxNGZkN2RlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1E
aXNwbGF5WDExLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1Bs
YXRmb3JtRGlzcGxheVgxMS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFBsYXRmb3JtRGlzcGxh
eVgxMSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybURpc3BsYXkgewogCiAgICAgRGlzcGxheSogbmF0
aXZlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CiAgICAgYm9vbCBzdXBwb3J0c1hDb21w
b3NpdGUoKSBjb25zdDsKLSAgICBib29sIHN1cHBvcnRzWERhbWFnZShPcHRpb25hbDxpbnQ+JiBk
YW1hZ2VFdmVudEJhc2UpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNYRGFtYWdlKHN0ZDo6b3B0
aW9uYWw8aW50PiYgZGFtYWdlRXZlbnRCYXNlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Olgx
MTsgfQpAQCAtNTQsOSArNTQsOSBAQCBjbGFzcyBQbGF0Zm9ybURpc3BsYXlYMTEgZmluYWwgOiBw
dWJsaWMgUGxhdGZvcm1EaXNwbGF5IHsKIAogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBi
b29sIG1fb3duZWREaXNwbGF5OwotICAgIG11dGFibGUgT3B0aW9uYWw8Ym9vbD4gbV9zdXBwb3J0
c1hDb21wb3NpdGU7Ci0gICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX3N1cHBvcnRzWERhbWFn
ZTsKLSAgICBtdXRhYmxlIE9wdGlvbmFsPGludD4gbV9kYW1hZ2VFdmVudEJhc2U7CisgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fc3VwcG9ydHNYQ29tcG9zaXRlOworICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxib29sPiBtX3N1cHBvcnRzWERhbWFnZTsKKyAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8aW50PiBtX2RhbWFnZUV2ZW50QmFzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTk2YjM1ODczZmFmZWYzYzZjOTQ3ZGI3MWE4ZGY5OTAy
OGMxNWIxNC4uYTQxZWMwYTJmODIxMjVkYTMxZjU0N2UxMGY4MTlkYWU3MDM2N2Q0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmgKQEAgLTE4Niw3ICsxODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBh
cmd1bWVudAogICAgICAgICAvLyBhbmQgcmV0dXJucyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBm
YWxzZS4KLSAgICAgICAgdmlydHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
IHsgcmV0dXJuIE51bGxvcHQ7IH0KKyAgICAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBv
aW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGQwYTJhZmY2NTJkNzVkNTU2ZGU0ZmE2ZjhkNzg5
MzIyMDVkNWZiNjEuLjY0YzJjMzU4YTY2ODdhMWI1YzEzYWE5YTc3ZDUyZGZkMDJhYmY4MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJQ09J
bWFnZURlY29kZXI6OnNldEZhaWxlZCgpCiAgICAgcmV0dXJuIEltYWdlRGVjb2Rlcjo6c2V0RmFp
bGVkKCk7CiB9CiAKLU9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3Qo
KSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90
KCkgY29uc3QKIHsKICAgICAvLyBXaGVuIHVuc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBmcmFtZSBp
cyBhbHdheXMgZnJhbWUgMC4gVGhpcyBpcyBjb25zaXN0ZW50IHdpdGgKICAgICAvLyBCaXRtYXBJ
bWFnZSB3aGVyZSBjdXJyZW50RnJhbWUoKSBzdGFydHMgYXQgMCBhbmQgb25seSBpbmNyZWFzZXMg
d2hlbiBhbmltYXRpb24gaXMKQEAgLTEyNywxMCArMTI3LDEwIEBAIE9wdGlvbmFsPEludFBvaW50
PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogICAgIHJldHVybiBob3RTcG90QXRJ
bmRleCgwKTsKIH0KIAotT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3Bv
dEF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSUNP
SW1hZ2VEZWNvZGVyOjpob3RTcG90QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7CiAgICAg
aWYgKGluZGV4ID49IG1fZGlyRW50cmllcy5zaXplKCkgfHwgbV9maWxlVHlwZSAhPSBDVVJTT1Ip
Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIG1fZGlyRW50cmllc1tpbmRleF0ubV9ob3RTcG90OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5oCmluZGV4IDJkNDdhN2JjNTllMmZiYTZiMTRhNDY0NDkxYjA1M2IzYzY1NTdj
Y2YuLmIxYmM1YWRlNjcxMmY0MjVmMDA1MTBlZmMxODVjMjhkYjliNzhjZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBhdm9pZCBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBj
YWxsaW5nIHRoaXMgZnJvbQogICAgICAgICAvLyBpbnNpZGUgQk1QSW1hZ2VSZWFkZXIhCiAgICAg
ICAgIGJvb2wgc2V0RmFpbGVkKCkgb3ZlcnJpZGU7Ci0gICAgICAgIE9wdGlvbmFsPEludFBvaW50
PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGVu
dW0gSW1hZ2VUeXBlIHsKQEAgLTExNSw4ICsxMTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIGNvdWxkIGJlIGRlY29kZWQuCiAgICAgICAgIGJvb2wgcHJvY2Vzc0RpcmVjdG9y
eUVudHJpZXMoKTsKIAotICAgICAgICAvLyBSZXR1cm5zIHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4
fCwgcmV0dXJucyBOdWxsb3B0IGlmIHRoZXJlIGlzIG5vbmUuCi0gICAgICAgIE9wdGlvbmFsPElu
dFBvaW50PiBob3RTcG90QXRJbmRleChzaXplX3QpIGNvbnN0OworICAgICAgICAvLyBSZXR1cm5z
IHRoZSBob3Qtc3BvdCBmb3IgfGluZGV4fCwgcmV0dXJucyBzdGQ6Om51bGxvcHQgaWYgdGhlcmUg
aXMgbm9uZS4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdEF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKIAogICAgICAgICAvLyBSZWFkcyBhbmQgcmV0dXJucyBhIGRpcmVjdG9y
eSBlbnRyeSBmcm9tIHRoZSBjdXJyZW50IG9mZnNldCBpbnRvCiAgICAgICAgIC8vIHxkYXRhfC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL0pQRUdJ
bWFnZUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMv
SlBFR0ltYWdlRW5jb2Rlci5jcHAKaW5kZXggZTQxMGE3ZDhjNGI2NGRjNzdjMmEzN2NlZjEzMDIz
YzlhYTZjOTQ4ZC4uMDU3ZTAzMzFkN2YyMjI5ODY2MWYxM2Y5Yjk4ZmRjZjQ2YWVjMDk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdl
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMv
SlBFR0ltYWdlRW5jb2Rlci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHZvaWQganBlZ0Vy
cm9yRXhpdChqX2NvbW1vbl9wdHIgY29tcHJlc3NEYXRhKQogICAgIGxvbmdqbXAoZXJyLT5tX3Nl
dGptcEJ1ZmZlciwgLTEpOwogfQogCi1ib29sIGNvbXByZXNzUkdCQUJpZ0VuZGlhblRvSlBFRyh1
bnNpZ25lZCBjaGFyKiByZ2JhQmlnRW5kaWFuRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVmVj
dG9yPGNoYXI+JiBqcGVnRGF0YSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KQorYm9vbCBjb21w
cmVzc1JHQkFCaWdFbmRpYW5Ub0pQRUcodW5zaWduZWQgY2hhciogcmdiYUJpZ0VuZGlhbkRhdGEs
IGNvbnN0IEludFNpemUmIHNpemUsIFZlY3RvcjxjaGFyPiYganBlZ0RhdGEsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5KQogewogICAgIHN0cnVjdCBqcGVnX2NvbXByZXNzX3N0cnVjdCBj
b21wcmVzc0RhdGE7CiAgICAgSlBFR0NvbXByZXNzRXJyb3JNZ3IgZXJyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZW5jb2RlcnMvSlBFR0ltYWdlRW5jb2Rl
ci5oCmluZGV4IDMyODQzNGIyMGEyNTA1NjU0ZmJiYzZlNmFmNzVmYmU5MDZhNDY3MWIuLjlmMzFh
OTFjM2M2ZTcwZDdjYzI2NGM4M2RlMjJmOWViODdkMGU0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWVuY29kZXJzL0pQRUdJbWFnZUVuY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1lbmNvZGVycy9KUEVHSW1hZ2VFbmNvZGVyLmgK
QEAgLTI3LDYgKzI3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwog
Ci1ib29sIGNvbXByZXNzUkdCQUJpZ0VuZGlhblRvSlBFRyh1bnNpZ25lZCBjaGFyKiByZ2JhQmln
RW5kaWFuRGF0YSwgY29uc3QgSW50U2l6ZSYsIFZlY3RvcjxjaGFyPiYganBlZ0RhdGEsIE9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSA9IE51bGxvcHQpOworYm9vbCBjb21wcmVzc1JHQkFCaWdFbmRp
YW5Ub0pQRUcodW5zaWduZWQgY2hhciogcmdiYUJpZ0VuZGlhbkRhdGEsIGNvbnN0IEludFNpemUm
LCBWZWN0b3I8Y2hhcj4mIGpwZWdEYXRhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9
IHN0ZDo6bnVsbG9wdCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUuaAppbmRleCAyZjJjNDhjZGE4YTEyMGEwY2ZjMmRhZGFlNWNkZGE4NGUxMTll
ZWU0Li45MmMyMWQyNGIzMDE5ZWQ0MTM3ZTZlODE0NjkyNmMzNTQwOGMxOGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCkBAIC0xNDAsNyArMTQw
LDcgQEAgY2xhc3MgTGVnYWN5VGlsZUNhY2hlIHsKICAgICBDQUxheWVyKiBob3N0TGF5ZXIoKSBj
b25zdDsKICAgICB1bnNpZ25lZCB0aWxlQ2FwYWNpdHlGb3JHcmlkKExlZ2FjeVRpbGVHcmlkKik7
CiAgICAgQ29sb3IgY29sb3JGb3JHcmlkVGlsZUJvcmRlcihMZWdhY3lUaWxlR3JpZCopIGNvbnN0
OwotICAgIHZvaWQgc2V0T3ZlcnJpZGVWaXNpYmxlUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+KTsK
KyAgICB2b2lkIHNldE92ZXJyaWRlVmlzaWJsZVJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
KTsKIAogICAgIHZvaWQgZG9QZW5kaW5nUmVwYWludHMoKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBA
IGNsYXNzIExlZ2FjeVRpbGVDYWNoZSB7CiAgICAgLy8gRW5zdXJlIHRoZXJlIGFyZSBubyBhc3lu
YyBjYWxscyBvbiBhIGRlYWQgdGlsZSBjYWNoZS4KICAgICBSZXRhaW5QdHI8TGVnYWN5VGlsZUNh
Y2hlVG9tYnN0b25lPiBtX3RvbWJzdG9uZTsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbV9v
dmVycmlkZVZpc2libGVSZWN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX292ZXJy
aWRlVmlzaWJsZVJlY3Q7CiAKICAgICBUaWxpbmdNb2RlIG1fdGlsaW5nTW9kZTsKICAgICBUaWxp
bmdEaXJlY3Rpb24gbV90aWxpbmdEaXJlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCBiMGI3YmZkYTJkYjgxZWVmNzQxY2Y2NjQz
YzEwZjgwZWY3ZDI5ZWYzLi42NmEyNmUxZTY4ZTNjNGQ1NzdhYjNlYjU2ODUxOGZhYzU4ZjU5Njll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0K
QEAgLTExNyw3ICsxMTcsNyBAQCBGbG9hdFJlY3QgTGVnYWN5VGlsZUNhY2hlOjp2aXNpYmxlUmVj
dEluTGF5ZXIoQ0FMYXllciAqbGF5ZXIpIGNvbnN0CiAgICAgcmV0dXJuIFtsYXllciBjb252ZXJ0
UmVjdDpbbV93aW5kb3cgZXh0ZW5kZWRWaXNpYmxlUmVjdF0gZnJvbUxheWVyOmhvc3RMYXllcigp
XTsKIH0KIAotdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldE92ZXJyaWRlVmlzaWJsZVJlY3QoT3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0KQordm9pZCBMZWdhY3lUaWxlQ2FjaGU6OnNldE92ZXJyaWRl
VmlzaWJsZVJlY3Qoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QpCiB7CiAgICAgbV9vdmVy
cmlkZVZpc2libGVSZWN0ID0gcmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUxheWVyLm1tCmluZGV4IDc3ODJiMjVmNDgwOWE5ZDZkZmRjYmMxYmNkMzhl
NzM5N2VhMDFiMzQuLjVjYTIxMmEzYzRmMmJlYzIxMmQ2YmRmNWZiMTEyN2QxMzQ2NjlmYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllci5tbQpAQCAt
NjQsNyArNjQsNyBAQCAtICh2b2lkKXJlbmRlckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKIAogICAgIFtzdXBlciByZW5kZXJJbkNvbnRleHQ6Y29udGV4dF07CiAKLSAgICBfdGlsZUdy
aWQtPnRpbGVDYWNoZSgpLnNldE92ZXJyaWRlVmlzaWJsZVJlY3QoTnVsbG9wdCk7CisgICAgX3Rp
bGVHcmlkLT50aWxlQ2FjaGUoKS5zZXRPdmVycmlkZVZpc2libGVSZWN0KHN0ZDo6bnVsbG9wdCk7
CiB9CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01l
bW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
bnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcAppbmRleCA5YTAzODMyNjYwYWEyY2Jh
OTc4OTFjNjgwZTRiNmQyYWRjMTE5NGIxLi40MjFjNjE2MGY4ODkxMjQ2NDc3M2Q0ZWEzZmNhZWQ0
OTYzZDVhN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpFdmVudEZEUG9sbGVyOjpFdmVudEZEUG9sbGVyKGludCBm
ZCwgc3RkOjpmdW5jdGlvbjx2b2lkICgKIAogTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpFdmVudEZE
UG9sbGVyOjp+RXZlbnRGRFBvbGxlcigpCiB7Ci0gICAgbV9mZCA9IE51bGxvcHQ7CisgICAgbV9m
ZCA9IHN0ZDo6bnVsbG9wdDsKICNpZiBVU0UoR0xJQikKICAgICBnX3NvdXJjZV9kZXN0cm95KG1f
c291cmNlLmdldCgpKTsKICNlbHNlCkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBpbmxpbmUgdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmxvZ0Vycm9yQW5kQ2xvc2VGRHMoY29uc3QgY2hhciogbG9n
KQogCiAgICAgaWYgKG1fZXZlbnRGRCkgewogICAgICAgICBjbG9zZShtX2V2ZW50RkQudmFsdWUo
KSk7Ci0gICAgICAgIG1fZXZlbnRGRCA9IE51bGxvcHQ7CisgICAgICAgIG1fZXZlbnRGRCA9IHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgaWYgKG1fcHJlc3N1cmVMZXZlbEZEKSB7CiAgICAgICAg
IGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZELnZhbHVlKCkpOwotICAgICAgICBtX3ByZXNzdXJlTGV2
ZWxGRCA9IE51bGxvcHQ7CisgICAgICAgIG1fcHJlc3N1cmVMZXZlbEZEID0gc3RkOjpudWxsb3B0
OwogICAgIH0KIH0KIApAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OnVuaW5zdGFsbCgpCiAKICAgICBpZiAobV9wcmVzc3VyZUxldmVsRkQpIHsKICAgICAg
ICAgY2xvc2UobV9wcmVzc3VyZUxldmVsRkQudmFsdWUoKSk7Ci0gICAgICAgIG1fcHJlc3N1cmVM
ZXZlbEZEID0gTnVsbG9wdDsKKyAgICAgICAgbV9wcmVzc3VyZUxldmVsRkQgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgLy8gT25seSBjbG9zZSB0aGUgZXZlbnRGRCB1c2VkIGZvciBjZ3JvdXBz
LgogICAgICAgICBpZiAobV9ldmVudEZEKSB7CiAgICAgICAgICAgICBjbG9zZShtX2V2ZW50RkQu
dmFsdWUoKSk7Ci0gICAgICAgICAgICBtX2V2ZW50RkQgPSBOdWxsb3B0OworICAgICAgICAgICAg
bV9ldmVudEZEID0gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCmluZGV4IGU0YzcyNzE3OWJlODA3NDJjZjVlYmMzMzk5
ODJkZGMyOGIyZTdkNjQuLmIzNDZhNjVlZDAxNmE0ODA3OTEwNGU5M2UyODU4NGE2MmIwY2FmM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIFRoZW1lTWFjIDogcHVibGljIFRoZW1lQ29jb2EgewogICAgIAogICAgIGludCBiYXNl
bGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFy
dCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENv
bnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92
ZXJyaWRlOwogICAgIAogICAgIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0IG92ZXJyaWRlOwogICAgIExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQ
YXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDJiYzI2MmQ4MDZl
ZTljZjNhYzdlNTQxZjY4YWMzMDJiNjJkMDg2OGYuLmExZDc4NWY0NTRlYmVmYWJiNDExZWY4YWM4
OWQyYWVlMDNlMjI0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
QEAgLTY4Niw3ICs2ODYsNyBAQCBpbnQgVGhlbWVNYWM6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3Rt
ZW50KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0CiAgICAgcmV0dXJuIFRoZW1lOjpiYXNlbGluZVBv
c2l0aW9uQWRqdXN0bWVudChwYXJ0KTsKIH0KIAotT3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlw
dGlvbj4gVGhlbWVNYWM6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAorc3RkOjpvcHRpb25hbDxGb250
Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZU1hYzo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQgcGFy
dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5jcHAKaW5kZXggNDUxMmI4ODE5MjIxMjEwY2ViNWU1ZDdlMWE2MGQ5MWEzMDI5YmNhZS4u
MjgwNWRjZTk5YTE2OGRkMmZjMGVlYWIxMzBlY2VlNDJkMWZkMmE0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5j
cHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpm
aWx0ZXIoc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IE1lZGlhQ29uc3RyYWludAogICAgICAgICBy
ZXR1cm47CiB9CiAKLXZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNv
bnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxJbnRDb25zdHJhaW50PiYmIGNv
bnN0cmFpbnQpCit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0TWFwOjpzZXQoTWVkaWFDb25z
dHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiYm
IGNvbnN0cmFpbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJhaW50VHlwZSkgewogICAgIGNhc2Ug
TWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6CkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBNZWRp
YVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWlu
dFR5cGUsIE9wdGlvbmEKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRN
YXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxEb3Vi
bGVDb25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCit2b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0
TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25h
bDxEb3VibGVDb25zdHJhaW50PiYmIGNvbnN0cmFpbnQpCiB7CiAgICAgc3dpdGNoIChjb25zdHJh
aW50VHlwZSkgewogICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6QXNwZWN0UmF0aW86CkBA
IC0yNzUsNyArMjc1LDcgQEAgdm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1l
ZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIE9wdGlvbmEKICAgICB9CiB9CiAKLXZv
aWQgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlLCBPcHRpb25hbDxCb29sZWFuQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQor
dm9pZCBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUg
Y29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+JiYgY29uc3Ry
YWludCkKIHsKICAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CiAgICAgY2FzZSBNZWRpYUNv
bnN0cmFpbnRUeXBlOjpFY2hvQ2FuY2VsbGF0aW9uOgpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQg
TWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXA6OnNldChNZWRpYUNvbnN0cmFpbnRUeXBlIGNvbnN0
cmFpbnRUeXBlLCBPcHRpb25hCiAgICAgfQogfQogCi12b2lkIE1lZGlhVHJhY2tDb25zdHJhaW50
U2V0TWFwOjpzZXQoTWVkaWFDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSwgT3B0aW9uYWw8
U3RyaW5nQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQordm9pZCBNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldE1hcDo6c2V0KE1lZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nQ29uc3RyYWludD4mJiBjb25zdHJhaW50KQogewogICAgIHN3aXRjaCAoY29u
c3RyYWludFR5cGUpIHsKICAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZhY2luZ01vZGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzLmgKaW5kZXggOWRmYzIxYzQ4MjFhMTEyMWQ0NWVmMmE4OTE1YjIyOGEzOTQ2NGM0
MS4uMGU3MTkyMTVkZGFiYjdkZmY5MmM4YWIxZTU3YWYyZDY3ZDAwODBhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMu
aApAQCAtMzQxLDEwICszNDEsMTAgQEAgY2xhc3MgTnVtZXJpY0NvbnN0cmFpbnQgOiBwdWJsaWMg
TWVkaWFDb25zdHJhaW50IHsKICAgICAgICAgfQogICAgIH0KIAotICAgIE9wdGlvbmFsPFZhbHVl
VHlwZT4gbV9taW47Ci0gICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtX21heDsKLSAgICBPcHRpb25h
bDxWYWx1ZVR5cGU+IG1fZXhhY3Q7Ci0gICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtX2lkZWFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtX21pbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFZh
bHVlVHlwZT4gbV9tYXg7CisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IG1fZXhhY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IG1faWRlYWw7CiB9OwogCiBjbGFzcyBJbnRDb25z
dHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWNDb25zdHJhaW50PGludD4gewpAQCAtNDc0LDgg
KzQ3NCw4IEBAIGNsYXNzIEJvb2xlYW5Db25zdHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29u
c3RyYWludCB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPGJvb2w+IG1fZXhhY3Q7
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9pZGVhbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1f
ZXhhY3Q7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2lkZWFsOwogfTsKIAogY2xhc3MgU3Ry
aW5nQ29uc3RyYWludCA6IHB1YmxpYyBNZWRpYUNvbnN0cmFpbnQgewpAQCAtNTgzLDI1ICs1ODMs
MjUgQEAgY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRTZXRNYXAgewogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxJ
bnRDb25zdHJhaW50PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0
cmFpbnRUeXBlLCBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiYmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBPcHRpb25hbDxCb29sZWFuQ29uc3Ry
YWludD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXQoTWVkaWFDb25zdHJhaW50VHlw
ZSwgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXQoTWVkaWFDb25zdHJhaW50VHlwZSwgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldChNZWRpYUNvbnN0cmFpbnRUeXBlLCBzdGQ6
Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0ZDo6b3B0aW9uYWw8Qm9vbGVhbkNvbnN0cmFpbnQ+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0KE1lZGlhQ29uc3RyYWludFR5cGUsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4mJik7CiAKLSAgICBPcHRpb25hbDxJbnRDb25z
dHJhaW50PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICBPcHRpb25hbDxJ
bnRDb25zdHJhaW50PiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIE9w
dGlvbmFsPEludENvbnN0cmFpbnQ+IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZVJhdGU7IH0KLSAgICBPcHRpb25hbDxJbnRDb25zdHJhaW50PiBzYW1wbGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zYW1wbGVTaXplOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50
PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPElu
dENvbnN0cmFpbnQ+IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisgICAgc3Rk
OjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
YW1wbGVSYXRlOyB9CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBzYW1wbGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVTaXplOyB9CiAKLSAgICBPcHRpb25hbDxEb3VibGVD
b25zdHJhaW50PiBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXNwZWN0UmF0aW87IH0K
LSAgICBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lUmF0ZTsgfQotICAgIE9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IHZvbHVtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25z
dHJhaW50PiBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fYXNwZWN0UmF0aW87IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFpbnQ+IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVSYXRlOyB9CisgICAgc3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiB2
b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3ZvbHVtZTsgfQogCi0gICAgT3B0aW9uYWw8Qm9vbGVh
bkNvbnN0cmFpbnQ+IGVjaG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VjaG9DYW5j
ZWxsYXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEJvb2xlYW5Db25zdHJhaW50PiBlY2hvQ2Fu
Y2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lY2hvQ2FuY2VsbGF0aW9uOyB9CiAKLSAgICBP
cHRpb25hbDxTdHJpbmdDb25zdHJhaW50PiBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9m
YWNpbmdNb2RlOyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWlu
dD4gZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nQ29uc3RyYWludD4gZmFjaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjaW5n
TW9kZTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gZGV2aWNlSWQoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmdDb25z
dHJhaW50PiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICB7CkBAIC02NTMsMjAgKzY1MywyMCBAQCBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludFNl
dE1hcCB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1f
d2lkdGg7Ci0gICAgT3B0aW9uYWw8SW50Q29uc3RyYWludD4gbV9oZWlnaHQ7Ci0gICAgT3B0aW9u
YWw8SW50Q29uc3RyYWludD4gbV9zYW1wbGVSYXRlOwotICAgIE9wdGlvbmFsPEludENvbnN0cmFp
bnQ+IG1fc2FtcGxlU2l6ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1fd2lk
dGg7CisgICAgc3RkOjpvcHRpb25hbDxJbnRDb25zdHJhaW50PiBtX2hlaWdodDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IG1fc2FtcGxlUmF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEludENvbnN0cmFpbnQ+IG1fc2FtcGxlU2l6ZTsKIAotICAgIE9wdGlvbmFsPERvdWJsZUNvbnN0
cmFpbnQ+IG1fYXNwZWN0UmF0aW87Ci0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV9m
cmFtZVJhdGU7Ci0gICAgT3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV92b2x1bWU7CisgICAg
c3RkOjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiBtX2FzcGVjdFJhdGlvOworICAgIHN0ZDo6
b3B0aW9uYWw8RG91YmxlQ29uc3RyYWludD4gbV9mcmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25h
bDxEb3VibGVDb25zdHJhaW50PiBtX3ZvbHVtZTsKIAotICAgIE9wdGlvbmFsPEJvb2xlYW5Db25z
dHJhaW50PiBtX2VjaG9DYW5jZWxsYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxCb29sZWFuQ29u
c3RyYWludD4gbV9lY2hvQ2FuY2VsbGF0aW9uOwogCi0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3Ry
YWludD4gbV9mYWNpbmdNb2RlOwotICAgIE9wdGlvbmFsPFN0cmluZ0NvbnN0cmFpbnQ+IG1fZGV2
aWNlSWQ7Ci0gICAgT3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9ncm91cElkOworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9mYWNpbmdNb2RlOworICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nQ29uc3RyYWludD4gbV9kZXZpY2VJZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZ0NvbnN0cmFpbnQ+IG1fZ3JvdXBJZDsKIH07CiAKIGNsYXNzIEZsYXR0ZW5lZENvbnN0cmFp
bnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCA3N2QxZmEwZTJiNWFmOTM5NzAxOGNiMjZh
MGNjYzE2OWFiYzE0ZTdlLi4xOTA4NmNmOTAxNDQzNGY0ZWNmOTkyMjA0ODdhMzEwMzAxOTUxNDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtMTUwLDEzICsxNTAsMTMgQEAgdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQog
ICAgIHN0b3AoY2FsbGluZ09ic2VydmVyKTsKIH0KIAotYm9vbCBSZWFsdGltZU1lZGlhU291cmNl
OjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50PiwgT3B0aW9uYWw8aW50Piwg
T3B0aW9uYWw8ZG91YmxlPikKK2Jvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXpl
QW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4pCiB7CiAgICAgLy8gVGhlIHNpemUgYW5kIGZyYW1lIHJhdGUgYXJl
IHdpdGhpbiB0aGUgY2FwYWJpbGl0eSBsaW1pdHMsIHNvIHRoZXkgYXJlIHN1cHBvcnRlZC4KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1Np
emVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWludD4gd2lkdGhDb25zdHJhaW50LCBP
cHRpb25hbDxJbnRDb25zdHJhaW50PiBoZWlnaHRDb25zdHJhaW50LCBPcHRpb25hbDxEb3VibGVD
b25zdHJhaW50PiBmcmFtZVJhdGVDb25zdHJhaW50LCBTdHJpbmcmIGJhZENvbnN0cmFpbnQpCiti
b29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9w
dGlvbmFsPEludENvbnN0cmFpbnQ+IHdpZHRoQ29uc3RyYWludCwgc3RkOjpvcHRpb25hbDxJbnRD
b25zdHJhaW50PiBoZWlnaHRDb25zdHJhaW50LCBzdGQ6Om9wdGlvbmFsPERvdWJsZUNvbnN0cmFp
bnQ+IGZyYW1lUmF0ZUNvbnN0cmFpbnQsIFN0cmluZyYgYmFkQ29uc3RyYWludCkKIHsKICAgICBp
ZiAoIXdpZHRoQ29uc3RyYWludCAmJiAhaGVpZ2h0Q29uc3RyYWludCAmJiAhZnJhbWVSYXRlQ29u
c3RyYWludCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50
Q29uc3RyYWludD4gd2lkdGgKICAgICBBU1NFUlQodGhpcy0+Y2FwYWJpbGl0aWVzKCkpOwogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcyA9ICp0aGlzLT5j
YXBhYmlsaXRpZXMoKTsKIAotICAgIE9wdGlvbmFsPGludD4gd2lkdGg7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IHdpZHRoOwogICAgIGlmICh3aWR0aENvbnN0cmFpbnQgJiYgY2FwYWJpbGl0aWVz
LnN1cHBvcnRzV2lkdGgoKSkgewogICAgICAgICBpZiAoc3RkOjppc2luZihmaXRuZXNzRGlzdGFu
Y2UoKndpZHRoQ29uc3RyYWludCkpKSB7CiAgICAgICAgICAgICBiYWRDb25zdHJhaW50ID0gd2lk
dGhDb25zdHJhaW50LT5uYW1lKCk7CkBAIC0xNzUsNyArMTc1LDcgQEAgYm9vbCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8SW50Q29uc3RyYWlu
dD4gd2lkdGgKICAgICAgICAgd2lkdGggPSB3aWR0aENvbnN0cmFpbnQtPnZhbHVlRm9yQ2FwYWJp
bGl0eVJhbmdlKHNpemUoKS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5y
YW5nZU1heCgpLmFzSW50KTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxpbnQ+IGhlaWdodDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0OwogICAgIGlmIChoZWlnaHRDb25zdHJhaW50ICYm
IGNhcGFiaWxpdGllcy5zdXBwb3J0c0hlaWdodCgpKSB7CiAgICAgICAgIGlmIChzdGQ6OmlzaW5m
KGZpdG5lc3NEaXN0YW5jZSgqaGVpZ2h0Q29uc3RyYWludCkpKSB7CiAgICAgICAgICAgICBiYWRD
b25zdHJhaW50ID0gaGVpZ2h0Q29uc3RyYWludC0+bmFtZSgpOwpAQCAtMTg2LDcgKzE4Niw3IEBA
IGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKE9wdGlv
bmFsPEludENvbnN0cmFpbnQ+IHdpZHRoCiAgICAgICAgIGhlaWdodCA9IGhlaWdodENvbnN0cmFp
bnQtPnZhbHVlRm9yQ2FwYWJpbGl0eVJhbmdlKHNpemUoKS5oZWlnaHQoKSwgcmFuZ2UucmFuZ2VN
aW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CiAgICAgfQogCi0gICAgT3B0aW9u
YWw8ZG91YmxlPiBmcmFtZVJhdGU7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0
ZTsKICAgICBpZiAoZnJhbWVSYXRlQ29uc3RyYWludCAmJiBjYXBhYmlsaXRpZXMuc3VwcG9ydHNG
cmFtZVJhdGUoKSkgewogICAgICAgICBpZiAoc3RkOjppc2luZihmaXRuZXNzRGlzdGFuY2UoKmZy
YW1lUmF0ZUNvbnN0cmFpbnQpKSkgewogICAgICAgICAgICAgYmFkQ29uc3RyYWludCA9IGZyYW1l
UmF0ZUNvbnN0cmFpbnQtPm5hbWUoKTsKQEAgLTM0NSw3ICszNDUsNyBAQCBzdGF0aWMgdm9pZCBh
cHBseU51bWVyaWNDb25zdHJhaW50KGNvbnN0IE51bWVyaWNDb25zdHJhaW50PFZhbHVlVHlwZT4m
IGNvbnN0cmFpbgogICAgICAgICAoc291cmNlLT4qYXBwbGllcikodmFsdWUpOwogfQogCi12b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+
IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUp
Cit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9w
dGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBmcmFtZVJhdGUpCiB7CiAgICAgaWYgKHdpZHRoKQogICAgICAgICBzZXRXaWR0
aCh3aWR0aC52YWx1ZSgpKTsKQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3RyYWludCYgY29uc3Ry
YWludAogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVz
ID0gKnRoaXMtPmNhcGFiaWxpdGllcygpOwogCi0gICAgT3B0aW9uYWw8aW50PiB3aWR0aDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGg7CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dCogY29uc3RyYWludCA9IGNvbnN0cmFpbnRzLmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZTo6V2lk
dGgpKSB7CiAgICAgICAgIEFTU0VSVChjb25zdHJhaW50LT5pc0ludCgpKTsKICAgICAgICAgaWYg
KGNhcGFiaWxpdGllcy5zdXBwb3J0c1dpZHRoKCkpIHsKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29u
c3RyYWludCYgY29uc3RyYWludAogICAgICAgICB9CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50
PiBoZWlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodDsKICAgICBpZiAoY29uc3Qg
TWVkaWFDb25zdHJhaW50KiBjb25zdHJhaW50ID0gY29uc3RyYWludHMuZmluZChNZWRpYUNvbnN0
cmFpbnRUeXBlOjpIZWlnaHQpKSB7CiAgICAgICAgIEFTU0VSVChjb25zdHJhaW50LT5pc0ludCgp
KTsKICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5zdXBwb3J0c0hlaWdodCgpKSB7CkBAIC02MDcs
NyArNjA3LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKGNv
bnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmIGNvbnN0cmFpbnQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBmcmFtZVJhdGU7CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29uc3RyYWludCogY29uc3RyYWludCA9
IGNvbnN0cmFpbnRzLmZpbmQoTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlKSkgewogICAg
ICAgICBBU1NFUlQoY29uc3RyYWludC0+aXNEb3VibGUoKSk7CiAgICAgICAgIGlmIChjYXBhYmls
aXRpZXMuc3VwcG9ydHNGcmFtZVJhdGUoKSkgewpAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJh
aW50JiBjb25zdHJhaW50CiAgICAgY29tbWl0Q29uZmlndXJhdGlvbigpOwogfQogCi1PcHRpb25h
bDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNv
bnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQorc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBSZWFsdGltZU1lZGlhU291cmNlOjphcHBs
eUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQogewogICAg
IEFTU0VSVChjb25zdHJhaW50cy5pc1ZhbGlkKCkpOwogCkBAIC02MzgsNyArNjM4LDcgQEAgT3B0
aW9uYWw8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBw
bHlDb25zdHJhaW50cyhjb25zdAogICAgICAgICByZXR1cm4geyB7IGZhaWxlZENvbnN0cmFpbnQs
IEFTQ0lJTGl0ZXJhbCgiQ29uc3RyYWludCBub3Qgc3VwcG9ydGVkIikgfSB9OwogCiAgICAgYXBw
bHlDb25zdHJhaW50cyhjYW5kaWRhdGVzKTsKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIFN1Y2Nlc3NIYW5k
bGVyIHN1Y2Nlc3NIYW5kbGVyLCBGYWlsdXJlSGFuZGxlciBmYWlsdXJlSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuaAppbmRleCAyYjMwNDZjNTdlMjc1NTMwOGEyNjI1YTQwYjM5M2Y2ZDE2YmM0MGJi
Li5lNmFhOWY3NGNkZTYyNzk2MjlkMTVjZjJmNzZjOGRjN2Y4OTkwNWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZS5oCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxSZWFsdGltZU1lZGlhU291cmNlPiB7CiAgICAgdXNpbmcgU3VjY2Vzc0hh
bmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdXNpbmcgRmFpbHVyZUhhbmRsZXIg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBiYWRDb25zdHJhaW50LCBjb25zdCBT
dHJpbmcmIGVycm9yU3RyaW5nKT47CiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMmLCBTdWNjZXNzSGFuZGxlciwgRmFpbHVyZUhhbmRsZXIpOwotICAgIE9w
dGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGFwcGx5Q29uc3RyYWludHMoY29uc3Qg
TWVkaWFDb25zdHJhaW50cyYpOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRz
JiwgU3RyaW5nJik7CiAKQEAgLTE3NCwxMSArMTc0LDExIEBAIGNsYXNzIFJlYWx0aW1lTWVkaWFT
b3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFsdGltZU1lZGlhU291cmNlPiB7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0U2V0dGluZ3MoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIEZsYXR0
ZW5lZENvbnN0cmFpbnQmLCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBmaXRuZXNzRGlz
dGFuY2UoY29uc3QgTWVkaWFDb25zdHJhaW50Jik7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRz
U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxJbnRDb25zdHJhaW50PiB3aWR0aCwgT3B0aW9uYWw8
SW50Q29uc3RyYWludD4gaGVpZ2h0LCBPcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiwgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxp
bnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPEludENv
bnN0cmFpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPEludENvbnN0cmFpbnQ+IGhlaWdodCwgc3Rk
OjpvcHRpb25hbDxEb3VibGVDb25zdHJhaW50PiwgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPik7CiAgICAgdmlydHVh
bCB2b2lkIGFwcGx5Q29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKTsKICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRo
LCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPik7CisgICAgdmlydHVhbCB2
b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPik7CiAKICAgICBib29s
IG1fbXV0ZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDY3
Y2RiZTgwMjc0ZmZkYmRhMDdmMTRhNWQwZmFhYjNkNGU5YmFmYTQuLmI3MmVjYjQ0OWJkYjIzMjU1
MDRlODMyNDlmN2I3MDg5NTRhZGE3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBA
IC01OSwxMyArNTksMTMgQEAgY2xhc3MgQVZWaWRlb0NhcHR1cmVTb3VyY2UgOiBwdWJsaWMgQVZN
ZWRpYUNhcHR1cmVTb3VyY2UgewogCiAgICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbDsKIAotICAgIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVS
YXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxk
b3VibGU+KSBmaW5hbDsKKyAgICB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlv
bmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPikgZmluYWw7CiAgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFs
OwogICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSBmaW5hbDsKICAgICBib29sIHNldFBy
ZXNldChOU1N0cmluZyopOwogCi0gICAgTlNTdHJpbmcgKmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlk
ZW9EaW1lbnNpb25zKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0KSBj
b25zdDsKLSAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdp
ZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CisgICAg
TlNTdHJpbmcgKmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHN0ZDo6b3B0aW9u
YWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCkgY29uc3Q7CisgICAgYm9v
bCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6
Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogCiAg
ICAgdm9pZCBpbml0aWFsaXplQ2FwYWJpbGl0aWVzKFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmKSBmaW5hbDsKICAgICB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCA3ZDM2MTQ1MGE0OWE1ZTg3NzhhMzg2NTE2NWZmN2E5
Y2UzNDcxZDI4Li5lZjVlNDVjOTAzMWQ5NjIzYmNmMjQ3Yzg4ZjU4ZDRmMTgzMWIyNmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoZG91YmxlIHJhdGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1l
UmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8
ZG91YmxlPiBmcmFtZVJhdGUpCit2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemVB
bmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4g
aGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQogewogICAgIHNldFByZXNl
dChiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhXVEZNb3ZlKHdpZHRoKSwgV1RG
TW92ZShoZWlnaHQpKSk7CiAKQEAgLTU0MSw3ICs1NDEsNyBAQCBSZWZQdHI8QVZNZWRpYVNvdXJj
ZVByZXZpZXc+IEFWVmlkZW9DYXB0dXJlU291cmNlOjpjcmVhdGVQcmV2aWV3KCkKICAgICByZXR1
cm4gQVZWaWRlb1NvdXJjZVByZXZpZXc6OmNyZWF0ZShzZXNzaW9uKCksIGRldmljZSgpLCB0aGlz
KTsKIH0KIAotTlNTdHJpbmcgKkFWVmlkZW9DYXB0dXJlU291cmNlOjpiZXN0U2Vzc2lvblByZXNl
dEZvclZpZGVvRGltZW5zaW9ucyhPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhl
aWdodCkgY29uc3QKK05TU3RyaW5nICpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YmVzdFNlc3Npb25Q
cmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9w
dGlvbmFsPGludD4gaGVpZ2h0KSBjb25zdAogewogICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTU2NSw3ICs1NjUsNyBAQCBOU1N0cmluZyAqQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKE9wdGlv
bmFsPGludAogICAgIHJldHVybiBuaWw7CiB9CiAKLWJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6
OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxp
bnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCitib29sIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJh
bWVSYXRlKQogewogICAgIGlmICghaGVpZ2h0ICYmICF3aWR0aCAmJiAhZnJhbWVSYXRlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmgKaW5kZXgg
YzMzOTZlNzE4ZmU0NzAzYWQwY2M1NTcxOGEyZWIzZTJjMzBhYzIxYi4uZjMxMDQ4YzllY2ZlZWUz
NTBhYzI5ZjYyMjFhY2QwYzJlYWRiOTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50
T3dyLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBjbGFzcyBNZWRpYUVuZHBvaW50T3dyIDogcHVibGlj
IE1lZGlhRW5kcG9pbnQgewogICAgIHZvaWQgZW5zdXJlVHJhbnNwb3J0QWdlbnRBbmRUcmFuc2Nl
aXZlcnMoYm9vbCBpc0luaXRpYXRvciwgY29uc3QgVmVjdG9yPFRyYW5zY2VpdmVyQ29uZmlnPiYp
OwogICAgIHZvaWQgaW50ZXJuYWxBZGRSZW1vdGVDYW5kaWRhdGUoT3dyU2Vzc2lvbiosIGNvbnN0
IEljZUNhbmRpZGF0ZSYsIGNvbnN0IFN0cmluZyYgdWZyYWcsIGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQpOwogCi0gICAgT3B0aW9uYWw8TWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24+IG1fY29uZmln
dXJhdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uPiBt
X2NvbmZpZ3VyYXRpb247CiAgICAgR1JlZ2V4KiBtX2hlbHBlclNlcnZlclJlZ0V4OwogCiAgICAg
T3dyVHJhbnNwb3J0QWdlbnQqIG1fdHJhbnNwb3J0QWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggMWYxYzM4MDU1
NTExMWY0NGExZjFlN2U2ZTAzMmEyNzMwZGQ5NGJmZC4uYjM4ZTcwNzIwMjM4ZTBjOGVlN2VjYjBk
ZWI5MDZjMmExYjI1NjU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHMgY29tcHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIHN0CiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRoYXQg
aXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZS4KICAgICBhdXRvIGRhdGVWYWx1
ZSA9IHJlc3BvbnNlLmRhdGUoKTsKICAgICBhdXRvIGFwcGFyZW50QWdlID0gZGF0ZVZhbHVlID8g
c3RkOjptYXgoMHVzLCBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4ocmVzcG9uc2VUaW1lIC0g
KmRhdGVWYWx1ZSkpIDogMHVzOwotICAgIGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52
YWx1ZU9yKDB1cyk7CisgICAgYXV0byBhZ2VWYWx1ZSA9IHJlc3BvbnNlLmFnZSgpLnZhbHVlX29y
KDB1cyk7CiAgICAgYXV0byBjb3JyZWN0ZWRJbml0aWFsQWdlID0gc3RkOjptYXgoYXBwYXJlbnRB
Z2UsIGFnZVZhbHVlKTsKICAgICBhdXRvIHJlc2lkZW50VGltZSA9IGR1cmF0aW9uX2Nhc3Q8bWlj
cm9zZWNvbmRzPihzeXN0ZW1fY2xvY2s6Om5vdygpIC0gcmVzcG9uc2VUaW1lKTsKICAgICByZXR1
cm4gY29ycmVjdGVkSW5pdGlhbEFnZSArIHJlc2lkZW50VGltZTsKQEAgLTEyMiw3ICsxMjIsNyBA
QCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhU
VFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICByZXR1cm4gKm1heEFnZTsKIAogICAg
IGF1dG8gZGF0ZSA9IHJlc3BvbnNlLmRhdGUoKTsKLSAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBk
YXRlLnZhbHVlT3IocmVzcG9uc2VUaW1lKTsKKyAgICBhdXRvIGVmZmVjdGl2ZURhdGUgPSBkYXRl
LnZhbHVlX29yKHJlc3BvbnNlVGltZSk7CiAgICAgaWYgKGF1dG8gZXhwaXJlcyA9IHJlc3BvbnNl
LmV4cGlyZXMoKSkKICAgICAgICAgcmV0dXJuIGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPigq
ZXhwaXJlcyAtIGVmZmVjdGl2ZURhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uaAppbmRleCBkMzc2ZWJjMTU4YmFmNGE2Y2Q3ZTdj
OTM3MGYxNTI0MGU3YzhiZWFmLi4xYmJiZWRlZDY1NmI3NzQ1Yjg4Y2ZmYzZjNTc0MjdmZGRiYWEz
NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFs
aWRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxp
ZGF0aW9uLmgKQEAgLTYxLDggKzYxLDggQEAgZW51bSBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9y
Tm90IHsgRG9Ob3RSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbiwgUmV1c2VFeHBpcmVkUmUKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgcmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKFJlZGlyZWN0Q2hhaW5DYWNo
ZVN0YXR1cywgUmV1c2VFeHBpcmVkUmVkaXJlY3Rpb25Pck5vdCk7CiAKIHN0cnVjdCBDYWNoZUNv
bnRyb2xEaXJlY3RpdmVzIHsKLSAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
PiBtYXhBZ2U7Ci0gICAgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3Rh
bGU7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhBZ2U7
CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFsZTsK
ICAgICBib29sIG5vQ2FjaGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbm9TdG9yZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtdXN0UmV2YWxpZGF0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggODkwMWM3MzMwNTEwN2Jl
YTgxM2Q4ZDlhNDE2NDQ5MmMxOTBkMDU0OS4uZTVkYjE1NDI2Njg3NDQyODVjNWM4ZDFjMzNiYWU1
MmRlOTZiZmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgUmVzdWx0IHsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAotdXNpbmcgRGVjb2RlQ29tcGxldGlvbkhhbmRs
ZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFJlc3VsdD4pPjsKK3VzaW5nIERlY29k
ZUNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFJl
c3VsdD4pPjsKIHN0cnVjdCBTY2hlZHVsZUNvbnRleHQgewogI2lmIEhBVkUoUlVOTE9PUF9USU1F
UikKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVkdWxlZFBhaXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCAxNDk1YTZjOTI0
ZWIzMWUwNGRkZmRjNWVjZWRkYmNkNWM5OTY4MzBkLi42NDU1OWUxMjVjNjE1N2I1M2FhNTU1MTMw
YzZkMTA0YWM0NmQzMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBIVFRQSGVhZGVyTWFwIHsK
IAogICAgICAgICBzdHJ1Y3QgS2V5VmFsdWUgewogICAgICAgICAgICAgU3RyaW5nIGtleTsKLSAg
ICAgICAgICAgIE9wdGlvbmFsPEhUVFBIZWFkZXJOYW1lPiBrZXlBc0hUVFBIZWFkZXJOYW1lOwor
ICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxIVFRQSGVhZGVyTmFtZT4ga2V5QXNIVFRQSGVhZGVy
TmFtZTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKICAgICAgICAgfTsKIApAQCAtOTksNyAr
OTksNyBAQCBjbGFzcyBIVFRQSGVhZGVyTWFwIHsKICAgICAgICAgICAgIGlmIChpdCA9PSBtX3Rh
YmxlLnVuY29tbW9uSGVhZGVycygpLmVuZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIG1fa2V5VmFsdWUua2V5ID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1f
a2V5VmFsdWUua2V5QXNIVFRQSGVhZGVyTmFtZSA9IE51bGxvcHQ7CisgICAgICAgICAgICBtX2tl
eVZhbHVlLmtleUFzSFRUUEhlYWRlck5hbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBt
X2tleVZhbHVlLnZhbHVlID0gaXQtPnZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5jcHAKaW5kZXggNWZlZDM4OTU3NzM3MGQ4NmFkZGZiZmQxYWFkNDI2MmFjZDFiM2U3Yi4uNDky
OGEzNWU4YWI3MTg2OTQxNTI2OGJlNWU4MTM4YWRmYTMyNzZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNoLCBkb3VibGUmIGRl
bGF5LCBTdHJpbmcmIHVybCkKICAgICB9CiB9CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3N0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFy
c2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGRvdWJsZSBkYXRlSW5NaWxs
aXNlY29uZHNTaW5jZUVwb2NoID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVy
cyh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWls
bGlzZWNvbmRzU2luY2VFcG9jaCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmgKaW5kZXggN2Y2YjQyNmFjMDk1Y2Q5NTY4YmFlOTRjNzMzZDJlMzM5Mjgz
ZjBlOS4uZGVjYzFiMDNiYjUwN2Y3NDg0YmMxYTljMDQ4Y2IxZTc2MzdiN2U1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApAQCAtNzEsNyArNzEs
NyBAQCBib29sIGlzVmFsaWRSZWFzb25QaHJhc2UoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFs
aWRIVFRQSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzVmFsaWRIVFRQVG9rZW4o
Y29uc3QgU3RyaW5nJik7CiBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZy
ZXNoLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCk7Ci1PcHRpb25hbDxzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOwor
c3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJz
ZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOwogU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50
RGlzcG9zaXRpb24oY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1l
ZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5
cGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDQ3NzNkZWQ3ZjRlMWU3ODQxOWY4NGZmNDYxOGE1
ZDlmNWI1ZmE2ZTkuLjY0N2Y2MDQxOWJmY2QwZmVlNjM3NWQ5ZDE4ODA3NjU5MmExZjkyMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
Y3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKIHsKICAgICBpZiAocmVzcG9uc2Uu
aXNIdHRwVmVyc2lvbjBfOSgpKSB7CiAgICAgICAgIGF1dG8gdXJsID0gcmVzcG9uc2UudXJsKCk7
Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJsLnBvcnQoKTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0KCk7CiAgICAgICAgIGlmIChw
b3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCB1cmwucHJvdG9j
b2woKSkpIHsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSAiQ2FuY2VsbGVkIGxvYWQgZnJvbSAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgaXMgdXNpbmcgSFRUUC8wLjkuIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAKaW5kZXggMmMxMjI3OGQ1YWYwY2M3ODEwM2I2YjFlYTM4ZTk4MWUyZGU3NDg2MC4uZmE0
NThhMjRkZmMwZWEyNjA5MGM5MDNkNWY3YWQwN2NjZmRlMmQ5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
QEAgLTQzMywxNCArNDMzLDE0IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omhhc0NhY2hl
VmFsaWRhdG9yRmllbGRzKCkgY29uc3QKICAgICByZXR1cm4gIW1faHR0cEhlYWRlckZpZWxkcy5n
ZXQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCkuaXNFbXB0eSgpIHx8ICFtX2h0dHBIZWFk
ZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpFVGFnKS5pc0VtcHR5KCk7CiB9CiAKLU9wdGlv
bmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjYWNo
ZUNvbnRyb2xNYXhBZ2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9z
ZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1faGF2ZVBhcnNlZENhY2hlQ29udHJvbEhlYWRlcikKICAgICAgICAgcGFy
c2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKCk7CiAgICAgcmV0dXJuIG1fY2FjaGVDb250cm9sRGly
ZWN0aXZlcy5tYXhBZ2U7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZURhdGVW
YWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJOYW1l
IGhlYWRlck5hbWUpCiB7CiAgICAgU3RyaW5nIGhlYWRlclZhbHVlID0gaGVhZGVycy5nZXQoaGVh
ZGVyTmFtZSk7CiAgICAgaWYgKGhlYWRlclZhbHVlLmlzRW1wdHkoKSkKQEAgLTQ1Miw3ICs0NTIs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dD4gcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihjbwogICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhl
YWRlclZhbHVlKTsKIH0KIAotT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRhdGUoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZGF0ZSgpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAK
QEAgLTQ2Myw3ICs0NjMsNyBAQCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSgpIGNvbgogICAgIHJldHVybiBt
X2RhdGU7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNl
UmVzcG9uc2VCYXNlOjphZ2UoKSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QKIHsKICAgICB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CiAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29u
c3QKICAgICByZXR1cm4gbV9hZ2U7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1v
bkZpZWxkc09ubHkpOwogCkBAIC00OTEsNyArNDkxLDcgQEAgT3B0aW9uYWw8c3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMo
KQogICAgIHJldHVybiBtX2V4cGlyZXM7CiB9CiAKLU9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQo
KSBjb25zdAorc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKIHsKICAgICBs
YXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNTAyLDcgKzUwMiw3IEBAIE9wdGlvbmFs
PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpsYXN0TW9kaWZpCiAgICAgICAgIC8vIGFuIGludmFsaWQgdmFsdWUgKHJkYXI6Ly9wcm9i
bGVtLzIyMzUyODM4KS4KICAgICAgICAgY29uc3Qgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCBlcG9jaDsKICAgICAgICAgaWYgKG1fbGFzdE1vZGlmaWVkICYmIG1fbGFzdE1v
ZGlmaWVkLnZhbHVlKCkgPT0gZXBvY2gpCi0gICAgICAgICAgICBtX2xhc3RNb2RpZmllZCA9IE51
bGxvcHQ7CisgICAgICAgICAgICBtX2xhc3RNb2RpZmllZCA9IHN0ZDo6bnVsbG9wdDsKICNlbmRp
ZgogICAgICAgICBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIgPSB0cnVlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuaAppbmRleCBmM2QyODgxZWRiZmEyYjY2NTUwNGQzYmU5ZGM5ODM1ZmE1N2QxYzU1
Li45ZDIyZjRmZjExMjJhYjhiMzNhMDBkZDdkYzljZmE0NmVjODY0YjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
CkBAIC0xMTUsNyArMTE1LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7Ci0gICAgY29u
c3QgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH07CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0
aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmlj
YXRlSW5mbzsgfTsKICAgICAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHBhcnNlZCB2
YWx1ZXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaGVhZGVycy4KICAgICAvLyBOYU4g
bWVhbnMgdGhhdCB0aGUgaGVhZGVyIHdhcyBub3QgcHJlc2VudCBvciBoYWQgaW52YWxpZCB2YWx1
ZS4KQEAgLTEyMywxMSArMTIzLDExIEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxp
ZGF0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQ2FjaGVWYWxpZGF0b3JG
aWVsZHMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzPiBjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBkYXRl
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jv
c2Vjb25kcz4gYWdlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZXhwaXJlcygpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQ+IGxhc3RNb2RpZmllZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gY2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50PiBkYXRlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBhZ2UoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ+IGV4cGlyZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGxhc3RNb2RpZmllZCgpIGNv
bnN0OwogICAgIFBhcnNlZENvbnRlbnRSYW5nZSYgY29udGVudFJhbmdlKCkgY29uc3Q7CiAKICAg
ICAvLyBUaGlzIGlzIHByaW1hcmlseSBmb3IgdGVzdGluZyBzdXBwb3J0LiBJdCBpcyBub3QgbmVj
ZXNzYXJpbHkgYWNjdXJhdGUgaW4gYWxsIHNjZW5hcmlvcy4KQEAgLTE4OSwxNSArMTg5LDE1IEBA
IGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhl
YWRlckZpZWxkczsKICAgICBtdXRhYmxlIE5ldHdvcmtMb2FkVGltaW5nIG1fbmV0d29ya0xvYWRU
aW1pbmc7CiAKLSAgICBtdXRhYmxlIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZp
Y2F0ZUluZm87CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9j
ZXJ0aWZpY2F0ZUluZm87CiAKICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZTsKIAogcHJpdmF0ZToK
LSAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1fYWdlOwot
ICAgIG11dGFibGUgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dD4gbV9kYXRlOwotICAgIG11dGFibGUgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludD4gbV9leHBpcmVzOwotICAgIG11dGFibGUgT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gbV9sYXN0TW9kaWZpZWQ7CisgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1fYWdlOworICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
PiBtX2RhdGU7CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJlczsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gbV9sYXN0TW9kaWZpZWQ7CiAg
ICAgbXV0YWJsZSBQYXJzZWRDb250ZW50UmFuZ2UgbV9jb250ZW50UmFuZ2U7CiAgICAgbXV0YWJs
ZSBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIG1fY2FjaGVDb250cm9sRGlyZWN0aXZlczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
LmgKaW5kZXggYTJkYmI5Y2U5NGJkNmRlY2RmNjg1NjY5ZGMyM2VlMTYzYmJkMTJkMy4uZmJhZDY0
MTk1YWJkZTMwODc5Zjk4MGE4YTI3ZWNjNDg1N2E5MDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC01NCw3ICs1
NCw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+IHsKICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
VVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKICAgICBib29sIHNlbmRQZW5kaW5n
RGF0YSgpOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSA9IDA7CiAKICAgICBVUkwgbV91
cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaAppbmRleCA0YzQyZDg1YmNmNmM0ODRmNjMyODg4OTdmYmIz
NDNjNThjNzM4YWMyLi5lMjZiOWE2MjNjMzBiZGUzOGFkOTg3Y2UzM2U1MjNjOTZlYzNlNTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50IHsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFNv
Y2tldFN0cmVhbUhhbmRsZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VTb2NrZXRT
dHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBjaGFyKiBkYXRh
LCBPcHRpb25hbDxzaXplX3Q+IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUmLCBjb25zdCBjaGFyKiBkYXRh
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KFNvY2tldFN0cmVhbUhhbmRsZSYsIHNpemVfdCBidWZmZXJl
ZEFtb3VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tl
dFN0cmVhbUhhbmRsZSYsIGNvbnN0IFNvY2tldFN0cmVhbUVycm9yJikgPSAwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmgKaW5kZXggODc2Y2YyNDFmODYyY2M2ZmRiZDFhN2E1ZmVmMjhiZGFiZmJj
Zjc1Ny4uNGVkZDM5MGRjYjg5NmYxMGEzYzU2MDkwM2QyZWQ5MjdiYTc5YWQ2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogICAgIHZpcnR1YWwgflNvY2tldFN0
cmVhbUhhbmRsZUltcGwoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPHNpemVf
dD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQmLCBTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ0ZOZXQuY3BwCmluZGV4IGJhMzljZGIxNzQ0MTRjYWFlYjk2YTZkZDQ1NTViYjE4NDFlYzNk
M2EuLmNjYjE0ZWExYjIwNzY5NzZlMmM1YTdmNGQzNmQxMmY3ODg0NWNkZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OnJlYWRTdHJlYW1DYWxsYmFjayhDRlN0cmVhbUV2ZW50VHlwZSB0
eXBlKQogICAgICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBPcHRpb25hbDxzaXplX3Q+IG9wdGlvbmFsTGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gb3B0aW9uYWxMZW5ndGg7CiAgICAgICAgIGlmIChsZW5ndGggIT0gLTEpCiAgICAg
ICAgICAgICBvcHRpb25hbExlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgCkBAIC02NTMsMTQgKzY1
MywxNCBAQCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjp+U29ja2V0U3RyZWFtSGFuZGxlSW1wbCgp
CiAgICAgQVNTRVJUKCFtX3BhY1J1bkxvb3BTb3VyY2UpOwogfQogCi1PcHRpb25hbDxzaXplX3Q+
IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQorc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IGlmICghQ0ZXcml0ZVN0cmVhbUNhbkFjY2VwdEJ5dGVzKG1fd3JpdGVTdHJlYW0uZ2V0KCkpKQot
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIENGSW5kZXggcmVzdWx0ID0gQ0ZXcml0ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgbGVuZ3RoKTsKICAgICBp
ZiAocmVzdWx0ID09IC0xKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChyZXN1bHQgPj0gMCk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHNpemVfdD4ocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4
IDc1NGEyMzZiNGVjODcwN2I0Y2ViZmVhODc5ZWNiOTE2NmZjM2MxNTUuLjYyNjQ4MGZkYjI3NjBj
N2I5MDA0N2Q5NjNhOGRhYWQwNDY5ZDFiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApA
QCAtNTcsNyArNTcsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDogcHVibGljIFNv
Y2tldFN0cmVhbUhhbmRsZSB7CiBwcml2YXRlOgogICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGwo
Y29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Jik7CiAKLSAgICBPcHRpb25hbDxz
aXplX3Q+IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSBmaW5h
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZpbmFs
OwogCiAgICAgYm9vbCByZWFkRGF0YShDVVJMKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDdXJsLmNwcAppbmRleCA1N2E2YTczZDRlMDdkZGZjYTE2MDBjMTlkMmM1MzEyYTIyY2JhYjYz
Li5lOTRmODRhNjgyMzM5NTJkNGMyYzY1MmM2YjJhZmYyNWQyNjZkYzZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhhbmRsZUltcGwoKQogICAgIEFTU0VSVCghbV93b3Jr
ZXJUaHJlYWQpOwogfQogCi1PcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorc3RkOjpvcHRp
b25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIHBsYXRmb3JtU2VuZCIsIHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KaW5kZXggYTRjZGFkZmI5
NmQxNWY5MDllM2M5YzM3MmYxNDljYzkyZDZmOTQ0Ni4uYzdjYzBmMDliYjI1NDU4NWRkOWE3ZjU5
ZDM1NDIyZDYxYjBlZjI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvQ29va2llSmFyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBOU0Fy
cmF5ICpjb29raWVzSW5QYXJ0aXRpb25Gb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjCiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBbTlNIVFRQQ29va2llU3RvcmFn
ZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CiAKICAgICAvLyBUaGUgX2dldENvb2tpZXNGb3JV
Ukw6IG1ldGhvZCBjYWxscyB0aGUgY29tcGxldGlvbkhhbmRsZXIgc3luY2hyb25vdXNseS4KLSAg
ICBPcHRpb25hbDxSZXRhaW5QdHI8TlNBcnJheSAqPj4gY29va2llc1B0cjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJldGFpblB0cjxOU0FycmF5ICo+PiBjb29raWVzUHRyOwogICAgIFtjb29raWVTdG9y
YWdlIF9nZXRDb29raWVzRm9yVVJMOnVybCBtYWluRG9jdW1lbnRVUkw6Zmlyc3RQYXJ0eSBwYXJ0
aXRpb246cGFydGl0aW9uIGNvbXBsZXRpb25IYW5kbGVyOlsmY29va2llc1B0cl0oTlNBcnJheSAq
Y29va2llcykgewogICAgICAgICBjb29raWVzUHRyID0gcmV0YWluUHRyKGNvb2tpZXMpOwogICAg
IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggN2YwMzg0NmVjODRmMDU0NzNlNWQ1
NWI5ZGE0NGU5YzgwYjY2NThjYi4uNTgxMGQ5YmM5N2Y0NzI5M2MwMzY3YTFlYjI5NGJmN2IzMjM3
MjFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNz
IFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmluYWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxl
IHsKIHByaXZhdGU6CiAgICAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBVUkwmLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQmKTsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gcGxhdGZvcm1T
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgZmluYWw7CiAKICAgICB2b2lkIGJl
Z2luV2FpdGluZ0ZvclNvY2tldFdyaXRhYmlsaXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxTb3VwLmNwcAppbmRleCAwODdkYWZkYTQ5MzJlZjA0YTk1NzM0M2IwOWE3ZWFlOGJjMTdi
OTk1Li4yNDExMzIzMGYzOGRkN2RmZDBmZjIyZTJmOTQ3NzUxOTE5NTYxOTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWRCeXRlcyhnc3NpemUgYnl0ZXNSZWFkKQogCiAgICAg
Ly8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGhhbmRsZSwgcG90ZW50aWFsbHkgcmVtb3Zpbmcg
dGhlIGxhc3QgcmVmZXJlbmNlLgogICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IHByb3Rl
Y3RlZFRoaXModGhpcyk7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBvcHRpb25hbExlbmd0aDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gb3B0aW9uYWxMZW5ndGg7CiAgICAgaWYgKGJ5dGVzUmVh
ZCAhPSAtMSkKICAgICAgICAgb3B0aW9uYWxMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5
dGVzUmVhZCk7CiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMs
IG1fcmVhZEJ1ZmZlci5nZXQoKSwgb3B0aW9uYWxMZW5ndGgpOwpAQCAtMTcxLDExICsxNzEsMTEg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjp3cml0ZVJlYWR5KCkKICAgICBzZW5kUGVu
ZGluZ0RhdGEoKTsKIH0KIAotT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
OjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3N0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmQoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0
cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsKICAgICBpZiAoIW1fb3V0cHV0U3Ry
ZWFtIHx8ICFkYXRhKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3Np
emUgd3JpdHRlbiA9IGdfcG9sbGFibGVfb3V0cHV0X3N0cmVhbV93cml0ZV9ub25ibG9ja2luZyht
X291dHB1dFN0cmVhbS5nZXQoKSwgZGF0YSwgbGVuZ3RoLCBtX2NhbmNlbGxhYmxlLmdldCgpLCAm
ZXJyb3Iub3V0UHRyKCkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIE9wdGlvbmFsPHNpemVfdD4gU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsCiAgICAgICAgICAgICBiZWdpbldhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0eSgpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBkaWRGYWlsKFNvY2tldFN0cmVhbUVycm9yKGVycm9yLT5j
b2RlLCBTdHJpbmcoKSwgZXJyb3ItPm1lc3NhZ2UpKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgZGlk
IG5vdCBzZW5kIGFsbCB0aGUgYnl0ZXMgd2Ugd2VyZSBnaXZlbiwgd2Uga25vdyB0aGF0CkBAIC0x
OTMsNyArMTkzLDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpw
bGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGwKICAgICAgICAgYmVnaW5XYWl0
aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKTsKIAogICAgIGlmICh3cml0dGVuID09IC0xKQotICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHdyaXR0ZW4pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CcmVha0xpbmVzLmgKaW5kZXggZjI2MTc5NTY4M2FmMjU5NTU4YzgxYzIxNjg0MzQ2OTlk
Mjc3NDgyZC4uODhkN2U5OTU4MjAzNTg5NzBmMGU4YTFlNjE3MTE1Y2ZmMDgwNjk1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCkBAIC04NSw3ICs4NSw3IEBAIGlubGluZSBi
b29sIG5lZWRzTGluZUJyZWFrSXRlcmF0b3IoVUNoYXIgY2hhcmFjdGVyKQogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgTm9uQnJlYWtpbmdTcGFjZUJlaGF2aW9yIG5vbkJyZWFraW5n
U3BhY2VCZWhhdmlvcj4KIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25M
b29zZWx5KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrSXRlcmF0b3IsIGNvbnN0IENo
YXJhY3RlclR5cGUqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydFBvc2l0
aW9uKQogewotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWs7CisgICAgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrOwogCiAgICAgQ2hhcmFjdGVyVHlwZSBsYXN0TGFzdENo
YXJhY3RlciA9IHN0YXJ0UG9zaXRpb24gPiAxID8gc3RyaW5nW3N0YXJ0UG9zaXRpb24gLSAyXSA6
IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KGxhenlCcmVha0l0ZXJhdG9yLnNlY29uZFRvTGFz
dENoYXJhY3RlcigpKTsKICAgICBDaGFyYWN0ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFydFBv
c2l0aW9uID4gMCA/IHN0cmluZ1tzdGFydFBvc2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxDaGFy
YWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5sYXN0Q2hhcmFjdGVyKCkpOwpAQCAtMTA2LDcg
KzEwNiw3IEBAIGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25Ob25Mb29zZWx5
KExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGlm
IChicmVha0l0ZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRl
ID0gdGV4dEJyZWFrRm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0
TGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVGV4dEJy
ZWFrRG9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBOdWxsb3B0
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IGNhbmRpZGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0ID49IHByaW9yQ29udGV4dExlbmd0aCk7CkBAIC0xMzIsNyArMTMy
LDcgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHkoTGF6
eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIE5vbkJyZWFraW5nU3BhY2VCZWhhdmlvciBub25CcmVha2luZ1NwYWNlQmVoYXZpb3I+
CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbkxvb3NlbHkoTGF6
eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgY29uc3QgQ2hhcmFjdGVyVHlw
ZSogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCiB7Ci0g
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVhazsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBuZXh0QnJlYWs7CiAKICAgICBDaGFyYWN0ZXJUeXBlIGxhc3RDaGFyYWN0ZXIgPSBzdGFy
dFBvc2l0aW9uID4gMCA/IHN0cmluZ1tzdGFydFBvc2l0aW9uIC0gMV0gOiBzdGF0aWNfY2FzdDxD
aGFyYWN0ZXJUeXBlPihsYXp5QnJlYWtJdGVyYXRvci5sYXN0Q2hhcmFjdGVyKCkpOwogICAgIHVu
c2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCA9IGxhenlCcmVha0l0ZXJhdG9yLnByaW9yQ29udGV4
dExlbmd0aCgpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbmV4
dEJyZWFrYWJsZVBvc2l0aW9uTG9vc2VseShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCCiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpICsgcHJpb3JDb250ZXh0TGVuZ3RoID49IDEpOwog
ICAgICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gdGV4dEJyZWFrRm9sbG93aW5nKGJy
ZWFrSXRlcmF0b3IsIGkgKyBwcmlvckNvbnRleHRMZW5ndGggLSAxKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBUZXh0QnJlYWtEb25lKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dEJyZWFrID0gTnVsbG9wdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRC
cmVhayA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBjYW5kaWRhdGU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID4gcHJpb3JDb250ZXh0TGVuZ3RoKTsKQEAgLTIy
OCw3ICsyMjgsNyBAQCBpbmxpbmUgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uSWdub3Jp
bmdOQlNQTG9vc2UoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYQogICAgIHJldHVybiBuZXh0QnJl
YWthYmxlUG9zaXRpb25Mb29zZWx5PFVDaGFyLCBOb25CcmVha2luZ1NwYWNlQmVoYXZpb3I6Okln
bm9yZU5vbkJyZWFraW5nU3BhY2U+KGxhenlCcmVha0l0ZXJhdG9yLCBzdHJpbmdWaWV3LmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmdWaWV3Lmxlbmd0aCgpLCBzdGFydFBvc2l0aW9uKTsKIH0KIAotaW5s
aW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVy
YXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgT3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJl
YWthYmxlLCBib29sIGJyZWFrTkJTUCwgYm9vbCBpc0xvb3NlTW9kZSwgYm9vbCBrZWVwQWxsV29y
ZHMpCitpbmxpbmUgYm9vbCBpc0JyZWFrYWJsZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxhenlC
cmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiYgbmV4dEJyZWFrYWJsZSwgYm9vbCBicmVha05CU1AsIGJvb2wgaXNMb29zZU1vZGUsIGJv
b2wga2VlcEFsbFdvcmRzKQogewogICAgIGlmIChuZXh0QnJlYWthYmxlICYmIG5leHRCcmVha2Fi
bGUudmFsdWUoKSA+PSBzdGFydFBvc2l0aW9uKQogICAgICAgICByZXR1cm4gc3RhcnRQb3NpdGlv
biA9PSBuZXh0QnJlYWthYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBmZjkwNDUwYjgxZTIxN2RhOTA1MjU5
YTg5NDhmMGMxZDZhOGM2OTE4Li42MzE2YjNhODJmNzg2Y2M0M2E2YzkwODMyNDEyNGJlNmYyZWRj
M2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEhpdFRlc3RpbmdUcmFuc2Zv
cm1TdGF0ZTo6ZmxhdHRlbigpCiAKIHZvaWQgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpmbGF0
dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKIHsKLSAgICBp
ZiAoT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGludmVyc2UgPSB0LmludmVyc2UoKSkg
eworICAgIGlmIChzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBpbnZlcnNlID0g
dC5pbnZlcnNlKCkpIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlLnZhbHVl
KCkucHJvamVjdFBvaW50KG1fbGFzdFBsYW5hclBvaW50KTsKICAgICAgICAgbV9sYXN0UGxhbmFy
UXVhZCA9IGludmVyc2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xhc3RQbGFuYXJRdWFkKTsKICAg
ICAgICAgbV9sYXN0UGxhbmFyQXJlYSA9IGludmVyc2UudmFsdWUoKS5wcm9qZWN0UXVhZChtX2xh
c3RQbGFuYXJBcmVhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFn
ZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCA0ZWNkODVhNjExZDM0MmE3OTNiYzIyYmJkY2RjZjcx
MDRmZjJhOWJhLi5hMWZlOGZjYzFjODhmMjZlMTZhNjNmMTJiNjQzMmQ1YTBlODFjZWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1PcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQorc3RkOjpvcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gSW1hZ2VRdWFsaXR5
Q29udHJvbGxlcjo6aW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5bGUuaW1hZ2VSZW5kZXJpbmcoKSkgewogICAg
IGNhc2UgSW1hZ2VSZW5kZXJpbmdPcHRpbWl6ZVNwZWVkOgpAQCAtMTEwLDcgKzExMCw3IEBAIE9w
dGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRl
cnBvbGF0aW9uUXVhbGl0eUZyb21TCiAgICAgY2FzZSBJbWFnZVJlbmRlcmluZ0F1dG86CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBJbnRlcnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVy
OjpjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJl
bmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5
ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCkBAIC0xMTksNyArMTE5LDcgQEAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6Y2hvb3NlSW50ZXJwb2xhdGlvblF1
YWxpdHkoR3JhcGhpY3MKICAgICBpZiAoIShpbWFnZS5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2Uu
aXNQREZEb2N1bWVudEltYWdlKCkpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7CiAKLSAgICBpZiAoT3B0aW9uYWw8SW50
ZXJwb2xhdGlvblF1YWxpdHk+IHN0eWxlSW50ZXJwb2xhdGlvbiA9IGludGVycG9sYXRpb25RdWFs
aXR5RnJvbVN0eWxlKG9iamVjdC0+c3R5bGUoKSkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8SW50
ZXJwb2xhdGlvblF1YWxpdHk+IHN0eWxlSW50ZXJwb2xhdGlvbiA9IGludGVycG9sYXRpb25RdWFs
aXR5RnJvbVN0eWxlKG9iamVjdC0+c3R5bGUoKSkpCiAgICAgICAgIHJldHVybiBzdHlsZUludGVy
cG9sYXRpb24udmFsdWUoKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0byB1c2UgdGhlIHVuem9vbWVk
IGltYWdlIHNpemUsIHNpbmNlIGlmIGEgZnVsbCBwYWdlIHpvb20gaXMgaW4gZWZmZWN0LCB0aGUg
aW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJv
bGxlci5oCmluZGV4IDJiMWE0NDU2ZTE0MWEyZTAyZDY4OTMyMWQ4NGQwY2Y4MDNlOGM2ZDIuLmVi
NGYxNTM1YmU0YjNkNjhkNmE0NDZmY2E1NjQzNzQ5YmQyNGIyNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaApAQCAtNDQsNyArNDQs
NyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZpZXcmKTsKIAotICAgIHN0YXRp
YyBPcHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHlGcm9t
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRl
cnBvbGF0aW9uUXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHlGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmKTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjaG9vc2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlJiwg
Y29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIHZvaWQgcmVuZGVy
ZXJXaWxsQmVEZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKSB7IHJlbW92
ZU9iamVjdCgmcmVuZGVyZXIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVy
YXRvci5oCmluZGV4IGE3YWQ4MTZhZDdhMTViZjAzZDJlY2JhMGU0YTA5ZTVjMDAwZTM0YzcuLmYz
NjZiM2NkM2E0MGYwOGIzY2FhOWVmMzE2NzU3MmI0M2UwZThmNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIElubGlu
ZUl0ZXJhdG9yIHsKICAgICAgICAgbW92ZVRvKG9iamVjdCwgMCk7CiAgICAgfQogCi0gICAgdm9p
ZCBtb3ZlVG8oUmVuZGVyT2JqZWN0JiBvYmplY3QsIHVuc2lnbmVkIG9mZnNldCwgT3B0aW9uYWw8
dW5zaWduZWQ+IG5leHRCcmVhayA9IE9wdGlvbmFsPHVuc2lnbmVkPigpKQorICAgIHZvaWQgbW92
ZVRvKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IG5leHRCcmVhayA9IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KCkpCiAgICAgewog
ICAgICAgICBzZXRSZW5kZXJlcigmb2JqZWN0KTsKICAgICAgICAgc2V0T2Zmc2V0KG9mZnNldCk7
CkBAIC04Niw4ICs4Niw4IEBAIGNsYXNzIElubGluZUl0ZXJhdG9yIHsKICAgICB1bnNpZ25lZCBv
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3BvczsgfQogICAgIHZvaWQgc2V0T2Zmc2V0KHVuc2ln
bmVkIHBvc2l0aW9uKTsKICAgICBSZW5kZXJFbGVtZW50KiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9yb290OyB9Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2FibGVQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRO
ZXh0QnJlYWthYmxlUG9zaXRpb24oT3B0aW9uYWw8dW5zaWduZWQ+IHBvc2l0aW9uKSB7IG1fbmV4
dEJyZWFrYWJsZVBvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX25leHRCcmVha2Fi
bGVQb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0TmV4dEJyZWFrYWJsZVBvc2l0aW9uKHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHBvc2l0aW9uKSB7IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gcG9z
aXRpb247IH0KICAgICBib29sIHJlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZmVyc1RvRW5kT2ZQcmV2aW91c05vZGU7IH0KICAgICB2b2lkIHNldFJlZmVyc1Rv
RW5kT2ZQcmV2aW91c05vZGUoKTsKIApAQCAtMTE4LDcgKzExOCw3IEBAIGNsYXNzIElubGluZUl0
ZXJhdG9yIHsKICAgICBSZW5kZXJFbGVtZW50KiBtX3Jvb3QgeyBudWxscHRyIH07CiAgICAgUmVu
ZGVyT2JqZWN0KiBtX3JlbmRlcmVyIHsgbnVsbHB0ciB9OwogCi0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IG1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uOwogICAgIHVuc2lnbmVkIG1fcG9zIHsgMCB9OwogCiAg
ICAgLy8gVGhlcmUgYXJlIGEgY291cGxlIHBsYWNlcyB3aGVyZSB3ZSB3YW50IHRvIGRlY3JlbWVu
dCBhbiBJbmxpbmVJdGVyYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcAppbmRleCAyM2FkY2QzNDMxNzIxZDA2NWJiMjIzZTI2NjhkOGEwNWY1MjAyNTU3Li4z
ZjMwNTU1YWE0ZDNiYzA3NTZkODM3NmVmN2Y1YmJmOWY5ZTgyNjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UG9pbnQmIGIKICAgICBib29sIHJlc3BlY3RIeXBoZW4gPSBzZWxlY3Rpb25FbmQg
PT0gbGVuZ3RoICYmIGhhc0h5cGhlbigpOwogICAgIGlmIChyZXNwZWN0SHlwaGVuKQogICAgICAg
ICBoeXBoZW5hdGVkU3RyaW5nID0gaHlwaGVuYXRlZFN0cmluZ0ZvclRleHRSdW4oc3R5bGUsIGxl
bmd0aCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgaHlw
aGVuYXRlZFN0cmluZywgT3B0aW9uYWw8dW5zaWduZWQ+KGxlbmd0aCkpOworICAgIFRleHRSdW4g
dGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGh5cGhlbmF0ZWRTdHJpbmcsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+KGxlbmd0aCkpOwogICAgIGlmIChyZXNwZWN0SHlwaGVuKQogICAg
ICAgICBzZWxlY3Rpb25FbmQgPSB0ZXh0UnVuLmxlbmd0aCgpOwogCkBAIC0xMDE1LDE4ICsxMDE1
LDE4IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KHVuc2lnbmVkIG9m
ZnNldCkgY29uc3QKICAgICByZXR1cm4gc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5n
RGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCBydW4ubHRyKCkpLm1heFgoKTsKIH0KIAotU3RyaW5nVmlldyBJbmxpbmVUZXh0
Qm94OjpzdWJzdHJpbmdUb1JlbmRlcihPcHRpb25hbDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0
aCkgY29uc3QKK1N0cmluZ1ZpZXcgSW5saW5lVGV4dEJveDo6c3Vic3RyaW5nVG9SZW5kZXIoc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gb3ZlcnJpZGluZ0xlbmd0aCkgY29uc3QKIHsKLSAgICByZXR1
cm4gU3RyaW5nVmlldyhyZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHN0YXJ0KCksIG92ZXJy
aWRpbmdMZW5ndGgudmFsdWVPcihsZW4oKSkpOworICAgIHJldHVybiBTdHJpbmdWaWV3KHJlbmRl
cmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoc3RhcnQoKSwgb3ZlcnJpZGluZ0xlbmd0aC52YWx1ZV9v
cihsZW4oKSkpOwogfQogCi1TdHJpbmcgSW5saW5lVGV4dEJveDo6aHlwaGVuYXRlZFN0cmluZ0Zv
clRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gYWx0
ZXJuYXRlTGVuZ3RoKSBjb25zdAorU3RyaW5nIElubGluZVRleHRCb3g6Omh5cGhlbmF0ZWRTdHJp
bmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gYWx0ZXJuYXRlTGVuZ3RoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNIeXBoZW4oKSk7
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoc3Vic3RyaW5nVG9SZW5kZXIoYWx0ZXJuYXRlTGVuZ3Ro
KSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpOwogfQogCi1UZXh0UnVuIElubGluZVRleHRCb3g6OmNv
bnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBTdHJpbmdWaWV3IGFsdGVy
bmF0ZVN0cmluZ1RvUmVuZGVyLCBPcHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVuZ3RoKSBj
b25zdAorVGV4dFJ1biBJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgU3RyaW5nVmlldyBhbHRlcm5hdGVTdHJpbmdUb1JlbmRlciwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gYWx0ZXJuYXRlTGVuZ3RoKSBjb25zdAogewogICAgIGlmIChhbHRl
cm5hdGVTdHJpbmdUb1JlbmRlci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFRl
eHRSdW4oc3R5bGUsIHN1YnN0cmluZ1RvUmVuZGVyKGFsdGVybmF0ZUxlbmd0aCksIHJlbmRlcmVy
KCkudGV4dExlbmd0aCgpIC0gc3RhcnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAppbmRleCA2YTk3MjMyMjhjNTYxNmMxMzFlNzNiYmM4YTgzODRmYzdlZWRjYjE5
Li45YzQ2MThhMTY3NDhmMTRkMjg1ZWNkNzE1Y2Y1YWY4MGVjNjRmMmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTEwNiw5ICsxMDYsOSBAQCBjbGFzcyBJ
bmxpbmVUZXh0Qm94IDogcHVibGljIElubGluZUJveCB7CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rp
b25Cb3R0b20oKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkhlaWdodCgpIGNvbnN0
OwogCi0gICAgU3RyaW5nVmlldyBzdWJzdHJpbmdUb1JlbmRlcihPcHRpb25hbDx1bnNpZ25lZD4g
b3ZlcnJpZGluZ0xlbmd0aCA9IHsgfSkgY29uc3Q7Ci0gICAgU3RyaW5nIGh5cGhlbmF0ZWRTdHJp
bmdGb3JUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVy
bmF0ZUxlbmd0aCA9IHsgfSkgY29uc3Q7Ci0gICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNv
bnN0IFJlbmRlclN0eWxlJiwgU3RyaW5nVmlldyBhbHRlcm5hdGVTdHJpbmdUb1JlbmRlciA9IHsg
fSwgT3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCA9IHsgfSkgY29uc3Q7CisgICAg
U3RyaW5nVmlldyBzdWJzdHJpbmdUb1JlbmRlcihzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBvdmVy
cmlkaW5nTGVuZ3RoID0geyB9KSBjb25zdDsKKyAgICBTdHJpbmcgaHlwaGVuYXRlZFN0cmluZ0Zv
clRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhbHRl
cm5hdGVMZW5ndGggPSB7IH0pIGNvbnN0OworICAgIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihj
b25zdCBSZW5kZXJTdHlsZSYsIFN0cmluZ1ZpZXcgYWx0ZXJuYXRlU3RyaW5nVG9SZW5kZXIgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGFsdGVybmF0ZUxlbmd0aCA9IHsgfSkgY29uc3Q7
CiAgICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgU3RyaW5n
VmlldywgdW5zaWduZWQgbWF4aW11bUxlbmd0aCkgY29uc3Q7CiAKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmNwcAppbmRleCAyZjk0Zjg1MTFhYWQ1NWEw
ZjhlN2EyMTFlMzc5MmY5NzAxNTA4NzJlLi5mYWRlOTM4OGNlMDhhN2Q0N2FkOWE5NmY3MTYxOGZh
ZTE0NDZkYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVySXRlcmF0b3IuY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIFJlbmRlckJveCogT3JkZXJJdGVyYXRvcjo6bmV4dCgpCiB2b2lk
IE9yZGVySXRlcmF0b3I6OnJlc2V0KCkKIHsKICAgICBtX2N1cnJlbnRDaGlsZCA9IG51bGxwdHI7
Ci0gICAgbV9vcmRlckluZGV4ID0gTnVsbG9wdDsKKyAgICBtX29yZGVySW5kZXggPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIE9yZGVySXRlcmF0b3JQb3B1bGF0b3I6Ok9yZGVySXRlcmF0b3JQb3B1bGF0
b3IoT3JkZXJJdGVyYXRvciYgaXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL09yZGVy
SXRlcmF0b3IuaAppbmRleCAzNzhlYzUyMjJjN2ZmODcyNTRjZTI0ZjdkNjJjZTc4MGIwZjU3N2E3
Li40N2NkMjdhZDI4MzUzM2IxZDMwZWUzYjhiZjhmNTcxZmI3YmFiNDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3JkZXJJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9PcmRlckl0ZXJhdG9yLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgT3Jk
ZXJJdGVyYXRvciB7CiAgICAgUmVuZGVyQm94KiBtX2N1cnJlbnRDaGlsZDsKIAogICAgIFZlY3Rv
cjxpbnQsIDE+IG1fb3JkZXJWYWx1ZXM7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBtX29yZGVySW5k
ZXg7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fb3JkZXJJbmRleDsKIH07CiAKIGNsYXNz
IE9yZGVySXRlcmF0b3JQb3B1bGF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5o
CmluZGV4IDhlMzA3MDdkN2VjMDc2ODVlNTUyNGQ1ZDc0ZTVlZmY0ODUyZWE5ZmQuLjg0ZDQ2YjYy
NGIwM2E0ZjE5MTY2MzFiNTk1N2JmMDFlYjc4MzBkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRJbmZvLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAg
ICAgaWYgKHJlY3QuaXNJbmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOworICAgICAgICBG
bG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAgIHJl
Y3Quc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkpOwog
ICAgICAgICByZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA4NTFh
MDQ3NGU4NGM3MTUxOWJjZGIyM2MxM2NlOTliY2FhMTk0MGI4Li4yMDAxYjAwY2MzOTE5YWYwZTE2
OGM0YWQyNTE2MmFmNzM0NjlmZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTI0OCwxNCArMjQ4LDE0IEBAIHN0cnVjdCBSZW5kZXJCbG9ja1JhcmVEYXRh
IHsKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRhKCkKICAgICAgICAgOiBtX3BhZ2luYXRpb25TdHJ1
dCgwKQogICAgICAgICAsIG1fcGFnZUxvZ2ljYWxPZmZzZXQoMCkKLSAgICAgICAgLCBtX2Zsb3dU
aHJlYWRDb250YWluaW5nQmxvY2soTnVsbG9wdCkKKyAgICAgICAgLCBtX2Zsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soc3RkOjpudWxsb3B0KQogICAgIHsKICAgICB9CiAKICAgICBMYXlvdXRVbml0
IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIExheW91dFVuaXQgbV9wYWdlTG9naWNhbE9mZnNldDsK
IAotICAgIE9wdGlvbmFsPFJlbmRlckZsb3dUaHJlYWQqPiBtX2Zsb3dUaHJlYWRDb250YWluaW5n
QmxvY2s7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJGbG93VGhyZWFkKj4gbV9mbG93VGhyZWFk
Q29udGFpbmluZ0Jsb2NrOwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2Nr
Kiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrUmFyZURhdGE+PiBSZW5kZXJCbG9ja1JhcmVE
YXRhTWFwOwpAQCAtMjk0NCw3ICsyOTQ0LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAg
ICAgICAgYm9vbCBpZ25vcmVCYXNlbGluZSA9IChsYXllcigpICYmIChsYXllcigpLT5tYXJxdWVl
KCkgfHwgKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IChsYXllcigpLT52ZXJ0aWNhbFNj
cm9sbGJhcigpIHx8IGxheWVyKCktPnNjcm9sbE9mZnNldCgpLnkoKSAhPSAwKQogICAgICAgICAg
ICAgOiAobGF5ZXIoKS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IGxheWVyKCktPnNjcm9sbE9m
ZnNldCgpLngoKSAhPSAwKSkpKSB8fCAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVu
KCkpOwogICAgICAgICAKLSAgICAgICAgT3B0aW9uYWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9y
ZUJhc2VsaW5lID8gT3B0aW9uYWw8aW50PigpIDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rp
b24pOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gYmFzZWxpbmVQb3MgPSBpZ25vcmVCYXNl
bGluZSA/IHN0ZDo6b3B0aW9uYWw8aW50PigpIDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rp
b24pOwogICAgICAgICAKICAgICAgICAgaWYgKGlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCkpIHsK
ICAgICAgICAgICAgIC8vIEhpc3RvcmljYWxseSwgd2UgZGlkIHRoaXMgY2hlY2sgZm9yIGFsbCBi
YXNlbGluZXMuIEJ1dCB3ZSBjYW4ndApAQCAtMjk1NCw3ICsyOTU0LDcgQEAgaW50IFJlbmRlckJs
b2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmly
c3RMaW5lLCBMaW4KICAgICAgICAgICAgIC8vIEZvciBzaW1wbGljaXR5LCB3ZSB1c2UgdGhpcyBm
b3IgYWxsIHVzZXMgb2YgZGVwcmVjYXRlZCBmbGV4Ym94LgogICAgICAgICAgICAgTGF5b3V0VW5p
dCBib3R0b21PZkNvbnRlbnQgPSBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKSArIGNvbnRlbnRIZWlnaHQoKSA6IGJvcmRlclJpZ2h0KCkgKyBw
YWRkaW5nUmlnaHQoKSArIGNvbnRlbnRXaWR0aCgpOwogICAgICAgICAgICAgaWYgKGJhc2VsaW5l
UG9zICYmIGJhc2VsaW5lUG9zLnZhbHVlKCkgPiBib3R0b21PZkNvbnRlbnQpCi0gICAgICAgICAg
ICAgICAgYmFzZWxpbmVQb3MgPSBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgICAgICAgICAgYmFz
ZWxpbmVQb3MgPSBzdGQ6Om9wdGlvbmFsPGludD4oKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
YmFzZWxpbmVQb3MpCiAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxM
aW5lID8gbWFyZ2luVG9wKCkgKyBiYXNlbGluZVBvcy52YWx1ZSgpIDogbWFyZ2luUmlnaHQoKSAr
IGJhc2VsaW5lUG9zLnZhbHVlKCk7CkBAIC0yOTc5LDQzICsyOTc5LDQzIEBAIExheW91dFVuaXQg
UmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJz
dExpbmUsIExheW91CiAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVp
Z2h0LCBsaW5lSGVpZ2h0KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
SG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hl
cykpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkp
Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPGludD4oKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjdXJyID0gZmlyc3RDaGlsZEJv
eCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAo
IWN1cnItPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAg
aWYgKE9wdGlvbmFsPGludD4gcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihjdXJyLT5sb2dpY2FsVG9wKCkgKyBy
ZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KKyAg
ICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPGludD4gcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5l
QmFzZWxpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGN1
cnItPmxvZ2ljYWxUb3AoKSArIHJlc3VsdC52YWx1ZSgpKTsgLy8gVHJhbnNsYXRlIHRvIG91ciBj
b29yZGluYXRlIHNwYWNlLgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIE9wdGlvbmFs
PGludD4oKTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiB9CiAKLU9wdGlvbmFs
PGludD4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUg
bGluZURpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJCbG9jazo6aW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25zdAog
ewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50
PigpOwogCiAgICAgYm9vbCBoYXZlTm9ybWFsRmxvd0NoaWxkID0gZmFsc2U7CiAgICAgZm9yIChh
dXRvKiBib3ggPSBsYXN0Q2hpbGRCb3goKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzU2libGlu
Z0JveCgpKSB7CiAgICAgICAgIGlmIChib3gtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBoYXZlTm9ybWFsRmxvd0NoaWxk
ID0gdHJ1ZTsKLSAgICAgICAgaWYgKE9wdGlvbmFsPGludD4gcmVzdWx0ID0gYm94LT5pbmxpbmVC
bG9ja0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24pKQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PGludD4oYm94LT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0ZSB0
byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50PiBy
ZXN1bHQgPSBib3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbikpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGJveC0+bG9naWNhbFRvcCgpICsgcmVzdWx0
LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgfQog
CiAgICAgaWYgKCFoYXZlTm9ybWFsRmxvd0NoaWxkICYmIGhhc0xpbmVJZkVtcHR5KCkpIHsKICAg
ICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7
Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGZvbnRNZXRyaWNzLmFzY2VudCgpCisgICAg
ICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAg
ICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVy
aW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAgICAgICAgICAgICsg
KGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpOwogICAgIH0KIAotICAgIHJl
dHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5kZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihS
ZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQpAQCAtMzM1NCw3ICszMzU0LDcgQEAgYm9vbCBS
ZW5kZXJCbG9jazo6Y2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9ja05lZWRzVXBkYXRlKCkg
Y29uc3QKIHZvaWQgUmVuZGVyQmxvY2s6OnNldENhY2hlZEZsb3dUaHJlYWRDb250YWluaW5nQmxv
Y2tOZWVkc1VwZGF0ZSgpCiB7CiAgICAgUmVuZGVyQmxvY2tSYXJlRGF0YSYgcmFyZURhdGEgPSBl
bnN1cmVCbG9ja1JhcmVEYXRhKHRoaXMpOwotICAgIHJhcmVEYXRhLm1fZmxvd1RocmVhZENvbnRh
aW5pbmdCbG9jayA9IE51bGxvcHQ7CisgICAgcmFyZURhdGEubV9mbG93VGhyZWFkQ29udGFpbmlu
Z0Jsb2NrID0gc3RkOjpudWxsb3B0OwogfQogCiBSZW5kZXJGbG93VGhyZWFkKiBSZW5kZXJCbG9j
azo6dXBkYXRlQ2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdCbG9jayhSZW5kZXJGbG93VGhyZWFk
KiBmbG93VGhyZWFkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApp
bmRleCA0ZTc4NjY3MThmZGQ3ODYwYzBkNTg1Yjk5YzQxZjE5NmM3YWQ3Yzc5Li4xYWY2YTg5OTBi
OTM4N2EwNDcxMzkxMGMxMmVmYzNjYTM0NDBlYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaApAQCAtMzQxLDggKzM0MSw4IEBAIGNsYXNzIFJlbmRlckJsb2NrIDogcHVi
bGljIFJlbmRlckJveCB7CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IG92ZXJyaWRlOwogICAgIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGlu
ZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIC8vIERlbGF5IHVwZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5kQW5kQ29tbWl0VXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgdXNlZAogICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxheWluZyBvdXQgaXRz
IGRlc2NlbmRhbnRzLiBJZiBtdWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBiZWdpblVwZGF0ZVNj
cm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggMjNlZjFkOTg2OWJiOGFhNzU3NWIzMWVkZGZk
MTk0ZTY2Y2Q5Zjg1Yi4uNjc4NDk1MTJlM2JjZWViYjQ0Y2RjOTljODIwYjZiYjhiZmZiZTA1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMw
MzQsNDMgKzMwMzQsNDMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hcmtMaW5lc0RpcnR5SW5C
bG9ja1JhbmdlKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW4KICAgICB9CiB9CiAKLU9w
dGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxpbnQ+KCk7CiAKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIAogICAgIGlmICghaGFzTGluZXMoKSkK
LSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0
aW9uYWw8aW50PigpOwogCiAgICAgaWYgKGF1dG8gc2ltcGxlTGluZUxheW91dCA9IHRoaXMtPnNp
bXBsZUxpbmVMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oU2ltcGxlTGlu
ZUxheW91dDo6Y29tcHV0ZUZsb3dGaXJzdExpbmVCYXNlbGluZSgqdGhpcywgKnNpbXBsZUxpbmVM
YXlvdXQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihTaW1wbGVMaW5lTGF5
b3V0Ojpjb21wdXRlRmxvd0ZpcnN0TGluZUJhc2VsaW5lKCp0aGlzLCAqc2ltcGxlTGluZUxheW91
dCkpOwogCiAgICAgQVNTRVJUKGZpcnN0Um9vdEJveCgpKTsKICAgICByZXR1cm4gZmlyc3RSb290
Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2Nl
bnQoZmlyc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKTsKIH0KIAotT3B0aW9uYWw8aW50PiBS
ZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGlu
ZURpcmVjdGlvbikgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6Omlu
bGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QK
IHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAg
IHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGlu
dD4oKTsKIAogICAgIC8vIE5vdGUgdGhhdCBoZXJlIHdlIG9ubHkgdGFrZSB0aGUgbGVmdCBhbmQg
Ym90dG9tIGludG8gY29uc2lkZXJhdGlvbi4gT3VyIGNhbGxlciB0YWtlcyB0aGUgcmlnaHQgYW5k
IHRvcCBpbnRvIGNvbnNpZGVyYXRpb24uCiAgICAgZmxvYXQgYm94SGVpZ2h0ID0gbGluZURpcmVj
dGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGhlaWdodCgpICsgbV9tYXJnaW5Cb3guYm90dG9tKCkg
OiB3aWR0aCgpICsgbV9tYXJnaW5Cb3gubGVmdCgpOwogICAgIGZsb2F0IGxhc3RCYXNlbGluZTsK
ICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpIHsKLSAgICAgICAgT3B0aW9uYWw8aW50PiBpbmxp
bmVCbG9ja0Jhc2VsaW5lID0gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUobGluZURp
cmVjdGlvbik7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5l
ID0gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbik7CiAgICAg
ICAgIGlmICghaW5saW5lQmxvY2tCYXNlbGluZSkKICAgICAgICAgICAgIHJldHVybiBpbmxpbmVC
bG9ja0Jhc2VsaW5lOwogICAgICAgICBsYXN0QmFzZWxpbmUgPSBpbmxpbmVCbG9ja0Jhc2VsaW5l
LnZhbHVlKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFoYXNMaW5lcygpKSB7CiAgICAg
ICAgICAgICBpZiAoIWhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPGludD4oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+
KCk7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxl
KCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGZvbnRN
ZXRyaWNzLmFzY2VudCgpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGZv
bnRNZXRyaWNzLmFzY2VudCgpCiAgICAgICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBs
aW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1ldHJpY3Mu
aGVpZ2h0KCkpIC8gMgogICAgICAgICAgICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpv
bnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBw
YWRkaW5nUmlnaHQoKSkpOwogICAgICAgICB9CkBAIC0zMDg2LDcgKzMwODYsNyBAQCBPcHRpb25h
bDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9u
TW9kZSBsaW5lRGlyZWN0aQogICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTIHNwZWMgaHR0cDov
L3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sLCB3ZSBzaG91bGRuJ3QgYmUgcGVyZm9y
bWluZyB0aGlzIG1pbiwgYnV0IHNob3VsZAogICAgIC8vIGluc3RlYWQgYmUgcmV0dXJuaW5nIGJv
eEhlaWdodCBkaXJlY3RseS4gSG93ZXZlciwgd2UgZmVlbCB0aGF0IGEgbWluIGhlcmUgaXMgYmV0
dGVyIGJlaGF2aW9yIChhbmQgaXMgY29uc2lzdGVudAogICAgIC8vIGVub3VnaCB3aXRoIHRoZSBz
cGVjIHRvIG5vdCBjYXVzZSB0b25zIG9mIGJyZWFrYWdlcykuCi0gICAgcmV0dXJuIE9wdGlvbmFs
PGludD4oc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPVklTSUJMRSA/IGxhc3RCYXNlbGluZSA6IHN0
ZDo6bWluKGJveEhlaWdodCwgbGFzdEJhc2VsaW5lKSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8aW50PihzdHlsZSgpLm92ZXJmbG93WSgpID09IE9WSVNJQkxFID8gbGFzdEJhc2VsaW5lIDog
c3RkOjptaW4oYm94SGVpZ2h0LCBsYXN0QmFzZWxpbmUpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IDFhN2E4MzAwNjYzMTNhNTY3
Y2FlYjc2Y2Q0Y2Q2NTFkOTUyMmM2N2EuLjcxYjQzMTFjNTlkMDBkN2IwOTE4NmZiNmY3ZTI2ZmE4
ODcyMzQxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgK
QEAgLTQ0Nyw4ICs0NDcsOCBAQCBjbGFzcyBSZW5kZXJCbG9ja0Zsb3cgOiBwdWJsaWMgUmVuZGVy
QmxvY2sgewogCiAgICAgdm9pZCBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsKIAotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJy
aWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNNdWx0aUNvbHVtbkJs
b2NrRmxvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgp
OyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGZhNDU0
MmQ4ZDYzOTg2NzdmMWRjZTI1NDM3Mjc4N2FmY2YwZWJkYjkuLmEzYmM1YWY0ZDVjNGM3YjllMzRk
OTY4ZDU1ODlmZDE1NDhiNzlhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBPdmVycmlkZVNpemVNYXAqIGdPdmVycmlkZVdp
ZHRoTWFwID0gbnVsbHB0cjsKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAvLyBVc2Vk
IGJ5IGdyaWQgZWxlbWVudHMgdG8gcHJvcGVybHkgc2l6ZSB0aGVpciBncmlkIGl0ZW1zLgotdHlw
ZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4+
IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwordHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVu
ZGVyQm94Kiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pj4gT3ZlcnJpZGVPcHRpb25hbFNpemVN
YXA7CiBzdGF0aWMgT3ZlcnJpZGVPcHRpb25hbFNpemVNYXAqIGdPdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxIZWlnaHRNYXAgPSBudWxscHRyOwogc3RhdGljIE92ZXJyaWRlT3B0aW9uYWxT
aXplTWFwKiBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhNYXAgPSBudWxscHRy
Owogc3RhdGljIE92ZXJyaWRlU2l6ZU1hcCogZ0V4dHJhSW5saW5lT2Zmc2V0TWFwID0gbnVsbHB0
cjsKQEAgLTY2NywyNiArNjY3LDI2IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5M
b2dpY2FsV2lkdGhJblJlZ2lvbkJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbFdpCiAgICAgcmV0
dXJuIHN0ZDo6bWF4KGxvZ2ljYWxXaWR0aCwgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNp
bmcoTWluU2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWluV2lkdGgoKSwgYXZhaWxhYmxlV2lkdGgs
IGNiLCByZWdpb24pKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2lj
YWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIE9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJv
eDo6Y29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAgICBp
ZiAoIXN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAg
ICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEggPSBjb21wdXRlTG9naWNhbEhlaWdodFVz
aW5nKE1heFNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLCBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSkKKyAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4SCA9
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWF4U2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4
SGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQogICAgICAgICAgICAgbG9naWNhbEhl
aWdodCA9IHN0ZDo6bWluKGxvZ2ljYWxIZWlnaHQsIG1heEgudmFsdWUoKSk7CiAgICAgfQotICAg
IGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBjb21wdXRl
TG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgp
LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1p
blNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVp
Z2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxIZWlnaHQsIGNvbXB1dGVkTG9n
aWNhbEhlaWdodC52YWx1ZSgpKTsKICAgICByZXR1cm4gbG9naWNhbEhlaWdodDsKIH0KIAotTGF5
b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5N
YXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNv
bnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGlmICgh
c3R5bGVUb1VzZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBp
ZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4SCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdo
dChNYXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgaW50cmluc2ljQ29udGVu
dEhlaWdodCkpCisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEggPSBj
b21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWF4
SGVpZ2h0KCksIGludHJpbnNpY0NvbnRlbnRIZWlnaHQpKQogICAgICAgICAgICAgbG9naWNhbEhl
aWdodCA9IHN0ZDo6bWluKGxvZ2ljYWxIZWlnaHQsIG1heEgudmFsdWUoKSk7CiAgICAgfQotICAg
IGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZENvbnRlbnRMb2dpY2FsSGVpZ2h0ID0g
Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1p
bkhlaWdodCgpLCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBjb21wdXRlZENvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gY29tcHV0ZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0KE1pblNpemUsIHN0eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpLCBp
bnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxI
ZWlnaHQsIGNvbXB1dGVkQ29udGVudExvZ2ljYWxIZWlnaHQudmFsdWUoKSk7CiAgICAgcmV0dXJu
IGxvZ2ljYWxIZWlnaHQ7CiB9CkBAIC0xMTIzLDEzICsxMTIzLDEzIEBAIExheW91dFVuaXQgUmVu
ZGVyQm94OjpvdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KCkgY29uc3QKIH0KIAogI2lmIEVO
QUJMRShDU1NfR1JJRF9MQVlPVVQpCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6Om92
ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6b3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbFdpZHRoKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzT3ZlcnJpZGVDb250YWlu
aW5nQmxvY2tMb2dpY2FsV2lkdGgoKSk7CiAgICAgcmV0dXJuIGdPdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxXaWR0aE1hcC0+Z2V0KHRoaXMpOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJCb3g6Om92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQo
KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6Om92ZXJyaWRlQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVCho
YXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSk7CiAgICAgcmV0dXJuIGdP
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRNYXAtPmdldCh0aGlzKTsKQEAgLTEx
NDUsMTQgKzExNDUsMTQgQEAgYm9vbCBSZW5kZXJCb3g6Omhhc092ZXJyaWRlQ29udGFpbmluZ0Js
b2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIGdPdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0xvZ2ljYWxIZWlnaHRNYXAgJiYgZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhl
aWdodE1hcC0+Y29udGFpbnModGhpcyk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjpzZXRPdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoT3B0aW9uYWw8TGF5b3V0VW5pdD4g
bG9naWNhbFdpZHRoKQordm9pZCBSZW5kZXJCb3g6OnNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2Nr
Q29udGVudExvZ2ljYWxXaWR0aChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxXaWR0
aCkKIHsKICAgICBpZiAoIWdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aE1hcCkK
ICAgICAgICAgZ092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoTWFwID0gbmV3IE92
ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwogICAgIGdPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2lj
YWxXaWR0aE1hcC0+c2V0KHRoaXMsIGxvZ2ljYWxXaWR0aCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94
OjpzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFs
PExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQpCit2b2lkIFJlbmRlckJveDo6c2V0T3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodChzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGxvZ2ljYWxIZWlnaHQpCiB7CiAgICAgaWYgKCFnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tM
b2dpY2FsSGVpZ2h0TWFwKQogICAgICAgICBnT3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2Fs
SGVpZ2h0TWFwID0gbmV3IE92ZXJyaWRlT3B0aW9uYWxTaXplTWFwOwpAQCAtMTIyOCw3ICsxMjI4
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhG
b3JCb3hTaXppbmcoTGF5b3V0VW5pdCB3aWR0aCkKICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0
VW5pdD4oMCwgd2lkdGgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVu
dEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0Rm9yQm94U2l6aW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdAog
ewogICAgIGlmICghaGVpZ2h0KQogICAgICAgICByZXR1cm4gMDsKQEAgLTI4NTYsNyArMjg1Niw3
IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhCiAgICAgICAgIExheW91dFVuaXQgaGVpZ2h0UmVz
dWx0OwogICAgICAgICBpZiAoY2hlY2tNaW5NYXhIZWlnaHQpIHsKICAgICAgICAgICAgIExheW91
dFVuaXQgaW50cmluc2ljSGVpZ2h0ID0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgLSBib3JkZXJB
bmRQYWRkaW5nTG9naWNhbEhlaWdodCgpOwotICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29t
cHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZU9yKGNvbXB1dGVkVmFsdWVzLm1fZXh0
ZW50KTsKKyAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNp
bmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNp
Y0hlaWdodCkudmFsdWVfb3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgICAgICAgICAg
aGVpZ2h0UmVzdWx0ID0gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KGhlaWdodFJlc3Vs
dCwgaW50cmluc2ljSGVpZ2h0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRo
ZSBvbmx5IHRpbWVzIHdlIGRvbid0IGNoZWNrIG1pbi9tYXggaGVpZ2h0IGFyZSB3aGVuIGEgZml4
ZWQgbGVuZ3RoIGhhcwpAQCAtMjg5NSwyMSArMjg5NSwyMSBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxv
Z2ljYQogICAgIH0KIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVp
Z2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAor
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0
VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3QKIHsKLSAgICBp
ZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5k
U2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2lj
Q29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbG9naWNh
bEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhl
aWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCiAgICAgICAgIHJldHVy
biBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGxvZ2ljYWxIZWlnaHQu
dmFsdWUoKSk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2lj
YWxIZWlnaHQoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlv
bmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CitzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNp
emVUeXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKE9wdGlv
bmFsPExheW91dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50
QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmlu
c2ljQ29udGVudEhlaWdodCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVp
Z2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0VXNpbmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGFkanVzdENvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3Jv
bGxiYXJMb2dpY2FsSGVpZ2h0KCkpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0
ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRM
ZW5ndGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91
dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5n
dGggbG9naWNhbEhlaWdodExlbmd0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5z
aWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcg
d2hhdCBtaW4tY29udGVudC9tYXgtY29udGVudCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAvLyBJ
ZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgpAQCAtMjkyNiwx
MCArMjkyNiwxMCBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aAogICAgIHJldHVybiBMYXlvdXRV
bml0KDApOwogfQogCi1PcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250
ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGNv
bnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50
SGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1
dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5
cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJp
bnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKLSAg
ICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+
KDApIDogTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gRklYTUU6
IFRoZSBDU1Mgc2l6aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcgd2hhdCBtaW4tY29u
dGVudC9tYXgtY29udGVudCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAvLyBJZiB0aGF0IGhhcHBl
bnMsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgogICAgIGlmIChoZWlnaHQuaXNJbnRy
aW5zaWMoKSkKQEAgLTI5MzgsNyArMjkzOCw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRl
ckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6CiAg
ICAgICAgIHJldHVybiBMYXlvdXRVbml0KGhlaWdodC52YWx1ZSgpKTsKICAgICBpZiAoaGVpZ2h0
LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRh
Z2VMb2dpY2FsSGVpZ2h0KGhlaWdodCk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBSZW5kZXJCb3g6OnNraXBDb250YWluaW5nQmxvY2tG
b3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24oY29uc3QgUmVuZGVyQm94JiBjb250YWluaW5nQmxv
Y2ssIGJvb2wgaXNQZXJwZW5kaWN1bGFyV3JpdGluZ01vZGUpIGNvbnN0CkBAIC0yOTY4LDkgKzI5
NjgsOSBAQCBzdGF0aWMgYm9vbCB0YWJsZUNlbGxTaG91bGRIYXZlWmVyb0luaXRpYWxTaXplKGNv
bnN0IFJlbmRlckJsb2NrJiBibG9jaywgYm9vbCBzYwogICAgIHJldHVybiBzY3JvbGxzT3ZlcmZs
b3dZICYmICghY2VsbC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSB8fCAhY2VsbC50
YWJsZSgpLT5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSk7CiB9CiAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNv
bnN0IExlbmd0aCYgaGVpZ2h0KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaWdo
dCkgY29uc3QKIHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVIZWlnaHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVIZWlnaHQ7CiAKICAgICBib29s
IHNraXBwZWRBdXRvSGVpZ2h0Q29udGFpbmluZ0Jsb2NrID0gZmFsc2U7CiAgICAgUmVuZGVyQmxv
Y2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7CkBAIC0zMDA4LDIzICszMDA4LDIzIEBAIE9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0
KGNvbnN0IExlbmd0aCYgaGVpCiAgICAgICAgICAgICAvLyBkb24ndCBjYXJlIGlmIHRoZSBjZWxs
IHNwZWNpZmllZCBhIGhlaWdodCBvciBub3QuIFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vyc2VsdmVz
CiAgICAgICAgICAgICAvLyBiZSBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJyZW50IGNv
bnRlbnQgaGVpZ2h0LgogICAgICAgICAgICAgaWYgKCFjYi0+aGFzT3ZlcnJpZGVMb2dpY2FsQ29u
dGVudEhlaWdodCgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxTaG91bGRIYXZl
WmVyb0luaXRpYWxTaXplKCpjYiwgc2Nyb2xsc092ZXJmbG93WSgpKSA/IE9wdGlvbmFsPExheW91
dFVuaXQ+KCkgOiBOdWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxTaG91
bGRIYXZlWmVyb0luaXRpYWxTaXplKCpjYiwgc2Nyb2xsc092ZXJmbG93WSgpKSA/IHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4oKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXZhaWxh
YmxlSGVpZ2h0ID0gY2ItPm92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHQoKTsKICAgICAgICAg
ICAgIGluY2x1ZGVCb3JkZXJQYWRkaW5nID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAoY2JzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpKSB7CiAgICAgICAgIExheW91dFVu
aXQgY29udGVudEJveEhlaWdodCA9IGNiLT5hZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZv
ckJveFNpemluZyhMYXlvdXRVbml0KGNic3R5bGUubG9naWNhbEhlaWdodCgpLnZhbHVlKCkpKTsK
LSAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY2ItPmNv
bnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJveEhlaWdodCAt
IGNiLT5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCksIE51bGxvcHQpKTsKKyAgICAgICAgYXZhaWxh
YmxlSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY2ItPmNvbnN0cmFpbkNvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJveEhlaWdodCAtIGNiLT5zY3JvbGxiYXJM
b2dpY2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCkpOwogICAgIH0gZWxzZSBpZiAoY2JzdHlsZS5s
b2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkgJiYgIWlzT3V0T2ZGbG93UG9z
aXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byByZWN1
ciBhbmQgY29tcHV0ZSB0aGUgcGVyY2VudGFnZSBoZWlnaHQgZm9yIG91ciBjb250YWluaW5nIGJs
b2NrLgotICAgICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0V2l0aFNjcm9sbGJh
ciA9IGNiLT5jb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY2JzdHlsZS5sb2dpY2FsSGVp
Z2h0KCkpKSB7CisgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodFdp
dGhTY3JvbGxiYXIgPSBjYi0+Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNic3R5bGUu
bG9naWNhbEhlaWdodCgpKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVp
Z2h0V2l0aFNjcm9sbGJhciA9IGNiLT5hZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyhoZWlnaHRXaXRoU2Nyb2xsYmFyKTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8g
YWRqdXN0IGZvciBtaW4vbWF4IGhlaWdodCBiZWNhdXNlIHRoaXMgbWV0aG9kIGRvZXMgbm90CiAg
ICAgICAgICAgICAvLyBoYW5kbGUgdGhlIG1pbi9tYXggb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGl0
cyBjYWxsZXIgZG9lcy4gU28gdGhlCiAgICAgICAgICAgICAvLyByZXR1cm4gdmFsdWUgZnJvbSB0
aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBub3QgaGF2ZSBiZWVuIGFkanVzdGVkCiAgICAgICAgICAg
ICAvLyB5ZXQuCi0gICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQgPSBjYi0+
Y29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0
V2l0aFNjcm9sbGJhciAtIGNiLT5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCksIE51bGxvcHQpOwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0gY2ItPmNvbnN0cmFpbkNv
bnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxi
YXIgLSBjYi0+c2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOwogICAgICAg
ICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY29udGVudEJv
eEhlaWdodCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25l
ZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsKQEAgLTMxMjcsNyArMzEyNyw3IEBAIExheW91dFVuaXQg
UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVp
Z2h0VHlwZSwgTGVuCiB7CiAgICAgQVNTRVJUKGhlaWdodFR5cGUgPT0gTWluU2l6ZSB8fCBoZWln
aHRUeXBlID09IE1haW5PclByZWZlcnJlZFNpemUgfHwgIWxvZ2ljYWxIZWlnaHQuaXNBdXRvKCkp
OwogICAgIGlmIChoZWlnaHRUeXBlID09IE1pblNpemUgJiYgbG9naWNhbEhlaWdodC5pc0F1dG8o
KSkKLSAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKE9wdGlvbmFsPExheW91dFVuaXQ+KDApKTsKKyAgICAgICAgcmV0dXJuIGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4o
MCkpOwogCiAgICAgc3dpdGNoIChsb2dpY2FsSGVpZ2h0LnR5cGUoKSkgewogICAgICAgICBjYXNl
IEZpeGVkOgpAQCAtMzE5MSw3ICszMTkxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBMZW4KIAog
TGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9n
aWNhbEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RyYWlu
TG9naWNhbEhlaWdodEJ5TWluTWF4KGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgp
LmxvZ2ljYWxIZWlnaHQoKSwgaGVpZ2h0VHlwZSksIE51bGxvcHQpOworICAgIHJldHVybiBjb25z
dHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoYXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKHN0
eWxlKCkubG9naWNhbEhlaWdodCgpLCBoZWlnaHRUeXBlKSwgc3RkOjpudWxsb3B0KTsKIH0KIAog
TGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBM
ZW5ndGgmIGgsIEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5cGUpIGNvbnN0CkBA
IC0zMjExLDcgKzMyMTEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNh
bEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxhYmxlTG9naQogICAgICAgICByZXR1
cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcodmFsdWVGb3JMZW5n
dGgoaCwgYXZhaWxhYmxlSGVpZ2h0KSk7CiAgICAgfQogCi0gICAgaWYgKE9wdGlvbmFsPExheW91
dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xs
YmFyTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIGgsIE51bGxvcHQpKQor
ICAgIGlmIChzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJh
ciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKE1haW5PclBy
ZWZlcnJlZFNpemUsIGgsIHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heDxM
YXlvdXRVbml0PigwLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyho
ZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKTsKIAog
ICAgIC8vIEZJWE1FOiBDaGVjayBsb2dpY2FsVG9wL2xvZ2ljYWxCb3R0b20gaGVyZSB0byBjb3Jy
ZWN0bHkgaGFuZGxlIHZlcnRpY2FsIHdyaXRpbmctbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAppbmRleCAyYTY4Y2ZkMzk1YzZmYzQ2ZGRkNjE4YTQ4YjczMjFmNWVjNDgzYTdi
Li4zMmRiNTJhMmU5NDI4NDI1OTYzMGI1ZTcwYWQ3MWNmYjk0NTY1MzhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC04NCw4ICs4NCw4IEBAIGNsYXNzIFJlbmRlckJveCA6
IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
aGVpZ2h0KCkgOiB3aWR0aCgpOyB9CiAKICAgICBMYXlvdXRVbml0IGNvbnN0cmFpbkxvZ2ljYWxX
aWR0aEluUmVnaW9uQnlNaW5NYXgoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCwgUmVuZGVyQmxvY2sm
LCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBjb25zdHJh
aW5Mb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBPcHRpb25h
bDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKLSAgICBMYXlvdXRV
bml0IGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0
KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmlu
c2ljQ29udGVudEhlaWdodCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb25zdHJhaW5Db250ZW50
Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsKIAogICAg
IHZvaWQgc2V0TG9naWNhbExlZnQoTGF5b3V0VW5pdCBsZWZ0KQogICAgIHsKQEAgLTMwOSwxMiAr
MzA5LDEyIEBAIGNsYXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7
CiAgICAgdm9pZCBjbGVhck92ZXJyaWRlTG9naWNhbENvbnRlbnRXaWR0aCgpOwogCiAjaWYgRU5B
QkxFKENTU19HUklEX0xBWU9VVCkKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKLSAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkZUNvbnRhaW5pbmdC
bG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25z
dDsKICAgICBib29sIGhhc092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBj
b25zdDsKLSAgICB2b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxX
aWR0aChPcHRpb25hbDxMYXlvdXRVbml0Pik7Ci0gICAgdm9pZCBzZXRPdmVycmlkZUNvbnRhaW5p
bmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICB2
b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+KTsKKyAgICB2b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2Nr
Q29udGVudExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0Pik7CiAgICAgdm9p
ZCBjbGVhckNvbnRhaW5pbmdCbG9ja092ZXJyaWRlU2l6ZSgpOwogICAgIHZvaWQgY2xlYXJPdmVy
cmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAgTGF5b3V0VW5p
dCBleHRyYUlubGluZU9mZnNldCgpIGNvbnN0OwpAQCAtMzI5LDcgKzMyOSw3IEBAIGNsYXNzIFJl
bmRlckJveCA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiAgICAgTGF5b3V0VW5pdCBh
ZGp1c3RCb3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCB3aWR0aCkg
Y29uc3Q7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94
U2l6aW5nKExheW91dFVuaXQgaGVpZ2h0KSBjb25zdDsKICAgICBMYXlvdXRVbml0IGFkanVzdENv
bnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7
Ci0gICAgTGF5b3V0VW5pdCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemlu
ZyhPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQpIGNvbnN0OworICAgIExheW91dFVuaXQgYWRq
dXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBoZWlnaHQpIGNvbnN0OwogCiAgICAgc3RydWN0IENvbXB1dGVkTWFyZ2luVmFsdWVz
IHsKICAgICAgICAgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMoKQpAQCAtNDE5LDkgKzQxOSw5IEBAIGNs
YXNzIFJlbmRlckJveCA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiAgICAgTGF5b3V0
VW5pdCBzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRNYXJn
aW5TdGFydCwgTGF5b3V0VW5pdCBjaGlsZE1hcmdpbkVuZCwgY29uc3QgUmVuZGVyQmxvY2smIGNi
LCBSZW5kZXJSZWdpb24qKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUsIExlbmd0aCBsb2dpY2FsV2lkdGgsIExheW91dFVu
aXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmluZ0Js
b2NrLCBSZW5kZXJSZWdpb24qKSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21w
dXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBj
b25zdCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVu
dEhlaWdodCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZUNvbnRlbnRB
bmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVp
Z2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmco
U2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGludHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KFNpemVUeXBlLCBjb25zdCBMZW5ndGgm
IGhlaWdodCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVDb250ZW50QW5k
U2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdo
dCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25z
dDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKFNpemVU
eXBlLCBMZW5ndGggd2lkdGgpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExheW91dFVuaXQgbG9naWNhbFdpZHRo
LCBTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0OwogICAgIExh
eW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlLCBMZW5n
dGggaGVpZ2h0KSBjb25zdDsKQEAgLTQzMyw3ICs0MzMsNyBAQCBjbGFzcyBSZW5kZXJCb3ggOiBw
dWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2Fs
V2lkdGgoKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBwZXJjZW50YWdlTG9naWNhbEhlaWdodElz
UmVzb2x2YWJsZUZyb21CbG9jayhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmluZ0Jsb2NrLCBi
b29sIG91dE9mRmxvd1Bvc2l0aW9uZWQsIGJvb2wgc2Nyb2xsc092ZXJmbG93WSk7CiAgICAgYm9v
bCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoJiBoZWlnaHQp
IGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVBlcmNlbnRhZ2VM
b2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KSBjb25zdDsKIAogICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50
TG9naWNhbFdpZHRoKCk7IH0KICAgICB2aXJ0dWFsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNh
bEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlwZSkgY29uc3Q7CkBAIC01MTUsOCArNTE1
LDggQEAgY2xhc3MgUmVuZGVyQm94IDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsKICAg
ICAKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgY29uc3Q7
CiAgICAgCi0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QgeyByZXR1cm4gT3B0aW9uYWw8aW50PigpOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+
IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJuIE9w
dGlvbmFsPGludD4oKTsgfSAvLyBSZXR1cm5zIGVtcHR5IGlmIHdlIHNob3VsZCBza2lwIHRoaXMg
Ym94IHdoZW4gY29tcHV0aW5nIHRoZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUtYmxvY2suCisgICAg
dmlydHVhbCBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxp
bnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8aW50PigpOyB9IC8vIFJldHVybnMgZW1wdHkgaWYgd2Ugc2hvdWxkIHNr
aXAgdGhpcyBib3ggd2hlbiBjb21wdXRpbmcgdGhlIGJhc2VsaW5lIG9mIGFuIGlubGluZS1ibG9j
ay4KIAogICAgIGJvb2wgc2hyaW5rVG9Bdm9pZEZsb2F0cygpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdDsKQEAgLTY0OCw3ICs2NDgsNyBAQCBjbGFzcyBSZW5k
ZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogICAgIHZvaWQgY29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiwgUmVuZGVy
UmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0aCwgTGF5b3V0VW5p
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29u
c3Q7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlSW50cmluc2ljTG9n
aWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJB
bmRQYWRkaW5nKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxI
ZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhl
aWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdDsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gaXNS
ZXBsYWNlZCgpICYmICFpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCmluZGV4IGI1MDNhMTM4
MDkzNDBlN2FhYTI5NmUwYmQ3OGM1ZTZiMDAyYTU4ZTguLjEyNjUxOWYxNTQxOWQwODk5OGY3OGNj
MDhjM2E2NGFkYzM0YmNlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb21iaW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvbWJpbmVUZXh0LmNwcApAQCAtNzEsMTAgKzcxLDEwIEBAIGZsb2F0IFJlbmRlckNvbWJpbmVU
ZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRDYXNj
YWRlCiAgICAgcmV0dXJuIFJlbmRlclRleHQ6OndpZHRoKGZyb20sIGxlbmd0aCwgZm9udCwgeFBv
c2l0aW9uLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKIH0KIAotT3B0aW9uYWw8Rmxv
YXRQb2ludD4gUmVuZGVyQ29tYmluZVRleHQ6OmNvbXB1dGVUZXh0T3JpZ2luKGNvbnN0IEZsb2F0
UmVjdCYgYm94UmVjdCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gUmVuZGVyQ29t
YmluZVRleHQ6OmNvbXB1dGVUZXh0T3JpZ2luKGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCkgY29u
c3QKIHsKICAgICBpZiAoIW1faXNDb21iaW5lZCkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBWaXN1YWxseSBjZW50ZXIgbV9j
b21iaW5lZFRleHRXaWR0aC9Bc2NlbnQvRGVzY2VudCB3aXRoaW4gYm94UmVjdAogICAgIEZsb2F0
UG9pbnQgcmVzdWx0ID0gYm94UmVjdC5taW5YTWF4WUNvcm5lcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaAppbmRleCAyYjhiY2QyZjhmZWI1MDZlNmU1
NDdkMDUxNjA3NDY5MTZmMGQwMTIzLi4wNzJiODFjNjFlMDhmNzc5NmM2OWUzNDYwZjg4NGUyMjc3
NjBlMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmlu
ZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQu
aApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZW5kZXJDb21iaW5lVGV4dCBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJUZXh0IHsKICAgICBUZXh0JiB0ZXh0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25j
YXN0PFRleHQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogICAgIHZvaWQgY29tYmluZVRl
eHQoKTsKLSAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBjb21wdXRlVGV4dE9yaWdpbihjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4g
Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdDsKICAgICBT
dHJpbmcgY29tYmluZWRTdHJpbmdGb3JSZW5kZXJpbmcoKSBjb25zdDsKICAgICBib29sIGlzQ29t
YmluZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29tYmluZWQ7IH0KICAgICBmbG9hdCBjb21iaW5l
ZFRleHRXaWR0aChjb25zdCBGb250Q2FzY2FkZSYgZm9udCkgY29uc3QgeyByZXR1cm4gZm9udC5z
aXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggODJhZGJjZDQxZjA5ODhhOGI0OWVkZjA5ZWY5
MjFlMDdiZjljZDJkNC4uNTYzZTUzNmQ2YTE2NjAyZjRjZTk0NTAzOTY0MGY0MTBmMmU5YzYxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4p
CiAKICAgICAgICAgICAgIC8vIFVwZGF0ZSBvdXIgaGVpZ2h0IGFuZCBvdmVyZmxvdyBoZWlnaHQu
CiAgICAgICAgICAgICBpZiAoc3R5bGUoKS5ib3hBbGlnbigpID09IEJCQVNFTElORSkgewotICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5l
KCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOworICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5l
KCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpKTsKICAg
ICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwogICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGlj
YWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAKQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIFJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5
b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgIGNoaWxkWSArPSBjaGlsZC0+bWFyZ2lu
VG9wKCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCAoY29udGVudEhlaWdodCgpIC0gKGNoaWxk
LT5oZWlnaHQoKSArIGNoaWxkLT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSkgLyAyKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCQkFTRUxJTkU6IHsK
LSAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5l
QmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20o
KSk7CisgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0
TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJv
dHRvbSgpKTsKICAgICAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3Ao
KTsKICAgICAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArICht
YXhBc2NlbnQgLSBhc2NlbnQpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDQ5Y2EyYWNk
Mjg0YWYxY2QxZjJhNzllYzAyYjc2YTAzODk0MzNkZTIuLmM1ZDBmNzAxNTBkM2I5Y2Y2MDg3NTM1
ZDA5OGZiMGY4MzlhZTU2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcApAQCAtMTc1LDE2ICsxNzUsMTYgQEAgc3RhdGljIGludCBzeW50aGVz
aXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJl
Y3Rpb24KIAogaW50IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
KSBjb25zdAogewotICAgIGludCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVP
cihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOwor
ICAgIGludCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3Ioc3ludGhlc2l6
ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0aGlzLCBkaXJlY3Rpb24pKTsKIAogICAgIGludCBt
YXJnaW5Bc2NlbnQgPSBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6
IG1hcmdpblJpZ2h0KCk7CiAgICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luQXNjZW50OwogfQog
Ci1PcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBtX251bWJlck9m
SW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8
aW50PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAgICAgUmVuZGVy
Qm94KiBiYXNlbGluZUNoaWxkID0gbnVsbHB0cjsKICAgICBpbnQgY2hpbGROdW1iZXIgPSAwOwog
ICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5maXJzdCgpOyBjaGls
ZDsgY2hpbGQgPSBtX29yZGVySXRlcmF0b3IubmV4dCgpKSB7CkBAIC0yMDMsMjcgKzIwMywyNyBA
QCBPcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiAgICAgfQogCiAgICAgaWYgKCFiYXNlbGluZUNoaWxkKQotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKICAg
ICBpZiAoIWlzQ29sdW1uRmxvdygpICYmIGhhc09ydGhvZ29uYWxGbG93KCpiYXNlbGluZUNoaWxk
KSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQo
KmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50Pihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxp
bmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOwogICAgIGlmIChpc0NvbHVt
bkZsb3coKSAmJiAhaGFzT3J0aG9nb25hbEZsb3coKmJhc2VsaW5lQ2hpbGQpKQotICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8aW50PihtYWluQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxk
KSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPGludD4obWFpbkF4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNl
bGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOwogCi0gICAgT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9
IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGJhc2VsaW5lID0gYmFzZWxpbmVDaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICBp
ZiAoIWJhc2VsaW5lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyB8ZGlyZWN0
aW9ufCBpbnRvIGZpcnN0TGluZUJveEJhc2VsaW5lIGFuZCBzdG9wIGJhaWxpbmcgb3V0IGlmIHdl
J3JlIGEgd3JpdGluZyBtb2RlIHJvb3QuCiAgICAgICAgIC8vIFRoaXMgd291bGQgYWxzbyBmaXgg
c29tZSBjYXNlcyB3aGVyZSB0aGUgZmxleGJveCBpcyBvcnRob2dvbmFsIHRvIGl0cyBjb250YWlu
ZXIuCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiA9IGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZTsKLSAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPGludD4oc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCpiYXNl
bGluZUNoaWxkLCBkaXJlY3Rpb24pICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNv
bnRlbnRCb3goKmJhc2VsaW5lQ2hpbGQsIGRpcmVjdGlvbikgKyBiYXNlbGluZUNoaWxkLT5sb2dp
Y2FsVG9wKCkpOwogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGJhc2VsaW5lLnZh
bHVlKCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOworICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPGludD4oYmFzZWxpbmUudmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3Ao
KSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdAorc3RkOjpvcHRpb25hbDxp
bnQ+IFJlbmRlckZsZXhpYmxlQm94OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbikgY29uc3QKIHsKLSAgICBpZiAoT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9
IGZpcnN0TGluZUJhc2VsaW5lKCkpCisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8aW50PiBiYXNlbGlu
ZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkpCiAgICAgICAgIHJldHVybiBiYXNlbGluZTsKIAogICAg
IGludCBtYXJnaW5Bc2NlbnQgPSBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5U
b3AoKSA6IG1hcmdpblJpZ2h0KCk7CkBAIC00NTUsMTIgKzQ1NSwxMiBAQCBMYXlvdXRVbml0IFJl
bmRlckZsZXhpYmxlQm94OjptYWluQXhpc0NvbnRlbnRFeHRlbnQoTGF5b3V0VW5pdCBjb250ZW50
TG9naWNhbEhlaQogICAgIHJldHVybiBjb250ZW50TG9naWNhbFdpZHRoKCk7CiB9CiAKLU9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpbkF4aXNFeHRlbnRG
b3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBTaXplVHlwZSBzaXplVHlwZSwgY29uc3Qg
TGVuZ3RoJiBzaXplKQorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJv
eDo6Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
U2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBpcyB3cm9uZyBmb3Igb3J0aG9nb25hbCBmbG93cy4gSXQgc2hvdWxkIHVzZSB0aGUgZmxl
eGJveCdzIHdyaXRpbmctbW9kZSwgbm90IHRoZSBjaGlsZCdzIGluIG9yZGVyCiAgICAgLy8gdG8g
ZmlndXJlIG91dCB0aGUgbG9naWNhbCBoZWlnaHQvd2lkdGguCiAgICAgaWYgKGlzQ29sdW1uRmxv
dygpKSB7Ci0gICAgICAgIC8vIFdlIGRvbid0IGhhdmUgdG8gY2hlY2sgZm9yICJhdXRvIiBoZXJl
IC0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0IHdpbGwganVzdCByZXR1cm4gTnVsbG9wdCBm
b3IgdGhhdCBjYXNlIGFueXdheS4KKyAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBm
b3IgImF1dG8iIGhlcmUgLSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQgd2lsbCBqdXN0IHJl
dHVybiBzdGQ6Om51bGxvcHQgZm9yIHRoYXQgY2FzZSBhbnl3YXkuCiAgICAgICAgIGlmIChzaXpl
LmlzSW50cmluc2ljKCkpCiAgICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlckJveCY+KGNoaWxk
KS5sYXlvdXRJZk5lZWRlZCgpOyAvLyBGSVhNRTogU2hvdWxkIG5vdCBuZWVkIHRvIGRvIGEgbGF5
b3V0IGhlcmUuCiAgICAgICAgIHJldHVybiBjaGlsZC5jb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHQoc2l6ZVR5cGUsIHNpemUsIGNoaWxkLmxvZ2ljYWxIZWlnaHQoKSAtIGNoaWxkLmJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIExheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxk
KFJlbmRlckJveCYKICAgICAgICAgQVNTRVJUKG1haW5BeGlzRXh0ZW50IC0gbWFpbkF4aXNCb3Jk
ZXJBbmRQYWRkaW5nRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpID49IDApOwogICAgICAgICByZXR1cm4g
bWFpbkF4aXNFeHRlbnQgLSBtYWluQXhpc0JvcmRlckFuZFBhZGRpbmdFeHRlbnRGb3JDaGlsZChj
aGlsZCk7CiAgICAgfQotICAgIHJldHVybiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChj
aGlsZCwgTWFpbk9yUHJlZmVycmVkU2l6ZSwgZmxleEJhc2lzKS52YWx1ZU9yKDApOworICAgIHJl
dHVybiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWFpbk9yUHJlZmVycmVk
U2l6ZSwgZmxleEJhc2lzKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJv
eDo6bGF5b3V0RmxleEl0ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVmVjdG9yPExpbmVDb250
ZXh0PiYgbGluZUNvbnRleHRzKQpAQCAtODI1LDcgKzgyNSw3IEBAIGJvb2wgUmVuZGVyRmxleGli
bGVCb3g6OnVwZGF0ZUF1dG9NYXJnaW5zSW5Dcm9zc0F4aXMoUmVuZGVyQm94JiBjaGlsZCwgTGF5
b3V0VW5pCiAKIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZv
ckNoaWxkKFJlbmRlckJveCYgY2hpbGQpCiB7Ci0gICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGls
ZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hp
bGQpKTsKKyAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVfb3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKICAgICByZXR1cm4gYXNj
ZW50ICsgZmxvd0F3YXJlTWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpOwogfQogCkBAIC04Njks
MTIgKzg2OSwxMiBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94Ojpjcm9zc0F4aXNMZW5ndGhJc0Rl
ZmluaXRlKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIGNvbnN0CiB9CiAKICAgICAKLU9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0
UmF0aW9Vc2luZyhjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBMZW5ndGggY3Jvc3NTaXplTGVuZ3Ro
KSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29t
cHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlvVXNpbmcoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
TGVuZ3RoIGNyb3NzU2l6ZUxlbmd0aCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2hpbGQuaGFzQXNw
ZWN0UmF0aW8oKSk7CiAgICAgQVNTRVJUKGNoaWxkLmludHJpbnNpY1NpemUoKS5oZWlnaHQoKSA+
IDApOwogICAgIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNyb3NzU2l6ZTsKKyAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGNyb3NzU2l6ZTsKICAgICBpZiAoY3Jvc3NTaXplTGVuZ3Ro
LmlzRml4ZWQoKSkKICAgICAgICAgY3Jvc3NTaXplID0gTGF5b3V0VW5pdChjcm9zc1NpemVMZW5n
dGgudmFsdWUoKSk7CiAgICAgZWxzZSB7CkBAIC05MDAsMTMgKzkwMCwxMyBAQCBMYXlvdXRVbml0
IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JBc3BlY3RSYXRpb0Nyb3NzQXhp
c01pbkFuZE1heChjbwogICAgIExlbmd0aCBjcm9zc01heCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/
IGNoaWxkLnN0eWxlKCkubWF4SGVpZ2h0KCkgOiBjaGlsZC5zdHlsZSgpLm1heFdpZHRoKCk7CiAK
ICAgICBpZiAoY3Jvc3NBeGlzTGVuZ3RoSXNEZWZpbml0ZShjaGlsZCwgY3Jvc3NNYXgpKSB7Ci0g
ICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1heFZhbHVlID0gY29tcHV0ZU1haW5TaXplRnJv
bUFzcGVjdFJhdGlvVXNpbmcoY2hpbGQsIGNyb3NzTWF4KTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBtYXhWYWx1ZSA9IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RSYXRpb1Vz
aW5nKGNoaWxkLCBjcm9zc01heCk7CiAgICAgICAgIGlmIChtYXhWYWx1ZSkKICAgICAgICAgICAg
IGNoaWxkU2l6ZSA9IHN0ZDo6bWluKG1heFZhbHVlLnZhbHVlKCksIGNoaWxkU2l6ZSk7CiAgICAg
fQogICAgIAogICAgIGlmIChjcm9zc0F4aXNMZW5ndGhJc0RlZmluaXRlKGNoaWxkLCBjcm9zc01p
bikpIHsKLSAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWluVmFsdWUgPSBjb21wdXRlTWFp
blNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY3Jvc3NNaW4pOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IG1pblZhbHVlID0gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVj
dFJhdGlvVXNpbmcoY2hpbGQsIGNyb3NzTWluKTsKICAgICAgICAgaWYgKG1pblZhbHVlKQogICAg
ICAgICAgICAgY2hpbGRTaXplID0gc3RkOjptYXgobWluVmFsdWUudmFsdWUoKSwgY2hpbGRTaXpl
KTsKICAgICB9CkBAIC05MjcsMTUgKzkyNywxNSBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94Ojp1
c2VDaGlsZEFzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CiBMYXlvdXRV
bml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFNpemUpCiB7CiAgICAgTGVuZ3RoIG1h
eCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLnN0eWxlKCkubWF4V2lkdGgoKSA6IGNoaWxk
LnN0eWxlKCkubWF4SGVpZ2h0KCk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbWF4RXh0ZW50
ID0gTnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAobWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMoKSkgewogICAg
ICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWF4
U2l6ZSwgbWF4KTsKLSAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhF
eHRlbnQudmFsdWVPcihjaGlsZFNpemUpKTsKKyAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4o
Y2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRTaXplKSk7CiAgICAgfQogICAgIAog
ICAgIExlbmd0aCBtaW4gPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLm1pbldp
ZHRoKCkgOiBjaGlsZC5zdHlsZSgpLm1pbkhlaWdodCgpOwogICAgIGlmIChtaW4uaXNTcGVjaWZp
ZWRPckludHJpbnNpYygpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBjb21w
dXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52YWx1ZU9yKGNo
aWxkU2l6ZSkpOworICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBjb21wdXRlTWFp
bkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52YWx1ZV9vcihjaGlsZFNp
emUpKTsKICAgICAKICAgICBpZiAoIWlzRmxleGlibGVCb3hJbXBsKCkgJiYgbWluLmlzQXV0bygp
ICYmIG1haW5BeGlzT3ZlcmZsb3dGb3JDaGlsZChjaGlsZCkgPT0gT1ZJU0lCTEUgJiYgIShpc0Nv
bHVtbkZsb3coKSAmJiBpczxSZW5kZXJGbGV4aWJsZUJveD4oY2hpbGQpKSkgewogICAgICAgICAv
LyBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDU1MgZmxleGJveCBzZWN0aW9uIDQuNSB3
aGljaCBkZWZpbmVzIHRoZSBtaW5pbXVtIHNpemUgb2YgInB1cmUiIGZsZXgKQEAgLTk0NywxNyAr
OTQ3LDE3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZv
ck1pbkFuZE1heChjb25zdCBSZW5kZXJCb3gmIGNoaWxkCiAgICAgICAgIEFTU0VSVChjb250ZW50
U2l6ZSA+PSAwKTsKICAgICAgICAgaWYgKGNoaWxkLmhhc0FzcGVjdFJhdGlvKCkgJiYgY2hpbGQu
aW50cmluc2ljU2l6ZSgpLmhlaWdodCgpID4gMCkKICAgICAgICAgICAgIGNvbnRlbnRTaXplID0g
YWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hpbGQsIGNv
bnRlbnRTaXplKTsKLSAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwg
bWF4RXh0ZW50LnZhbHVlT3IoY29udGVudFNpemUpKTsKKyAgICAgICAgY29udGVudFNpemUgPSBz
dGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNvbnRlbnRTaXplKSk7CiAg
ICAgICAgIAogICAgICAgICBMZW5ndGggbWFpblNpemUgPSBpc0hvcml6b250YWxGbG93KCkgPyBj
aGlsZC5zdHlsZSgpLndpZHRoKCkgOiBjaGlsZC5zdHlsZSgpLmhlaWdodCgpOwogICAgICAgICBp
ZiAobWFpbkF4aXNMZW5ndGhJc0RlZmluaXRlKGNoaWxkLCBtYWluU2l6ZSkpIHsKICAgICAgICAg
ICAgIExheW91dFVuaXQgcmVzb2x2ZWRNYWluU2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZv
ckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBtYWluU2l6ZSkudmFsdWUoKTsKICAg
ICAgICAgICAgIEFTU0VSVChyZXNvbHZlZE1haW5TaXplID49IDApOwotICAgICAgICAgICAgTGF5
b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0
ZW50LnZhbHVlT3IocmVzb2x2ZWRNYWluU2l6ZSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBz
cGVjaWZpZWRTaXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVl
X29yKHJlc29sdmVkTWFpblNpemUpKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGls
ZFNpemUsIHN0ZDo6bWluKHNwZWNpZmllZFNpemUsIGNvbnRlbnRTaXplKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAodXNlQ2hpbGRBc3BlY3RSYXRpbyhjaGlsZCkpIHsKICAgICAgICAgICAgIExlbmd0
aCBjcm9zc1NpemVMZW5ndGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC5zdHlsZSgpLmhl
aWdodCgpIDogY2hpbGQuc3R5bGUoKS53aWR0aCgpOwotICAgICAgICAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gdHJhbnNmZXJyZWRTaXplID0gY29tcHV0ZU1haW5TaXplRnJvbUFzcGVjdFJhdGlv
VXNpbmcoY2hpbGQsIGNyb3NzU2l6ZUxlbmd0aCk7CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHRyYW5zZmVycmVkU2l6ZSA9IGNvbXB1dGVNYWluU2l6ZUZyb21Bc3BlY3RS
YXRpb1VzaW5nKGNoaWxkLCBjcm9zc1NpemVMZW5ndGgpOwogICAgICAgICAgICAgaWYgKHRyYW5z
ZmVycmVkU2l6ZSkgewogICAgICAgICAgICAgICAgIHRyYW5zZmVycmVkU2l6ZSA9IGFkanVzdENo
aWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4KGNoaWxkLCB0cmFuc2ZlcnJl
ZFNpemUudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6
ZSwgc3RkOjptaW4odHJhbnNmZXJyZWRTaXplLnZhbHVlKCksIGNvbnRlbnRTaXplKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDM5NGE4ZGU1
ODFmMGVmOGY1YmUzMDNkNDg1OWJmMTdmOTIwODYxODQuLjNhMTliY2JmZjVmNjM4NzUxMjdhYjlj
NjU3MjFmNmIxYzdjMDliMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5oCkBAIC00OCw4ICs0OCw4IEBAIGNsYXNzIFJlbmRlckZsZXhpYmxlQm94IDog
cHVibGljIFJlbmRlckJsb2NrIHsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIGZpbmFsOwogCiAgICAg
aW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
IGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGlu
ZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91
dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRl
OwogCkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIFJlbmRlckZsZXhpYmxlQm94IDogcHVibGljIFJl
bmRlckJsb2NrIHsKICAgICBMYXlvdXRVbml0IG1haW5BeGlzRXh0ZW50KCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBjcm9zc0F4aXNDb250ZW50RXh0ZW50KCkgY29uc3Q7CiAgICAgTGF5b3V0VW5p
dCBtYWluQXhpc0NvbnRlbnRFeHRlbnQoTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodCk7
Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZCwgU2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgc2l6ZSk7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGls
ZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBTaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBzaXplKTsK
ICAgICBXcml0aW5nTW9kZSB0cmFuc2Zvcm1lZFdyaXRpbmdNb2RlKCkgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBmbG93QXdhcmVCb3JkZXJTdGFydCgpIGNvbnN0OwogICAgIExheW91dFVuaXQgZmxv
d0F3YXJlQm9yZGVyRW5kKCkgY29uc3Q7CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUmVuZGVy
RmxleGlibGVCb3ggOiBwdWJsaWMgUmVuZGVyQmxvY2sgewogICAgIGJvb2wgbWFpbkF4aXNMZW5n
dGhJc0RlZmluaXRlKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAg
IGJvb2wgY3Jvc3NBeGlzTGVuZ3RoSXNEZWZpbml0ZShjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBM
ZW5ndGgmKSBjb25zdDsKICAgICBib29sIHVzZUNoaWxkQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVy
Qm94JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZU1haW5TaXplRnJv
bUFzcGVjdFJhdGlvVXNpbmcoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgTGVuZ3RoIGNyb3NzU2l6
ZUxlbmd0aCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlTWFp
blNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBMZW5ndGgg
Y3Jvc3NTaXplTGVuZ3RoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNGbGV4aWJs
ZUJveEltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IGQ0MjNhYzNiMzNkMjljNzEwYTUz
OTI1MTQ0YmQ4NTk0NDc4ODk4YTAuLjg5NjdhYjkxOWU0ZmZlZjAwOTI5OTI2NDQ5ZTBlMTQxZjll
YzZiMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5j
cHAKQEAgLTEwODcsNyArMTA4Nyw3IEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6YWRkRm9yY2Vk
UmVnaW9uQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBMYXlvdXRVbml0CiAgICAgICAg
IGhhc0NvbXB1dGVkQXV0b0hlaWdodCA9IHRydWU7CiAKICAgICAgICAgLy8gQ29tcHV0ZSB0aGUg
cmVnaW9uIGhlaWdodCBwcmV0ZW5kaW5nIHRoYXQgdGhlIG9mZnNldEJyZWFrSW5DdXJyZW50UmVn
aW9uIGlzIHRoZSBsb2dpY2FsSGVpZ2h0IGZvciB0aGUgYXV0by1oZWlnaHQgcmVnaW9uLgotICAg
ICAgICBMYXlvdXRVbml0IHJlZ2lvbkNvbXB1dGVkQXV0b0hlaWdodCA9IG5hbWVkRmxvd0ZyYWdt
ZW50LmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgob2Zmc2V0QnJlYWtJ
bkN1cnJlbnRSZWdpb24sIE51bGxvcHQpOworICAgICAgICBMYXlvdXRVbml0IHJlZ2lvbkNvbXB1
dGVkQXV0b0hlaWdodCA9IG5hbWVkRmxvd0ZyYWdtZW50LmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgob2Zmc2V0QnJlYWtJbkN1cnJlbnRSZWdpb24sIHN0ZDo6bnVsbG9w
dCk7CiAKICAgICAgICAgLy8gVGhlIG5ldyBoZWlnaHQgb2YgdGhpcyByZWdpb24gbmVlZHMgdG8g
YmUgc21hbGxlciB0aGFuIHRoZSBpbml0aWFsIHZhbHVlLCB0aGUgbWF4IGhlaWdodC4gQSBmb3Jj
ZWQgYnJlYWsgaXMgdGhlIG9ubHkgd2F5IHRvIGNoYW5nZSB0aGUgaW5pdGlhbAogICAgICAgICAv
LyBoZWlnaHQgb2YgYW4gYXV0by1oZWlnaHQgcmVnaW9uIGJlc2lkZXMgY29udGVudCBlbmRpbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNDc1ZjU5MTRkYzIz
OGM4NDA2MzZmYzhmMThmYWY2OTljNWFhMWJmZi4uNWNlZjY5YjE0NzIxNzI3MjMzODcxOWExMWE1
ODA0ZWE3NjJmZmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIEdyaWRUcmFjayB7CiAKICAgICB2b2lkIHNldEdyb3d0
aExpbWl0KExheW91dFVuaXQgZ3Jvd3RoTGltaXQpCiAgICAgewotICAgICAgICBtX2dyb3d0aExp
bWl0ID0gZ3Jvd3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdy
b3d0aExpbWl0LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlT3IoZ3Jvd3RoTGltaXQpKTsKKyAgICAg
ICAgbV9ncm93dGhMaW1pdCA9IGdyb3d0aExpbWl0ID09IGluZmluaXR5ID8gZ3Jvd3RoTGltaXQg
OiBzdGQ6Om1pbihncm93dGhMaW1pdCwgbV9ncm93dGhMaW1pdENhcC52YWx1ZV9vcihncm93dGhM
aW1pdCkpOwogICAgICAgICBlbnN1cmVHcm93dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VTaXplKCk7
CiAgICAgfQogCkBAIC0xNDAsMTMgKzE0MCwxMyBAQCBjbGFzcyBHcmlkVHJhY2sgewogICAgIGJv
b2wgaW5maW5pdGVseUdyb3dhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmZpbml0ZWx5R3Jvd2Fi
bGU7IH0KICAgICB2b2lkIHNldEluZmluaXRlbHlHcm93YWJsZShib29sIGluZmluaXRlbHlHcm93
YWJsZSkgeyBtX2luZmluaXRlbHlHcm93YWJsZSA9IGluZmluaXRlbHlHcm93YWJsZTsgfQogCi0g
ICAgdm9pZCBzZXRHcm93dGhMaW1pdENhcChPcHRpb25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1p
dENhcCkKKyAgICB2b2lkIHNldEdyb3d0aExpbWl0Q2FwKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gZ3Jvd3RoTGltaXRDYXApCiAgICAgewogICAgICAgICBBU1NFUlQoIWdyb3d0aExpbWl0Q2Fw
IHx8IGdyb3d0aExpbWl0Q2FwLnZhbHVlKCkgPj0gMCk7CiAgICAgICAgIG1fZ3Jvd3RoTGltaXRD
YXAgPSBncm93dGhMaW1pdENhcDsKICAgICB9CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBn
cm93dGhMaW1pdENhcCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3Jvd3RoTGltaXRDYXA7IH0KKyAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKCkgY29uc3QgeyByZXR1cm4g
bV9ncm93dGhMaW1pdENhcDsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgZ3Jvd3RoTGltaXRJc0lu
ZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV9ncm93dGhMaW1pdCA9PSBpbmZpbml0eTsgfQpAQCAt
MTYyLDcgKzE2Miw3IEBAIGNsYXNzIEdyaWRUcmFjayB7CiAgICAgTGF5b3V0VW5pdCBtX2dyb3d0
aExpbWl0IHsgMCB9OwogICAgIExheW91dFVuaXQgbV9wbGFubmVkU2l6ZSB7IDAgfTsKICAgICBM
YXlvdXRVbml0IG1fdGVtcFNpemUgeyAwIH07Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9n
cm93dGhMaW1pdENhcDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fZ3Jvd3RoTGlt
aXRDYXA7CiAgICAgYm9vbCBtX2luZmluaXRlbHlHcm93YWJsZSB7IGZhbHNlIH07CiB9OwogCkBA
IC0yODQsMTEgKzI4NCwxMSBAQCBjbGFzcyBSZW5kZXJHcmlkOjpHcmlkU2l6aW5nRGF0YSB7CiAg
ICAgVmVjdG9yPEdyaWRUcmFjayo+IGdyb3dCZXlvbmRHcm93dGhMaW1pdHNUcmFja3M7CiAgICAg
VmVjdG9yPEdyaWRJdGVtV2l0aFNwYW4+IGl0ZW1zU29ydGVkQnlJbmNyZWFzaW5nU3BhbjsKIAot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uKSB7IHJldHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGZyZWVTcGFj
ZUZvckNvbHVtbnMgOiBmcmVlU3BhY2VGb3JSb3dzOyB9Ci0gICAgdm9pZCBzZXRGcmVlU3BhY2Uo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2Up
OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pIHsgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8g
ZnJlZVNwYWNlRm9yQ29sdW1ucyA6IGZyZWVTcGFjZUZvclJvd3M7IH0KKyAgICB2b2lkIHNldEZy
ZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gZnJlZVNwYWNlKTsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNl
KCkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVTcGFjZTsgfQotICAgIHZvaWQgc2V0QXZhaWxh
YmxlU3BhY2UoT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UpIHsgbV9hdmFpbGFi
bGVTcGFjZSA9IGF2YWlsYWJsZVNwYWNlOyB9CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBhdmFpbGFibGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXZhaWxhYmxlU3BhY2U7IH0KKyAg
ICB2b2lkIHNldEF2YWlsYWJsZVNwYWNlKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlU3BhY2UpIHsgbV9hdmFpbGFibGVTcGFjZSA9IGF2YWlsYWJsZVNwYWNlOyB9CiAKICAgICBT
aXppbmdPcGVyYXRpb24gc2l6aW5nT3BlcmF0aW9uIHsgVHJhY2tTaXppbmcgfTsKIApAQCAtMzI4
LDE0ICszMjgsMTQgQEAgY2xhc3MgUmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGEgewogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2VGb3JDb2x1bW5z
OwotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZyZWVTcGFjZUZvclJvd3M7CisgICAgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2VGb3JDb2x1bW5zOworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNlRm9yUm93czsKICAgICAvLyBObyBuZWVkIHRvIHN0b3Jl
IG9uZSBwZXIgZGlyZWN0aW9uIGFzIGl0IHdpbGwgYmUgb25seSB1c2VkIGZvciBjb21wdXRhdGlv
bnMgZHVyaW5nIGVhY2ggYXhpcwogICAgIC8vIHRyYWNrIHNpemluZy4gSXQncyBjYWNoZWQgaGVy
ZSBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZSByZWxhdGl2ZSBzaXplcy4KLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBtX2F2YWlsYWJsZVNwYWNlOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gbV9hdmFpbGFibGVTcGFjZTsKIH07CiAKLXZvaWQgUmVuZGVyR3JpZDo6R3JpZFNp
emluZ0RhdGE6OnNldEZyZWVTcGFjZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LCBPcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpCit2b2lkIFJlbmRlckdyaWQ6OkdyaWRT
aXppbmdEYXRhOjpzZXRGcmVlU3BhY2UoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
biwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UpCiB7CiAgICAgaWYgKGRpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zKQogICAgICAgICBmcmVlU3BhY2VGb3JDb2x1bW5zID0gZnJlZVNw
YWNlOwpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCB1c2UgUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpIGJ1dCBpdCBkb2Vz
IG5vdCB3b3JrIGZvciBwb3NpdGlvbmVkIHN0dWZmLgogICAgIC8vIEZJWE1FOiBDb25zaWRlciBj
YWNoaW5nIHRoZSBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgdmFsdWUgdGhyb3VnaG91dCB0aGUg
bGF5b3V0LgotICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0ID0gaGFzT3ZlcnJpZGVM
b2dpY2FsQ29udGVudEhlaWdodCgpIHx8IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWlu
T3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgTnVsbG9wdCk7CisgICAg
Ym9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgPSBoYXNPdmVycmlkZUxvZ2ljYWxDb250ZW50
SGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNp
emUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOwogICAgIGlmICghaGFz
RGVmaW5pdGVMb2dpY2FsSGVpZ2h0KQogICAgICAgICBjb21wdXRlSW50cmluc2ljTG9naWNhbEhl
aWdodChzaXppbmdEYXRhKTsKICAgICBlbHNlCkBAIC02NjYsOCArNjY2LDggQEAgdm9pZCBSZW5k
ZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dp
Y2FsV2lkdGgsIExheW8KICAgICAgICAgY29uc3RfY2FzdDxSZW5kZXJHcmlkKj4odGhpcyktPnBs
YWNlSXRlbXNPbkdyaWQoSW50cmluc2ljU2l6ZUNvbXB1dGF0aW9uKTsKIAogICAgIEdyaWRTaXpp
bmdEYXRhIHNpemluZ0RhdGEobnVtVHJhY2tzKEZvckNvbHVtbnMpLCBudW1UcmFja3MoRm9yUm93
cykpOwotICAgIHNpemluZ0RhdGEuc2V0QXZhaWxhYmxlU3BhY2UoTnVsbG9wdCk7Ci0gICAgc2l6
aW5nRGF0YS5zZXRGcmVlU3BhY2UoRm9yQ29sdW1ucywgTnVsbG9wdCk7CisgICAgc2l6aW5nRGF0
YS5zZXRBdmFpbGFibGVTcGFjZShzdGQ6Om51bGxvcHQpOworICAgIHNpemluZ0RhdGEuc2V0RnJl
ZVNwYWNlKEZvckNvbHVtbnMsIHN0ZDo6bnVsbG9wdCk7CiAgICAgc2l6aW5nRGF0YS5zaXppbmdP
cGVyYXRpb24gPSBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb247CiAgICAgY29tcHV0ZVVzZWRCcmVh
ZHRoT2ZHcmlkVHJhY2tzKEZvckNvbHVtbnMsIHNpemluZ0RhdGEsIG1pbkxvZ2ljYWxXaWR0aCwg
bWF4TG9naWNhbFdpZHRoKTsKIApAQCAtNjg2LDggKzY4Niw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvCiB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KEdy
aWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQogewogICAgIEFTU0VSVChzaXppbmdEYXRhLmlzVmFs
aWRUcmFuc2l0aW9uKEZvclJvd3MpKTsKLSAgICBzaXppbmdEYXRhLnNldEF2YWlsYWJsZVNwYWNl
KE51bGxvcHQpOwotICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNlKEZvclJvd3MsIE51bGxvcHQp
OworICAgIHNpemluZ0RhdGEuc2V0QXZhaWxhYmxlU3BhY2Uoc3RkOjpudWxsb3B0KTsKKyAgICBz
aXppbmdEYXRhLnNldEZyZWVTcGFjZShGb3JSb3dzLCBzdGQ6Om51bGxvcHQpOwogICAgIHNpemlu
Z0RhdGEuc2l6aW5nT3BlcmF0aW9uID0gSW50cmluc2ljU2l6ZUNvbXB1dGF0aW9uOwogICAgIExh
eW91dFVuaXQgbWluSGVpZ2h0LCBtYXhIZWlnaHQ7CiAgICAgY29tcHV0ZVVzZWRCcmVhZHRoT2ZH
cmlkVHJhY2tzKEZvclJvd3MsIHNpemluZ0RhdGEsIG1pbkhlaWdodCwgbWF4SGVpZ2h0KTsKQEAg
LTcxMCwxMCArNzEwLDEwIEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxIZWlnaHQoR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpCiAgICAgc2l6aW5nRGF0YS5zaXpp
bmdPcGVyYXRpb24gPSBUcmFja1NpemluZzsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3Ro
IGxvZ2ljYWxIZWlnaHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0xvZ2lj
YWxIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QKK3N0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50
SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gaW50cmluc2ljTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRk
aW5nKSBjb25zdAogewogICAgIGlmICghaW50cmluc2ljTG9naWNhbEhlaWdodCkKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
bG9naWNhbEhlaWdodExlbmd0aC5pc01pbkNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIG1fbWlu
Q29udGVudEhlaWdodDsKQEAgLTcyMywxMyArNzIzLDEzIEBAIE9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExl
bmd0CiAKICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc0ZpdENvbnRlbnQoKSkgewogICAg
ICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFibGVFeHRlbnQgPSBjb250YWluaW5nQmxvY2soKS0+
YXZhaWxhYmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1pbihtX21heENvbnRlbnRIZWlnaHQudmFsdWVPcigwKSwgc3RkOjpt
YXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlT3IoMCksIGZpbGxBdmFpbGFibGVFeHRlbnQpKTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKG1fbWF4Q29udGVudEhlaWdodC52YWx1ZV9vcigwKSwg
c3RkOjptYXgobV9taW5Db250ZW50SGVpZ2h0LnZhbHVlX29yKDApLCBmaWxsQXZhaWxhYmxlRXh0
ZW50KSk7CiAgICAgfQogCiAgICAgaWYgKGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNGaWxsQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybiBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNh
bEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZykgLSBib3JkZXJBbmRQYWRkaW5nOwog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZWRGbGV4
RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNrJiB0cmFjaywgZG91YmxlIGZsZXhGYWN0b3IpCkBAIC03
MzksMTQgKzczOSwxNCBAQCBzdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxpemVkRmxleEZyYWN0
aW9uKGNvbnN0IEdyaWRUcmFjayYgdHJhY2ssIGRvdWJsZSBmbGV4RgogCiB2b2lkIFJlbmRlckdy
aWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSwgTGF5b3V0VW5pdCYgYmFz
ZVNpemVzV2l0aG91dE1heGltaXphdGlvbiwgTGF5b3V0VW5pdCYgZ3Jvd3RoTGltaXRzV2l0aG91
dE1heGltaXphdGlvbikgY29uc3QKIHsKLSAgICBjb25zdCBPcHRpb25hbDxMYXlvdXRVbml0PiBp
bml0aWFsRnJlZVNwYWNlID0gc2l6aW5nRGF0YS5mcmVlU3BhY2UoZGlyZWN0aW9uKTsKKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGluaXRpYWxGcmVlU3BhY2UgPSBzaXppbmdE
YXRhLmZyZWVTcGFjZShkaXJlY3Rpb24pOwogICAgIFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3Mg
PSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc2l6aW5nRGF0YS5jb2x1bW5UcmFja3MgOiBz
aXppbmdEYXRhLnJvd1RyYWNrczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGZsZXhpYmxlU2l6ZWRU
cmFja3NJbmRleDsKICAgICBzaXppbmdEYXRhLmNvbnRlbnRTaXplZFRyYWNrc0luZGV4LnNocmlu
aygwKTsKIAogICAgIC8vIEdyaWQgZ3V0dGVycyB3ZXJlIHJlbW92ZWQgZnJvbSBmcmVlU3BhY2Ug
YnkgdGhlIGNhbGxlciAoaWYgZnJlZVNwYWNlIGlzIGRlZmluaXRlKSwKICAgICAvLyBidXQgd2Ug
bXVzdCB1c2UgdGhlbSB0byBjb21wdXRlIHJlbGF0aXZlIChpLmUuIHBlcmNlbnRhZ2VzKSBzaXpl
cy4KLSAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heChMYXlvdXRVbml0KCksIHNpemlu
Z0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKExheW91dFVuaXQoKSkpOworICAgIExheW91
dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KExheW91dFVuaXQoKSwgc2l6aW5nRGF0YS5hdmFpbGFi
bGVTcGFjZSgpLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwogICAgIGNvbnN0IGJvb2wgaGFzRGVm
aW5pdGVGcmVlU3BhY2UgPSBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiA9PSBUcmFja1Npemlu
ZzsKIAogICAgIC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQgdHJhY2sgdmFyaWFibGVzLgpAQCAt
NzgxLDcgKzc4MSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZVVzZWRCcmVhZHRoT2ZHcmlk
VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpCiAgICAgICAgIGdyb3d0aExp
bWl0c1dpdGhvdXRNYXhpbWl6YXRpb24gKz0gdHJhY2suZ3Jvd3RoTGltaXQoKTsKICAgICAgICAg
Ly8gVGhlIGdyb3d0aCBsaW1pdCBjYXBzIG11c3QgYmUgY2xlYXJlZCBub3cgaW4gb3JkZXIgdG8g
cHJvcGVybHkgc29ydCB0cmFja3MgYnkgZ3Jvd3RoCiAgICAgICAgIC8vIHBvdGVudGlhbCBvbiBh
biBldmVudHVhbCAiTWF4aW1pemUgVHJhY2tzIi4KLSAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGlt
aXRDYXAoTnVsbG9wdCk7CisgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0Q2FwKHN0ZDo6bnVs
bG9wdCk7CiAgICAgfQogICAgIExheW91dFVuaXQgZnJlZVNwYWNlID0gaW5pdGlhbEZyZWVTcGFj
ZSA/IGluaXRpYWxGcmVlU3BhY2UudmFsdWUoKSAtIGJhc2VTaXplc1dpdGhvdXRNYXhpbWl6YXRp
b24gOiBMYXlvdXRVbml0KDApOwogCkBAIC05NzMsMTIgKzk3MywxMiBAQCBzdGF0aWMgYm9vbCBo
YXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVy
Qm94JiBjaGlsZAogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLmhh
c092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkgOiBjaGlsZC5oYXNPdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPExh
eW91dFVuaXQ+IG92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25z
dCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1
bW5zID8gY2hpbGQub3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkg
OiBjaGlsZC5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9
CiAKLXN0YXRpYyB2b2lkIHNldE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LCBPcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQorc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGVDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc2l6
ZSkKIHsKICAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpCiAgICAgICAgIGNoaWxkLnNl
dE92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChzaXplKTsKQEAgLTEw
ODAsNyArMTA4MCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bG9naWNhbEhlaWdodEZvckNo
aWxkKFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CiAgICAgLy8gSWYgfGNoaWxkfCBoYXMgYSByZWxh
dGl2ZSBsb2dpY2FsIGhlaWdodCwgd2Ugc2hvdWxkbid0IGxldCBpdCBvdmVycmlkZSBpdHMgaW50
cmluc2ljIGhlaWdodCwgd2hpY2ggaXMKICAgICAvLyB3aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGlu
IGhlcmUuIFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIGJsb2NrLWF4aXMgb3ZlcnJpZGUgc2l6ZSB0
byAtMSAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAgICAgaWYgKHNob3VsZENsZWFyT3ZlcnJp
ZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBGb3JSb3dzKSkgewot
ICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hp
bGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24sIE51bGxvcHQpOworICAgICAgICBzZXRPdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rp
b24sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGNoaWxkLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5
VGhpcyk7CiAgICAgfQogCkBAIC0xMTA0LDEzICsxMTA0LDEzIEBAIExheW91dFVuaXQgUmVuZGVy
R3JpZDo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvCiAgICAgYm9vbCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkID0gdXBkYXRlT3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVj
dGlvbiwgc2l6aW5nRGF0YSk7CiAgICAgaWYgKGlzUm93QXhpcykgewogICAgICAgICBMYXlvdXRV
bml0IG1hcmdpbkxvZ2ljYWxXaWR0aCA9IHNpemluZ0RhdGEuc2l6aW5nT3BlcmF0aW9uID09IFRy
YWNrU2l6aW5nID8gY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGRJbmxpbmVE
aXJlY3Rpb24sIGNoaWxkKSA6IG1hcmdpbkludHJpbnNpY0xvZ2ljYWxXaWR0aEZvckNoaWxkKGNo
aWxkKTsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVz
aW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgb3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50
U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbikudmFsdWVPcigwKSwgKnRo
aXMsIG51bGxwdHIpICsgbWFyZ2luTG9naWNhbFdpZHRoOworICAgICAgICByZXR1cm4gY2hpbGQu
Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBv
dmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5s
aW5lRGlyZWN0aW9uKS52YWx1ZV9vcigwKSwgKnRoaXMsIG51bGxwdHIpICsgbWFyZ2luTG9naWNh
bFdpZHRoOwogICAgIH0KIAogICAgIGlmIChvdmVycmlkZVNpemVIYXNDaGFuZ2VkICYmIChkaXJl
Y3Rpb24gIT0gRm9yQ29sdW1ucyB8fCBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbiAhPSBJbnRy
aW5zaWNTaXplQ29tcHV0YXRpb24pKQogICAgICAgICBjaGlsZC5zZXROZWVkc0xheW91dChNYXJr
T25seVRoaXMpOwogICAgIGNoaWxkLmxheW91dElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIGNoaWxk
LmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBOdWxsb3B0
KS52YWx1ZU9yKDApICsgY2hpbGQubWFyZ2luTG9naWNhbEhlaWdodCgpICsgY2hpbGQuc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpOworICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgc3RkOjpudWxsb3B0KS52YWx1ZV9vcigwKSAr
IGNoaWxkLm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSArIGNoaWxkLnNjcm9sbGJhckxvZ2ljYWxIZWln
aHQoKTsKIH0KIAogYm9vbCBSZW5kZXJHcmlkOjp1cGRhdGVPdmVycmlkZUNvbnRhaW5pbmdCbG9j
a0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemluZ0RhdGEmIHNpemluZ0RhdGEpIGNvbnN0CkBAIC0x
MTI4LDkgKzExMjgsOSBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6Om1pbkNvbnRlbnRGb3JDaGls
ZChSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlYwogICAgIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IGZsb3dBd2FyZURpcmVjdGlvbkZv
ckNoaWxkKGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICBpZiAoZGlyZWN0aW9uID09IGNoaWxkSW5s
aW5lRGlyZWN0aW9uKSB7CiAgICAgICAgIC8vIElmIHxjaGlsZHwgaGFzIGEgcmVsYXRpdmUgbG9n
aWNhbCB3aWR0aCwgd2Ugc2hvdWxkbid0IGxldCBpdCBvdmVycmlkZSBpdHMgaW50cmluc2ljIHdp
ZHRoLCB3aGljaCBpcwotICAgICAgICAvLyB3aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGhlcmUu
IFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIG92ZXJyaWRlIGxvZ2ljYWwgd2lkdGggdG8gTnVsbG9w
dCAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCisgICAgICAgIC8vIHdoYXQgd2UgYXJlIGludGVy
ZXN0ZWQgaW4gaGVyZS4gVGh1cyB3ZSBuZWVkIHRvIHNldCB0aGUgb3ZlcnJpZGUgbG9naWNhbCB3
aWR0aCB0byBzdGQ6Om51bGxvcHQgKG5vIHBvc3NpYmxlIHJlc29sdXRpb24pLgogICAgICAgICBp
ZiAoc2hvdWxkQ2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQo
Y2hpbGQsIEZvckNvbHVtbnMpKQotICAgICAgICAgICAgc2V0T3ZlcnJpZGVDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlvbiwgTnVsbG9w
dCk7CisgICAgICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBzdGQ6Om51bGxvcHQpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgd2Ugc2hvdWxkIHJldHVybiB0aGUgaW50cmlu
c2ljIHdpZHRoIG9yIHRoZSBwcmVmZXJyZWQgd2lkdGguCiAgICAgICAgIC8vIFNlZSBodHRwOi8v
bGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxM0phbi8wMjQ1Lmh0bWwK
QEAgLTExNTgsNyArMTE1OCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6bWF4Q29udGVudEZv
ckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjCiAgICAgICAgIC8v
IElmIHxjaGlsZHwgaGFzIGEgcmVsYXRpdmUgbG9naWNhbCB3aWR0aCwgd2Ugc2hvdWxkbid0IGxl
dCBpdCBvdmVycmlkZSBpdHMgaW50cmluc2ljIHdpZHRoLCB3aGljaCBpcwogICAgICAgICAvLyB3
aGF0IHdlIGFyZSBpbnRlcmVzdGVkIGluIGhlcmUuIFRodXMgd2UgbmVlZCB0byBzZXQgdGhlIGlu
bGluZS1heGlzIG92ZXJyaWRlIHNpemUgdG8gLTEgKG5vIHBvc3NpYmxlIHJlc29sdXRpb24pLgog
ICAgICAgICBpZiAoc2hvdWxkQ2xlYXJPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXpl
Rm9yQ2hpbGQoY2hpbGQsIEZvckNvbHVtbnMpKQotICAgICAgICAgICAgc2V0T3ZlcnJpZGVDb250
YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGluZURpcmVjdGlv
biwgTnVsbG9wdCk7CisgICAgICAgICAgICBzZXRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRl
bnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBzdGQ6Om51bGxvcHQp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgaWYgd2Ugc2hvdWxkIHJldHVybiB0
aGUgaW50cmluc2ljIHdpZHRoIG9yIHRoZSBwcmVmZXJyZWQgd2lkdGguCiAgICAgICAgIC8vIFNl
ZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxM0phbi8w
MjQ1Lmh0bWwKQEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNv
bnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9yTm9uU3Bhbm5pbmdJdGVtcyhHcmlkCiAg
ICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFzTWF4Q29udGVudE9yQXV0b01heFRyYWNrQnJlYWR0
aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZ3Jvd3RoTGltaXQgPSBtYXhDb250ZW50Rm9yQ2hp
bGQoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgc2l6aW5nRGF0YSk7CiAgICAgICAgIGlmICh0cmFja1Np
emUuaXNGaXRDb250ZW50KCkpCi0gICAgICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdy
b3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0
aCgpLmxlbmd0aCgpLCBzaXppbmdEYXRhLmF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKSkpOwor
ICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JM
ZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgc2l6aW5n
RGF0YS5hdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDApKSk7CiAgICAgICAgIHRyYWNrLnNldEdy
b3d0aExpbWl0KHN0ZDo6bWF4KHRyYWNrLmdyb3d0aExpbWl0KCksIGdyb3d0aExpbWl0KSk7CiAg
ICAgfQogfQpAQCAtMTQ2Miw4ICsxNDYyLDggQEAgc3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNr
R3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRUcmFjayogdHJhY2sxLCBjb25zdCBHcmlkVHIKICAg
ICBpZiAodHJhY2sxSGFzSW5maW5pdGVHcm93dGhQb3RlbnRpYWxXaXRob3V0Q2FwIHx8IHRyYWNr
Mkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcCkKICAgICAgICAgcmV0dXJuIHRy
YWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcDsKIAotICAgIExheW91dFVu
aXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazEt
Pmdyb3d0aExpbWl0KCkpOwotICAgIExheW91dFVuaXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdy
b3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazItPmdyb3d0aExpbWl0KCkpOworICAgIExheW91
dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJh
Y2sxLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2sy
LT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CiAgICAg
cmV0dXJuICh0cmFjazFMaW1pdCAtIHRyYWNrMS0+YmFzZVNpemUoKSkgPCAodHJhY2syTGltaXQg
LSB0cmFjazItPmJhc2VTaXplKCkpOwogfQogCkBAIC0xNTMyLDcgKzE1MzIsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYgdHJh
Y2tzLCBWZWN0b3I8R3JpZAogYm9vbCBSZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRlclRoYW5NaW5U
cmFja0JyZWFkdGgoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFNpemlu
Z0RhdGEmIHNpemluZ0RhdGEpCiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIHRyYWNr
cyA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzaXppbmdEYXRhLmNvbHVtblRyYWNrcyA6
IHNpemluZ0RhdGEucm93VHJhY2tzOwotICAgIGNvbnN0IExheW91dFVuaXQgbWF4U2l6ZSA9IHNp
emluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApOworICAgIGNvbnN0IExheW91dFVu
aXQgbWF4U2l6ZSA9IHNpemluZ0RhdGEuYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUoZGlyZWN0aW9u
LCBpLCBzaXppbmdEYXRhLnNpemluZ09wZXJhdGlvbik7CiAgICAgICAgIGlmIChjb21wdXRlVXNl
ZEJyZWFkdGhPZk1pbkxlbmd0aCh0cmFja1NpemUsIG1heFNpemUpID4gdHJhY2tzW2ldLmJhc2VT
aXplKCkpCkBAIC0xNTUxLDE5ICsxNTUxLDE5IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1
dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAg
ICAgaWYgKCFhdXRvUmVwZWF0VHJhY2tMaXN0TGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNpemU7CisgICAgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplOwogICAgIGlmIChpc1Jvd0F4aXMpIHsKICAgICAg
ICAgaWYgKHNpemluZ09wZXJhdGlvbiAhPSBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24pCiAgICAg
ICAgICAgICBhdmFpbGFibGVTaXplID0gIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGF2YWlsYWJsZVNpemUgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWln
aHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIE51bGxvcHQp
OworICAgICAgICBhdmFpbGFibGVTaXplID0gY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1h
aW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQp
OwogICAgICAgICBpZiAoIWF2YWlsYWJsZVNpemUpIHsKICAgICAgICAgICAgIGNvbnN0IExlbmd0
aCYgbWF4TGVuZ3RoID0gc3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCk7CiAgICAgICAgICAgICBp
ZiAoIW1heExlbmd0aC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNp
emUgPSBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbWF4TGVuZ3RoLCBOdWxs
b3B0KTsKKyAgICAgICAgICAgICAgICBhdmFpbGFibGVTaXplID0gY29tcHV0ZUNvbnRlbnRMb2dp
Y2FsSGVpZ2h0KE1heFNpemUsIG1heExlbmd0aCwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoYXZhaWxhYmxlU2l6ZSkKLSAgICAgICAgICAgIGF2YWlsYWJsZVNpemUgPSBj
b25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KGF2YWlsYWJsZVNpemUudmFs
dWUoKSwgTnVsbG9wdCk7CisgICAgICAgICAgICBhdmFpbGFibGVTaXplID0gY29uc3RyYWluQ29u
dGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChhdmFpbGFibGVTaXplLnZhbHVlKCksIHN0ZDo6
bnVsbG9wdCk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc1RvRnVsZmlsbE1pbmltdW1TaXplID0g
ZmFsc2U7CkBAIC0xOTI2LDcgKzE5MjYsNyBAQCBzdGF0aWMgY29uc3QgU3R5bGVDb250ZW50QWxp
Z25tZW50RGF0YSYgY29udGVudEFsaWdubWVudE5vcm1hbEJlaGF2aW9yR3JpZCgpCiAKIHZvaWQg
UmVuZGVyR3JpZDo6YXBwbHlTdHJldGNoQWxpZ25tZW50VG9UcmFja3NJZk5lZWRlZChHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkU2l6aW5nRGF0YSYgc2l6aW5nRGF0YSkK
IHsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmcmVlU3BhY2UgPSBzaXppbmdEYXRhLmZyZWVT
cGFjZShkaXJlY3Rpb24pOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gZnJlZVNwYWNl
ID0gc2l6aW5nRGF0YS5mcmVlU3BhY2UoZGlyZWN0aW9uKTsKICAgICBpZiAoIWZyZWVTcGFjZQog
ICAgICAgICB8fCBmcmVlU3BhY2UudmFsdWUoKSA8PSAwCiAgICAgICAgIHx8IChkaXJlY3Rpb24g
PT0gRm9yQ29sdW1ucyAmJiBzdHlsZSgpLnJlc29sdmVkSnVzdGlmeUNvbnRlbnREaXN0cmlidXRp
b24oY29udGVudEFsaWdubWVudE5vcm1hbEJlaGF2aW9yR3JpZCgpKSAhPSBDb250ZW50RGlzdHJp
YnV0aW9uU3RyZXRjaCkKQEAgLTE5NTEsNyArMTk1MSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6YXBw
bHlTdHJldGNoQWxpZ25tZW50VG9UcmFja3NJZk5lZWRlZChHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24KICAgICAgICAgYXV0byYgdHJhY2sgPSB0cmFja3NbdHJhY2tJbmRleF07CiAgICAgICAgIHRy
YWNrLnNldEJhc2VTaXplKHRyYWNrLmJhc2VTaXplKCkgKyBzaXplVG9JbmNyZWFzZSk7CiAgICAg
fQotICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNlKGRpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4oMCkpOworICAgIHNpemluZ0RhdGEuc2V0RnJlZVNwYWNlKGRpcmVjdGlvbiwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PigwKSk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3Jp
ZEl0ZW1zKEdyaWRTaXppbmdEYXRhJiBzaXppbmdEYXRhKQpAQCAtMTk2OCw4ICsxOTY4LDggQEAg
dm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMoR3JpZFNpemluZ0RhdGEmIHNpemluZ0Rh
dGEpCiAKICAgICAgICAgLy8gQmVjYXVzZSB0aGUgZ3JpZCBhcmVhIGNhbm5vdCBiZSBzdHlsZWQs
IHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0CiAgICAgICAgIC8vIHRoZSBncmlkIGJyZWFkdGggdG8g
YWNjb3VudCBmb3IgJ2JveC1zaXppbmcnLgotICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBv
bGRPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGggPSBjaGlsZC0+aGFz
T3ZlcnJpZGVDb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGgoKSA/IGNoaWxkLT5vdmVycmlkZUNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IExheW91dFVuaXQoKTsKLSAgICAg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb2xkT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodCA9IGNoaWxkLT5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxI
ZWlnaHQoKSA/IGNoaWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVp
Z2h0KCkgOiBMYXlvdXRVbml0KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
b2xkT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoID0gY2hpbGQtPmhh
c092ZXJyaWRlQ29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoKCkgPyBjaGlsZC0+b3ZlcnJpZGVD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkgOiBMYXlvdXRVbml0KCk7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb2xkT3ZlcnJpZGVDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbEhlaWdodCA9IGNoaWxkLT5oYXNPdmVycmlkZUNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxIZWlnaHQoKSA/IGNoaWxkLT5vdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCkgOiBMYXlvdXRVbml0KCk7CiAKICAgICAgICAgTGF5b3V0VW5pdCBvdmVycmlk
ZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGggPSBncmlkQXJlYUJyZWFkdGhGb3JD
aGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMoKmNoaWxkLCBGb3JDb2x1bW5zLCBzaXppbmdE
YXRhKTsKICAgICAgICAgTGF5b3V0VW5pdCBvdmVycmlkZUNvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0ID0gZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGRJbmNsdWRpbmdBbGlnbm1lbnRP
ZmZzZXRzKCpjaGlsZCwgRm9yUm93cywgc2l6aW5nRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaAppbmRleCBhNzY2NWFjMGMzMTI2ZmZkYjhiOWM5YjQyYmFiZDJmMjJkZGM4
YzI1Li43YjVlZjZlZmVmNWE0MWNiODdiZmFkMmZiMGVmNzM1MjBmZTI3OWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgUmVuZGVy
R3JpZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAgICAgYm9vbCBpc1JlbmRlckdyaWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQm
IG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9n
aWNhbEhlaWdodExlbmd0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhl
aWdodCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhl
aWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGlu
ZykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjbGFzcyBHcmlkSXRlcmF0b3I7CiAgICAgY2xhc3Mg
R3JpZFNpemluZ0RhdGE7CkBAIC0yMjgsOCArMjI4LDggQEAgY2xhc3MgUmVuZGVyR3JpZCBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBH
cmlkQXJlYT4gbV9ncmlkSXRlbUFyZWE7CiAgICAgT3JkZXJJdGVyYXRvciBtX29yZGVySXRlcmF0
b3I7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX21pbkNvbnRlbnRIZWlnaHQ7Ci0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9tYXhDb250ZW50SGVpZ2h0OworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gbV9taW5Db250ZW50SGVpZ2h0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gbV9tYXhDb250ZW50SGVpZ2h0OwogCiAgICAgaW50IG1fc21hbGxlc3RDb2x1bW5T
dGFydDsKICAgICBpbnQgbV9zbWFsbGVzdFJvd1N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggNWJiY2MwMDM5MDVhYWI5YTY4NzY1YWY3YzdjZTgyZGVj
NjE3NGRjYS4uZjhiYzM2NGI0ZTg4NjJiOTgwZmQ4OWY2NTVjN2E1Y2FhMWQ3OWQ2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00NDY2LDcgKzQ0NjYsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRoIHRo
ZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUgdXMuCiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RlZFN1
YnBpeGVsT2Zmc2V0ID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6ZShkZXZpY2VQaXhl
bFNuYXBwZWRPZmZzZXRGb3JUaGlzTGF5ZXIpOwotICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5z
Zm9ybWVkUGFpbnRpbmdJbmZvKHRoaXMsIExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBp
eGVscyh0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKSwKKyAg
ICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyh0aGlzLCBMYXlvdXRS
ZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Qp
LCBkZXZpY2VTY2FsZUZhY3RvcikpLAogICAgICAgICBwYWludGluZ0luZm8ucGFpbnRCZWhhdmlv
ciwgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCwgcGFpbnRpbmdJbmZvLnN1YnRyZWVQYWludFJvb3Qs
IHBhaW50aW5nSW5mby5vdmVybGFwVGVzdFJlcXVlc3RzKTsKICAgICBwYWludExheWVyQ29udGVu
dHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZs
YWdzKTsKICAgICBjb250ZXh0LnNldENUTShvbGRUcmFuc2Zyb20pOwpAQCAtNTEwMCw3ICs1MTAw
LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIq
IHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKIAogICAgIC8vIENoZWNrIGZvciBoaXQgdGVz
dCBvbiBiYWNrZmFjZSBpZiBiYWNrZmFjZS12aXNpYmlsaXR5IGlzICdoaWRkZW4nCiAgICAgaWYg
KGxvY2FsVHJhbnNmb3JtU3RhdGUgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLmJhY2tmYWNlVmlzaWJp
bGl0eSgpID09IEJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbikgewotICAgICAgICBPcHRpb25hbDxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4gaW52ZXJ0ZWRNYXRyaXggPSBsb2NhbFRyYW5zZm9ybVN0YXRl
LT5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gaW52ZXJ0ZWRNYXRyaXggPSBsb2NhbFRyYW5zZm9ybVN0
YXRlLT5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtLmludmVyc2UoKTsKICAgICAgICAgLy8gSWYgdGhl
IHotdmVjdG9yIG9mIHRoZSBtYXRyaXggaXMgbmVnYXRpdmUsIHRoZSBiYWNrIGlzIGZhY2luZyB0
b3dhcmRzIHRoZSB2aWV3ZXIuCiAgICAgICAgIGlmIChpbnZlcnRlZE1hdHJpeCAmJiBpbnZlcnRl
ZE1hdHJpeC52YWx1ZSgpLm0zMygpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRl
eCAwMzI0NzIzOTQzMzM5NzQ5OTA4YWM3MjlhMDg4NWQ0ZjE5MjkxNTViLi5iY2MzMDU3M2ExOTRm
NDcxYjRmOGM4M2QyYzFlMzBhYWMzYThiOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNzkwLDkgKzc5MCw5IEBAIGNsYXNzIENv
bXB1dGVkT2Zmc2V0cyB7CiAgICAgICAgIHJldHVybiBtX2Zyb21BbmNlc3RvckdyYXBoaWNzTGF5
ZXIudmFsdWUoKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21BbmNl
c3RvckdyYXBoaWNzTGF5ZXI7Ci0gICAgT3B0aW9uYWw8TGF5b3V0U2l6ZT4gbV9mcm9tUGFyZW50
R3JhcGhpY3NMYXllcjsKLSAgICBPcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21QcmltYXJ5R3Jh
cGhpY3NMYXllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbUFuY2VzdG9y
R3JhcGhpY3NMYXllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IG1fZnJvbVBhcmVu
dEdyYXBoaWNzTGF5ZXI7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRTaXplPiBtX2Zyb21Qcmlt
YXJ5R3JhcGhpY3NMYXllcjsKICAgICAKICAgICBjb25zdCBSZW5kZXJMYXllciYgbV9yZW5kZXJM
YXllcjsKICAgICAvLyBMb2NhdGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgcmVuZGVyZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggYjcxNjNlNjZiM2M2
ZmYxMTg3NzFhYzk4OTA5NzZjM2IzYmU0NjZmYi4uMmM2YThlZTdjNjVjNjEyYTg1ODYyZDRlMWI1
NzYwNzQyZmYxMDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJv
dW5kaW5nQm94UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNlCiB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEZ1bmN0aW9uIHBhaW50RnVuY3Rpb24pCiB7CiAgICAg
aW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwotICAgIGludCBmaXJzdFZpc2libGVJdGVt
ID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3Io
bV9pbmRleE9mZnNldCk7CisgICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJz
dFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7
CiAgICAgaW50IGVuZEluZGV4ID0gZmlyc3RWaXNpYmxlSXRlbSArIG51bVZpc2libGVJdGVtcyhD
b25zaWRlclBhZGRpbmc6Olllcyk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0VmlzaWJsZUl0ZW07
IGkgPCBsaXN0SXRlbXNTaXplICYmIGkgPCBlbmRJbmRleDsgKytpKQogICAgICAgICBwYWludEZ1
bmN0aW9uKHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIGkpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIGJv
b2wgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoaW50IGlu
ZGV4KQogCiBib29sIFJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZShpbnQgaW5kZXgp
CiB7Ci0gICAgaW50IGZpcnN0SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRl
UGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RJbmRl
eCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9v
cihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2li
bGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEKICAgICAgICAgPyBtX2luZGV4T2ZGaXJzdFZp
c2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEudmFsdWUoKSArIG51bWJlck9mVmlzaWJs
ZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkKICAgICAgICAgOiBtX2luZGV4T2Zmc2V0ICsgbnVtVmlz
aWJsZUl0ZW1zKCk7CkBAIC02NjksOCArNjY5LDggQEAgaW50IFJlbmRlckxpc3RCb3g6Om51bWJl
ck9mVmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkgY29uc3QKIAogdm9pZCBSZW5kZXJMaXN0
Qm94Ojpjb21wdXRlRmlyc3RJbmRleGVzVmlzaWJsZUluUGFkZGluZ1RvcEJvdHRvbUFyZWFzKCkK
IHsKLSAgICBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEgPSBO
dWxsb3B0OwotICAgIG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90dG9t
QXJlYSA9IE51bGxvcHQ7CisgICAgbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRp
bmdUb3BBcmVhID0gc3RkOjpudWxsb3B0OworICAgIG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1J
bnNpZGVQYWRkaW5nQm90dG9tQXJlYSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGludCBtYXhpbXVt
TnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdUb3BBcmVhID0gcGFkZGluZ1RvcCgpIC8gaXRl
bUhlaWdodCgpOwogICAgIGlmIChtYXhpbXVtTnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdU
b3BBcmVhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAppbmRleCBm
MjgwYzA3M2Q1N2U2YThhYjE3MGQ5OWM2MmVjNzRkZmEwZDZiNzM4Li43MzAwM2U5OWZlMmE4Yjdl
YTk5ZTQ2M2NhMmI5Zjc2YTM3YzhjMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmgKQEAgLTE3NSw4ICsxNzUsOCBAQCBjbGFzcyBSZW5kZXJMaXN0Qm94IGZpbmFs
IDogcHVibGljIFJlbmRlckJsb2NrRmxvdywgcHVibGljIFNjcm9sbGFibGVBcmVhIHsKICAgICBp
bnQgbV9vcHRpb25zV2lkdGg7CiAgICAgaW50IG1faW5kZXhPZmZzZXQ7CiAKLSAgICBPcHRpb25h
bDxpbnQ+IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYTsKLSAg
ICBPcHRpb25hbDxpbnQ+IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nQm90
dG9tQXJlYTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRl
bUluc2lkZVBhZGRpbmdUb3BBcmVhOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2luZGV4T2ZG
aXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWE7CiAKICAgICBSZWZQdHI8U2Ny
b2xsYmFyPiBtX3ZCYXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaAppbmRleCAyNzViMWFhNzkxMGZjNzg5NmIyODM4MWUzZGQ2MzNkZTJjNDFlZGRhLi42ZTBi
YTc1NTI1YThlZjU0NGJjOGJkYjRkMDJiMDZlNzgzMzNiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTIyLDggKzEyMiw4IEBAIGNsYXNzIFJlbmRl
ck1lbnVMaXN0IGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxlQm94LCBwcml2YXRlIFBvcHVw
TWVudUNsaWVudCB7CiAgICAgewogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5l
UG9zaXRpb24oYmFzZWxpbmUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAg
fQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQotICAgIE9wdGlvbmFs
PGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRp
cmVjdGlvbik7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6Omlu
bGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQogCiAgICAgdm9pZCBnZXRJdGVtQmFja2dy
b3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgQ29sb3ImLCBib29sJiBpdGVtSGFzQ3VzdG9t
QmFja2dyb3VuZENvbG9yKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggN2QyZmI0MzYyODE1NGI5NDI1NjZmOTk3
ODljZjUwOGY1MmI0OTdhZC4uOTIxMGQ3NDZmZmYwMTVlYjI3NDIxMDkyN2UwZTQ1ZTE0MjU3ZWUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
ZXQuY3BwCkBAIC00MTUsNyArNDE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtblNl
dDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVpZ2h0KCkgY29uc3QKICAgICBMYXlvdXRVbml0IGF2YWls
YWJsZUhlaWdodCA9IG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5jb2x1bW5IZWlnaHRBdmFpbGFi
bGUoKTsKICAgICBMYXlvdXRVbml0IG1heENvbHVtbkhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCA/
IGF2YWlsYWJsZUhlaWdodCA6IFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQoKTsK
ICAgICBpZiAoIW11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkp
Ci0gICAgICAgIG1heENvbHVtbkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVs
dGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29s
U3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBOdWxsb3B0KS52YWx1ZU9yKG1heENvbHVtbkhlaWdo
dCkpOworICAgICAgICBtYXhDb2x1bW5IZWlnaHQgPSBzdGQ6Om1pbihtYXhDb2x1bW5IZWlnaHQs
IG11bHRpY29sQmxvY2stPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCBtdWx0
aWNvbFN0eWxlLmxvZ2ljYWxNYXhIZWlnaHQoKSwgc3RkOjpudWxsb3B0KS52YWx1ZV9vcihtYXhD
b2x1bW5IZWlnaHQpKTsKICAgICByZXR1cm4gaGVpZ2h0QWRqdXN0ZWRGb3JTZXRPZmZzZXQobWF4
Q29sdW1uSGVpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKaW5kZXggNjExZjQ2ZDJlMmRkYjU5ZjM5ZDBmODUxZWQ0M2Q0YmE5Nzk1ODA4Yy4uMzg2YjUy
NzgwMDJmMzA1NDUyNTUzN2MwNmY2YmMxMzkzYzJjYjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0zNzMsOSArMzczLDkgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQoY29uc3Qg
TGVuZ3RoJgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdHlsZUxvZ2ljYWxIZWlnaHQudmFs
dWUoKSAtIGJvcmRlcnM7CiAgICAgfSBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNQZXJj
ZW50T3JDYWxjdWxhdGVkKCkpCi0gICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2lj
YWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4g
Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhlaWdodCkudmFsdWVf
b3IoMCk7CiAgICAgZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0LmlzSW50cmluc2ljKCkpCi0g
ICAgICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhz
dHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJv
cmRlckFuZFBhZGRpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhzdHlsZUxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxI
ZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmcsIGJvcmRlckFuZFBhZGRpbmcpLnZhbHVlX29yKDAp
OwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQoKTsKQEAgLTE0NjgsMzcgKzE0NjgsMzcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6dXBk
YXRlRmlyc3RMZXR0ZXIoUmVuZGVyVHJlZU11dGF0aW9uSXNBbGxvd2VkKQogCiBpbnQgUmVuZGVy
VGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBs
aW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgp
LnZhbHVlT3JDb21wdXRlKFsmXSB7CisgICAgcmV0dXJuIHZhbHVlT3JDb21wdXRlKGZpcnN0TGlu
ZUJhc2VsaW5lKCksIFsmXSB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCb3g6OmJhc2VsaW5lUG9z
aXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9k
ZSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVu
ZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7
CiAgICAgLy8gVGFibGVzIGFyZSBza2lwcGVkIHdoZW4gY29tcHV0aW5nIGFuIGlubGluZS1ibG9j
aydzIGJhc2VsaW5lLgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIHN0
ZDo6b3B0aW9uYWw8aW50PigpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6OmZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBUaGUgYmFzZWxpbmUgb2YgYSAndGFi
bGUnIGlzIHRoZSBzYW1lIGFzIHRoZSAnaW5saW5lLXRhYmxlJyBiYXNlbGluZSBwZXIgQ1NTIDMg
RmxleGJveCAoQ1NTIDIuMQogICAgIC8vIGRvZXNuJ3QgZGVmaW5lIHRoZSBiYXNlbGluZSBvZiBh
ICd0YWJsZScgb25seSBhbiAnaW5saW5lLXRhYmxlJykuCiAgICAgLy8gVGhpcyBpcyBhbHNvIG5l
ZWRlZCB0byBwcm9wZXJseSBkZXRlcm1pbmUgdGhlIGJhc2VsaW5lIG9mIGEgY2VsbCBpZiBpdCBo
YXMgYSB0YWJsZSBjaGlsZC4KIAogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpKQotICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxp
bnQ+KCk7CiAKICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAKICAgICBjb25zdCBSZW5k
ZXJUYWJsZVNlY3Rpb24qIHRvcE5vbkVtcHR5U2VjdGlvbiA9IHRoaXMtPnRvcE5vbkVtcHR5U2Vj
dGlvbigpOwogICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KCk7CiAKLSAg
ICBpZiAoT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IHRvcE5vbkVtcHR5U2VjdGlvbi0+Zmlyc3RM
aW5lQmFzZWxpbmUoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4odG9wTm9uRW1wdHlT
ZWN0aW9uLT5sb2dpY2FsVG9wKCkgKyBiYXNlbGluZS52YWx1ZSgpKTsKKyAgICBpZiAoc3RkOjpv
cHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5maXJzdExpbmVCYXNl
bGluZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHRvcE5vbkVtcHR5U2Vj
dGlvbi0+bG9naWNhbFRvcCgpICsgYmFzZWxpbmUudmFsdWUoKSk7CiAKICAgICAvLyBGSVhNRTog
QSB0YWJsZSByb3cgYWx3YXlzIGhhcyBhIGJhc2VsaW5lIHBlciBDU1MgMi4xLiBXaWxsIHRoaXMg
cmV0dXJuIHRoZSByaWdodCB2YWx1ZT8KLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAg
IHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4oKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJUYWJs
ZTo6b3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlclJl
Z2lvbiogcmVnaW9uLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3ksIFBh
aW50UGhhc2UgcGhhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4
IGZkOTdhMDEwMjU5YmMxZjIyNjEyODllMDYxN2NmZTcwN2Q3YzYyYTAuLjgyZWQyNzc2ZjNiNzI4
ZTA2NGZmZGVhNzdhMTcxMmQzMGU5ODgxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oCkBAIC0yOTEsOCArMjkxLDggQEAgY2xhc3MgUmVuZGVyVGFibGUgOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFp
bmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24p
IG92ZXJyaWRlOwogCiAgICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25z
dCBmaW5hbDsKIAogICAgIFJlbmRlclRhYmxlQ29sKiBzbG93Q29sRWxlbWVudCh1bnNpZ25lZCBj
b2wsIGJvb2wqIHN0YXJ0RWRnZSwgYm9vbCogZW5kRWRnZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYzAwY2JjYzk5MTNkMTNk
NzZmMTdhZmQ4MzJjODY4ZjJhYjc4ZWI5ZC4uZTFhN2VhYTc1OWFkMzMxNjliYTExMWEzNWY5MTVh
NGMxZThjNzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Y2Vs
bEJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8y
MDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxlcy5odG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUgYmFz
ZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNlbGluZSBvZgogICAgIC8vIHRoZSBmaXJzdCBpbi1m
bG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBvciB0aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cg
aW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gSWYgdGhlcmUKICAgICAvLyBpcyBu
byBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJvdywgdGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20g
b2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxsIGJveC4KLSAgICByZXR1cm4gZmlyc3RMaW5lQmFz
ZWxpbmUoKS52YWx1ZU9yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2Fs
SGVpZ2h0KCkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGJvcmRl
ckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZvaWQgbWFya0NlbGxEaXJ0eVdoZW5Db2xsYXBzZWRCb3JkZXJDaGFuZ2VzKFJl
bmRlclRhYmxlQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5jcHAKaW5kZXggZDg4NWU4ZTJjNjI1YzZkYzBiNWYyZGZmMTU3OTM0M2Vl
NWVlNTEwZi4uN2I0N2Q2Y2U2YTgzYzg4ZmJjN2JmMWRlMmJjNTZhODYwNGNkZTU5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTkx
NywxNiArOTE3LDE2IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNhbGNPdXRlckJvcmRl
cigpCiAgICAgbV9vdXRlckJvcmRlckVuZCA9IGNhbGNPdXRlckJvcmRlckVuZCgpOwogfQogCi1P
cHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAogewogICAgIGlmICghbV9ncmlkLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOwogCiAg
ICAgaW50IGZpcnN0TGluZUJhc2VsaW5lID0gbV9ncmlkWzBdLmJhc2VsaW5lOwogICAgIGlmIChm
aXJzdExpbmVCYXNlbGluZSkKICAgICAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lICsgcm91
bmRUb0ludChtX3Jvd1Bvc1swXSk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IHJlc3VsdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPGludD4gcmVzdWx0OwogICAgIGNvbnN0IFJvdyYgZmlyc3RSb3cgPSBtX2dy
aWRbMF0ucm93OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlyc3RSb3cuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3MgPSBmaXJzdFJvdy5hdChpKTsKQEAg
LTkzNCw3ICs5MzQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICAvLyBPbmx5IGNlbGxzIHdpdGggY29udGVudCBo
YXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwgJiYgY2VsbC0+Y29udGVudExvZ2ljYWxI
ZWlnaHQoKSkgewogICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHJvdW5kVG9JbnQoY2VsbC0+
bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29u
dGVudExvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1
bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5kaWRhdGUpOworICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYXgocmVzdWx0LnZhbHVlX29yKGNhbmRpZGF0ZSksIGNhbmRpZGF0ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaAppbmRleCAzMzMyYzgxZmE0YjVhZjgxMDZmYTkwZjgzMDJiYjhkNDcxMTJlNmUwLi5hZjlh
YjQ0ZDNkYmI0NTM4MjQ3YjEzNDljMDY3MjUzMTQ4ODVmMzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNz
IFJlbmRlclRhYmxlU2VjdGlvbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCb3ggewogCiAgICAgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCkgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZENlbGwoUmVuZGVyVGFibGVDZWxsKiwg
UmVuZGVyVGFibGVSb3cqIHJvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAppbmRleCBjZTE1NmVjOGY5OGY5MGM2ODFlNzA2YjU4ODgyNWM0Y2JiZGJmNDg1Li4zN2Iw
NzQxODc4YTFiZDk4MzhlYzYyNTNkZWQwNzE5MTAwMWZjYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC04MDAsNyArODAwLDcgQEAgdm9pZCBSZW5kZXJUZXh0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8
Y29uc3QgRm8KICAgICBib29sIGlzU3BhY2UgPSBmYWxzZTsKICAgICBib29sIGZpcnN0V29yZCA9
IHRydWU7CiAgICAgYm9vbCBmaXJzdExpbmUgPSB0cnVlOwotICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBuZXh0QnJlYWthYmxlOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG5leHRCcmVha2Fi
bGU7CiAgICAgdW5zaWduZWQgbGFzdFdvcmRCb3VuZGFyeSA9IDA7CiAKICAgICAvLyBOb24temVy
byBvbmx5IHdoZW4ga2VybmluZyBpcyBlbmFibGVkLCBpbiB3aGljaCBjYXNlIHdlIG1lYXN1cmUg
d29yZHMgd2l0aCB0aGVpciB0cmFpbGluZwpAQCAtODIyLDcgKzgyMiw3IEBAIHZvaWQgUmVuZGVy
VGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNo
U2V0PGNvbnN0IEZvCiAgICAgICAgIG1pbmltdW1TdWZmaXhMZW5ndGggPSBhZnRlciA8IDAgPyAy
IDogYWZ0ZXI7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdEdseXBoTGVmdE92ZXJm
bG93OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdEdseXBoTGVmdE92ZXJmbG93OwogCiAg
ICAgYm9vbCBicmVha05CU1AgPSBzdHlsZS5hdXRvV3JhcCgpICYmIHN0eWxlLm5ic3BNb2RlKCkg
PT0gU1BBQ0U7CiAgICAgCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3Qg
Rm8KICAgICAgICAgICAgIGZsb2F0IGN1cnJNaW5XaWR0aCA9IDA7CiAgICAgICAgICAgICBib29s
IGlzU3BhY2UgPSAoaiA8IGxlbikgJiYgaXNTcGFjZUFjY29yZGluZ1RvU3R5bGUoYywgc3R5bGUp
OwogICAgICAgICAgICAgZmxvYXQgdzsKLSAgICAgICAgICAgIE9wdGlvbmFsPGZsb2F0PiB3b3Jk
VHJhaWxpbmdTcGFjZVdpZHRoOworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29y
ZFRyYWlsaW5nU3BhY2VXaWR0aDsKICAgICAgICAgICAgIGlmIChpc1NwYWNlKQogICAgICAgICAg
ICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChm
YWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAgIGlmICh3b3JkVHJhaWxpbmdTcGFjZVdpZHRoKQpA
QCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAKICAgICAgICAgICAg
ICAgICBpZiAoc3VmZml4U3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgZmxvYXQgc3VmZml4
V2lkdGg7Ci0gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPGZsb2F0PiB3b3JkVHJhaWxpbmdT
cGFjZVdpZHRoOworICAgICAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB3b3Jk
VHJhaWxpbmdTcGFjZVdpZHRoOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXNTcGFjZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxp
bmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdv
cmRUcmFpbGluZ1NwYWNlV2lkdGgpCkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIFJlbmRlclRl
eHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNl
dDxjb25zdCBGbwogICAgICAgICB9CiAgICAgfQogCi0gICAgZ2x5cGhPdmVyZmxvdy5sZWZ0ID0g
Zmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1ZU9yKGdseXBoT3ZlcmZsb3cubGVmdCk7CisgICAg
Z2x5cGhPdmVyZmxvdy5sZWZ0ID0gZmlyc3RHbHlwaExlZnRPdmVyZmxvdy52YWx1ZV9vcihnbHlw
aE92ZXJmbG93LmxlZnQpOwogCiAgICAgaWYgKChuZWVkc1dvcmRTcGFjaW5nICYmIGxlbiA+IDEp
IHx8IChpZ25vcmluZ1NwYWNlcyAmJiAhZmlyc3RXb3JkKSkKICAgICAgICAgY3Vyck1heFdpZHRo
ICs9IHdvcmRTcGFjaW5nOwpAQCAtMTY3Niw5ICsxNjc2LDkgQEAgdm9pZCBSZW5kZXJUZXh0Ojpt
b21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxh
c3RUeXAKICAgICBzZWN1cmVUZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRD
aGFyYWN0ZXIpOwogfQogCi1TdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1ZpZXcodW5zaWdu
ZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAorU3RyaW5nVmlldyBSZW5k
ZXJUZXh0OjpzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBzdG9wKSBjb25zdAogewotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZU9y
KHRleHRMZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29y
KHRleHRMZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NF
UlQoZGVzdGluYXRpb24gPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5h
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCA2MTM5OTAwM2Rl
MmMyZmJlODE5NDE5ODIwODFjYzJjMjkwNmI4YzA1Li45Y2EwZjU0MDZkZjQzNzRlOGZiNGUwOThi
NTA3MDU1MzFjNDRmMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAg
LTE2Niw3ICsxNjYsNyBAQCBjbGFzcyBSZW5kZXJUZXh0IDogcHVibGljIFJlbmRlck9iamVjdCB7
CiAgICAgdm9pZCBkZWxldGVMaW5lQm94ZXNCZWZvcmVTaW1wbGVMaW5lTGF5b3V0KCk7CiAgICAg
Y29uc3QgU2ltcGxlTGluZUxheW91dDo6TGF5b3V0KiBzaW1wbGVMaW5lTGF5b3V0KCkgY29uc3Q7
CiAKLSAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQgPSAwLCBPcHRpb25h
bDx1bnNpZ25lZD4gc3RvcCA9IE51bGxvcHQpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgc3RyaW5n
Vmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHN0b3AgPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCB0b3BPZkZpcnN0VGV4dCgpIGNv
bnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
aAppbmRleCAwOTZmNTY0YmZmNDI4NWE4MTE1NzUxZTE3NjNlZTMxMDA4ZjViMmJkLi5kMDkzYjc5
MDU2MGJhZDhmNTMwYzU0MTViM2ExZGZhNmI1Y2M4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtOTksOCArOTksOCBAQCBjbGFzcyBSZW5k
ZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIFJlbmRlckZsZXhpYmxl
Qm94IHsKICAgICB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlv
bihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsKICAgICB9Ci0gICAg
T3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9Ci0gICAgT3B0aW9uYWw8aW50PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9u
KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxv
Y2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZsZXhpYmxl
Qm94SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA4MTMwZDJlODIwNmIwYzA0MTZkZGQ5YWYxYmU0
MWQ0MjY0MTViM2MxLi41NzRiYjE0NDkzNzMxOTc1ZDRjYjBjMjUyYjM5ZWIyODcyMGQ5NDJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC04NDUsNyArODQ1LDcg
QEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rp
b25TdWJ0cmVlUm9vdCYgcm9vdCkgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVmlldzo6
c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFy
dFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRQb3MsIFNlbGVj
dGlvblJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpCit2b2lkIFJlbmRlclZpZXc6OnNldFNl
bGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFy
dFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywg
U2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKIHsKICAgICAvLyBNYWtlIHN1
cmUgYm90aCBvdXIgc3RhcnQgYW5kIGVuZCBvYmplY3RzIGFyZSBkZWZpbmVkLgogICAgIC8vIENo
ZWNrIHd3dy5tc25iYy5jb20gYW5kIHRyeSBjbGlja2luZyBhcm91bmQgdG8gZmluZCB0aGUgY2Fz
ZSB3aGVyZSB0aGlzIGhhcHBlbmVkLgpAQCAtODgyLDcgKzg4Miw3IEBAIHZvaWQgUmVuZGVyVmll
dzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBz
dGFydFBvcywKICAgICBzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhzdGFydCwgc3RhcnRQ
b3MsIGVuZCwgZW5kUG9zLCBibG9ja1JlcGFpbnRNb2RlKTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3
OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0
LCBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQb3MsIGNvbnN0IFJlbmRlck9iamVjdCogZW5kLCBP
cHRpb25hbDx1bnNpZ25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFp
bnRNb2RlKQordm9pZCBSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhj
b25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBv
cywgY29uc3QgUmVuZGVyT2JqZWN0KiBlbmQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBv
cywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKIHsKICAgICAvLyBDb21w
dXRlIHRoZSB2aXNpYmxlIHNlbGVjdGlvbiBlbmQgcG9pbnRzIGZvciBlYWNoIG9mIHRoZSBzdWJ0
cmVlcy4KICAgICBSZW5kZXJTdWJ0cmVlc01hcCByZW5kZXJTdWJ0cmVlc01hcDsKQEAgLTkwNyw3
ICs5MDcsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVz
KGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnQsIE9wdGlvbgogICAgICAgICAgICAgU2VsZWN0aW9u
U3VidHJlZURhdGEgc2VsZWN0aW9uRGF0YSA9IHJlbmRlclN1YnRyZWVzTWFwLmdldCgmcm9vdCk7
CiAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25DbGVhcigpKSB7CiAgICAg
ICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25TdGFydChub2RlLT5yZW5kZXJl
cigpKTsKLSAgICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFNlbGVjdGlvblN0YXJ0UG9z
KG5vZGUgPT0gc3RhcnROb2RlID8gc3RhcnRQb3MgOiBPcHRpb25hbDx1bnNpZ25lZD4oMCkpOwor
ICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0U2VsZWN0aW9uU3RhcnRQb3Mobm9kZSA9
PSBzdGFydE5vZGUgPyBzdGFydFBvcyA6IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+KDApKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25FbmQo
bm9kZS0+cmVuZGVyZXIoKSk7CkBAIC0xMTAyLDcgKzExMDIsNyBAQCB2b2lkIFJlbmRlclZpZXc6
OmFwcGx5U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwg
U2VsZWN0aQogICAgICAgICBzZWxlY3RlZEJsb2NrSW5mby52YWx1ZS0+cmVwYWludCgpOwogfQog
Ci12b2lkIFJlbmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRl
cmVyLCBPcHRpb25hbDx1bnNpZ25lZD4mIHN0YXJ0T2Zmc2V0LCBSZW5kZXJPYmplY3QqJiBlbmRS
ZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+JiBlbmRPZmZzZXQpIGNvbnN0Cit2b2lkIFJlbmRl
clZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiYgc3RhcnRPZmZzZXQsIFJlbmRlck9iamVjdComIGVuZFJlbmRlcmVy
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgZW5kT2Zmc2V0KSBjb25zdAogewogICAgIHN0YXJ0
UmVuZGVyZXIgPSBtX3NlbGVjdGlvblVuc3BsaXRTdGFydDsKICAgICBzdGFydE9mZnNldCA9IG1f
c2VsZWN0aW9uVW5zcGxpdFN0YXJ0UG9zOwpAQCAtMTExMyw3ICsxMTEzLDcgQEAgdm9pZCBSZW5k
ZXJWaWV3OjpnZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgT3B0aW9u
YWw8dW5zaWduZWQ+Jgogdm9pZCBSZW5kZXJWaWV3OjpjbGVhclNlbGVjdGlvbigpCiB7CiAgICAg
bGF5ZXIoKS0+cmVwYWludEJsb2NrU2VsZWN0aW9uR2FwcygpOwotICAgIHNldFNlbGVjdGlvbihu
dWxscHRyLCBOdWxsb3B0LCBudWxscHRyLCBOdWxsb3B0LCBSZXBhaW50TmV3TWludXNPbGQpOwor
ICAgIHNldFNlbGVjdGlvbihudWxscHRyLCBzdGQ6Om51bGxvcHQsIG51bGxwdHIsIHN0ZDo6bnVs
bG9wdCwgUmVwYWludE5ld01pbnVzT2xkKTsKIH0KIAogYm9vbCBSZW5kZXJWaWV3OjpwcmludGlu
ZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA2ZTg0Zjgz
OTQzZmMxMWZkMTk3MTc1ODgzZmE4Yjk0NWEyODg0N2FkLi40YTEzYWFjOGVhNThjMzM4NTA5NjFh
NzcxYmZiMWRkYWU2YTc3NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgK
QEAgLTg0LDggKzg0LDggQEAgY2xhc3MgUmVuZGVyVmlldyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJC
bG9ja0Zsb3csIHB1YmxpYyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiAgICAgdm9pZCBwYWludEJv
eERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAK
ICAgICBlbnVtIFNlbGVjdGlvblJlcGFpbnRNb2RlIHsgUmVwYWludE5ld1hPUk9sZCwgUmVwYWlu
dE5ld01pbnVzT2xkLCBSZXBhaW50Tm90aGluZyB9OwotICAgIHZvaWQgc2V0U2VsZWN0aW9uKFJl
bmRlck9iamVjdCogc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2Jq
ZWN0KiBlbmRPYmplY3QsIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRQb3MsIFNlbGVjdGlvblJlcGFp
bnRNb2RlID0gUmVwYWludE5ld1hPUk9sZCk7Ci0gICAgdm9pZCBnZXRTZWxlY3Rpb24oUmVuZGVy
T2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+JiBzdGFydE9mZnNldCwg
UmVuZGVyT2JqZWN0KiYgZW5kUmVuZGVyZXIsIE9wdGlvbmFsPHVuc2lnbmVkPiYgZW5kT2Zmc2V0
KSBjb25zdDsKKyAgICB2b2lkIHNldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqIHN0YXJ0LCBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmRPYmplY3QsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgPSBSZXBh
aW50TmV3WE9ST2xkKTsKKyAgICB2b2lkIGdldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFy
dFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgc3RhcnRPZmZzZXQsIFJlbmRlck9i
amVjdComIGVuZFJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiYgZW5kT2Zmc2V0KSBj
b25zdDsKICAgICB2b2lkIGNsZWFyU2VsZWN0aW9uKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBzZWxl
Y3Rpb25VbnNwbGl0U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvblVuc3BsaXRTdGFy
dDsgfQogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uVW5zcGxpdEVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VsZWN0aW9uVW5zcGxpdEVuZDsgfQpAQCAtMzI1LDcgKzMyNSw3IEBAIGNsYXNzIFJl
bmRlclZpZXcgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93LCBwdWJsaWMgU2VsZWN0aW9u
U3VidHJlZVJvb3QgewogCiAgICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRy
ZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgT3B0aW9uYWw8dW5zaWduZWQ+
IHN0YXJ0UG9zLCBjb25zdCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyLCBPcHRpb25hbDx1bnNp
Z25lZD4gZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKTsKKyAg
ICB2b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKGNvbnN0IFJlbmRlck9iamVjdCog
c3RhcnRSZW5kZXJlciwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRQb3MsIGNvbnN0IFJl
bmRlck9iamVjdCogZW5kUmVuZGVyZXIsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGVuZFBvcywg
U2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSk7CiAgICAgdm9pZCBjbGVhclN1
YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmLCBTZWxlY3Rpb25SZXBh
aW50TW9kZSwgT2xkU2VsZWN0aW9uRGF0YSYpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2VsZWN0
aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmLCBTZWxlY3Rpb25SZXBhaW50TW9kZSk7
CiAgICAgdm9pZCBhcHBseVN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJv
b3QmLCBTZWxlY3Rpb25SZXBhaW50TW9kZSwgY29uc3QgT2xkU2VsZWN0aW9uRGF0YSYpOwpAQCAt
MzM3LDggKzMzNyw4IEBAIGNsYXNzIFJlbmRlclZpZXcgZmluYWwgOiBwdWJsaWMgUmVuZGVyQmxv
Y2tGbG93LCBwdWJsaWMgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogCiAgICAgUmVuZGVyT2JqZWN0
KiBtX3NlbGVjdGlvblVuc3BsaXRTdGFydCB7IG51bGxwdHIgfTsKICAgICBSZW5kZXJPYmplY3Qq
IG1fc2VsZWN0aW9uVW5zcGxpdEVuZCB7IG51bGxwdHIgfTsKLSAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQb3M7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1f
c2VsZWN0aW9uVW5zcGxpdEVuZFBvczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3Nl
bGVjdGlvblVuc3BsaXRTdGFydFBvczsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX3Nl
bGVjdGlvblVuc3BsaXRFbmRQb3M7CiAKICAgICAvLyBJbmNsdWRlIHRoaXMgUmVuZGVyVmlldy4K
ICAgICB1aW50NjRfdCBtX3JlbmRlcmVyQ291bnQgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oCmluZGV4IDBkMTkzODUyOWRiNzk0MjUw
YWI2ZjA4NTJjNWQ3NTQyNjc1ZjJjYWQuLmM3Mzk5ZWY5NmQ5YWMxYTk1ZWZiYmExMjE2NjBiNDZm
Y2U5NjM2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25T
dWJ0cmVlUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0
cmVlUm9vdC5oCkBAIC00Nyw4ICs0Nyw4IEBAIGNsYXNzIFNlbGVjdGlvblN1YnRyZWVSb290IHsK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVj
dGlvblN0YXJ0UG9zOwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9z
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25TdGFydFBvczsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9zOwogICAgICAgICBT
ZWxlY3RlZE9iamVjdE1hcCBzZWxlY3RlZE9iamVjdHM7CiAgICAgICAgIFNlbGVjdGVkQmxvY2tN
YXAgc2VsZWN0ZWRCbG9ja3M7CiAgICAgfTsKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgU2VsZWN0
aW9uU3VidHJlZVJvb3QgewogICAgIHB1YmxpYzoKICAgICAgICAgU2VsZWN0aW9uU3VidHJlZURh
dGEoKSA9IGRlZmF1bHQ7CiAKLSAgICAgICAgU2VsZWN0aW9uU3VidHJlZURhdGEoUmVuZGVyT2Jq
ZWN0KiBzZWxlY3Rpb25TdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9z
LCBSZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVuZCwgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlv
bkVuZFBvcykKKyAgICAgICAgU2VsZWN0aW9uU3VidHJlZURhdGEoUmVuZGVyT2JqZWN0KiBzZWxl
Y3Rpb25TdGFydCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uU3RhcnRQb3MsIFJl
bmRlck9iamVjdCogc2VsZWN0aW9uRW5kLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rp
b25FbmRQb3MpCiAgICAgICAgICAgICA6IG1fc2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uU3RhcnQp
CiAgICAgICAgICAgICAsIG1fc2VsZWN0aW9uU3RhcnRQb3Moc2VsZWN0aW9uU3RhcnRQb3MpCiAg
ICAgICAgICAgICAsIG1fc2VsZWN0aW9uRW5kKHNlbGVjdGlvbkVuZCkKQEAgLTY2LDkgKzY2LDkg
QEAgY2xhc3MgU2VsZWN0aW9uU3VidHJlZVJvb3QgewogICAgICAgICB9CiAKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uU3Rh
cnQ7IH0KLSAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9zKCkgY29u
c3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydFBvczsgfQorICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBzZWxlY3Rpb25TdGFydFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9u
U3RhcnRQb3M7IH0KICAgICAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdGlvbkVuZDsgfQotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc2Vs
ZWN0aW9uRW5kUG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmRQb3M7IH0KKyAgICAg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gc2VsZWN0aW9uRW5kUG9zKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rpb25FbmRQb3M7IH0KICAgICAgICAgYm9vbCBzZWxlY3Rpb25DbGVhcigpIGNv
bnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiAhbV9zZWxlY3Rpb25TdGFydApAQCAt
ODMsMjIgKzgzLDIyIEBAIGNsYXNzIFNlbGVjdGlvblN1YnRyZWVSb290IHsKICAgICAgICAgICAg
IGVuZFBvcyA9IG1fc2VsZWN0aW9uRW5kUG9zLnZhbHVlKCk7CiAgICAgICAgIH0KICAgICAgICAg
dm9pZCBzZXRTZWxlY3Rpb25TdGFydChSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0KSB7IG1f
c2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydDsgfQotICAgICAgICB2b2lkIHNldFNlbGVj
dGlvblN0YXJ0UG9zKE9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25TdGFydFBvcykgeyBtX3Nl
bGVjdGlvblN0YXJ0UG9zID0gc2VsZWN0aW9uU3RhcnRQb3M7fQorICAgICAgICB2b2lkIHNldFNl
bGVjdGlvblN0YXJ0UG9zKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNlbGVjdGlvblN0YXJ0UG9z
KSB7IG1fc2VsZWN0aW9uU3RhcnRQb3MgPSBzZWxlY3Rpb25TdGFydFBvczt9CiAgICAgICAgIHZv
aWQgc2V0U2VsZWN0aW9uRW5kKFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kKSB7IG1fc2VsZWN0
aW9uRW5kID0gc2VsZWN0aW9uRW5kOyB9Ci0gICAgICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5kUG9z
KE9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25FbmRQb3MpIHsgbV9zZWxlY3Rpb25FbmRQb3Mg
PSBzZWxlY3Rpb25FbmRQb3M7fQorICAgICAgICB2b2lkIHNldFNlbGVjdGlvbkVuZFBvcyhzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBzZWxlY3Rpb25FbmRQb3MpIHsgbV9zZWxlY3Rpb25FbmRQb3Mg
PSBzZWxlY3Rpb25FbmRQb3M7fQogICAgICAgICB2b2lkIGNsZWFyU2VsZWN0aW9uKCkKICAgICAg
ICAgewogICAgICAgICAgICAgbV9zZWxlY3Rpb25TdGFydCA9IG51bGxwdHI7Ci0gICAgICAgICAg
ICBtX3NlbGVjdGlvblN0YXJ0UG9zID0gTnVsbG9wdDsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9u
U3RhcnRQb3MgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX3NlbGVjdGlvbkVuZCA9IG51
bGxwdHI7Ci0gICAgICAgICAgICBtX3NlbGVjdGlvbkVuZFBvcyA9IE51bGxvcHQ7CisgICAgICAg
ICAgICBtX3NlbGVjdGlvbkVuZFBvcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVuZGVyT2JqZWN0KiBtX3NlbGVjdGlvblN0YXJ0IHsgbnVsbHB0
ciB9OwotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rpb25TdGFydFBvczsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gbV9zZWxlY3Rpb25TdGFydFBvczsKICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBtX3NlbGVjdGlvbkVuZCB7IG51bGxwdHIgfTsKLSAgICAgICAgT3B0
aW9uYWw8dW5zaWduZWQ+IG1fc2VsZWN0aW9uRW5kUG9zOworICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBtX3NlbGVjdGlvbkVuZFBvczsKICAgICB9OwogCiAgICAgdHlwZWRlZiBIYXNo
TWFwPFNlbGVjdGlvblN1YnRyZWVSb290KiwgU2VsZWN0aW9uU3VidHJlZURhdGE+IFJlbmRlclN1
YnRyZWVzTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwCmluZGV4IDA3MWZiMzA5ODFjZTk2YTQxM2U0YTE0YzA1ZmM2Njc0MDExMGRhYjMuLjVmODA5
ZDg4MDA3YzFkM2FkZDRiODI2ZWQ5NjllMTIwNWQ1NjhhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTQwMCwxMSArNDAwLDExIEBAIGNs
YXNzIExpbmVTdGF0ZSB7CiAgICAgZmxvYXQgbG9naWNhbExlZnRPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2ljYWxMZWZ0T2Zmc2V0OyB9CiAgICAgY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0
b3I6OlRleHRGcmFnbWVudCYgb3ZlcmZsb3dlZEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9v
dmVyZmxvd2VkRnJhZ21lbnQ7IH0KICAgICBib29sIGhhc1RyYWlsaW5nV2hpdGVzcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoOyB9Ci0gICAgT3B0aW9uYWw8
VGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudD4gbGFzdEZyYWdtZW50KCkgY29uc3QK
KyAgICBzdGQ6Om9wdGlvbmFsPFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ+IGxh
c3RGcmFnbWVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9mcmFnbWVudHMuc2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIG1fZnJhZ21lbnRzLmxhc3QoKTsKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGJvb2wg
aXNXaGl0ZXNwYWNlT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lk
dGggJiYgbV9ydW5zV2lkdGggPT0gbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0aDsgfQogICAgIGJv
b2wgZml0cyhmbG9hdCBleHRyYSkgY29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVXaWR0aCA+PSBt
X3J1bnNXaWR0aCArIGV4dHJhOyB9CkBAIC04MDcsNyArODA3LDcgQEAgc3RhdGljIEVUZXh0QWxp
Z24gdGV4dEFsaWduRm9yTGluZShjb25zdCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6U3R5bGUmIHN0
eWxlLCBib28KICAgICByZXR1cm4gdGV4dEFsaWduOwogfQogCi1zdGF0aWMgdm9pZCBjbG9zZUxp
bmVFbmRpbmdBbmRBZGp1c3RSdW5zKExpbmVTdGF0ZSYgbGluZSwgTGF5b3V0OjpSdW5WZWN0b3Im
IHJ1bnMsIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0UnVuSW5kZXhPZlByZXZpb3VzTGluZSwgdW5z
aWduZWQmIGxpbmVDb3VudCwKK3N0YXRpYyB2b2lkIGNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1
bnMoTGluZVN0YXRlJiBsaW5lLCBMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gbGFzdFJ1bkluZGV4T2ZQcmV2aW91c0xpbmUsIHVuc2lnbmVkJiBsaW5lQ291
bnQsCiAgICAgY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3ImIHRleHRGcmFnbWVudEl0ZXJhdG9y
LCBib29sIGxhc3RMaW5lSW5GbG93KQogewogICAgIGlmICghcnVucy5zaXplKCkgfHwgKGxhc3RS
dW5JbmRleE9mUHJldmlvdXNMaW5lICYmIHJ1bnMuc2l6ZSgpIC0gMSA9PSBsYXN0UnVuSW5kZXhP
ZlByZXZpb3VzTGluZS52YWx1ZSgpKSkKQEAgLTgzOSw3ICs4MzksNyBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVUZXh0UnVucyhMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgUmVuZGVyQmxvY2tGbG93JiBm
bG93LCB1bnNpZwogICAgIExpbmVTdGF0ZSBsaW5lOwogICAgIGJvb2wgaXNFbmRPZkNvbnRlbnQg
PSBmYWxzZTsKICAgICBUZXh0RnJhZ21lbnRJdGVyYXRvciB0ZXh0RnJhZ21lbnRJdGVyYXRvciA9
IFRleHRGcmFnbWVudEl0ZXJhdG9yKGZsb3cpOwotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0
UnVuSW5kZXhPZlByZXZpb3VzTGluZTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0
UnVuSW5kZXhPZlByZXZpb3VzTGluZTsKICAgICBkbyB7CiAgICAgICAgIGZsb3cuc2V0TG9naWNh
bEhlaWdodChsaW5lSGVpZ2h0ICogbGluZUNvdW50ICsgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSk7
CiAgICAgICAgIExpbmVTdGF0ZSBwcmV2aW91c0xpbmUgPSBsaW5lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4
IGVjMDI4NjUwNzA2NmIzMTliYzc3ZjE2ZDU4ZjgzMGNkOTlmZjM0ZDYuLjk1YTM3NDg1ZTUxNWMy
YWExMzEzMmJmOTMwY2QwYTM2MTBjZWVmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTk0LDExICs5NCwx
MSBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExh
eW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogICAgIHRleHRQYWludGVyLnNldEZvbnQoc3R5
bGUuZm9udENhc2NhZGUoKSk7CiAgICAgdGV4dFBhaW50ZXIuc2V0VGV4dFBhaW50U3R5bGUoY29t
cHV0ZVRleHRQYWludFN0eWxlKGZsb3cuZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbykpOwogCi0g
ICAgT3B0aW9uYWw8VGV4dERlY29yYXRpb25QYWludGVyPiB0ZXh0RGVjb3JhdGlvblBhaW50ZXI7
CisgICAgc3RkOjpvcHRpb25hbDxUZXh0RGVjb3JhdGlvblBhaW50ZXI+IHRleHREZWNvcmF0aW9u
UGFpbnRlcjsKICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAhPSBUZXh0
RGVjb3JhdGlvbk5vbmUpIHsKICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCogdGV4dFJlbmRlcmVy
ID0gY2hpbGRyZW5PZlR5cGU8UmVuZGVyVGV4dD4oZmxvdykuZmlyc3QoKTsKICAgICAgICAgaWYg
KHRleHRSZW5kZXJlcikgewotICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyID0gVGV4
dERlY29yYXRpb25QYWludGVyKHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCksICp0ZXh0UmVuZGVyZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHRE
ZWNvcmF0aW9uUGFpbnRlci5lbXBsYWNlKHBhaW50SW5mby5jb250ZXh0KCksIHN0eWxlLnRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KCksICp0ZXh0UmVuZGVyZXIsIGZhbHNlKTsKICAgICAgICAgICAg
IHRleHREZWNvcmF0aW9uUGFpbnRlci0+c2V0Rm9udChzdHlsZS5mb250Q2FzY2FkZSgpKTsKICAg
ICAgICAgICAgIHRleHREZWNvcmF0aW9uUGFpbnRlci0+c2V0QmFzZWxpbmUoc3R5bGUuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggMTFmMjgzMWJmZmQwNTEzYjM0MjFhMTFi
N2Y5MWFmNjBkYzNjYzNhNy4uZWQ3NjExZWY4OTA1MTA4N2IyMzE4NmE3YTA0MWM0ZDUxNjBhNjhi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0IFdvcmRUcmFpbGluZ1NwYWNlIHsKICAgICB7CiAg
ICAgfQogCi0gICAgV1RGOjpPcHRpb25hbDxmbG9hdD4gd2lkdGgoSGFzaFNldDxjb25zdCBGb250
Kj4mIGZhbGxiYWNrRm9udHMpCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGgoSGFzaFNl
dDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMpCiAgICAgewogICAgICAgICBpZiAobV9zdGF0
ZSA9PSBXb3JkVHJhaWxpbmdTcGFjZVN0YXRlOjpDb21wdXRlZCkKICAgICAgICAgICAgIHJldHVy
biBtX3dpZHRoOwpAQCAtODUsNyArODUsNyBAQCBzdHJ1Y3QgV29yZFRyYWlsaW5nU3BhY2Ugewog
cHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFdvcmRUcmFpbGluZ1NwYWNlU3RhdGUgeyBVbmluaXRp
YWxpemVkLCBDb21wdXRlZCB9OwogICAgIFdvcmRUcmFpbGluZ1NwYWNlU3RhdGUgbV9zdGF0ZSB7
IFdvcmRUcmFpbGluZ1NwYWNlU3RhdGU6OlVuaW5pdGlhbGl6ZWQgfTsKLSAgICBXVEY6Ok9wdGlv
bmFsPGZsb2F0PiBtX3dpZHRoOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG1fd2lkdGg7CiAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5bGU7CiAgICAgVGV4dExheW91dCogbV90ZXh0TGF5
b3V0IHsgbnVsbHB0ciB9OwogfTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBjbGFzcyBCcmVha2luZ0Nv
bnRleHQgewogICAgICAgICBtX2hhbmdzQXRFbmQgPSBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lk
IGNvbW1pdExpbmVCcmVha0F0Q3VycmVudFdpZHRoKFJlbmRlck9iamVjdCYgb2JqZWN0LCB1bnNp
Z25lZCBvZmZzZXQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrID0gT3B0aW9uYWw8
dW5zaWduZWQ+KCkpCisgICAgdm9pZCBjb21taXRMaW5lQnJlYWtBdEN1cnJlbnRXaWR0aChSZW5k
ZXJPYmplY3QmIG9iamVjdCwgdW5zaWduZWQgb2Zmc2V0ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gbmV4dEJyZWFrID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4oKSkKICAgICB7CiAgICAg
ICAgIG1fd2lkdGguY29tbWl0KCk7CiAgICAgICAgIG1fbGluZUJyZWFrSGlzdG9yeS5tb3ZlVG8o
b2JqZWN0LCBvZmZzZXQsIG5leHRCcmVhayk7CkBAIC0yMTAsMTQgKzIxMCwxNCBAQCBjbGFzcyBC
cmVha2luZ0NvbnRleHQgewogCiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiB0aGlzLT5hdCgwKS5yZW5kZXJlcigpOyB9CiAgICAgICAgIHVuc2lnbmVkIG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLm9mZnNldCgpOyB9Ci0gICAgICAgIE9w
dGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB0
aGlzLT5hdCgwKS5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsgfQorICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB0aGlz
LT5hdCgwKS5uZXh0QnJlYWthYmxlUG9zaXRpb24oKTsgfQogICAgICAgICBib29sIGF0VGV4dFBh
cmFncmFwaFNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLmF0VGV4dFBhcmFn
cmFwaFNlcGFyYXRvcigpOyB9CiAgICAgICAgIFVDaGFyIHByZXZpb3VzSW5TYW1lTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIHRoaXMtPmF0KDApLnByZXZpb3VzSW5TYW1lTm9kZSgpOyB9CiAgICAgICAg
IGNvbnN0IElubGluZUl0ZXJhdG9yJiBnZXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHRoaXMt
PmF0KGkpOyB9OwogICAgICAgICBjb25zdCBJbmxpbmVJdGVyYXRvciYgY3VycmVudCgpIGNvbnN0
IHsgcmV0dXJuIGdldCgwKTsgfQogICAgICAgICBzaXplX3QgaGlzdG9yeUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXMtPnNpemUoKTsgfQogCi0gICAgICAgIHZvaWQgbW92ZVRvKFJlbmRlck9i
amVjdCYgb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQsIE9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJl
YWsgPSBOdWxsb3B0KQorICAgICAgICB2b2lkIG1vdmVUbyhSZW5kZXJPYmplY3QmIG9iamVjdCwg
dW5zaWduZWQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWsgPSBzdGQ6
Om51bGxvcHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHB1c2goWyZdKElubGluZUl0ZXJhdG9y
JiBtb2RpZnlNZSkgewogICAgICAgICAgICAgICAgIG1vZGlmeU1lLm1vdmVUbyhvYmplY3QsIG9m
ZnNldCwgbmV4dEJyZWFrKTsKQEAgLTY2Miw3ICs2NjIsNyBAQCBpbmxpbmUgdm9pZCBlbnN1cmVD
aGFyYWN0ZXJHZXRzTGluZUJveChMaW5lV2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSYgbGluZVdo
aXRlcwogICAgIGxpbmVXaGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlLnN0b3BJZ25vcmluZ1NwYWNl
cyhJbmxpbmVJdGVyYXRvcigwLCB0ZXh0UGFyYWdyYXBoU2VwYXJhdG9yLnJlbmRlcmVyKCksIHRl
eHRQYXJhZ3JhcGhTZXBhcmF0b3Iub2Zmc2V0KCkpKTsKIH0KIAotaW5saW5lIHZvaWQgdHJ5SHlw
aGVuYXRpbmcoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgdW5zaWduZWQgY29uc2VjdXRpdmVIeXBo
ZW5hdGVkTGluZXMsIGludCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lc0xpbWl0LCBpbnQgbWlu
aW11bVByZWZpeExpbWl0LCBpbnQgbWluaW11bVN1ZmZpeExpbWl0LCB1bnNpZ25lZCBsYXN0U3Bh
Y2UsIHVuc2lnbmVkIHBvcywgZmxvYXQgeFBvcywgaW50IGF2YWlsYWJsZVdpZHRoLCBib29sIGlz
Rml4ZWRQaXRjaCwgYm9vbCBjb2xsYXBzZVdoaXRlU3BhY2UsIGludCBsYXN0U3BhY2VXb3JkU3Bh
Y2luZywgSW5saW5lSXRlcmF0b3ImIGxpbmVCcmVhaywgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHRC
cmVha2FibGUsIGJvb2wmIGh5cGhlbmF0ZWQpCitpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhS
ZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5l
cywgaW50IGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzTGltaXQsIGludCBtaW5pbXVtUHJlZml4
TGltaXQsIGludCBtaW5pbXVtU3VmZml4TGltaXQsIHVuc2lnbmVkIGxhc3RTcGFjZSwgdW5zaWdu
ZWQgcG9zLCBmbG9hdCB4UG9zLCBpbnQgYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNGaXhlZFBpdGNo
LCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSwgaW50IGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBJbmxp
bmVJdGVyYXRvciYgbGluZUJyZWFrLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWth
YmxlLCBib29sJiBoeXBoZW5hdGVkKQogewogICAgIC8vIE1hcCAnaHlwaGVuYXRlLWxpbWl0LXti
ZWZvcmUsYWZ0ZXJ9OiBhdXRvOycgdG8gMi4KICAgICB1bnNpZ25lZCBtaW5pbXVtUHJlZml4TGVu
Z3RoOwpAQCAtNzQwLDcgKzc0MCw3IEBAIGlubGluZSBmbG9hdCBCcmVha2luZ0NvbnRleHQ6OmNv
bXB1dGVBZGRpdGlvbmFsQmV0d2VlbldvcmRzV2lkdGgoUmVuZGVyVGV4dCYgcmVuCiAgICAgd29y
ZE1lYXN1cmVtZW50LnN0YXJ0T2Zmc2V0ID0gbGFzdFNwYWNlOwogICAgIAogICAgIGZsb2F0IGFk
ZGl0aW9uYWxUZW1wV2lkdGggPSAwOwotICAgIFdURjo6T3B0aW9uYWw8ZmxvYXQ+IHdvcmRUcmFp
bGluZ1NwYWNlV2lkdGg7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd29yZFRyYWlsaW5nU3Bh
Y2VXaWR0aDsKICAgICBpZiAoY3VycmVudENoYXJhY3RlciA9PSAnICcpCiAgICAgICAgIHdvcmRU
cmFpbGluZ1NwYWNlV2lkdGggPSB3b3JkVHJhaWxpbmdTcGFjZS53aWR0aChmYWxsYmFja0ZvbnRz
KTsKICAgICBpZiAod29yZFRyYWlsaW5nU3BhY2VXaWR0aCkKQEAgLTg3MCw3ICs4NzAsNyBAQCBp
bmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYg
d29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgbWlkV29yZEJyZWFrID0gbV93aWR0
aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcgKyBjaGFyV2lkdGggPiBtX3dpZHRoLmF2YWlsYWJs
ZVdpZHRoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJy
ZWFrYWJsZVBvc2l0aW9uID0gbV9jdXJyZW50Lm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBuZXh0QnJlYWthYmxlUG9zaXRpb24gPSBtX2N1
cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCk7CiAgICAgICAgIGJvb2wgYmV0d2VlbldvcmRz
ID0gYyA9PSAnXG4nIHx8IChtX2N1cnJXUyAhPSBQUkUgJiYgIW1fYXRTdGFydCAmJiBpc0JyZWFr
YWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yLCBtX2N1cnJlbnQub2Zmc2V0
KCksIG5leHRCcmVha2FibGVQb3NpdGlvbiwgYnJlYWtOQlNQLCBpc0xvb3NlQ0pLTW9kZSwga2Vl
cEFsbFdvcmRzKQogICAgICAgICAgICAgJiYgKHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9u
ZSB8fCAobV9jdXJyZW50LnByZXZpb3VzSW5TYW1lTm9kZSgpICE9IHNvZnRIeXBoZW4pKSk7CiAg
ICAgICAgIG1fY3VycmVudC5zZXROZXh0QnJlYWthYmxlUG9zaXRpb24obmV4dEJyZWFrYWJsZVBv
c2l0aW9uKTsKQEAgLTk3Miw3ICs5NzIsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6
OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBs
YXN0IGJyZWFraW5nIHBvc2l0aW9uIGlzIGEgc29mdC1oeXBoZW4uCiAgICAgICAgICAgICAgICAg
ICAgIGlmICghaHlwaGVuYXRlZCAmJiBzdHlsZS5oeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsYXN0QnJlYWtpbmdQ
b3NpdG9uOworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
bGFzdEJyZWFraW5nUG9zaXRvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBudWxscHRyOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fbGluZUJyZWFrSGlzdG9yeS5vZmZzZXQoKSB8fCBtX2xpbmVC
cmVha0hpc3RvcnkubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0QnJlYWtpbmdQb3NpdG9uID0gbV9saW5lQnJlYWtIaXN0b3J5Lm9mZnNl
dCgpOwpAQCAtOTgzLDcgKzk4Myw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFu
ZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXJBdEJyZWFraW5nUG9zaXRpb24gPSBtX2N1cnJl
bnQucmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChsYXN0QnJlYWtpbmdQb3NpdG9uKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3B0aW9uYWw8VUNoYXI+IGNoYXJhY3RlckJlZm9yZUJyZWFraW5nUG9zaXRpb247
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxVQ2hhcj4gY2hhcmFj
dGVyQmVmb3JlQnJlYWtpbmdQb3NpdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBXaGVuIGxhc3QgYnJlYWtpbmcgcG9zaXRpb24gcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUg
Y3VycmVudCBjb250ZXh0LCB3ZSBuZWVkIHRvIGxvb2sgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIGZy
b20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcHJldmlvdXMgbm9uLWVtcHR5
IHRleHQgcmVuZGVyZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0QnJl
YWtpbmdQb3NpdG9uLnZhbHVlKCkpCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCBpbmxpbmUgSW5saW5l
SXRlcmF0b3IgQnJlYWtpbmdDb250ZXh0OjpvcHRpbWFsTGluZUJyZWFrTG9jYXRpb25Gb3JUcmFp
bGluZ1dvcmQoKQogICAgICAgICByZXR1cm4gbGluZUJyZWFrOwogICAgIGJvb2wgaXNMb29zZUNK
S01vZGUgPSBtX3JlbmRlclRleHRJbmZvLnRleHQgIT0gJnJlbmRlclRleHQgJiYgbV9yZW5kZXJU
ZXh0SW5mby5saW5lQnJlYWtJdGVyYXRvci5pc0xvb3NlQ0pLTW9kZSgpOwogICAgIGJvb2wgYnJl
YWtOQlNQID0gbV9hdXRvV3JhcCAmJiBtX2N1cnJlbnRTdHlsZS0+bmJzcE1vZGUoKSA9PSBTUEFD
RTsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gbGluZUJy
ZWFrLm5leHRCcmVha2FibGVQb3NpdGlvbigpOworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IG5leHRCcmVha2FibGVQb3NpdGlvbiA9IGxpbmVCcmVhay5uZXh0QnJlYWthYmxlUG9zaXRpb24o
KTsKICAgICBpc0JyZWFrYWJsZShtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9yLCBs
aW5lQnJlYWsub2Zmc2V0KCkgKyAxLCBuZXh0QnJlYWthYmxlUG9zaXRpb24sIGJyZWFrTkJTUCwg
aXNMb29zZUNKS01vZGUsIG1fY3VycmVudFN0eWxlLT53b3JkQnJlYWsoKSA9PSBLZWVwQWxsV29y
ZEJyZWFrKTsKICAgICBpZiAoIW5leHRCcmVha2FibGVQb3NpdGlvbiB8fCBuZXh0QnJlYWthYmxl
UG9zaXRpb24udmFsdWUoKSAhPSByZW5kZXJUZXh0LnRleHRMZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIGxpbmVCcmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvTWF0aE1MU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRo
TUxTdHlsZS5jcHAKaW5kZXggNWYzMTZhNDgxYjRjMGVjOTczZWE2YzM2MjUyMmRjMmVhMDBlMTBj
Ny4uY2E0NmMyZWJjZDAyZmRlMzRlNWU2YzBiZjBiZDhiNzJhMDRhMmUwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoTUxTdHlsZS5jcHAKQEAgLTEzNSwxMCAr
MTM1LDEwIEBAIHZvaWQgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZShSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIC8vIFRoZSBkaXNwbGF5c3R5bGUgYW5kIG1hdGh2YXJpYW50IGF0
dHJpYnV0ZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCiAgICAgYXV0byogZWxlbWVu
dCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKS0+ZWxlbWVudCgpOwogICAgIGlm
IChpczxNYXRoTUxFbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICBPcHRpb25hbDxib29sPiBk
aXNwbGF5U3R5bGUgPSBkb3duY2FzdDxNYXRoTUxFbGVtZW50PihlbGVtZW50KS0+c3BlY2lmaWVk
RGlzcGxheVN0eWxlKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlzcGxheVN0eWxl
ID0gZG93bmNhc3Q8TWF0aE1MRWxlbWVudD4oZWxlbWVudCktPnNwZWNpZmllZERpc3BsYXlTdHls
ZSgpOwogICAgICAgICBpZiAoZGlzcGxheVN0eWxlKQogICAgICAgICAgICAgbV9kaXNwbGF5U3R5
bGUgPSBkaXNwbGF5U3R5bGUudmFsdWUoKTsKLSAgICAgICAgT3B0aW9uYWw8TWF0aE1MRWxlbWVu
dDo6TWF0aFZhcmlhbnQ+IG1hdGhWYXJpYW50ID0gZG93bmNhc3Q8TWF0aE1MRWxlbWVudD4oZWxl
bWVudCktPnNwZWNpZmllZE1hdGhWYXJpYW50KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWF0
aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IG1hdGhWYXJpYW50ID0gZG93bmNhc3Q8TWF0aE1MRWxl
bWVudD4oZWxlbWVudCktPnNwZWNpZmllZE1hdGhWYXJpYW50KCk7CiAgICAgICAgIGlmIChtYXRo
VmFyaWFudCkKICAgICAgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBtYXRoVmFyaWFudC52YWx1ZSgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggNTIxNTUwYjFkZDRjMmMxM2U2YTI5MTAyMjQwYjg5M2Mx
YzYxMTQ1MS4uNDE3ZTljNjU1Yzc4YWU3Nzg2ZWFkODNlMzQ5ZjBhNjI2YjAxNWI0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbnQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbgogICAgIGlm
IChsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKFJl
bmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJl
Y3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKKyAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUo
KS52YWx1ZV9vcihSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSk7CiB9CiAKICNpZiBFTkFCTEUo
REVCVUdfTUFUSF9MQVlPVVQpCkBAIC0xNzMsMTEgKzE3MywxMSBAQCBMYXlvdXRVbml0IHRvVXNl
clVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJT
dHlsZSYgcwogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxUYWJsZTo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFRh
YmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gQnkgZGVmYXVsdCB0aGUg
dmVydGljYWwgY2VudGVyIG9mIDxtdGFibGU+IGlzIGFsaWduZWQgb24gdGhlIG1hdGggYXhpcy4K
ICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIFJlbmRlclRhYmxlOjpmaXJzdExpbmVCb3hC
YXNlbGluZSwgd2hpY2ggcmV0dXJucyB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IHJvdyBvZiBh
IDx0YWJsZT4uCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4obG9naWNhbEhlaWdodCgpIC8gMiAr
IGF4aXNIZWlnaHQoc3R5bGUoKSkpOworICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPGludD4obG9n
aWNhbEhlaWdodCgpIC8gMiArIGF4aXNIZWlnaHQoc3R5bGUoKSkpOwogfQogCiB2b2lkIFJlbmRl
ck1hdGhNTEJsb2NrOjpsYXlvdXRJdGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5k
ZXggN2E0MjdiYjI1NTkyNzk0ZGE4NWY3OTY5MzUwNDhkMDA5ZjgzMjA3Mi4uYmIxNDJhMjU0MjBh
M2E2YmNlMTRjMTU0YmRlOTMyMzM2MzQzNGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNzksNyArNzksNyBAQCBj
bGFzcyBSZW5kZXJNYXRoTUxCbG9jayA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiAKICAgICBzdGF0
aWMgTGF5b3V0VW5pdCBhc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGls
ZC5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxp
bmUoKS52YWx1ZV9vcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KIAogICAgIHZvaWQg
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2Fs
SGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CkBAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgUmVuZGVyTWF0
aE1MVGFibGUgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGFibGUgewogcHJpdmF0ZToKICAgICBib29s
IGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNYXRo
TUxUYWJsZSI7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
ZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
ZmluYWw7CiAKICAgICBSZWY8TWF0aE1MU3R5bGU+IG1fbWF0aE1MU3R5bGU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcAppbmRleCA2M2Y0MTg4ZTk4NDZiYjgzNGYxMWRkNzllMWI3M2EyOWY0ZTE3YTFmLi4z
NWU0NDE0NWY3Zjg2MmMwOGJkMDRlMjE3ZWQ1ZmQwZGU2MzBjMTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNw
cApAQCAtMjQyLDEwICsyNDIsMTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQo
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICBpbmZv
LmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQo
TGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBsb2dpY2FsV2lkdGgoKSwgYWRq
dXN0ZWRQYWludE9mZnNldC55KCkpKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1M
RnJhY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8aW50PiBS
ZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlm
IChpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0
YXRpY19jYXN0PGZsb2F0PihtX2FzY2VudCkpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9u
YWw8aW50PihzdGQ6Omxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4obV9hc2NlbnQpKSk7CiAgICAg
cmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmgKaW5kZXggYjk5OTQ4MDE5NTA5NTk2NGNjN2YzOGQ3Nzg5ODFlNDlmNjg5ZjE1Mi4uMGFk
OWRmZmFhOWM1Yzc5ZjYxYTk4MmJiMzc4M2M1OTZmYzBhZWVlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAt
NDgsNyArNDgsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxGcmFjdGlvbiBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJNYXRoTUxCbG9jayB7CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKLSAgICBPcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIFJlbmRlck1hdGhNTE9wZXJh
dG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAppbmRl
eCA2ZDlhMDNjYWQwYzU1NGU0Y2Y0YmMyZjdmNTMzY2ZkMGU5ODFkODQwLi45Zjk3OTI2ZjI1M2Qx
NDhmOWNhNDM5YzcwNTM5MzI2NzhmZThkMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMjg3LDEw
ICsyODcsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dmVydGljYWxTdHJl
dGNoZWRPcGVyYXRvclNoaWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3RyZXRjaERlcHRoQmVs
b3dCYXNlbGluZSAtIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBtX21hdGhPcGVyYXRv
ci5kZXNjZW50KCkgKyBtX21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwogfQogCi1PcHRpb25h
bDxpbnQ+IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKIHsKICAgICBpZiAodXNlTWF0aE9wZXJhdG9yKCkpCi0gICAgICAgIHJldHVybiBP
cHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihtX21hdGhPcGVyYXRv
ci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgpKSkpOworICAgICAg
ICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0
PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlm
dCgpKSkpOwogICAgIHJldHVybiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IDYwNzFlZGY0M2ViODQ2MTI0ODZhYTg4ZGE0NjVkM2Nj
OWRjN2E2ZDMuLmUyMTJlOWJmNzM0YWQyNTVmMDZlNjkwZWMyNWUxNzg1YTkyOTllMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MT3BlcmF0b3IgOiBw
dWJsaWMgUmVuZGVyTWF0aE1MVG9rZW4gewogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxPcGVyYXRv
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIGlzSW52aXNpYmxlT3Bl
cmF0b3IoKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBmaW5hbDsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJh
dG9yKCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFN0
cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAppbmRleCBjMTM1YTI3NmY2
MWIwNjQ1OTFjMDIzM2YyMDU3MWQyMWI0OWE5NmNhLi41OWIyYjAxZGY2N2FmNTA5ZTYxNTE1ZGYx
ODQ3MDBjZjZmN2Y1NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxQYWRkZWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PGludD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAg
ICAgLy8gV2UgdHJ5IGFuZCBjYWxjdWxhdGUgdGhlIGJhc2VsaW5lIGZyb20gdGhlIHBvc2l0aW9u
IG9mIHRoZSBmaXJzdCBjaGlsZC4KICAgICBMYXlvdXRVbml0IGFzY2VudDsKQEAgLTExOCw3ICsx
MTgsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAogICAgICAgICBhc2NlbnQgPSBhc2NlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGls
ZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkgKyB2b2Zmc2V0KCk7CiAgICAgZWxzZQog
ICAgICAgICBhc2NlbnQgPSBtcGFkZGVkSGVpZ2h0KDApOwotICAgIHJldHVybiBPcHRpb25hbDxp
bnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0Pihhc2NlbnQpKSk7CisgICAgcmV0dXJu
IHN0ZDo6b3B0aW9uYWw8aW50PihzdGQ6Omxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4oYXNjZW50
KSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxQYWRkZWQuaAppbmRleCAwYWMzYzg5MDcyNTQzZGNmNWEwYzRjN2JiNTU2NTBl
ODg0ZDU1ZWNkLi5iMTU5OGQ4ZWE3NTMzNmQxYzE4NzI2ZDExNGQ3MDFiMDU2NDhmMWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRl
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFk
ZGVkLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyTWF0aE1MUGFkZGVkIGZpbmFsIDog
cHVibGljIFJlbmRlck1hdGhNTFJvdyB7CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBmaW5hbDsKLSAgICBPcHRp
b25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBNYXRoTUxQ
YWRkZWRFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1M
UGFkZGVkRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KICAgICBMYXlvdXRVbml0
IHZvZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcAppbmRleCBlNWYxMmIzM2VhMjhjMmIyMDhlZDQ5MWMyZTIz
ZmQ5OGEyMDBkNTU4Li5jNGJlYmMyYTIzYzM5MjdiMWZhNTRkZGVmODJiNzUzYjE3MDI3N2ExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b3cuY3BwCkBAIC00OSwxMyArNDksMTMgQEAgTWF0aE1MUm93RWxlbWVudCYgUmVuZGVyTWF0aE1M
Um93OjplbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0aE1MUm93RWxl
bWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
TWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4g
UmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byog
YmFzZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQp
Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPGludD4oKTsKIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGlu
dD4obHJvdW5kZihhc2NlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxk
LT5sb2dpY2FsVG9wKCkpKSk7CisgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PihzdGF0aWNf
Y2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxp
bmVDaGlsZC0+bG9naWNhbFRvcCgpKSkpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTFJvdzo6Y29t
cHV0ZUxpbmVWZXJ0aWNhbFN0cmV0Y2goTGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBk
ZXNjZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm93LmgKaW5kZXggMjg5NDIxZDJmYjg5ZjJiM2E5NzQxODBjOTc5YzAzYzhlY2M4ZDM3Ny4u
ZjljMTY3ODliMTFjZWFjMjllNDMyMGY4N2Q5ODg0OTRjN2EyOTYzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIFJlbmRlck1hdGhNTFJvdyA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7
CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgbGF5b3V0Um93SXRlbXMoTGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50
KTsKICAgICB2b2lkIGNvbXB1dGVMaW5lVmVydGljYWxTdHJldGNoKExheW91dFVuaXQmIGFzY2Vu
dCwgTGF5b3V0VW5pdCYgZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCBmY2ZhNGFmMTc1ZmVh
YmIyOTQ5MzQ4MjQ3NGM4MjA0ZThlYzFhMmJlLi4wNWQ1MGUwYzlkMDdhYzc0YzJjM2FiMDQzYTJm
NzgxZjJmN2ZjYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTc2LDEzICs3NiwxMyBAQCBSZW5kZXJN
YXRoTUxPcGVyYXRvciogUmVuZGVyTWF0aE1MU2NyaXB0czo6dW5lbWJlbGxpc2hlZE9wZXJhdG9y
KCkKICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyTWF0aE1MQmxvY2s+KGJhc2UpLT51bmVtYmVs
bGlzaGVkT3BlcmF0b3IoKTsKIH0KIAotT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVm
ZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW5kR2V0UmVmZXJl
bmNlQ2hpbGRyZW4oKQorc3RkOjpvcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVu
Y2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbmRHZXRSZWZlcmVuY2VD
aGlsZHJlbigpCiB7CiAgICAgLy8gQWxsIHNjcmlwdGVkIGVsZW1lbnRzIG11c3QgaGF2ZSBhdCBs
ZWFzdCBvbmUgY2hpbGQuCiAgICAgLy8gVGhlIGZpcnN0IGNoaWxkIGlzIHRoZSBiYXNlLgogICAg
IGF1dG8gYmFzZSA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmZXJl
bmNlQ2hpbGRyZW4gcmVmZXJlbmNlOwogICAgIHJlZmVyZW5jZS5iYXNlID0gYmFzZTsKQEAgLTEw
Myw3ICsxMDMsNyBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGls
ZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbgogICAgICAgICAvLyA8bW92ZXI+
IGJhc2Ugb3ZlcnNjcmlwdCA8L21vdmVyPgogICAgICAgICBhdXRvIHNjcmlwdCA9IGJhc2UtPm5l
eHRTaWJsaW5nQm94KCk7CiAgICAgICAgIGlmICghc2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1p
dGVyKCpzY3JpcHQpIHx8IHNjcmlwdC0+bmV4dFNpYmxpbmdCb3goKSkKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cmVmZXJlbmNlLmZpcnN0UG9zdFNjcmlwdCA9IHNjcmlwdDsKICAgICAgICAgcmV0dXJuIHJlZmVy
ZW5jZTsKICAgICB9CkBAIC0xMTUsMTAgKzExNSwxMCBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxT
Y3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVB
bgogICAgICAgICAvLyA8bXVuZGVyb3Zlcj4gYmFzZSBzdWJzY3JpcHQgc3VwZXJzY3JpcHQgPC9t
dW5kZXJvdmVyPgogICAgICAgICBhdXRvIHN1YlNjcmlwdCA9IGJhc2UtPm5leHRTaWJsaW5nQm94
KCk7CiAgICAgICAgIGlmICghc3ViU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzdWJT
Y3JpcHQpKQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHN1cGVyU2NyaXB0ID0gc3ViU2NyaXB0LT5uZXh0
U2libGluZ0JveCgpOwogICAgICAgICBpZiAoIXN1cGVyU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVs
aW1pdGVyKCpzdXBlclNjcmlwdCkgfHwgc3VwZXJTY3JpcHQtPm5leHRTaWJsaW5nQm94KCkpCi0g
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJlZmVyZW5jZS5maXJzdFBvc3RTY3JpcHQgPSBzdWJTY3JpcHQ7CiAgICAg
ICAgIHJldHVybiByZWZlcmVuY2U7CiAgICAgfQpAQCAtMTQ4LDE5ICsxNDgsMTkgQEAgT3B0aW9u
YWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNj
cmlwdHM6OnZhbGlkYXRlQW4KICAgICAgICAgICAgIGlmIChpc1ByZXNjcmlwdERlbGltaXRlcigq
c2NyaXB0KSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSA8bXByZXNjcmlwdHMvPi4g
TGV0J3MgY2hlY2sgMmEpIGFuZCAyYykuCiAgICAgICAgICAgICAgICAgaWYgKCFudW1iZXJPZlNj
cmlwdElzRXZlbiB8fCByZWZlcmVuY2UuZmlyc3RQcmVTY3JpcHQpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5maXJzdFByZVNjcmlwdCA9IHNjcmlwdC0+
bmV4dFNpYmxpbmdCb3goKTsgLy8gV2UgZG8gMSkuCiAgICAgICAgICAgICAgICAgcmVmZXJlbmNl
LnByZXNjcmlwdERlbGltaXRlciA9IHNjcmlwdDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG51bWJlck9mU2NyaXB0SXNFdmVuID0gIW51bWJl
ck9mU2NyaXB0SXNFdmVuOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudW1iZXJPZlNjcmlw
dElzRXZlbiA/IE9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPihyZWZlcmVuY2UpIDogTnVsbG9w
dDsgLy8gV2UgdmVyaWZ5IDJiKS4KKyAgICAgICAgcmV0dXJuIG51bWJlck9mU2NyaXB0SXNFdmVu
ID8gc3RkOjpvcHRpb25hbDxSZWZlcmVuY2VDaGlsZHJlbj4ocmVmZXJlbmNlKSA6IHN0ZDo6bnVs
bG9wdDsgLy8gV2UgdmVyaWZ5IDJiKS4KICAgICB9CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpzcGFjZUFmdGVyU2NyaXB0KCkK
QEAgLTQ3MSwxMyArNDcxLDEzIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0Qmxv
Y2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlv
dXQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MU2NyaXB0czo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7
CiAgICAgYXV0byogYmFzZSA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3Rh
dGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2lj
YWxUb3AoKSkpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8aW50PigpOworICAgIHJl
dHVybiBzdGQ6Om9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZv
ckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApp
bmRleCBkNDg3MGI0ZDk0ZDMxZjVhOGY3ZjkyZDMyYTYzNTViNDcxYzNmNjQzLi5mZjA0ZTg2YzVk
ODdjYWRhY2ViZDE2OTI5YmYyN2UzOWUyMTg5MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApAQCAtNTIsMTQgKzUy
LDE0IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHMgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxv
Y2sgewogCiBwcml2YXRlOgogICAgIE1hdGhNTFNjcmlwdHNFbGVtZW50JiBlbGVtZW50KCkgY29u
c3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwog
ICAgIHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAgICAgICAgIFJlbmRlckJveCogYmFzZTsK
ICAgICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxpbWl0ZXI7CiAgICAgICAgIFJlbmRlckJv
eCogZmlyc3RQb3N0U2NyaXB0OwogICAgICAgICBSZW5kZXJCb3gqIGZpcnN0UHJlU2NyaXB0Owog
ICAgIH07Ci0gICAgT3B0aW9uYWw8UmVmZXJlbmNlQ2hpbGRyZW4+IHZhbGlkYXRlQW5kR2V0UmVm
ZXJlbmNlQ2hpbGRyZW4oKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVuPiB2
YWxpZGF0ZUFuZEdldFJlZmVyZW5jZUNoaWxkcmVuKCk7CiAgICAgTGF5b3V0VW5pdCBzcGFjZUFm
dGVyU2NyaXB0KCk7CiAgICAgTGF5b3V0VW5pdCBpdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFJlZmVy
ZW5jZUNoaWxkcmVuJik7CiAgICAgc3RydWN0IFZlcnRpY2FsUGFyYW1ldGVycyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3Bw
CmluZGV4IDRjMWZlOWU2OTBlMGMyY2IxYTg1NmEwMGVjYzliMzcxNjVmM2YzZGUuLjA3MGFlZTdm
ZGIxODNlZDg0NjYzYjM3NTNiN2E4YWM5NjBmZWFmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04MiwxMSAr
ODIsMTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0
aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAor
c3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOwogICAgIGdldFNwYWNlSGVp
Z2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oaGVp
Z2h0KTsKKyAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+KGhlaWdodCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3Bh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
aAppbmRleCAwZWIyMDU2ZTg3ZGFmOTRiYjQ3NDM0YzMyMzVkZmU3Nzg3YWU0MjJlLi5mZDE5YmUy
ZDZmY2IwNjRkYThkNmE4NmFjYTZmMzk2ZTVlODkwYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC00Myw3ICs0Myw3
IEBAIGNsYXNzIFJlbmRlck1hdGhNTFNwYWNlIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJs
b2NrIHsKICAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9j
ayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAw
KSBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CiAKICAgICBMYXlvdXRVbml0IHNwYWNlV2lkdGgoKSBjb25zdDsKICAgICB2b2lkIGdldFNw
YWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0aCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uY3BwCmluZGV4IGJkMWU5NmJhM2ZjMTFmMTE2ODQ4ZGNkMGQ4MmQ1YjE4OWNj
MmY5ZDEuLjQzYmYyMDZmY2VmMWQ5YTJmZjY3MjE4ZmU0MjNlZDFjZDZmYTdhZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6dXBkYXRlTWF0
aFZhcmlhbnRHbHlwaCgpCiB7CiAgICAgQVNTRVJUKG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5KTsK
IAotICAgIG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgPSBOdWxsb3B0OworICAgIG1fbWF0aFZhcmlh
bnRDb2RlUG9pbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9tYXRoVmFyaWFudEdseXBoRGlydHkg
PSBmYWxzZTsKIAogICAgIC8vIEVhcmx5IHJldHVybiBpZiB0aGUgdG9rZW4gZWxlbWVudCBjb250
YWlucyBSZW5kZXJFbGVtZW50cy4KQEAgLTU1MSwxMiArNTUxLDEyIEBAIHZvaWQgUmVuZGVyTWF0
aE1MVG9rZW46OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICBzZXRNYXRoVmFyaWFudEdseXBoRGly
dHkoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAorc3RkOjpvcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQp
IHsKICAgICAgICAgYXV0byBtYXRoVmFyaWFudEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
LmdseXBoRGF0YUZvckNoYXJhY3RlcihtX21hdGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1f
bWF0aFZhcmlhbnRJc01pcnJvcmVkKTsKICAgICAgICAgaWYgKG1hdGhWYXJpYW50R2x5cGguZm9u
dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJv
dW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEds
eXBoLmdseXBoKS55KCkpKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpvcHRpb25hbDxpbnQ+
KHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNG
b3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKSk7CiAgICAgfQogICAgIHJldHVy
biBSZW5kZXJNYXRoTUxCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRleCBj
MzMxZWM1ZjFkMmI5MThjMGU2Mzg4MTBhOGY1OTk2YTk0MzgyMmIxLi41MTAxZDZhZjFjNTAzZjgy
MzcyY2NiZDJlNDU0ZWQ1NTY2MGM1ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNz
IFJlbmRlck1hdGhNTFRva2VuIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJp
ZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNz
IFJlbmRlck1hdGhNTFRva2VuIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKICAgICAgICAg
bV9tYXRoVmFyaWFudEdseXBoRGlydHkgPSB0cnVlOwogICAgICAgICBzZXROZWVkc0xheW91dEFu
ZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9Ci0gICAgT3B0aW9uYWw8VUNoYXIzMj4gbV9tYXRo
VmFyaWFudENvZGVQb2ludCB7IE51bGxvcHQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+
IG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgeyBzdGQ6Om51bGxvcHQgfTsKICAgICBib29sIG1fbWF0
aFZhcmlhbnRJc01pcnJvcmVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fbWF0aFZhcmlhbnRHbHlw
aERpcnR5IHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggZWVhNGYwZDgzMjA2ZjM0N2IxNzdmNzNm
MDcyNjU4ZDAxNjZlNjQwMy4uY2NkZjI0ZjljNjFlNjJkNTlhNWJiODViN2VjYWFiN2NhOWFlNzQ3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAg
ICAgaWYgKCFwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFy
ZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2lu
dEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5jcHAKaW5kZXggMmJmMDg2ZmMxZjMwNzk4MzU5YmQ2NzY4YTYzODRhZjA5OWQ1
NzNkMC4uMTA5NWQyNGUxMTIxOWI2MjI3YzhjMmQ2OWUxNmYzMTc0YzVhMTBiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBp
ZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZl
cnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7
CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAg
ICAgLy8gRWFybHkgZXhpdCBpZiBsb2NhbCBwb2ludCBpcyBub3QgY29udGFpbmVkIGluIGNsaXBw
ZWQgdmlld3BvcnQgYXJlYQogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlk
ZGVuKCp0aGlzKSAmJiAhbV92aWV3cG9ydC5jb250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMWRlZDY1
MWM1OGIzYjE3ODJhZDI0MGU2MzJiM2I4YWEyZTY2MWZhZi4uOGRlNWJmNDVjNDUwYzY2ZmVkMWEw
ZDYzZGUzZmQ2YWEzMTU1ODkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBib29sIFJlbmRlclNWR0lt
YWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdQogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRz
SGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJF
dmVudHMoKSk7CiAgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUp
IHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludElu
UGFyZW50KTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRy
YW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQo
cG9pbnRJblBhcmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBw
b3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBiNWNiZGU2YThlMTVkOGIyOTIx
YmZjMWJkOGRmOWYwY2FkNGNhYTM2Li41ZDgzNWZlMTcwNmQ4OTMwMGRlYWNhZTcyNWExZjEwMTBk
ZGQ4YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNjcsMTAgKzI2NywxMCBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVj
dCYgb2JqZWN0Qm91bmRpbgogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91
bmRpbmdCb3gueSgpKTsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShvYmplY3RC
b3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAg
IHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludCk7CisgICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIHBv
aW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQg
PSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CiAKICAgICBmb3IgKE5v
ZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxlbWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGROb2Rl
OyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
aW5kZXggYTQ5MDQ2NGI3OWVhMmZkOTMwNzA1ODU0Zjk1ZDMwNmRkOGE1YTA2ZS4uY2Q1YmY3NWY2
YTAwNTk4OTQ2Y2FjMzZkZThiZDE1ODg5OWY4OTM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI2
OCw3ICsyNjgsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmFzSW1hZ2VCdWZmZXIoKTsKICAgICAgICAg
aWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5l
VHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRh
LT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpKTsKIAogICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBm
aWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8gZmlsdGVy
RGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpKTsKICAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29s
dXRlUGFpbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKaW5kZXggYzUyNmVjZjE1MjI0NThmMzBjN2IwNGNiZWY5NGRjNDZiYzdkYWJj
Mi4uYmVmOTAzZTkxZmQ4ZjA1ZjdmZjcyMmE3NDQ0Y2UwNDMwYWIxZWM2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC00MzAsNyArNDMw
LDcgQEAgYm9vbCBSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICAvLyBPbmx5IHRlc3QgU1ZHIGNvbnRl
bnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveC4KICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgYW4gaW50ZXJzZWN0aW9uIHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVzdHMgYXJl
IHN1cHBvcnRlZCBieSBub2RlQXRGbG9hdFBvaW50LgogICAgIGlmIChjb250ZW50Qm94UmVjdCgp
LmNvbnRhaW5zKHBvaW50SW5Cb3JkZXJCb3gpKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CisgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJ
blBhcmVudCkpOwogCiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBvaW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNl
ZCBoaXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcAppbmRleCAxNWVhYTNkZmE3MmY0ZTYyZWU1MzU3NzYyNGVhYTkzYzE1ZGE3
YTJkLi40M2FiN2Q4OWE3ZDNhYWEyNGZjZjRkNTQzM2VlODZmZTJlNmFmMTJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMjAwLDcg
KzIwMCw3IEBAIFBhdGgqIFJlbmRlclNWR1NoYXBlOjpub25TY2FsaW5nU3Ryb2tlUGF0aChjb25z
dCBQYXRoKiBwYXRoLCBjb25zdCBBZmZpbmVUcmFuc2ZvCiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6
OnNldHVwTm9uU2NhbGluZ1N0cm9rZUNvbnRleHQoQWZmaW5lVHJhbnNmb3JtJiBzdHJva2VUcmFu
c2Zvcm0sIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXImIHN0YXRlU2F2ZXIpCiB7Ci0gICAgT3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBpbnZlcnNlID0gc3Ryb2tlVHJhbnNmb3JtLmludmVyc2Uo
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9IHN0cm9rZVRy
YW5zZm9ybS5pbnZlcnNlKCk7CiAgICAgaWYgKCFpbnZlcnNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9h
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIGlm
IChoaXRUZXN0QWN0aW9uICE9IEhpdFRlc3RGb3JlZ3JvdW5kKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xvY2FsVHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsK
KyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKS52
YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAg
ICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2Fs
UG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MTAsNyArNDEwLDcgQEAgRmxvYXRS
ZWN0IFJlbmRlclNWR1NoYXBlOjpjYWxjdWxhdGVTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiAg
ICAgICAgIEJvdW5kaW5nUmVjdFN0cm9rZVN0eWxlQXBwbGllciBzdHJva2VTdHlsZSgqdGhpcyk7
CiAgICAgICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkpIHsKICAgICAgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSBub25TY2FsaW5nVHJhbnNmb3JtID0gbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9y
bSgpOwotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gaW52ZXJzZSA9
IG5vblNjYWxpbmdUcmFuc2Zvcm0uaW52ZXJzZSgpKSB7CisgICAgICAgICAgICBpZiAoc3RkOjpv
cHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IGludmVyc2UgPSBub25TY2FsaW5nVHJhbnNmb3JtLmlu
dmVyc2UoKSkgewogICAgICAgICAgICAgICAgIFBhdGgqIHVzZVBhdGggPSBub25TY2FsaW5nU3Ry
b2tlUGF0aChtX3BhdGguZ2V0KCksIG5vblNjYWxpbmdUcmFuc2Zvcm0pOwogICAgICAgICAgICAg
ICAgIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ1JlY3QgPSB1c2VQYXRoLT5zdHJva2VCb3VuZGlu
Z1JlY3QoJnN0cm9rZVN0eWxlKTsKICAgICAgICAgICAgICAgICBzdHJva2VCb3VuZGluZ1JlY3Qg
PSBpbnZlcnNlLnZhbHVlKCkubWFwUmVjdChzdHJva2VCb3VuZGluZ1JlY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggNTkwMGE1MWUz
NmIwY2Y5OGQ4MTYyZjQ4NzcxZGFhMjQwY2IwYjI3ZC4uZDNiYjMwZDAyYTM4Y2FlMDNlZDEyYWY5
ODQ1NzQ5NTU4ODVlNjhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWwKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkgewogICAg
ICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhh
c1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKICAgICAgICAgICAgIHx8ICho
aXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzRmlsbCgpIHx8ICFo
aXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9p
bnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICAgICAgRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9v
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAgICAg
ICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9j
YWxQb2ludCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDg0
YjdlM2Y2YzllOWNmNmUyNjUxMTMyN2U4MjAxYmViYTRhZDNjZmYuLmI3ODI5NDBlMzUwNjVmMGY3
ODdlMTcyMjM3ODA3NTUxZDI5Y2UxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgU1ZH
UmVuZGVyU3VwcG9ydDo6aW50ZXJzZWN0UmVwYWludFJlY3RXaXRoU2hhZG93cyhjb25zdCBSZW5k
ZXJFbGVtZW50JiByZW5kCiAgICAgaWYgKGxvY2FsVG9Sb290VHJhbnNmb3JtLmlzSWRlbnRpdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHJvb3RUb0xvY2FsVHJh
bnNmb3JtID0gbG9jYWxUb1Jvb3RUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJh
bnNmb3JtKCkpOworICAgIEFmZmluZVRyYW5zZm9ybSByb290VG9Mb2NhbFRyYW5zZm9ybSA9IGxv
Y2FsVG9Sb290VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7
CiAgICAgcmVwYWludFJlY3QgPSByb290VG9Mb2NhbFRyYW5zZm9ybS5tYXBSZWN0KHJlcGFpbnRS
ZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNGYzNWVkOWVhYTAzOTEzNGU3MGM4Y2UyMzE5NTg1Y2Nk
ZjlkOTY5NS4uYzRiM2FhYzViZmQxY2U4Y2M1NjYxYzhkYmJiZTRjNTMyNDY3ZWRjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmkKIAogICAgIC8v
IFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5h
dGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNjYWxlZC4KICAgICAvLyBTbyB0
aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9uZSBpbiB0aGUgYWJzb2x1dGUg
Y29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgotICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRl
VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgY29u
dGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmlu
ZVRyYW5zZm9ybSgpKSk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVU
cmFuc2Zvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVy
eS5jcHAKaW5kZXggMzUyMGMyYTJjYTAxNWY0N2ZiYTA0MDhlM2U1ZTk4MzQzODc5Zjg4My4uODZl
NGJmMmYzZDUxZWNmZGMyZjg4YWMwNTU4NDgyOGI3MmVlYWY3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZv
aWQgU1ZHVGV4dFF1ZXJ5Ojptb2RpZnlTdGFydEVuZFBvc2l0aW9uc1Jlc3BlY3RpbmdMaWdhdHVy
ZXMoRGF0YSogcXVlcnlEYXRhLCB1CiAgICAgYm9vbCBhbHRlclN0YXJ0UG9zaXRpb24gPSB0cnVl
OwogICAgIGJvb2wgYWx0ZXJFbmRQb3NpdGlvbiA9IHRydWU7CiAKLSAgICBPcHRpb25hbDx1bnNp
Z25lZD4gbGFzdFBvc2l0aW9uT2Zmc2V0OworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGxh
c3RQb3NpdGlvbk9mZnNldDsKICAgICBmb3IgKDsgdGV4dE1ldHJpY3NPZmZzZXQgPCB0ZXh0TWV0
cmljc1NpemUgJiYgcG9zaXRpb25PZmZzZXQgPCBwb3NpdGlvblNpemU7ICsrdGV4dE1ldHJpY3NP
ZmZzZXQpIHsKICAgICAgICAgU1ZHVGV4dE1ldHJpY3MmIG1ldHJpY3MgPSB0ZXh0TWV0cmljc1Zh
bHVlc1t0ZXh0TWV0cmljc09mZnNldF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcAppbmRleCA3ODJhNmFiNjQ4NGFhMzQyNGI4ZmM4YzVmYWM5YWNmZjRhMmQx
Njk1Li41MWM2OTNjN2FjODFjMmE5M2JhZWQ4NjA5YWI2OTY3NGM4NTkxZTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIFJl
bmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChDb250YWluZXJOb2RlJiByb290KQogUmVu
ZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIFN0eWxlOjpD
aGFuZ2Ugc3R5bGVDaGFuZ2UpCiAgICAgOiBlbGVtZW50KCZlbGVtZW50KQogICAgICwgc3R5bGVD
aGFuZ2Uoc3R5bGVDaGFuZ2UpCi0gICAgLCByZW5kZXJUcmVlUG9zaXRpb24oZWxlbWVudC5yZW5k
ZXJlcigpID8gbWFrZU9wdGlvbmFsKFJlbmRlclRyZWVQb3NpdGlvbigqZWxlbWVudC5yZW5kZXJl
cigpKSkgOiBOdWxsb3B0KQorICAgICwgcmVuZGVyVHJlZVBvc2l0aW9uKGVsZW1lbnQucmVuZGVy
ZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChSZW5kZXJUcmVlUG9zaXRpb24oKmVsZW1lbnQucmVu
ZGVyZXIoKSkpIDogc3RkOjpudWxsb3B0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVu
ZGVyVHJlZVVwZGF0ZXIuaAppbmRleCA0Njg5YjA4ZDQyMDQ2ZTJlYzQ0ZTQ5M2IwMTk2ZTRlMGI2
NDgyYTYzLi45YmY0NzViYTdiMTU4YzM2ZmE5ODIwZDQ2MGY3NmJiZjhhMjNlODUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVVcGRhdGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xh
c3MgUmVuZGVyVHJlZVVwZGF0ZXIgewogICAgIHN0cnVjdCBQYXJlbnQgewogICAgICAgICBFbGVt
ZW50KiBlbGVtZW50IHsgbnVsbHB0ciB9OwogICAgICAgICBTdHlsZTo6Q2hhbmdlIHN0eWxlQ2hh
bmdlIHsgU3R5bGU6Ok5vQ2hhbmdlIH07Ci0gICAgICAgIE9wdGlvbmFsPFJlbmRlclRyZWVQb3Np
dGlvbj4gcmVuZGVyVHJlZVBvc2l0aW9uOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclRy
ZWVQb3NpdGlvbj4gcmVuZGVyVHJlZVBvc2l0aW9uOwogCiAgICAgICAgIFBhcmVudChDb250YWlu
ZXJOb2RlJiByb290KTsKICAgICAgICAgUGFyZW50KEVsZW1lbnQmLCBTdHlsZTo6Q2hhbmdlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAppbmRleCBjZjEwYjY2YTcwODUwNGNmZmVjZjQxYzI2
N2U0ZWY0NzAyZGE4OWY0Li4wYTZlNzBmMGY4Yjg0MjdhMjMxYWJkZTEyMWVjMWE0ZGUxMGM3OWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3Mg
U2NvcGUgewogICAgIGludCBtX3BlbmRpbmdTdHlsZVNoZWV0Q291bnQgeyAwIH07CiAgICAgYm9v
bCBtX2RpZFVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzIHsgZmFsc2UgfTsKIAotICAgIE9wdGlvbmFs
PFVwZGF0ZVR5cGU+IG1fcGVuZGluZ1VwZGF0ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFVwZGF0ZVR5
cGU+IG1fcGVuZGluZ1VwZGF0ZTsKICAgICBib29sIG1faGFzRGVzY2VuZGFudFdpdGhQZW5kaW5n
VXBkYXRlIHsgZmFsc2UgfTsKIAogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX3N0eWxlU2hlZXRD
YW5kaWRhdGVOb2RlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBiMmNiM2IzM2Nh
YzFiNzJiNmFkZDI0MjRjM2FiNGEyMGFhMjA1NmM3Li5mMDQxNWZjYTMwZjljZTRjNDEwMmZhNThk
N2IzNTJmYWZmODVlYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC00NjEsNyAr
NDYxLDcgQEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHYKICAgICBpZiAobmFtZSA9PSBIVE1MTmFt
ZXM6OnRhYmluZGV4QXR0cikgewogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgY2xlYXJUYWJJbmRleEV4cGxpY2l0bHlJZk5lZWRlZCgpOwotICAgICAgICBlbHNlIGlm
IChPcHRpb25hbDxpbnQ+IHRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCisgICAg
ICAgIGVsc2UgaWYgKHN0ZDo6b3B0aW9uYWw8aW50PiB0YWJJbmRleCA9IHBhcnNlSFRNTEludGVn
ZXIodmFsdWUpKQogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHRhYkluZGV4LnZh
bHVlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQg
U1ZHRWxlbWVudDo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCkKICAgICBjb250ZXh0RWxlbWVudC0+c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSgp
OwogfQogCi1PcHRpb25hbDxFbGVtZW50U3R5bGU+IFNWR0VsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKikK
K3N0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBTVkdFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSopCiB7
CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVlIHdlIGdldCB0aGUgc3R5
bGUgZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgogICAgIGlmIChhdXRvKiBzdHlsZUVsZW1lbnQg
PSB0aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5k
ZXggYzliYzNhYzhhNTY2ZmJjMWIyOWZkN2NlMDAxMGVjMWUxZDY5NTg2MC4uYzY2NmE2YWE3YWQ2
MTA4YzAyOWI2MjFhMTI1NmQ2YjU5Yzg2YTYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBA
IC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgU1ZHRWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50
LCBwdWJsaWMgU1ZHTGFuZ1NwYWNlIHsKICAgICB2b2lkIHN5bmNocm9uaXplQW5pbWF0ZWRTVkdB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoU1ZHRWxlbWVudCopOwogIAotICAgIE9w
dGlvbmFsPEVsZW1lbnRTdHlsZT4gcmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5bGU+IHJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dI
b3N0U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKICAgICBzdGF0aWMgdm9pZCBz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXgg
MGVlYWE1ZmM0M2ZhMzczNDU3NjhhYzc2ZWJiZDBiN2I0ZTBjNzdhMS4uZjA2NDNkMzgzNjY3YTk3
YjU0ZDVkOTBhODhhZjM1MDY3NjMwNDIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIFNWR1RvT1RG
Rm9udENvbnZlcnRlciB7CiAKICAgICB1aW50MzJfdCBjYWxjdWxhdGVDaGVja3N1bShzaXplX3Qg
c3RhcnRpbmdPZmZzZXQsIHNpemVfdCBlbmRpbmdPZmZzZXQpIGNvbnN0OwogCi0gICAgdm9pZCBw
cm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhF
bGVtZW50LCBjb25zdCBTVkdHbHlwaEVsZW1lbnQqLCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFk
dmFuY2UsIGZsb2F0IGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBv
aW50cywgT3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpOworICAgIHZvaWQgcHJvY2Vz
c0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVu
dCwgY29uc3QgU1ZHR2x5cGhFbGVtZW50KiwgZmxvYXQgZGVmYXVsdEhvcml6b250YWxBZHZhbmNl
LCBmbG9hdCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCBjb25zdCBTdHJpbmcmIGNvZGVwb2ludHMs
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpOwogCiAgICAgdHlwZWRlZiB2
b2lkIChTVkdUb09URkZvbnRDb252ZXJ0ZXI6OipGb250QXBwZW5kaW5nRnVuY3Rpb24pKCk7CiAg
ICAgdm9pZCBhcHBlbmRUYWJsZShjb25zdCBjaGFyIGlkZW50aWZpZXJbNF0sIEZvbnRBcHBlbmRp
bmdGdW5jdGlvbik7CkBAIC0yMjEsNyArMjIxLDcgQEAgY2xhc3MgU1ZHVG9PVEZGb250Q29udmVy
dGVyIHsKIAogICAgIHZvaWQgYXBwZW5kVmFsaWRDRkZTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAK
LSAgICBWZWN0b3I8Y2hhcj4gdHJhbnNjb2RlR2x5cGhQYXRocyhmbG9hdCB3aWR0aCwgY29uc3Qg
U1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIE9wdGlvbmFsPEZsb2F0UmVj
dD4mIGJvdW5kaW5nQm94KSBjb25zdDsKKyAgICBWZWN0b3I8Y2hhcj4gdHJhbnNjb2RlR2x5cGhQ
YXRocyhmbG9hdCB3aWR0aCwgY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVs
ZW1lbnQsIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiYgYm91bmRpbmdCb3gpIGNvbnN0OwogCiAg
ICAgdm9pZCBhZGRDb2RlcG9pbnRSYW5nZXMoY29uc3QgVW5pY29kZVJhbmdlcyYsIEhhc2hTZXQ8
R2x5cGg+JiBnbHlwaFNldCkgY29uc3Q7CiAgICAgdm9pZCBhZGRDb2RlcG9pbnRzKGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgY29kZXBvaW50cywgSGFzaFNldDxHbHlwaD4mIGdseXBoU2V0KSBjb25z
dDsKQEAgLTExNTUsNyArMTE1NSw3IEBAIGNsYXNzIENGRkJ1aWxkZXIgZmluYWwgOiBwdWJsaWMg
U1ZHUGF0aENvbnN1bWVyIHsKICAgICAgICAgbV9jZmZEYXRhLmFwcGVuZChyTW92ZVRvKTsKICAg
ICB9CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kaW5nQm94KCkgY29uc3QKKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdCb3goKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fYm91bmRpbmdCb3g7CiAgICAgfQpAQCAtMTI0NiwxMSArMTI0NiwxMSBAQCBj
bGFzcyBDRkZCdWlsZGVyIGZpbmFsIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiAgICAgVmVj
dG9yPGNoYXI+JiBtX2NmZkRhdGE7CiAgICAgRmxvYXRQb2ludCBtX3N0YXJ0aW5nUG9pbnQ7CiAg
ICAgRmxvYXRQb2ludCBtX2N1cnJlbnQ7Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2JvdW5k
aW5nQm94OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBtX2JvdW5kaW5nQm94OwogICAg
IGZsb2F0IG1fdW5pdHNQZXJFbVNjYWxhcjsKIH07CiAKLVZlY3RvcjxjaGFyPiBTVkdUb09URkZv
bnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0Vs
ZW1lbnQmIGdseXBoT3JNaXNzaW5nR2x5cGhFbGVtZW50LCBPcHRpb25hbDxGbG9hdFJlY3Q+JiBi
b3VuZGluZ0JveCkgY29uc3QKK1ZlY3RvcjxjaGFyPiBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnRy
YW5zY29kZUdseXBoUGF0aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JN
aXNzaW5nR2x5cGhFbGVtZW50LCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94
KSBjb25zdAogewogICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7CiAKQEAgLTEyODYsNyArMTI4Niw3
IEBAIFZlY3RvcjxjaGFyPiBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnRyYW5zY29kZUdseXBoUGF0
aHMoZmxvYXQgd2lkdGgsIGNvbnN0IFNWR0VsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxl
bWVudCYgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGNvbnN0IFNWR0dseXBoRWxlbWVudCog
Z2x5cGhFbGVtZW50LCBmbG9hdCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGZsb2F0IGRlZmF1
bHRWZXJ0aWNhbEFkdmFuY2UsIGNvbnN0IFN0cmluZyYgY29kZXBvaW50cywgT3B0aW9uYWw8Rmxv
YXRSZWN0PiYgYm91bmRpbmdCb3gpCit2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6cHJvY2Vz
c0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZ0dseXBoRWxlbWVu
dCwgY29uc3QgU1ZHR2x5cGhFbGVtZW50KiBnbHlwaEVsZW1lbnQsIGZsb2F0IGRlZmF1bHRIb3Jp
em9udGFsQWR2YW5jZSwgZmxvYXQgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgY29uc3QgU3RyaW5n
JiBjb2RlcG9pbnRzLCBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4mIGJvdW5kaW5nQm94KQogewog
ICAgIGJvb2wgb2s7CiAgICAgZmxvYXQgaG9yaXpvbnRhbEFkdmFuY2UgPSBzY2FsZVVuaXRzUGVy
RW0oZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihTVkdOYW1lczo6aG9yaXpfYWR2X3hBdHRyKS50b0Zsb2F0KCZvaykpOwpAQCAtMTI5OCw3
ICsxMjk4LDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1l
bnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmcKICAgICAgICAgdmVydGljYWxBZHZh
bmNlID0gZGVmYXVsdFZlcnRpY2FsQWR2YW5jZTsKICAgICBtX2FkdmFuY2VIZWlnaHRNYXggPSBz
dGQ6Om1heChtX2FkdmFuY2VIZWlnaHRNYXgsIHZlcnRpY2FsQWR2YW5jZSk7CiAKLSAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGdseXBoQm91bmRpbmdCb3g7CisgICAgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IGdseXBoQm91bmRpbmdCb3g7CiAgICAgYXV0byBwYXRoID0gdHJhbnNjb2RlR2x5cGhQ
YXRocyhob3Jpem9udGFsQWR2YW5jZSwgZ2x5cGhPck1pc3NpbmdHbHlwaEVsZW1lbnQsIGdseXBo
Qm91bmRpbmdCb3gpOwogICAgIGlmICghcGF0aC5zaXplKCkpIHsKICAgICAgICAgLy8gSXQncyBi
ZXR0ZXIgdG8gdXNlIGEgZmFsbGJhY2sgZm9udCByYXRoZXIgdGhhbiB1c2UgYSBmb250IHdpdGhv
dXQgYWxsIGl0cyBnbHlwaHMuCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFNWR1RvT1RGRm9u
dENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9y
TWlzc2luZwogICAgIGlmIChnbHlwaEJvdW5kaW5nQm94KQogICAgICAgICBtX21pblJpZ2h0U2lk
ZUJlYXJpbmcgPSBzdGQ6Om1pbihtX21pblJpZ2h0U2lkZUJlYXJpbmcsIGhvcml6b250YWxBZHZh
bmNlIC0gZ2x5cGhCb3VuZGluZ0JveC52YWx1ZSgpLm1heFgoKSk7CiAKLSAgICBtX2dseXBocy5h
cHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFk
dmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGluZ0JveC52YWx1ZU9yKEZsb2F0UmVj
dCgpKSwgY29kZXBvaW50cykpOworICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92
ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNl
LCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlX29yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOwog
fQogCiB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQpA
QCAtMTQyMSw3ICsxNDIxLDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRD
b252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogCiAgICAgcG9wdWxh
dGVFbXB0eUdseXBoQ2hhclN0cmluZyhtX2VtcHR5R2x5cGhDaGFyU3RyaW5nLCBzX291dHB1dFVu
aXRzUGVyRW0pOwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZGluZ0JveDsKKyAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYm91bmRpbmdCb3g7CiAgICAgaWYgKG1fbWlzc2luZ0ds
eXBoRWxlbWVudCkKICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudCgqbV9taXNzaW5nR2x5cGhF
bGVtZW50LCBudWxscHRyLCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNh
bEFkdmFuY2UsIFN0cmluZygpLCBib3VuZGluZ0JveCk7CiAgICAgZWxzZSB7CkBAIC0xNDM1LDcg
KzE0MzUsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcihj
b25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAgICAgICAgICBwcm9jZXNzR2x5
cGhFbGVtZW50KGdseXBoRWxlbWVudCwgJmdseXBoRWxlbWVudCwgZGVmYXVsdEhvcml6b250YWxB
ZHZhbmNlLCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCB1bmljb2RlQXR0cmlidXRlLCBib3VuZGlu
Z0JveCk7CiAgICAgfQogCi0gICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlT3Io
RmxvYXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZV9vcihG
bG9hdFJlY3QoKSk7CiAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPD0gMTAxMDAwCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzIwMDg2MjIzPiBD
b2NvYSBoYXMgYSBidWcgd2hlcmUgZ2x5cGggYm91bmRpbmcgYm94ZXMgYXJlIG5vdCBjb3JyZWN0
bHkgcmVzcGVjdGVkIGZvciBmcnVzdHVtIGN1bGxpbmcuIFdvcmsgYXJvdW5kIHRoaXMgYnkKQEAg
LTE1ODQsMTMgKzE1ODQsMTMgQEAgYm9vbCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmNvbnZlcnRT
VkdUb09URkZvbnQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1PcHRpb25hbDxWZWN0b3I8Y2hh
cj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCitz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdG
b250RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBTVkdUb09URkZvbnRDb252ZXJ0ZXIgY29udmVy
dGVyKGVsZW1lbnQpOwogICAgIGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFjb252ZXJ0
ZXIuY29udmVydFNWR1RvT1RGRm9udCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gY29udmVydGVyLnJlbGVhc2VSZXN1
bHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmgK
aW5kZXggY2M1M2RlMzAwOWUwZTg3NTExMTFjODBlYWQ4OWFkMDUxODBhYzY3Yy4uNzc1NmU0NTI5
YjY3YzBlM2FiZTI3NjQ0ZTQ5MDk1YzlkYjU4MTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5oCkBAIC0zMiw2ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU1ZHRm9udEVsZW1lbnQ7CiAKLU9wdGlvbmFsPFZlY3RvcjxjaGFyPj4g
Y29udmVydFNWR1RvT1RGRm9udChjb25zdCBTVkdGb250RWxlbWVudCYpOworc3RkOjpvcHRpb25h
bDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IDkzOGM3ZjAzNmVlYWZmZDMzYWQyZmM1ZDJlMDk2YzNiMmJkOTI2OGMuLjEwZjY4
ZmU2Y2MyNGVmYzVhZWEwNzM4ZDJlYTBhODBlODYyOThiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTg1NCwxNCArODU0LDE0IEBAIGJvb2wgSW50ZXJuYWxzOjphcmVU
aW1lcnNUaHJvdHRsZWQoKSBjb25zdAogICAgIHJldHVybiBjb250ZXh0RG9jdW1lbnQoKS0+aXNU
aW1lclRocm90dGxpbmdFbmFibGVkKCk7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRo
cm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
PiB2YWx1ZSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+IHZhbHVlKQogewogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghdmFs
dWUpIHsKLSAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZp
b3JPdmVycmlkZShOdWxsb3B0KTsKKyAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0RXZlbnRU
aHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC04NzUsMTUgKzg3NSwxNSBAQCB2b2lkIEludGVybmFsczo6c2V0RXZlbnRU
aHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShPcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhhdgog
ICAgIH0KIH0KIAotT3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4g
SW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpl
dmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3QKIHsKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1
bWVudC0+cGFnZSgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVoYXZpb3IgPSBkb2N1bWVudC0+cGFnZSgpLT5ldmVu
dFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCk7CiAgICAgaWYgKCFiZWhhdmlvcikKLSAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgc3dpdGNoIChiZWhhdmlvci52YWx1ZSgpKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpFdmVudFRo
cm90dGxpbmdCZWhhdmlvcjo6UmVzcG9uc2l2ZToKQEAgLTg5Miw3ICs4OTIsNyBAQCBPcHRpb25h
bDxJbnRlcm5hbHM6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yTwogICAgICAgICByZXR1cm4gSW50ZXJuYWxzOjpFdmVudFRocm90dGxp
bmdCZWhhdmlvcjo6VW5yZXNwb25zaXZlOwogICAgIH0KIAotICAgIHJldHVybiBOdWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OnZpc2libGVQ
bGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggMjUwZmQwNWFhYWY4ODU4ZGY3NWMxMmNiNDU5MmE2MWQ4Nzg5ZjMxNi4uMTAwZTgyYzcz
MDg5MzYyYWUxMDVhZGY2MjE1YTg3ZWU1NWM2ZmI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCkBAIC0xMjIsOCArMTIyLDggQEAgY2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb24KICAgICBi
b29sIGFyZVRpbWVyc1Rocm90dGxlZCgpIGNvbnN0OwogCiAgICAgZW51bSBFdmVudFRocm90dGxp
bmdCZWhhdmlvciB7IFJlc3BvbnNpdmUsIFVucmVzcG9uc2l2ZSB9OwotICAgIHZvaWQgc2V0RXZl
bnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShPcHRpb25hbDxFdmVudFRocm90dGxpbmdCZWhh
dmlvcj4pOwotICAgIE9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90
dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRFdmVudFRocm90dGxp
bmdCZWhhdmlvck92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I+
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBldmVudFRocm90
dGxpbmdCZWhhdmlvck92ZXJyaWRlKCkgY29uc3Q7CiAKICAgICAvLyBTcGF0aWFsIE5hdmlnYXRp
b24gdGVzdGluZy4KICAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gbGFzdFNwYXRpYWxOYXZpZ2F0
aW9uQ2FuZGlkYXRlQ291bnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDEy
ODg0Y2ZkMTAwMmRlNjY2ZjBmNTE2YTA2OGU5M2FhNGE4ZjA5NzEuLjE5ZDhkNTYyYmYyODRjMDA5
NzYxMzFjN2U5YjZhMzU5YzAzNDYxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNzUs
NyArNzUsNyBAQCBjbGFzcyBXb3JrZXIgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RXb3JrZXIsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsIHByaXZhdGUgV29yawogICAgIFJlZlB0cjxXb3JrZXJTY3Jp
cHRMb2FkZXI+IG1fc2NyaXB0TG9hZGVyOwogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAg
V29ya2VyR2xvYmFsU2NvcGVQcm94eSogbV9jb250ZXh0UHJveHk7IC8vIFRoZSBwcm94eSBvdXRs
aXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3duLgotICAgIE9wdGlvbmFs
PENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnM7CisgICAgc3RkOjpvcHRpb25hbDxDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnM+IG1fY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzOwogICAgIGJvb2wgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3kgeyBmYWxzZSB9OwogICAgIEpTQzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDUwOWE5YTljZDcxMGI0NWJm
YzBjYjllZTkxYTIyZjEzN2NmNjhiN2EuLjBjYTczODllYmEyN2Y5YzdiOWFhZGZlN2Q1ZTUyNDFi
ZTEwNzc3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNDc2LDEw
ICs0NzYsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsLAogICAgIHJldHVybiBvcGVuKG1ldGhv
ZCwgdXJsV2l0aENyZWRlbnRpYWxzLCBhc3luYyk7CiB9CiAKLU9wdGlvbmFsPEV4Y2VwdGlvbk9y
PHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgpCitzdGQ6Om9wdGlvbmFsPEV4
Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgpCiB7Ci0gICAg
Ly8gQSByZXR1cm4gdmFsdWUgb3RoZXIgdGhhbiBOdWxsb3B0IG1lYW5zIHdlIHNob3VsZCBub3Qg
dHJ5IHRvIHNlbmQsIGFuZCB3ZSBzaG91bGQgcmV0dXJuIHRoYXQgdmFsdWUgdG8gdGhlIGNhbGxl
ci4KLSAgICAvLyBOdWxsb3B0IG1lYW5zIHdlIGFyZSByZWFkeSB0byBzZW5kIGFuZCBzaG91bGQg
Y29udGludWUgd2l0aCB0aGUgc2VuZCBhbGdvcml0aG0uCisgICAgLy8gQSByZXR1cm4gdmFsdWUg
b3RoZXIgdGhhbiBzdGQ6Om51bGxvcHQgbWVhbnMgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc2VuZCwg
YW5kIHdlIHNob3VsZCByZXR1cm4gdGhhdCB2YWx1ZSB0byB0aGUgY2FsbGVyLgorICAgIC8vIHN0
ZDo6bnVsbG9wdCBtZWFucyB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBhbmQgc2hvdWxkIGNvbnRpbnVl
IHdpdGggdGhlIHNlbmQgYWxnb3JpdGhtLgogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25Pcjx2b2lkPiB7IH07CkBAIC01MDEsNyAr
NTAxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVw
YXJlVG9TZW5kKCkKICAgICB9CiAKICAgICBtX2Vycm9yID0gZmFsc2U7Ci0gICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
WE1MSHR0cFJlcXVlc3Q6OnNlbmQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtOTgwLDcgKzk4MCw3
IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBkb3VibGUpCiAKICAgICBtX3Jlc3BvbnNlQnVpbGRlci5zaHJpbmtUb0ZpdCgp
OwogCi0gICAgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVkVGV4dDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gZGVjb2RlZFRleHQ7CiAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikK
ICAgICAgICAgZGVjb2RlZFRleHQgPSBtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZl
Q2FwYWNpdHkoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxv
YWRpbmcoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBpZGVudGlmaWVyLCBkZWNvZGVk
VGV4dCwgbV91cmwsIG1fbGFzdFNlbmRVUkwsIG1fbGFzdFNlbmRMaW5lTnVtYmVyLCBtX2xhc3RT
ZW5kQ29sdW1uTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggYWY2
NTBmZTc5M2Q5YzhkYjU4MDg1OTkyODFiZGY4MDBiZTUzYjc0OS4uMDRhYmMwOWRkN2Y2YmI4Yjhh
OTVhNTI0MTI3YzE0NjhjZmRhYzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBYTUxIdHRwUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIFhNTEh0dHBSZQogCiAgICAgYm9vbCBy
ZXNwb25zZUlzWE1MKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxFeGNlcHRpb25Pcjx2b2lkPj4g
cHJlcGFyZVRvU2VuZCgpOworICAgIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IHBy
ZXBhcmVUb1NlbmQoKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZW5kQnl0ZXNEYXRhKGNvbnN0
IHZvaWQqLCBzaXplX3QpOwogCiAgICAgdm9pZCBjaGFuZ2VTdGF0ZShTdGF0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbQppbmRleCA1
MDNmZjYyYzZmNjkxM2NjOTUwOGRlZDg4YzBjMGI2MzUwMTI3YjRhLi5mZGZhNmU4ZmMzM2E3Yjli
ZDYyYmE4MGNjMDk1NTdiZjJhYmJlZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubW0KQEAgLTkwLDcgKzkwLDcgQEAgLSAodm9pZClh
ZGQ6KERPTUhUTUxPcHRpb25FbGVtZW50ICopb3B0aW9uIGluZGV4Oih1bnNpZ25lZClpbmRleAog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKICAgICBpZiAoIW9wdGlv
bikKICAgICAgICAgcmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoSU1QTC0+YWRkKGNvcmUob3B0aW9uKSwgT3B0aW9uYWw8V2ViQ29yZTo6SFRNTE9wdGlvbnND
b2xsZWN0aW9uOjpIVE1MRWxlbWVudE9ySW50PiB7IHN0YXRpY19jYXN0PGludD4oaW5kZXgpIH0p
KTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+YWRkKGNvcmUob3B0aW9uKSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OkhUTUxFbGVtZW50T3JJbnQ+IHsg
c3RhdGljX2Nhc3Q8aW50PihpbmRleCkgfSkpOwogfQogCiAtICh2b2lkKXJlbW92ZToodW5zaWdu
ZWQpaW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCAzNmRiYmVjNjI0ZWVi
MDU0ZjA2MmEwMjg0MTAwMjliZjA4ZTQyOWQ5Li5iOWFiOGEwZGRkY2M3NjQ3ZGE3ODYzMzk4NDIz
MjdjYTVjN2E5N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC04ODksNyAr
ODg5LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlKHVpbnQz
Ml90IG9iamVjdElELCBjb25zdCBTdHJpbmcmIHNjcmkKICAgICBTdHJvbmc8SlNHbG9iYWxPYmpl
Y3Q+IGdsb2JhbE9iamVjdCh2bSwgZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5X
b3JsZCgpKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCk7CiAKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9w
dXBzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSkgOiBOdWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5k
aWNhdG9yKGFsbG93UG9wdXBzID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVT
dGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIG1ha2VTb3VyY2Uoc2NyaXB0KSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCmluZGV4IGVlYWFiYTgyNDgxZTczOTBkMzYyZThiM2ExNDJhZTUyMjAzMjI0YWIu
LmQ5ZTU4ZTMzNjk0ZDUwY2MxZjY3NmIwNGZjMWY5OGUzZWZhNGJkM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC02NjYs
NyArNjY2LDcgQEAgLSAoQk9PTClzZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJP
T0wpZXZlbnRJc0RyYXdSZWN0CiAgICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwogICAgIHsKICAg
ICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dC
YXNlOjpjb21tb25WTSgpKTsKLSAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihfZXZlbnRIYW5kbGVyLT5jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKCkgPyBPcHRp
b25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6
IE51bGxvcHQpOworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9y
KF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSA/IHN0ZDo6b3B0aW9u
YWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBz
dGQ6Om51bGxvcHQpOwogICAgICAgICBhY2NlcHRlZEV2ZW50ID0gW19wbHVnaW5QYWNrYWdlLmdl
dCgpIHBsdWdpbkZ1bmNzXS0+ZXZlbnQocGx1Z2luLCBldmVudCk7CiAgICAgfQogICAgIFtzZWxm
IGRpZENhbGxQbHVnSW5GdW5jdGlvbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzNjJkYzZkMzRjNTJj
MDljZDQ1MGI5ZWU2YWYyMDY5Y2FhZWU0M2RiLi5hMTFmYjg4YmRiZDkxYmFkOGZkOGRmOWZkMjky
ZjgyNTg4ZmM0NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBX
ZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7
CiAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8V2ViQ29y
ZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IGYwYjMxMmZiZDMwYzFmMjcxYjkwM2Q3MDQzNzc1MmIzMGY1M2IzM2YuLmM0OWQ1MWI5Zjg1
YzI3MWZlM2NiZTQ4Y2IyOGFkYzJmMDYwMWNhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC02OTAs
NyArNjkwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGkKICAgICAgICAgQ2FsbEZyYW1lTG9h
ZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5T
U3RyaW5nICopdGl0bGUuc3RyaW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5z
ZWN1cmVDb250ZW50PikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29t
bWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4pCiB7CiAgICAgLy8gVGVs
bCB0aGUgY2xpZW50IHdlJ3ZlIGNvbW1pdHRlZCB0aGlzIFVSTC4KICAgICBBU1NFUlQoW21fd2Vi
RnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcgZG9jdW1lbnRWaWV3XSAhPSBuaWwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQuaAppbmRleCBjZmZjMTEzYWRlYjM3NzQ0MGE0NzhiZjEwZjk5
ZDgwYzc1NTkwMDMwLi4wMjEwMDY0YjU3NDZhYjVlN2U4OTJhZWQyMGQyYWFjOGI2NmExZWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaApAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBXZWJQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGF5bWVudENv
b3JkaW5hdG9yQ2xpZQogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1l
cmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG93
UGF5bWVudFVJKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+
JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5n
TWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBPcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFs
QW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nTWV0aG9kPiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxl
dGVQYXltZW50U2Vzc2lvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5tbQppbmRleCA4MGI0ZjdmNGZkMmNlNWYxYmJjMWFhYWUwMzlhZDZhMmViYTNm
ODI2Li5lYmZkODM1NDBmMTIyYmU3ZTljZmY3OWFmNThkMjdmMDcyYjlhODc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNv
cmU6OlBheW0KIHsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMsIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cz4pCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KQogewog
fQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6Y29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiwgT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikKK3ZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pCiB7CiB9CiAKLXZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24o
T3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPikKK3Zv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb24oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5l
SXRlbXM+KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDE0ZjNmNDRmZjZmMjI4YzU5MmYwMjA4Yjk3
Zjg1YjlkMzEzZDQ4ZTkuLjRmNDI0ODM3ZGVhOGE5YTJjNGQ1N2NhZjZjODNkYWFmODRlNzJhNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3Vy
aXR5T3JpZ2luLm1tCkBAIC04OCw3ICs4OCw3IEBAIC0gKE5TU3RyaW5nICopc3RyaW5nVmFsdWUK
IAogLSAodW5zaWduZWQgc2hvcnQpcG9ydAogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZh
bHVlX29yKDApOwogfQogCiAvLyBGSVhNRTogT3ZlcnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92
ZXJyaWRpbmcgaGFzaCB3aWxsIGNhdXNlIHRyb3VibGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBh
biBOU1NldCBvciBpcyB0aGUga2V5IGluIGFuIE5TRGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDg5MjMyMGMxMWQ4NDFmNGEwYjkxZjMxN2Yz
YTgzNGRmMGFjMTEyNzcuLmQyODlmMWE3YzVlZDg5NzQzZDA4NzEwMzM0YjcyYTlmMWYwN2NhODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTgyLDcgKzE4
Miw3IEBAIC0gKHZvaWQpc2V0TWVudUNvbnRyb2xsZXI6KFdlYkNvcmU6OkNvbnRleHRNZW51Q29u
dHJvbGxlciopbWVudUNvbnRyb2xsZXI7CiAtICh2b2lkKWZvcndhcmRDb250ZXh0TWVudUFjdGlv
bjooaWQpc2VuZGVyOwogQGVuZAogCi1zdGF0aWMgT3B0aW9uYWw8Q29udGV4dE1lbnVBY3Rpb24+
IHRvQWN0aW9uKE5TSW50ZWdlciB0YWcpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxDb250ZXh0TWVu
dUFjdGlvbj4gdG9BY3Rpb24oTlNJbnRlZ2VyIHRhZykKIHsKICAgICBpZiAodGFnID49IENvbnRl
eHRNZW51SXRlbUJhc2VDdXN0b21UYWcgJiYgdGFnIDw9IENvbnRleHRNZW51SXRlbUxhc3RDdXN0
b21UYWcpIHsKICAgICAgICAgLy8gSnVzdCBwYXNzIHRoZXNlIHRocm91Z2guCkBAIC0zNTcsMTQg
KzM1NywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8Q29udGV4dE1lbnVBY3Rpb24+IHRvQWN0aW9uKE5T
SW50ZWdlciB0YWcpCiAgICAgY2FzZSBXZWJNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZl
OgogICAgICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtVGFnRGljdGF0aW9uQWx0ZXJuYXRpdmU7
CiAgICAgfQotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLXN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKENvbnRleHRNZW51QWN0aW9uIGFj
dGlvbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoQ29udGV4dE1lbnVB
Y3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdOb0FjdGlvbjoKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5r
SW5OZXdXaW5kb3c6CiAgICAgICAgIHJldHVybiBXZWJNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdX
aW5kb3c7CkBAIC01NDcsNyArNTQ3LDcgQEAgc3RhdGljIE9wdGlvbmFsPE5TSW50ZWdlcj4gdG9U
YWcoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKLSAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBzdGF0aWMgV2ViTWVudVRhcmdldCogdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZGFkZDNiNzQ1ZjdmNGZiNzFmNWQzYWE2ZjllZDA3
OGM5YjgyNjAyOC4uMjA3YTk2MTNjY2E4ZDljMTAzN2NmYjRkMWIxZTQyYTY4NTE5NTY5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC00MDYsNyArNDA2LDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0
KQogICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291
cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIFN0cmluZyBqc1N0cmluZyA9IHNjcmlwdFN0cmluZ0lm
SmF2YVNjcmlwdFVSTChyZXF1ZXN0VVJMKTsKIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogTnVsbG9w
dCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5z
aG91bGRBbGxvd1BvcHVwcygpID8gc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVT
dGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBpZiAo
anNTdHJpbmcuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRl
ZCByZXF1ZXN0LCBjcmVhdGUgYSBzdHJlYW0gZm9yIGl0LiBvdGhlcndpc2UsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggNzQyN2UwYzJmMTM4ZTM3MmMyNDUxYzg2ZDM3NTRiZGJiODIxNWE3OS4uMTU2
MTg1Mjc2MzBlM2IyMDkwZmEzMGM0ODk1ODUzZmRmMjMwMTk5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpCiAgICAgICAgIGZy
YW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmluZyh0aXRsZS5z
dHJpbmcoKSksIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PikKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFs
PEhhc0luc2VjdXJlQ29udGVudD4pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJh
bWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxv
YWREZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGYyNzJlNjBjNDRiOTBiZTEzODdiNzM0ZDdm
YmQyMmEzMTU5ZWM5YjAuLjhjYTliOWRlY2QxOWNlYzk3ZTRiYTdkM2Q1MTY4NjRjZTE4OWVlNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIFdlYkNvcmU6
OgogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRD
b21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDRiYTQ1NmE4Y2VlNWI3M2NmOTRhYmJiNzJmMTRi
ZTcyZGZjY2FmN2MuLjkwNmNiYmE1MWRjNzU0OWJiNzNlZGYyNTczZjJhZmFlMDIzZGMzMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTEyMCw3ICsxMjAsNyBA
QCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KF9PdXRfIHVuc2lnbmVkIHNob3J0KiBy
ZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAg
ICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZhbHVlT3IoMCk7CisgICAgKnJl
c3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKTsKIAogICAgIHJldHVy
biBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5jcHAKaW5kZXggMzEyNTg4ODMzNTUwZWExZjgyNDdjMzdjOWZkMzk3ZTg1YThjMWQ0
NC4uOWJmYTRlYzY0Yzg0NzBjN2RiZWJjZTRmZmUzYmZjMDRjODU2M2I5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvCiAgICAgQVNTRVJUKG1fY2xpZW50KTsK
ICAgICBpZiAocmVzcG9uc2UuaXNIdHRwVmVyc2lvbjBfOSgpKSB7CiAgICAgICAgIGF1dG8gdXJs
ID0gcmVzcG9uc2UudXJsKCk7Ci0gICAgICAgIE9wdGlvbmFsPHVpbnQxNl90PiBwb3J0ID0gdXJs
LnBvcnQoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCA9IHVybC5wb3J0
KCk7CiAgICAgICAgIGlmIChwb3J0ICYmICFpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52
YWx1ZSgpLCB1cmwucHJvdG9jb2woKSkpIHsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKHsgU3RyaW5nKCksIDAsIHVybCwg
IkNhbmNlbGxlZCBsb2FkIGZyb20gJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCkgKyAiJyBiZWNhdXNlIGl0IGlzIHVzaW5nIEhUVFAvMC45LiIgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCA3ZDE0YzhjMmFhNjM4MzZh
NzAxZGQxNGIyYzc4NzNkNThmMzJkZTAzLi43NjZiZDUwZGNjODk5MzQxMzU2MjBmYmJmZDVlMWU5
YWVkMDZmMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZCBmaW5hbCA6CiAgICAgY29u
c3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRhc2s+IG1fdGFzazsKLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7
CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciBtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAppbmRleCA0ZjM5ODFiYWJjN2MyYzAzYThjZjJjN2I5OTU2NGU4MGZkNDViNjk3Li42Yjk5
NDc2ZWM4NjY1NWY5YTRiYWUxNWE1NzhkN2I1NDVhMmE1NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTE0NSw3
ICsxNDUsNyBAQCBzdGF0aWMgYm9vbCBjYWNoZVBvbGljeUFsbG93c0V4cGlyZWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IHRpbWVzdGFtcCwgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGUp
CitzdGF0aWMgYm9vbCByZXNwb25zZUhhc0V4cGlyZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
dGltZXN0YW1wLCBzdGQ6Om9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heFN0
YWxlKQogewogICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCmluZGV4IDNlOWUyMjhhNDEzMWU0
N2NkYzQxYmE5ODg3ODU4MzUwMWMzM2I3NjAuLjQxNzFhY2UwOWQxODYzZDhlMmM5Y2Q3YTZmOTBh
ZmMwOTc0MGVkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCkBAIC04MCw4ICs4MCw4IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFJlcCwgdHlwZW5hbWUgUGVyaW9kPiBzdHJ1Y3QgQ29kZXI8c3RkOjpjaHJvbm86
OmR1cmF0aW9uPFJlcCwKICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29kZXI8T3B0aW9uYWw8VD4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvZGVyPHN0ZDo6b3B0aW9uYWw8VD4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjpvcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAg
ewogICAgICAgICBpZiAoIW9wdGlvbmFsKSB7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IGZhbHNl
OwpAQCAtOTIsMTQgKzkyLDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2RlcjxP
cHRpb25hbDxUPj4gewogICAgICAgICBlbmNvZGVyIDw8IG9wdGlvbmFsLnZhbHVlKCk7CiAgICAg
fQogICAgIAotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBPcHRpb25h
bDxUPiYgb3B0aW9uYWwpCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IHN0ZDo6b3B0aW9uYWw8VD4mIG9wdGlvbmFsKQogICAgIHsKICAgICAgICAgYm9vbCBpc0VuZ2Fn
ZWQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNFbmdhZ2VkKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNFbmdhZ2VkKSB7Ci0gICAg
ICAgICAgICBvcHRpb25hbCA9IE51bGxvcHQ7CisgICAgICAgICAgICBvcHRpb25hbCA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmNwcAppbmRleCAzMTNmOGRhNGNjYjBlNzQwMGQ0N2EwYWIyZWNkMDlmYWJhMGJk
OTFmLi4zMWFlNDhmZTVhZDJkOTdkYjZiMWNmNjg0N2EyZWY4NGMyMGQwN2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKICAgICBy
ZXR1cm4gc2FsdDsKIH0KIAotT3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3Ry
aW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJp
bmcmIHBhdGgpCiB7CiAgICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKICAgICBhdXRvIGZkID0gb3BlbihjcGF0aC5kYXRhKCksIE9fUkRPTkxZ
LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGEuaAppbmRleCA4ZjU0ZjBlYmRmZjEwN2JhNTgwYmQ1YzIyYjg4YWFkZjM3
Y2NmMzc4Li43MjQ2MDhkODc3YWE1YTUxZDQ2YmFiYzk3NDcxODMwZDJhZDM2MTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RGF0YS5oCkBAIC0xNTksNyArMTU5LDcgQEAgRGF0YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgp
OwogCiB1c2luZyBTYWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsKIAotT3B0aW9uYWw8U2Fs
dD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKK3N0ZDo6b3B0aW9uYWw8U2Fs
dD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFNIQTE6OkRpZ2VzdCBjb21w
dXRlU0hBMShjb25zdCBEYXRhJiwgY29uc3QgU2FsdCYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4IGYyNjIyOWQwZTBhOWE3N2Ex
NzZhZWY0MTE5ZGM0ZTdkODQ4OWI0MTguLmE0MzU5ZjNiMDE3YzQ0MTczMWFjODllYjg3N2ZlZTJm
MmM1N2IxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
RXhwaXJpbmdFbnRyeSB7CiBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQcmVsb2FkZWRF
bnRyeSA6IHByaXZhdGUgRXhwaXJpbmdFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBl
bnRyeSwgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHNwZWN1bGF0aXZlVmFsaWRhdGlvblJl
cXVlc3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCisg
ICAgUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgc3RkOjpvcHRp
b25hbDxSZXNvdXJjZVJlcXVlc3Q+JiYgc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdCwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+JiYgbGlmZXRpbWVSZWFjaGVkSGFuZGxlcikKICAgICAgICAgOiBF
eHBpcmluZ0VudHJ5KFdURk1vdmUobGlmZXRpbWVSZWFjaGVkSGFuZGxlcikpCiAgICAgICAgICwg
bV9lbnRyeShXVEZNb3ZlKGVudHJ5KSkKICAgICAgICAgLCBtX3NwZWN1bGF0aXZlVmFsaWRhdGlv
blJlcXVlc3QoV1RGTW92ZShzcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0KSkKQEAgLTE0NSwx
MiArMTQ1LDEyIEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlByZWxvYWRlZEVudHJ5
IDogcHJpdmF0ZSBFeHBpcmluZ0VudHJ5IHsKICAgICAgICAgcmV0dXJuIFdURk1vdmUobV9lbnRy
eSk7CiAgICAgfQogCi0gICAgY29uc3QgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYgcmV2YWxp
ZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVx
dWVzdDsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYgcmV2YWxp
ZGF0aW9uUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVWYWxpZGF0aW9uUmVx
dWVzdDsgfQogICAgIGJvb2wgd2FzUmV2YWxpZGF0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fc3Bl
Y3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsgfQogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gbV9lbnRyeTsKLSAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IG1fc3Bl
Y3VsYXRpdmVWYWxpZGF0aW9uUmVxdWVzdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlUmVx
dWVzdD4gbV9zcGVjdWxhdGl2ZVZhbGlkYXRpb25SZXF1ZXN0OwogfTsKIAogY2xhc3MgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFBl
bmRpbmdGcmFtZUxvYWQ+IHsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25z
dCBSZQogICAgICAgICBwZW5kaW5nRnJhbWVMb2FkLT5yZWdpc3RlclN1YnJlc291cmNlTG9hZChy
ZXF1ZXN0LCByZXNvdXJjZUtleSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uc3QgR2xv
YmFsRnJhbWVJRCYgZnJhbWVJRCwgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRh
dGlvblJlcXVlc3QpCit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVu
dHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVl
c3QpCiB7CiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlk
YXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgK
aW5kZXggNDI1NTIzNmQ5NTRiMmQ1MmM2YmU0NzM1NGQ5MWZiMGQzNzJjZTY4MS4uZGQ2MDZkNTY0
MTgyMWIzODU2NjNhMjZmYzVhMmY2NDlmYzY4ZTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyIHsKIHByaXZhdGU6CiAgICAgY2xhc3MgUHJlbG9hZGVkRW50cnk7CiAK
LSAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0
IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2
YWxpZGF0aW9uUmVxdWVzdCA9IE51bGxvcHQpOworICAgIHZvaWQgYWRkUHJlbG9hZGVkRW50cnko
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3QgPSBzdGQ6
Om51bGxvcHQpOwogICAgIHZvaWQgcHJlbG9hZEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFN1YnJl
c291cmNlSW5mbyYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmKTsKICAgICB2b2lkIHJldHJpZXZlRW50
cnlGcm9tU3RvcmFnZShjb25zdCBLZXkmLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwog
ICAgIHZvaWQgcmV2YWxpZGF0ZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IFN1
YnJlc291cmNlSW5mbyYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHAKaW5kZXggZThkYzY0M2M3ZjI0NTJiYTlkYzUzM2Y1MThlMWZmYmE5OTg4ZDUxYi4u
MTBhNTIwM2VmZDgxODBlMGFjYTM0YmU1NGRmNTI1ODJmNTljOTVmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnJlY29y
ZE5vdFVzaW5nQ2FjaGVGb3JSZXF1ZXN0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBr
ZQogICAgIEFTU0VSVChyZXRyaWV2ZURlY2lzaW9uICE9IFJldHJpZXZlRGVjaXNpb246Olllcyk7
CiAKICAgICBhdXRvIGhhc2ggPSBrZXkuaGFzaEFzU3RyaW5nKCk7Ci0gICAgcXVlcnlXYXNFdmVy
UmVxdWVzdGVkKGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbjo6Tm8sIFt0aGlzLCBoYXNoLCByZXF1
ZXN0VVJMID0gcmVxdWVzdC51cmwoKSwgd2ViUGFnZUlELCByZXRyaWV2ZURlY2lzaW9uXShib29s
IHdhc0V2ZXJSZXF1ZXN0ZWQsIGNvbnN0IE9wdGlvbmFsPFN0b3JlRGVjaXNpb24+JikgeworICAg
IHF1ZXJ5V2FzRXZlclJlcXVlc3RlZChoYXNoLCBOZWVkVW5jYWNoZWRSZWFzb246Ok5vLCBbdGhp
cywgaGFzaCwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCksIHdlYlBhZ2VJRCwgcmV0cmlldmVE
ZWNpc2lvbl0oYm9vbCB3YXNFdmVyUmVxdWVzdGVkLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3Jl
RGVjaXNpb24+JikgewogICAgICAgICBpZiAod2FzRXZlclJlcXVlc3RlZCkgewogICAgICAgICAg
ICAgU3RyaW5nIGRpYWdub3N0aWNLZXkgPSByZXRyaWV2ZURlY2lzaW9uVG9EaWFnbm9zdGljS2V5
KHJldHJpZXZlRGVjaXNpb24pOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3
b3JrUHJvY2Vzcykgd2ViUGFnZUlEICUiIFBSSXU2NCAiOiAlcyB3YXMgcHJldmlvdXNseSByZXF1
ZXN0ZWQgYnV0IHdlIGFyZSBub3QgdXNpbmcgdGhlIGNhY2hlLCByZWFzb246ICVzIiwgd2ViUGFn
ZUlELCByZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBkaWFnbm9zdGljS2V5LnV0
ZjgoKS5kYXRhKCkpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBTdHJpbmcgc3RvcmVEZWNp
c2lvblRvRGlhZ25vc3RpY0tleShTdG9yZURlY2lzaW9uIHN0b3JlRGVjaXNpb24pCiB2b2lkIFN0
YXRpc3RpY3M6OnJlY29yZFJldHJpZXZhbEZhaWx1cmUodWludDY0X3Qgd2ViUGFnZUlELCBjb25z
dCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIGF1dG8gaGFzaCA9IGtleS5oYXNoQXNTdHJpbmcoKTsKLSAgICBxdWVyeVdhc0V2ZXJSZXF1
ZXN0ZWQoaGFzaCwgTmVlZFVuY2FjaGVkUmVhc29uOjpZZXMsIFt0aGlzLCBoYXNoLCByZXF1ZXN0
VVJMID0gcmVxdWVzdC51cmwoKSwgd2ViUGFnZUlEXShib29sIHdhc1ByZXZpb3VzbHlSZXF1ZXN0
ZWQsIGNvbnN0IE9wdGlvbmFsPFN0b3JlRGVjaXNpb24+JiBzdG9yZURlY2lzaW9uKSB7CisgICAg
cXVlcnlXYXNFdmVyUmVxdWVzdGVkKGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbjo6WWVzLCBbdGhp
cywgaGFzaCwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCksIHdlYlBhZ2VJRF0oYm9vbCB3YXNQ
cmV2aW91c2x5UmVxdWVzdGVkLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN0b3JlRGVjaXNpb24+JiBz
dG9yZURlY2lzaW9uKSB7CiAgICAgICAgIGlmICh3YXNQcmV2aW91c2x5UmVxdWVzdGVkKSB7CiAg
ICAgICAgICAgICBTdHJpbmcgZGlhZ25vc3RpY0tleSA9IHN0b3JlRGVjaXNpb25Ub0RpYWdub3N0
aWNLZXkoc3RvcmVEZWNpc2lvbi52YWx1ZSgpKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGUsICIoTmV0d29ya1Byb2Nlc3MpIHdlYlBhZ2VJRCAlIiBQUkl1NjQgIjogJXMgd2FzIHByZXZp
b3VzbHkgcmVxdWVzdCBidXQgaXMgbm90IGluIHRoZSBjYWNoZSwgcmVhc29uOiAlcyIsIHdlYlBh
Z2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgZGlhZ25vc3RpY0tleS51
dGY4KCkuZGF0YSgpKTsKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnF1ZXJ5
V2FzRXZlclJlcXVlc3RlZChjb25zdCBTdHJpbmcmIGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbiBu
ZQogICAgIC8vIFF1ZXJ5IHBlbmRpbmcgd3JpdGVzIGZpcnN0LgogICAgIGJvb2wgd2FzQWxyZWFk
eVJlcXVlc3RlZCA9IG1faGFzaGVzVG9BZGQuY29udGFpbnMoaGFzaCk7CiAgICAgaWYgKHdhc0Fs
cmVhZHlSZXF1ZXN0ZWQgJiYgbmVlZFVuY2FjaGVkUmVhc29uID09IE5lZWRVbmNhY2hlZFJlYXNv
bjo6Tm8pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSwgTnVsbG9wdCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKG5lZWRVbmNhY2hlZFJlYXNvbiA9PSBOZWVkVW5jYWNoZWRSZWFz
b246OlllcyAmJiBtX3N0b3JlRGVjaXNpb25zVG9BZGQuY29udGFpbnMoaGFzaCkpIHsKQEAgLTM2
NSw3ICszNjUsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnF1ZXJ5V2FzRXZlclJlcXVlc3RlZChjb25z
dCBTdHJpbmcmIGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbiBuZQogICAgIG1fYWN0aXZlUXVlcmll
cy5hZGQoV1RGTW92ZShldmVyUmVxdWVzdGVkUXVlcnkpKTsKICAgICBzZXJpYWxCYWNrZ3JvdW5k
SU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCB3YXNBbHJlYWR5UmVxdWVzdGVkLCAmcXVlcnldICgp
IG11dGFibGUgewogICAgICAgICBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NB
dXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0gICAgICAgIE9wdGlvbmFsPFN0b3JlRGVj
aXNpb24+IHN0b3JlRGVjaXNpb247CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmVEZWNpc2lv
bj4gc3RvcmVEZWNpc2lvbjsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKICAg
ICAgICAgICAgIGlmICghd2FzQWxyZWFkeVJlcXVlc3RlZCkgewogICAgICAgICAgICAgICAgIFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgQVNDSUlMaXRlcmFs
KCJTRUxFQ1QgaGFzaCBGUk9NIEFscmVhZHlSZXF1ZXN0ZWQgV0hFUkUgaGFzaD0/IikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5oCmluZGV4IGNjMjlmYWU3Y2ZiOWZlMDY0ODdlMGI2MmIxNjY1YjRj
NTA1Y2VmYWEuLmI2N2MyNjBlMTk0ZGU4MzBlYmUzMWJjODkyM2RkNzA4MDczNDFlODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgU3RhdGlzdGljcyB7
CiAgICAgdm9pZCBhZGRTdG9yZURlY2lzaW9uc1RvRGF0YWJhc2UoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIE5ldHdvcmtDYWNoZTo6U3RvcmVEZWNpc2lvbj4mKTsKICAgICB2b2lkIHdyaXRlVGltZXJG
aXJlZCgpOwogCi0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgd2FzRXZlclJl
cXVlc3RlZCwgY29uc3QgT3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4mKT4gUmVxdWVzdGVkQ29tcGxl
dGlvbkhhbmRsZXI7CisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgd2FzRXZl
clJlcXVlc3RlZCwgY29uc3Qgc3RkOjpvcHRpb25hbDxTdG9yZURlY2lzaW9uPiYpPiBSZXF1ZXN0
ZWRDb21wbGV0aW9uSGFuZGxlcjsKICAgICBlbnVtIGNsYXNzIE5lZWRVbmNhY2hlZFJlYXNvbiB7
IE5vLCBZZXMgfTsKICAgICB2b2lkIHF1ZXJ5V2FzRXZlclJlcXVlc3RlZChjb25zdCBTdHJpbmcm
LCBOZWVkVW5jYWNoZWRSZWFzb24sIFJlcXVlc3RlZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IHZvaWQgbWFya0FzUmVxdWVzdGVkKGNvbnN0IFN0cmluZyYgaGFzaCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDA1YTNkMWM2MWY2MzBjNjFhNDVlNDc0MjhhZWJjZThhMmYyMzJlNmMuLmIw
NmIxY2Y4NmE4NWQ0NDFkYWMxN2M4MzU1MDNmNWYwM2NkZWMxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAgc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURh
dGEoY29uc3QgUmVjb3JkTWV0YURhdGEmIG1ldGFEYXRhKQogICAgIHJldHVybiBEYXRhKGVuY29k
ZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAotT3B0aW9uYWw8QmxvYlN0
b3JhZ2U6OkJsb2I+IFN0b3JhZ2U6OnN0b3JlQm9keUFzQmxvYihXcml0ZU9wZXJhdGlvbiYgd3Jp
dGVPcGVyYXRpb24pCitzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdlOjpz
dG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mIHdyaXRlT3BlcmF0aW9uKQogewogICAgIGF1
dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsK
IApAQCAtNTA1LDcgKzUwNSw3IEBAIE9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPiBTdG9yYWdl
OjpzdG9yZUJvZHlBc0Jsb2IoV3JpdGVPcGVyYXRpb24mIHdyaXRlT3BlcmF0CiAgICAgcmV0dXJu
IGJsb2I7CiB9CiAKLURhdGEgU3RvcmFnZTo6ZW5jb2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVj
b3JkLCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gYmxvYikKK0RhdGEgU3RvcmFnZTo6ZW5j
b2RlUmVjb3JkKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBzdGQ6Om9wdGlvbmFsPEJsb2JTdG9yYWdl
OjpCbG9iPiBibG9iKQogewogICAgIEFTU0VSVCghYmxvYiB8fCBieXRlc0VxdWFsKGJsb2IudmFs
dWUoKS5kYXRhLCByZWNvcmQuYm9keSkpOwogCkBAIC03MTksNyArNzE5LDcgQEAgdm9pZCBTdG9y
YWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlv
bj4gd3JpdGVPcGVyYXQKICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIAog
ICAgICAgICBib29sIHNob3VsZFN0b3JlQXNCbG9iID0gc2hvdWxkU3RvcmVCb2R5QXNCbG9iKHdy
aXRlT3BlcmF0aW9uLnJlY29yZC5ib2R5KTsKLSAgICAgICAgYXV0byBibG9iID0gc2hvdWxkU3Rv
cmVBc0Jsb2IgPyBzdG9yZUJvZHlBc0Jsb2Iod3JpdGVPcGVyYXRpb24pIDogTnVsbG9wdDsKKyAg
ICAgICAgYXV0byBibG9iID0gc2hvdWxkU3RvcmVBc0Jsb2IgPyBzdG9yZUJvZHlBc0Jsb2Iod3Jp
dGVPcGVyYXRpb24pIDogc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gcmVjb3JkRGF0YSA9
IGVuY29kZVJlY29yZCh3cml0ZU9wZXJhdGlvbi5yZWNvcmQsIGJsb2IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmgKaW5kZXggZWMyZmIxNDQ4MWIxMDYyZDJlNjE2NmJhZDQ4NzUwODNmYjFkNjFiOC4uMmU5
YzI1MTg3ZTdhNTQwYzMwMzQ5ZTNlY2NiMmMxMzg0YWJhYzFjYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aApAQCAtMTI0LDggKzEyNCw4IEBAIGNsYXNzIFN0b3JhZ2UgewogICAgIHZvaWQgZGlzcGF0Y2hQ
ZW5kaW5nV3JpdGVPcGVyYXRpb25zKCk7CiAgICAgdm9pZCBmaW5pc2hXcml0ZU9wZXJhdGlvbihX
cml0ZU9wZXJhdGlvbiYpOwogCi0gICAgT3B0aW9uYWw8QmxvYlN0b3JhZ2U6OkJsb2I+IHN0b3Jl
Qm9keUFzQmxvYihXcml0ZU9wZXJhdGlvbiYpOwotICAgIERhdGEgZW5jb2RlUmVjb3JkKGNvbnN0
IFJlY29yZCYsIE9wdGlvbmFsPEJsb2JTdG9yYWdlOjpCbG9iPik7CisgICAgc3RkOjpvcHRpb25h
bDxCbG9iU3RvcmFnZTo6QmxvYj4gc3RvcmVCb2R5QXNCbG9iKFdyaXRlT3BlcmF0aW9uJik7Cisg
ICAgRGF0YSBlbmNvZGVSZWNvcmQoY29uc3QgUmVjb3JkJiwgc3RkOjpvcHRpb25hbDxCbG9iU3Rv
cmFnZTo6QmxvYj4pOwogICAgIHZvaWQgcmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiwgY29uc3Qg
RGF0YSYpOwogCiAgICAgdm9pZCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aAppbmRleCAwNTY4YWNlYTlmNDc5NzE0NWIwMGQ5ZGI1NzZjM2MxOGM3NzUzZTFjLi5mNmQ4OGI3
Y2RiYjdkZTZmYTZhMmRjYjU0YWY4NmZhM2NhNzk3NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtNjksOCArNjksOCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsKICAgICB9CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6Ok9wdGlv
bmFsPFQ+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFdURjo6T3B0aW9uYWw8VD4mIG9wdGlvbmFsKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8c3RkOjpvcHRpb25hbDxUPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKICAg
ICB7CiAgICAgICAgIGlmICghb3B0aW9uYWwpIHsKICAgICAgICAgICAgIGVuY29kZXIgPDwgZmFs
c2U7CkBAIC04MSwxNCArODEsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V1RGOjpPcHRpb25hbDxUPj4gewogICAgICAgICBlbmNvZGVyIDw8IG9wdGlvbmFs
LnZhbHVlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFdURjo6T3B0aW9uYWw8VD4mIG9wdGlvbmFsKQorICAgIHN0YXRpYyBib29sIGRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKICAgICB7CiAgICAg
ICAgIGJvb2wgaXNFbmdhZ2VkOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzRW5nYWdl
ZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFpc0VuZ2FnZWQp
IHsKLSAgICAgICAgICAgIG9wdGlvbmFsID0gTnVsbG9wdDsKKyAgICAgICAgICAgIG9wdGlvbmFs
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNTAzY2Y1ZjNiYjIy
NjI2MWMyMjQwZGVjODJkNmUwN2VhYWRmZTFlMi4uZjAxMmEwMWI1NGRlN2QxZmNlMjE3OTdlNmY0
NTUwNTBjODNlNjg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CkBAIC0xNjUsNyArMTY1LDcgQEAgY2xhc3MgQ29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDb25uZWN0aW9uPiB7CiAgICAgdm9pZCBwb3N0Q29ubmVjdGlvbkRpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlKCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5k
T3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5j
dGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hlciwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8
dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhh
bmRsZXIpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFdpdGhSZXBseShUJiYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBs
eURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5n
VHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRsZXIpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9
IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zID0geyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHdhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KTsKIApAQCAt
MzQ1LDcgKzM0NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci12b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVy
LCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6
OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcikKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdp
dGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgRnVuY3Rpb25EaXNw
YXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQgKHN0ZDo6b3B0aW9uYWw8dHlw
ZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRs
ZXIpCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gMDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW5jb2Rlcj4gZW5jb2RlciA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihUOjpyZWNlaXZlck5h
bWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCByZXF1ZXN0SUQpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgRnVuY3Rpb25EaXNwCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAotICAgICAgICByZXBseUhhbmRsZXIoTnVsbG9wdCk7CisgICAgICAgIHJlcGx5SGFuZGxlcihz
dGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCmluZGV4IDBjYzYyZGQxZmI0Y2RlYTkzZDVhMDIxNTk1MzI0NTY5ZDA5Mzc0Y2EuLjdk
ZjhlMmZmY2RhZjUyYWNjNDdkNjViMDU2NmYwZmQzMGZiMTI5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcmVkTWVt
b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkTWVtb3J5PiB7CiAgICAgUHJvdGVjdGlvbiBt
X3Byb3RlY3Rpb247CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBPcHRpb25h
bDxpbnQ+IG1fZmlsZURlc2NyaXB0b3I7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IG1fZmlsZURl
c2NyaXB0b3I7CiAgICAgYm9vbCBtX2lzV3JhcHBpbmdNYXAgeyBmYWxzZSB9OwogI2VsaWYgT1Mo
REFSV0lOKQogICAgIG1hY2hfcG9ydF90IG1fcG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCmluZGV4IDI3YjI1YjdlNWIzYzdkMTc0
OTg2MTQ0NmYwZTA5Njk4MjIzNTM4NGEuLjlkOTExNzkyNTlkNWUyNTBlODUxZGE5Njc5ZGZhMWYy
ZWJmMzAyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVk
TWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRN
ZW1vcnlVbml4LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNo
YXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3Rp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gaW5z
dGFuY2UgPSB3cmFwTWFwKGRhdGEsIGhhbmRsZS5tX2F0dGFjaG1lbnQuc2l6ZSgpLCAtMSk7Ci0g
ICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0b3IgPSBOdWxsb3B0OworICAgIGluc3RhbmNlLT5t
X2ZpbGVEZXNjcmlwdG9yID0gc3RkOjpudWxsb3B0OwogICAgIGluc3RhbmNlLT5tX2lzV3JhcHBp
bmdNYXAgPSBmYWxzZTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQyL1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDA1OWVjODVjMjIyYjljOWUzODViZTI2YTdi
ZTE0YTE3MWU2NTc1MzAuLmFmOTQ0N2IxMDY5YzY0MzZhNTAxYmY4ZDZhNDkzMzM2YWRlZWRhZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yOTAsNyAr
MjkwLDcgQEAgZGVmIGNsYXNzX3RlbXBsYXRlX2hlYWRlcnModGVtcGxhdGVfc3RyaW5nKToKIAog
ICAgIGNsYXNzX3RlbXBsYXRlX3R5cGVzID0gewogICAgICAgICAnSGFzaE1hcCc6IHsnaGVhZGVy
cyc6IFsnPHd0Zi9IYXNoTWFwLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJzJzogWyciQXJn
dW1lbnRDb2RlcnMuaCInXX0sCi0gICAgICAgICdPcHRpb25hbCc6IHsnaGVhZGVycyc6IFsnPHd0
Zi9PcHRpb25hbC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29k
ZXJzLmgiJ119LAorICAgICAgICAnc3RkOjpvcHRpb25hbCc6IHsnaGVhZGVycyc6IFsnPHd0Zi9P
cHRpb25hbC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJz
LmgiJ119LAogICAgICAgICAnT3B0aW9uU2V0JzogeydoZWFkZXJzJzogWyc8d3RmL09wdGlvblNl
dC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119
LAogICAgICAgICAnVmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJn
dW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAn
c3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwgJ2FyZ3VtZW50X2NvZGVyX2hl
YWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaAppbmRleCA3YmMzYzZmNmJhNzFlYWEzZTcwOTBmMjVl
MTMxNjE5Zjk3YzllZDIzLi44OTE3YzY3MDQ5MDRkMzdmODRiODMxNWI5MzM5OWRmMmRlNzRkNGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2lu
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6U2VjdXJpdHlPcmlnaW4+CiAgICAgICAgIHJldHVybiBj
cmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc3RyaW5nKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0
IFdURjo6U3RyaW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIE9wdGlvbmFs
PHVpbnQxNl90PiBwb3J0KQorICAgIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFdURjo6U3RyaW5nJiBob3N0LCBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0
ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHByb3RvY29sLCBob3N0LCBwb3J0KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RJbnRlcmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29h
L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQppbmRleCBiMGRhNGI2MWYzN2RhZjllMWNkZmM1
MDM2MDE2YjY0Yzg2MGU4MzE5Li4yYjZhMzFkYzRkMDliY2I4MjYxZjUxYzIxZWQ1NjdlMTNlOTQ4
MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdEludGVyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29h
L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQpAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3QgTWV0
aG9kSW5mbyB7CiAgICAgICAgIENTdHJpbmcgcmVwbHlTaWduYXR1cmU7CiAgICAgICAgIFZlY3Rv
cjxIYXNoU2V0PENsYXNzPj4gYWxsb3dlZFJlcGx5Q2xhc3NlczsKICAgICB9OwotICAgIE9wdGlv
bmFsPFJlcGx5SW5mbz4gcmVwbHlJbmZvOworICAgIHN0ZDo6b3B0aW9uYWw8UmVwbHlJbmZvPiBy
ZXBseUluZm87CiB9OwogCiBAaW1wbGVtZW50YXRpb24gX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2lu
UmVmLmNwcAppbmRleCAyZmRlMzNlNTQ1N2JiNmIzNDg0YmNiODViYzRkY2NhNGU0Njc1MDg3Li5k
MTE2MDc0MGM3M2M1YTQ5MWVjZDJkMzI3ZjMxYjVhNTFmMTNlM2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCkBAIC03OCw3
ICs3OCw3IEBAIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5
T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogCiB1bnNpZ25lZCBzaG9ydCBXS1NlY3VyaXR5T3Jp
Z2luR2V0UG9ydChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJl
dHVybiB0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1
ZU9yKDApOworICAgIHJldHVybiB0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdp
bigpLnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogLy8gRm9yIGJhY2t3YXJkcyBBQkkgY29tcGF0
aWJpbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaAppbmRleCBkZWU3NjhiN2M3
NmViY2RjNjEzMGU5ZTkzYmRmOTQzYzQyOGY0OWI4Li4wZmY3YmJhMDExMWI2YzQzODU4ZDQ4NWEz
ZWFhYTVhMDk3NzI5ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCkBAIC02
Niw4ICs2Niw4IEBAIHN0cnVjdCBIVFRQQm9keSB7CiAgICAgICAgIC8vIEZpbGUuCiAgICAgICAg
IFN0cmluZyBmaWxlUGF0aDsKICAgICAgICAgaW50NjRfdCBmaWxlU3RhcnQ7Ci0gICAgICAgIE9w
dGlvbmFsPGludDY0X3Q+IGZpbGVMZW5ndGg7Ci0gICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ2NF90
PiBmaWxlTGVuZ3RoOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAgICAvLyBCbG9iLgogICAgICAgICBTdHJpbmcgYmxv
YlVSTFN0cmluZzsKQEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0IEZyYW1lU3RhdGUgewogICAgIFN0
cmluZyB0YXJnZXQ7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBkb2N1bWVudFN0YXRlOwotICAgIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gc3RhdGVPYmplY3REYXRhOworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBzdGF0ZU9iamVjdERhdGE7CiAKICAgICBpbnQ2NF90IGRvY3Vt
ZW50U2VxdWVuY2VOdW1iZXI7CiAgICAgaW50NjRfdCBpdGVtU2VxdWVuY2VOdW1iZXI7CkBAIC05
OCw3ICs5OCw3IEBAIHN0cnVjdCBGcmFtZVN0YXRlIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JvbGxQb3NpdGlvbjsKICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3I7CiAKLSAgICBPcHRpb25h
bDxIVFRQQm9keT4gaHR0cEJvZHk7CisgICAgc3RkOjpvcHRpb25hbDxIVFRQQm9keT4gaHR0cEJv
ZHk7CiAKICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIG5vdCBiZSBwZXIgZnJhbWUuCiAjaWYg
UExBVEZPUk0oSU9TKQpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RT
dGF0ZSB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEJhY2tGb3J3YXJk
TGlzdFN0YXRlJik7CiAKICAgICBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBpdGVt
czsKLSAgICBPcHRpb25hbDx1aW50MzJfdD4gY3VycmVudEluZGV4OworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IGN1cnJlbnRJbmRleDsKIH07CiAKIHN0cnVjdCBTZXNzaW9uU3RhdGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
aW5kZXggN2ZhMDI3ZTA3Nzg4ZTdmMDJiOTkxODhlOGFmNTNjODZlNzc3MzUyOS4uNDBiNDIwNTcz
OTU1MDY1Yzk5OGY1NWJmZGMzOGI1YThhYjBmMjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMDksOSArMTA5LDkgQEAg
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIAogICAgIFdlYkNvcmU6OlNj
cm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5nQmVoYXZpb3I7CiAKLSAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5
U3R5bGU+LCBidXQgd2Ugd291bGQgbmVlZCB0bworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4sIGJ1dCB3ZSB3
b3VsZCBuZWVkIHRvCiAgICAgLy8gY29ycmVjdGx5IGhhbmRsZSBlbnVtcyBpbnNpZGUgT3B0aW9u
YWxzIHdoZW4gZW5jb2RpbmcgYW5kIGRlY29kaW5nLiAKLSAgICBXVEY6Ok9wdGlvbmFsPHVpbnQz
Ml90PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
c2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogCiAgICAgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9u
ZFBhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvT2JqQ09iamVj
dEdyYXBoLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0K
aW5kZXggZDdiZDMyNzk2OGM4ZjdmNzNiODE3NGQ3NmIzMTM2ODI2NTk0ZDgxNS4uNzBkYzkwOWVj
ZmNmNzc3MTQ0ZmZkNGNkZThiNjQ3MWI1ZmYzYTRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAgLTExMyw3ICsxMTMsNyBAQCBlbnVtIGNsYXNz
IE9iakNUeXBlIHsKICNlbmRpZgogfTsKIAotc3RhdGljIE9wdGlvbmFsPE9iakNUeXBlPiB0eXBl
RnJvbU9iamVjdChpZCBvYmplY3QpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxPYmpDVHlwZT4gdHlw
ZUZyb21PYmplY3QoaWQgb2JqZWN0KQogewogICAgIEFTU0VSVChvYmplY3QpOwogCkBAIC0xMzcs
NyArMTM3LDcgQEAgc3RhdGljIE9wdGlvbmFsPE9iakNUeXBlPiB0eXBlRnJvbU9iamVjdChpZCBv
YmplY3QpCiAgICAgICAgIHJldHVybiBPYmpDVHlwZTo6V0tUeXBlUmVmV3JhcHBlcjsKICNlbmRp
ZgogCi0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBPYmpDT2JqZWN0R3JhcGg6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGlkIG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0u
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKaW5kZXggNDM3
MDBkMWEzYmZjNDQ0YmY5MDEwY2E4YWM1MTAxZTZlNzUzODJkYi4uODU0MzNiZDU5ODZjMTM2YThi
ZWNjOTgxYmZkNzBkODRlZTQ3ZDQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9TZWNJdGVtU2hpbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJ
dGVtU2hpbS5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
KCkKICAgICByZXR1cm4gKndvcmtRdWV1ZTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNlY0l0ZW1S
ZXNwb25zZURhdGE+IHNlbmRTZWNJdGVtUmVxdWVzdChTZWNJdGVtUmVxdWVzdERhdGE6OlR5cGUg
cmVxdWVzdFR5cGUsIENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJp
YnV0ZXNUb01hdGNoID0gMCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURh
dGE+IHNlbmRTZWNJdGVtUmVxdWVzdChTZWNJdGVtUmVxdWVzdERhdGE6OlR5cGUgcmVxdWVzdFR5
cGUsIENGRGljdGlvbmFyeVJlZiBxdWVyeSwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXNUb01h
dGNoID0gMCkKIHsKLSAgICBPcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRhPiByZXNwb25zZTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHJlc3BvbnNlOwogCiAgICAg
YXV0byBzZW1hcGhvcmUgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3NlbWFwaG9yZV9jcmVhdGUo
MCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDFlYjc2ZDEyMjczM2JjNGZhZGVjZDNk
MzExZWIxOTdkNmUyZGQ1NjQuLmIzMjJlNDMxOTlmYTkwMWYxMDBiNzRhMzBiZGJiMTNlM2I5YWUy
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xMDEsOSArMTAxLDkgQEAgdm9pZCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclIKIAogICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7CiAg
ICAgICAgICAgICBpZiAob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAg
ICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0
aW9uVGltZUtleSgpKS0+c3RyaW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWls
cy5jcmVhdGlvblRpbWUudmFsdWVPcigwKSkpOworICAgICAgICAgICAgICAgIGRldGFpbHNNYXAu
c2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSkt
PnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1l
LnZhbHVlX29yKDApKSk7CiAgICAgICAgICAgICBpZiAob3JpZ2luRGV0YWlscy5tb2RpZmljYXRp
b25UaW1lKQotICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpE
b3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUudmFsdWVPcigwKSkp
OworICAgICAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6
OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoMCkpKTsKIAog
ICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0
ZShXVEZNb3ZlKGRldGFpbHNNYXApKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbQppbmRleCBjNTU0
M2EyMGI3MWU4Yzk3NmUyMTIyYjliNGJlYTQ4YjM3NTFmYzcwLi5iNzExMmNlZTE3YmRjYzI2OWJj
OWY5ZTI3MWQyNDAyZGEyMTY2ODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCkBAIC01OCw3ICs1OCw3IEBAIC0g
KE5TU3RyaW5nICopaG9zdAogCiAtIChOU0ludGVnZXIpcG9ydAogewotICAgIHJldHVybiBfc2Vj
dXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0
dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7
CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA5
OTQ1ODRiYTI5YTQyNmYyZTIzMjdhYzMzZTMzYjViZDkxZWEyYTJhLi45ZTkwYWJhNzk2YTk2ZTc4
YTZiYzE0OTUzMzAxMzVhYWQ2NDQ2OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjM1LDExICsyMzUsMTEgQEAgQGltcGxlbWVu
dGF0aW9uIFdLV2ViVmlldyB7CiAgICAgdWludDY0X3QgX2ZpcnN0UGFpbnRBZnRlckNvbW1pdExv
YWRUcmFuc2FjdGlvbklEOwogICAgIER5bmFtaWNWaWV3cG9ydFVwZGF0ZU1vZGUgX2R5bmFtaWNW
aWV3cG9ydFVwZGF0ZU1vZGU7CiAgICAgQ0FUcmFuc2Zvcm0zRCBfcmVzaXplQW5pbWF0aW9uVHJh
bnNmb3JtQWRqdXN0bWVudHM7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IF9yZXNpemVBbmltYXRp
b25UcmFuc2Zvcm1UcmFuc2FjdGlvbklEOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IF9y
ZXNpemVBbmltYXRpb25UcmFuc2Zvcm1UcmFuc2FjdGlvbklEOwogICAgIFJldGFpblB0cjxVSVZp
ZXc+IF9yZXNpemVBbmltYXRpb25WaWV3OwogICAgIENHRmxvYXQgX2xhc3RBZGp1c3RtZW50Rm9y
U2Nyb2xsZXI7Ci0gICAgT3B0aW9uYWw8Q0dSZWN0PiBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0
OwotICAgIE9wdGlvbmFsPENHUmVjdD4gX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPENHUmVjdD4gX2Zyb3plblZpc2libGVDb250ZW50UmVjdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPENHUmVjdD4gX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdDsKIAogICAg
IEJPT0wgX25lZWRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb247CiAgICAgQk9PTCBfY29tbWl0RGlk
UmVzdG9yZVNjcm9sbFBvc2l0aW9uOwpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgLSAodm9pZClfZGlk
Q29tbWl0TGF5ZXJUcmVlOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
JilsYXllclRyZWUKIAogICAgIGlmIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9kZSAhPSBEeW5h
bWljVmlld3BvcnRVcGRhdGVNb2RlOjpOb3RSZXNpemluZykgewogICAgICAgICBpZiAoX3Jlc2l6
ZUFuaW1hdGlvblRyYW5zZm9ybVRyYW5zYWN0aW9uSUQgJiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24u
dHJhbnNhY3Rpb25JRCgpID49IF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1UcmFuc2FjdGlvbklE
LnZhbHVlKCkpIHsKLSAgICAgICAgICAgIF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1UcmFuc2Fj
dGlvbklEID0gTnVsbG9wdDsKKyAgICAgICAgICAgIF9yZXNpemVBbmltYXRpb25UcmFuc2Zvcm1U
cmFuc2FjdGlvbklEID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgW19yZXNpemVBbmltYXRp
b25WaWV3IGxheWVyXS5zdWJsYXllclRyYW5zZm9ybSA9IF9yZXNpemVBbmltYXRpb25UcmFuc2Zv
cm1BZGp1c3RtZW50czsKICAgICAgICAgICAgIGlmIChfZHluYW1pY1ZpZXdwb3J0VXBkYXRlTW9k
ZSA9PSBEeW5hbWljVmlld3BvcnRVcGRhdGVNb2RlOjpSZXNpemluZ1dpdGhEb2N1bWVudEhpZGRl
bikgewogICAgICAgICAgICAgICAgIFtfY29udGVudFZpZXcgc2V0SGlkZGVuOk5PXTsKQEAgLTIz
MDEsOCArMjMwMSw4IEBAIC0gKHZvaWQpX25hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4KIAogLSAo
dm9pZClfbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQKIHsKLSAgICBfZnJvemVuVmlzaWJsZUNvbnRl
bnRSZWN0ID0gTnVsbG9wdDsKLSAgICBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gTnVs
bG9wdDsKKyAgICBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID0gc3RkOjpudWxsb3B0OworICAg
IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3QgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRleCBm
ODYwZjg4YTdkOGE3Yzc3ZmFjMmY0MzI1NmViMTc4NWYyMWUyOGQ0Li5mZGRkNmE1M2ExZWI0NGFi
MGYzNjkxMDg5YzUwMmVlZjY2MDQzYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFs
LmgKQEAgLTQwLDcgKzQwLDcgQEAgaW5saW5lIFdLV2Vic2l0ZURhdGFSZWNvcmQgKndyYXBwZXIo
QVBJOjpXZWJzaXRlRGF0YVJlY29yZCYgd2Vic2l0ZURhdGFSZWNvcmQpCiAgICAgcmV0dXJuIChX
S1dlYnNpdGVEYXRhUmVjb3JkICopd2Vic2l0ZURhdGFSZWNvcmQud3JhcHBlcigpOwogfQogCi1z
dGF0aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUo
TlNTdHJpbmcgKndlYnNpdGVEYXRhVHlwZSkKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVR5
cGUpCiB7CiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOldLV2Vic2l0
ZURhdGFUeXBlQ29va2llc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkNvb2tp
ZXM7CkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8V2Vic2l0ZURhdGFU
eXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0cmluZyAqd2Vic2l0ZURhdGFUCiAgICAgaWYgKFt3
ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NdKQogICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpXZWJzaXRl
RGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogCi0gICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlcyhOU1NldCAqd2Vic2l0ZURh
dGFUeXBlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAK
aW5kZXggY2FmMGQ3MjNmMDY1OTY5ZTBjMDhjNDZlMDJjMjRhNmU0N2MxMTlkOC4uZDI3NzAwNTk2
MWQyOWFlZDY3NTA5MzY5NGIyM2U0ZTgyNTVlMTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lkIEV3a1Zp
ZXc6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAKLSAgICAgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QgPSBjdXJzb3JJ
bWFnZS0+aG90U3BvdCgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90
ID0gY3Vyc29ySW1hZ2UtPmhvdFNwb3QoKTsKICAgICAgICAgRWNvcmVfWF9DdXJzb3IgY3VzdG9t
Q3Vyc29yID0gY3JlYXRlQ3VzdG9tQ3Vyc29yKHdpbmRvdywgY3Vyc29ySW1hZ2UsIEludFNpemUo
Y3Vyc29ySW1hZ2UtPnNpemUoKSksIGhvdFNwb3QgPyBob3RTcG90LnZhbHVlKCkgOiBJbnRQb2lu
dCgpKTsKICAgICAgICAgaWYgKCFjdXN0b21DdXJzb3IpCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggYTYzMzk4YTY3
ZmY1Njg2M2IwZWNlYWIzMWY1NGU0YjJiOGRjZjc5OC4uMmZlZjFiMGJjNWY2ZGU1ZTE2ODRiNzg3
YTE4N2U5YTdjNzhhY2ZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQpAQCAtMTMyOSw3ICsxMzI5LDcgQEAgLSAoQ0dGbG9hdClfdG90YWxIZWlnaHRPZkJh
bm5lcnMKICAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT50b3RhbEhlaWdodE9mQmFubmVycygpOwog
fQogCi1zdGF0aWMgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+
IHRvQ29yZVNjcm9sbGJhclN0eWxlKF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSBzY3JvbGxiYXJT
dHlsZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHls
ZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIHNjcm9sbGJh
clN0eWxlKQogewogICAgIHN3aXRjaCAoc2Nyb2xsYmFyU3R5bGUpIHsKICAgICBjYXNlIF9XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZURhcms6CkBAIC0xMzQzLDEwICsxMzQzLDEwIEBAIHN0YXRpYyBX
VEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xs
YmFyU3R5bGUoX1dLT3ZlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBOdWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBfV0tPdmVybGF5U2Ny
b2xsYmFyU3R5bGUgdG9BUElTY3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4gY29yZVNjcm9sbGJhclN0eWxlKQorc3RhdGljIF9XS092ZXJs
YXlTY3JvbGxiYXJTdHlsZSB0b0FQSVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBjb3JlU2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAgaWYg
KCFjb3JlU2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHJldHVybiBfV0tPdmVybGF5U2Nyb2xsYmFy
U3R5bGVBdXRvbWF0aWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA0ZmU5
NDVmMjdiODFiMjZmZjI3YTk2Njc4OGFkOWI5Mjc3YjUyYmY4Li45MmExOWY4ZTNlMGJmYzgzMDk2
OTE1MTE1M2NjMjU2Njc4ZWY2NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
QEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21w
bGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZQogICAgIG1fbWVyY2hh
bnRWYWxpZGF0aW9uU3RhdGUgPSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6VmFsaWRhdGlvbkNv
bXBsZXRlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxB
bmRMaW5lSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdU
b3RhbEFuZExpbmVJdGVtcykKIHsKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHBheW1l
bnQgaGFzIGJlZW4gY2FuY2VsZWQgYWxyZWFkeS4KICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
SWRsZSkKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Ojpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1ZQogICAgIG1f
c3RhdGUgPSBTdGF0ZTo6QWN0aXZlOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Ojpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0
dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+
JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
dWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFs
QW5kTGluZUl0ZW1zKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgcGF5bWVudCBo
YXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpJZGxl
KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHVpbnQzMl90IG9wYXF1CiAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpBY3RpdmU7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQ
YXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3Rh
bEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQogewogICAgIC8vIEl0J3MgcG9z
c2libGUgdGhhdCB0aGUgcGF5bWVudCBoYXMgYmVlbiBjYW5jZWxlZCBhbHJlYWR5LgogICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpJZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRl
eCBhMWI4ZGRjZWYzOTE2YWQzNGVhNGYyNDA1YWMxMWE5N2I1Nzg1NjQ0Li5jMjZmN2NlZWUxZDQy
ZDc5ZTY3YzY4YWYyOWI0NjU1NjI5MDgxNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aApAQCAtODAsOSArODAsOSBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA6IHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgc2hvd1BheW1lbnRVSShjb25zdCBTdHJp
bmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25V
UkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYsIGJvb2wmIHJlc3VsdCk7
CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uJik7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKHVpbnQzMl90IG9wYXF1ZVN0YXR1cywgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOwotICAgIHZvaWQgY29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRo
b2RzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5l
SXRlbXM+Jik7Ci0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOwor
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVT
dGF0dXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFs
QW5kTGluZUl0ZW1zPiYpOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJl
cXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKKyAg
ICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKICAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudFNlc3Npb24odWludDMyX3Qgb3BhcXVlU3RhdHVzKTsKICAgICB2b2lk
IGFib3J0UGF5bWVudFNlc3Npb24oKTsKIApAQCAtOTgsOSArOTgsOSBAQCBjbGFzcyBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAg
IHZvaWQgcGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9v
bCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRmb3JtU2hvd1BheW1lbnRVSShj
b25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VVJMPiYgbGlua0ljb25VUkxzLCBjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdCYsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHBsYXRm
b3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNo
YW50U2Vzc2lvbiYpOwotICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7Ci0gICAgdm9p
ZCBwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7Ci0gICAgdm9pZCBw
bGF0Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7CisgICAgdm9pZCBwbGF0
Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYpOworICAgIHZvaWQgcGxhdGZvcm1Db21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZD4mIG5l
d1NoaXBwaW5nTWV0aG9kcywgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+Jik7CisgICAgdm9pZCBwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4mKTsKICAgICB2b2lkIHBsYXRmb3JtQ29tcGxldGVQ
YXltZW50U2Vzc2lvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyk7CiAKICAg
ICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDg1ZWFiNGM2NGVjZWNjZDA5NzVhZTg0NDc4ZWY5
NDkyM2ZjNGFhZTAuLjg2NDk4MTZiZDhiMWIxNjI3MTNjNmFmNTA1MTdmNzc1MWNhN2QyYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMyLDkg
KzMyLDkgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgewogCiAgICAg
U2hvd1BheW1lbnRVSShTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+
IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6UGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVl
c3QpIC0+IChib29sIHJlc3VsdCkKICAgICBDb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihXZWJD
b3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uIHBheW1lbnRNZXJjaGFudFNlc3Npb24pOwotICAg
IENvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBP
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1Rv
dGFsQW5kSXRlbXMpCi0gICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odWludDMy
X3Qgb3BhcXVlU3RhdHVzLCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kPiBuZXdTaGlwcGluZ01ldGhvZHMsIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykKLSAgICBDb21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQorICAgIENvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24odWludDMyX3Qgb3BhcXVlU3RhdHVzLCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRJdGVtcykK
KyAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1aW50MzJfdCBvcGFxdWVTdGF0
dXMsIFZlY3RvcjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+IG5ld1No
aXBwaW5nTWV0aG9kcywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90
YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCisgICAgQ29tcGxldGVQYXltZW50TWV0
aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFs
QW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogICAgIENvbXBsZXRlUGF5bWVudFNlc3Np
b24odWludDMyX3Qgb3BhcXVlU3RhdHVzKQogICAgIEFib3J0UGF5bWVudFNlc3Npb24oKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRleCA1
NzlhZmFmYThiMjY2ZDU3MmZkZDZlODQxNmZiYWYyYzMzMjkxZGYwLi5lNjRlZGMzNjRiYzQ0Mjhj
NDUwNzRiYmRlNDMxYWE0YzFhMzM0ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMjc1LDcgKzI3NSw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNEZWNpbWFsTnVtYmVyPiB0b0RlY2ltYWxOdW1iZXIoaW50NjRfdCB2YWx1ZSkKIAogc3Rh
dGljIFJldGFpblB0cjxQS1BheW1lbnRTdW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5SXRl
bShjb25zdCBXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQogewot
ICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0
aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1v
dW50LnZhbHVlT3IoMCkpLmdldCgpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGlu
ZUl0ZW0udHlwZSldOworICAgIHJldHVybiBbZ2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygp
IHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1i
ZXIobGluZUl0ZW0uYW1vdW50LnZhbHVlX29yKDApKS5nZXQoKSB0eXBlOnRvUEtQYXltZW50U3Vt
bWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KIAogc3RhdGljIFBLTWVyY2hhbnRDYXBh
YmlsaXR5IHRvUEtNZXJjaGFudENhcGFiaWxpdGllcyhjb25zdCBXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVzKQpAQCAtNDY4
LDcgKzQ2OCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yCiAgICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zZXNzaW9uQmxvY2sgPSBudWxscHRyOwog
fQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMg
c3RhdHVzLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiYgbmV3VG90YWxBbmRM
aW5lSXRlbXMpCiB7CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcik7CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZQogICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0
U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01l
dGhvZHMsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiBuZXdTaGlwcGluZ01ldGhvZHMsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0
ZW1zPiYgbmV3VG90YWxBbmRMaW5lSXRlbXMpCiB7CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAgICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2Vs
ZWN0aW9uKFdlYkNvcgogICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IG51bGxwdHI7CiB9
CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXlt
ZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0
OjpUb3RhbEFuZExpbmVJdGVtcz4mIG5ld1RvdGFsQW5kTGluZUl0ZW1zKQordm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXM+JiBuZXdUb3RhbEFuZExpbmVJdGVtcykKIHsKICAgICBBU1NFUlQobV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKICAgICBBU1NFUlQobV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmlu
ZGV4IDgyMzIzMTRiNGNjMWRiMjcyNTk3YjllYmNmODdlNzdhMjNlMTYzYmIuLjY0OGUyMGVjNGVi
Y2M0YmZjZmM4NDQ3NDJlNDQxMDZjNmJmYzdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBlcnJvck5hbWVBbmREZXRhaWxzU2VwYXJhdG9yID0gIjsiOwogCiAvLyBN
YWtlIHN1cmUgdGhlIHByZWRlZmluZWQgZXJyb3IgbmFtZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIHVz
ZSBJbnRlcm5hbEVycm9yLgotI2RlZmluZSBWQUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0
cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZh
bHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3Nh
Z2U+KGVycm9yU3RyaW5nKS52YWx1ZU9yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkVycm9yTWVzc2FnZTo6SW50ZXJuYWxFcnJvcikKKyNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01F
U1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJz
OjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmluZykudmFsdWVfb3IoSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKQogCiAvLyBJZiB0aGUg
ZXJyb3IgbmFtZSBpcyBpbmNvcnJlY3QgZm9yIHRoZXNlIG1hY3JvcywgaXQgd2lsbCBiZSBhIGNv
bXBpbGUtdGltZSBlcnJvci4KICNkZWZpbmUgU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05B
TUUoZXJyb3JOYW1lKSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JN
ZXNzYWdlOjplcnJvck5hbWUpCkBAIC0xNzQsMTQgKzE3NCwxNCBAQCBTdHJpbmcgV2ViQXV0b21h
dGlvblNlc3Npb246OmhhbmRsZUZvcldlYlBhZ2VQcm94eShjb25zdCBXZWJQYWdlUHJveHkmIHdl
YlBhZ2VQcgogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6d2ViRnJhbWVJREZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRs
ZSkKK3N0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3ZWJGcmFt
ZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYgaGFuZGxlKQogewogICAgIGlmIChoYW5kbGUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8gaXRlciA9IG1faGFuZGxlV2Vi
RnJhbWVNYXAuZmluZChoYW5kbGUpOwogICAgIGlmIChpdGVyID09IG1faGFuZGxlV2ViRnJhbWVN
YXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnN3aXRjaFRvQnJvd3NpbmdDb250ZXh0KEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcmIGVycm9yCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/
ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSk7CisgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhh
bmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKCFm
cmFtZUlEKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5k
KTsKIApAQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2YWx1
YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcmIGVyCiAgICAgaWYg
KCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3Vu
ZCk7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5k
bGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJp
bmcoKSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURG
b3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25hbEZyYW1lSGFuZGxlIDogZW1w
dHlTdHJpbmcoKSk7CiAgICAgaWYgKCFmcmFtZUlEKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIApAQCAtNTI3LDcgKzUyNyw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnJlc29sdmVDaGlsZEZyYW1lSGFuZGxlKEluc3BlY3Rvcjo6RXJy
b3JTdHJpbmcmIGVycm9yCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBGQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpvcHRpb25h
bEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSk7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUob3B0aW9uYWxGcmFtZUhhbmRsZSA/ICpv
cHRpb25hbEZyYW1lSGFuZGxlIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKCFmcmFtZUlEKQog
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIApAQCAt
NTcwLDcgKzU3MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRG
cmFtZUhhbmRsZShJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvCiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICBGQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUoZnJhbWVI
YW5kbGUpOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQgPSB3ZWJGcmFtZUlE
Rm9ySGFuZGxlKGZyYW1lSGFuZGxlKTsKICAgICBpZiAoIWZyYW1lSUQpCiAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKEZyYW1lTm90Rm91bmQpOwogCkBAIC01OTgsNyArNTk4LDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoSW5zcGVj
dG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHIKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEID0gd2ViRnJhbWVJREZvckhhbmRsZShmcmFtZUhhbmRsZSk7CisgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCA9IHdlYkZyYW1lSURGb3JIYW5kbGUoZnJh
bWVIYW5kbGUpOwogICAgIGlmICghZnJhbWVJRCkKICAgICAgICAgRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDZhOGQw
NTBkZTJlYTAzYWE4MzZjYjI2NmNmZTA0MWFmMTQ0MTEzM2YuLjYwMjRhYTQ5YmIzMDYwODc3MzM5
MmI2MDhlMThhMzAxM2EwMGMxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMTM0LDcgKzEz
NCw3IEBAIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0CiAgICAgU3RyaW5nIGhhbmRsZUZvcldlYlBh
Z2VQcm94eShjb25zdCBXZWJQYWdlUHJveHkmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0PiBidWlsZEJyb3dzaW5nQ29udGV4dEZv
clBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gd2ViRnJhbWVJ
REZvckhhbmRsZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB3
ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBoYW5kbGVGb3JX
ZWJGcmFtZUlEKHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIFN0cmluZyBoYW5kbGVGb3JXZWJGcmFt
ZVByb3h5KGNvbnN0IFdlYkZyYW1lUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCBmNzc0NGNmYWFjYjcyZmRlM2M3Zjg2ZTI5ODBh
NGE2YmRmM2MzZmI2Li5iODA2OTc4MzBlZGQ0NzMxNTI4ZmRkNDExOTcyYzYxZTBmYmYxNWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtMjMw
LDggKzIzMCw4IEBAIGNsYXNzIFdlYlZpZXdJbXBsIHsKICAgICBOU0NvbG9yICp1bmRlcmxheUNv
bG9yKCkgY29uc3Q7CiAgICAgTlNDb2xvciAqcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFs
PFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpOwotICAgIFdU
Rjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBvdmVybGF5U2Nyb2xs
YmFyU3R5bGUoKSBjb25zdDsKKyAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUp
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBvdmVy
bGF5U2Nyb2xsYmFyU3R5bGUoKSBjb25zdDsKIAogICAgIHZvaWQgYmVnaW5EZWZlcnJpbmdWaWV3
SW5XaW5kb3dDaGFuZ2VzKCk7CiAgICAgLy8gRklYTUU6IE1lcmdlIHRoZXNlIHR3bz8KQEAgLTY4
Niw3ICs2ODYsNyBAQCBjbGFzcyBXZWJWaWV3SW1wbCB7CiAgICAgU3RyaW5nIG1fcHJvbWlzZWRG
aWxlbmFtZTsKICAgICBTdHJpbmcgbV9wcm9taXNlZFVSTDsKIAotICAgIFdURjo6T3B0aW9uYWw8
TlNJbnRlZ2VyPiBtX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOworICAgIHN0ZDo6b3B0aW9uYWw8
TlNJbnRlZ2VyPiBtX3NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwogCiAgICAgQ0dGbG9hdCBtX3Rv
dGFsSGVpZ2h0T2ZCYW5uZXJzIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMWUwZTA3NjJiNmRlZDVlZDg4YTYyNDQ4NDg0ODBh
MjBlNWJmNjI4NC4uYjAwN2U1MDVhMWM3MWY2ZTU3MTQxODU3MDhkNjkzZGY3YzNmOWFiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTYz
NSw3ICsxNjM1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVmlld0V4cG9zZWRSZWN0KCkK
ICAgICAgICAgZXhwb3NlZFJlY3QgPSBDR1JlY3RVbmlvbihtX2NvbnRlbnRQcmVwYXJhdGlvblJl
Y3QsIGV4cG9zZWRSZWN0KTsKIAogICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV9wYWdlLT5k
cmF3aW5nQXJlYSgpKQotICAgICAgICBkcmF3aW5nQXJlYS0+c2V0Vmlld0V4cG9zZWRSZWN0KG1f
Y2xpcHNUb1Zpc2libGVSZWN0ID8gT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PihleHBvc2Vk
UmVjdCkgOiBOdWxsb3B0KTsKKyAgICAgICAgZHJhd2luZ0FyZWEtPnNldFZpZXdFeHBvc2VkUmVj
dChtX2NsaXBzVG9WaXNpYmxlUmVjdCA/IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PihleHBvc2VkUmVjdCkgOiBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRDbGlwc1RvVmlzaWJsZVJlY3QoYm9vbCBjbGlwc1RvVmlzaWJsZVJlY3QpCkBAIC0yMDg0LDEy
ICsyMDg0LDEyIEBAIE5TQ29sb3IgKldlYlZpZXdJbXBsOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjpuc0NvbG9yKGNvbG9yKTsKIH0KIAot
dm9pZCBXZWJWaWV3SW1wbDo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8
V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSkKK3ZvaWQgV2Vi
Vmlld0ltcGw6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAgbV9wYWdlLT5z
ZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoc2Nyb2xsYmFyU3R5bGUpOwogfQogCi1XVEY6Ok9wdGlv
bmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJsYXlT
Y3JvbGxiYXJTdHlsZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92
ZXJsYXlTdHlsZT4gV2ViVmlld0ltcGw6Om92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fcGFnZS0+b3ZlcmxheVNjcm9sbGJhclN0eWxlKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggNjllOGM1YjMy
MjMyMmRiMDM3MWJiY2IxZjM2NDBmZTRjOTZkODU2NS4uYjQ1ZjIyNzllNzJiZWVlMGFlNzMzYzZl
MTBhYjE0MTkyZTAxZjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBNYWNoU2VuZFJpZ2h0IERyYXdpbmdBcmVh
UHJveHk6OmNyZWF0ZUZlbmNlKCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotdm9pZCBE
cmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCit2b2lkIERyYXdpbmdBcmVhUHJveHk6OnNldFZpZXdF
eHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KQogewogICAgIGlmICghbV93ZWJQYWdlUHJveHkuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCBk
Njk5ZjYzOTg2Zjg3NTcwMDhmYTgzY2Y0NGQxMDA5NjcyMTQ2MGMwLi5hNWQ0ZWIyNDFiZTg3ZGRl
OGQwODU4MTExZjljMmI4MTg4MGRlNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmgKQEAgLTgyLDggKzgyLDggQEAgY2xhc3MgRHJhd2luZ0FyZWFQcm94
eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1p
dFRyYW5zaWVudFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KSB7IH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4pOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4g
dmlld0V4cG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0Pik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdF
eHBvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0V4cG9zZWRSZWN0OyB9CiAgICAgdm9p
ZCB2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCgpOwogI2VuZGlmCiAKQEAgLTEzNiw4
ICsxMzYsOCBAQCBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSdW5Mb29wOjpUaW1lcjxEcmF3aW5n
QXJlYVByb3h5PiBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcjsKLSAgICBPcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwotICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4gbV9sYXN0U2VudFZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fbGFzdFNlbnRWaWV3RXhwb3NlZFJlY3Q7CiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZThhY2Q5NzE0NDcyNGM4YjFiNWMyNmJhZmYzNmRhOWZh
YTQ5ODk4Yi4uN2FmODU0MjE3M2Q1YmVjNjRkNjc1NGQwMGUyNGM4NDlkNDY4NGQwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMzMsNyArMTMzLDcg
QEAgdm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDbG9zZVNvY2tldFN0cmVhbShT
b2NrZXRTdHJlYW1IYW5kbGUmKQogICAgIG1fc2VydmVyLT5kaWRDbG9zZVdlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb24odGhpcyk7CiB9CiAKLXZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hh
ciogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGgpCit2b2lkIFdlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb246OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSYs
IGNvbnN0IGNoYXIqIGRhdGEsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsZW5ndGgpCiB7CiAgICAg
Ly8gRWFjaCBkaWRSZWNlaXZlRGF0YSBjYWxsIGFkZHMgbW9yZSBkYXRhIHRvIG91ciBidWZmZXIu
CiAgICAgLy8gV2UgY2xlYXIgdGhlIGJ1ZmZlciB3aGVuIHdlIGhhdmUgaGFuZGxlZCBkYXRhIGZy
b20gaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGEyZDQx
MTkzNTBmZjk4NmYxNTdlMDI5Y2JiZGFkNGY1N2RmYTkwYmIuLjFlYWQ1MDFhOTg3MDdlNjU1NWM0
MjE1MzA0OWY3YTJmNjhjNTZmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24g
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CiAgICAgLy8g
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgZGlkT3Bl
blNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmKSBmaW5hbCB7IH0KICAg
ICB2b2lkIGRpZENsb3NlU29ja2V0U3RyZWFtKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBsZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlJiwgY29uc3QgY2hhciogZGF0YSwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUmLCBzaXplX3QgYnVmZmVyZWRBbW91bnQpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbFNvY2tldFN0cmVhbShXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGUm
LCBjb25zdCBXZWJDb3JlOjpTb2NrZXRTdHJlYW1FcnJvciYpIGZpbmFsIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAppbmRleCAzNTZjNzhhOWMxMzcwOTY3
YTU1MGVkZTBiYjQwZGJhNzIzMmE5M2E3Li4zODNkZjU4OTQ2YTdmZDdjMThjNWYwYWYyZmZiZTA1
ZWIxNTU2ZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5n
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAK
QEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6
OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKFdlYkNvcmU6OgogfQogCiAvLyBUaGlz
IGNvbWVzIGZyb20gdGhlIHNjcm9sbGluZyB0cmVlLgotdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5OjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQg
c2Nyb2xsZWROb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBjb25z
dCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3ZvaWQgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwo
U2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGVkTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBuZXdTY3Jv
bGxQb3NpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3Bv
cnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbikKIHsKICAgICAvLyBTY3JvbGwgdXBkYXRlcyBmb3IgdGhlIG1haW4gZnJhbWUg
YXJlIHNlbnQgdmlhIFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cygpCiAg
ICAgLy8gc28gZG9uJ3Qgc2VuZCB0aGVtIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5oCmluZGV4IDliZmI0Mzk4ODZmMjZkZTU3MGI4YjRkODFmMWQ5YjhkYWQzNDFl
ZjMuLmU4N2JiMmMyZTg0Yzg0OWIwNWZlMTNiZjA5OTZlYzBlMzVlN2RkYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgewogICAgIGJvb2wgdmlzdWFsVmlld3BvcnRF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdUcmVlICYmIG1fc2Nyb2xsaW5nVHJl
ZS0+dmlzdWFsVmlld3BvcnRFbmFibGVkKCk7IH0KIAogICAgIC8vIEluZm9ybSB0aGUgd2ViIHBy
b2Nlc3MgdGhhdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIGNoYW5nZWQgKGNhbGxlZCBmcm9tIHRoZSBz
Y3JvbGxpbmcgdHJlZSkKLSAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFdlYkNv
cmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbmV3U2Nyb2xs
UG9zaXRpb24sIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3
cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAg
dm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2Vi
Q29yZTo6U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgdm9pZCBzY3JvbGxpbmdU
cmVlTm9kZVJlcXVlc3RzU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgcmVwcmVzZW50c1Byb2dyYW1t
YXRpY1Njcm9sbCk7CiAKICAgICBXZWJDb3JlOjpUcmFja2luZ1R5cGUgZXZlbnRUcmFja2luZ1R5
cGVGb3JQb2ludChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSwgV2ViQ29yZTo6SW50UG9p
bnQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3Jv
bGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggOWU0OGVjNmY1Y2IwOWNmMGZhNzI1
MTAyOTMzMzllZDgxMjFmNTlhNC4uZTExNTUyOTEwNjQ3MDFiODhiN2IzMmFiY2QxZjJlNjU0MzNl
Mjg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xs
aW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1v
dGVTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9sbCgpCiAKICNlbmRp
ZgogCi12b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9u
LCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9s
bGluZ0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKK3Zv
aWQgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xs
aW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxp
bmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7CiAg
ICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBzY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKaW5kZXggNmMwYzI1ODYwMzMx
N2M5NDQ3YWRiZmZiNmNjOTY5M2E4YTUzYWVmMS4uZDY1YjJmNWVkNmRkZjU3ZWM0NDBkZjQ5MGQy
ZTExNjhjOGVjMDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
UmVtb3RlU2Nyb2xsaW5nVHJlZSA6IHB1YmxpYyBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlIHsKIAog
ICAgIGNvbnN0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkmIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk7
IH0KIAotICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoV2ViQ29yZTo6U2Nyb2xs
aW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBX
ZWJDb3JlOjpTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYykgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxpbmdU
cmVlTm9kZURpZFNjcm9sbChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UG9pbnQ+JiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgV2ViQ29yZTo6U2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246
OlN5bmMpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVSZXF1ZXN0c1Njcm9s
bChXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNj
cm9sbFBvc2l0aW9uLCBib29sIHJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpT
Y3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDk5ODk3MTA4MzAx
ZWJiMjFkYjJjNDc3OWU2YTkxNzY1ZjY5OTZiNzguLmI0ZjQ0ZjA2YzFlNzFlZjVlNTNkOGU4NzFh
Y2EyYTUyOTY0Zjg0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMTI1
LDE3ICsxMjUsMTcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFs
bERhdGFiYXNlcygpCiAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8dGltZV90PiBmaWxlQ3JlYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDx0aW1lX3Q+IGZpbGVD
cmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICB0aW1lX3QgdGltZTsK
LSAgICByZXR1cm4gZ2V0RmlsZUNyZWF0aW9uVGltZShmaWxlUGF0aCwgdGltZSkgPyB0aW1lIDog
T3B0aW9uYWw8dGltZV90PihOdWxsb3B0KTsKKyAgICByZXR1cm4gZ2V0RmlsZUNyZWF0aW9uVGlt
ZShmaWxlUGF0aCwgdGltZSkgPyB0aW1lIDogc3RkOjpvcHRpb25hbDx0aW1lX3Q+KHN0ZDo6bnVs
bG9wdCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDx0aW1lX3Q+IGZpbGVNb2RpZmljYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitzdGF0aWMgc3RkOjpvcHRpb25hbDx0aW1lX3Q+IGZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgdGltZV90
IHRpbWU7CiAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlUGF0aCwgdGltZSkp
Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHRpbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCmluZGV4IGRh
NTQxOTM0MTU3ODY1MWFhMTEyMTY1MmRjM2Y0NjVkYzYxZTc5NTUuLmJiN2ZiNDg3ZWVlMWFjMGI2
NWEzMWUwNDg3MGExZDNkOTE3MDYzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBA
IC02MSw4ICs2MSw4IEBAIGNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMb2NhbFN0b3JhZ2VEYXRhCiAKICAgICBzdHJ1Y3QgT3Jp
Z2luRGV0YWlscyB7CiAgICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyOwotICAgICAgICBP
cHRpb25hbDx0aW1lX3Q+IGNyZWF0aW9uVGltZTsKLSAgICAgICAgT3B0aW9uYWw8dGltZV90PiBt
b2RpZmljYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gY3JlYXRpb25U
aW1lOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gbW9kaWZpY2F0aW9uVGltZTsKICAg
ICB9OwogICAgIFZlY3RvcjxPcmlnaW5EZXRhaWxzPiBvcmlnaW5EZXRhaWxzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDU1ODBiMmNjMmEwMzk5ZWJlZDU2
MDEyMDMwMTM4NWY0Mjk5NDc0OWEuLjBmODFlMGI4OGI3NTg0OWIzZmFiMzZlNDlmZTU1NjIxMzA1
NmJiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMjEzLDgg
KzIxMyw4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVu
dW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAgICAgYXV0byByZXF1ZXN0ID0gVXNl
ck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHk6OmNyZWF0ZSgqdGhpcywgdXNlck1lZGlhSUQpOwog
ICAgIG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLmFkZCh1c2VyTWVkaWFJRCwgcmVxdWVzdC5wdHIo
KSk7CiAKLSAgICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodXNlck1lZGlh
RG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyKS52YWx1ZU9yKFNlY3VyaXR5T3JpZ2luRGF0YSgpKS5z
ZWN1cml0eU9yaWdpbigpKTsKLSAgICBhdXRvIHRvcExldmVsT3JpZ2luID0gQVBJOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cih0b3BMZXZlbERvY3VtZW50T3JpZ2luSWRlbnRpZmllcikudmFsdWVPcihTZWN1cml0eU9yaWdp
bkRhdGEoKSkuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYXV0byB1c2VyTWVkaWFPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllcikudmFsdWVfb3Io
U2VjdXJpdHlPcmlnaW5EYXRhKCkpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gdG9wTGV2
ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVy
KS52YWx1ZV9vcihTZWN1cml0eU9yaWdpbkRhdGEoKSkuc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAg
ICBpZiAoIW1fcGFnZS51aUNsaWVudCgpLmNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdp
bihtX3BhZ2UsICptX3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKGZyYW1lSUQpLCAqdXNlck1lZGlh
T3JpZ2luLmdldCgpLCAqdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKSB7CiAg
ICAgICAgIG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnRha2UodXNlck1lZGlhSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBmMmEy
ODk4OWIyMjM3OGQwMmVjOWI2NTlhMjQ2ZWE3NWM2ZmViMDQ2Li4zNjhkOTJhOWJjNzdhYjY5MDMz
NmE0YmQ2N2U4MGY4OTZhODVlOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNDE1LDcgKzQxNSw3IEBAIEJhY2tGb3J3YXJkTGlz
dFN0YXRlIFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0ZvcndhcmRMaXN0U3RhdGUoY29uc3Qgc3Rk
OjpmdW5jdGlvCiAgICAgfQogCiAgICAgaWYgKGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zLmlz
RW1wdHkoKSkKLSAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID0gTnVs
bG9wdDsKKyAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID0gc3RkOjpu
dWxsb3B0OwogICAgIGVsc2UgaWYgKGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zLnNpemUoKSA8
PSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgudmFsdWUoKSkKICAgICAgICAgYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRl
bXMuc2l6ZSgpIC0gMTsKIApAQCAtNDMyLDcgKzQzMiw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlz
dFN0CiAgICAgICAgIGl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OjpjcmVhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKSk7CiAgICAgfQogICAgIG1faGFzQ3VycmVudEluZGV4ID0gISFiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXg7Ci0gICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXgudmFsdWVPcigwKTsKKyAgICBtX2N1cnJlbnRJbmRleCA9IGJhY2tG
b3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleC52YWx1ZV9vcigwKTsKICAgICBtX2VudHJpZXMg
PSBXVEZNb3ZlKGl0ZW1zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA1YWRkYTAxYTE3ZmU0ZDRiMjhmZTNhYzU3YTYxYWQxMmQ2YjlkYjNlLi42
Nzc1OWRiYWFiYmQyYjkxY2I3MjU3MzBiMzRkZTdmZjcyODM4NmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzI5NSw3ICszMjk1LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNsZWFyTG9hZERlcGVuZGVudENhbGxiYWNrcygpCiAgICAgfQogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29u
dGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNl
Y3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBzdGQ6Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApAQCAtNTU1Miw3ICs1NTUyLDcgQEAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycygpCiAgICAg
aWYgKG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKQogICAgICAgICBwYXJhbWV0ZXJzLnNjcm9sbGJh
ck92ZXJsYXlTdHlsZSA9IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlLnZhbHVlKCk7CiAgICAgZWxz
ZQotICAgICAgICBwYXJhbWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSA9IE51bGxvcHQ7Cisg
ICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMuYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlID0gbV9iYWNrZ3JvdW5k
RXh0ZW5kc0JleW9uZFBhZ2U7CiAgICAgcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlID0gbV9s
YXllckhvc3RpbmdNb2RlOwogICAgIHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbiA9
IG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKQEAgLTYxODAsNyArNjE4MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9y
IHBpbm5pbmcpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHBpbm5pbmcpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoV1RGOjpPcHRpb25hbDxXZWJDb3Jl
OjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQordm9pZCBXZWJQYWdlUHJv
eHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGJh
ck92ZXJsYXlTdHlsZSAmJiAhc2Nyb2xsYmFyU3R5bGUpCiAgICAgICAgIHJldHVybjsKQEAgLTYx
OTAsNyArNjE5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5
bGUoV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVyCiAKICAgICBtX3Njcm9sbGJh
ck92ZXJsYXlTdHlsZSA9IHNjcm9sbGJhclN0eWxlOwogCi0gICAgV1RGOjpPcHRpb25hbDx1aW50
MzJfdD4gc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZTsKICAgICBpZiAoc2Nyb2xsYmFyU3R5bGUpCiAg
ICAgICAgIHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck92
ZXJsYXlTdHlsZT4oc2Nyb2xsYmFyU3R5bGUudmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAxZWM4ZGYxZGFhZTE4MmFjYjEwOTQ2NDA1MThlNmI5
MGRiODNjNzAxLi4yMGZhMWJmNzA5ZTAyMmE3MDdlYTk4OGJmZTcyMjNmYTBiNzA1ODRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDE4LDggKzEwMTgsOCBA
QCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpQYWdlPgogICAgIHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFdlYkNvcmU6
OlNjcm9sbFBpbm5pbmdCZWhhdmlvcik7CiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2
aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUGlubmlu
Z0JlaGF2aW9yOyB9CiAKLSAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShXVEY6Ok9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4pOwotICAgIFdURjo6T3B0aW9u
YWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBvdmVybGF5U2Nyb2xsYmFyU3R5bGUo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsgfQorICAgIHZvaWQgc2V0
T3ZlcmxheVNjcm9sbGJhclN0eWxlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPik7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5
U3R5bGU+IG92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlOyB9CiAKICAgICBib29sIHNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hv
dHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHM7IH0K
ICAgICB2b2lkIHNldFNob3VsZFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdHMoYm9vbCBzaG91bGRS
ZWNvcmRTbmFwc2hvdHMpIHsgbV9zaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzID0gc2hv
dWxkUmVjb3JkU25hcHNob3RzOyB9CkBAIC0xMjE3LDcgKzEyMTcsNyBAQCBjbGFzcyBXZWJQYWdl
UHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgog
ICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25h
bFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7Ci0g
ICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdl
YkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25z
dCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwg
Y29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEm
KTsKQEAgLTE5MTUsNyArMTkxNSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAgICAgSGlkZGVuUGFnZVRocm90
dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlcjo6VG9rZW4gbV9oaWRkZW5QYWdlRE9NVGltZXJUaHJv
dHRsaW5nQXV0b0luY3JlYXNlc0NvdW50OwogICAgICAgICAKICAgICBXZWJDb3JlOjpTY3JvbGxQ
aW5uaW5nQmVoYXZpb3IgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7Ci0gICAgV1RGOjpPcHRpb25h
bDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZTsKIAogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCA5MDIzZDU3MTlkMjMxMDA4ZDI4OWQxNTdlMDJiYzgwNzlhMTBmZTkzLi4zNjE3YmJmY2Q3
MDc4Y2ZhYjk1NzgyMGY3YWZiYmM5M2UwNjY3ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTEzMSw3ICsxMzEsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgU3RyaW5nIHVybCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRD
aGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgU3RyaW5nIHVybCkKICAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNp
b25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNl
cnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJD
b3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgbWltZVR5cGUsIGJvb2wgaGFz
Q3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBsb2FkVHlwZSwgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1
cmVDb250ZW50LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZhaWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGaW5pc2hMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAppbmRleCBiYzNmOTg1MDI5NDQzNjZmYjc2
ODNmMDgzYjg3ZDEzYjM5M2ZjNzQ2Li4xMzdmYzFjMzFiMzQ4NzdiZmI2OGE1MTZkZmJjOTA4Zjcx
OGJlOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgV2Vic2l0
ZURhdGFSZWNvcmQgewogICAgICAgICB1aW50NjRfdCB0b3RhbFNpemU7CiAgICAgICAgIEhhc2hN
YXA8dW5zaWduZWQsIHVpbnQ2NF90PiB0eXBlU2l6ZXM7CiAgICAgfTsKLSAgICBPcHRpb25hbDxT
aXplPiBzaXplOworICAgIHN0ZDo6b3B0aW9uYWw8U2l6ZT4gc2l6ZTsKIAogICAgIEhhc2hTZXQ8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwogICAgIEhhc2hTZXQ8U3RyaW5n
PiBjb29raWVIb3N0TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNw
cAppbmRleCA1MDNjYTYwMzViMmQ2MzcxZmU3MDMxYWZmYjQyNGU3YzUwYTE0YzYzLi5lY2RlMzRi
NzBiMGMwMTM1ODhiOGUxZjI3YzFhMGY2NTNkODU1Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFdlYlZpZXc6OmRp
ZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdldCwgY29uc3Qg
V2ViQ29yZQogCiBBZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVyc2UoKS52YWx1ZU9y
KEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICByZXR1cm4gdHJhbnNmb3JtVG9TY2VuZSgpLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiB9CiAKIEFmZmluZVRyYW5zZm9ybSBX
ZWJWaWV3Ojp0cmFuc2Zvcm1Ub1NjZW5lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVYMTEuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKaW5k
ZXggMTQ5ZGUyYTE3OTk4NzRlOWI1ODQ3NmJiZGRhYWRmZjdiOTcwNmNmYy4uNzZhMzg5MTI1OGQ1
MzkxOGJiNDFjZGVjYWVkYThhNzQ2YzJhNTQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdGF0aWMgT3B0aW9uYWw8aW50PiBzX2RhbWFnZUV2ZW50QmFzZTsKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPGludD4gc19kYW1hZ2VFdmVudEJhc2U7CiAKIGNsYXNzIFhEYW1hZ2VOb3Rp
ZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWERhbWFnZU5vdGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJlZmVyZW5jZXNHdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKaW5k
ZXggM2YwNTg1ZDUwYzMzMjJiODdhNDA4ZWIzYzNmMDk3YjlkZjllYjNmMi4uY2I0OWJkNmEyNGM1
N2Y5ZmNhZTc0MzQ2Zjc0NjViNzY1MTQzZDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcmVmZXJlbmNlc0d0ay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9p
ZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKQogI2lmIFVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpYMTEpIHsKICAgICAg
ICAgYXV0byYgZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpOwotICAgICAgICBPcHRpb25hbDxpbnQ+IGRhbWFnZUJh
c2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBkYW1hZ2VCYXNlOwogICAgICAgICBpZiAo
IWRpc3BsYXkuc3VwcG9ydHNYQ29tcG9zaXRlKCkgfHwgIWRpc3BsYXkuc3VwcG9ydHNYRGFtYWdl
KGRhbWFnZUJhc2UpKQogICAgICAgICAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoZmFsc2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMjBkOTA0YTNkZGIyYTA2NDYx
NGMwOTc2ZjM4ZTA5MzIwYmVkMTU0Ni4uZjJkYThlMTE1ZTEzYTZlMTY5YzQ5MzFkNTE4Njg3ZGVk
MzA2MGNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMxODgsMTYgKzMxODgsMTYgQEAgLSAodm9p
ZClfZGlkSGFuZGxlS2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQgZXZlbnRXYXNIYW5kbGVk
OihCT09MKWV2ZW50V2FzSGEKICAgICBfdWlFdmVudEJlaW5nUmVzZW50ID0gbmlsOwogfQogCi0t
IChPcHRpb25hbDxGbG9hdFBvaW50Pilfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6KFdlYklPU0V2ZW50
ICopZXZlbnQKKy0gKHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4pX3Njcm9sbE9mZnNldEZvckV2
ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50CiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtX
ZWJTcGFjZUtleSA9IDB4MjA7CiAKICAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250
ZW50RWRpdGFibGUpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9
IGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKICAgICBpZiAoIWNoYXJhY3RlcnNJ
Z25vcmluZ01vZGlmaWVycy5sZW5ndGgpCi0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZW51bSBTY3JvbGxpbmdJbmNyZW1lbnQgeyBE
b2N1bWVudCwgUGFnZSwgTGluZSB9OwogICAgIGVudW0gU2Nyb2xsaW5nRGlyZWN0aW9uIHsgVXAs
IERvd24sIExlZnQsIFJpZ2h0IH07CkBAIC0zMjQ5LDcgKzMyNDksNyBAQCAtIChPcHRpb25hbDxG
bG9hdFBvaW50Pilfc2Nyb2xsT2Zmc2V0Rm9yRXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQKICAg
ICBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyBjaGFyYWN0ZXJBdEluZGV4OjBdID09
IGtXZWJTcGFjZUtleSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVPZmZzZXQoUGFnZSwgKGV2ZW50
Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrU2hpZnQpID8gVXAgOiBEb3duKTsKIAot
ICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKEJP
T0wpX2ludGVycHJldEtleUV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50IGlzQ2hhckV2ZW50OihC
T09MKWlzQ2hhckV2ZW50CkBAIC0zMjY2LDcgKzMyNjYsNyBAQCAtIChCT09MKV9pbnRlcnByZXRL
ZXlFdmVudDooV2ViSU9TRXZlbnQgKilldmVudCBpc0NoYXJFdmVudDooQk9PTClpc0NoYXJFdmVu
dAogICAgIGlmICghY29udGVudEVkaXRhYmxlICYmIGV2ZW50LmlzVGFiS2V5KQogICAgICAgICBy
ZXR1cm4gTk87CiAKLSAgICBpZiAoT3B0aW9uYWw8RmxvYXRQb2ludD4gc2Nyb2xsT2Zmc2V0ID0g
W3NlbGYgX3Njcm9sbE9mZnNldEZvckV2ZW50OmV2ZW50XSkgeworICAgIGlmIChzdGQ6Om9wdGlv
bmFsPEZsb2F0UG9pbnQ+IHNjcm9sbE9mZnNldCA9IFtzZWxmIF9zY3JvbGxPZmZzZXRGb3JFdmVu
dDpldmVudF0pIHsKICAgICAgICAgW193ZWJWaWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KnNj
cm9sbE9mZnNldF07CiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3Bw
CmluZGV4IDAxNmM2YjkzMzQ2NTNjZmVhMjI5MGIyMTY1MDBhYjAwOTIxYmRlNmYuLjE3ZjY2Yjcx
Nzc5YzA1NDljZjY4YWUyODE2NTgxOGE3MjlkNjYzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKQEAg
LTI4Miw4ICsyODIsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVGb3JtRGF0YUVsZW1lbnQoSGlzdG9y
eUVudHJ5RGF0YUVuY29kZXImIGVuY29kZXIsIGNvbnN0IEhUVFBCbwogICAgICAgICBlbmNvZGVy
IDw8IGZhbHNlOwogCiAgICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlU3RhcnQ7Ci0gICAg
ICAgIGVuY29kZXIgPDwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoLTEpOwotICAgICAgICBl
bmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOworICAgICAgICBlbmNvZGVy
IDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcigtMSk7CisgICAgICAgIGVuY29kZXIgPDwg
ZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29yKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CkBAIC03MDQsMTMgKzcwNCwxMyBAQCBj
bGFzcyBIaXN0b3J5RW50cnlEYXRhRGVjb2RlciB7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgYXV0byBvcGVyYXRvcj4+KE9wdGlvbmFsPFQ+JiB2YWx1ZSkgLT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSwgSGlzdG9yeUVudHJ5
RGF0YURlY29kZXImPjo6dHlwZQorICAgIGF1dG8gb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPFQ+
JiB2YWx1ZSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19lbnVtPFQ+Ojp2YWx1
ZSwgSGlzdG9yeUVudHJ5RGF0YURlY29kZXImPjo6dHlwZQogICAgIHsKICAgICAgICAgdWludDMy
X3QgdW5kZXJseWluZ0VudW1WYWx1ZTsKICAgICAgICAgKnRoaXMgPj4gdW5kZXJseWluZ0VudW1W
YWx1ZTsKIAogICAgICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNWYWxpZEVudW0oc3RhdGljX2Nh
c3Q8VD4odW5kZXJseWluZ0VudW1WYWx1ZSkpKQotICAgICAgICAgICAgdmFsdWUgPSBOdWxsb3B0
OworICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHZhbHVlID0gc3RhdGljX2Nhc3Q8VD4odW5kZXJseWluZ0VudW1WYWx1ZSk7CiAKQEAg
LTc5MCw3ICs3OTAsNyBAQCBjbGFzcyBIaXN0b3J5RW50cnlEYXRhRGVjb2RlciB7CiAKIHN0YXRp
YyB2b2lkIGRlY29kZUZvcm1EYXRhRWxlbWVudChIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgZGVj
b2RlciwgSFRUUEJvZHk6OkVsZW1lbnQmIGZvcm1EYXRhRWxlbWVudCkKIHsKLSAgICBPcHRpb25h
bDxGb3JtRGF0YUVsZW1lbnRUeXBlPiBlbGVtZW50VHlwZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZv
cm1EYXRhRWxlbWVudFR5cGU+IGVsZW1lbnRUeXBlOwogICAgIGRlY29kZXIgPj4gZWxlbWVudFR5
cGU7CiAgICAgaWYgKCFlbGVtZW50VHlwZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA2OCw3ICsx
MDY4LDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlVjFTZXNzaW9uSGlzdG9yeShDRkRpY3Rpb25hcnlS
ZWYgc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LCBCYWMKICAgICBhdXRvIGN1cnJlbnRJbmRleE51
bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
c2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LCBzZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleEtleSkp
OwogICAgIGlmICghY3VycmVudEluZGV4TnVtYmVyKSB7CiAgICAgICAgIC8vIE5vIGN1cnJlbnQg
aW5kZXggbWVhbnMgdGhlIGRpY3Rpb25hcnkgcmVwcmVzZW50cyBhbiBlbXB0eSBzZXNzaW9uLgot
ICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBOdWxsb3B0OworICAg
ICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zID0geyB9OwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGQ3MWUxMGM3ZWM3
YTU1ZDIwOTNhYTNkYWI4ZmM2YThlYWU0ODAzZTguLjNlNWU5YmYwMDIzOWM2YmFkZWRiZjUzYmU0
YmM5OGNlYTI5OWNmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCkBAIC02NCw3ICs2
NCw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgZmluYWwgOiBwdWJs
aWMgRHJhd2luZ0FyZWFQcm94eSB7CiAgICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3
aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZXdFeHBvc2Vk
UmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogI2VuZGlm
CiAKICAgICBmbG9hdCBpbmRpY2F0b3JTY2FsZShXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6
ZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggZWY1YzMzOGE5ZTAy
MTMzZDEzMDFkMGYwODQ3Yjk3Mzc0YjhiYmEzOC4uMzQ5MzBkZDFjNDBlNWMwZjVhZGFjNDI1NTBh
OTA3MTI0MmM0ZTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMjU3LDcg
KzI1Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6YWNjZWxlcmF0
ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJCiBzdGF0aWMgY29uc3QgZmxvYXQgaW5k
aWNhdG9ySW5zZXQgPSAxMDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLXZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIHsKICAgICBEcmF3aW5nQXJlYVByb3h5OjpzZXRWaWV3
RXhwb3NlZFJlY3Qodmlld0V4cG9zZWRSZWN0KTsKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvclBv
c2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggMWZmNTliZWRjZTMzZjc1MWQ5
MzA4M2FiMDU4MDZlM2Q2OWQzZTg1NS4uMGRkZjYzZmQyM2VlYmQ5ODI3ZmM4MzBhMWQyZjFjYmRm
ZTVhNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMTE3LDE3ICsxMTcsMTcgQEAg
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRNZXIKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKHBheW1l
bnRNZXJjaGFudFNlc3Npb24pKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMgc3RhdHVzLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxB
bmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
cjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cyBzdGF0dXMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogewogICAgIG1fd2ViUGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RhdHVzKSwgbmV3VG90
YWxBbmRJdGVtcykpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMgc3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oV2ViQ29yZTo6
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgbmV3U2hpcHBpbmdNZXRob2RzLCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4gbmV3
VG90YWxBbmRJdGVtcykKIHsKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OkNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihzdGF0dXMpLCBuZXdTaGlwcGluZ01ldGhvZHMsIG5ld1RvdGFsQW5k
SXRlbXMpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxB
bmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kSXRlbXMpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
cjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKQogewog
ICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
Q29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKG5ld1RvdGFsQW5kSXRlbXMpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oCmluZGV4IDM2YjJhYTQ3MTdmNjJlNjIxY2RmOTk0OTNmNGEyMTk2Zjgy
Zjk0ZGYuLjIzOWNlNzczOTA3Mzk0NzE3MWRkMDlhOGFkZWQ2NGY0ZjRjZTUxNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuaApAQCAtNTksOSArNTksOSBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0
b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcgog
ICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBj
b21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG93UGF5bWVudFVJKGNvbnN0
IFdlYkNvcmU6OlVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpVUkw+
JiBsaW5rSWNvblVSTHMsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRSZXF1ZXN0Jikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5n
TWV0aG9kU2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBPcHRp
b25hbDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFs
QW5kSXRlbXMpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24oV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+JiwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBv
dmVycmlkZTsKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+KSBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nTWV0aG9kPiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudFJlcXVlc3Q6OlRv
dGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZEl0ZW1zKSBvdmVycmlkZTsKKyAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBheW1l
bnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcz4pIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcGxl
dGVQYXltZW50U2Vzc2lvbihXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBkMzJkYWQ2ZTdiOGVmYTBkNjE3NTg0ZmIxODlh
MGRhZmRkMWZjNTlkLi44MjgwMThhZjI3OTBiNDkxNTA5NzQzZmJjNDljMTZlNTYyYTEyNGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC02OTQsNyArNjk0LDcgQEAgV0tBcnJh
eVJlZiBXS0J1bmRsZVBhZ2VDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxl
UGFnZVJlZiBwYWdlKQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yT3ZlcnJpZGUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
KiBiZWhhdmlvcikKIHsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpFdmVudFRocm90dGxpbmdCZWhh
dmlvcj4gYmVoYXZpb3JWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yPiBiZWhhdmlvclZhbHVlOwogICAgIGlmIChiZWhhdmlvcikgewogICAg
ICAgICBzd2l0Y2ggKCpiZWhhdmlvcikgewogICAgICAgICBjYXNlIEV2ZW50VGhyb3R0bGluZ0Jl
aGF2aW9yUmVzcG9uc2l2ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRlZFBERlBsdWdpbi5tbQppbmRleCAwNjM5ZGVmZmVm
ZjdiZGIzOGNiNjNkYTc1NmQ5YmQ5YTFkYWU5ZDA5Li5iYWU5NmI2YTJjZGRmOWJiMmM4MDkxMWY3
NmE2ZjQ0OGFjZGRmMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tCkBAIC0xMTk2LDcgKzEx
OTYsNyBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdpbihj
b25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRG
cm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAg
IEludFBvaW50IHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyhwb2ludC54KCksIHNpemUoKS5oZWln
aHQoKSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBs
dWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3Jt
LmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBs
dWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogRmxvYXRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZyb21Q
REZWaWV3VG9TY3JlZW4oY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdApAQCAtMTIwNyw3ICsx
MjA3LDcgQEAgRmxvYXRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9TY3JlZW4o
Y29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7
CiAKICAgICBGbG9hdFBvaW50IG9yaWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMocmVjdC54KCksIHNp
emUoKS5oZWlnaHQoKSAtIHJlY3QueSgpIC0gcmVjdC5oZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0
IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoRmxvYXRSZWN0KG9y
aWdpbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHJlY3Quc2l6ZSgpKSk7CisgICAgRmxvYXRSZWN0IHJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KEZsb2F0UmVjdChvcmln
aW5JblBsdWdpbkNvb3JkaW5hdGVzLCByZWN0LnNpemUoKSkpOwogCiAgICAgcmV0dXJuIGZyYW1l
Vmlldy0+Y29udGVudHNUb1NjcmVlbihlbmNsb3NpbmdJbnRSZWN0KHJlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMpKTsKIH0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpi
b3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKICAgICBG
bG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKLSAgICBG
bG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3Vu
ZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUmVjdChib3VuZHMpOwogICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4o
ZW5jbG9zaW5nSW50UmVjdChyZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKQEAgLTEy
MzAsNyArMTIzMCw3IEBAIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJ
bnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7Ci0gICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNm
b3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9S
b290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpOwog
ICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNpemU6cGx1Z2luU2l6ZV07CiAKICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDRhNzJhYjc5MzUyNTliNTRiODQ1ZGFk
YzlmYTM2ZmJhOGNhODM2OWEuLjc4MTZkYWM2ODEzZGJhYjU3YzdmOTk2OTllYTFmYjM3ZmZlNjY1
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCkBAIC05MzIsNyArOTMyLDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09u
U2NyZWVuKCkgY29uc3QKIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShjb25zdCBJ
bnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKQogewogICAgIG1fcGx1Z2luVG9Sb290Vmlld1Ry
YW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm07Ci0gICAgbV9yb290Vmlld1RvUGx1
Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVP
cihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0g
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpOwogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7CiAKICAgICBGcmFtZVZpZXcqIGZyYW1l
VmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYTBkOGFiODY2ZmMw
YmFkMTAyMGJkMTY1YmZkNTRmNTVlMjFjZjY5NC4uYWMxZGFhYmFkMDYzYTQ5NjI2YjM3ZTA0MDJl
OWViZjU0OTJkM2IxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTIwNSw3ICsxMjA1LDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
ZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRv
cihyZXF1ZXN0LT5hbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
U3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBOdWxsb3B0KTsKKyAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93UG9wdXBzKCkgPyBzdGQ6
Om9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1
cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIEZpcnN0LCB0cnkgdG8gZmluZCBhIHRhcmdl
dCBmcmFtZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCkuZmluZEZy
YW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50YXJnZXQoKSk7CkBAIC0xNTAwLDcgKzE1MDAsNyBA
QCBib29sIFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaQogICAgIC8vIHByb3RlY3QgdGhlIHBsdWctaW4gdmll
dyBmcm9tIGRlc3RydWN0aW9uLgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVj
dG9yIHBsdWdpblByb3RlY3RvcigmbV9ucFJ1bnRpbWVPYmplY3RNYXApOwogCi0gICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogTnVsbG9w
dCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVw
cyA/IHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiBtX25wUnVudGltZU9iamVj
dE1hcC5ldmFsdWF0ZShucE9iamVjdCwgc2NyaXB0U3RyaW5nLCByZXN1bHQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1By
b3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuY3BwCmluZGV4IGM5OTMyNmRmMTIzZTg1MzlmNzZjNzNjMGEzNDg2ODg0OTA0
ZDc5NDkuLjlmZGI4NjU0ODVhMjA5NGJhNjk0ZTg2MGNmOWM1ODBlOTFlNWViMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJQbHVnaW5JbmZvUHJv
dmlkZXI6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYgcGFnZSkKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50UG9saWN5
Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mIGlu
Zm8pIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+
IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29u
c3QgU3RyaW5nJiBob3N0LCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJiBpbmZvKSBjb25zdAog
ewogICAgIFN0cmluZyBob3N0VG9Mb29rVXAgPSBob3N0OwogICAgIFN0cmluZyBpZGVudGlmaWVy
ID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwpAQCAtMTgxLDcgKzE4MSw3IEBAIE9wdGlvbmFsPFdl
YkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1
Z2luTG9hZENsaWVuCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHBvbGljaWVzQnlJZGVudGlm
aWVySXRlcmF0b3IgPT0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byYgcG9saWNpZXNCeUlkZW50aWZpZXIgPSBwb2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9y
LT52YWx1ZTsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxv
YWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVuCiAg
ICAgfQogCiAgICAgaWYgKGlkZW50aWZpZXJQb2xpY3lJdGVyYXRvciA9PSBwb2xpY2llc0J5SWRl
bnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiB2ZXJzaW9uc1RvUG9saWNpZXMgPSBpZGVudGlmaWVy
UG9saWN5SXRlcmF0b3ItPnZhbHVlOwogCkBAIC0yMDksNyArMjA5LDcgQEAgT3B0aW9uYWw8V2Vi
Q29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVn
aW5Mb2FkQ2xpZW4KICAgICB9CiAKICAgICBpZiAocG9saWN5SXRlcmF0b3IgPT0gdmVyc2lvbnNU
b1BvbGljaWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBwb2xpY3lJdGVyYXRvci0+dmFsdWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2lu
SW5mb1Byb3ZpZGVyLmgKaW5kZXggN2E3MzJlZmU3MDYwYTIzZjZlOTFlN2UwNjczZDE3YmM4YmUy
YzRiYS4uZjc2ZDNmNTg1OGVlYTI2YzJkZWU3NmIxMjEzNjI5YmYyM2Q2ZjBmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZv
UHJvdmlkZXIuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBXZWJQbHVnaW5JbmZvUHJvdmlkZXIg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z2luSW5mb1Byb3ZpZGVyIHsKICNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPcHRp
b25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBwbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJikgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBw
bHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpQbHVnaW5JbmZvJikgY29uc3Q7CiAgICAgU3RyaW5nIGxvbmdlc3RNYXRjaGVkV2lsZGNhcmRI
b3N0Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0OwogICAgIGJvb2wgcmVwbGFjZUhv
c3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
U2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KaW5kZXgg
YzZjYzZhYmRhZGNhZWM1YjRhZDBjNTg2OGI3NzdhNTJlMmI0ZWUxMy4uODg2NDE1MjVlNTJiOTc5
ZGU0MDNhNmU2YTcxMDJjZDNhMjVkMzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3IubW0KQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6
YnVpbGRUcmFuc2FjdGlvbihSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW4KIC8vIE5vdGlm
aWNhdGlvbiBmcm9tIHRoZSBVSSBwcm9jZXNzIHRoYXQgd2Ugc2Nyb2xsZWQuCiB2b2lkIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKFNjcm9s
bGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29s
IHN5bmNMYXllclBvc2l0aW9uKQogewotICAgIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25B
ZnRlckFzeW5jU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIE51bGxvcHQsIGZhbHNlIC8q
IEZJWE1FICovLCBzeW5jTGF5ZXJQb3NpdGlvbiA/IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b246OlN5bmMgOiBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpOworICAgIHNjaGVk
dWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9z
aXRpb24sIHN0ZDo6bnVsbG9wdCwgZmFsc2UgLyogRklYTUUgKi8sIHN5bmNMYXllclBvc2l0aW9u
ID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xheWVyUG9z
aXRpb25BY3Rpb246OlNldCk7CiB9CiAKIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzQ2hhbmdlZEZvck5vZGUoU2Nyb2xsaW5nTm9kZUlEIG5v
ZGVJRCwgdW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCAxY2E3ZjQ0OTdhNzk4YjNlNWRlZDRhZWVi
MThlYWNjMmYxOWFhNzcxLi4yOGY3NTdmZmUwYjQzNDZmMjYzNzk5ZjA0N2Y3NjE0N2I2ODQ0Yzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTEzMiw3ICsxMzIs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25zdCBIVFRQQm9k
eSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5
OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVS
YW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5maWxlTGVu
Z3RoLnZhbHVlT3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZU9yKGludmFsaWRGaWxlVGltZSgpKSk7CisgICAgICAg
ICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQu
ZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxvYkRhdGFJdGVtOjp0b0Vu
ZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcihp
bnZhbGlkRmlsZVRpbWUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBI
VFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCA4MWQ1NjE5NTUzMDVlYzAzNTJlMzU5MWQ5Yzk1NDExOTdiYWNmODgwLi43ZjBlNzVkY2I5ODIz
YmIyZGRjMTBjZTYwOTFkMTk0NGFkOTIyYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC05NzAsNyArOTcwLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlY29tbWVuZGVkU2Nyb2xs
YmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUKICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENo
YW5nZShzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdTdHlsZSkpKTsKIH0KIAotV1RGOjpPcHRpb25h
bDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IFdlYkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkKK3N0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBX
ZWJDaHJvbWVDbGllbnQ6OnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpCiB7CiAgICAg
cmV0dXJuIG1fcGFnZS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7IAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKaW5kZXggNmE3ZWNjNGFhYTdiZjA0NTAzNDg4YjFkNjU2MzBmY2E1MGE5ZjQ3OS4uMDVl
NGIzNWExZGUxOGI5ZWJlZjg1NDA1MjZhZmIyYTVlZmRmZDc2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0yODAsNyArMjgwLDcgQEAgY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6OkNocm9tZUNsaWVudCB7CiAgICAgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNp
YmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
Y29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsYmFyU3R5bGUg
bmV3U3R5bGUpIG92ZXJyaWRlOwogCi0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxi
YXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIG92ZXJyaWRl
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVm
ZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkNv
bG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCAxYzg4MTUzMGFhNDFhYWY3ZWFjMjJhMWZiMDI2N2M4N2JmZDI2
NWUxLi5lZGVmZGI4ZjM0MjBkYWVkNTFjYjFhYjUzODY0YzE3MTAyZjJiMTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlLnN0cmluZygp
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4g
aGFzSW5zZWN1cmVDb250ZW50KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3Vy
ZUNvbnRlbnQpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAg
ICBpZiAoIXdlYlBhZ2UpCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4g
aGEKICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmRpZENvbW1pdFByb3Zp
c2lvbmFsTG9hZChtX2ZyYW1lKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAg
IHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ29tbWl0TG9hZEZvckZy
YW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRv
Y3VtZW50TG9hZGVyLnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5sb2FkVHlwZSgpKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0
ZUluZm8oKS52YWx1ZU9yQ29tcHV0ZShbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSks
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhh
c0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRM
b2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigp
LmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNl
cnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIG1fZnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2Vj
dXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlk
Q29tbWl0TG9hZChtX2ZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IGYyYmJiYWY1N2E3Nzg2NzBkZTI0OWZlMTZkNDFmZTNmNzEyNmU3YmMuLmRiMmY5NDkxNDA3
MjQwNzc3M2JkMDg2ZjdmOGI5YWNkMDdlZWE3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4pIG92
ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6SGFzSW5zZWN1cmVDb250ZW50Pikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERp
ZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9h
ZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAppbmRleCA3ODNhZGVjMzVmMmNmMzg0ZWNiZGM0NjBlNjc3MGU5NGQ0MDg5MGE3
Li44ZTRkMDljNDg0M2IxYWMxMzRhNTkyYmVkYThhNjk5ZGM2N2Q3OTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtODgsOCArODgs
OCBAQCBjbGFzcyBEcmF3aW5nQXJlYSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAg
ICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgeyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pID0gMDsKLSAg
ICB2aXJ0dWFsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSA9IDA7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3QgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgLypsYXll
cklEKi8sIGNvbnN0IFN0cmluZyYgLyprZXkqLywgZG91YmxlIC8qc3RhcnRUaW1lKi8pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCAvKmxh
eWVySUQqLywgY29uc3QgU3RyaW5nJiAvKmtleSovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRl
eCA4NDgzMmIzMzM0YWM1MWU2YTZkMWNlMTI1M2FkYTc2YzYwNGRjZGRiLi5iMDc2ZjM0YzFhYzY4
YzM5ZDBkODAwZjNlYWFjNDA2NWYwNTcwZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0yOSw3
ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIHsKICAgICBVcGRhdGVHZW9tZXRyeShX
ZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBXZWJDb3JlOjpJbnRTaXplIGxheWVyUG9zaXRpb24s
IGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IGZlbmNlUG9y
dCkKICAgICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAg
ICBTZXRDb2xvclNwYWNlKHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2Up
Ci0gICAgU2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmll
d0V4cG9zZWRSZWN0KQorICAgIFNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIENvbW1pdFRy
YW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGY0
YzBkM2RhZjExNmY1ZGEyMGYyODEyYWRhOGNkMzgxYWVlODY3ODIuLjUzODFiNzUzYmJjYWM1MDBm
ZDY1MzNlNzA5MWVjNDhkNWUyNmM5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNDE4LDcgKzQxOCw3IEBAIENlcnRpZmljYXRlSW5m
byBXZWJGcmFtZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLT5y
ZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLnZhbHVlT3JDb21wdXRlKFtdIHsgcmV0dXJuIENl
cnRpZmljYXRlSW5mbygpOyB9KTsKKyAgICByZXR1cm4gdmFsdWVPckNvbXB1dGUoZG9jdW1lbnRM
b2FkZXItPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0dXJuIENlcnRpZmlj
YXRlSW5mbygpOyB9KTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ5
NTAxODNmNTFjMjU3MjkxM2ZjYWI3MmQ2NDAxNTlmMTc5MjEyMzYuLjAyNTdmNzJiNzY3NTc3YTYz
MzRlZDU0M2FiYjA3NzliOGM5OWE3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ0OSw3ICs0NDksNyBAQCBXZWJQYWdlOjpXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKICAgICBpZiAocGFyYW1ldGVycy5zY3JvbGxiYXJPdmVybGF5U3R5bGUpCiAgICAgICAg
IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0
eWxlPihwYXJhbWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZS52YWx1ZSgpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gV1RGOjpPcHRpb25hbDxTY3JvbGxi
YXJPdmVybGF5U3R5bGU+KCk7CisgICAgICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3Rk
OjpvcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KCk7CiAKICAgICBzZXRCYWNrZ3JvdW5k
RXh0ZW5kc0JleW9uZFBhZ2UocGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2Up
OwogCkBAIC01Mzk0LDEyICs1Mzk0LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsUGlubmlu
Z0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3
KCktPnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcik7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFdURjo6T3B0aW9uYWw8
dWludDMyX3Q+IHNjcm9sbGJhclN0eWxlKQordm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCiB7CiAgICAg
aWYgKHNjcm9sbGJhclN0eWxlKQogICAgICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHN0
YXRpY19jYXN0PFNjcm9sbGJhck92ZXJsYXlTdHlsZT4oc2Nyb2xsYmFyU3R5bGUudmFsdWUoKSk7
CiAgICAgZWxzZQotICAgICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IFdURjo6T3B0aW9u
YWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPigpOworICAgICAgICBtX3Njcm9sbGJhck92ZXJsYXlT
dHlsZSA9IHN0ZDo6b3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPigpOwogICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA2OTMwNTNmN2Q4MmJhNGY5ZTg5ZWNkMTY5N2M4YTE2ZGI4YWJjMjQxLi4xODMxZjJiNTAwNDIx
ZDhkYzcwN2RhOTFkZWYyYWE4M2M1Mzc4MzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTkxMCw4ICs5MTAsOCBAQCBjbGFzcyBXZWJQYWdlIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1
YmxpYyBJUAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5uaW5n
QmVoYXZpb3IoKSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgIHZvaWQg
c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IC8qIFdlYkNvcmU6OlNjcm9sbFBpbm5p
bmdCZWhhdmlvciAqLyBwaW5uaW5nKTsKIAotICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZTsgfQotICAgIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KFdURjo6T3B0aW9uYWw8dWludDMyX3QgLyogV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
ICovPiBzY3JvbGxiYXJTdHlsZSk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxi
YXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIG1fc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlOyB9CisgICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3Rk
OjpvcHRpb25hbDx1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgKi8+
IHNjcm9sbGJhclN0eWxlKTsKIAogICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3Jl
YXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZvaWQgdXBk
YXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViRG9jdW1lbnRMb2FkZXImLCBXZWJDb3JlOjpGcmFt
ZSYpOwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVAKICAgICB1
bnNpZ25lZCBtX21heGltdW1SZW5kZXJpbmdTdXBwcmVzc2lvblRva2VuIHsgMCB9OwogICAgIAog
ICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlv
ciB7IFdlYkNvcmU6OkRvTm90UGluIH07Ci0gICAgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBtX3Njcm9sbGJhck92ZXJsYXlT
dHlsZTsKIAogICAgIGJvb2wgbV91c2VBc3luY1Njcm9sbGluZyB7IGZhbHNlIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggOWZjYjhlMzQ4ODdlMTU4MDIwMjkxNjhmMzU5YmFmNGFiZGRiZmI4Mi4uMWIxMTE5
OTkzM2Y5YzVhZmU5YTExOTkyMjk4ZDRkYjliYzA2N2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQwNCw3
ICs0MDQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgog
CiAgICAgU2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCi0gICAgU2V0
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKE9wdGlvbmFsPHVpbnQzMl90PiBzY3JvbGxiYXJTdHlsZSkK
KyAgICBTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc2Ny
b2xsYmFyU3R5bGUpCiAKICAgICBHZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJ
RCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IGYzNDY1ZDJiNzA1
ODY4NGI0OTI0MTkyZTdjNTZjMWQ1YmM0N2FjZjAuLmZkMDcxNDhmYTM1ZjFhM2JiYWMzMmRkYTI4
NjljOTM4NmIwOTA0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAg
LTgzLDggKzgzLDggQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMg
RHJhd2luZ0FyZWEsIHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0wKICAgICB2b2lkIGZvcmNlUmVw
YWludCgpIG92ZXJyaWRlOwogICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7IH0KKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVj
dChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Njcm9sbGVkVmlld0V4cG9zZWRSZWN0OyB9CiAKICAgICB2b2lkIGFj
Y2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5n
JiBrZXksIGRvdWJsZSBzdGFydFRpbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRB
bmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJy
aWRlOwpAQCAtMTQxLDggKzE0MSw4IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
IDogcHVibGljIERyYXdpbmdBcmVhLCBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMCiAKICAgICBX
ZWJDb3JlOjpJbnRTaXplIG1fdmlld1NpemU7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVj
dD4gbV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IG1fc2Nyb2xsZWRWaWV3RXhwb3NlZFJlY3Q7CiAKICAgICBXZWJDb3JlOjpU
aW1lciBtX2xheWVyRmx1c2hUaW1lcjsKICAgICBib29sIG1faXNGbHVzaGluZ1N1c3BlbmRlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDU5NGQ5MDBlZmYwMjIw
ZjgzY2RhZjBjM2ZkOThiOWViZjcxOTJiY2QuLjVhNjczMzRkOGFhM2E0NjFiMzM4ZTBiOGVhODQw
NzFkZGM4ZDA3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjY2VsZXJh
dGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIGNvCiAgICAgbV9yZW1vdGVMYXll
clRyZWVDb250ZXh0LT5hbmltYXRpb25EaWRFbmQobGF5ZXJJRCwga2V5KTsKIH0KIAotdm9pZCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgbV92aWV3RXhwb3NlZFJlY3QgPSB2aWV3
RXhwb3NlZFJlY3Q7CiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDdhNmIwZTJmMDRlOTVhZjBkNDli
ZjdjODg4MzI0M2JkOTM4OGQzOGIuLjk1ODMzOGEwM2VlN2M3YWRhNWYxYzNjZWI4OWI3ODE1ZGNm
ZmQ0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTcy
LDggKzcyLDggQEAgY2xhc3MgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEgOiBwdWJsaWMg
RHJhd2luZ0FyZWEsIFdlYkNvcmU6OkxheWVyRmx1c2hTY2gKICAgICB2b2lkIHVwZGF0ZVByZWZl
cmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1h
aW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+KSBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdF
eHBvc2VkUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsZWRWaWV3RXhwb3Nl
ZFJlY3Q7IH0KKyAgICB2b2lkIHNldFZpZXdFeHBvc2VkUmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9s
bGVkVmlld0V4cG9zZWRSZWN0OyB9CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNTY3JvbGxpbmco
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTEzNyw4ICsxMzcsOCBAQCBjbGFzcyBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSA6IHB1YmxpYyBEcmF3aW5nQXJlYSwgV2ViQ29y
ZTo6TGF5ZXJGbHVzaFNjaAogCiAgICAgYm9vbCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQ7CiAKLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fdmlld0V4cG9zZWRSZWN0OwotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV9zY3JvbGxlZFZpZXdFeHBvc2VkUmVjdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV92aWV3RXhwb3NlZFJlY3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IG1fc2Nyb2xsZWRWaWV3RXhwb3Nl
ZFJlY3Q7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fbGFzdFNlbnRJbnRyaW5zaWNDb250ZW50
U2l6ZTsKICAgICBib29sIG1faW5VcGRhdGVHZW9tZXRyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDU4ZDhhOWFjYjBjM2Q4YTZlNjQwOTRmZWZiZTk2
MjAyYjg0ZTYxZTkuLmY0ZWVhMDFmZTZlYTU3MWMzYjVjYjQzMGY5YzE4NzQzY2U5YTQwY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtNTExLDcgKzUx
MSw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5n
KCkKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmlj
YXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpu
aWwgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX2hvc3RpbmdM
YXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
UmVjdD4gdmlld0V4cG9zZWRSZWN0KQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6c2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2
aWV3RXhwb3NlZFJlY3QpCiB7CiAgICAgbV92aWV3RXhwb3NlZFJlY3QgPSB2aWV3RXhwb3NlZFJl
Y3Q7CiAgICAgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZhMjUzNmM5YzZmOTYwZjEwMzdiMzk3
YjhjZDk5ZmRiNDFkOTFhYTQuLmY4ZDJhNzBiZjc4NGQ4OTU2N2M4ODgxNDEzOTQxOGQzYmMyNDcy
Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNiBAQAorMjAxNi0xMS0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbV1RGXSBJbXBvcnQgc3RkOjpvcHRpb25hbCByZWZlcmVuY2Ug
aW1wbGVtZW50YXRpb24gYXMgV1RGOjpPcHRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkgYW5kIFNhbSBXZWluaWcuCisKKyAgICAgICAgVXNlIFdURjo6T3B0aW9uYWw6OnZh
bHVlX29yLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92
ZXJyaWRlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0
ZU92ZXJyaWRlKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBh
YmxlLmg6CisgICAgICAgIChXVFI6OkpTVmFsdWVNYWtlQm9vbGVhbk9yTnVsbCk6CisgICAgICAg
IChXVFI6OkpTVmFsdWVUb051bGxhYmxlQm9vbGVhbik6CisgICAgICAgICogVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKToKKyAgICAgICAg
KiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25hbC5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
UGFyc2VIVE1MSW50ZWdlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0UGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VyKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
aGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKToKKwogMjAxNi0xMS0yNSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBjb21waWxlIHdhcm5p
bmdzIGFmdGVyIHIyMDg0MTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tCmluZGV4IGM2Y2EwZDU1M2U1YzJiZTVmOTI1Njk3ZTVjM2YyZDJh
Y2EzNGU5ZDguLmZmOWQ1N2E1OGI4OTBkOTc3NTY3YWNlZWEwYjgyZjA3ODUwNjYwMjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpA
QCAtMTk5LDEyICsxOTksMTIgQEAgZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpv
b21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1heGltdW1ab29tU2Nh
bGU7CiB9CiAKLU9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVP
dmVycmlkZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcjo6
c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0
YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pCit2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJvb2w+KQogewogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmgg
Yi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmgKaW5kZXggMTVi
MzkwZGM0MTUyY2RiOWJmY2IxNWEyMGM2ZDc3Yzc3MDM2MWZjYi4uZTc5MjA4Y2FlZTNiYTVmZWM2
NWI3MjhiMzYxM2EwMTZhNWEyMDhhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmlu
ZGluZ3MvSlNXcmFwcGFibGUuaApAQCAtMzcsMTQgKzM3LDE0IEBAIGNsYXNzIEpTV3JhcHBhYmxl
IDogcHVibGljIFJlZkNvdW50ZWQ8SlNXcmFwcGFibGU+IHsKICAgICB2aXJ0dWFsIEpTQ2xhc3NS
ZWYgd3JhcHBlckNsYXNzKCkgPSAwOwogfTsKIAotaW5saW5lIEpTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VCb29sZWFuT3JOdWxsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBPcHRpb25hbDxib29sPiB2YWx1
ZSkKK2lubGluZSBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbk9yTnVsbChKU0NvbnRleHRS
ZWYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxib29sPiB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFs
dWUgPyBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdmFsdWUudmFsdWUoKSkgOiBKU1ZhbHVl
TWFrZU51bGwoY29udGV4dCk7CiB9CiAKLWlubGluZSBPcHRpb25hbDxib29sPiBKU1ZhbHVlVG9O
dWxsYWJsZUJvb2xlYW4oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCitp
bmxpbmUgc3RkOjpvcHRpb25hbDxib29sPiBKU1ZhbHVlVG9OdWxsYWJsZUJvb2xlYW4oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVJ
c1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1
ZSkgPyBOdWxsb3B0IDogT3B0aW9uYWw8Ym9vbD4oSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCB2
YWx1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8
IEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRp
b25hbDxib29sPihKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIHZhbHVlKSk7CiB9CiAKIGlubGlu
ZSBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlU3RyaW5nT3JOdWxsKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1N0cmluZ1JlZiBzdHJpbmdPck51bGwpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCA5YWNlMjAyZDFkOGUwMmY1ZjgxZTNkYTFjMTM0NDI5MmQ5YjNlM2NmLi4xNjkxMTQ1YWM5YzM4
ZjVlY2M4NmMwMDRiZWQ2NGJhMTdhMWUzYWUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAK
QEAgLTI4OCwxMiArMjg4LDEyIEBAIGRvdWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6Om1heGltdW1a
b29tU2NhbGUoKSBjb25zdAogICAgIHJldHVybiAxOwogfQogCi1PcHRpb25hbDxib29sPiBVSVNj
cmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxib29sPiBVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAog
ewotICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJv
b2w+KQordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoc3Rk
OjpvcHRpb25hbDxib29sPikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBhZmM4
Y2ZhZTBiMTQ5Mzc5ODA2NWIzYWMzMzVlMTAyYzVkNDRjMjY2Li4wNDkzMjY5NmU5ZTViMDc4OGJk
YWI3OTQ2ZTUwNWI5MzU0MDEyYTYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMTIyLDgg
KzEyMiw4IEBAIGNsYXNzIFVJU2NyaXB0Q29udHJvbGxlciA6IHB1YmxpYyBKU1dyYXBwYWJsZSB7
CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWF4aW11
bVpvb21TY2FsZSgpIGNvbnN0OwogICAgIAotICAgIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRl
T3ZlcnJpZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9u
YWw8Ym9vbD4pOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gc3RhYmxlU3RhdGVPdmVycmlkZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0U3RhYmxlU3RhdGVPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJv
b2w+KTsKIAogICAgIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0OwogICAg
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCmluZGV4IGEwNzE1
ZmQ2MmZlNzZjMTAyYzQ0M2ExYzc3NDZmNmQ0Yjg4Yzc0YmIuLmE3MDg4MWYzNWM5ODI3MDdkODcz
NmQ2OTFjZGFhMmY3NzA5ZTIwZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL09wdGlvbmFsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9P
cHRpb25hbC5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiBURVNUKFdURl9PcHRpb25hbCwgRGlzZW5nYWdlZCkKIHsKICAgICB7Ci0gICAgICAgIE9wdGlv
bmFsPGludD4gb3B0aW9uYWw7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvcHRpb25hbDsK
IAogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAg
ICB9CiAKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPGludD4gb3B0aW9uYWwgeyBOdWxsb3B0IH07
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvcHRpb25hbCB7IHN0ZDo6bnVsbG9wdCB9Owog
CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAg
IH0KQEAgLTQ2LDcgKzQ2LDcgQEAgVEVTVChXVEZfT3B0aW9uYWwsIERpc2VuZ2FnZWQpCiAKIFRF
U1QoV1RGX09wdGlvbmFsLCBFbmdhZ2VkKQogewotICAgIE9wdGlvbmFsPGludD4gb3B0aW9uYWwg
eyAxMCB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBvcHRpb25hbCB7IDEwIH07CiAKICAgICBF
WFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAgIEVYUEVDVF9FUSgx
MCwgb3B0aW9uYWwudmFsdWUoKSk7CkBAIC02NCw3ICs2NCw3IEBAIFRFU1QoV1RGX09wdGlvbmFs
LCBEZXN0cnVjdG9yKQogICAgIH07CiAKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPEE+IG9wdGlv
bmFsIHsgSW5QbGFjZSB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPEE+IG9wdGlvbmFsIHsgc3Rk
Ojppbl9wbGFjZSB9OwogCiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9w
dGlvbmFsKSk7CiAgICAgfQpAQCAtNzUsOCArNzUsOCBAQCBURVNUKFdURl9PcHRpb25hbCwgRGVz
dHJ1Y3RvcikKIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFjaykKIHsKICAgICBib29sIGNhbGxl
ZCA9IGZhbHNlOwotICAgIE9wdGlvbmFsPGludD4gYTsKLSAgICBpbnQgcmVzdWx0ID0gYS52YWx1
ZU9yQ29tcHV0ZShbJl0geworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBhOworICAgIGludCByZXN1
bHQgPSB2YWx1ZU9yQ29tcHV0ZShhLCBbJl0gewogICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gMzAwOwogICAgIH0pOwpAQCAtODUsNyArODUsNyBAQCBURVNUKFdURl9PcHRp
b25hbCwgQ2FsbGJhY2spCiAKICAgICBhID0gMjUwOwogICAgIGNhbGxlZCA9IGZhbHNlOwotICAg
IHJlc3VsdCA9IGEudmFsdWVPckNvbXB1dGUoWyZdIHsKKyAgICByZXN1bHQgPSB2YWx1ZU9yQ29t
cHV0ZShhLCBbJl0gewogICAgICAgICBjYWxsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMzAw
OwogICAgIH0pOwpAQCAtOTUsMjIgKzk1LDIyIEBAIFRFU1QoV1RGX09wdGlvbmFsLCBDYWxsYmFj
aykKIAogVEVTVChXVEZfT3B0aW9uYWwsIEVxdWFsaXR5KQogewotICAgIE9wdGlvbmFsPGludD4g
dW5lbmdhZ2VkMTsKLSAgICBPcHRpb25hbDxpbnQ+IHVuZW5nYWdlZDI7CisgICAgc3RkOjpvcHRp
b25hbDxpbnQ+IHVuZW5nYWdlZDE7CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHVuZW5nYWdlZDI7
CiAKLSAgICBPcHRpb25hbDxpbnQ+IGVuZ2FnZWQxIHsgMSB9OwotICAgIE9wdGlvbmFsPGludD4g
ZW5nYWdlZDIgeyAyIH07Ci0gICAgT3B0aW9uYWw8aW50PiBlbmdhZ2VkeDIgeyAyIH07CisgICAg
c3RkOjpvcHRpb25hbDxpbnQ+IGVuZ2FnZWQxIHsgMSB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBlbmdhZ2VkMiB7IDIgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gZW5nYWdlZHgyIHsgMiB9
OwogCiAgICAgRVhQRUNUX1RSVUUodW5lbmdhZ2VkMSA9PSB1bmVuZ2FnZWQyKTsKICAgICBFWFBF
Q1RfRkFMU0UoZW5nYWdlZDEgPT0gZW5nYWdlZDIpOwogICAgIEVYUEVDVF9GQUxTRShlbmdhZ2Vk
MSA9PSB1bmVuZ2FnZWQxKTsKICAgICBFWFBFQ1RfVFJVRShlbmdhZ2VkMiA9PSBlbmdhZ2VkeDIp
OwogCi0gICAgRVhQRUNUX1RSVUUodW5lbmdhZ2VkMSA9PSBOdWxsb3B0KTsKLSAgICBFWFBFQ1Rf
RkFMU0UoZW5nYWdlZDEgPT0gTnVsbG9wdCk7Ci0gICAgRVhQRUNUX1RSVUUoTnVsbG9wdCA9PSB1
bmVuZ2FnZWQxKTsKLSAgICBFWFBFQ1RfRkFMU0UoTnVsbG9wdCA9PSBlbmdhZ2VkMSk7CisgICAg
RVhQRUNUX1RSVUUodW5lbmdhZ2VkMSA9PSBzdGQ6Om51bGxvcHQpOworICAgIEVYUEVDVF9GQUxT
RShlbmdhZ2VkMSA9PSBzdGQ6Om51bGxvcHQpOworICAgIEVYUEVDVF9UUlVFKHN0ZDo6bnVsbG9w
dCA9PSB1bmVuZ2FnZWQxKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RkOjpudWxsb3B0ID09IGVuZ2Fn
ZWQxKTsKIAogICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQxID09IDEpOwogICAgIEVYUEVDVF9UUlVF
KDEgPT0gZW5nYWdlZDEpOwpAQCAtMTIwLDIyICsxMjAsMjIgQEAgVEVTVChXVEZfT3B0aW9uYWws
IEVxdWFsaXR5KQogCiBURVNUKFdURl9PcHRpb25hbCwgSW5lcXVhbGl0eSkKIHsKLSAgICBPcHRp
b25hbDxpbnQ+IHVuZW5nYWdlZDE7Ci0gICAgT3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQyOworICAg
IHN0ZDo6b3B0aW9uYWw8aW50PiB1bmVuZ2FnZWQxOworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB1
bmVuZ2FnZWQyOwogCi0gICAgT3B0aW9uYWw8aW50PiBlbmdhZ2VkMSB7IDEgfTsKLSAgICBPcHRp
b25hbDxpbnQ+IGVuZ2FnZWQyIHsgMiB9OwotICAgIE9wdGlvbmFsPGludD4gZW5nYWdlZHgyIHsg
MiB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBlbmdhZ2VkMSB7IDEgfTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGludD4gZW5nYWdlZDIgeyAyIH07CisgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGVuZ2Fn
ZWR4MiB7IDIgfTsKIAogICAgIEVYUEVDVF9GQUxTRSh1bmVuZ2FnZWQxICE9IHVuZW5nYWdlZDIp
OwogICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQxICE9IGVuZ2FnZWQyKTsKICAgICBFWFBFQ1RfVFJV
RShlbmdhZ2VkMSAhPSB1bmVuZ2FnZWQxKTsKICAgICBFWFBFQ1RfRkFMU0UoZW5nYWdlZDIgIT0g
ZW5nYWdlZHgyKTsKIAotICAgIEVYUEVDVF9GQUxTRSh1bmVuZ2FnZWQxICE9IE51bGxvcHQpOwot
ICAgIEVYUEVDVF9UUlVFKGVuZ2FnZWQxICE9IE51bGxvcHQpOwotICAgIEVYUEVDVF9GQUxTRShO
dWxsb3B0ICE9IHVuZW5nYWdlZDEpOwotICAgIEVYUEVDVF9UUlVFKE51bGxvcHQgIT0gZW5nYWdl
ZDEpOworICAgIEVYUEVDVF9GQUxTRSh1bmVuZ2FnZWQxICE9IHN0ZDo6bnVsbG9wdCk7CisgICAg
RVhQRUNUX1RSVUUoZW5nYWdlZDEgIT0gc3RkOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRkFMU0Uo
c3RkOjpudWxsb3B0ICE9IHVuZW5nYWdlZDEpOworICAgIEVYUEVDVF9UUlVFKHN0ZDo6bnVsbG9w
dCAhPSBlbmdhZ2VkMSk7CiAKICAgICBFWFBFQ1RfRkFMU0UoZW5nYWdlZDEgIT0gMSk7CiAgICAg
RVhQRUNUX1RSVUUoZW5nYWdlZDEgIT0gMik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggMGYxYzAyZDllNmNh
ODVjMDljYjQ5NmNiMzdmMTJjMjk5ZjU4ZmVmOC4uNmU5ZTczOGFiNWJjZTFkZmFiZmI0MmY2MGVi
N2IyZjJiNjQ1Y2I0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgaW50
IHRlc3RQYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgYXV0byBv
cHRpb25hbFJlc3VsdCA9IHBhcnNlSFRNTEludGVnZXIoaW5wdXQpOwogICAgIEVYUEVDVF9UUlVF
KCEhb3B0aW9uYWxSZXN1bHQpOwotICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZU9yKDAp
OworICAgIHJldHVybiBvcHRpb25hbFJlc3VsdC52YWx1ZV9vcigwKTsKIH0KIAogc3RhdGljIGJv
b2wgcGFyc2VIVE1MSW50ZWdlckZhaWxzKGNvbnN0IFN0cmluZyYgaW5wdXQpCkBAIC0xMDEsNyAr
MTAxLDcgQEAgc3RhdGljIHVuc2lnbmVkIHRlc3RQYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
Y29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICBhdXRvIG9wdGlvbmFsUmVzdWx0ID0gcGFyc2VI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGlucHV0KTsKICAgICBFWFBFQ1RfVFJVRSghIW9wdGlvbmFs
UmVzdWx0KTsKLSAgICByZXR1cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVPcigwKTsKKyAgICByZXR1
cm4gb3B0aW9uYWxSZXN1bHQudmFsdWVfb3IoMCk7CiB9CiAKIHN0YXRpYyBib29sIHBhcnNlSFRN
TE5vbk5lZ2F0aXZlSW50ZWdlckZhaWxzKGNvbnN0IFN0cmluZyYgaW5wdXQpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCmluZGV4IDVlNzZmYWIw
N2NkMDEwZjBlNDA2ZGM5NWQxZmEyYjY4MjQwMTViZjYuLjdjNDJkNGYwMDkyZDMyYjBjYmZiMGJj
OGQzNTk1ZTFjNDE3NjU5MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkxQYXJzZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJM
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVz
dFRhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwu
cG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwu
cGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZp
ZXIoKSkpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBwYXJ0cywgVGVzdFRhCiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCBv
bGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRo
LCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIG9sZFVS
TC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIG9sZFVSTC5m
cmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyB2b2lkIGNo
ZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRo
LCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVy
eSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSkpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRp
dmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmlu
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMuaG9zdCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5w
b3J0LCBvbGRVUkwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5wYXRoLCBvbGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnks
IG9sZFVSTC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIG9s
ZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2
b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4
cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVz
ZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAg
IEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVY
UEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNP
bGQudXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBh
c3N3b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQuaG9z
dCwgb2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwu
cG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwu
cG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXRoLCBv
bGRVUkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucXVlcnksIG9sZFVS
TC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQuZnJhZ21lbnQsIG9sZFVS
TC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyB2b2lk
IGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgU3RyaW5nJiBiCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVY
UEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVD
VF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNO
ZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMjQyLDcgKzI0Miw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQu
dXNlciwgb2xkVVJMLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzT2xkLnBhc3N3
b3JkLCBvbGRVUkwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQuaG9zdCwg
b2xkVVJMLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9y
dCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c09sZC5wb3J0LCBvbGRVUkwucG9y
dCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c09sZC5wYXRoLCBvbGRV
UkwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQucXVlcnksIG9sZFVSTC5x
dWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNPbGQuZnJhZ21lbnQsIG9sZFVSTC5m
cmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNo
ZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29k
aW5nLCBjb25zCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRo
LCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVy
eSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1
cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9y
dCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0
aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tCmluZGV4IGZhZjcwMzdiOTY4NDVjMWFiNjFkYTU3MDNjNDE0ZTcxYjFjNjkxMjUu
LmNkNjg3YTM4MmE2MDVhZTFjZDQ5OGI4ZWI5OTIxMDM1MmUyNjRkMjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTQw
NSwxNiArNDA1LDE2IEBAIGRvdWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6Om1heGltdW1ab29tU2Nh
bGUoKSBjb25zdAogICAgIHJldHVybiB3ZWJWaWV3LnNjcm9sbFZpZXcubWF4aW11bVpvb21TY2Fs
ZTsKIH0KIAotT3B0aW9uYWw8Ym9vbD4gVUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92
ZXJyaWRlKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8Ym9vbD4gVUlTY3JpcHRDb250cm9sbGVyOjpz
dGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3QKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3
ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtVmlldygpOwogICAgIGlmICh3ZWJWaWV3Ll9zdGFibGVTdGF0ZU92ZXJyaWRlKQogICAgICAg
ICByZXR1cm4gd2ViVmlldy5fc3RhYmxlU3RhdGVPdmVycmlkZS5ib29sVmFsdWU7CiAKLSAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPiBvdmVy
cmlkZVZhbHVlKQordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJp
ZGUoc3RkOjpvcHRpb25hbDxib29sPiBvdmVycmlkZVZhbHVlKQogewogICAgIFRlc3RSdW5uZXJX
S1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAgICAgaWYgKG92ZXJyaWRlVmFsdWUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>